starknet-hardhat-plugin icon indicating copy to clipboard operation
starknet-hardhat-plugin copied to clipboard

Allow loading contracts with only ABI

Open ivpavici opened this issue 3 years ago • 4 comments

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.

ivpavici avatar Jul 08 '22 10:07 ivpavici

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.

FabijanC avatar Jul 08 '22 14:07 FabijanC

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:

I see 3 options to address this:

  1. Create a breaking change and get rid of the abiPath (including removing the getAbiPath function and the interface inheritance)
  2. Consider the getAbiPath function and the interface inheritance important and disregarding the issue
  3. 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 avatar Apr 17 '23 12:04 robinstraub

@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).

FabijanC avatar Apr 28 '23 09:04 FabijanC

This will probably be handled as well by https://github.com/0xSpaceShard/starknet-hardhat-plugin/issues/396

ivpavici avatar Aug 24 '23 14:08 ivpavici