starknet-hardhat-plugin
starknet-hardhat-plugin copied to clipboard
Allow loading contracts with only ABI
starknet.getContractFactory could be modified to not require both contract.json and contract_abi.json artifacts. This way using contractFactory.getContractAt would only be supported, contractFactory.deploy wouldn't.
Also note, the content of the contract_abi.json is a property of the object in contract.json. Perhaps this can be taken into account when addressing this issue.
Hello @FabijanC, sorry for the delay. I had a more thorough look into it and got some advice from @Nathan-SL.
Basically the "contract.json" is represented by the "metadaPath" and the "contract_abi.json" is represented by the "abiPath". So this issue is about getting rid of the "abiPath".
There are 2 modifications needed to resolve this issue that I would consider breaking changes:
- The StarknetContractFactory exposes a getAbiPath function, which would need to be removed
- The StarknetContractFactoryConfig inherits from the StarknetContractConfig, which exposes the abiPath parameter, so we would need to break the interface inheritance as well.
I see 3 options to address this:
- Create a breaking change and get rid of the abiPath (including removing the getAbiPath function and the interface inheritance)
- Consider the getAbiPath function and the interface inheritance important and disregarding the issue
- Marking the abiPath property as optional, and deriving it from the metadataPath (but then the logic of getContractFactoryUtil)[https://github.com/Shard-Labs/starknet-hardhat-plugin/blob/master/src/extend-utils.ts#L13] becomes redundant and it might need a bigger refactoring)
I'd say if the breaking change is not a problem we go with solution 1.
Feel free to ping me on telegram if you want to discuss this more thoroughly.
@robinstraub Sorry for the delay in replying. I don't understand how removing abiPath would allow users to load contracts only with ABI. Shouldn't it be the other json artifact that would require removing? Also note that since the introduction of Cairo 1 the plugin currently requires another artifact: contract.casm (due to Sierra mid-layer).
This will probably be handled as well by https://github.com/0xSpaceShard/starknet-hardhat-plugin/issues/396