-
Notifications
You must be signed in to change notification settings - Fork 159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC33: ckb vm version1 changes #236
Conversation
See #235, it's planned to use PR number as the RFC number. If you have multiple RFCs to submit, please split it into multiple PRs. |
Please mention #232 how the node selects VM versions.
|
For vm version 1 in CKB, one special rule can be added. If the loaded ELF has an ELF section named “.ckb.forks”, CKB-VM will skip executing the binary, and just treat the program as always success script. The consumed cycles are just the ones used to load the script and boot the VM. CKB nodes of the next fork version (ckb2021) should not relay transactions with ".ckb.forks" section because they cannot verify it. |
2756: feat(hardfork): ckb2021 hardfork features (vm related part) r=doitian,quake a=yangby-cryptape ### Changes - New hardfork Features - [CKB-RFCs PR 236: RFC: ckb vm version1 changes](nervosnetwork/rfcs#236) - [CKB-RFCs PR 237: RFC: vm syscalls 2](nervosnetwork/rfcs#237) - [CKB-RFCs PR 238: CKB VM version selection](nervosnetwork/rfcs#238) - All changes are followed to the latest RFCs, except: - Add a "edition" field to all configuration files: CKB chain specification or app configurations. #### CKB Chain Edition - If no `edition` field, the default edition is `"2019"`. - After this PR, the default files created by `ckb init` will be edition `"2021"` files. But the public chains will still use the edition `"2019"` CKB chain specification as the built-in spec. At present, there are only to public chains: "mainnet" and "testnet". - The edition `"2019"` doesn't support hardfork parameters. - How to upgrade from edition `"2019"` to `"2021"`? Modify your spec file (default is `specs/dev.toml`), `ckb.toml` and `ckb-miner.toml`: - Update all `hash_type = "data"` to `hash_type.kind = "data"` and `hash_type.vm_version = 0`. - Update all `hash_type = "type"` to `hash_type.kind = "type"`. - Insert `edition = "2021"` into the head of the files. After upgrade the edition of chain specification, the first time to run the CKB, you have to use `--overwrite-spec` parameter. The details of this parameter can be found with `ckb run --help`. ### BREAKING CHANGES - The field `hash_type` in `Script` is changed from a `String` to an `Object` for all JSON RPC methods. The details can be found in the latest RFCs. - The argument `--ba-hash-type` for `ckb init` is split into two arguments: `--ba-hash-type-kind` and `--ba-hash-type-vm-version`. More details can be found with `ckb-release init --help`. Co-authored-by: mohanson <mohanson@outlook.com> Co-authored-by: Boyu Yang <yangby@cryptape.com>
Please change RFC numbers according to #246 . Sorry for the inconvenience. |
No description provided.