Documentation of all notable changes to the Godwoken related projects.
The format is based on Keep a Changelog.
Features:
- chore: update ckb deps for the upcoming ckb 2023 hardfork #1106
CI:
- chore: fix out-of-disk in the rust.yml workflow #1097
Full Changelog: https://github.com/godwokenrises/godwoken/compare/v1.14.0…v1.15.0
Features:
- feat: timeout for rpc serve #1060
Bug fixes:
- fix: Cancel zero address as the default from address #1073
- fix: fix re-syncing race condition #1066
- fix: from > to should compare with number type, not string #1063
- Verify raw tx format when send raw transaction #1076
Full Changelog: https://github.com/godwokenrises/godwoken/compare/v1.13.0…v1.14.0
Upgrades:
- config: add new fork for mainnet at block#556000 #1055
- config: add new fork for testnet at block#2430000 #1040
Bug Fixes:
- Fix GwConfig constructor issue - @classicalliu in #1019
- Remove extra from RPC error in response - @Flouse in #1014
- Fix web3 unit tests environment issue - @classicalliu in #1015
- Fix Topic includes null in web3 - @classicalliu in #1024
- Fix native transfer in polyjuice to check gas limit before pay fee - @magicalne in #1011
- Handle invalid inputs in bn256 syscalls - @magicalne in #1022
- Fix get logs - @classicalliu in #1034
- Rpc-client retry on network error - @sopium in #1033
Features:
- Use delegate cell lock as rollup cell lock - @sopium in #940
- Enhance gw-tools commands - @sopium in #983
- Automatically adjust fee rate - @sopium in #999
Full Changelog: https://github.com/godwokenrises/godwoken/compare/v1.12.2…v1.13.0
- fix debug_replay_transaction rpc name #1016
- fix(web3): remove
extra
from RPC error in response in #1013
- config(mainnet.toml): bump Polyjuice backend to v1.5.3 #1000
- config: add new fork for testnet at block#1916000 #993
- fix(withdrawal_unlocker): remove dry_run_transaction and fix error display #992
The web3
and web3-indexer
components have been added to the monorepo since this release, and we bumped the version from v1.8.x
to v1.12.x
to unify the version.
We introduced a breaking change of the config file in #946. The consensus-related options are moved into option consensus
, and we put the builtin testnet
and mainnet
consensus into the godwoken program. This change reduces the operation works of node maintainers.
Highlights:
Bug fixes:
Enhenchment:
- chore: use TransactionDB and refactor store #903
- chore: refactor rpc server #927
- Improve the error code of API when executing transactions #930
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