Skip to content
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

Fix archive sync panic #1051

Merged
merged 11 commits into from
Dec 16, 2024
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion chainspecs/plain_spec_finney.json

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion chainspecs/raw_spec_finney.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions node/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ clap = { workspace = true, features = ["derive"] }
futures = { workspace = true, features = ["thread-pool"] }
scale-codec = { workspace = true }
serde = { workspace = true, features = ["derive"] }
hex = { workspace = true }

# Storage import
memmap2 = { workspace = true }
Expand Down
1 change: 1 addition & 0 deletions node/src/chain_spec/code_substitute_2585476.txt

Large diffs are not rendered by default.

23 changes: 21 additions & 2 deletions node/src/chain_spec/finney.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#![allow(clippy::unwrap_used)]

use super::*;
use hex::FromHex;

pub fn finney_mainnet_config() -> Result<ChainSpec, String> {
let path: PathBuf = std::path::PathBuf::from("./snapshot.json");
Expand Down Expand Up @@ -69,7 +70,7 @@ pub fn finney_mainnet_config() -> Result<ChainSpec, String> {
properties.insert("tokenDecimals".into(), 9.into());
properties.insert("ss58Format".into(), 42.into());

Ok(ChainSpec::builder(
let chain_spec = ChainSpec::builder(
wasm_binary,
Extensions {
bad_blocks: Some(HashSet::new()),
Expand Down Expand Up @@ -181,7 +182,25 @@ pub fn finney_mainnet_config() -> Result<ChainSpec, String> {
balances_issuance,
))
.with_properties(properties)
.build())
.build();

// Load and set the code substitute to avoid archive node sync panic
// See <https://github.com/opentensor/subtensor/pull/1051>
//
// Need to do it in this hacky way because the ChainSpec builder doesn't support setting it
let code_substitute_2585476_hex = include_bytes!("code_substitute_2585476.txt");
let chain_spec_json = chain_spec.as_json(false).unwrap();
let mut chain_spec_json = serde_json::from_str(&chain_spec_json).unwrap();
sc_chain_spec::set_code_substitute_in_json_chain_spec(
&mut chain_spec_json,
Vec::from_hex(code_substitute_2585476_hex)
.unwrap()
.as_slice(),
2585476,
);
let chain_spec_bytes = chain_spec_json.to_string().into_bytes();
let chain_spec = ChainSpec::from_json_bytes(chain_spec_bytes).unwrap();
Ok(chain_spec)
}

// Configure initial storage state for FRAME modules.
Expand Down
Loading