Notes: _beforeTokenTransfer action of erc721 OZ implementation has been overridden to prevent tranasfers of NFTs to the contract address. Error: “Cannot transfer to contract”
...
Actions | Description |
---|---|
mint to account with oracle approvals | |
burn (called by user) | |
oracles can burn nft by consensus | |
register oracle | |
unregister oracle | |
register custodian | |
unregister custodian | |
listDomainsOfOwner | Returns list of tokenIds owned by the provided ethereum account |
getOracle | Get oracle status by ethereum account |
getCustodian | Get custodian status by ethereum account |
getApproval | getApproval status by indexhash. This is emitted in consensus_activity event after a successful approval has been executed. |
retrieve JSON information about NFT | |
setBaseURI | Change the baseURI path (custodian only) |
_baseURI | Retrieve baseURI path (used as first portion of tokenURI) |
...
Issue | Summary | Decision |
---|---|---|
Max transaction size | Should we put a max transaction size limit on mint into the ERC721 contract. | Not needed |
ERC721 contract key | What is the status of the key used to set the contract? | Key should only be used for spinning up the contract and should be burned. |
Oracle “Admin” functions | Do we need to enable the ability for Oracles to call various contract actions such as approve, transfer, mint, etc. This can be performed in a couple of ways: 2 - The Oracles can sign the next transfer action as a multisig | Decision: We do not want any Oracle admin functions. |
Custodian “Admin” functions | Are there contract actions that should be exposed to Custodian “admin” approval?
| TBD: Are there any other contract actions that might be used for “admin” functionality? |
Unwrap fee | Is there a fee for | Yes. Unwrapping user pays the gas fee |
...
Request is validated per Exception handling.
Consensus required. Transaction is executed when all registered oracles have called
wrap
(submitted their “observation”).3 oracles call wrap to get it approved
Do the mint when the 3rd oracle calls
wrap
DONE
NFT is minted and transferred to
account
...
Code Block |
---|
{ "tokenId": 1, "obtid": "dfe50aad8e2271f84f87b8e603776d7e7970c636bb899c8993c08e9e2d21c106" } |
Processing
Request is validated per Exception handling.
Oracle Consensus required.
Contract burns NFT and event is emitted
...