LogoLogo
  • Introduction
    • What is Arichain
    • Why Arichain
    • Vision: Redefining Layer 1, Empowering Every Builder.
    • TL;DR Summary for Builders
    • Details to read
  • Architectural Philosophy
    • Monolithic vs Modular: Why Multi-VM
    • Native Composability over Interoperability
    • Unified Chain State and Execution Environment
    • Chain Structure: Multi-VM under One Consensus
    • Identity & User Abstraction
  • General Architecture Overview
    • Multi-VM Execution Environment
    • Consensus Mechanism
    • Token Design
    • Unified Gas System
    • GAID: Global Account Identity
    • Future Roadmap
  • Technical Overview
    • Consensus Protocol Details
    • Token Design and Interoperability
    • Gas System Architecture
    • GAID Architecture
    • State Management
    • Bridge Infrastructure
  • Developer Experience
    • SDK
    • Developer tools
  • Validator
    • Validator Roles & Node Types
    • Reward System
    • Staking
    • Use Cases
    • Node Operations
  • Security
    • Design Goals
    • Threat Model and Risk Assessment
    • Continuous Security Verification
  • Token Economics & Validator Incentives
    • Token Utility
    • Validator Incentives
    • Token Supply and Distribution
    • Onboarding Workflow
  • Roadmap
Powered by GitBook
On this page
  1. Developer Experience

SDK

Details are provisional and may be updated during development.

Current SDK Approach

Arichain takes a pragmatic approach to developer tooling by leveraging existing, mature SDKs from both Ethereum and Solana ecosystems. This ensures developers can use familiar tools and workflows while benefiting from Arichain's Multi-VM capabilities.

EVM Development For Ethereum Virtual Machine development, use standard Ethereum SDKs and tools:

// Using ethers.js for EVM interactions
import { ethers } from 'ethers';

// Connect to Arichain EVM
const provider = new ethers.providers.JsonRpcProvider('https://evm-rpc.arichain.io');
const wallet = new ethers.Wallet(privateKey, provider);

// Deploy EVM contract
const contractFactory = new ethers.ContractFactory(abi, bytecode, wallet);
const contract = await contractFactory.deploy(...constructorArgs);

// Interact with deployed contract
const result = await contract.someFunction(param1, param2);

Supported EVM Tools:

  • ethers.js / web3.js: Standard Ethereum JavaScript libraries

  • Hardhat / Truffle: Development frameworks and testing suites

  • Remix IDE: Browser-based development environment

  • MetaMask: Wallet integration for dApps

  • OpenZeppelin: Security-focused smart contract library

SVM Development For Solana Virtual Machine development, use standard Solana SDKs and frameworks:

// Using @solana/web3.js for SVM interactions
import { Connection, PublicKey, Transaction } from '@solana/web3.js';
import { Program, AnchorProvider } from '@project-serum/anchor';

// Connect to Arichain SVM
const connection = new Connection('https://svm-rpc.arichain.io');
const provider = new AnchorProvider(connection, wallet, {});

// Load Solana program
const program = new Program(idl, programId, provider);

// Execute instruction
const tx = await program.methods
  .someInstruction(param1, param2)
  .accounts({
    account1: publicKey1,
    account2: publicKey2,
  })
  .rpc();

Supported SVM Tools:

  • @solana/web3.js: Official Solana JavaScript SDK

  • Anchor Framework: Rust-based development framework

  • Solana CLI: Command-line tools for deployment and management

  • Phantom / Solflare: Wallet integration for dApps

  • Metaplex: NFT and digital asset standards

Future Implementation: Unified Multi-VM SDK

Planned Unified SDK Architecture

We are developing a unified SDK that will provide seamless Multi-VM development experience:

// Future unified SDK (planned implementation)
import { ArichainProvider, MultiVMContract } from '@arichain/sdk';

const provider = new ArichainProvider({
    evmRpc: 'https://evm-rpc.arichain.io',
    svmRpc: 'https://svm-rpc.arichain.io',
    defaultGasToken: 'ARI'
});

// Deploy contracts to multiple VMs simultaneously
const multiContract = await provider.deployMultiVM({
    evm: {
        contract: evmContractFactory,
        args: evmConstructorArgs
    },
    svm: {
        program: svmProgram,
        args: svmInitArgs
    }
});
PreviousDeveloper ExperienceNextDeveloper tools

Last updated 24 days ago