Initial migration and edits for EVM Sidechains documentation (#1544)
* Initial migration and edits for EVM Sidechains documentation * Fix broken link * Incorporate review feedback and fix indentaton for code snippets and images within steps * Incorporate review feedback * Fix indentation within steps
42
content/concepts/interoperability/intro-to-evm-sidechain.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
html: intro-to-evm-sidechain.html
|
||||||
|
parent: xrpl-interoperability.html
|
||||||
|
blurb: Introduction to the EVM compatible XRP Ledger Sidechain
|
||||||
|
labels:
|
||||||
|
- Interoperability
|
||||||
|
status: not_enabled
|
||||||
|
---
|
||||||
|
# Introduction to EVM Compatible XRP Ledger Sidechain
|
||||||
|
|
||||||
|
The Etherium Virtual Machine (EVM) compatible XRP Ledger sidechain is a secure and fast public blockchain that brings all kinds of web3 applications to the XRP Ledger community.
|
||||||
|
|
||||||
|
- Explorer: [https://evm-sidechain.xrpl.org](https://evm-sidechain.xrpl.org/)
|
||||||
|
- Public RPC: [https://rpc.evm-sidechain.xrpl.org](https://evm-sidechain.xrpl.org/)
|
||||||
|
|
||||||
|
|
||||||
|
The EVM Sidechain is a powerful latest generation blockchain with the following features:
|
||||||
|
|
||||||
|
- Supports up to 1000 transactions per second, thus handling large loads and throughput.
|
||||||
|
- Has a low transaction confirmation time, on average, as a block is produced every 5 seconds.
|
||||||
|
- Once a block is added to the chain and confirmed, it is considered final (1 block finalization time).
|
||||||
|
- Provides full Ethereum Virtual Machine (EVM) compatibility, enabling you to connect your wallet and interact or deploy smart contracts written in Solidity.
|
||||||
|
|
||||||
|
## Consensus
|
||||||
|
|
||||||
|
The EVM Sidechain runs on a proof-of-stake (PoS) consensus algorithm. Staking is when you pledge your coins to be used for verifying transactions. The proof-of-stake model allows you to stake cryptocurrency (also referred to as "coins") and create your own validator nodes. Your coins are locked up while you stake them, but you can unstake them if you want to trade your coins.
|
||||||
|
|
||||||
|
In a proof-of-stake blockchain, mining power depends on the amount of coins a validator is staking. Participants who stake more coins are more likely to be chosen to add new blocks.
|
||||||
|
|
||||||
|
If you are interested in staking cryptocurrency and running your own validator, see [Join EVM Sidechain Devnet](join-evm-sidechain-devnet.html) for more information.
|
||||||
|
|
||||||
|
The underlying technology for the XRP Ledger EVM Sidechain consensus is [Tendermint](https://tendermint.com/), a Byzantine-Fault Tolerant engine for building blockchains.
|
||||||
|
|
||||||
|
The blockchain uses the `cosmos-sdk` library on top of Tendermint to create and customize the blockchain using its built-in modules. The EVM sidechain uses the [Ethermint](https://github.com/evmos/ethermint) `cosmos-sdk` module, which provides EVM compatibility
|
||||||
|
|
||||||
|
## Interoperability Using the EVM Sidechain
|
||||||
|
|
||||||
|
The EVM sidechain is directly connected to XRP Ledger through the XRP Ledger bridge ([https://bridge.devnet.xrpl.](https://bridge.devnet.xrpl.org/). Through this bridge component, you can move your XRP to the EVM Sidechain and use its features.
|
||||||
|
|
||||||
|
## See Also
|
||||||
|
|
||||||
|
[Get Started with EVM Sidechain](get-started-evm-sidechain.html)
|
||||||
13
content/concepts/interoperability/xrpl-interoperability.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
html: xrpl-interoperability.html
|
||||||
|
parent: concepts.html
|
||||||
|
blurb: Learn about capabilities that bring programmability and ability to interact with other chains to the XRP Ledger.
|
||||||
|
template: pagetype-category.html.jinja
|
||||||
|
labels:
|
||||||
|
- Interoperability
|
||||||
|
status: not_enabled
|
||||||
|
---
|
||||||
|
# Interoperability
|
||||||
|
|
||||||
|
The XRP Ledger is known for its transaction throughput, speed, and low fees. With the addition of programmabilty and interoperability, developers can access features such as smart contracts and can build apps with cross-chain interoperability.
|
||||||
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
html: connect-metamask-to-xrpl-evm-sidechain.html
|
||||||
|
parent: get-started-evm-sidechain.html
|
||||||
|
blurb: Learn how to connect MetaMask wallet to the EVM Sidechain for the XRP Ledger.
|
||||||
|
labels:
|
||||||
|
- Development, Interoperability
|
||||||
|
status: not_enabled
|
||||||
|
---
|
||||||
|
# Connect MetaMask to XRP Ledger Sidechain
|
||||||
|
|
||||||
|
MetaMask is an extension for accessing Harmony-enabled distributed applications (_dapps_) from your browser. The extension injects the XRP Ledger EVM sidechain Web3 API into every website's Javascript context, so that Web3 applications can read from the blockchain.
|
||||||
|
This tutorial walks through the process of installing MetaMask, configuring it on the XRP Ledger EVM sidechain network, and importing an existing account using a previously generated private key.
|
||||||
|
|
||||||
|
## 1. Installing MetaMask
|
||||||
|
|
||||||
|
Install the MetaMask extension on your browser from **[https://metamask.io/download/](https://metamask.io/download/)**. The extension supports most desktop browsers.
|
||||||
|
|
||||||
|
## 2. Create an Account on MetaMask
|
||||||
|
|
||||||
|
To create a new account on MetaMask:
|
||||||
|
|
||||||
|
1. Click the MetaMask icon.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
2. Choose **Create Account**.
|
||||||
|
|
||||||
|
3. Enter the Account Name.
|
||||||
|
|
||||||
|
4. Click **Create**.
|
||||||
|
|
||||||
|
### 3. Adding XRP Ledger EVM Sidechain to MetaMask
|
||||||
|
|
||||||
|
To add XRP Ledger EVM Sidechain to MetaMask:
|
||||||
|
|
||||||
|
1. Open the MetaMask extension.
|
||||||
|
|
||||||
|
2. Use the drop-down menu to choose **Add Network**.
|
||||||
|

|
||||||
|
|
||||||
|
3. Enter the XRP Ledger Devnet endpoint information.
|
||||||
|
|
||||||
|
* **Network Name**: XRP Ledger EVM Sidechain
|
||||||
|
* **New RPC URL**: http://rpc.evm-sidechain.xrpl.org
|
||||||
|
* **Chain ID**: 1440001
|
||||||
|
* **Currency Symbol**: XRP
|
||||||
|
* **Block Explorer**: https://evm-sidechain.xrpl.org
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
---
|
||||||
|
html: evm-sidechain-run-a-validator-node.html
|
||||||
|
parent: evm-sidechains.html
|
||||||
|
blurb: Learn how to run a validator node on the EVM Sidechain Devnet.
|
||||||
|
labels:
|
||||||
|
- Development, Interoperability
|
||||||
|
status: not_enabled
|
||||||
|
---
|
||||||
|
# Run a Validator Node on an EVM Sidechain
|
||||||
|
|
||||||
|
## Create Your Validator
|
||||||
|
|
||||||
|
Use your node consensus public key (`exrpvalconspub...`) to create a new validator by staking XRP tokens. You can find your validator pubkey by running:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd tendermint show-validator
|
||||||
|
```
|
||||||
|
|
||||||
|
To create your validator on Devnet, use the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd tx staking create-validator \
|
||||||
|
--amount=1000000000000000000000axrp \
|
||||||
|
--pubkey=$(exrpd tendermint show-validator) \
|
||||||
|
--moniker="<your_custom_moniker>" \
|
||||||
|
--chain-id=<chain_id> \
|
||||||
|
--commission-rate="0.05" \
|
||||||
|
--commission-max-rate="0.10" \
|
||||||
|
--commission-max-change-rate="0.01" \
|
||||||
|
--min-self-delegation="1000000" \
|
||||||
|
--gas="auto" \
|
||||||
|
--gas-prices="0.025aphoton" \
|
||||||
|
--from=<key_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note** When specifying commission parameters, the `commission-max-change-rate` is used to measure % *point* change over the `commission-rate`. For example, 1% to 2% is a 100% rate increase, but only 1 percentage point.
|
||||||
|
|
||||||
|
|
||||||
|
**Note** `Min-self-delegation` is a strictly positive integer that represents the minimum amount of self-delegated voting power your validator must always have. A `min-self-delegation` of `1000000` means your validator will never have a self-delegation lower than `1 axrp`.
|
||||||
|
|
||||||
|
You can confirm that you are in the validator set by using a third-party explorer.
|
||||||
|
|
||||||
|
## Edit Validator Description
|
||||||
|
|
||||||
|
You can edit your validator's public description. This info is to identify your validator, and is relied on by delegators when they decide to stake XRP tokens to a particular validator. Make sure to provide input for every flag below. If a flag is not included in the command, the field defaults to empty (`--moniker` defaults to the machine name), if the field has never been set, or remains the same, if it has been set in the past.
|
||||||
|
|
||||||
|
The <key_name> specifies which validator you are editing. If you choose to not include certain flags, remember that the --from flag must be included to identify the validator to update.
|
||||||
|
|
||||||
|
The `--identity` can be used as to verify identity with systems like Keybase or UPort. When using with Keybase `--identity` must be populated with a 16-digit string that is generated with a [keybase.io](https://keybase.io/) account. It is a cryptographically secure method of verifying your identity across multiple online networks. The Keybase API allows us to retrieve your Keybase avatar. This is how you can add a logo to your validator profile.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd tx staking edit-validator
|
||||||
|
--moniker="<your_custom_moniker>" \
|
||||||
|
--website="https://xrpl.org" \
|
||||||
|
--identity=6A0D65E29A4CBC8E \
|
||||||
|
--details="<your_validator_description>" \
|
||||||
|
--chain-id=<chain_id> \
|
||||||
|
--gas="auto" \
|
||||||
|
--gas-prices="0.025axrp" \
|
||||||
|
--from=<key_name> \
|
||||||
|
--commission-rate="0.10"
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that the `commission-rate` value must adhere to the following invariants:
|
||||||
|
|
||||||
|
* Must be between 0 and the validator's `commission-max-rate`
|
||||||
|
* Must not exceed the validator's `commission-max-change-rate` which is the maximum % point change rate **per day**. In other words, a validator can only change its commission once per day and within `commission-max-change-rate` bounds.
|
||||||
|
|
||||||
|
## View Validator Description
|
||||||
|
|
||||||
|
View the validator's information with this command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd query staking validator <account>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Track Validator Signing Information
|
||||||
|
|
||||||
|
To track a validator's signatures from past transactions use the `signing-info` command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd query slashing signing-info <validator-pubkey> --chain-id=<chain_id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Unjail Validator
|
||||||
|
|
||||||
|
When a validator is "jailed" for downtime, you must submit an `Unjail` transaction from the operator account in order to restore block proposer awards (depending on the zone fee distribution).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd tx slashing unjail --from=<key_name> --chain-id=<chain_id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Confirm Your Validator is Running
|
||||||
|
|
||||||
|
Your validator is active if the following command returns anything:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd query tendermint-validator-set | grep "$(exrpd tendermint show-address)"
|
||||||
|
```
|
||||||
|
|
||||||
|
You should now see your validator in one of the Exrp explorers. You are looking for the `bech32` encoded `address` in the `~/.exprd/config/priv_validator.json` file.
|
||||||
|
|
||||||
|
**Note** To be in the validator set, you must have more total voting power than the 100th validator.
|
||||||
|
|
||||||
|
## Halting Your Validator
|
||||||
|
|
||||||
|
When attempting to perform routine maintenance or planning for an upcoming coordinated upgrade, it can be useful to have your validator systematically and gracefully halt. Set the `halt-height` to the height at which you want your node to shut down, or pass the `--halt-height` flag to `exrpd`. The node shuts down with a 0 exit code at that given height after committing the block.
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
---
|
||||||
|
html: evm-sidechain-validator-security.html
|
||||||
|
parent: join-evm-sidechain-devnet.html
|
||||||
|
blurb: Learn how to join the XRP Ledger EVM Sidechain Devnet.
|
||||||
|
labels:
|
||||||
|
- Development, Interoperability
|
||||||
|
status: not_enabled
|
||||||
|
---
|
||||||
|
# EVM Sidechain Validator Security
|
||||||
|
|
||||||
|
Each validator candidate is encouraged to run its operations independently, as diverse setups increase the resilience of the network. Validator candidates should commence their setup phase now, in order to be on time for launch.
|
||||||
|
|
||||||
|
## Horcrux
|
||||||
|
|
||||||
|
Horcrux is a [multi-party-computation (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) signing service for Tendermint nodes.
|
||||||
|
|
||||||
|
- Composed of a cluster of signer nodes in place of the [remote signer](https://docs.tendermint.com/master/nodes/remote-signer.html), thereby enabling High Availability (HA) for block signing through fault tolerance.
|
||||||
|
- Secures your validator private key by splitting it across multiple private signer nodes using threshold Ed25519 signatures.
|
||||||
|
- Adds security and availability without sacrificing block sign performance.
|
||||||
|
|
||||||
|
For information on how to upgrade your validator infrastructure with Horcrux, refer to the [documentation](https://github.com/strangelove-ventures/horcrux/blob/main/docs/migrating.md).
|
||||||
|
|
||||||
|
## Tendermint KMS
|
||||||
|
|
||||||
|
Tendermint KMS is a signature service with support for Hardware Security Modules (HSMs), such as YubiHSM2 and Ledger Nano. It is intended to be run alongside XRP Ledger EVM Sidechain validators, ideally on separate physical hosts, providing defense-in-depth for online validator signing keys, double signing protection, and a central signing service that can be used when operating multiple validators in several zones.
|
||||||
|
|
||||||
|
## Hardware Security Modules (HSM)
|
||||||
|
|
||||||
|
You must ensure that an attacker cannot steal a validator's key. Otherwise, the entire stake delegated to the compromised validator at risk. Hardware security modules (HSM) help mitigate this risk.
|
||||||
|
|
||||||
|
HSMs must support `ed25519` signatures for Evmos. The [YubiHSM 2](https://www.yubico.com/products/hardware-security-module/) supports `ed25519` and can be used with this YubiKey [library](https://github.com/iqlusioninc/yubihsm.rs).
|
||||||
|
|
||||||
|
**IMPORTANT**: The YubiHSM can protect a private key but **cannot ensure** in a secure setting that it will not sign the same block twice.
|
||||||
|
|
||||||
|
## Sentry Nodes (DDOS Protection)
|
||||||
|
|
||||||
|
Validators are responsible for ensuring that the network can sustain denial of service attacks.
|
||||||
|
|
||||||
|
One recommended way to mitigate these risks is for validators to carefully structure their network topology in a sentry node architecture.
|
||||||
|
|
||||||
|
Validator nodes should only connect to full-nodes they trust; either they operate these nodes themselves, or the nodes are run by other validator administrators they know personally. A validator node typically runs in a data center. Most data centers provide direct links to the networks of major cloud providers. The validator can use those links to connect to sentry nodes in the cloud. This shifts the burden of denial-of-service from the validator's node directly to its sentry nodes, and might require new sentry nodes be spun up or activated to mitigate attacks on existing ones.
|
||||||
|
|
||||||
|
Sentry nodes can be quickly spun up or change their IP addresses. Because the links to the sentry nodes are in private IP space, an internet-based attacked cannot disturb them directly. This ensures that the validator's block proposals and votes always make it to the rest of the network.
|
||||||
|
|
||||||
|
To setup your sentry node architecture:
|
||||||
|
|
||||||
|
1. Edit your validator node's `config.toml` file:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
#Comma separated list of nodes to keep persistent connections to
|
||||||
|
#Do not add private peers to this list if you don't want them advertised
|
||||||
|
persistent_peers =[list of sentry nodes]
|
||||||
|
|
||||||
|
# Set true to enable the peer-exchange reactor
|
||||||
|
pex = false
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Edit your sentry node's `config.toml` file:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
#Comma separated list of peer IDs to keep private (will not be gossiped to other peers)
|
||||||
|
#Example ID: 3e16af0cead27979e1fc3dac57d03df3c7a77acc@3.87.179.235:26656
|
||||||
|
|
||||||
|
private_peer_ids = "node_ids_of_private_peers"
|
||||||
|
```
|
||||||
116
content/tutorials/interoperability/get-started-evm-sidechain.md
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
---
|
||||||
|
html: get-started-evm-sidechain.html
|
||||||
|
parent: evm-sidechains.html
|
||||||
|
blurb: Get started with the EVM compatible sidechain for the XRP Ledger.
|
||||||
|
labels:
|
||||||
|
- Development, Interoperability
|
||||||
|
status: not_enabled
|
||||||
|
---
|
||||||
|
# Get Started with the EVM Sidechain
|
||||||
|
|
||||||
|
This getting started tutorial walks you through the steps to set up your account and transfer funds using the EVM sidechain bridge.
|
||||||
|
|
||||||
|
## 1. Create an Account Using an EVM Compatible Wallet
|
||||||
|
|
||||||
|
In order to interact with the network, you need to create an account in the EVM sidechain. To create and manage this account you can use any EVM compatible wallet such as MetaMask.
|
||||||
|
|
||||||
|
For instructions on how to install and create an account using MetaMask, then send and receive tokens, see [Connect MetaMask to XRP Ledger EVM Sidechain](connect-metamask-to-xrpl-evm-sidechain.html).
|
||||||
|
|
||||||
|
## 2. Move XRP Ledger Devnet Tokens to the EVM Sidechain
|
||||||
|
|
||||||
|
Before you can start interacting with the EVM blockchain, you need to transfer some tokens from the XRP Ledger Devnet to the EVM sidechain.
|
||||||
|
|
||||||
|
To obtain tokens in the XRP Ledger Devnet, go to the [XRP Faucets](xrp-testnet-faucet.html) page and click *Generate Devnet credentials* to generate a new Devnet account with some test XRP in it.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Note the address and secret associated with your Devnet address. You need this information to set up your preferred XRP Ledger wallet.
|
||||||
|
|
||||||
|
## 3. Transfer Funds Using the EVM Sidechain Bridge
|
||||||
|
|
||||||
|
Once you have your accounts set up and test fund allocated, you can use the EVM Sidechain bridge to move the test XRP tokens to the EVM Sidechain.
|
||||||
|
|
||||||
|
The EVM Sidechain bridge is a tool that allows you to transfer funds between chains in a fast and secure way.
|
||||||
|
|
||||||
|
To start using the bridge, go to [https://bridge.devnet.xrpl.org](https://bridge.devnet.xrpl.org/)
|
||||||
|
|
||||||
|
### 1. Connect Both Wallets
|
||||||
|
|
||||||
|
**Connect Xumm Wallet**
|
||||||
|
|
||||||
|
Use your Xumm wallet to interact with the XRP Ledger Devnet chain.
|
||||||
|
Ensure that you have created an account on the public XRP Ledger Devnet as described in Step 1.
|
||||||
|
|
||||||
|
To connect a Xumm wallet to the bridge, go to the [EVM Sidechain bridge](https://bridge.devnet.xrpl.org) and click “Connect with Xumm Wallet”.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
**Note:** Ensure that you are connected to XRP Ledger Devnet and that the application that you are connecting with is the correct one.
|
||||||
|
|
||||||
|
Follow the instructions on screen to scan the QR code using the Xumm app. The Xumm wallet app displays a confirmation page.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
**Connect MetaMask Wallet**
|
||||||
|
|
||||||
|
Use your MetaMask wallet to interact with the XRP Ledger EVM Sidechain.
|
||||||
|
Ensure that you have created a MetaMask account and connected to the public XRP Ledger Devnet as described in [Connect MetaMask to XRP Ledger EVM Sidechain](connect-metamask-to-xrpl-evm-sidechain.html).
|
||||||
|
|
||||||
|
To connect a MetaMask wallet to the bridge, go to the [EVM Sidechain bridge](https://bridge.devnet.xrpl.org) and click “Connect with Metamask Wallet”.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 2. Initiate the Transfer of Funds
|
||||||
|
|
||||||
|
Now that both Xumm and MetaMask wallets are connected to the bridge, you can select the direction of the bridge, the amount to send, and the destination address.
|
||||||
|
|
||||||
|
- **Direction of the bridge**: This is the direction of transfer; it can be either EVM sidechain → XRP Ledger Devnet or XRP Ledger Devnet → EVM sidechain. Use the “Switch Network” button to switch the direction of transfer.
|
||||||
|
- **Amount to send**: This is the amount that you want to transfer to the other side. Note that there is a fee to use the bridge.
|
||||||
|
- Network fees: The fees required by the network for your transactions.
|
||||||
|
- Commission: The bridge applies a commission for every transaction completed. This is to prevent spam and distributed denial of service attacks (DDOS).
|
||||||
|
- **Destination address**: The address on the destination chain where you want to receive funds.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Enter the details for your transaction and click **Transfer**. Review the details of the transaction carefully before accepting the transaction in the corresponding wallet.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Depending on the direction of the transfer, you need to approve the transaction in the Xumm Wallet or in the Metamask.
|
||||||
|
|
||||||
|
**XRP Ledger Devnet → EVM sidechain**
|
||||||
|
|
||||||
|
For this direction you must approve the transaction in your Xumm Wallet. Before doing so, please check that the details are correct:
|
||||||
|
|
||||||
|
- Destination address has to be: `radjmEZTb4zsyNUJGV4gcVPXrFTJAuskKa`
|
||||||
|
- Memo has to be the same address that you entered in the destination field
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
**EVM sidechain → XRP Ledger Devnet**
|
||||||
|
|
||||||
|
If this is the case, then you must approve the transaction in your Metamask. Before doing so, please check the details are correct:
|
||||||
|
|
||||||
|
- Destination address has to be: `0x8cDE56336E289c028C8f7CF5c20283fF02272182`
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
Once you approve the transaction either in Xumm wallet or in Metamask, a loading screen displays. This process can take up to a few minutes.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 3. Receive the Funds
|
||||||
|
|
||||||
|
Following a few minutes of transaction processing time, you are redirected to the **Transaction Confirmation** screen where you can verify the details of the bridge transaction.
|
||||||
|
|
||||||
|
- **Origin transaction hash**: Hash of the transaction in the origin chain.
|
||||||
|
- **Destination transaction hash**: Hash of the transaction in the destination chain.
|
||||||
|
- **From address**: Origin address of the transfer.
|
||||||
|
- **To address**: Destination address of the transfer.
|
||||||
|
- **Receive**: The amount received in the destination address.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Your test XRP tokens have been successfully transferred and are now available in the other chain.
|
||||||
119
content/tutorials/interoperability/join-evm-sidechain-devnet.md
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
---
|
||||||
|
html: join-evm-sidechain-devnet.html
|
||||||
|
parent: evm-sidechains.html
|
||||||
|
blurb: Learn how to join the XRP Ledger EVM Sidechain Devnet.
|
||||||
|
labels:
|
||||||
|
- Development, Interoperability
|
||||||
|
status: not_enabled
|
||||||
|
---
|
||||||
|
# Join the XRP Ledger EVM Sidechain Devnet
|
||||||
|
|
||||||
|
This tutorial walks you through the steps to join the existing **XRP Ledger EVM Sidechain Devnet**.
|
||||||
|
|
||||||
|
For ease of use, create an alias, `exprd`, to run all commands inside your Docker container.
|
||||||
|
|
||||||
|
## Pre-requisites
|
||||||
|
|
||||||
|
Before proceeding to initialize the node, ensure that the following pre-requisites are installed and running:
|
||||||
|
|
||||||
|
* Docker 19+
|
||||||
|
* Create an alias to run all commands in this tutorial inside a Docker container:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
alias exrpd="docker run -it --rm -v ~/.exrpd:/root/.exrpd peersyst/xrp-evm-client:latest exrpd"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Initialize Node
|
||||||
|
|
||||||
|
The first task is to initialize the node, which creates the necessary validator and node configuration files.
|
||||||
|
|
||||||
|
1. Initialize the chain parameters using the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd config chain-id exrp_1440001-1
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Create or add a key to your node. For this tutorial, we use the `test` keyring:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd keys add <key_name> --keyring-backend test
|
||||||
|
```
|
||||||
|
|
||||||
|
Note the `key_name` you enter as you need to reference it in subsequent steps.
|
||||||
|
|
||||||
|
**Note** For more information on a more secure setup for your validator, refer to [cosmos-sdk keys and keyrings](https://docs.cosmos.network/v0.46/run-node/keyring.html) and [validator security](evm-sidechain-validator-security.html).
|
||||||
|
|
||||||
|
|
||||||
|
3. Initialize the node using the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd init <your_custom_moniker> --chain-id exrp_1440001-1
|
||||||
|
```
|
||||||
|
|
||||||
|
Monikers can contain only ASCII characters. Using Unicode characters renders your node unreachable.
|
||||||
|
|
||||||
|
All these commands create your `~/.exrpd` (i.e `$HOME`) directory with subfolders `config/` and `data/`. In the `config` directory, the most important files for configuration are `app.toml` and `config.toml`.
|
||||||
|
|
||||||
|
## Genesis & Seeds
|
||||||
|
|
||||||
|
1. Copy the Genesis File.
|
||||||
|
|
||||||
|
Download the `genesis.json` file from here and copy it to the `config` directory: `~/.exrpd/config/genesis.json`. This is a genesis file with the chain-id and genesis accounts balances.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget [https://raw.githubusercontent.com/Peersyst/xrp-evm-archive/main/devnet/genesis.json](https://raw.githubusercontent.com/Peersyst/xrp-evm-archive/main/devnet/genesis.json) ~/.exrpd/config/
|
||||||
|
```
|
||||||
|
|
||||||
|
Verify the genesis configuration file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd validate-genesis
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Add Persistent Peer Nodes
|
||||||
|
|
||||||
|
Set the [`persistent_peer`](https://docs.tendermint.com/master/tendermint-core/using-tendermint.html#persistent-peer)s field in `~/.exrpd/config/config.toml` to specify peers with which your node maintains persistent connections. You can retrieve them from the list of available peers on the archive repo ([https://raw.githubusercontent.com/Peersyst/xrp-evm-archive/main/devnet/peers.txt](https://raw.githubusercontent.com/Peersyst/xrp-evm-archive/main/devnet/peers.txt)).
|
||||||
|
|
||||||
|
To get a list of entries from the `peers.txt` file in the `PEERS` variable, run the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PEERS=`curl -sL https://raw.githubusercontent.com/Peersyst/xrp-evm-archive/main/devnet/peers.txt | sort -R | head -n 10 | awk '{print $1}' | paste -s -d, -`
|
||||||
|
```
|
||||||
|
|
||||||
|
Use `sed` to include them in the configuration. You can also add them manually:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" ~/.exrpd/config/config.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run a Devnet Validator Node
|
||||||
|
|
||||||
|
Run the Devnet validator node using following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd tx staking create-validator \
|
||||||
|
--amount=1000000000000axrp \
|
||||||
|
--pubkey=$(exrpd tendermint show-validator) \
|
||||||
|
--moniker="<your_custom_moniker>" \
|
||||||
|
--chain-id=<chain_id> \
|
||||||
|
--commission-rate="0.05" \
|
||||||
|
--commission-max-rate="0.20" \
|
||||||
|
--commission-max-change-rate="0.01" \
|
||||||
|
--min-self-delegation="1000000" \
|
||||||
|
--gas="auto" \
|
||||||
|
--gas-prices="0.025axrp" \
|
||||||
|
--from=<key_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note** For more information on running a validator note, see [Run a validator](evm-sidechain-run-a-validator-node.html)
|
||||||
|
|
||||||
|
|
||||||
|
## Start the Node
|
||||||
|
|
||||||
|
Start the node.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
exrpd start
|
||||||
|
```
|
||||||
|
|
||||||
|
Once enough voting power (+2/3) from the genesis validators is up-and-running, the node starts producing blocks.
|
||||||
@@ -1060,6 +1060,22 @@ pages:
|
|||||||
- en
|
- en
|
||||||
- ja
|
- ja
|
||||||
|
|
||||||
|
- md: concepts/interoperability/xrpl-interoperability.md
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
|
||||||
|
- md: concepts/interoperability/intro-to-evm-sidechain.md
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
|
||||||
|
- name: Hooks
|
||||||
|
html: https://xrpl-hooks.readme.io/
|
||||||
|
parent: xrpl-interoperability.html
|
||||||
|
blurb: Smart contract proposal for the XRP Ledger.
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
|
||||||
|
|
||||||
# Redirect old "the-rippled-server.html"
|
# Redirect old "the-rippled-server.html"
|
||||||
- name: The rippled Server
|
- name: The rippled Server
|
||||||
html: the-rippled-server.html
|
html: the-rippled-server.html
|
||||||
@@ -2071,6 +2087,34 @@ pages:
|
|||||||
- en
|
- en
|
||||||
- ja
|
- ja
|
||||||
|
|
||||||
|
- name: Interoperability - EVM Sidechain
|
||||||
|
html: evm-sidechains.html
|
||||||
|
parent: tutorials.html
|
||||||
|
blurb: Learn how to interact with the EVM Sidechain Devnet.
|
||||||
|
template: pagetype-category.html.jinja
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
- ja
|
||||||
|
|
||||||
|
- md: tutorials/interoperability/get-started-evm-sidechain.md
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
|
||||||
|
- md: tutorials/interoperability/connect-metamask-to-xrpl-evm-sidechain.md
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
|
||||||
|
- md: tutorials/interoperability/join-evm-sidechain-devnet.md
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
|
||||||
|
- md: tutorials/interoperability/evm-sidechain-validator-security.md
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
|
||||||
|
- md: tutorials/interoperability/evm-sidechain-run-a-validator-node.md
|
||||||
|
targets:
|
||||||
|
- en
|
||||||
|
|
||||||
# References -------------------------------------------------------------------
|
# References -------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
BIN
img/evm-sidechain-add-metamask-network.png
Normal file
|
After Width: | Height: | Size: 290 KiB |
BIN
img/evm-sidechain-approve-transaction.png
Normal file
|
After Width: | Height: | Size: 314 KiB |
BIN
img/evm-sidechain-bridge-sign-in.jpg
Normal file
|
After Width: | Height: | Size: 73 KiB |
BIN
img/evm-sidechain-connect-metamask.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
img/evm-sidechain-connect-wallet.png
Normal file
|
After Width: | Height: | Size: 351 KiB |
BIN
img/evm-sidechain-connect-xumm-wallet.png
Normal file
|
After Width: | Height: | Size: 311 KiB |
BIN
img/evm-sidechain-create-metamask-account.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
img/evm-sidechain-initiate-transfer.png
Normal file
|
After Width: | Height: | Size: 338 KiB |
BIN
img/evm-sidechain-metamask-confirmation.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
img/evm-sidechain-review-transaction.jpg
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
img/evm-sidechain-transaction-confirmation.png
Normal file
|
After Width: | Height: | Size: 360 KiB |
BIN
img/evm-sidechain-transfer-in-progress.png
Normal file
|
After Width: | Height: | Size: 316 KiB |
BIN
img/evm-sidechain-xrpl-devnet-faucet.png
Normal file
|
After Width: | Height: | Size: 116 KiB |