You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue looks at settling the specification of the behaviour of Universal Node (uNode).
All RPC calls received that do not involve a universal ERC-721 (uERC721) contract in the ownership chain (e.g. on Ethereum, on Polygon) are simply bypassed, routed to an ownership chain node. This redirection also applies to the corresponding responses.
The RPC calls that do involve a uERC721 contract on the ownership chain are the main subject of this issue, as specified below.
"tokenId" - The tokenId uses as input to ALL ERC-721 QUERIES refers to the id of the ownership chain slot "a tokenId exists" - This is a hybrid EVOCHAIN+OWNCHAIN concept. First of all, as said above, all queries about tokenId refer to an ownership slot. Second, it exists if { it points to an asset that was minted in the Evochain AND it has not been burned in the ownchain } tokenId does not exist" - The NOT of the previous definition of "a tokenId exists"
ERC-721 Interface
The uERC-721 standard exposed by the universal node will be the same one as the standard ERC-721. The below table exposes what is expected to be exposed by the ownership node, the evolution node as well as the universal node.
The ownership node alone cannot reply in the required way to this query, therefore It is recommended that the method returns a constant number (e.g. 2**96) always
-
Returns { number of "tokenId that exist" owned by "owner" }
The uERC-721 standard exposed by the universal node needs to support the ERC-721 enumeration standard so a developer can ask for the total supply and retrieve one by one all minted tokens or all tokens from a user.
Returns { number of "tokenId that exist" }. Warning: careful about "burns" (which force you to look at the ownchain too); review definition of "exists"
Returns the tokenId in the ownership chain for the slot at the given index within the ordered list of { all "tokenId that exist" and are owned by the owner }
Returns the universal location to the evolution chain of a given asset.
-
Reverts if "tokenId does not exist". Otherwise Returns { evochain.collectionAddr.tokenURI(tokenId) }, where [collectionAddress, tokenId] = parse{ ownchain.tokenURI( tokenID ) }
Evochain
These queries that are not part of the 721 standard. In all that follows: tokenId refers to a value interpreted in the EVOCHAIN inside a certain collection. Check the full spec for the interfaces exposed by the EvoChain.
ERC721 experiment repo - This repo allows you to play with the default ERC721 implementation by OpenZeppelin, you can add a test and see how a function behaves, etc. Evochain Solidity Interface - Check here the methods and events available in the Evochain
The text was updated successfully, but these errors were encountered:
tonimateos
changed the title
Definition of base functions and events for each node of the universal ERC-721 standard
Specification of the Universal Node
Nov 28, 2023
tonimateos
changed the title
Specification of the Universal Node
Universal Node Specificaiton
Nov 28, 2023
tonimateos
changed the title
Universal Node Specificaiton
Universal Node Specification
Nov 28, 2023
Introduction
This issue looks at settling the specification of the behaviour of Universal Node (uNode).
All RPC calls received that do not involve a universal ERC-721 (uERC721) contract in the ownership chain (e.g. on Ethereum, on Polygon) are simply bypassed, routed to an ownership chain node. This redirection also applies to the corresponding responses.
The RPC calls that do involve a uERC721 contract on the ownership chain are the main subject of this issue, as specified below.
Check this other issue for the spec related to processing of the events from both nodes
Definitions
"tokenId" - The tokenId uses as input to ALL ERC-721 QUERIES refers to the id of the ownership chain slot
"a tokenId exists" - This is a hybrid EVOCHAIN+OWNCHAIN concept. First of all, as said above, all queries about tokenId refer to an ownership slot. Second, it exists if { it points to an asset that was minted in the Evochain AND it has not been burned in the ownchain }
tokenId does not exist" - The NOT of the previous definition of "a tokenId exists"
ERC-721 Interface
The uERC-721 standard exposed by the universal node will be the same one as the standard ERC-721. The below table exposes what is expected to be exposed by the ownership node, the evolution node as well as the universal node.
ERC-721 enumeration
The uERC-721 standard exposed by the universal node needs to support the ERC-721 enumeration standard so a developer can ask for the total supply and retrieve one by one all minted tokens or all tokens from a user.
Metadata extension
Evochain
These queries that are not part of the 721 standard. In all that follows: tokenId refers to a value interpreted in the EVOCHAIN inside a certain collection. Check the full spec for the interfaces exposed by the EvoChain.
Additional resources
ERC721 experiment repo - This repo allows you to play with the default ERC721 implementation by OpenZeppelin, you can add a test and see how a function behaves, etc.
Evochain Solidity Interface - Check here the methods and events available in the Evochain
The text was updated successfully, but these errors were encountered: