Releases: Conflux-Chain/conflux-rust
Conflux v0.6.0
Bug Fixes
-
Fix inconsistent logics for TrackTouched.
-
Make sure all internal account exists at genesis block, otherwise some
readonly operation may crash. -
Fix incorrect usages of require() in vm operations. In most cases creation of
basic account in its absense is undesired, especially when the address is a
contract. When a user account is to be created, the address space is checked. -
Fix issue in processing snapshot chunk boundary which caused crash. The bug
was caused by a wrong assumption of the uniqueness of the trie proof key. -
Fix incorrect receipt in refunding code collateral when contract suicides.
-
Fix crash when a contract suicides during creation.
-
Fix db error handling for EVM create / call.
-
Prevent crashes due to unchecked address space.
Incompatible Changes
-
Change the PoW algorithm.
-
Change StorageValue serialization to reduce space.
-
Changed COMMISSION_PRIVILEGE_STORAGE_VALUE.
-
Remove address from Account rlp format, which was included unexpectedly
before. -
Changed RewardInfo struct to add author info.
-
Invalid address in transaction execution will trigger an error.
-
The SELFDECONSTRUCT operation will fail if refund to invalid address.
-
Change the logic when reentrancy happens. (Message call with empty data and <= 2300 gas is exempt from reentrancy check.)
Improvements
-
Unify all public rpc with hex number, the following fields from RPC will be changed from decimal to hexadecimal:
- BlameInfo.blame
- Block.blame
- CallRequest.storageLimit
- ConsensusGraphBlockState.blockStatus
- EpochNumber::Num
- Receipt.index
- Receipt.epochNumber
- Receipt.outcomeStatus
- Status.pendingTxNumber
- SyncGraphBlockState.timestamp
-
Rename local rpc send_transaction with cfx_sendTransaction.
-
Improve the performance of the consensus layer for unstable TreeGraph scenarios.
-
Complete the protocol version mechanism for node communications and bump
the protocol version to V2. The change is backwards-compatible except for
msgid::THROTTLE (0xfe). -
Add chain_id field into sync protocol and light protocol handshake message
so that peers can disconnect peers from another Conflux chain, e.g. testnet,
another testnet. -
Keep network_id the same as chain_id. Setting network_id is only for local
experimental purposes. -
Improve the transaction replacement rule in tx-pool: now a transaction can
replace one with same sender and nonce by higher gas-price or by same gas-price
and larger epoch height. -
Change the nonce to 256 bits from 64 bits
-
Introduce nonce based lower bound in the PoW difficulty calculation. This
will help to defend against block withholding attack among mining pools in
future. With this change and careful PoW design, a mining pool can withhold
the top 128 bits of the nonce as the server nonce and the participants of
the pool will not be able to tell whether they mined a block or not. -
Improve the stratum protocol to make it more consistent with the convention.
Now the stratum protocol can correctly work with an external miner. -
Separate
deposit_list
andvote_stake_list
fromAccount
and adjust the gas cost forwithdraw
,deposit
,vote_lock
internal contract call. Now, the gas cost for there three functions is related with the length ofdeposit_list
orvote_stake_list
. -
Disable transaction index persistence by default. This will reduce the disk usage
for miners. If you want to reliably serve transaction-related RPCs, you should
setpersist_tx_index=true
in the configuration file manually. -
A new RPC ctx_getBlockRewardInfo to query block reward information inside a
given epoch. -
Compute transaction root and receipts root by a simple MPT where the key is
the index in big endian bytes representation of fixed length with leading zero
and the value is the bytes representation of the corresponding data, e.g.
transaction hash for transaction root, Receipt rlp for block receipts root.
The receipts root is the Merkle root of the simple MPT of block receipts roots. -
Use raw bytes in blame vec hash calculation instead of rlp because each
element of the vec is fixed length H256. -
Add support for CHAINID, SELFBALANCE, BEGINSUB, JUMPSUB, RETURNSUB opcodes.
-
NUMBER opcode in call_virtual() now returns the correct block number.
-
BLOCKHASH opcode now returns the last block hash (i.e.,
blockhash(block.number - 1)
)
or zero if not querying the last block hash. -
Disable reentrancy of contract calling through other contracts.
-
Change the default value of
from_epoch
in RPCcfx_getLogs
from "earliest" to "latest_checkpoint".
Now if nofrom_epoch
is specified, it will only return logs after the latest checkpoint. -
Improve archive and full node log filtering. Change
filter.to_epoch
default to"latest_state"
. Limitfilter.block_hashes
to up to 128 items. -
Change internal contracts address to 0x088800...
-
Enable overflow-checks for release build, to make sure that underflow is
impossible. -
Reduce the lock dependency between the transaction pool and the consensus engine to improve the performance.
-
Transaction pool will not start until the node finishes the catch-up. This
avoids inconsistent transaction pool issues during the catch up. -
New cfx_clientVersion() rpc call to return a string with versions
-
Change CREATE/CREATE2 maximum code size from 24K to 48K
Conflux v0.6.0-rc-3
Release v0.6.0-rc-3.
Conflux v0.6.0-rc-2
-
Cleanup debug output.
-
Fix an issue that may cause block headers deleted unexpectedly.
Conflux v0.6.0-rc-1
- Use a new PoW algorithm.
Conflux v0.6.0-alpha-3
-
Fix block syncing issues caused by timestamps in the future.
-
Add RPC
cfx_clientVersion
. -
Fix a bug when maintaining total_issued.
Conflux v0.6.0-alpha-2
Update to v0.6.0-alpha-2.
Conflux v0.6.0-alpha-1
Release v0.6.0-alpha-1.
Conflux v0.5.2
Release v0.5.2.
Conflux v0.5.2-alpha-3
Release v0.5.2-alpha-3.
Conflux v0.5.1
-
Fix issues that may lead to synchronization failure for new nodes.
-
Fix issues about the full node mode. Now if the node is launched with
--full
, it should run a full node successfully. -
Fix compatibility issues about Windows and other Linux systems.
-
Add more robust checks in peer management to prevent attacks and reduce false alarms.
-
Optimize snapshot synchronization performance and safety.
-
Optimize performance in case of long forks.
-
Add more RPC supports and fix other RPC issues.
-
Other optimizations and bug fix.