Emil (ApeUnit), Dogemos (Chainapsis/Tendermint), Max (ApeUnit), Antoine (StarName), Dario (ApeUnit), Sasha (ApeUnit), Pedro (WalletConnect), Billy (ICF)
Agenda:
Intro
Identify the problems
IBC Coin Denoms
Reliable Chain IDs
Relaying IBC Packets
Interacting with Multichains with Wallets
We build interfaces around the technology
It’s nice if we can build the technology around the user experience
We all want to build our own applications for our own use cases but we also want to interface with each other with no conflict
These are proposals for standards for storing chains and asset references for client libraries to maintain integrity (and sanity!) while tracking assets across multiple blockchains.
Summary: Chain ids should have a namespace (like eip155 which describes eth specific chain-ids, or bip122 which describes btc specific chain ids) and then a reference to a specific chain within that reference (like “1” for mainnet ethereum or “cosmoshub-3” for the current cosmos mainnet).
Examples:
Ethereum mainnet
eip155:1
Bitcoin mainnet
bip122:000000000019d6689c085ae165831e93
Litecoin
bip122:12a765e31ffd4059bada1e25190f6e98
Cosmos Hub (Tendermint + Cosmos SDK)
cosmos:cosmoshub-2
cosmos:cosmoshub-3
Binance chain (Tendermint + Cosmos SDK; see https://dataseed5.defibit.io/genesis)
Summary: chain-id for cosmos chains should follow regex [-a-zA-Z0-9]{1,47} and if not they should be hashed like: first_16_chars(hex(sha256(utf8(chain_id)))) and prefixed with “x”, “hash” or “hashed”
Issue:
Currently IBC based denoms breaks this spec
Examples:
Cosmos Hub (Tendermint + Cosmos SDK)
cosmos:cosmoshub-2
cosmos:cosmoshub-3
Binance chain
cosmos:Binance-Chain-Tigris
IOV Mainnet (Tendermint + Weave)
cosmos:iov-mainnet
chain_ids “x”, “hash-“, “hashed” (are direct)
cosmos:x
cosmos:hash-
cosmos:hashed
chain_ids “hashed-“, “hashed-123” (invalid prefix for the direct definition)
cosmos:hashed-c904589232422def
cosmos:hashed-99df5cd68192b33e
chain_id “123456789012345678901234567890123456789012345678” (too long for the direct definition)
cosmos:hashed-0204c92a0388779d
chain_ids “ “, “wonderland🧝♂️” (invalid character for the direct definition)
An asset has a specific origin which is referenced with the Blockchain ID specification, but within that setting there are various ways to designate a token. One way is slip44 where an asset number is registered. Another way is as an ERC-20 on EVM chains with a reference to a contract address. There is also the possibility that an asset has an ID on top for non-fungible tokens, this should be appended should it be necessary.
Issues
This doesn’t address an asset once it’s moved away from it’s origin chain. In the SDK the path is namespaced as part of the asset as seen in **ADR001**: Coin Source Tracing.