You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
According to the key: d5c41b52a371aa36c9254ce34324f2a53589c0dac50da6fb3a3611eb32bcd27ee976a782467ebe2b696d2d6f6e6c696e653a6f66666c696e , we know that the state db changed is the ReportsByKindIndex storage in pallet-offences (this module will count the offline validators at the end of the session).
bkchr was fixed in this PR paritytech/substrate#9049. ChainX v4.0.0 refers to polkadot-v0.9.11, which has replaced binary_search_by_key with partition_point. However, the launch time of ChainX v3.0.0 is 2021.08, and its source code refers to binary_search_by_key, which may make the ChainX mainnet run multiple node programs compiled by different compilers, which may trigger inconsistent results returned by binary_search_by_key.
We found the root cause, but it's not clear why specifying --execution-syncing=native or --execution-syncing=wasm with ChainX v3.0.0 stops syncing blocks. This means that code using ChainX v4.0.0 cannot synchronize all blocks from genesis. Fortunately, ChainX v3.0.0 specifies that NativeElseWasm mode (default) will continue to sync (also paniced at 'Storage root must match that calculated), which is why the ChainX v3.0.0 mainnet is still running.
(1) For blocks before #3038400, please use ChainX v3.0.0 to synchronize with NativeElseWasm (default mode)
(2) For blocks after #3038400, complete (1) first, and then replace ChainX v3.0.0 with ChainX v4.0.0 to complete the db migration (note that the migration process is irreversible, it is recommended to back up the data first)
The text was updated successfully, but these errors were encountered:
icodezjb
changed the title
Bebug: panicked at 'Storage root must match that calculated '
Debug: panicked at 'Storage root must match that calculated 'Mar 8, 2022
Known the same issues:
on ChainX
On others:
panicked at 'Storage root must match that calculated '
it is means that the execution results of native and wasm are inconsistent.
Debug:
./chainx3-release -d data --execution-syncing=both -lruntime=debug,state=trace --enable-console-log
Collect the log
Divide native logs and wasm logs into different files
Compare native log and wasm log
chainx-native.log
chainx-wasm.log
Analyze
According to the key:
d5c41b52a371aa36c9254ce34324f2a53589c0dac50da6fb3a3611eb32bcd27ee976a782467ebe2b696d2d6f6e6c696e653a6f66666c696e
, we know that the state db changed is the ReportsByKindIndex storage in pallet-offences (this module will count the offline validators at the end of the session).Then we found out that
binary_search_by_key
is called when theReportsByKindIndex
is updated, which is what causes polkadot to stop producing blocks.bkchr
was fixed in this PR paritytech/substrate#9049. ChainX v4.0.0 refers topolkadot-v0.9.11
, which has replacedbinary_search_by_key
withpartition_point
. However, the launch time of ChainX v3.0.0 is 2021.08, and its source code refers tobinary_search_by_key
, which may make the ChainX mainnet run multiple node programs compiled by different compilers, which may trigger inconsistent results returned bybinary_search_by_key
.We found the root cause, but it's not clear why specifying
--execution-syncing=native
or--execution-syncing=wasm
with ChainX v3.0.0 stops syncing blocks. This means that code using ChainX v4.0.0 cannot synchronize all blocks from genesis. Fortunately, ChainX v3.0.0 specifies that NativeElseWasm mode (default) will continue to sync (alsopaniced at 'Storage root must match that calculated
), which is why the ChainX v3.0.0 mainnet is still running.How to sync blocks from genesis
nightly-2020-09-30
or Download chainx-v3.0.0-ubuntu20.04-x86_64-unknown-linux-gnu-1NativeElseWasm (default mode)
The text was updated successfully, but these errors were encountered: