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
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+13-11Lines changed: 13 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,12 +4,14 @@ We appreciate your interest in contributing to Axelar! This document `CONTRIBUTI
4
4
5
5
## Table of contents
6
6
7
-
-[Getting Started](#getting-started)
8
-
-[How to contribute](#how-to-contribute)
9
-
-[Code of Conduct](#code-of-conduct)
10
-
-[Standards](#our-standards)
11
-
-[Responsibilities](#our-responsibilities)
12
-
-[Project structure](#project-structure)
7
+
-[Contributing to Axelar](#contributing-to-axelar)
8
+
-[Table of contents](#table-of-contents)
9
+
-[Getting started](#getting-started)
10
+
-[How to contribute](#how-to-contribute)
11
+
-[Code of conduct](#code-of-conduct)
12
+
-[Standards](#standards)
13
+
-[Responsibilities](#responsibilities)
14
+
-[Project structure](#project-structure)
13
15
14
16
## Getting started
15
17
@@ -22,16 +24,16 @@ If you are new to contributing to open-source projects, we encourage you to read
22
24
## How to contribute
23
25
24
26
1. Before you submit your Pull Request (PR), search the project for an open or closed PR related to your submission. You don't want to duplicate effort.
25
-
2. Fork the repository within your user and clone it to your local machine.
26
-
3. Install the dependencies for the project as indicated in the README.
27
-
4. Create a new branch for your contribution with the following command:
27
+
1. Fork the repository within your user and clone it to your local machine.
28
+
1. Install the dependencies for the project as indicated in the README.
29
+
1. Create a new branch for your contribution with the following command:
28
30
29
31
```shell
30
32
git checkout -b my-fix-branch
31
33
```
32
34
33
-
5. Make your changes in the new git branch.
34
-
6. Commit your changes. Your commit message should follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification.
35
+
1. Make your changes in the new git branch.
36
+
1. Commit your changes. Your commit message should follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification.
Copy file name to clipboardExpand all lines: src/content/docs/dev/amplifier/chain-integration/introduction.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ import { Callout } from "/src/components/callout";
10
10
11
11
## Integration Architecture
12
12
13
-
To connect your chain to the Axelar network via the Interchain Amplifier, you'll need to build or instantiate 4 smart contracts and 1 relayer service.
13
+
To connect your chain to the Axelar network via the Interchain Amplifier, you'll need to build or instantiate 5 smart contracts and 1 relayer service.
14
14
15
15
-**Source Chain Gateway Contract**
16
16
- Built using the tech stack of your chain, you'll need to deploy a smart contract implementing the [Cross-Chain Gateway Protocol](https://github.com/axelarnetwork/cgp-spec).
@@ -8,6 +8,8 @@ import { Callout } from "/src/components/callout";
8
8
frequently for updates.
9
9
</Callout>
10
10
11
+
## What is the Interchain Amplifier?
12
+
11
13
The Interchain Amplifier enables dynamic application-level connections of new blockchains and services to the Axelar network. dApp developers gain access to more new blockchains faster. Integrators can use Amplifier to connect their own chains to the Axelar Network. This enables generalized connections between blockchains using different technology stacks (Solidity, Rust, etc), consensus mechanisms (Proof of Stake, L2s), and blockchains from many different communities.
12
14
13
15
The Interchain Amplifier is a set of on-chain contracts and related services that enable integrators to easily connect chains and off-chain capabilities to the Axelar network. It is part of Axelar's [Mobius Development Stack (MDS)](https://docs.axelar.dev/dev/what-is-mobius-development-stack/). Developers can then seamlessly build applications that take advantage of these chains and capabilities.
@@ -20,11 +22,34 @@ The Amplifier consists of the following, all on the Axelar network:
20
22
- Gateways
21
23
- CosmWasm methods for receiving and sending messages
22
24
23
-
To connect to the Amplifier, integrators should:
25
+
## Integration Architecture
26
+
27
+
To connect your chain to the Axelar network via the Interchain Amplifier, you'll need to build or instantiate 4 smart contracts and 1 relayer service:
28
+
29
+
-**Source Chain Gateway Contract**
30
+
- Built using the tech stack of your chain, you'll need to deploy a smart contract implementing the [Cross-Chain Gateway Protocol](https://github.com/axelarnetwork/cgp-spec).
31
+
- For EVM chains, you can re-use the existing [EVM Gateway](https://github.com/axelarnetwork/axelar-cgp-solidity).
32
+
- This contract serves as the primary API for developers sending messages from your chain.
33
+
-**Verifier Contract**
34
+
- A smart contract on the Axelar network that verifies the validity of transactions on your chain.
35
+
- Most integrators will begin by using or customizing a [Voting Verifier](https://github.com/axelarnetwork/axelar-amplifier/tree/main/contracts/voting-verifier) or can be customized to your needs for cases such as verification via ZK Proof.
36
+
- If you deploy a Voting Verifier, verifiers will need to support your chain and vote on the truth of source chain transactions.
37
+
-**Gateway Contract**
38
+
- A gateway contract that exists on the Axelar network that will know how to use your verifier contract to check the validity of a transaction and then knows how to forward transactions onto the Amplifier router.
39
+
- Most integrators will begin by using or customizing this [Gateway Contract](https://github.com/axelarnetwork/axelar-amplifier/tree/main/contracts/gateway).
40
+
-**Prover Contract**
41
+
- A smart contract on the Axelar network that knows how to prove the validity of a transaction on your chain.
42
+
- Most integrators will begin by using or customizing the [multisig prover](https://github.com/axelarnetwork/axelar-amplifier/tree/main/contracts/multisig-prover)
43
+
-**Message Relayer**
44
+
- A service built with any tech stack that listens for events on your chain and relays them to the Axelar network.
45
+
- Get started with our [Message Relayer Example](https://github.com/axelarnetwork/axelar-examples/tree/main/examples/amplifier)
46
+
- Setup your relayer to send data to the Axelarscan API (TBD) related to transactions with your network
47
+
-**Governance Contract**
48
+
- A source chain contract that can receive messages from the Axelar Network representing governance decisions, such as updating your gateway.
49
+
-**Gas Table Updater**
50
+
- A service that updates the gas table, so that gas price estimations involving your chain are accurate.
24
51
25
-
- Implement and deploy a Gateway to the Axelar Network
26
-
- Work with verifiers to vote, prove, and attest to message validity
27
-
- Provide relaying infrastructure to identify incoming messages and act on outgoing messages
52
+
The [chain integration guide](/dev/amplifier/chain-integration/integrate-a-chain) will walk you through this process within the current Amplifier DevNet. Contract deployment on Testnet or Mainnet will require governance proposal.
28
53
29
54
## General Message Passing with Amplifier
30
55
@@ -33,21 +58,57 @@ The following diagram shows how the Amplifier handles General Message Passing:
See the [GMP with Amplifier example](/dev/amplifier/gmp-example) for additional details.
52
74
53
75
Developers who are looking to send messages between chains connected via Amplifier don't need to worry about working directly with the Amplifier themselves. They can use standard [General Message Passing (GMP)](/dev/general-message-passing/overview) to send messages between chains via a gateway available on the source chain. Amplifier will handle the verification, routing, and proving of messages between chains.
76
+
77
+
## Integration Process
78
+
79
+
Most integrators will follow the following process:
80
+
81
+
1. Learn & Understand Amplifier
82
+
- Follow the [chain integration guide](/dev/amplifier/chain-integration/integrate-a-chain) to deploy standardize contracts to the DevNet to understand the tools and basics of the process.
83
+
1. Customize and Deploy to DevNet
84
+
- Build (or instantiate or customize) each of the [required contracts and the relayer](#integration-architecture).
85
+
- You may choose to change the logic of your verifier contract (for ZK use cases for example) or prover contract.
86
+
1. Whitelist contracts
87
+
- For the DevNet [use the form](https://docs.google.com/forms/d/e/1FAIpQLSchD7P1WfdSCQfaZAoqX7DyqJOqYKxXle47yrueTbOgkKQDiQ/viewform) to ask to be whitelisted
88
+
1. Become a [verifier](/validator/amplifier/verifier-onboarding) for your chain.
89
+
- To test your chain, you will need active verifiers to vote on messages from your chain
90
+
1. Test your integration
91
+
- Make sure you can send and receive messages on your chain.
92
+
1. Begin audit process
93
+
- You should audit your on-chain contracts.
94
+
1. Propose to Testnet
95
+
-[Make on-chain proposals](/dev/amplifier/chain-integration/governance-proposals/) on the testnet to create your CosmWasm smart contracts.
96
+
1. Proposal to store your CosmWasm code.
97
+
1. Proposal to instantiate your contracts.
98
+
- Make an on-chain proposal to add your chain to the Amplifier router.
99
+
1. Test in Testnet
100
+
- Ensure your contracts are working as expected.
101
+
- Verify with developers that they can send messages to and from your chain.
102
+
1. Productionize your relayer
103
+
- Ensure your relayer is robust, fault-tolerant, and can handle the load of your chain.
104
+
1. Propose to Mainnet
105
+
-[Make on-chain proposals](/dev/amplifier/chain-integration/governance-proposals/) on Mainnet to create your CosmWasm smart contracts.
106
+
1. Proposal to store your CosmWasm code.
107
+
1. Proposal to instantiate your contracts.
108
+
- Make an on-chain proposal to add your chain to the Amplifier router.
109
+
1. Fund rewards pools
110
+
-[Fund the rewards pool](/dev/amplifier/add-rewards/) for your `VotingVerifier` and `MultisigProver`.
111
+
112
+
## Next Steps
113
+
114
+
Once you understand the architecture and integration process, you're ready to start implementing. Head to the [Integrate a Chain](/dev/amplifier/chain-integration/integrate-a-chain) guide for step-by-step technical instructions.
Copy file name to clipboardExpand all lines: src/content/docs/dev/amplifier/its-hub/routing-mechanics.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ ITS Hub routing works in the following way:
14
14
Each token transfer or deployment involves two General Message Passing (GMP) calls:
15
15
16
16
1.**From Source Chain to ITS Hub**: The ITS Edge Contract on the source chain sends a GMP call to the ITS Hub, wrapping the original payload.
17
-
2.**From ITS Hub to Destination Chain**: The ITS Hub processes the payload, applies security measures, and forwards it to the ITS Edge Contract on the destination chain.
17
+
1.**From ITS Hub to Destination Chain**: The ITS Hub processes the payload, applies security measures, and forwards it to the ITS Edge Contract on the destination chain.
Copy file name to clipboardExpand all lines: src/content/docs/dev/axelar-sandbox/how-to-use.mdx
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,19 +20,19 @@ Let's begin by executing our examples. So, here's how the website looks like:
20
20
21
21

22
22
23
-
2.`hello-world` is the default example. It shows how to update destination contract states from the source chain contract. The example can be run against testnet or simulated environment.
23
+
1.`hello-world` is the default example. It shows how to update destination contract states from the source chain contract. The example can be run against testnet or simulated environment.
24
24
25
25

26
26
27
-
3. Clicks at the **Execute** button in the upper right corner to run an example.
27
+
1. Clicks at the **Execute** button in the upper right corner to run an example.
28
28
29
29

30
30
31
-
4. Next, the solidity contracts will be compiled; if successful, the javascript file will be executed; otherwise, the error message will be displayed. The "Output" panel displays all Javascript log messages that have already been executed.
31
+
1. Next, the solidity contracts will be compiled; if successful, the javascript file will be executed; otherwise, the error message will be displayed. The "Output" panel displays all Javascript log messages that have already been executed.
32
32
33
33

34
34
35
-
5. The "**Transactions**" panel displays all transaction info sent from the "**sender**" and the "**relayer**" wallet. The relayer wallet is the wallet that interacts with your destination contract while the sender does that with the source contract. The transaction information includes:
35
+
1. The "**Transactions**" panel displays all transaction info sent from the "**sender**" and the "**relayer**" wallet. The relayer wallet is the wallet that interacts with your destination contract while the sender does that with the source contract. The transaction information includes:
3. Axelar relayers observe the deposit transaction on the source chain and complete it on the destination chain, assuming the amount exceeds the requisite fee.
29
-
4. Watch your tokens arrive on the destination chain.
28
+
1. Axelar relayers observe the deposit transaction on the source chain and complete it on the destination chain, assuming the amount exceeds the requisite fee.
29
+
1. Watch your tokens arrive on the destination chain.
Copy file name to clipboardExpand all lines: src/content/docs/dev/axelarjs-sdk/tx-status-query-recovery.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,7 @@ See the status of a transaction by passing its `txHash` into [`queryTransactionS
44
44
45
45
It takes two parameters
46
46
1.`txHash`: The transaction hash you are querying
47
-
2.`eventIndex`: This is an optional parameter, useful for separating multiple [internal transactions](https://docs.alchemy.com/docs/what-are-internal-transactions) from one another that may have the same transaction hash.
47
+
1.`eventIndex`: This is an optional parameter, useful for separating multiple [internal transactions](https://docs.alchemy.com/docs/what-are-internal-transactions) from one another that may have the same transaction hash.
Copy file name to clipboardExpand all lines: src/content/docs/dev/gas-service/pricing.mdx
+16-10Lines changed: 16 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,9 +3,9 @@
3
3
Transactions using Axelar often have costs associated on their source chain, the Axelar network, and their destination chain. Whether for token transfers or General Message Passing, every cross-chain transaction is made up of 4 types of costs:
4
4
5
5
1. Initiating the transaction on the source chain,
6
-
2. Processing the transaction through the Axelar blockchain
7
-
3. Relaying to the gateway contract on the destination chain
8
-
4. Executing the destination smart contract with the payload
6
+
1. Processing the transaction through the Axelar blockchain
7
+
1. Relaying to the gateway contract on the destination chain
8
+
1. Executing the destination smart contract with the payload
9
9
10
10
To simplify paying for transaction pricing through the pipeline, Axelar has two general solutions to this problem.
11
11
@@ -30,7 +30,7 @@ For general message passing, Axelar's gas service allows the user/dApp to pay al
30
30
- Validator confirmation voting on the Axelar Network
31
31
- Relaying of approval on the destination chain
32
32
- Costs related to delivering any possible refund on the destination chain
33
-
2.**Execution Fee (i.e. the gas to execute the `_execute` method on the destination chain)** - The execution fee is variable depending on the chains involved, and the complexity of your `_execute` method.
33
+
1.**Execution Fee (i.e. the gas to execute the `_execute` method on the destination chain)** - The execution fee is variable depending on the chains involved, and the complexity of your `_execute` method.
34
34
35
35
The `estimateGasFee` method in the [AxelarJS SDK](/dev/axelarjs-sdk/axelar-query-api/#estimategasfee) calculates this total cost for you.
36
36
@@ -46,8 +46,8 @@ Certain EVM chains have really volatile gas prices. To account for this, it is r
46
46
47
47
The `estimateGasFee` method exposes two additional optional parameters to enhance execution certainty:
48
48
49
-
1.a`minGasPrice` to be used on the destination chain, and
50
-
2. a`gasMultipler` to be used to multiply the calculated figure by a specified buffer for execution certainty.
49
+
1.A`minGasPrice` to be used on the destination chain, and
50
+
1. A`gasMultipler` to be used to multiply the calculated figure by a specified buffer for execution certainty.
51
51
52
52
#### REFUNDS
53
53
@@ -64,9 +64,15 @@ The `estimateGasFee` method can be used (yet again) to determine the amount of g
64
64
65
65
#### HANDLING ERRORS
66
66
67
-
Transactions may intermittently stall on their way from a source chain to a destination chain. Common root causes for stalled transactions included: 1 - failure to send a valid transaction from the source chain into the Axelar network for processing; 2 - insufficient gas payments paid by the user; 3 - transaction revert on the destination chain.
67
+
Transactions may intermittently stall on their way from a source chain to a destination chain. Common root causes for stalled transactions included:
68
+
1. Failure to send a valid transaction from the source chain into the Axelar network for processing.
69
+
1. Insufficient gas payments paid by the user.
70
+
1. Transaction revert on the destination chain.
68
71
69
-
Every transaction can be seen on Axelarscan with a detailed view of where transactions get "stuck", so one can start there to debug such circumstances. Axelarscan and the AxelarJS SDK expose two approaches to recover stalled transactions: 1. manual execution of the transaction on the destination chain, or 2. add gas for transactions. More details can be found [here](/dev/general-message-passing/debug/error-debugging/) for debugging and [here](/dev/general-message-passing/debug/transaction-recovery/) and recovery.
72
+
Every transaction can be seen on Axelarscan with a detailed view of where transactions get "stuck", so one can start there to debug such circumstances. Axelarscan and the AxelarJS SDK expose two approaches to recover stalled transactions:
73
+
74
+
1. Manual execution of the transaction on the destination chain, or
75
+
1. Add gas for transactions. More details can be found [here](/dev/general-message-passing/debug/error-debugging/) for debugging and [here](/dev/general-message-passing/debug/transaction-recovery/) and recovery.
0 commit comments