The following describes steps and required functionality for implementing NFT Digital Signature on the unique.one NFT Marketplace. See Sample UX for high-level depiction of integration. Adding, mapping and signing are used interchangeably in this document and mean the same thing.
Task | Status | Owner |
---|---|---|
Modify FIO Chain (FIP-27) | ||
Launch FIO dApp with NFT sign functionality | ||
Integrate FIO NFT Signatures on unique.one |
| Unique.one |
Launch marketing |
@Actor Client unique_one FIO_Dashboard FIO_Chain sign = Client->unique_one.approve_NFT() sign = Client->unique_one.upload_NFT() sign = Client->unique_one.mint_NFT() redirect = Client->unique_one.sign_NFT() redirect = FIO_Dashboard.sign_NFT(encrypted(chain_code,contract_address,token_id,user_id,tracking_id)) { decrypt_payload() create_account() confirm = FIO_Chain.register_fio_address() confirm = FIO_Chain.add_nft() } completed = unique_one.resume_sign_NFT() { encrypted_payload = FIO_Dashboard.check_status(tracking_id) decrypt_payload() attach_fio_address() } sign = Client->unique_one.sign_sell_order() |
FIO Chain will need to be modified to create actions for mapping (“signing”) NFTs.
FIO Dashboard will need to be modified to enable passing of unique parameters in the url so that the NFT signing user experience can be streamlined.
Parameter | Required | Format | Description |
---|---|---|---|
action | Yes | String | Identifies action FIO Dashboard should trigger: addnft - will guide the user to add nft to their FIO Address |
partner_id | Yes | String | Identifies partner sending the redirect. Will be assigned by FIO. |
payload | Yes | String | Encrypted json payload, see below. |
Encryption to be determined in development.
Parameter | Required | Format | Description |
---|---|---|---|
chain_code | Yes | String. See add_nft request. | Identifies the chain where NFT exists, e.g. ETH or BSC. |
contract_address | Yes | String. See add_nft request. | Identifies contract address where NFT exists. |
token_id | No | String. See add_nft request. | Identifies specific token ID of NFT (if applicable). |
tracking_id | Yes | String | Identifies unique user session. Will be echoed back. |
redirect_url | No | String | Url of where to redirect the user after NFT is added. See Support outbound redirect url. |
In addnft encrypted payload partner will be able to specify a url where the user will be redirected upon completing the action. If url is specified, the following encrypted payload will be attached to the url:
Encryption to be determined in development.
Parameter | Required | Format | Description |
---|---|---|---|
chain_code | Yes | String. See add_nft request. | Identifies the chain where NFT exists, e.g. ETH or BSC. |
contract_address | Yes | String. See add_nft request. | Identifies contract address where NFT exists. |
token_id | No | String. See add_nft request. | Identifies specific token ID of NFT (if applicable). |
tracking_id | Yes | String | Identifies unique user session. |
fio_address | Yes | String | FIO Address the user has registered and successfully linked with the NFT. |
Partner will also be able to fetch the Outbound encrypted payload by querying FIO Dashboard API with a unique tracking_id
Parameter | Required | Format | Description |
---|---|---|---|
tracking_id | Yes | String | Identifies unique user session. |
Parameter | Required | Format | Description |
---|---|---|---|
payload | Yes | String | See Outbound encrypted payload above. |
Ability to add (“sign”) NFT will be added to FIO Dashboard for all users. Information collected:
Chain code
Contract address
Token ID
NFT Metadata will be pulled and displayed for supported chains (ETH, BSC, XDAI).
If NFT has an attached image, it will be displayed
Payload will be stored server-side by FIO Dashboard
User will be contained to a landing page
User will be required to log-in or create account
User will be required to pick existing FIO Address to sign with or register a new one
Domains to show will be linked to partner_id
Upon picking/registering FIO Address, user will be redirected to confirm NFT addition with all relevant information pre-populated and not changeable.
Upon adding the NFT, and if redirect_url has been provided, the user will be redirected and encrypted payload will be attached.
User will be able to enter FIO Address and all signed NFTs will be displayed.
User will be able to enter any one of the following and list of FIO Addresses which have signed this NFT will be displayed:
NFT chain_code, contract_address, token_id
NFT url
NFT hash
FIO Address or NFT Data could also be passed in via the url, in which case the results will be immediately displayed.
Unique.one will need to implement the following:
Support for redirect from within Unique.one flow to the FIO Dashboard with parameters as described in Inbound redirect url above.
Support the ability to fetch Outbound encrypted payload using FIO Dashboard Partner API.
Support ability to attach FIO Address to NFTs and user profile.
Support ability to link out to FIO Dashboard to display signatures.
See Sample UX for high-level depiction of integration.