BRC20-Prog Commands
The brc20-prog namespace provides operations for BRC20-Prog, the EVM-compatible smart contract layer on Bitcoin. This enables Ethereum-style contract deployment and interaction.
Example commands
Get the current block number from the BRC20-Prog EVM:
$ alkanes-cli -p mainnet brc20-prog block-number
Get the chain ID for the BRC20-Prog network:
$ alkanes-cli -p mainnet brc20-prog chain-id
Commands Overview
Contract Operations:
deploy-contract: Deploy a contract from Foundry build JSONtransact: Call a contract function (state-changing)call: Call a contract function (read-only, eth_call)wrap-btc: Wrap BTC to frBTC and execute in brc20-prog
Contract Queries:
get-code: Get contract bytecode (eth_getCode)get-contract-deploys: Get contract deployments by addressget-storage-at: Get storage at location (eth_getStorageAt)
Balance & Account:
get-balance: Get frBTC balance (eth_getBalance)brc20-balance: Get BRC20 balance (brc20_balance)get-transaction-count: Get nonce (eth_getTransactionCount)
Transaction Queries:
get-transaction: Get transaction by hash (eth_getTransactionByHash)get-transaction-receipt: Get transaction receipt (eth_getTransactionReceipt)get-receipt-by-inscription: Get receipt by inscription IDget-inscription-by-tx: Get inscription ID by tx hashget-inscription-by-contract: Get inscription ID by contract addresstrace-transaction: Get transaction trace (debug_traceTransaction)
Block Queries:
block-number: Get current block number (eth_blockNumber)get-block-by-number: Get block by number (eth_getBlockByNumber)get-block-by-hash: Get block by hash (eth_getBlockByHash)
Other:
estimate-gas: Estimate gas (eth_estimateGas)chain-id: Get chain ID (eth_chainId)gas-price: Get gas price (eth_gasPrice)get-logs: Get logs (eth_getLogs)version: Get BRC20-Prog version (brc20_version)txpool-content: Get txpool content (txpool_content)client-version: Get client version (web3_clientVersion)unwrap: Get pending unwraps from FrBTC contract
Endpoint Configuration
BRC20-Prog uses a separate JSON-RPC endpoint:
# Using the brc20-prog endpoint
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog block-number
Or with your API key:
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/YOUR_API_KEY/brc20-prog
brc20-prog deploy-contract
Deploy a Solidity contract from Foundry build output.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
--wallet-file ~/.alkanes/wallet.json \
--passphrase "your-passphrase" \
brc20-prog deploy-contract ./out/MyContract.sol/MyContract.json \
--fee-rate 10 \
-y
Arguments:
<FOUNDRY_JSON_PATH>: Path to Foundry build JSON file
Options:
--from <FROM>: Addresses to source UTXOs from--change <CHANGE>: Change address--fee-rate <FEE_RATE>: Fee rate in sat/vB--raw: Show raw JSON output--trace: Enable transaction tracing--mine: Mine a block after broadcasting (regtest only)-y, --auto-confirm: Auto-confirm the transaction
brc20-prog transact
Call a state-changing function on a BRC20-prog contract.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
--wallet-file ~/.alkanes/wallet.json \
--passphrase "your-passphrase" \
brc20-prog transact \
--address 0x1234...abcd \
--signature "transfer(address,uint256)" \
--calldata "0xRecipient...,1000" \
--fee-rate 10 \
-y
Options:
--address <ADDRESS>: Contract address (0x prefixed hex)--signature <SIGNATURE>: Function signature (e.g., "transfer(address,uint256)")--calldata <CALLDATA>: Arguments as comma-separated values--from <FROM>: Addresses to source UTXOs from--change <CHANGE>: Change address--fee-rate <FEE_RATE>: Fee rate in sat/vB--raw: Show raw JSON output--trace: Enable transaction tracing--mine: Mine a block after broadcasting (regtest only)-y, --auto-confirm: Auto-confirm the transaction
brc20-prog wrap-btc
Wrap BTC to frBTC and execute a function on a target contract.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
--wallet-file ~/.alkanes/wallet.json \
--passphrase "your-passphrase" \
brc20-prog wrap-btc 100000 \
--target 0x1234...abcd \
--signature "deposit()" \
--calldata "" \
--fee-rate 10 \
-y
Arguments:
<AMOUNT>: Amount of BTC to wrap (in satoshis)
Options:
--target <TARGET>: Target contract address--signature <SIGNATURE>: Function signature to call--calldata <CALLDATA>: Calldata arguments--from <FROM>: Addresses to source UTXOs from--change <CHANGE>: Change address--fee-rate <FEE_RATE>: Fee rate in sat/vB--raw: Show raw JSON output--trace: Enable transaction tracing--mine: Mine a block after broadcasting (regtest only)-y, --auto-confirm: Auto-confirm the transaction
brc20-prog call
Make a read-only call to a contract (eth_call equivalent).
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog call \
--to 0x1234...abcd \
--data 0x70a08231000000000000000000000000...
brc20-prog get-balance
Get the frBTC balance of an address (eth_getBalance equivalent).
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog get-balance 0x1234...abcd
brc20-prog get-code
Get the bytecode of a deployed contract.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog get-code 0x1234...abcd
brc20-prog block-number
Get the current block number.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog block-number
brc20-prog get-transaction
Get transaction details by hash.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog get-transaction 0xabc123...
brc20-prog get-transaction-receipt
Get transaction receipt with logs and status.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog get-transaction-receipt 0xabc123...
brc20-prog estimate-gas
Estimate gas for a transaction.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog estimate-gas \
--to 0x1234...abcd \
--data 0x...
brc20-prog chain-id
Get the chain ID.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog chain-id
brc20-prog get-logs
Get event logs matching filter criteria.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog get-logs \
--address 0x1234...abcd \
--from-block 840000 \
--to-block latest
brc20-prog trace-transaction
Get detailed execution trace for a transaction.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog trace-transaction 0xabc123...
brc20-prog unwrap
Get pending unwraps from the BRC20-Prog FrBTC contract.
alkanes-cli -p mainnet \
--brc20-prog-rpc-url https://mainnet.subfrost.io/v4/jsonrpc/brc20-prog \
brc20-prog unwrap
JSON-RPC Methods
BRC20-Prog supports standard Ethereum JSON-RPC methods:
eth_blockNumbereth_getBalanceeth_getCodeeth_calleth_estimateGaseth_getTransactionByHasheth_getTransactionReceipteth_getBlockByNumbereth_getBlockByHasheth_getTransactionCounteth_getStorageAteth_getLogseth_chainIdeth_gasPrice
Plus BRC20-Prog specific methods:
brc20_versionbrc20_balancebrc20_getTxReceiptByInscriptionIdbrc20_getInscriptionIdByTxHashbrc20_getInscriptionIdByContractAddress
Next Steps
- DataAPI Commands: High-level data queries
- Alkanes Commands: Alkanes protocol operations
- JSON-RPC brc20_* Methods: Full RPC reference