Skip to main content

Getting Started with ACDC SDKs

The ACDC SDK provides programmatic access to both Alpha and Delta chains. Choose the SDK that matches your development environment.

Available SDKs

LanguagePackageStatus
TypeScript/JavaScript@acdc/sdkStable
Rustacdc-sdkStable
Pythonacdc-pyComing Soon

Quick Start

TypeScript/JavaScript

# npm
npm install @acdc/sdk

# yarn
yarn add @acdc/sdk

# pnpm
pnpm add @acdc/sdk
import { AcdcClient } from '@acdc/sdk';

// Connect to Delta chain mainnet
const client = new AcdcClient({
chain: 'delta',
network: 'mainnet'
});

// Get account balance
const balance = await client.getBalance('dx1abc123...');
console.log(`Balance: ${balance.formatted} ACDC`);

Rust

# Cargo.toml
[dependencies]
acdc-sdk = "0.1"
tokio = { version = "1", features = ["full"] }
use acdc_sdk::{AcdcClient, Network};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = AcdcClient::new(Network::DeltaMainnet)?;

let balance = client.get_balance("dx1abc123...").await?;
println!("Balance: {} ACDC", balance.formatted());

Ok(())
}

Configuration

Client Options

import { AcdcClient } from '@acdc/sdk';

const client = new AcdcClient({
// Required
chain: 'delta', // 'alpha' or 'delta'
network: 'mainnet', // 'mainnet' or 'testnet'

// Optional
rpcUrl: 'https://...', // Custom RPC endpoint
wsUrl: 'wss://...', // Custom WebSocket endpoint
apiKey: 'your-api-key', // API key for higher rate limits
timeout: 30000, // Request timeout (ms)
retries: 3, // Number of retries
});

Environment Variables

The SDK can be configured via environment variables:

# .env
ACDC_CHAIN=delta
ACDC_NETWORK=mainnet
ACDC_RPC_URL=https://delta-rpc.ac-dc.network
ACDC_API_KEY=your-api-key
import { AcdcClient } from '@acdc/sdk';

// Automatically reads from environment
const client = AcdcClient.fromEnv();

Core Concepts

Dual-Chain Architecture

ACDC consists of two interconnected chains:

  • Alpha Chain: UTXO/record-based model for privacy-preserving transactions
  • Delta Chain: Account-based model for DeFi, governance, and staking

The SDK provides a unified interface for both chains while exposing chain-specific functionality when needed.

Address Formats

ChainPrefixExample
Alphaax1ax1qz3k7m8n9p0r2s4t6v8w0x2y4z6a8c0e2g4i6k8m
Deltadx1dx1abc123def456ghi789jkl012mno345pqr678stu

Units and Decimals

ACDC uses 18 decimal places:

import { parseUnits, formatUnits } from '@acdc/sdk';

// Convert human-readable to base units
const amount = parseUnits('1.5', 18); // 1500000000000000000n

// Convert base units to human-readable
const formatted = formatUnits(1500000000000000000n, 18); // "1.5"

Common Operations

Check Balance

const balance = await client.getBalance('dx1abc123...');

console.log(balance.raw); // BigInt: 1000000000000000000n
console.log(balance.formatted); // String: "1.0"
console.log(balance.symbol); // String: "ACDC"

Send Transaction

import { Wallet } from '@acdc/sdk';

// Create wallet from private key
const wallet = Wallet.fromPrivateKey('0x...');

// Connect wallet to client
const connectedWallet = wallet.connect(client);

// Send transaction
const tx = await connectedWallet.sendTransaction({
to: 'dx1recipient...',
value: parseUnits('1.0', 18)
});

console.log(`Transaction hash: ${tx.hash}`);

// Wait for confirmation
const receipt = await tx.wait();
console.log(`Confirmed in block ${receipt.blockNumber}`);

Subscribe to Events

// Subscribe to new blocks
client.on('block', (block) => {
console.log(`New block: ${block.number}`);
});

// Subscribe to address activity
client.on('address', 'dx1abc123...', (tx) => {
console.log(`Transaction: ${tx.hash}`);
});

Error Handling

import { AcdcError, RpcError, NetworkError } from '@acdc/sdk';

try {
const balance = await client.getBalance('invalid-address');
} catch (error) {
if (error instanceof RpcError) {
console.error(`RPC Error: ${error.code} - ${error.message}`);
} else if (error instanceof NetworkError) {
console.error(`Network Error: ${error.message}`);
} else {
throw error;
}
}

Next Steps