Skip to main content

Snapshot & Signer Methods

fenine_getSnapshot

Retrieves the consensus snapshot state at a given block.
blockNumber
string
default:"latest"
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
  }'
result
object
Snapshot object containing:

fenine_getSnapshotAtHash

Retrieves the snapshot at a specific block hash.
hash
string
required
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.
blockNumber
string
default:"latest"
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
  }'
result
array
Array of signer addresses (e.g., ["0x1234...", "0x5678..."])

fenine_getSignersAtHash

Retrieves signers at a specific block hash.
hash
string
required
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
  }'
result
string
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
  }'
result
string
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
  }'
result
object
Object containing:
{
  "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 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