BLOG May 29, 2019
NEO MainNet Upgrade Notice (Updated on June 11)
The NEO MainNet will be upgraded at 9:00 am on June 3rd, 2019 (GMT). In this upgrade, all MainNet consensus nodes will be upgraded to neo-cli v2.10.2 with the optimized dBFT 2.0 consensus algorithm. In order to improve network stability, the Network Fee mechanism will also be adjusted. The main change is the addition of additional Network Fees that will be charged relative to size on transactions larger than 1024 bytes. The specific implementation scheme is as follows:
1. Transactions with Network Fees lower than 0.001 GAS are classed as a Low Priority and cannot be larger than 1024 bytes. Only 20 Low Priority transactions are allowed per block. Low Priority transactions are selected from the mempool for block inclusion in order of Network Fee / byte ratio, then Network Fee value, then transaction size.
2. The starting Network Fee to become a High Priority transaction is 0.001 GAS. High Priority transactions can fill a block of up to 500 transactions. High Priority transactions are selected from the mempool for block inclusion in order of Network Fee / byte ratio, then Network Fee value, then transaction size.
3. If a transaction size exceeds 1024 bytes, the minimum Network Fee required will be based on the formula: (transaction size - 1024) * 0.00001 GAS + 0.001 GAS.
4. There are a few exceptions as follows:
- ClaimTransaction (GAS claim) is High Priority regardless of the Network Fee attached.
- The neo-cli v2.10.2 client will enforce a minimum 0.001 GAS Network Fee on all smart contract deployment and invocation transactions built by the client. Transactions built by light wallets and relayed by neo-cli 2.10.2 nodes will not have a Network Fee enforced unless they are larger than 1024 bytes.
5. For users who send transactions via RPC request, this upgrade will also provide users running a node with the ability to configure the maximum fee that they are willing to pay. This can be configured in the config.json file found in the RpcWallet plugin. If a transaction triggers a fee-charging condition, this configuration will protect users’ assets by only sending the transaction to the blockchain if the Network Fee does not exceed the customized maximum fee. Otherwise, the transaction will fail.
The fundamental purpose of the Network Fees is to prevent malicious transactions and network attacks. Normal transactions from ordinary users will not be affected by this mechanism.
Prior to the MainNet upgrade, it is recommended that all exchanges upgrade their neo-cli to v2.10.2 in advance. NEO related tools or projects should also be upgraded according to the new Network Fee mechanism to avoid any loss due to failed transaction executions caused by insufficient Network Fees.
Network Fee Summary
Transaction type |
Transaction size (byte) |
Minimum Network Fee (GAS) |
Assets transactions (except ClaimTransaction) | <= 1024 |
0 |
> 1024 |
(Tx size - 1024) ×0.00001 + 0.001 |
|
Deploy or invoke contracts on blockchain | <= 1024 |
0.001 (if built by neo-cli 2.10.2) |
> 1024 |
(Tx size - 1024) ×0.00001 + 0.001 |
|
ClaimTransaction | All |
0 |