Skip to content

Fukuii RPC API Implementation Analysis

This document provides a comprehensive analysis of the Fukuii JSON-RPC API implementation compared to the Ethereum execution-apis specification.

Reference: Ethereum Execution APIs Specification

Last Updated: 2025-11-21

Executive Summary

Fukuii implements a comprehensive set of JSON-RPC APIs that align with the Ethereum execution-apis specification while also providing Ethereum Classic (ETC) specific extensions and additional utility APIs for testing and debugging.

Total Implemented Methods: 77 methods across 11 namespaces

Implemented API Namespaces

1. ETH Namespace (46 methods)

The core Ethereum API namespace implementing standard execution-apis methods:

Block Operations (9 methods)

  • eth_blockNumber - Returns the number of most recent block
  • eth_getBlockByHash - Returns information about a block by hash
  • eth_getBlockByNumber - Returns information about a block by number
  • eth_getBlockTransactionCountByHash - Returns the number of transactions in a block by hash
  • eth_getBlockTransactionCountByNumber - Returns the number of transactions in a block by number
  • eth_getUncleByBlockHashAndIndex - Returns information about an uncle by block hash and index
  • eth_getUncleByBlockNumberAndIndex - Returns information about an uncle by block number and index
  • eth_getUncleCountByBlockHash - Returns the number of uncles in a block by hash
  • eth_getUncleCountByBlockNumber - Returns the number of uncles in a block by number

Transaction Operations (14 methods)

  • eth_sendTransaction - Creates and sends a new transaction
  • eth_sendRawTransaction - Sends a signed transaction
  • eth_getTransactionByHash - Returns transaction information by hash
  • eth_getTransactionByBlockHashAndIndex - Returns transaction by block hash and index
  • eth_getTransactionByBlockNumberAndIndex - Returns transaction by block number and index
  • eth_getTransactionReceipt - Returns the receipt of a transaction by hash
  • eth_getTransactionCount - Returns the number of transactions sent from an address
  • eth_getRawTransactionByHash - Returns raw transaction data by hash (ETC extension)
  • eth_getRawTransactionByBlockHashAndIndex - Returns raw transaction data by block hash and index (ETC extension)
  • eth_getRawTransactionByBlockNumberAndIndex - Returns raw transaction data by block number and index (ETC extension)
  • eth_pendingTransactions - Returns pending transactions
  • eth_sign - Signs data with an account

Account/State Operations (6 methods)

  • eth_accounts - Returns a list of addresses owned by client
  • eth_getBalance - Returns the balance of an account
  • eth_getCode - Returns code at a given address
  • eth_getStorageAt - Returns the value from a storage position
  • eth_getStorageRoot - Returns the storage root of an account (ETC extension)
  • eth_call - Executes a new message call without creating a transaction

Gas/Fee Operations (2 methods)

  • eth_gasPrice - Returns the current gas price
  • eth_estimateGas - Generates and returns an estimate of gas needed

Filter Operations (7 methods)

  • eth_newFilter - Creates a filter object for log filtering
  • eth_newBlockFilter - Creates a filter for new block notifications
  • eth_newPendingTransactionFilter - Creates a filter for pending transaction notifications
  • eth_uninstallFilter - Uninstalls a filter
  • eth_getFilterChanges - Returns an array of logs matching the filter
  • eth_getFilterLogs - Returns an array of all logs matching the filter
  • eth_getLogs - Returns an array of logs matching given filter object

Mining Operations (6 methods)

  • eth_mining - Returns whether the client is actively mining
  • eth_hashrate - Returns the number of hashes per second being mined
  • eth_getWork - Returns the hash of the current block, seed hash, and boundary condition
  • eth_submitWork - Submits a proof-of-work solution
  • eth_submitHashrate - Submits mining hashrate
  • eth_coinbase - Returns the client coinbase address

Protocol/Network Info (3 methods)

  • eth_protocolVersion - Returns the current ethereum protocol version
  • eth_chainId - Returns the chain ID of the current network
  • eth_syncing - Returns syncing status or false

Advanced/Proof Operations (1 method)

  • eth_getProof - Returns the account and storage values including Merkle proof (EIP-1186)

2. WEB3 Namespace (2 methods)

Standard web3 utility methods: - ✅ web3_clientVersion - Returns the current client version - ✅ web3_sha3 - Returns Keccak-256 hash of the given data

3. NET Namespace (3 methods)

Network information methods: - ✅ net_version - Returns the current network id - ✅ net_listening - Returns true if client is actively listening for network connections - ✅ net_peerCount - Returns number of peers currently connected to the client

4. PERSONAL Namespace (8 methods)

Account management methods (non-standard, Geth-compatible): - ✅ personal_newAccount - Creates a new account - ✅ personal_importRawKey - Imports a raw private key - ✅ personal_listAccounts - Returns list of addresses owned by client - ✅ personal_unlockAccount - Unlocks an account for a duration - ✅ personal_lockAccount - Locks an account - ✅ personal_sendTransaction - Sends transaction with passphrase - ✅ personal_sign - Signs data with an account using passphrase - ✅ personal_ecRecover - Recovers address from signed message

5. DEBUG Namespace (3 methods)

Debug and diagnostic methods: - ✅ debug_listPeersInfo - Returns information about connected peers - ✅ debug_accountRange - Returns account range for state debugging - ✅ debug_storageRangeAt - Returns storage range at given transaction

6. QA Namespace (3 methods)

Quality assurance and testing methods (Fukuii-specific): - ✅ qa_mineBlocks - Mines a specified number of blocks - ✅ qa_generateCheckpoint - Generates checkpoint signatures - ✅ qa_getFederationMembersInfo - Returns federation members information

7. CHECKPOINTING Namespace (2 methods)

Checkpointing methods (ETC-specific): - ✅ checkpointing_getLatestBlock - Returns latest checkpoint block - ✅ checkpointing_pushCheckpoint - Pushes a checkpoint with signatures

8. FUKUII Namespace (1 method)

Fukuii-specific custom methods: - ✅ fukuii_getAccountTransactions - Returns transactions for an account in a block range

9. TEST Namespace (7 methods)

Test harness methods for development: - ✅ test_setChainParams - Sets chain parameters for testing - ✅ test_mineBlocks - Mines blocks in test mode - ✅ test_modifyTimestamp - Modifies block timestamp - ✅ test_rewindToBlock - Rewinds blockchain to specific block - ✅ test_importRawBlock - Imports a raw block - ✅ test_getLogHash - Returns log hash for transaction - ✅ miner_setEtherbase - Sets the etherbase address

10. IELE Namespace (2 methods)

IELE VM methods (experimental): - ✅ iele_call - Execute IELE call - ✅ iele_sendTransaction - Send IELE transaction

11. RPC Namespace (1 method)

RPC meta-information: - ✅ rpc_modules - Returns list of enabled RPC modules

Comparison with Ethereum Execution APIs

Standard Methods Implemented

Fukuii implements all core methods from the Ethereum execution-apis specification:

✅ Fully Implemented Standard Methods:

  • All block retrieval methods (eth_getBlock*, eth_blockNumber)
  • All transaction methods (eth_sendTransaction, eth_getTransaction*, eth_sendRawTransaction)
  • All account/state methods (eth_getBalance, eth_getCode, eth_getStorageAt, eth_call, eth_estimateGas)
  • All filter methods (eth_newFilter, eth_getFilterLogs, eth_getLogs)
  • All mining methods (eth_mining, eth_getWork, eth_submitWork, eth_hashrate)
  • Network information (eth_chainId, eth_syncing, eth_protocolVersion)
  • Web3 utilities (web3_clientVersion, web3_sha3)
  • Net namespace (net_version, net_listening, net_peerCount)

Non-Standard Extensions

Fukuii provides several extensions beyond the standard execution-apis:

ETC-Specific Extensions:

  • eth_getRawTransactionByHash - Raw transaction retrieval
  • eth_getRawTransactionByBlockHashAndIndex - Raw transaction by block location
  • eth_getRawTransactionByBlockNumberAndIndex - Raw transaction by block number
  • eth_getStorageRoot - Storage root retrieval
  • Checkpointing namespace - ETC checkpoint functionality

Fukuii-Specific Extensions:

  • fukuii_getAccountTransactions - Account transaction history
  • QA namespace - Testing and development utilities
  • Test namespace - Comprehensive test harness
  • IELE namespace - IELE VM support

Notable Differences from Standard Specification

  1. Personal Namespace: Fukuii implements the personal_* namespace which is non-standard but widely used (Geth-compatible)

  2. Debug Methods: Limited debug namespace compared to full Geth debug API (only 3 methods vs ~20+ in Geth)

  3. Trace Methods: Not implemented (trace_, txpool_ namespaces)

  4. Admin Methods: Not implemented (admin_* namespace for node administration)

  5. ETC Extensions: Additional methods for Ethereum Classic specific features like checkpointing

Methods NOT in Standard Execution APIs

The following implemented methods are NOT part of the standard Ethereum execution-apis but are common extensions:

  • All personal_* methods (Geth-compatible extension)
  • All debug_* methods (partial Geth-compatible extension)
  • All qa_* methods (Fukuii-specific)
  • All test_* methods (test harness)
  • All checkpointing_* methods (ETC-specific)
  • All fukuii_* methods (client-specific)
  • All iele_* methods (IELE VM support)
  • eth_getRawTransaction* methods (non-standard extensions)
  • eth_getStorageRoot (non-standard extension)

API Compatibility Matrix

API Category Standard Spec Fukuii Support Notes
Core ETH methods ✅ Full ✅ Complete All standard methods implemented
WEB3 methods ✅ Full ✅ Complete Standard utilities
NET methods ✅ Full ✅ Complete Network information
Mining (PoW) ✅ Full ✅ Complete Full PoW mining support
Filters/Logs ✅ Full ✅ Complete Standard filter support
Personal (Geth) ⚠️ Non-standard ✅ Complete Geth-compatible extension
Debug (Geth) ⚠️ Non-standard ⚠️ Partial Limited debug methods
Admin (Geth) ⚠️ Non-standard ❌ Not implemented Node admin not available
Trace methods ⚠️ Non-standard ❌ Not implemented Transaction tracing not available
TxPool methods ⚠️ Non-standard ❌ Not implemented TxPool inspection not available
ETC Checkpointing 🔷 ETC-specific ✅ Complete Ethereum Classic feature
IELE VM 🔷 Fukuii-specific ✅ Complete Experimental VM support
QA/Test methods 🔷 Fukuii-specific ✅ Complete Development utilities

Legend: - ✅ Full/Complete - Fully implemented and supported - ⚠️ Partial/Non-standard - Partially implemented or non-standard extension - ❌ Not implemented - Not available in Fukuii - 🔷 Extension - Client or network specific extension

Recommendations

For Standard Ethereum Compatibility:

  1. All core execution-apis methods are implemented
  2. Fukuii can serve as a drop-in replacement for standard Ethereum JSON-RPC clients
  3. Applications using only standard methods will work without modification

For Extended Functionality:

  1. Use personal_* methods for account management (Geth-compatible)
  2. Use checkpointing_* methods for ETC-specific checkpoint features
  3. Use qa_* and test_* methods for development and testing
  4. Use fukuii_* methods for client-specific features like transaction history

Missing Features (vs. Full Geth Parity):

If you need the following, consider using Geth or another client: - admin_* namespace for runtime node administration - trace_* namespace for detailed transaction tracing - txpool_* namespace for transaction pool inspection - Full debug_* namespace (Fukuii has limited debug methods)

Version Compatibility

  • JSON-RPC: 2.0
  • Ethereum Execution APIs: Compatible with core specification as of 2024
  • Geth Compatibility: Personal namespace compatible with Geth API
  • ETC Network: Full support for Ethereum Classic specific features

Documentation References


Maintained by: Chippr Robotics LLC
Project: Fukuii Ethereum Classic Client
Repository: https://github.com/chippr-robotics/fukuii