This is an RC version to preview the changes in the next release.
The version v0.100.0 will bring hard fork upgrades to CKB. These features will be enabled when starting a new dev chain, but they are disabled when running testnet and mainnet so it is still compatible with the current mainnet (Lina) and testnet (Aggron). However, it will introduce many breaking changes:
- The field
uncles_hash
inheader
will be renamed toextra_hash
for all JSON RPC methods. - The field
hash_type
has a new allowed value "data1" but it is only valid after hard fork activation. - The default value of the parameter
OutputsValidator
in the JSON RPCsend_transaction
iswell_known_scripts_only
now. See #2821 for details.
See nervosnetwork/rfcs#242 for an overview of all the hard fork features.
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | macOS 10.12 or above | zip | PGP |
Linux | x64 | glibc, libstdc++ | tarball | PGP |
CentOS | x64 | glibc, libstdc++, openssl | tarball | PGP |
Windows* | x64 | VC++ Redistributable | zip | PGP |
Docker | dockerhub |
* Windows support is experimental.
** The binaries require following CPU instructions: call (MODE64), cmovbe (CMOV), xorps (SSE1), movq (SSE2)
Changes since v0.43.0
Features
-
#2715 hardfork: ckb2021 hardfork features (@yangby-cryptape)
-
#2756 hardfork: Ckb2021 hardfork features (vm related part) (@yangby-cryptape)
-
#2818 hardfork: Change field "hash_type" to an enumerated type (@yangby-cryptape)
BREAKING CHANGES: Revert breaking changes which were introduced in #2756.
-
-
#2797 hardfork: Reject vm1 lock script before hardfork started to keep compatible with old clients (@yangby-cryptape)
-
#2798 hardfork: Remove the header deps immature rule (@yangby-cryptape)
See [CKB-RFCs PR 240: RFC: Remove header deps immature rule](https://github.com/nervosnetwork/rfcs/pull/240)
-
#2819: Only send notifications when service is stated (@zhangsoledad)
-
#2817: Prepend the binary version to BlockAssemblerConfig message (@quake)
-
#2821: Change default
OutputsValidator
towell_known_scripts_only
(@quake) -
#2792 hardfork: Verify the epoch in since more strictly (@yangby-cryptape)
- A transaction with since absolute (or relative) epoch is valid only if
epoch_index
is less thanepoch_length
or bothepoch_index
andepoch_length
are zero. - Using rational number operations for both since absolute epoch and since relative epoch.
See more in nervosnetwork/rfcs#223
- A transaction with since absolute (or relative) epoch is valid only if
-
#2776 hardfork: Rename JSON RPC field "uncles_hash" to "extra_hash" (@yangby-cryptape)
-
#2799: Resumeble verification (@zhangsoledad)
Bug Fixes
-
#2785: Put migration version (@zhangsoledad)
A bug introduced by 220464f, cause the migration version do not put in the new created DB.
-
#2827: Fix peer store evict (@driftluo)
Originally, only the data in the largest group was considered, but now it is changed to traverse at least half of the groups
Improvements
-
#2755: Avoid unnecessary db creation (@zhangsoledad)
-
#2685: Replace
RwLock/Mutex<HashMap/HashSet>
with DashMap (@quake) -
#2736: Move state flag to
HeadersSyncState
enum (@quake)We are using 3 fields
sync_started
/sync_connected
/not_sync_until
in the headers sync process, this PR refactored them to a state machine enumHeadersSyncState
-
#2707: Use KeyedPriorityQueue to replace BTreeMap/HashSet (@quake)
-
#2791: Verify the epoch in block headers explicitly (@yangby-cryptape)
The data of epoch in bytes is not same as the
EpochNumberWithFraction
, which causes a few unintended consequences. -
#2822: Compatibility policy for configuration files (@yangby-cryptape)
-
Deny unknown configuration items.
To avoid several kinds of mistakes, for example, typos.
-
Allow deprecated configuration items, but they will be ignored; and warning messages will be output.
After several versions, if these deprecated items satisfied any of the following conditions, they will be fully removed (denied):- Not list in the default configuration files.
- Be tagged as "Experimental".
-
The default configuration files will not include any deprecated configuration items.
-
The default configuration files will not enable any experimental configuration items.
-
-
#2770: Use community contributed site for script error codes (@doitian)
-
#2779: Give an unique id to each global runtime thread (@yangby-cryptape)