ClawChain RPC Client
name: clawchain
by bowen31337 · published 2026-03-22
$ claw add gh:bowen31337/bowen31337-clawchain---
name: clawchain
description: ClawChain RPC client for EvoClaw agents. Connects to Substrate-based blockchain, queries on-chain agent data, submits transactions, and enables agents to participate in on-chain governance and reputation tracking. Use when working with ClawChain L1 blockchain, agent DIDs, token economics, or agent reputation systems.
---
# ClawChain RPC Client
Connect EvoClaw agents to the ClawChain blockchain for on-chain reputation tracking, token economics, and governance participation.
Quick Start
use clawchain::ClawChainClient;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Connect to local node
let client = ClawChainClient::new("ws://127.0.0.1:9944").await?;
// Query agent reputation
let did = "did:claw:1a2b3c4d...";
let reputation = client.get_agent_reputation(did).await?;
println!("Reputation score: {}", reputation);
// Check token balance
let balance = client.get_token_balance(did).await?;
println!("CLAW tokens: {}", balance);
Ok(())
}Prerequisites
1. **ClawChain node running:**
```bash
clawchain-node --dev --rpc-external --ws-external
```
2. **Rust dependencies in Cargo.toml:**
```toml
[dependencies]
clawchain = { path = "/path/to/clawchain-skill" }
```
Architecture
┌─────────────────────────────────────────────────┐
│ EvoClaw Edge Agent │
├─────────────────────────────────────────────────┤
│ ┌────────────────────────────────────────┐ │
│ │ ClawChain Skill (this skill) │ │
│ │ └─ Substrate RPC client │ │
│ └────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
↓ WebSocket
┌─────────────────────────────────────────────────┐
│ ClawChain Node (Substrate) │
│ ┌───────────────────────────────────────────┐ │
│ │ AgentRegistry Pallet │ │
│ │ ClawToken Pallet │ │
│ │ Governance Pallet │ │
│ └───────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘Key Concepts
Agent DIDs
Agent identifiers follow the format:
did:claw:<hash>Where `<hash>` is SHA-256(agent metadata + owner address).
Reputation Scores
Reputation is computed from:
score = (commits * 1000) + (pull_requests * 5000) + (docs * 2000)Token Economics
API Reference
Connection
let client = ClawChainClient::new("ws://localhost:9944").await?;**Parameters:**
Query Agent
let agent = client.get_agent("did:claw:...").await?;**Returns:** `AgentInfo` struct with:
Get Token Balance
let balance = client.get_token_balance("did:claw:...").await?;**Returns:** Token balance (u128)
Register Agent
let did = client.register_agent(metadata_ipfs_hash).await?;**Returns:** Newly created DID
Vote on Proposal
client.vote(proposal_id, true).await?;**Parameters:**
Submit Transaction
let tx_hash = client.submit_extrinsic(call_data).await?;**Parameters:**
Error Handling
use clawchain::ClawChainError;
match client.get_agent(did).await {
Ok(agent) => println!("Agent: {:?}", agent),
Err(ClawChainError::NotFound) => println!("Agent not found"),
Err(e) => eprintln!("Error: {:?}", e),
}Example: Full Agent Integration
use clawchain::ClawChainClient;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = ClawChainClient::new("ws://127.0.0.1:9944").await?;
// 1. Register this agent
let metadata = b"{\"name\":\"pi1-edge\",\"type\":\"edge\"}";
let did = client.register_agent(metadata).await?;
println!("Registered: {}", did);
// 2. Check reputation
let rep = client.get_agent_reputation(&did).await?;
println!("Reputation: {}", rep);
// 3. Vote on governance proposal
if rep > 1000 {
client.vote(123, true).await?;
println!("Voted on proposal #123");
}
Ok(())
}Monitoring
Subscribe to chain events:
client.subscribe_events(|event| {
match event {
ChainEvent::Block(block) => println!("New block: {}", block.number),
ChainEvent::AgentRegistered(did) => println!("Agent: {}", did),
ChainEvent::ProposalPassed(id) => println!("Proposal {} passed", id),
}
}).await?;Testing
Mock RPC server for testing:
let mock = MockServer::new().await?;
let client = mock.client().await?;Security Notes
References
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...