From 07c76eb691f73f3e9adf60c653503eba7d803c4a Mon Sep 17 00:00:00 2001 From: ben-weinberg Date: Tue, 20 Aug 2024 13:50:07 -0400 Subject: [PATCH] feat: its sequence diagram (#1061) --- .vscode/settings.json | 3 +++ public/images/its-deployment-diagram.svg | 4 ++++ public/images/its-transfer.svg | 4 ++++ .../dev/send-tokens/interchain-tokens/intro.astro | 14 +++++++++++++- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 .vscode/settings.json create mode 100644 public/images/its-deployment-diagram.svg create mode 100644 public/images/its-transfer.svg diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..d09a50ca3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "svg.preview.background": "transparent" +} \ No newline at end of file diff --git a/public/images/its-deployment-diagram.svg b/public/images/its-deployment-diagram.svg new file mode 100644 index 000000000..c534cedf1 --- /dev/null +++ b/public/images/its-deployment-diagram.svg @@ -0,0 +1,4 @@ + + + +
Ethereum
registerCanonicalInterchainToken()
deployRemoteCanonicalInterchainToken
deployTokenManager()
Interchain Token Factory
Lock/Unlock
Token Manager
Axelar Gateway
Axelar Gas Service
2. execute()
1. Mark tx approved
Axelar Relayer
Avalanche
Confirm approved by Axelar
deployInterchainToken()
deployTokenManager()
Interchain Token Service
1. 75 Validators consensus
2. Validators mark msg as approved
3. Validators generate unique key to signoff on tx 

Axelar Network
true
Axelar Gateway
Register tokenId
deployInterchainToken()
Interchain Token Factory
deployTokenManager()
Interchain Token Service
Salt, Token Address
callContract()
payNativeGasForContractCall()
Interchain Token Factory
create3()
Interchain Token Deployer
InterchainToken
create3()
Interchain Token Deployer
Mint/Burn Token Manager
\ No newline at end of file diff --git a/public/images/its-transfer.svg b/public/images/its-transfer.svg new file mode 100644 index 000000000..933e84ab2 --- /dev/null +++ b/public/images/its-transfer.svg @@ -0,0 +1,4 @@ + + + +
transmitInterchainTransfer()
ERC20
Ethereum
interchainTransfer()

Sender
Lock
Token
payGas()
callContract()
Interchain Token Service
Token Manager
Axelar Gateway
Axelar Gas Service
2. execute()
1. Mark tx 
approved
Axelar Relayer
Avalanche
Confirm call approved
by Axelar Network
giveToken()
Interchain Token Service
1. 75 Validator consensus
2. Validators mark msg as approved
3. Validators generate unique key to signoff on tx 

Axelar Blockchain
true
Axelar Gateway
Increment flow added
mint()
Token Manager
Flow Limit
Token

Receiver
\ No newline at end of file diff --git a/src/pages/dev/send-tokens/interchain-tokens/intro.astro b/src/pages/dev/send-tokens/interchain-tokens/intro.astro index 9bb6a0149..d5a18df42 100644 --- a/src/pages/dev/send-tokens/interchain-tokens/intro.astro +++ b/src/pages/dev/send-tokens/interchain-tokens/intro.astro @@ -32,7 +32,7 @@ const cards = [ ---
- Interchain Tokens have received a major update as of November 2023 deployed with many new features! Read on to learn about all of the new capabilities and check out the +

Deploy Interchain Token

+

ITS allows you to deploy Interchain Tokens. An Interchain Token is an ERC20 that is connected to ITS upon deployment. It comes built in with the interchainTransfer() function, which allows users to bridge their token between any blockchain which it is deployed to. To deploy this token you can go through the Interchain Token Factory contract. When you trigger the registerCanonicalInterchainToken() function that will trigger the flow of registering your custom token with a Lock/Unlock token manager type to your token's home chain. Now that you have registered your token on the home chain you can call the deployRemoteCanonicalInterchainToken(). This will deploy an Interchain Token on a different blockchain that will be connected to your canonical token on the home chain you registered when you called the previous function. Note: This is just one of many different flows you can choose to follow when interacting with ITS.

+ This diagram is interactive click on the function names! + + Your browser does not support SVG + +

Interchain Transfer

+

Once your token is connected to ITS you can call the interchaintTransfer() function to send a cross chain transaction for your token. If your token inherits in the Interchain Token Standard then you will have this function built into the token. The interchainTransfer() will trigger a flow that will interact with ITS to either lock or burn your token on the source chain (depending on the Token Manager type) and then mint your token on the destination chain.

+ This diagram is interactive click on the function names! + + Your browser does not support SVG +