// npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
import { HardhatUserConfig } from "hardhat/config";
const config: HardhatUserConfig = {
networks: {
btcl2: {
url: "https://stax.network/rpc",
chainId: 284224050226,
accounts: [process.env.PRIVATE_KEY!],
},
},
solidity: "0.8.20",
};
export default config;
npx hardhat run scripts/deploy.ts --network btcl2
curl -X POST https://stax.network/faucet \
-H "Content-Type: application/json" \
-d '{"address": "0xYourAddress"}'
# Sends 1 BTC (1e18 wei) to your address
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
[rpc_endpoints]
btcl2 = "https://stax.network/rpc"
# Deploy
forge create src/MyContract.sol:MyContract \
--rpc-url https://stax.network/rpc \
--private-key $PRIVATE_KEY \
--broadcast
# Run a script
forge script script/Deploy.s.sol \
--rpc-url https://stax.network/rpc \
--private-key $PRIVATE_KEY \
--broadcast
# Call a contract
cast call 0xContractAddr "balanceOf(address)(uint256)" 0xYourAddr \
--rpc-url https://stax.network/rpc
cast send --rpc-url https://stax.network/rpc \
$(curl -s -X POST https://stax.network/faucet \
-H "Content-Type: application/json" \
-d '{"address":"'$ETH_FROM'"}' | jq -r .tx_hash)
// npm install viem
import { createPublicClient, createWalletClient, http, defineChain } from 'viem';
export const btcL2 = defineChain({
id: 284224050226,
name: 'Stax Network',
nativeCurrency: { name: 'Bitcoin', symbol: 'BTC', decimals: 18 },
rpcUrls: {
default: { http: ['https://stax.network/rpc'],
webSocket: ['wss://stax.network/ws'] },
},
blockExplorers: {
default: { name: 'Stax Explorer', url: 'https://stax.network/explorer/' },
},
});
const publicClient = createPublicClient({ chain: btcL2, transport: http() });
const balance = await publicClient.getBalance({ address: '0xYour...' });
// npm install ethers
import { JsonRpcProvider, Wallet } from 'ethers';
const provider = new JsonRpcProvider('https://stax.network/rpc', {
chainId: 284224050226,
name: 'btcl2',
});
const wallet = new Wallet(process.env.PRIVATE_KEY!, provider);
const balance = await provider.getBalance(wallet.address);
console.log('Balance:', balance); // in wei (1 BTC = 1e18)
import { WebSocketProvider } from 'ethers';
const ws = new WebSocketProvider('wss://stax.network/ws');
ws.on('block', (blockNumber) => console.log('New block:', blockNumber));
All contracts are pre-deployed on the testnet and available for integration.
| Contract | Address | Description | ABI |
|---|---|---|---|
| Loading... | |||
Full ABI + addresses: /contracts
green = full implementation orange = stub / basic
# Get proof for block 42
curl https://stax.network/proof/42
# Response includes:
{
"block_number": 42,
"proof_type": "groth16",
"proof_hex": "0x...", // 356 bytes
"public_values_hex": "0x...",
"evm_verify": {
"verified": true,
"vk_hash": "0x5487..." // SP1 v6.x verification key
}
}
# Request 1 BTC (limit: 10 BTC max balance)
curl -X POST https://stax.network/faucet \
-H "Content-Type: application/json" \
-d '{"address": "0xYourAddress"}'
# Or use the UI on the main page
open https://stax.network/