### Install and Initialize Squid Widget
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/advanced-guides/cross-chain-transactions/swap-with-squid-widget.md
This snippet demonstrates the complete setup process for the Squid Widget, including loading the script, defining the DOM container, and initializing the widget with specific chain and token configurations.
```html
```
```html
```
```javascript
SquidWidget.init({
target: '#squid-widget',
config: {
integratorId: 'your-app-id',
toChainId: 'XRPL_EVM_CHAIN_ID',
toToken: 'XRP_CONTRACT_ADDRESS_ON_EVM',
fromTokenList: ['ETH', 'USDC', 'MATIC'],
enableRouterPriority: true,
appearance: 'auto'
}
});
```
--------------------------------
### Cosmovisor: Install Go and Cosmovisor
Source: https://docs.xrplevm.org/pages/operators/guides/upgrading-your-node.md
Installs Go and then uses `go install` to install the latest version of Cosmovisor. It also verifies the installation by checking the help output.
```bash
sudo apt-get update
sudo apt-get install -y golang-go
sudo env GOBIN=/usr/local/bin go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
/usr/local/bin/cosmovisor --help >/dev/null
```
--------------------------------
### Install Genesis Binary
Source: https://docs.xrplevm.org/pages/operators/getting-started/sync-from-genesis.md
Downloads and installs the initial binary version required to begin syncing from genesis.
```bash
cd /tmp
wget https://github.com/xrplevm/node/releases/download/v7.0.0/node_7.0.0_Linux_amd64.tar.gz
tar -xzf node_7.0.0_Linux_amd64.tar.gz
sudo mv bin/exrpd /usr/local/bin/exrpd
sudo chmod +x /usr/local/bin/exrpd
exrpd version
```
--------------------------------
### Install and Initialize Foundry
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/deploy-the-smart-contract.md
Commands to install the Foundry toolchain and initialize a new project structure.
```bash
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge init my-foundry-project
cd my-foundry-project
```
--------------------------------
### Install Prerequisites for exrpd Node
Source: https://docs.xrplevm.org/pages/operators/getting-started/installing-the-node.md
Installs essential tools required for building and running the exrpd node, including curl, wget, jq, lz4, build-essential, git, and rsync. This step is crucial before proceeding with node installation.
```bash
sudo apt-get update
sudo apt-get install -y curl wget jq lz4 build-essential git rsync
```
--------------------------------
### Install Viem for XRPL EVM Development
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/advanced-guides/resolve-xrpl-domains.md
This command installs the Viem library, a lightweight, modular, and type-safe web3 client for Ethereum, which is essential for interacting with the XRPL EVM.
```bash
npm install viem
```
--------------------------------
### Install Dependencies
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/advanced-guides/reown-dapp-example.md
Installs the specific versions of Reown AppKit, Wagmi, and TanStack Query required for stable integration with XRPL EVM networks.
```bash
npm install @reown/appkit@1.7.6 @reown/appkit-adapter-wagmi@1.7.6 @tanstack/react-query@5.81.5 wagmi@2.15.4 viem@2.30.0
```
--------------------------------
### Run Development Server
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/advanced-guides/reown-dapp-example.md
Command to start the local development environment for the dApp.
```bash
npm run dev
```
--------------------------------
### Install web3.js Dependency
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/interact-with-the-smart-contract.md
Installs the web3.js library via npm to enable programmatic interaction with EVM-compatible smart contracts.
```bash
npm install web3
```
--------------------------------
### Solidity Smart Contract Example (Remix IDE)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/deploy-the-smart-contract.md
An example of a simple Solidity smart contract for a 'HelloWorld' application. This contract includes a constructor to set an initial message and a function to update the message. It is designed to be compiled and deployed using Remix IDE.
```solidity
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
contract HelloWorld {
string public message;
constructor(string memory _message) {
message = _message;
}
function setMessage(string memory _message) public {
message = _message;
}
}
```
--------------------------------
### Start and Monitor XRPL EVM Node
Source: https://docs.xrplevm.org/pages/operators/guides/upgrading-your-node.md
Commands to start the exrpd service and monitor its logs using journalctl. This is a fundamental step for operating the node.
```bash
sudo systemctl start exrpd
sudo journalctl -u exrpd -f
```
--------------------------------
### Initialize Hardhat Project (Bash)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/deploy-the-smart-contract.md
Commands to set up a new Hardhat project for smart contract development. This includes creating a project directory, initializing npm, installing Hardhat as a development dependency, and creating a basic Hardhat project structure.
```bash
mkdir my-hardhat-project
cd my-hardhat-project
npm init -y
npm install --save-dev hardhat
npx hardhat
```
--------------------------------
### Query Governance Proposals (Testnet)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-cosmos/using-the-api.md
This example demonstrates how to query governance proposals on the XRPL EVM testnet using the CometBFT RPC interface.
```APIDOC
## GET /abci_query
### Description
Queries the ABCI application for a specific path.
### Method
GET
### Endpoint
`/abci_query`
### Query Parameters
- **path** (string) - Required - The query path, e.g., \"/cosmos.gov.v1.Query/Proposals\"
### Request Example
```bash
curl -X GET 'http://cosmos.testnet.xrplevm.org:26657/abci_query?path="/cosmos.gov.v1.Query/Proposals"' -H "accept: application/json"
```
### Response
#### Success Response (200)
- **jsonrpc** (string) - The JSON-RPC version.
- **id** (integer) - The ID of the request.
- **result** (object) - The result of the query.
- **response** (object) - The ABCI query response.
- **code** (integer) - The response code.
- **log** (string) - The log message.
- **info** (string) - Additional information.
- **index** (string) - The index of the result.
- **key** (string) - The key of the result.
- **value** (string) - The value of the result.
- **proofOps** (object) - Proof operations for verification.
- **height** (string) - The block height at which the query was made.
- **codespace** (string) - The codespace for the response.
#### Response Example
```json
{
"jsonrpc": "2.0",
"id": -1,
"result": {
"response": {
"code": 0,
"log": "",
"info": "",
"index": "0",
"key": null,
"value": "CqwCCAEShgEKKC9...dsZXR5am12cAESAhAx",
"proofOps": null,
"height": "13713161",
"codespace": ""
}
}
}
```
```
--------------------------------
### Install Reown AppKit Dependencies
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/next-steps.md
Installs the necessary packages for Reown AppKit, Wagmi, and TanStack Query to enable wallet connectivity and blockchain interactions in a React/Next.js project.
```bash
npm install @reown/appkit @reown/appkit-adapter-wagmi wagmi viem @tanstack/react-query
yarn add @reown/appkit @reown/appkit-adapter-wagmi wagmi viem @tanstack/react-query
```
--------------------------------
### Basic XRPL EVM Client Setup with Viem (TypeScript)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/advanced-guides/resolve-xrpl-domains.md
Sets up a basic Viem client to interact with the XRPL EVM. It defines the chain configuration for XRPL EVM and the ZNS Registry address, preparing for smart contract interactions.
```typescript
import { createPublicClient, http, getAddress } from 'viem';
// Define XRPL EVM chain config
const XRPL_EVM = {
id: 1440000,
name: 'XRPL EVM Sidechain',
nativeCurrency: { name: 'XRP', symbol: 'XRP', decimals: 18 },
rpcUrls: {
default: { http: ['https://rpc.xrplevm.org'] },
},
};
// ZNS Registry address (verified on mainnet)
export const ZNS_REGISTRY = '0xf180136DdC9e4F8c9b5A9FE59e2b1f07265C5D4D';
// Create a public client for read operations
export const publicClient = createPublicClient({
chain: XRPL_EVM,
transport: http(XRPL_EVM.rpcUrls.default.http[0]),
});
```
--------------------------------
### Upgrade exrpd from Source
Source: https://docs.xrplevm.org/pages/operators/guides/upgrading-your-node.md
Clones the XRPL EVM node repository, checks out a specific tag, builds the exrpd binary from source, and installs it. This is for users who build their own binaries.
```bash
cd /tmp
rm -rf node
git clone https://github.com/xrplevm/node.git
cd node
git checkout
make build
sudo mv build/exrpd /usr/local/bin/exrpd
sudo chmod +x /usr/local/bin/exrpd
exrpd version
```
--------------------------------
### Check exrpd Version
Source: https://docs.xrplevm.org/pages/operators/guides/interacting-with-the-node-cli.md
Displays the installed version of the exrpd binary to ensure compatibility.
```bash
exrpd version
```
--------------------------------
### Build exrpd from Source
Source: https://docs.xrplevm.org/pages/operators/getting-started/installing-the-node.md
Compiles the exrpd node from its source code. This process involves cloning the repository, ensuring the correct Go version is installed, and then running the make build command.
```bash
sudo apt-get update
sudo apt-get install -y golang-go
git clone https://github.com/xrplevm/node.git
cd node
make build
sudo mv build/exrpd /usr/local/bin/exrpd
sudo chmod +x /usr/local/bin/exrpd
exrpd version
```
--------------------------------
### Initialize a New Subgraph with Goldsky CLI Wizard
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/use-goldsky-indexer/setup-indexer.md
Launches the interactive CLI wizard to guide the user through the process of initializing a new subgraph. This includes setting names, versions, contract details, and other configurations.
```bash
goldsky subgraph init
```
--------------------------------
### Deploy XRPL EVM Node with Docker
Source: https://docs.xrplevm.org/pages/operators/getting-started/installing-the-node.md
Starts an XRPL EVM node container with persistent volume mapping and port forwarding. Requires the TARGET_TAG environment variable to be set.
```bash
docker run -d \
--name xrplevm-node \
--restart unless-stopped \
-p 26657:26657 \
-v /root/.exrpd:/root/.exrpd \
--entrypoint exrpd \
peersyst/exrp:${TARGET_TAG} \
start
```
--------------------------------
### Install ethers.js Dependency
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/interact-with-the-smart-contract.md
Install the ethers.js library via npm to enable interaction with EVM-compatible blockchains.
```bash
npm install ethers
```
--------------------------------
### Install Skip Widget Dependency
Source: https://docs.xrplevm.org/pages/developers/interacting-with-cosmos/advanced-guides/cross-chain-transactions/swap-with-skip-widget.md
Installs the required npm package for the Skip Router widget into your React project.
```bash
npm install @skip-router/widget-react
```
--------------------------------
### Upgrade via Cosmovisor
Source: https://docs.xrplevm.org/pages/operators/getting-started/sync-from-genesis.md
Instructions for placing the new binary in the correct directory structure for Cosmovisor to handle the upgrade.
```bash
chmod +x ~/.exrpd/cosmovisor/upgrades//bin/exrpd
sudo systemctl restart cosmovisor-exrpd
```
--------------------------------
### Load and Interact with Smart Contract using web3.js
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/interact-with-the-smart-contract.md
Demonstrates how to instantiate a contract object using an ABI and address, then perform read and write operations.
```javascript
const contractABI = [/* Your Contract ABI */];
const contractAddress = "0xYourContractAddress";
const contract = new web3.eth.Contract(contractABI, contractAddress);
// Reading a public variable
const result = await contract.methods.publicVariable().call();
console.log("Result:", result);
// Sending a transaction
const receipt = await contract.methods.setVariable("New Value").send({ from: "0xYourWalletAddress" });
console.log("Transaction Receipt:", receipt);
```
--------------------------------
### Sample Workflow for Contract Interaction with Cast
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/interact-with-the-smart-contract.md
Illustrates a complete workflow for interacting with a smart contract on the XRPL EVM using the 'cast' CLI. This includes reading initial data, updating a message, waiting for transaction confirmation, and decoding logs.
```bash
source .env
# 1) Read initial message on Mainnet
cast call --rpc-url $RPC_URL_MAINNET \
--to $CONTRACT_ADDRESS "message()(string)"
# 2) Update message on Mainnet
cast send --rpc-url $RPC_URL_MAINNET \
--private-key $PRIVATE_KEY \
--chain-id $CHAIN_ID_MAINNET \
--to $CONTRACT_ADDRESS \
"setMessage(string)" "Deployed via Foundry"
# 3) Wait & fetch receipt
TX=$(cast send --rpc-url $RPC_URL_MAINNET \
--private-key $PRIVATE_KEY \
--chain-id $CHAIN_ID_MAINNET \
--to $CONTRACT_ADDRESS \
--wait \
"setMessage(string)" "Confirmed!")
cast receipt --rpc-url $RPC_URL_MAINNET $TX
# 4) Decode any logs (if emitted)
cast parse-logs --abi $ABI_PATH receipts.json
```
--------------------------------
### Install Dotenv for Hardhat (Bash)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/deploy-the-smart-contract.md
Installs the 'dotenv' npm package, which is commonly used in Hardhat projects to manage environment variables such as RPC URLs and private keys for network configurations.
```bash
npm install dotenv
```
--------------------------------
### Manage Wallets via CLI
Source: https://docs.xrplevm.org/pages/operators/guides/interacting-with-the-node-cli.md
Commands for creating, restoring, listing, and deleting wallets within the exrpd keyring.
```bash
exrpd keys add $WALLET
exrpd keys add $WALLET --recover
exrpd keys list
exrpd keys delete $WALLET
exrpd query bank balances $WALLET_ADDRESS
exrpd keys export $WALLET > wallet.backup
exrpd keys unsafe-export-eth-key $WALLET
exrpd keys import $WALLET wallet.backup
```
--------------------------------
### Cosmovisor: Place and Copy Upgrade Binary
Source: https://docs.xrplevm.org/pages/operators/guides/upgrading-your-node.md
This snippet shows how to place a new binary for an on-chain upgrade into the correct Cosmovisor upgrade folder and set execute permissions. It assumes the upgrade name is known or derived from upgrade-info.json.
```bash
DAEMON_HOME=${DAEMON_HOME:-~/.exrpd}
mkdir -p "$DAEMON_HOME"/cosmovisor/upgrades//bin
cp /usr/local/bin/exrpd "$DAEMON_HOME"/cosmovisor/upgrades//bin/exrpd
chmod +x "$DAEMON_HOME"/cosmovisor/upgrades//bin/exrpd
```
--------------------------------
### Initialize Mainnet Node Configuration
Source: https://docs.xrplevm.org/pages/operators/getting-started/installing-the-node.md
Configures and initializes a Mainnet node for exrpd. This includes setting the client chain ID, initializing the node with a moniker, downloading the Mainnet genesis file, and configuring peer connections.
```bash
exrpd config set client chain-id xrplevm_1440000-1
exrpd init --chain-id xrplevm_1440000-1
wget -O ~/.exrpd/config/genesis.json https://raw.githubusercontent.com/xrplevm/networks/refs/heads/main/mainnet/genesis.json
PEERS=$(curl -sL https://raw.githubusercontent.com/xrplevm/networks/main/mainnet/peers.txt | sort -R | head -n 10 | paste -sd, -)
sed -i.bak -e "s/^seeds *=.*/seeds = \"${PEERS}\"" ~/.exrpd/config/config.toml
```
--------------------------------
### CometBFT RPC Response Structure
Source: https://docs.xrplevm.org/pages/developers/interacting-with-cosmos/using-the-api.md
An example of the JSON response returned by the CometBFT RPC interface, containing the query result and metadata.
```json
{
"jsonrpc": "2.0",
"id": -1,
"result": {
"response": {
"code": 0,
"log": "",
"info": "",
"index": "0",
"key": null,
"value": "CqwCCAEShgEKKC9...dsZXR5am12cAESAhAx",
"proofOps": null,
"height": "13713161",
"codespace": ""
}
}
}
```
--------------------------------
### Upgrade via Docker
Source: https://docs.xrplevm.org/pages/operators/getting-started/sync-from-genesis.md
Commands to pull a new Docker image, remove the existing container, and start a new one with the updated version.
```bash
docker pull peersyst/exrp:
docker stop xrplevm-node && docker rm xrplevm-node
sed -i.bak -E 's#^laddr = "tcp://127.0.0.1:26657"#laddr = "tcp://0.0.0.0:26657"#' ~/.exrpd/config/config.toml
docker run -d --name xrplevm-node --restart unless-stopped \
-p 26657:26657 \
-v /root/.exrpd:/root/.exrpd --entrypoint exrpd peersyst/exrp: start
```
--------------------------------
### Connect to XRPL EVM using web3.js
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/interact-with-the-smart-contract.md
Initializes a web3 instance connected to either the XRPL EVM Mainnet or Testnet RPC endpoints.
```javascript
const Web3 = require("web3");
// XRPL EVM RPC
const web3 = new Web3("https://rpc.xrplevm.org");
```
```javascript
const Web3 = require("web3");
// XRPL EVM Testnet RPC
const web3 = new Web3("https://rpc.testnet.xrplevm.org");
```
--------------------------------
### Initialize Next.js Project
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/advanced-guides/reown-dapp-example.md
Commands to scaffold a new Next.js project with TypeScript and Tailwind CSS support. This sets the foundation for the dApp development environment.
```bash
npx create-next-app@latest my-xrpl-dapp --typescript --tailwind --app
cd my-xrpl-dapp
```
--------------------------------
### REST API (Testnet)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-cosmos/using-the-api.md
Interact with the Cosmos SDK node using the REST API on Testnet. This example shows how to query for governance proposals.
```APIDOC
## GET /cosmos/gov/v1/proposals (REST Testnet)
### Description
Queries the REST API for governance proposals on Testnet.
### Method
GET
### Endpoint
http://cosmos.testnet.xrplevm.org:1317/cosmos/gov/v1/proposals
### Parameters
None
### Request Example
```bash
curl -X GET "http://cosmos.testnet.xrplevm.org:1317/cosmos/gov/v1/proposals" -H "accept: application/json"
```
### Response
#### Success Response (200)
- **proposals** (array) - List of governance proposals.
- **pagination** (object) - Pagination details.
#### Response Example
```json
{
"proposals": [
{
"id": "49",
"messages": [
{
"@type": "/ethermint.evm.v1.MsgUpdateParams",
"...": "..."
}
],
"status": "PROPOSAL_STATUS_PASSED",
"...": "..."
}
],
"pagination": {
"next_key": null,
"total": "49"
}
}
```
```
--------------------------------
### Initialize Testnet Node Configuration
Source: https://docs.xrplevm.org/pages/operators/getting-started/installing-the-node.md
Configures and initializes a Testnet node for exrpd. This involves setting the client chain ID, initializing the node with a moniker, downloading the Testnet genesis file, and configuring peer connections.
```bash
exrpd config set client chain-id xrplevm_1449000-1
exrpd init --chain-id xrplevm_1449000-1
wget -O ~/.exrpd/config/genesis.json https://raw.githubusercontent.com/xrplevm/networks/refs/heads/main/testnet/genesis.json
PEERS=$(curl -sL https://raw.githubusercontent.com/xrplevm/networks/main/testnet/peers.txt | sort -R | head -n 10 | paste -sd, -)
sed -i.bak -e "s/^seeds *=.*/seeds = \"${PEERS}\"" ~/.exrpd/config/config.toml
```
--------------------------------
### Build and Test Commands
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/deploy-the-smart-contract.md
Standard CLI commands to compile the project and execute unit tests.
```bash
forge build
forge test
```
--------------------------------
### gRPC API (Testnet)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-cosmos/using-the-api.md
Interact with the Cosmos SDK node using the gRPC interface on Testnet. This example shows how to query for governance proposals.
```APIDOC
## GET /cosmos/gov/v1/Query/Proposals (gRPC Testnet)
### Description
Queries the gRPC server for governance proposals on Testnet.
### Method
GRPC
### Endpoint
cosmos.testnet.xrplevm.org:9090
### Parameters
None
### Request Example
```bash
grpcurl -plaintext cosmos.testnet.xrplevm.org:9090 cosmos.gov.v1.Query/Proposals
```
### Response
#### Success Response (200)
- **proposals** (array) - List of governance proposals.
- **pagination** (object) - Pagination details.
#### Response Example
```json
{
"proposals": [
{
"id": "49",
"messages": [
{
"@type": "/ethermint.evm.v1.MsgUpdateParams",
"...": "..."
}
],
"status": "PROPOSAL_STATUS_PASSED",
"...": "..."
}
],
"pagination": {
"total": "49"
}
}
```
```
--------------------------------
### REST API (Mainnet)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-cosmos/using-the-api.md
Interact with the Cosmos SDK node using the REST API on Mainnet. This example shows how to query for governance proposals.
```APIDOC
## GET /cosmos/gov/v1/proposals (REST Mainnet)
### Description
Queries the REST API for governance proposals on Mainnet.
### Method
GET
### Endpoint
http://cosmos.xrplevm.org:1317/cosmos/gov/v1/proposals
### Parameters
None
### Request Example
```bash
curl -X GET "http://cosmos.xrplevm.org:1317/cosmos/gov/v1/proposals" -H "accept: application/json"
```
### Response
#### Success Response (200)
- **proposals** (array) - List of governance proposals.
- **pagination** (object) - Pagination details.
#### Response Example
```json
{
"proposals": [
{
"id": "49",
"messages": [
{
"@type": "/ethermint.evm.v1.MsgUpdateParams",
"...": "..."
}
],
"status": "PROPOSAL_STATUS_PASSED",
"...": "..."
}
],
"pagination": {
"next_key": null,
"total": "49"
}
}
```
```
--------------------------------
### Development and Deployment Commands
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/next-steps.md
Provides essential npm commands for running the development server locally (`npm run dev`) and building the application for production (`npm run build`). It also mentions deployment options on platforms like Vercel and Netlify.
```bash
npm run dev # for localhost; browse http://localhost:3000
npm run build # production build
```
--------------------------------
### gRPC API (Mainnet)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-cosmos/using-the-api.md
Interact with the Cosmos SDK node using the gRPC interface on Mainnet. This example shows how to query for governance proposals.
```APIDOC
## GET /cosmos/gov/v1/Query/Proposals (gRPC Mainnet)
### Description
Queries the gRPC server for governance proposals on Mainnet.
### Method
GRPC
### Endpoint
cosmos.xrplevm.org:9090
### Parameters
None
### Request Example
```bash
grpcurl -plaintext cosmos.xrplevm.org:9090 cosmos.gov.v1.Query/Proposals
```
### Response
#### Success Response (200)
- **proposals** (array) - List of governance proposals.
- **pagination** (object) - Pagination details.
#### Response Example
```json
{
"proposals": [
{
"id": "49",
"messages": [
{
"@type": "/ethermint.evm.v1.MsgUpdateParams",
"...": "..."
}
],
"status": "PROPOSAL_STATUS_PASSED",
"...": "..."
}
],
"pagination": {
"total": "49"
}
}
```
```
--------------------------------
### Verify Smart Contract using Forge
Source: https://docs.xrplevm.org/pages/developers/interacting-with-evm/verify-the-smart-contract.md
Installs the required etherscan support and executes the verification command for a deployed contract on the XRPL EVM network.
```bash
forge install foundry-rs/forge-etherscan
forge verify-contract \
--chain-id $CHAIN_ID \
--constructor-args "Hello, XRPL EVM!" \
--etherscan-api-key any-string \
\
HelloWorld \
$RPC_URL
```
--------------------------------
### CometBFT RPC (Mainnet)
Source: https://docs.xrplevm.org/pages/developers/interacting-with-cosmos/using-the-api.md
Interact with the Cosmos SDK node using the CometBFT RPC interface on Mainnet. This example shows how to query for governance proposals.
```APIDOC
## GET /abci_query?path="/cosmos.gov.v1.Query/Proposals" (CometBFT RPC Mainnet)
### Description
Queries the CometBFT RPC interface for governance proposals on Mainnet.
### Method
GET
### Endpoint
http://cosmos.xrplevm.org:26657/abci_query
### Parameters
#### Query Parameters
- **path** (string) - Required - The RPC method to call, e.g., "/cosmos.gov.v1.Query/Proposals".
### Request Example
```bash
curl -X GET 'http://cosmos.xrplevm.org:26657/abci_query?path="/cosmos.gov.v1.Query/Proposals"' -H "accept: application/json"
```
### Response
#### Success Response (200)
- **jsonrpc** (string) - JSON-RPC version.
- **id** (integer) - Request ID.
- **result** (object) - The result of the query.
- **response** (object) - The ABCI query response.
- **code** (integer) - Response code.
- **log** (string) - Log message.
- **info** (string) - Additional info.
- **index** (string) - Index of the result.
- **key** (string) - Key of the result.
- **value** (string) - Value of the result.
- **proofOps** (string) - Proof operations.
- **height** (string) - Block height.
- **codespace** (string) - Codespace.
#### Response Example
```json
{
"jsonrpc": "2.0",
"id": -1,
"result": {
"response": {
"code": 0,
"log": "",
"info": "",
"index": "0",
"key": null,
"value": "CqwCCAEShgEKKC9...dsZXR5am12cAESAhAx",
"proofOps": null,
"height": "13713161",
"codespace": ""
}
}
}
```
```
--------------------------------
### Upgrade exrpd Binary (Raw)
Source: https://docs.xrplevm.org/pages/operators/guides/upgrading-your-node.md
Downloads, extracts, and installs a new exrpd binary from a release tarball. This method is for users who prefer direct binary management.
```bash
cd /tmp
TARGET_TAG=
wget "https://github.com/xrplevm/node/releases/download/${TARGET_TAG}/node_${TARGET_TAG#v}_Linux_amd64.tar.gz"
tar -xzf "node_${TARGET_TAG#v}_Linux_amd64.tar.gz"
sudo mv bin/exrpd /usr/local/bin/exrpd
sudo chmod +x /usr/local/bin/exrpd
exrpd version
```
--------------------------------
### Manage Node Service
Source: https://docs.xrplevm.org/pages/operators/getting-started/join-the-xrplevm.md
Provides commands to start and monitor the node process using systemd or Docker. These commands ensure the node runs as a background service.
```bash
sudo systemctl enable exrpd
sudo systemctl start exrpd
docker start xrplevm-node
journalctl -u exrpd -f
```
--------------------------------
### Initialize Devnet Node Configuration
Source: https://docs.xrplevm.org/pages/operators/getting-started/installing-the-node.md
Configures and initializes a Devnet node for exrpd. This includes setting the client chain ID, initializing the node with a moniker, downloading the Devnet genesis file, and configuring peer connections.
```bash
exrpd config set client chain-id xrplevm_1449900-1
exrpd init --chain-id xrplevm_1449900-1
wget -O ~/.exrpd/config/genesis.json https://raw.githubusercontent.com/xrplevm/networks/refs/heads/main/devnet/genesis.json
PEERS=$(curl -sL https://raw.githubusercontent.com/xrplevm/networks/main/devnet/peers.txt | sort -R | head -n 10 | paste -sd, -)
sed -i.bak -e "s/^seeds *=.*/seeds = \"${PEERS}\"" ~/.exrpd/config/config.toml
```