Snapshot & Signer Methods
fenine_getSnapshot
Retrieves the consensus snapshot state at a given block.
Block number in hex (e.g., “0x1a4”) or “latest”
curl -X POST https://rpc.fene.app \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "fenine_getSnapshot",
"params": ["latest"],
"id": 1
}'
Snapshot object containing: Block number of the snapshot
List of authorized signer addresses
Recent signer activity (block number → address)
fenine_getSnapshotAtHash
Retrieves the snapshot at a specific block hash.
Block hash (e.g., “0x1234…“)
curl -X POST https://rpc.fene.app \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "fenine_getSnapshotAtHash",
"params": ["0x1234..."],
"id": 1
}'
fenine_getSigners
Retrieves the list of authorized signers (bootstrap nodes) at a given block.
Block number in hex or “latest”
curl -X POST https://rpc.fene.app \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "fenine_getSigners",
"params": ["latest"],
"id": 1
}'
Array of signer addresses (e.g., ["0x1234...", "0x5678..."])
fenine_getSignersAtHash
Retrieves signers at a specific block hash.
System Contract Methods
fenine_getSystemContractAddress
Returns the address of the FenineSystem contract.
curl -X POST https://rpc.fene.app \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "fenine_getSystemContractAddress",
"params": [],
"id": 1
}'
Fixed address: 0x0000000000000000000000000000000000001000
fenine_getSystemContractABI
Returns the ABI of the FenineSystem contract.
curl -X POST https://rpc.fene.app \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "fenine_getSystemContractABI",
"params": [],
"id": 1
}'
JSON string containing the complete ABI
Use this method once to get the ABI, then cache it in your application. The ABI is static and won’t change.
fenine_getNFTPassportABI
Returns the ABI of the NFT Passport contract.
curl -X POST https://rpc.fene.app \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "fenine_getNFTPassportABI",
"params": [],
"id": 1
}'
fenine_getTaxManagerABI
Returns the ABI of the Tax Manager contract.
curl -X POST https://rpc.fene.app \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "fenine_getTaxManagerABI",
"params": [],
"id": 1
}'
fenine_getContractConstants
Returns important contract constants and configuration values.
curl -X POST https://rpc.fene.app \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "fenine_getContractConstants",
"params": [],
"id": 1
}'
Object containing: FenineSystem contract address
Maximum active validators (101)
Minimum VA stake in wei (10,000 FEN)
Minimum DC stake in wei (1,000 FEN)
VA unstake lock period in blocks (50,000)
DC unstake lock period in blocks (25,000)
Default commission rate in basis points (500 = 5%)
Maximum commission rate in basis points (1000 = 10%)
{
"jsonrpc" : "2.0" ,
"id" : 1 ,
"result" : {
"systemContractAddress" : "0x0000000000000000000000000000000000001000" ,
"blockEpoch" : 200 ,
"maxValidators" : 101 ,
"minValidatorStake" : "10000000000000000000000" ,
"minDelegatorStake" : "1000000000000000000000" ,
"validatorLockPeriod" : 50000 ,
"delegatorLockPeriod" : 25000 ,
"defaultCommission" : 500 ,
"maxCommission" : 1000
}
}
Helper Methods
fenine_getCallDataHelper
Returns a helper object for constructing call data for system contract queries.
This is a utility method. In practice, use eth_call with the selectors provided in the Quick Reference .
Common Use Cases
Get Current Validator Set
// Get active signers (bootstrap nodes)
const signers = await web3 . getSigners ( 'latest' );
// Get active validators from system contract
const systemContract = new web3 . eth . Contract ( abi , systemContractAddress );
const validators = await systemContract . methods . getActiveValidators (). call ();
const constants = await web3 . getContractConstants ();
const currentBlock = await web3 . eth . getBlockNumber ();
const currentEpoch = Math . floor ( currentBlock / constants . blockEpoch );
const blocksUntilNextEpoch = constants . blockEpoch - ( currentBlock % constants . blockEpoch );
console . log ( `Current epoch: ${ currentEpoch } ` );
console . log ( `Blocks until next epoch: ${ blocksUntilNextEpoch } ` );
// Get ABI once
const abiJson = await web3 . getSystemContractABI ();
const abi = JSON . parse ( abiJson );
// Create contract instance
const systemContract = new web3 . eth . Contract (
abi ,
'0x0000000000000000000000000000000000001000'
);
// Now you can call any contract method
const totalStake = await systemContract . methods . totalNetworkStake (). call ();
Next Steps
eth_* Methods Standard Ethereum JSON-RPC methods
System Contract FenineSystem contract reference