Skip to content

Releases: nervosnetwork/ckb

ckb 0.15.0-rc1 (rylai-v4 c08d4eae 2019-06-21)

21 Jun 14:18
v0.15.0-rc1
Compare
Choose a tag to compare

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)

21 Jun 11:52
v0.14.2
82acb54
Compare
Choose a tag to compare
  • 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

ckb 0.14.1 (rylai-v3 v0.14.1 2019-06-16)

16 Jun 07:48
v0.14.1
114efcb
Compare
Choose a tag to compare
  • 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.

Changes since v0.14.0

Bug Fixes

ckb 0.14.0 (rylai-v3 v0.14.0 2019-06-15)

15 Jun 04:32
v0.14.0
03f2534
Compare
Choose a tag to compare
  • 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
  • #908: Peers handle disconnect (@keroro520)

  • #891: Secp256k1 multisig (@jjyr)

  • #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

    1. get rid uncle age limit
    2. try include disconnected block as uncle
  • #920: Tweak consensus params (@zhangsoledad)

    This is a breaking change: b:consensus

    tweak block_cycles_limit and min_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 format cmd to prints the
      command line options for ckb 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.

  • #915: Sync blocked by protected peer (@TheWaWaR)

  • #906: Proposal table reload (@zhangsoledad)

  • #983: Uncle number should smaller than block (@zhangsoledad)

    This is a breaking change: b:consensus

Improvements

  • #981 sync: Fix get ancestor performance issue (@TheWaWaR)

    It's a backport of PR #970

Misc

  • #966: Backport windows support and sentry cleanup to v0.14.0 (@doitian)

v0.14.0-rc2

13 Jun 08:44
v0.14.0-rc2
175a53d
Compare
Choose a tag to compare
v0.14.0-rc2 Pre-release
Pre-release

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

Improvements

  • #981 sync: Fix get ancestor performance issue (@TheWaWaR)

    It's a backport of PR #970

v0.14.0-rc1

06 Jun 15:12
v0.14.0-rc1
712daf5
Compare
Choose a tag to compare
v0.14.0-rc1 Pre-release
Pre-release

This is a preview of v0.14.0, it is not compatible with current testnet.

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
  • #908: Peers handle disconnect (@keroro520)

    • Handle disconnected inside Peers
    • Rename n_sync_started/n_protected_outbound_peers
    • Remove imlicitly clone for Peers
  • #891: Secp256k1 multisig (@jjyr)

    Used in alert system #887

  • #845: Limit TXO set memory usage (@yangby-cryptape)

    This is a breaking change: b:database

    Commits

    • feat: add a function to traverse all keys for database

    • feat: save cell set into database (but not used)

      BREAKING CHANGE: Add new column to store cell set into database.

    • refactor: loading CellSet do not have to load all blocks

    • perf: delete transactions whose all cells are dead

    • fix: the order to apply cell set diff is very important

    Issue

    #228

    Notes

    • I insist on the opinion: save live cells is better than save transactions which include at least one live cell.

      We can use a only-key-and-no-value database (for example, Redis) to store live cells (CellOutPoint as key).

      I tried, but it's too difficult to adapt to current logic, so I gave up.

    • I didn't change current design about how to use CellSet, I just made them be persisted.

    • All transactions which include at least one live cell, are still kept in memory.

      But the transactions which don't have any live cells are removed from memory.

  • #874: Revise uncle rule (@zhangsoledad)

    This is a breaking change: b:consensus, b:database

    1. get rid uncle age limit
    2. try include disconnected block as uncle
  • #920: Tweak consensus params (@zhangsoledad)

    This is a breaking change: b:consensus

    tweak block_cycles_limit and min_block_interval

  • #897: Wrap the log macros to fix ill formed macros (@yangby-cryptape)

    Commits:

    • chore: update the log filter template in configuration
    • chore: apply new log macros to sync & relay
    • chore: apply new log macros to util/* & ckb-bin
    • chore: apply new log macros to verification & shared
    • chore: apply new log macros to rpc & notify
    • chore: apply new log macros to network
    • chore: apply new log macros to miner
    • chore: apply new log macros to chain
    • (important) feat: wrap the log macros to fix ill formed macros

    And, we have to update the log filters, add prefix ckb- for all our crates, since I use target: env!("CARGO_PKG_NAME").

  • #919: Synchronizer and relayer share BlocksInflight (@keroro520)

    • test: Add test for losing BlockTXN messages

    • fix: Remove relayer's compact_block_filter, filter duplicated compact blocks via BlocksInFlight
      Currently, we discard the new arriving compact blocks if we had already received the same one, via RelayState::compact_block_filter. The purpose is avoiding re-processing/re-requesting the same compact blocks. But the problem is, if we failed to reconstruct a compact block, we cannot process this compact block anymore, before receiving the corresponding transactions from peer1. That's terrible if peer1's inventory was lost on the way.

      Here I remove RelayState::compact_block_filter, and insteadly use Peers::blocks_inflight to avoid re-requesting to same peers.

    • fix: Cache pending compact block at peer-level, but not global-level

  • #924: Add a transaction error InsufficientCellCapacity (@yangby-cryptape)

    For #900.

  • #926: Make a better error message for miner when method not found (@yangby-cryptape)

    For #904.

Bug Fixes

  • #878: Calculate the current median time from tip (@keroro520)

    This is a breaking change: b:consensus

    BREAKING CHANGE: 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.

  • #915: Sync blocked by protected peer (@TheWaWaR)

  • #906: Proposal table reload (@zhangsoledad)

Improvements

  • #909: Move best_known_headers/last_common_headers into peer_state (@keroro520)

    • best_known_header and last_common_header are both state of peer. So I move them into PeerState. And add wrap functions for them, so that hides the locks outside.

Misc

  • #966: Backport windows support and sentry cleanup to v0.14.0 (@doitian)

v0.13.0 rylai-v2

01 Jun 05:25
v0.13.0
94025b9
Compare
Choose a tag to compare
  • Code Name: rylai-v2
  • Genesis Hash: 0xeb897810b75a922309d748c0d16e7a980e0de1cc0ba0e0e3e3bda6f2e03cbc1b
  • Launch Time: 2019-06-01 UTC 6:00 AM
  • End Time: 2019-06-15 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
Docker dockerhub

* Windows support is experimental.

Changes since v0.12.0

Features

  • #762: Live cell block hash (@keroro520)

    This is a breaking change: b:rpc

    • Return block_hash for get_cells_by_lock_hash
    • Add make gen-doc command
  • #841: Apply tx_pool limit (@zhangsoledad)

    This is a breaking change: b:cli, b:rpc

    1. apply tx_pool limit
    2. tx size verify, enforce tx size below block size limit

    BREAKING CHANGES:

    config ckb.toml

    [tx_pool]
    - max_pool_size = 10000
    - max_orphan_size = 10000
    - max_proposal_size = 10000
    - max_cache_size = 1000
    - max_pending_size = 10000
    - txs_verify_cache_size = 100000
    + max_mem_size = 20_000_000 # 20mb
    + max_cycles = 200_000_000_000
    + max_verfify_cache_size = 100_000

    rpc tx_pool_info

    + "total_tx_cycles": "2",
    + "total_tx_size": "156",
  • #890: Revise remainder reward rule (@zhangsoledad)

    This is a breaking change: b:consensus

  • #876: Tweak consensus params (@zhangsoledad)

    This is a breaking change: b:consensus

  • #889: Add codename in version (@doitian)

  • #854: Calculate median time by tracing parents (@keroro520)

    At present, the way calculating the passed median time is that collects block timestamps one by one by block_number. This PR change to collects blocks timestamps by tracing parents. The new way is more robust.

    In addition to this, I use assert-style to rewrite the calculation of passed median time.

  • #859: Use snappy to compress large messages (@driftluo)

    This is a breaking change: b:p2p

    On the test net monitoring, the bandwidth usage is often in a full state. We try to use the snappy compression algorithm to reduce network transmission consumption.

    After testing, the compression yield of flatbuffer format is very high, cpu consumption is relatively acceptable.

    The following is the data transmission on the test net:

    2019-05-20 16:27:41.875 +08:00 tokio-runtime-worker-7 DEBUG compress  raw_data len: 625400, compress used time: 3.635121ms, compress_data size: 335401, compression ratio: 0.536298369043812, decompress used time: 1.496667ms
    2019-05-20 16:27:42.128 +08:00 tokio-runtime-worker-6 DEBUG compress  raw_data len: 633544, compress used time: 3.789752ms, compress_data size: 335462, compression ratio: 0.5295007134468955, decompress used time: 1.490144ms
    2019-05-20 16:27:42.340 +08:00 tokio-runtime-worker-6 DEBUG compress  raw_data len: 633216, compress used time: 3.998678ms, compress_data size: 333458, compression ratio: 0.5266101930462906, decompress used time: 1.593165ms
    2019-05-20 16:27:42.558 +08:00 tokio-runtime-worker-5 DEBUG compress  raw_data len: 632992, compress used time: 3.453616ms, compress_data size: 333552, compression ratio: 0.5269450482786512, decompress used time: 1.052606ms
    2019-05-20 16:27:42.740 +08:00 tokio-runtime-worker-2 DEBUG compress  raw_data len: 633760, compress used time: 1.256847ms, compress_data size: 340022, compression ratio: 0.5365154001514769, decompress used time: 545.473µs
    2019-05-20 16:37:43.934 +08:00 tokio-runtime-worker-1 DEBUG compress  raw_data len: 186912, compress used time: 659.317µs, compress_data size: 42640, compression ratio: 0.22812874507789763, decompress used time: 515.287µs
    2019-05-20 16:37:47.338 +08:00 tokio-runtime-worker-3 DEBUG compress  raw_data len: 186520, compress used time: 189.079µs, compress_data size: 42334, compression ratio: 0.22696761741368218, decompress used time: 150.644µs
    2019-05-20 16:37:50.729 +08:00 tokio-runtime-worker-3 DEBUG compress  raw_data len: 186520, compress used time: 197.656µs, compress_data size: 42336, compression ratio: 0.22697834012438345, decompress used time: 145.5µs
    2019-05-20 16:38:52.549 +08:00 tokio-runtime-worker-4 DEBUG compress  raw_data len: 95904, compress used time: 217.968µs, compress_data size: 33801, compression ratio: 0.3524461961961962, decompress used time: 95.818µs
    2019-05-20 16:39:32.522 +08:00 tokio-runtime-worker-0 DEBUG compress  raw_data len: 47320, compress used time: 418.183µs, compress_data size: 17183, compression ratio: 0.363123415046492, decompress used time: 252.148µs
    

    Note that this is a break change, the data is modified as follows:

    By default, data above 40k enters compressed mode.

    From the current point of view, the high bit 1 is the compressed format and the high bit 0 is the uncompressed format.

    If you want to support multiple compression formats in the future, you can simply think that 0b1000 is in snappy format and 0b0000 is in uncompressed format.

     # Message in Bytes:
    
     +---------------------------------------------------------------+
     | Bytes | Type | Function                                       |
     |-------+------+------------------------------------------------|
     |   0   |  u1  | Compress: true 1, false 0                      |
     |       |  u7  | Reserved                                       |
     +-------+------+------------------------------------------------+
     |  1~   |      | Payload (Serialized Data with Compress)        |
     +-------+------+------------------------------------------------+
    
  • #921: Upgrade CKB VM to latest version (@xxuejie)

    This upgrade contains the following changes:

    Refactors

    Bug fixes

    Chore

Bug Fixes

  • #812: Prof should respect script config (@xxuejie)

  • #810: Discard invalid orphan blocks (@keroro520)

    When accepts a new block, its descendants should be accepted too if valid. So if an error occurs when we try to accept its descendants, the descendants are invalid.

  • #850: Ensure EBREAK has proper cycle set (@xxuejie)

    This is a breaking change: b:consensus

    This is a bug reported by @yangby-cryptape. Right now we didn't assign proper cycles for EBREAK, which might lead to potential bugs.

  • #886: Integration test cycle calc (@zhangsoledad)

  • fix: Cuckoo cycle verification bug (@yangby-cryptape)

Improvements

  • #832: peer_store db::PeerInfoDB interface (@jjyr)

v0.12.2 rylai-v1-p2

20 May 14:57
v0.12.2
7a0c0b7
Compare
Choose a tag to compare
v0.12.2 rylai-v1-p2 Pre-release
Pre-release

Compatible Testnet: rylai-v1
Testnet Genesis Hash: 0xaad9b82caa07f5989dfb8caa44927f0bab515a96ccaaceba82c7bea609fec205

Features

  • #838: Limit name in chainspec (@doitian)

    Only ckb_dev is allowed in the chainspec loaded from file.

  • #840: Modify subcommand ckb init. (@doitian)

    • Export specs/dev.toml when init for dev chain.
    • Deprecate option --export-specs.
    • Rename spec to chain in options.
      • Add option --chain and deprecate --spec
      • Add option --list-chains and deprecate --list-specs
    • Rename export to create in messages.
  • #843: Secp256k1 block assembler (@doitian)

    • Remove the default block assembler config. If user want to mine, they must configure it.
  • #856: Revamp the secp256k1 support in CKB (@doitian)

    • Remove keygen feature added in #843
    • Add ckb cli blake160 and ckb cli blake256 utilities to compute hash.
    • Add ckb cli secp256k1-lock to print block assembler config from
      a secp256k1 pubkey.

v0.12.1 rylai-v1-p1

18 May 13:46
v0.12.1
ab9b044
Compare
Choose a tag to compare
v0.12.1 rylai-v1-p1 Pre-release
Pre-release

Compatible Testnet: rylai-v1
Testnet Genesis Hash: 0xaad9b82caa07f5989dfb8caa44927f0bab515a96ccaaceba82c7bea609fec205

Bug Fixes

  • #825: Filter out p2p field in address (@TheWaWaR)

  • #826: Ban peer deadlock (@TheWaWaR)

  • #829 docker: Fix docker problems found in rylai (@doitian)

    • avoid dirty flag in version info
    • bind rpc on 0.0.0.0 in docker
    • fix docker files permissions

v0.12.0 rylai-v1

17 May 18:52
v0.12.0
fd28b4a
Compare
Choose a tag to compare
v0.12.0 rylai-v1 Pre-release
Pre-release

Compatible Testnet: rylai-v1
Testnet Genesis Hash: 0xaad9b82caa07f5989dfb8caa44927f0bab515a96ccaaceba82c7bea609fec205

Features

  • #633: Remove cycles config from miner (@zhangsoledad)

  • #614: Verify compact block (@keroro520)

  • #642: Incorporate assembly based CKB VM interpreter (@xxuejie)

  • #622: Allow type script in cellbase (@quake)

  • #620: Generalize OutPoint struct to reference headers as well (@xxuejie)

  • #651: Add syscall to load current script hash (@xxuejie)

  • #656: Add rpc get_epoch_by_number (@keroro520)

  • #662: Add txs verify cache (@zhangsoledad)

  • #670: Upgrade CKB VM version (@xxuejie)

    The new version contains fixes for 2 bugs revealed in comprehensive testing.

  • #675: Limit sync header timeout by MAX_HEADERS_LEN (@keroro520)

  • #678: Update lock script due to protocol changes (@xxuejie)

  • #671: Add rpc get blockchain info (@keroro520)

    • Add rpc get_blockchain_info
    • Add rpc get_peers_state, currently only return the info of blocks synchronizing in flight.
  • #653: Add rpc experiment module (@keroro520)

    • Add rpc dry_run_transaction
    • Add rpc _compute_transaction_id
    • Enable Experiment moduel by default
  • #689: Upgrade VM to latest version (@xxuejie)

    Noticeable changes here include:

    • Shrink VM memory from 16MB to 4MB now for both resource usage and performance
    • Use Bytes in VM API to avoid unnecessary copying
    • Use i8 as VM return code for better debugging
  • #686: Update default lock script to sign on transaction hash now (@xxuejie)

  • #690: Use script to generate rpc doc (@keroro520)

  • #701: Remove always success code hash (@xxuejie)

  • #703: Stringify numbers in rpc (@keroro520)

  • #709: Database save positions of CellOutputs in Transaction (@yangby-cryptape)

  • #720: Move DryRuResult into jsonrpc-types (@keroro520)

    • Move DryRunResult into jsonrpc-types
    • Complete rpc-client used in integration testing
  • #718: Initial NervosDAO implementation (@xxuejie)

    Note that this is now implemented as a native module for the ease of experimenting ideas. We will move this to a separate script later when we know more about what the actual NervosDAO implementation should look like.

  • #714: Enforce resolve txs order within block (@zhangsoledad)

    Transactions are expected to be sorted within a block
    Transactions have to appear after any transactions upon which they depend

  • #731: Use future_task to avoid blocking (@jjyr)

  • #735: Panic if it's likely to reach a deadlock (@yangby-cryptape)

  • #742: Verify uncle max proposals limit (@zhangsoledad)

  • #736: Transaction since field support epoch-based verification rule (@jjyr)

  • #745: Genesis block customization (@doitian)

  • #772: Prof support start from non-zero block (@jjyr)

  • #781: Add secp256k1 in dev chainspec (@doitian)

  • #811: Upgrade CKB VM to latest version with performance improvements (@xxuejie)

  • #822: Add load witness syscall (@xxuejie)

  • #806: peer_store support retry and refresh (@jjyr)

  • #579: epoch revision (@zhangsoledad)

  • #632: Ignore staled block (@keroro520)

More Changes

Bug Fixes

Improvements

BREAKING CHANGES

  • Database version is incompatible, please remove the old data dir.
  • Genesis header hash changed.
  • Genesis cellbase transaction hash changed.
  • System cells start from 1 in the genesis cellbase outputs instead of 0.
  • System cells lock changed from all zeros to always fail.
  • Always success is no longer included in dev genesis block.
  • Header format changed, use proposals hash to replace proposals root.