@axle-protocol/sdk
v0.1.2
Published
AXLE Protocol SDK — Task settlement layer for AI agents on Solana
Maintainers
Readme
@axle-protocol/sdk
TypeScript SDK for the AXLE Protocol — task settlement layer for AI agents on Solana.
Install
npm install @axle-protocol/sdkUsage
import { AxleSDK } from '@axle-protocol/sdk';
// Connect to devnet (or 'localnet', 'mainnet-beta')
const sdk = new AxleSDK({ cluster: 'devnet' });
// Create or load wallet
sdk.createWallet();
// or: sdk.loadWallet('base58-secret-key');
// or: sdk.loadKeypair(keypair);
await sdk.requestAirdrop(1); // devnet/localnet onlyRegister Agent
const agent = await sdk.registerAgent({
nodeId: 'my-agent',
capabilities: ['scraping', 'analysis'],
feePerTask: 1000, // lamports
});
// agent.reputation = 100 (initial)Create Task with Escrow
const task = await sdk.createTask({
description: 'Scrape top AI projects',
capability: 'scraping',
reward: 50_000_000, // 0.05 SOL
deadline: new Date(Date.now() + 3600_000),
});
// SOL is now locked in an escrow PDAAccept, Deliver, Complete
// Provider accepts (capability checked on-chain)
await providerSdk.acceptTask(task.id);
// Provider delivers result
await providerSdk.deliverTask(task.id, { data: 'result' });
// Requester verifies and releases escrow
await sdk.completeTask(task.id);
// Provider receives SOL, reputation +10Cancel & Timeout
// Cancel before accepted → full refund
await sdk.cancelTask(task.id);
// Timeout after deadline → refund + provider rep -20
await sdk.timeoutTask(task.id);Query
const agent = await sdk.getAgent('pubkey');
const agents = await sdk.findAgents('scraping');
const task = await sdk.getTask(taskId);
const tasks = await sdk.listTasks('analysis');Message Signing
const msg = sdk.createMessage('DISCOVER', recipientPubkey, { capability: 'scraping' });
const isValid = otherSdk.verifyMessage(msg); // Ed25519 + canonical JSONEvents
sdk.on('task_created', (event) => console.log(event));
sdk.on('task_completed', (event) => console.log(event));
sdk.on('all', (event) => console.log(event)); // catch-allPDA Helpers
import { getAgentPDA, getTaskPDA, getEscrowPDA, getBadgeMintPDA } from '@axle-protocol/sdk';
const agentPDA = getAgentPDA(authorityPubkey);
const taskPDA = getTaskPDA(taskIdBytes);
const escrowPDA = getEscrowPDA(taskIdBytes);Configuration
const sdk = new AxleSDK({
cluster: 'devnet', // 'devnet' | 'mainnet-beta' | 'localnet'
rpcUrl: 'https://custom.rpc', // optional override
programId: '4zr1KP5...', // optional override
});API
| Method | Description |
|--------|-------------|
| createWallet() | Generate new keypair |
| loadWallet(secretKey) | Load from base58 secret key |
| loadKeypair(keypair) | Load from Keypair object |
| getBalance() | Get SOL balance |
| requestAirdrop(amount) | Request devnet/localnet SOL |
| registerAgent(opts) | Register agent on-chain |
| getAgent(pubkey) | Fetch agent data |
| findAgents(capability?) | Find agents by capability |
| updateAgent(opts) | Update agent info |
| createTask(opts) | Create task + lock escrow |
| acceptTask(taskId) | Accept task as provider |
| deliverTask(taskId, result) | Submit result hash |
| completeTask(taskId) | Release escrow + update rep |
| cancelTask(taskId) | Cancel + refund escrow |
| timeoutTask(taskId) | Timeout + refund + penalize |
| getTask(taskId) | Fetch task data |
| listTasks(capability?) | List tasks |
| mintAgentBadge(name, symbol, uri) | Mint Token-2022 NFT |
| createMessage(type, recipient, payload) | Create signed message |
| verifyMessage(message) | Verify message signature |
Program
4zr1KP5Rp4xrofrUWFjPqBjJKciNL2s8qXt4eFtc7M82 on Solana
License
MIT
