github nervosnetwork/ckb v0.118.0
ckb 0.118.0 (b0bde9f 2024-09-14)

3 hours ago

Breaking Changes

RPC

  • #4365 removes the orphan_blocks_size field in the sync_state RPC.
  • #4576 adds limit to the RPC methods to get cells.
  • #4583 adds tx_index to TxStatus for get_transaction RPC.

Highlights

The featured changes in the new release are:

  1. Asynchronous Block Download and Verification: This enhancement improves the efficiency of block requests and verification during the initial block download (IBD) phase. It introduces asynchronous operations, changes to the sync_state RPC, and updates to the log format.

  2. New spawn with scheduler: This change is only available in the next version of CKB consensus rules. It refactors the implementation of spawn and introduces a new syscall API.

  3. New script verify with ckb-vm pause: This change introduces several improvements to the script verification process. It uses a job queue for pending transactions, multiple workers for verification, and changes the verification style to async. It also includes changes related to resuming/suspending the VM, removing snapshots from VM machines, and removing the "Suspend" state from cache. All transactions from remote peers will be added to the queue for verification.

Compatibility Table

Network Consensus Version Minimal CKB Version
dev ckb2023 since epoch 0
testnet ckb2021 since epoch 3113 v0.101.0
mainnet ckb2021 since epoch 5414 v0.103.0

See how to connect to various chains in Wiki.

Default assume valid target

Downloads

OS Arch Runtime Dependencies Package Sign
macOS x64 macOS 10.15 or above zip PGP
macOS (Portable) x64 macOS 10.15 or above zip PGP
macOS ARM64 macOS 10.15 or above zip PGP
macOS (Portable) ARM64 macOS 10.15 or above zip PGP
Linux x64 glibc, libstdc++ tarball PGP
Linux (Portable) x64 glibc, libstdc++ tarball PGP
CentOS x64 glibc, libstdc++ tarball PGP
CentOS (Portable) x64 glibc, libstdc++ tarball PGP
Windows x64 VC++ Redistributable zip PGP
Linux ARM64 glibc, libstdc++ tarball PGP
Docker dockerhub

The .asc files are signatures. It is wise and more secure to check out for the files integrity.

Try the portable variants if the binaries complains about illegal instructions.

Changes since v0.117.0

Features

  • #4365: Asynchronous Block Download and Verification (@eval-exec)

    This PR introduces several enhancements to the CKB Synchronizer to reduce synchronization time
    during the initial block download (IBD) phase. Key changes include:

    1. Asynchronous Operations: The Synchronizer sliding window movement is now decoupled from the block verification process in the ChainService, allowing asynchronous handling. This improves the efficiency of block requests and verification.
    2. Changes to sync_state RPC:
      • Added tip_hash and tip_number to represent the current chain tip.
      • Added unverified_tip_hash and unverified_tip_number to track the latest received but not yet verified blocks.
      • Removed the orphan_blocks_size field.
    3. Log Format Update: The format of CKB logs has been updated, specifically changing the prefix and content of log entries to provide clearer and more structured information.

    These updates lead to a more efficient synchronization process, reducing the overall time
    required for IBD. Note that removing the orphan_blocks_size field constitutes a BREAKING CHANGE
    in the sync_state RPC.

  • #4380: New spawn with scheduler (@mohanson)

    This change is only available in the next version of CKB consensus rules.

    In this PR, we refactored the implementation of spawn. The refactored syscall API is defined as follows: https://github.com/XuJiandong/ckb-c-stdlib/blob/syscall-spawn/ckb_syscall_apis.h#L54-L68.

    Review Introduction: #4380 (comment)

    Documentation: nervosnetwork/rfcs#436

  • #4291: New script verify with ckb-vm pause (@chenyukang)

    1. Use a job queue for pending transactions waiting for verifying
    2. Multiple workers trigger the verification process by picking task from queue
    3. Verification is changed to async style
    4. Use channel to resume/suspend vm
    5. No snapshot from VM machines
    6. No Suspend state from cache
    7. All transactions from remote peer will be added into queue

Bug Fixes

  • #4562: Fix sync relayer collaboration (@driftluo)

  • #4576: Add limit to get cells (@driftluo)

    This is a breaking change to RPC. The RPC to get cells may fail when exceeding the limit.

  • #4612: Verify worker exit when signal_exit is cancelled (@chenyukang)

Improvements

  • #4529: Add jsonrpc batch request limit (@chenyukang)

  • #4583: Add tx_index to TxStatus for get_transaction RPC (@eval-exec)

    This is a breaking change to the RPC.

  • #4591: VerifyQueue: re_notify other Worker when OnlySmallCycleTx received a large cycle tx (@eval-exec)

Compare changes in GitHub

Don't miss a new ckb release

NewReleases is sending notifications on new releases.