Skip to main content

Differences Between Axon and Ethereum

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).

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();