Documentation of all notable changes to the Godwoken related projects.
The format is based on Keep a Changelog.
A major change in this release is re-interpreting the meaning of the xxx_timepoint
field to finalized timestamp
.
Thus, we can use the CKB transaction's since
field to determine the l1 timestamp and to unlock l1 cells without reference to the Rollup cell. It also simplifies the finality determination of withdrawal cells.
We also adjust the documentation:
- doc: update Finality Mechanism Changes #913
Other changes:
In this version, an upgrading of on-chain scripts is included:
- feat: optimize Godwoken finality mechanism #836
- feat: deprecate verifications for state_checkpoint_list and prev_state_checkpoint #883
We also introduce a change to activate the new behavior.
- feat: determine global state version according to fork height#858
Experimental gas-less feature (discussion link):
- feat: (optionally) support gasless transactions #869
Other changes:
- perf: optional SMT trie feature and migrate command #859
- feat: optimized trace and metrics #865
- fix(withdrawal): finalized withdrawal take longer time to unlock #892
- chore(CI): add docker-prebuilds into monorepo #885
- feat: support non-x86 build #882
- config: deny unknown fields in the config toml file #862
- Cherry pick commits from develop branch to fix CI script tests #878
- fix: use mem pool state for “get block” RPCs #871
- fix: Support revert inner call state #835
- refactor(monorepo): Add godwoken-scripts #839 and godwoken-polyjuice #849 to monorepo
- fork(consensus): Increase l2 tx max cycles from 150M to 500M #852
- fix(pool): insert re-injected withdrawals to db #828
- fix(tools): fee rate is 0 in config file generated by tools #830
- fix(mem-pool): remove re-injected failed txs in mem pool #831
- feat: add rewind-to-last-valid-block subcommand #832
- fix: delete withdrawal info when detach block #833
- fix: check block size and retry if too large #834
- fix(psc): don't revert if transaction input is consumed by itself #819
- Decouple block producing, submission and confirming #776
- Increase max return data #822
- Add
fee_rate
option to block_producer config #815
- Support non EIP-155 transaction #777
- Fix withdrawal command in cli #792
- Support native token transfer #788
- fix(mempool): pool cycles not reset on next mem block for readonly node #781
- fix(tests): wait withdrawal pushed into mem pool #774
- Add RPC get_pending_tx_hashes #772
- feat: Introduce max_cycles_limit of a Godwoken block #767
- hotfix(rpc server): submit withdrawal missing data for submit_tx #770
- fix(config): optional block producer wallet for readonly node #768
- fix(rpc): calculate tx signature hash using packed bytes #760
- Automatically create account for undeposited sender #710
- Check sender's balance in
execute_raw_l2transaction
RPC #750 - Add export and import block command #754
- Fix gw-tools
stat-custodian-ckb
command #757 - Redirect layer 2 transaction syscall log to sentry #758
- fix(withdrawal unlocker): unhandle tx status unknown and rejected #764
- Fix gw-tools
transfer
command #744 - Fix gw-tools
create-sudt-account
command #747 - Return error if withdrawal capacity is lower than minimal withdrawal capacity #748
- Check sender's balance before execute transaction #750
- Refresh readonly mem-pool when receives new mem-block #721
- fix: reject transactions has less gas than the intrinsic gas #725
- Support packaging failed transactions into layer2 block #684
- Support upgrade backend executable binaries #713
- Support new option
max_txs
,max_deposits
andmax_withdrawals
in config file, these options controls the maximum number of each items in a block #714 - Return committed info on withdrawal query RPC #706
v1.1.0-beta - 2022-05-08
Note that Godwoken v1 is not an upgrade on the existing chain! Instead, v1 will be deployed as a new chain with tools to help users and developers migrate to the new chain.
In the new version, compatibility improvements for Godwoken include:
- Provide API level compatibility, remove the web3-provider plugin.
- Support native ETH address in API and EVM, remove the Godwoken address concept.
- Support Ethereum signature format and EIP-712. User can view the transaction before signing, instead of signing a random 32 bytes message. #561
- Fix the
totalSupply
interface of sUDT ERC-20 proxy contract #560 - Support interactive with eth address that hasn't been registered to Godwoken.
- Unify layer 2 fungible token represatation as uint256.
- Change layer 2 ckb decimal from 8 to 18, improve compatibility between metamask and native ckb. #675
Developers can use Godwoken v1 the same way they use other ethereum-compatible chains, requiring only switching the network to Godwoken. The polyjuice-provider web3 plugin was removed in Godwoken v1.
- Support p2p mem-pool syncing #642, further PRs are needed to enable fully decentralized syncing, but this PR is a good starting.
- perf: optimize molecule usage #640
- perf: use BTreeSet in FeeQueue #641
- Change rollup cell's lock to omni-lock #608. This PR enables the optimistic rollup to submit larger blocks to fix the inability of putting too much data in the witness field of a CKB transaction due to a secp256k1-lock limit.
If you are a Dapp developer, feel free to skip it and move on.
v1 adds a new concept in having the Ethereum address registry stores Ethereum addresses in Godwoken. Once user deposits a new account, Godwoken will create a mapping between the Ethereum address and the account script hash. In addition, some RPCs have been adapted to support Ethereum addresses as parameters, and some Godwoken data structures have been adapted to support the new address format.
More details about Godwoken internal changes refer to: docs/v1-release-note.md