Build on Silica

Comprehensive resources, SDKs, and tools for developers building on the Silica Protocol

Developer Resources

Everything you need to integrate with Silica Protocol

API Documentation

REST and WebSocket APIs for blockchain interaction with comprehensive documentation and examples.

  • • JSON-RPC endpoints
  • • WebSocket subscriptions
  • • Rate limiting and authentication
Explore API

SDKs & Libraries

JavaScript, Rust, and Python SDKs for easy integration with your applications.

  • • TypeScript/JavaScript SDK
  • • Rust implementation
  • • Python client library
View SDKs

Node Deployment

Guides for running validators, gateways, and PoUW miners with step-by-step instructions.

  • • Docker deployment
  • • Kubernetes configuration
  • • Monitoring and logging
Deployment Guides

System Contracts

Browse the contract docs that already exist today and jump directly to the individual repositories in the Silica-Contracts organization.

  • • Contract SDK and Rust spec
  • • CRC-20, CRC-721, DAO, timelock, bridge, and more
  • • Direct GitHub repo links
Contract Docs

Code Examples

Practical examples to get you started quickly

JavaScript Example

// Connect to Silica network
const { ChertClient } = require('@chert/sdk');

const client = new ChertClient({
  network: 'mainnet',
  apiKey: 'your-api-key'
});

// Get latest block
async function getLatestBlock() {
  const block = await client.getLatestBlock();
  console.log('Latest block:', block.hash);
}

// Send transaction
async function sendTransaction() {
  const tx = await client.sendTransaction({
    from: 'your-address',
    to: 'recipient-address',
    amount: 1000,
    data: 'hello world'
  });
  console.log('Transaction sent:', tx.hash);
}

getLatestBlock();
sendTransaction();

Rust Example

use chert_sdk::Client;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    // Initialize client
    let client = Client::new("mainnet", "your-api-key")?;

    // Get account balance
    let balance = client.get_balance("your-address").await?;
    println!("Balance: {} CHERT", balance);

    // Submit transaction
    let tx_hash = client.submit_transaction(
        "your-address",
        "recipient-address",
        1000,
        "hello world"
    ).await?;

    println!("Transaction submitted: {}", tx_hash);
    Ok(())
}

Start Building Today

Join developers worldwide building the next generation of blockchain applications.