Differences Between Axon and Ethereum
Mining Related
eth_getUncleByBlockHashAndIndex
API
Since Axon uses BFT consensus algorithm, no uncle block exists. The RPC method always returns null
.
eth_getUncleByBlockNumberAndIndex
API
Since Axon uses BFT consensus algorithm, no uncle block exists. The RPC method always returns null
.
eth_getUncleCountByBlockHash
API
Since Axon uses BFT consensus algorithm, no uncle block exists. The RPC method always returns 0x0
.
eth_getUncleCountByBlockNumber
API
Since Axon uses BFT consensus algorithm, no uncle block exists. The RPC method always returns 0x0
.
eth_mining
API
Since Axon does not mine, this RPC method always returns false
.
eth_coinbase
API
Since Axon does not mine, this RPC method always returns 0x0000000000000000000000000000000000000000
.
eth_hashrate
API
Since Axon does not mine, this RPC method always returns 0x1
.
eth_submitWork
API
Since Axon does not mine, this RPC method always returns true
.
eth_submitHashrate
API
Since Axon does not mine, this RPC method always returns true
.
Difficulty
opcode
Since Axon does not mine, this opcode always uses 0x1
.
gas_price
calculation
Since Axon does not mine, Axon simplifies the process of gas_price
calculation of EIP-1559 transaction as gas_price = max(tx.gas_price, tx.max_fee_per_gas)
.
Wallet Related
eth_accounts
API
Since Axon does not mine, this RPC method is not supported.
eth_sign
API
Since Axon does not mine, this RPC method is not supported.
eth_signTransaction
API
Since Axon does not mine, this RPC method is not supported.
eth_sendTransaction
API
Since Axon does not mine, this RPC method is not supported.
Others
Transactions Root Calculation
The transactions root calculation in Ethereum is as follows:
let mut trie = Trie::new(memory_db);
for (i, tx) in transactions.iter().enumerate() {
let key = rlp_encode(&i);
let val = rlp_encode(&tx);
trie.insert(key, val);
}
block.header.transactions_root = trie.root();
The calculation in Axon is:
let mut trie = Trie::new(memory_db);
for (i, tx) in transactions.iter().enumerate() {
let key = rlp_encode(&i);
let val = rlp_encode(&keccak256(rlp_encode(&tx)));
trie.insert(key, val);
}
block.header.transactions_root = trie.root();