Releases: eosnetworkfoundation/eos-evm-node
EOS EVM Node v1.0.0
Introduction
The latest release of EOS EVM introduces support for Shanghai and London Hard Fork and their comprised features, a new gas fee algorithm to more accurately price transactions for underlying resource costs involved, and configuration settings to adjust the base token of the network.
Read on for more details.
New features
London Fork Compatibility
EIP-1559: Transaction Fee Reform
PRs
A critical component of the London Hard Fork is EIP-1559, which introduces a new transaction fee mechanism. This update changes how gas fees are estimated on the EOS EVM network with new components including a base fee and priority fee combined to calculate the overall cost of a transaction based on units of gas used.
Base fee
The base fee, implemented as the base_fee_per_gas
, is the minimum amount of gas required for a transaction to be included in a block. This fee is burned in the Ethereum implementation, but is instead credited to the contract for EOS EVM. The base_fee_per_gas
is now part of the block header information and is returned in both eth_getBlockByNumber
and eth_getBlockByHash
API calls.
Priority fee
The priority fee, implemented as the inclusion_price
, is a fee historically designed so that users can pay to miners to incentivize them to prioritize their transactions over others, but is not applicable to EOS EVM. For the EOS EVM, this instead evaluates the updated gas fee algorithm (explained further in later section) to properly manage a minimum inclusion price. This fee is not burned but goes directly to the miners.
The priority fee or inclusion_price
can be calculated as min(max_priority_fee_per_gas, max_fee_per_gas - base_fee_per_gas)
.
Max fee
Users may now specify a maximum fee they are willing to pay for the sum of base and priority fees. If the max fee is higher than the sum of the base fee and the priority fee, the difference is refunded to the user. This ensures users don't overpay beyond what is necessary to get their transactions processed.
Overall transaction fee
The overall cost of a transaction fee utilizes a price per gas unit implemented as the effective_gas_price
, which can be calculated as
inclusion_price + base_fee_per_gas
. The overall cost of any given transaction is then calculated as the product ofeffective_gas_price * gas_used
.
Fee distribution
The fees associated with transactions are now distributed to where the contract receives base_fee_per_gas*gas_used
and the miner receives inclusion_price*gas_used
.
Feature activation for wallet users
The flag for the EIP-1559 network support is cached, so users will have to refresh their network selection by changing the active network to another network and go back to eos-evm in order for many common wallets like Metamask to start sending EIP-1559 transactions.
Shanghai Fork Compatibility
PUSH0 Opcode Support
Support has been added for the PUSH0
opcode as introduced in the Shanghai Hard Fork. This opcode pushes a zero onto the stack, optimizing certain types of smart contract code and potentially reducing gas costs for operations that frequently use zero values.
Gas Fee Algorithm Enhancements
PRs
A new gas fee algorithm has been introduced to alleviate challenges with a prior one-size-fits-all gas fee structure. Because the previous method used to calculate gas fees did not account for the varying computational resources required by transactions, many transactions were priced higher than their resource costs for the safety of the network.
To accomplish this, five new parameters are now tracked including:
- Additional gas consumed when creating a new non-contract account due to a message-call transaction that sends positive value to an empty account. This value defaults to 0 and is denoted as
G_txnewaccount
. - Additional gas consumed when creating a new non-contract account due to the
CALL
orSELFDESTRUCT
opcodes. This value defaults to to 25000 and is denoted asG_newaccount
. - Static gas consumed in the
CREATE
andCREATE2
opcodes and also acts as the additional gas consumed in a contract-creating transaction. This value defaults to 32000 and is denotedG_txcreate
. - Factor that multiplies the deployed code size within
CREATE
andCREATE2
opcodes, as well as contract-creating transactions, to determine the code deposit cost. This value defaults to 200 and is denoted asG_codedeposit
. - Gas consumed when an
SSTORE
opcode causes the storage value to go from zero to non-zero. This value defaults to 20000 and is denoted asG_sset
.
These five new parameters can be calculated as follows:
G_txnewaccount
=account_bytes * gas_per_byte
G_newaccount
=account_bytes * gas_per_byte
G_txcreate
=contract_fixed_bytes * gas_per_byte
G_codedeposit
=gas_per_byte
G_sset
= 2900 +storage_slot_bytes * gas_per_byte
Each of these five parameters are accounted for an stored when establishing an updated gas cost.
Change max gas refund in ExecutionProcessor to 100% with a limit in the minimum gas used of 21k
The max refund setting of 20% as part of the standard protocol has been updated to 100% to improve overall user experience as the next generation of the gas fee algorithm is developed.
Increase kGasCap in EstimateGasOracle to 100M
The new gas fee parameters result in gas consumption estimates larger than the previous 25M limit set in the gas fee oracle. This cap has been increased to 100M in order to support these new value ranges.
General Hard Fork Solution
EOS EVM now officially supports multiple versions and the ability to perform a hard forks when required for future versions such as London Hard Fork detailed above.
This release implements a linear versioning system for EOS EVM hard forks, mapping each EOSEVM version to a corresponding EVMC revision:
EOSEVM Version | EVMC Revision |
---|---|
0 | ISTANBUL |
1 | SHANGHAI |
Note: for this release, EOS EVM is moving directly from Instanbul to Shanghai, including all support for London Hard Fork within that version.
Bug fixes
MDBX configuration creating mapsize issue
The shared and exculsive flags set for MDBX were leading to an MDBX_MAP_FULL error.
Error building with ARM
There was an issue where the ARM version of protobuf was not being fetched properly and causing CMAKE to fail.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior 0.7.x version by replacing the binaries. If upgrading from v1.0.0-rc1 or v1.0.0-rc2 replay is needed.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
- (144) bump abieos submodule
- (157) [0.7 -> main] blockchain-plugin: Shutdown node on error during block processing
- (162) [0.7 -> main] Merge nginx config change for long connection
- (164) [0.7 -> main] Update silkworm with fixes in fork switching
- (165) [0.7->main] Merge in nginx docker file fix for WS_ENDPOINT
- (168) [0.7 -> main] Bump 0.7.0-rc2 version
- ([174](https://github.com/eosnetworkfoundation/eos-evm-...
EOS EVM Node v0.7.1
The latest patch release of EOS EVM Node introduces a bug fix to flags set improperly for MDBX and a unit discrepancy for a test.
Read on for more details.
Bug fixes
Wrong flag when opening database
It was discovered that use the exclusive and shared flag for MDBX was being used incorrectly, which was leading performance issues.
Unit comparison issue in block_conversion_plugin_impl::timestamp_to_evm_block_num
A mismatch in the units being compared to detect if a transaction occurs before the genesis timestamp was discovered.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior 0.7.0 version by replacing the binaries.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
Full Changelog: v0.7.0...v0.7.1
EOS EVM Node v1.0.0-rc4
Introduction
The latest release candidate of EOS EVM Node includes updates to resolve an issue discovered with disproportionally high gas fees and insufficient returns for certain types of transactions related to the new gas fee algorithm.
Read on for more details.
Updates
Make an exception for privileged accounts when calculating gas
It was discovered that privileged accounts were being treated as if they were new, not previously created accounts when calculating gas fees. An update has been made to make an exception for these accounts for all operations.
Change max gas refund in ExecutionProcessor to 100% with a limit in the minimum gas used of 21k
In certain scenarios, where disproportionately high gas fees were charged, inadequate refunds were returned due to the max refund setting of 20% as part of the protocol. This value has been updated to a max of 100% to improve overall user experience as the next generation of the gas fee algorithm is developed.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior 0.7.x version by replacing the binaries. If upgrading from v1.0.0-rc1 or v1.0.0-rc2 replay is needed.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
Full Changelog: v1.0.0-rc3...v1.0.0-rc4
EOS EVM Node v1.0.0-rc3
Introduction
The latest release candidate introduces a fix to issues discovered with how non-legacy transactions where serialized into the database.
Read on for more details.
Updates
Change db serialization format for non-legacy transactions
The eos-evm-node previously stored RLP-serialized transactions in the database in a format that prevented directly obtaining the transaction hash by hashing the binary blob data. The current fix uses a transaction binary representation compatible with direct hashing, as other parts of the code assumed that representation.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior 0.7.x version by replacing the binaries. If upgrading from v1.0.0-rc1 or v1.0.0-rc2 replay is needed.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
- (221) [1.0->main] add integration test for differen test token
- (225) [1.0 -> main] Bump 1.0.0-rc1 version
- (226) [1.0 -> main] Use updated silkworm with the new block-extra-data storage
- (227) [1.0 -> main] Bump 1.0.0-rc2 version
- (231) [1.0] add get transaction & get transaction receipt from rpc test
- (232) [1.0] Update silkworm 1.0.1
- (233) [1.0] Bump 1.0.0-rc3 version
Full Changelog: v1.0.0-rc2...v1.0.0-rc3
EOS EVM Node v1.0.0-rc2
Introduction
The latest release candidate introduces to a fix to issues discovered with how EOS EVM Node managed field extensions.
Read on for more details.
Updates
Improve block encode and decode logic to allow more flexibile field extensions
It was discovered that within EOS EVM Node v1.0.0-rc1 that the logic would break if block_body.withdrawals
exists but block_body.consensus_parameter_index
did not exist.
void encode(Bytes& to, const BlockBody& block_body) {
encode_header(to, rlp_header_body(block_body));
encode(to, block_body.transactions);
encode(to, block_body.ommers);
if (block_body.consensus_parameter_index) {
encode(to, *block_body.consensus_parameter_index);
}
if (block_body.withdrawals) {
encode(to, *block_body.withdrawals);
}
}
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior 0.7.x or v1.0.0-rc1 version by replacing the binaries.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
Full Changelog: v1.0.0-rc1...v1.0.0-rc2
EOS EVM Node v1.0.0-rc1
Introduction
The latest release candidate of EOS EVM introduces support for Shanghai and London Hard Fork and their comprised features along with a new dynamic gas fee algorithm to more accurately price transactions for underlying resource costs involved.
This release contains changes to silkworm
, eos-evm-contract
, eos-evm-node
, and eos-evm-miner
.
Read on for more details.
New features
London Fork Compatibility
EIP-1559: Transaction Fee Reform
PRs
A critical component of the London Hard Fork is EIP-1559, which introduces a new transaction fee mechanism. This update changes how gas fees are estimated on the EOS EVM network with new components including a base fee and priority fee combined to calculate the overall cost of a transaction based on units of gas used.
Base fee
The base fee, implemented as the base_fee_per_gas
, is the minimum amount of gas required for a transaction to be included in a block. This fee is burned in the Ethereum implementation, but is instead credited to the contract for EOS EVM. The base_fee_per_gas
is now part of the block header information and is returned in both eth_getBlockByNumber
and eth_getBlockByHash
API calls.
Priority fee
The priority fee, implemented as the inclusion_price
, is a fee historically designed so that users can pay to miners to incentivize them to prioritize their transactions over others, but is not applicable to EOS EVM. For the EOS EVM, this instead evaluates the updated gas fee algorithm (explained further in later section) to properly manage a minimum inclusion price. This fee is not burned but goes directly to the miners.
The priority fee or inclusion_price
can be calculated as min(max_priority_fee_per_gas, max_fee_per_gas - base_fee_per_gas)
.
Max fee
Users may now specify a maximum fee they are willing to pay for the sum of base and priority fees. If the max fee is higher than the sum of the base fee and the priority fee, the difference is refunded to the user. This ensures users don't overpay beyond what is necessary to get their transactions processed.
Overall transaction fee
The overall cost of a transaction fee utilizes a price per gas unit implemented as the effective_gas_price
, which can be calculated as
inclusion_price + base_fee_per_gas
. The overall cost of any given transaction is then calculated as the product ofeffective_gas_price * gas_used
.
Fee distribution
The fees associated with transactions are now distributed to where the contract receives base_fee_per_gas*gas_used
and the miner receives inclusion_price*gas_used
.
Feature activation for wallet users
The flag for the EIP-1559 network support is cached, so users will have to refresh their network selection by changing the active network to another network and go back to eos-evm in order for many common wallets like Metamask to start sending EIP-1559 transactions.
Shanghai Fork Compatibility
PUSH0 Opcode Support
Support has been added for the PUSH0
opcode as introduced in the Shanghai Hard Fork. This opcode pushes a zero onto the stack, optimizing certain types of smart contract code and potentially reducing gas costs for operations that frequently use zero values.
Gas Fee Algorithm Enhancements
PRs
A new gas fee algorithm has been introduced to alleviate challenges with a prior one-size-fits-all gas fee structure. Because the previous method used to calculate gas fees did not account for the varying computational resources required by transactions, many transactions were priced higher than their resource costs for the safety of the network.
To accomplish this, five new parameters are now tracked including:
- Additional gas consumed when creating a new non-contract account due to a message-call transaction that sends positive value to an empty account. This value defaults to 0 and is denoted as
G_txnewaccount
. - Additional gas consumed when creating a new non-contract account due to the
CALL
orSELFDESTRUCT
opcodes. This value defaults to to 25000 and is denoted asG_newaccount
. - Static gas consumed in the
CREATE
andCREATE2
opcodes and also acts as the additional gas consumed in a contract-creating transaction. This value defaults to 32000 and is denotedG_txcreate
. - Factor that multiplies the deployed code size within
CREATE
andCREATE2
opcodes, as well as contract-creating transactions, to determine the code deposit cost. This value defaults to 200 and is denoted asG_codedeposit
. - Gas consumed when an
SSTORE
opcode causes the storage value to go from zero to non-zero. This value defaults to 20000 and is denoted asG_sset
.
These five new parameters can be calculated as follows:
G_txnewaccount
=account_bytes * gas_per_byte
G_newaccount
=account_bytes * gas_per_byte
G_txcreate
=contract_fixed_bytes * gas_per_byte
G_codedeposit
=gas_per_byte
G_sset
= 2900 +storage_slot_bytes * gas_per_byte
Each of these five parameters are accounted for an stored when establishing an updated gas cost.
General Hard Fork Solution
EOS EVM now officially supports multiple versions and the ability to perform a hard forks when required for future versions such as London Hard Fork detailed above.
This release implements a linear versioning system for EOS EVM hard forks, mapping each EOSEVM version to a corresponding EVMC revision:
EOSEVM Version | EVMC Revision |
---|---|
0 | ISTANBUL |
1 | SHANGHAI |
Note: for this release, EOS EVM is moving directly from Instanbul to Shanghai, including all support for London Hard Fork within that version.
Benefits
- Improved Transaction Efficiency: By adopting EIP-1559 and the PUSH0 opcode, EOS EVM ensures transactions are processed more efficiently, with a fee structure that adapts to network demand and simplifies certain operations.
- Cost Reduction and Predictability: The dual fee mechanism under EIP-1559, coupled with the dynamic gas fee algorithm, offers users a more predictable and often lower cost structure, especially less complex less or RAM-intensive transactions.
Bug fixes
MDBX configuration creating mapsize issue
The shared and exculsive flags set for MDBX were leading to an MDBX_MAP_FULL error.
Error building with ARM
There was an issue where the ARM version of protobuf was not being fetched properly and causing CMAKE to fail.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior 0.7.x version by replacing the binaries.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
- (144) bump abieos submodule
- (157) [0.7 -> main] blockchain-plugin: Shutdown node on error during block processing
- (162) [0.7 -> main] Merge nginx config change for long connection
- (164) [0.7 -> main] Update silkworm with fixes in fork switching
- (165) [0.7->main] Merge in nginx docker file fix for WS_ENDPOINT
- (168) [0.7 -> main] Bump 0.7.0-rc2 version
- (174) Update README.md
- (170) Support sync start from certain evm height
- (176) [0.7->main] Disable deprecated ship-start-from options
- (178) [0.7 -> main] Update README
- (180) [0.7 -> main] Bump 0.7.0 version
- (172) Add evmtx actions processing
- ([185](https://github...
EOS EVM Node v0.7.0
The latest release of EOS EVM Node introduces WebSocket support for EOS EVM, an RPC compatibility change, and several updates to improve system performance under heavy load.
This release contains changes to EOS EVM Node, EOS EVM RPC, EOS EVM Miner, and tx_proxy. This release also introduces eos-evm-ws-proxy.
Read on for more details.
New features
WebSocket support
PRs
WebSocket functionality is now supported via thew WebSocket Proxy (eos-evm-ws-proxy) which allows developers and users to establish real-time communication channels with the blockchain network. This initial implementation enables instant updates on events, transactions, and contract state changes, enhancing the user experience and enabling more interactive features in dApps.
The WebSocket proxy can be found within peripherals/eos-evm-ws-proxy
.
Other changes
Support the block parameter scheme for eth_call
PRs
- (134) Allow use object with "blockHash" and "blockNumber" field to specify block in eth_call and some other calls
The JSON-RPC method eth_call has been updated to add support for the use of an object to specify blockHash
and blockNumber
as part of the block parameter scheme.
Node fork handling behavior
Shut down EOS EVM Node when encountering error during block processing
Unexpected behavior was observed where Silkworm would continue to attempt to process transactions in later blocks when a previous block necessary to execute could not be found in the database, leading to a wrong nonce error. The behavior has been updated to shut down the node in these scenarios instead of continuing to attempt to process transactions.
Always ensure block is added to database regardless of header existing in cache
It was discovered that the fork switching logic in Silkworm does not clear the block header from the cache, which can lead to an edge case where a node recovering from a fork cannot add a block to the database when a block header is already previously stored. An update has been made to add blocks to the database even when a block header may be stored in the cache.
Miner connection settings
Use keepalive in tx-proxy to resolve http connection limit for miner
During a high traffic event the http connection limit in tx-proxy was being hit for EOS EVM Miner. The keepalive setting has been implemented for this connection to enable long connections from tx_proxy to miner as a workaround.
Feature Lifecycle Updates
All deprecated features, not yet removed
ship-start-from options
The mechanism to start EOS EVM Node from a specific block was discovered to not work as intended and as a result has been deprecated for removal in a future release.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior 0.6.x version by replacing the binaries.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
- (54) [0.6 -> main] Update silkworm
- (57) [0.6 -> main] update submodule to contain the fix. #55
- (59) [0.6 -> main] Bump 0.6.0-rc2 version
- (78) [0.6 -> main] Update silkworm (fix HashState stage, speed up Senders stage)
- (80) [0.6 -> main] Bump 0.6.0 version
- (74) Add initial version of eos-evm-ws-proxy
- (102) [0.6->main] Support batch requests in tx_proxy
- (104) [0.6->main] Update silkworm to include 0.6.1 fixes
- (87) basic websocket integration test
- (107) websocket: use batch request in getLogs
- (111) Add launch scripts
- (110) eos-evm-ws-proxy blockmonitor: Fix fork handling
- (117) [0.6->main] Merge in release 0.6 fix: trace quirk mode, eth_call blockhash fix, and eth_estimateGas now accept extra parameter
- (116) Update nginx config to support websocket traffic.
- (99) Websocket integration test for fork handling
- (119) route websocket proxy traffics to different destinations
- (124) [0.6 ->main] Merge in the fix for the quirk mode. Also include some fix to CI
- (127) [0.6->main] Update silkworm with PR #99 (EVMExecutor::reset fix)
- (130) [0.6 -> main] Bump 0.6.3 version
- (129) Prepare rate limit in nginx config files
- (131) Add ship-receiver-plugin defer tests
- (134) Allow use object with "blockHash" or "blockBumber" field to specify block in eth_call and some other calls
- (137) Add special signatures handling integration tests
- (136) ensure log always available if the same block is available
- (138) Update silkworm to HEAD of master
- (139) Bump 0.7.0-rc1 version
- (156) [0.6 -> 0.7] blockchain-plugin: Shutdown node on error during block processing
- (158) [0.6->0.7] Merge nginx config change for long connection
- (161) [0.6 -> 0.7] Update silkworm with fixes in fork switching
- (141) [0.7] Fix docker file to take WS_ENDPOINT
- (167) [0.7] Bump 0.7.0-rc2 version
- (169) [0.6] Disable deprecated ship-start-from options.
- (173) [0.6->0.7] pull option changes to disable ship-start-from options
- (175) [0.7] Update README.md
- (179) [0.7] Bump 0.7.0 version
Full Changelog: v0.6.3...v0.7.0
EOS EVM Node v0.7.0-rc2
This latest patch release includes fixes to Silkworm fork handling behavior and improved connection settings for eos-evm-miner.
This release contains changes to EOS EVM Node, EOS EVM RPC, and tx-proxy.
Read on for more details.
Updates
Node fork handling behavior
Shut down EOS EVM Node when encountering error during block processing
Unexpected behavior was observed where Silkworm would continue to attempt to process transactions in later blocks when a previous block necessary to execute could not be found in the database, leading to a wrong nonce error. The behavior has been updated to shut down the node in these scenarios instead of continuing to attempt to process transactions.
Always ensure block is added to database regardless of header existing in cache
It was discovered that the fork switching logic in Silkworm does not clear the block header from the cache, which can lead to an edge case where a node recovering from a fork cannot add a block to the database when a block header is already previously stored. An update has been made to add blocks to the database even when a block header may be stored in the cache.
Miner connection settings
Use keepalive in tx-proxy to resolve http connection limit for miner
During a high traffic event the http connection limit in tx-proxy was being hit for EOS EVM Miner. The keepalive setting has been implemented for this connection to enable long connections from tx_proxy to miner as a workaround.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior version by replacing the binaries.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
EOS EVM Node v0.6.4
This latest patch release includes fixes to Silkworm fork handling behavior and improved connection settings for eos-evm-miner.
This release contains changes to EOS EVM Node, EOS EVM RPC, and tx-proxy.
Read on for more details.
Updates
Node fork handling behavior
Shut down EOS EVM Node when encountering error during block processing
Unexpected behavior was observed where Silkworm would continue to attempt to process transactions in later blocks when a previous block necessary to execute could not be found in the database, leading to a wrong nonce error. The behavior has been updated to shut down the node in these scenarios instead of continuing to attempt to process transactions.
Always ensure block is added to database regardless of header existing in cache
It was discovered that the fork switching logic in Silkworm does not clear the block header from the cache, which can lead to an edge case where a node recovering from a fork cannot add a block to the database when a block header is already previously stored. An update has been made to add blocks to the database even when a block header may be stored in the cache.
Miner connection settings
Use keepalive in tx-proxy to resolve http connection limit for miner
During a high traffic event the http connection limit in tx-proxy was being hit for EOS EVM Miner. The keepalive setting has been implemented for this connection to enable long connections from tx_proxy to miner as a workaround.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior version by replacing the binaries.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
EOS EVM Node v0.7.0-rc1
The latest release candidate of EOS EVM Node introduces WebSocket support for EOS EVM and one additional compatibility change.
This release contains changes to EOS EVM Node, EOS EVM RPC, and tx_proxy. This release also introduces eos-evm-ws-proxy.
Read on for more details.
New features
WebSocket support
PRs
WebSocket functionality is now supported via thew WebSocket Proxy (eos-evm-ws-proxy) which allows developers and users to establish real-time communication channels with the blockchain network. This initial implementation enables instant updates on events, transactions, and contract state changes, enhancing the user experience and enabling more interactive features in dApps.
The WebSocket proxy can be found within peripherals/eos-evm-ws-proxy
.
Other changes
Support the block parameter scheme for eth_call
PRs
- (134) Allow use object with "blockHash" and "blockNumber" field to specify block in eth_call and some other calls
The JSON-RPC method eth_call has been updated to add support for the use of an object to specify blockHash
and blockNumber
as part of the block parameter scheme.
Building, compatibility, and upgrading
Building
The README in the eos-evm-node repository contains instructions on how to build EOS EVM Node and EOS EVM RPC.
Compatibility and upgrading
EOS EVM Node and EOS EVM RPC can be upgraded from the prior 0.6.x version by replacing the binaries.
Further details on changes since last release
Contributors
Special thanks to the contributors that submitted patches for this release:
Full list of changes since last release
PRs
- (54) [0.6 -> main] Update silkworm
- (57) [0.6 -> main] update submodule to contain the fix. #55
- (59) [0.6 -> main] Bump 0.6.0-rc2 version
- (78) [0.6 -> main] Update silkworm (fix HashState stage, speed up Senders stage)
- (80) [0.6 -> main] Bump 0.6.0 version
- (74) Add initial version of eos-evm-ws-proxy
- (102) [0.6->main] Support batch requests in tx_proxy
- (104) [0.6->main] Update silkworm to include 0.6.1 fixes
- (87) basic websocket integration test
- (107) websocket: use batch request in getLogs
- (111) Add launch scripts
- (110) eos-evm-ws-proxy blockmonitor: Fix fork handling
- (117) [0.6->main] Merge in release 0.6 fix: trace quirk mode, eth_call blockhash fix, and eth_estimateGas now accept extra parameter
- (116) Update nginx config to support websocket traffic.
- (99) Websocket integration test for fork handling
- (119) route websocket proxy traffics to different destinations
- (124) [0.6 ->main] Merge in the fix for the quirk mode. Also include some fix to CI
- (127) [0.6->main] Update silkworm with PR #99 (EVMExecutor::reset fix)
- (130) [0.6 -> main] Bump 0.6.3 version
- (129) Prepare rate limit in nginx config files
- (131) Add ship-receiver-plugin defer tests
- (134) Allow use object with "blockHash" or "blockBumber" field to specify block in eth_call and some other calls
- (137) Add special signatures handling integration tests
- (136) ensure log always available if the same block is available
- (138) Update silkworm to HEAD of master
- (139) Bump 0.7.0-rc1 version