Hey there!
Have recently developed an ERC721 contract using OpenZeppelin contracts. The contracts my contract inherits from are the following:
- ERC721Upgradeable
- AccessControlUpgradeable
I am also using the "@openzeppelin/truffle-upgrades" and "@openzeppelin/contracts-upgradeable" packages.
I am trying to setup Open Zeppelin Defender (that has been linked to a Gnosis Safe) so that it can interact with the proxy contract, for upgrades of the contract, and for to perform admin actions that exist in the ERC721 I have developed. I am slightly confused as to what ABI and contract I should be importing to do this.
When running migrations via the truffle migrate command, there are 3 contracts deployed on chain, migrations, my ERC721, and the TransparentUpgradeableProxy. My presumption is that I need the ABI for the TransparentUpgradeableProxy contract, so I can interact with the ERC721?
Should I be importing the ERC721 ABI, and performing admin actions through that, or should I be importing the proxy contracts ABI. If it is the latter, where is the proxy contracts ABI located? Is it the ERC721 ABI from the build/contracts directory (that is created when migrating the contracts on chain), or is it stored in another json build output?
Thanks in advance!
Environment
Truffle v5.4.12
"@openzeppelin/truffle-upgrades": "^1.9.1"
"@openzeppelin/contracts-upgradeable": "^4.3.2"
Solidity Compiler ^0.8.4;