Releases: nervosnetwork/ckb
v0.17.0-pre1
This is the preview of 0.17.0, which is not compatible with current testnet.
Downloads
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | 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.
Changes since v0.15.0
Features
-
#1119: Remove rules of special reserve blocks (@doitian)
This is a breaking change: b:consensus, b:database
For block 1~11, the reward target is genesis block. Yes the reward for genesis is issued multiple times.
Genesis block must have the lock serialized in the cellbase witness, which is set to
bootstrap_lock
. -
#1125: Add get_header and get_header_by_number RPC methods (@TheWaWaR)
Add two RPC methods
get_header
get_header_by_number
Usage scenario:
ckb-cli
get genesis block header to distinguishtestnet
andmainnet
SPV
client just get headers to verify a transaction
-
#1124: Allow TransactionScriptsVerifier set custom debugger printer (@TheWaWaR)
Current
Debugger
only log the output and can not detected by outside.Here we pass a callback to process debug output.
-
#1094: Secondary miner issurance, split DAO as a separate contract (@xxuejie)
This is a breaking change: b:consensus, b:database
-
#1137: Remove output for bootstrap lock in genesis block (@doitian)
The lock has already been written into the cellbase witness in the genesis block.
-
#1138:
--ba-data
requires--ba-arg
or--ba-code-hash
(@doitian)
Bug Fixes
-
#1092: Random failure caused by dirty exit in RPC test (@doitian)
Close the server before exit RPC test.
-
#1097: IBD should remain false once returned false (@quake)
This PR is trying to resolve IBD peer timeout slow switching issue for some special case, e.x. node resume after hibernation, it's a performance optimization also.
bitcoin reference: https://github.com/bitcoin/bitcoin/blob/0b68fca700713e8e4c843c982b6047dc04410bc0/src/validation.cpp#L1027
-
#1101: Fix debug log state error (@driftluo)
fix debug log state error
-
#1103: Fix sync logic (@driftluo)
- fix protect node count
- fix header sync eviction condition
-
#1108: Potential error in alert version compare (@jjyr)
As @keroro520 mentioned, there is a potential bug in case like:
"0.10.0" < "0.9.10"
-
#1127: Process orphan blocks when their parents were relayed (@keroro520)
- test: Add an integration-test
test_relay_parent_of_orphan_block
- feat: Move
orphan_block_pool
intoSyncSharedState
- fix: Process orphan blocks when their parents were relayed. If relayer does not process the orphan_block_pool when inserting a new relaying block, it may leave some orphan blocks that be unable to re-process any further. This change makes synchronizer and relayer share the same one implementation of
insert_new_block
, so the above bug been fixed.
- test: Add an integration-test
-
#1135: Total difficulty comparison should include hash (@quake)
resolve similar bug as #1100 and refactor the previous fix to method.
-
#1150: Correct block number from tx_pool_excutor (@keroro520)
- fix: The block number of the coming block should be
tip_number + 1
NOTE: This is a breaking change
- fix: The block number of the coming block should be
-
#1196: Reserved only do nothing except for connect all reserved peers (@driftluo)
Reserved only do nothing except for connect all reserved peers
Improvements
-
#1072: Reveal network errors and involver handle it (@keroro520)
-
feat: Reveal network errors. Currently, when
CKBProtocolContext
receives an error from p2p, it only logs the error and doesn't return to the caller. I change toCKBProtocolContext
return the error to the caller, and caller handles it. -
perf: Short-circuiting break if occurs network error,
Synchronizer
responsesBlocks
andTransactions
. This is the original intention of this PR. To achieve it, I have to makeCKBProtocolContext
reveals the network errors, which introduces most of the change code.
-
-
#1073: Define a general Filter struct (@keroro520)
-
#1098: Avoid re-requesting blocks in orphan pool (@keroro520)
-
#1032 storage: Use flatbuffer instead of bincode in storage (@yangby-cryptape)
This is a breaking change: b:database
Misc
ckb 0.15.5 (rylai-v4 8a788e54 2019-07-06)
- Code Name: rylai-v4
- Genesis Hash: 0xd5c54b0c699ef009edfedb00d8fb8198ac5ce1e9e266b9110a8972e1b05aba88
- Secp256k1 Code Hash: 0x94334bdda40b69bae067d84937aa6bbccf8acd0df6626d4b9ac70d4612a11933
- Launch Time: 2019-06-29 UTC 6:00 AM
- End Time: 2019-07-13 UTC 5:00 AM
This is a bug fixing release and is compatible with v0.15.0.
Ensure you are running the correct node by checking the genesis hash in the log output.
Downloads
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | 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.
Changes since v0.15.0
Features
Bug Fixes
-
#1179: Random failure caused by dirty exit in RPC test (@doitian)
Close the server before exit RPC test.
-
#1195: Hotfix rc0.15 (@zhangsoledad)
- fix fetch invalid block
- fix response invalid block
- fix repeat process block overwrite block ext
-
#1164: Ban peer when validate received block failed (@TheWaWaR)
-
#1167: Proposal reward calculate consistency (@zhangsoledad)
-
#1143:
get_ancestor
is inconsistent (@zhangsoledad) -
#1148: Sync block download filter (@zhangsoledad)
Node should fetch download from all peers which have better chain,
no matter it's known best's ancestor or not.
ckb 0.15.3 (rylai-v4 a0d2cba3 2019-07-02)
- Code Name: rylai-v4
- Genesis Hash: 0xd5c54b0c699ef009edfedb00d8fb8198ac5ce1e9e266b9110a8972e1b05aba88
- Secp256k1 Code Hash: 0x94334bdda40b69bae067d84937aa6bbccf8acd0df6626d4b9ac70d4612a11933
- Launch Time: 2019-06-29 UTC 6:00 AM
- End Time: 2019-07-13 UTC 5:00 AM
This is a bug fixing release and is compatible with v0.15.0.
Ensure you are running the correct node by checking the genesis hash in the log output.
Downloads
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | 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.
Changes since v0.15.0
Bug Fixes
-
#1143: Get_ancestor consistent (@zhangsoledad)
-
#1148: Sync block download filter (@zhangsoledad)
Node should fetch download from all peers which have better chain,
no matter it's known best's ancestor or not.
ckb 0.15.0 (rylai-v4 7cb6cff7 2019-06-29)
!!Attention!!: We found a serious bug in this version and are working on a solution. We'll publish a new release when it is fixed.
- Code Name: rylai-v4
- Genesis Hash: 0xd5c54b0c699ef009edfedb00d8fb8198ac5ce1e9e266b9110a8972e1b05aba88
- Secp256k1 Code Hash: 0x94334bdda40b69bae067d84937aa6bbccf8acd0df6626d4b9ac70d4612a11933
- Launch Time: 2019-06-29 UTC 6:00 AM
- End Time: 2019-07-13 UTC 5:00 AM
Ensure you are running the correct node by checking the genesis hash in the log output.
Downloads
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | 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.
Changes since v0.14.2
RPC changes
- Add new RPC module Indexer.
- Response schema of
get_current_epoch
,get_epoch_by_number
has changed.
"result": {
- "block_reward": "100000000000",
"difficulty": "0x3e8",
- "last_block_hash_in_previous_epoch": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "epoch_reward": "125000000000000",
"length": "1250",
"number": "0",
- "remainder_reward": "0",
"start_number": "0"
}
- Response schema of
get_blockchain_info
has changed
"result": {
+ "alerts": [],
"chain": "main",
"difficulty": "0x3e8",
"epoch": "0",
"is_initial_block_download": true,
- "median_time": "1557311762",
- "warnings": ""
+ "median_time": "1557311762"
}
Config files changes
ckb-miner.toml
chain.spec
[chain]
-spec = "specs/testnet.toml"
+spec = { file = "specs/testnet.toml" }
ckb.toml
chain.spec
[chain]
-spec = "specs/testnet.toml"
+spec = { file = "specs/testnet.toml" }
New options network.upnp
and network.discovery_local_address
[network]
+# If set to true, try to register upnp
+upnp = false
+# If set to true, network service will add discovered local address to peer store, it's helpful for private net development
+discovery_local_address = false
New option block_assembler.data
+# Also, ckb allows the miners to add any data to the cellbase that they have dug out.
+# The data must be A 0x-prefixed hex string.
+#
+# note: The data field is optional.
+#
+# **WARNING**: if data is larger than the capacity value of the current cellbase,
+# it will be truncated
+#
+# [block_assembler]
+# code_hash = "0xf1951123466e4479842387a66fabfd6b65fc87fd84ae8e6cd3053edb27fff2fd"
+# args = [ "ckb cli blake160 <compressed-pubkey>" ]
+# data = "0x prefix hex string"
Highlights
-
#922: Feat: proposer reward (@zhangsoledad)
This is a breaking change: b:consensus
- earliest transaction proposer get 40% of the transaction fee as a reward.
- block reward finalized after proposal window close.
- enforce one-input one-output one-witness on cellbase.
-
#1054: Replace system cell (@driftluo, @jjyr)
BREAKING CHANGE: It changes the default secp256k1 script, which now uses recoverable signature.
Features
-
#931: Add a function to select all tx-hashes from storage for a block (@yangby-cryptape)
-
#910: Implement the alert system in CKB for urgent situation (@jjyr)
This is a breaking change: b:p2p, b:rpc
-
- upgrade p2p dependence
- support
upnp
optional
-
#978: Use new identify protocol (@driftluo)
The current identify protocol does not play a role in identifying the capabilities of both parties, and the message structure is not reasonable.
So, I rewrote it and added the capability ID and network ID.
-
#1000: Allow miner add an arbitrary message into the cellbase (@driftluo)
-
#1047: Stats uncle rate (@zhangsoledad)
-
#1088: Revise epoch rpc (@zhangsoledad)
This is a breaking change: b:rpc
Bug Fixes
- #969: Update code hashes to correct value (@xxuejie)
- #998: Fix confusing JsonBytes deserializing error message (@driftluo)
- #1011:
witnesses_root
calculation should include cellbase (@u2) - #1022: Avoid dummy worker re-solve the same works (@keroro520)
- #1044: Peer_store time calculation overflow (@jjyr)
- #1066: Check new block based on orphan block pool (@keroro520)
- #1077: Resolve
ChainSpec
script deserialize issue (@quake) - #1084: Cellset consistency (@zhangsoledad)
Improvements
- #938: Remove low S check from util-crypto (@jjyr)
- #959: Remove redundant interface from ChainProvider (@zhangsoledad)
- #970 sync: Fix get ancestor performance issue (@TheWaWaR)
- #976: Flatten network protocol state into
SyncSharedState
(@keroro520) - #1051: Get
tip_header
from store instead of fromchain_state
(@jjyr) - #971: Abstract data loader layer to decouple
ckb-script
andckb-store
(@jjyr) - #994: Wrap lock methods to avoid locking a long time (@keroro520)
ckb v0.15.0-rc2 (rylai-v4 1c031e8 2019-06-28)
This is a preview release for v0.15.0, which will be released on Jun 29, 2019. See details in #1091.
The package contains ckb-cli
as well starting from this version.
Attention: It is not compatible with current testnet, please always use the latest release
ckb 0.15.0-rc1 (rylai-v4 c08d4eae 2019-06-21)
This is a preview release for v0.15.0, which will be released on Jun 29, 2019. See details in #1091.
Attention: It is not compatible with current testnet, please always use the latest release
ckb 0.14.2 (rylai-v3 v0.14.2 2019-06-21)
- Code Name: rylai-v3
- Genesis Hash: 0xc3b42742ea8658c93de23f16a10c43212bd8b24a6bde5a93b8446dba3fb2a728
- Secp256k1 Code Hash: 0xf1951123466e4479842387a66fabfd6b65fc87fd84ae8e6cd3053edb27fff2fd
- Launch Time: 2019-06-15 UTC 6:00 AM
- End Time: 2019-06-29 UTC 6:00 AM
This is a bug fixing release and is compatible with v0.14.0 and v0.14.1.
If your node stops synchronizing blocks with other nodes, please download this new version.
Downloads
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | 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.
Changes since v0.14.0
Bug Fixes
- #1076:
CellSet
is inconsistent in memory and storage (@zhangsoledad) - #1066: Check new block based on orphan block pool (@keroro520)
ckb 0.14.1 (rylai-v3 v0.14.1 2019-06-16)
- Code Name: rylai-v3
- Genesis Hash: 0xc3b42742ea8658c93de23f16a10c43212bd8b24a6bde5a93b8446dba3fb2a728
- Secp256k1 Code Hash: 0xf1951123466e4479842387a66fabfd6b65fc87fd84ae8e6cd3053edb27fff2fd
- Launch Time: 2019-06-15 UTC 6:00 AM
- End Time: 2019-06-29 UTC 6:00 AM
This is a bug fixing release and is compatible with v0.14.0. The miner log now prints the correct block hash.
Downloads
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | 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.
ckb 0.14.0 (rylai-v3 v0.14.0 2019-06-15)
- Code Name: rylai-v3
- Genesis Hash: 0xc3b42742ea8658c93de23f16a10c43212bd8b24a6bde5a93b8446dba3fb2a728
- Secp256k1 Code Hash: 0xf1951123466e4479842387a66fabfd6b65fc87fd84ae8e6cd3053edb27fff2fd
- Launch Time: 2019-06-15 UTC 6:00 AM
- End Time: 2019-06-29 UTC 6:00 AM
Attention: The default secp256k1 code hash has changed, remember to check the block assembler config.
Ensure you are running the correct node by checking the genesis hash in the log output.
Downloads
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | 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.
Changes since v0.13.0
Features
-
#913: New verification model (@xxuejie)
This is a breaking change: b:consensus, b:database, b:p2p, b:rpc
Based on feedbacks gathered earlier, we are revising our verification
model with the following changes:- When validating a transaction, CKB will grab all lock scripts from
all inputs, and group them based on lock script hash. The script in
each group will only be run once. The lock script itself will have
to do the validation task for all inputs in the same group - CKB will also grab all type scripts from inputs and outputs(notice
different from previous version, the type scripts in inputs are
included here as well), and group them based on type script hash as
well. Each type script in each group will also be run once. The type
script itself needs to handle the validation task within the group - Syscalls are also revised to allow fetching all the
inputs/outputs/witnesses within a single group. - Input args is removed since the functionality can be replicated elsewhere
- When validating a transaction, CKB will grab all lock scripts from
-
#908: Peers handle disconnect (@keroro520)
-
#845: Limit TXO set memory usage (@yangby-cryptape)
This is a breaking change: b:database
-
#874: Revise uncle rule (@zhangsoledad)
This is a breaking change: b:consensus, b:database
- get rid uncle age limit
- try include disconnected block as uncle
-
#920: Tweak consensus params (@zhangsoledad)
This is a breaking change: b:consensus
tweak
block_cycles_limit
andmin_block_interval
-
#897: Wrap the log macros to fix ill formed macros (@yangby-cryptape)
And, we have to update the log filters, add prefix
ckb-
for all our crates. -
#919: Synchronizer and relayer share BlocksInflight (@keroro520)
-
#924: Add a transaction error
InsufficientCellCapacity
(@yangby-cryptape) -
#926: Make a better error message for miner when method not found (@yangby-cryptape)
-
#961: Display miner worker status (@quake)
BREAKCHANGE: config file
ckb-miner.toml
changed -
#1001:
ckb init
supports setting block assembler (@doitian)ckb init
accepts options--ba-code-hash
and--ba-arg
(which can
repeat multiple times) to set block assembler.ckb cli secp256k1-lock
adds an output formatcmd
to prints the
command line options forckb init
to set block assembler.
The two commands can combine into one to init the directory with a secp256k1 compressed pub key:
ckb init $(ckb cli secp256k1-lock <pubkey> --format cmd)
-
#996: Tweak consensus parameters (@doitian)
- Change target epoch duration to 4 hours
- Reduce epoch reward to 1/4
- Increase secondary epoch reward to 600,000 bytes
Bug Fixes
-
#878: Calculate the current median time from tip (@keroro520)
This is a breaking change: b:consensus
Original implementation use
[Tip-BlockMedianCount .. Tip-1]
to calculate the current block median time. According to the notion of BlockMedianTime in bip-0113 , here change to use[Tip-BlockMedianCount+1 .. Tip]
instead. -
#906: Proposal table reload (@zhangsoledad)
-
#983: Uncle number should smaller than block (@zhangsoledad)
This is a breaking change: b:consensus
Improvements
Misc
v0.14.0-rc2
This is a pre-release. It is not compatible with the current testnet, which is running the latest release.
OS | Arch | Runtime Dependencies | Package | Sign |
---|---|---|---|---|
macOS | x64 | 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.
Changes since v0.14.0-rc1
Features
-
#961: Display miner worker status (@quake)
BREAKCHANGE: config file
ckb-miner.toml
changed- feat: display miner worker status
- refactor: add miner worker trait, prepare for
Cuckoo
cpu and gpu miner plugin
Bug Fixes
-
#983: Uncle number should smaller than block (@zhangsoledad)
This is a breaking change: b:consensus