Skip to content

Developer Quickstart

satyakwok edited this page Apr 28, 2026 · 2 revisions

Developer Quickstart

Build on Sentrix in 10 minutes. EVM-compatible — same Solidity / Hardhat / Foundry / viem / wagmi tooling you already use.

Authoritative quickstart: docs.sentrixchain.com/operations/DEVELOPER_QUICKSTART. This page is the GitHub-side summary.

1. Endpoints

Testnet (recommended for development)

RPC URL https://testnet-rpc.sentrixchain.com
Chain ID 7120
Explorer scan.sentrixchain.com
Faucet faucet.sentrixchain.com — drips 10M tSRX per claim
WebSocket wss://testnet-rpc.sentrixchain.com/ws

Mainnet

RPC URL https://rpc.sentrixchain.com
Chain ID 7119
Explorer scan.sentrixchain.com
WebSocket wss://rpc.sentrixchain.com/ws

2. Read chain state (REST + JSON-RPC)

# REST
curl https://testnet-rpc.sentrixchain.com/chain/info
curl https://testnet-rpc.sentrixchain.com/accounts/0xYOUR_ADDR/balance
curl https://testnet-rpc.sentrixchain.com/validators

# JSON-RPC
curl -X POST https://testnet-rpc.sentrixchain.com \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

3. ethers.js / viem

import { createPublicClient, createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'

const client = createPublicClient({
  transport: http('https://testnet-rpc.sentrixchain.com'),
})

const height = await client.getBlockNumber()
const balance = await client.getBalance({ address: '0x...' })

// Sign + send
const account = privateKeyToAccount('0x...')
const wallet = createWalletClient({
  account,
  transport: http('https://testnet-rpc.sentrixchain.com'),
})

const hash = await wallet.sendTransaction({
  to: '0x...',
  value: 1_000_000_000_000_000_000n, // 1 SRX (in wei — viem normalizes 8↔18 decimals via wSRX wrap if needed)
})

4. Hardhat / Foundry

// hardhat.config.js
module.exports = {
  networks: {
    sentrixTestnet: {
      url: "https://testnet-rpc.sentrixchain.com",
      chainId: 7120,
      accounts: [process.env.PRIVATE_KEY],
    },
    sentrixMainnet: {
      url: "https://rpc.sentrixchain.com",
      chainId: 7119,
      accounts: [process.env.PRIVATE_KEY],
    },
  },
};
# foundry.toml
[rpc_endpoints]
sentrix_testnet = "https://testnet-rpc.sentrixchain.com"
sentrix_mainnet = "https://rpc.sentrixchain.com"

5. Use canonical contracts (no need to deploy your own infrastructure)

Already deployed on both chains:

Contract Mainnet Testnet Use case
WSRX 0x4693b113e523A196d9579333c4ab8358e2656553 0x85d5E7694AF31C2Edd0a7e66b7c6c92C59fF949A Wrap native SRX to ERC-20
Multicall3 0xFd4b34b5763f54a580a0d9f7997A2A993ef9ceE9 0x7900826De548425c6BE56caEbD4760AB0155Cd54 Batch read calls
TokenFactory 0xc753199b723649ab92c6db8A45F158921CFDEe49 0x7A2992af0d4979aDD076347666023d66d29276Fc One-tx SRC-20 deploy
SentrixSafe 0x6272dC0C842F05542f9fF7B5443E93C0642a3b26 0xc9D7a61D7C2F428F6A055916488041fD00532110 Multisig wallet contract

Source + ABIs: sentrix-labs/canonical-contracts.

6. Deploy your own contract (Remix + MetaMask)

  1. Open remix.ethereum.org
  2. Write Solidity (0.8.20+ recommended)
  3. Compile (Solidity Compiler tab)
  4. Deploy & Run → Environment: Injected Provider — MetaMask
  5. Confirm you're on Sentrix (testnet for dev, mainnet for production)
  6. Click Deploy → confirm in MetaMask

Mined in ~1 second. Gas typically < 200K for simple contracts.

Full smart contract guide: docs.sentrixchain.com/operations/SMART_CONTRACT_GUIDE.

7. WebSocket subscriptions (real-time events)

Connect to wss://testnet-rpc.sentrixchain.com/ws and subscribe via eth_subscribe:

import { WebSocket } from 'ws'

const ws = new WebSocket('wss://testnet-rpc.sentrixchain.com/ws')

ws.on('open', () => {
  // Subscribe to new heads
  ws.send(JSON.stringify({
    jsonrpc: '2.0', id: 1, method: 'eth_subscribe', params: ['newHeads']
  }))
  // Subscribe to logs (filter by contract)
  ws.send(JSON.stringify({
    jsonrpc: '2.0', id: 2, method: 'eth_subscribe',
    params: ['logs', { address: '0xYOUR_CONTRACT' }]
  }))
})

ws.on('message', (data) => console.log(JSON.parse(data.toString())))

9 channels supported (4 EVM-compat + 5 Sentrix-native). Full list: docs.sentrixchain.com/operations/WEBSOCKET_SUBSCRIPTIONS.

More