Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AWARD: Ark Protocol Claim "2 - Public Good Awards" #712

Closed
taitruong opened this issue Mar 23, 2023 · 4 comments
Closed

AWARD: Ark Protocol Claim "2 - Public Good Awards" #712

taitruong opened this issue Mar 23, 2023 · 4 comments
Labels
award Claim award!

Comments

@taitruong
Copy link
Contributor

Ark Protocol sole mission is serving the NFT community since its foundation during Terra-UST depeg May 12th 2022: https://twitter.com/MrTsCode/status/1524804609797128195?s=20

We are building interchain NFT utilities, allowing NFTs to move between chains & enabling utilities across multiple chains.

We provide multi-chain utilities for all creators, builders, collectors, chains and all providers in the Cosmos and NFT community.

Mainly we have build and continue to build on these and further tools and utilities:

  1. ark multichain CLI
  2. Governed ICS721 contracts
  3. ICS721 contract

We'd like to strong emphasize that all tools and utilities being provided are for the general purpose based on ICS721, IBC, and IBC-based chains! These tools are build for the longterm and not only for GoN!

@taitruong
Copy link
Contributor Author

ark multichain CLI

https://github.com/arkprotocol/ics721-tools

This is a true multi-chain tool where user can choose on which chain it may operate on:

ark select chain [chain: stagagaze|irisnet|juno|uptick|omniflix|osmosis]

Operations covers currently +15 commands:

  1. NFT Interchain Transfer
  2. NFT Multi-Chain Transfer
  3. Collection Query By Class ID
  4. Query transaction
  5. Select, Query, Reload Chain Context
  6. Ark Command History
  7. Create Collection
  8. Mint/Issue an NFT for a collection
  9. Query All Collections
  10. Query For All Tokens For A Specific Collection
  11. Query For Specific Token And Collection
  12. Block Height Query
  13. Transaction Query
  14. IBC queries (channels and ports)

Some commands are simple, though very useful, like these:

# Queries for transaction until max call limit is reached. Helpful for sync operations, since this query waits until tx is finished!
ark query chain tx --tx [TXHASH] --max-call-limit [MAX_CALL_LIMIT]

# mint on stargaze
ark select chain stargaze; ark mint collection --recipient $WALLET_MINTER --from $WALLET_MINTER  --collection $ARK_GON_COLLECTION --token arkNFT061

# mint on irisnet
ark select chain irisnet
ark mint collection --from $WALLET_MINTER --recipient $WALLET_MINTER --collection $ARK_GON_COLLECTION --token ark195

Based on these simple multi-chain tools, more enhanced commands have been build on top on these, like the ark ICS 721 interchain command: ark transfer ics721 token

# transfer nft from omniflix to irisnet
ark transfer ics721 token --from omniflix183e7ccwsnngj2q8lfxnmekunspnfxs6qw3yyyx --collection ibc/DB716901E3B773E5E50EBBE1A2815BFADCEBFE6C357BD329C78D9545FD6A5478 --token gtr3/taitruong --recipient iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f --target-chain irisnet --source-channel channel-24

This command is an aggregation of multiple ark commands: https://github.com/arkprotocol/ics721-tools/blob/main/cli/ics721-transfer.sh

  1. Switch CLI context to source chain (ark select chain $SOURCE_CAHIN)
  2. Query for IBC channel and port on source and target chain and validates with user input
  3. Triggers initial ICS721 transfer
  4. Awaits transaction tx being finished
  5. optionally allowing user to relay specific IBC channel
  6. Switch CLI context to target chain
  7. computes class id
  8. lookup collection based on class-id
  9. identifies whether target chain is a transfer or back transfer
  10. query for NFT being transferred on target chain and owned by recipient
  11. finally outputting all necessary info to user (like transfer tx hash id, collection data on source and target chain: chain id, chain, collection class id, owner, channel, tx, height), all commands being executed on both chains
  12. stores cmd and output in ark history (bash variable)

The most complex ark command is the multi-chain transfer across multiple chains:

ark transfer ics721 chains \
--collection gonTeamRace2 \
--from $WALLET_MINTER \
--recipients stars183e7ccwsnngj2q8lfxnmekunspnfxs6q8nzqcf/juno183e7ccwsnngj2q8lfxnmekunspnfxs6q9akx5y/uptick1h7c0ltrj6z707eh3z4cyv4jkqwfv6lj76se7lr/omniflix183e7ccwsnngj2q8lfxnmekunspnfxs6qw3yyyx/iaa183e7ccwsnngj2q8lfxnmekunspnfxs6qxd4v3f \
--target-chains stargaze/juno/uptick/omniflix/irisnet \
--source-channels channel-22/channel-230/channel-86/channel-5/channel-25 \
--token gtr2/taitruong \
--max-height 50

The multi-chain transfer commands covers these steps and commands:

  1. Loops and switch CLI chain context based on provided chains. On does the following on each chain, from starting to final chain:
  2. ICS721 interchain transfer from source to target chain
  3. Logs all executed commands and outputs
  4. Creates a backup revert command in case of rollback
  5. Optionally reverting NFT back to initial chain in case NFT has not been transferred within giving max block height
  6. Output results and provide user a revert command in case of manual rollback

@taitruong
Copy link
Contributor Author

Our ark cli is fully and easily extendable:

  • more chains can be added by providing a chain specifc config file: https://github.com/arkprotocol/ics721-tools/blob/main/cli/uptick.env
  • each command:
    • is a bash script which lowers boundaries for builders to extend the CLI for their need
    • is a function, allowing to be executed and integrated in other tools easily
    • has a --chain flag, allowing to switch chain context and execute on different command

NFTs going interchain has just started. Ark Protocol though has put efforts since a while and provides ahead of time interchain and multi-chain utilities. Upcoming commands be more on a higher, user-based needs and answers these questions:

  • where are all tokens and collections located?
  • marketplace: I have x NFTs from y Collections - do they all belong to the same OG collection?
  • I mad an offer/bid for NFTx on Collection y, but actually it is owned by user z on chain xyz - How do bidder and owner can get together?
  • is NFT x officially supported by OG collection y?
  • snapshots: on how many chains are the NFTs? which user owns NFTs x, y, and z on which chain a, b, and c?
  • how can a creator update AI art or any metadata and on which chain?

The key concept here is a variation of all possible and eligible class ids...

@taitruong
Copy link
Contributor Author

Services for a governed ICS721 infrastructure

Ark Protocol will make sure to lower technical boundaries for the NFT community. ICS721 contracts will evolve and hence needs to maintained. A reliable infrastructure with relayers and nodes on each chain is required.

Collectors and creators need support, tools, services and utilities. Ark Protocol will make sure on various levels multi-chain collections are secure and reliable. For this a low-level infrastructure and high-level services and multi-chain utilities is in the works.

Specifically Ark Protocol will provide:

  1. ICS721 infrastructure. Work in progress here: https://github.com/arkprotocol/ics721-nodes
  2. Services and Support on our discord: https://discord.gg/fVv6Mf9Wr8
  3. Governed contracts for ICS721 (see GoN challenge tasks)
  4. Continue working on other tools like ark CLI, multi-chain utilities, launchpad and marketplaces.
  5. Continue working on ICS721 and other solutions for NFTs going multi-chain

@taitruong
Copy link
Contributor Author

Building on interchain-NFT solutions (ICS721 and beyond)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
award Claim award!
Projects
None yet
Development

No branches or pull requests

2 participants