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 retrievaleth_getRawTransactionByBlockHashAndIndex- Raw transaction by block locationeth_getRawTransactionByBlockNumberAndIndex- Raw transaction by block numbereth_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¶
-
Personal Namespace: Fukuii implements the
personal_*namespace which is non-standard but widely used (Geth-compatible) -
Debug Methods: Limited debug namespace compared to full Geth debug API (only 3 methods vs ~20+ in Geth)
-
Trace Methods: Not implemented (trace_, txpool_ namespaces)
-
Admin Methods: Not implemented (admin_* namespace for node administration)
-
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:¶
- All core execution-apis methods are implemented
- Fukuii can serve as a drop-in replacement for standard Ethereum JSON-RPC clients
- Applications using only standard methods will work without modification
For Extended Functionality:¶
- Use
personal_*methods for account management (Geth-compatible) - Use
checkpointing_*methods for ETC-specific checkpoint features - Use
qa_*andtest_*methods for development and testing - 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