zksync-era icon indicating copy to clipboard operation
zksync-era copied to clipboard

fix: zk init

Open thomas-nguy opened this issue 1 year ago • 1 comments

What ❔

Current zk init has multiple issues

  • it tries to run the server genesis setup before l1 contracts are deployed which result the following error
Error: Failed to save SetChainId upgrade transaction

Caused by:
    Expected a single set_chain_id event, got these 0: []

Stack backtrace:
   0: std::backtrace_rs::backtrace::libunwind::trace
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1: std::backtrace_rs::backtrace::trace_unsynchronized
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2: std::backtrace::Backtrace::create
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/backtrace.rs:331:13
   3: std::backtrace::Backtrace::capture
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/backtrace.rs:297:9
   4: anyhow::error::<impl anyhow::Error>::msg
   5: zksync_server::main::{{closure}}
   6: tokio::runtime::park::CachedParkThread::block_on
   7: tokio::runtime::context::runtime::enter_runtime
   8: tokio::runtime::runtime::Runtime::block_on
   9: zksync_server::main
  10: std::sys_common::backtrace::__rust_begin_short_backtrace
  11: std::rt::lang_start::{{closure}}
  12: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/core/src/ops/function.rs:284:13
  13: std::panicking::try::do_call
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panicking.rs:524:40
  14: std::panicking::try
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panicking.rs:488:19
  15: std::panic::catch_unwind
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panic.rs:142:14
  16: std::rt::lang_start_internal::{{closure}}
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/rt.rs:148:48
  17: std::panicking::try::do_call
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panicking.rs:524:40
  18: std::panicking::try
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panicking.rs:488:19
  19: std::panic::catch_unwind
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panic.rs:142:14
  20: std::rt::lang_start_internal
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/rt.rs:148:20
  21: _main
  22: <unknown>
  • The DB is initialized twices which slow down the init process

Why ❔

Checklist

  • [x] PR title corresponds to the body of PR (we generate changelog entries from PRs).
  • [x] Tests for the changes have been added / updated.
  • [x] Documentation comments have been added / updated.
  • [x] Code has been formatted via zk fmt and zk lint.
  • [x] Spellcheck has been run via zk spellcheck.
  • [x] Linkcheck has been run via zk linkcheck.

thomas-nguy avatar May 08 '24 12:05 thomas-nguy

What's the best way to reproduce the error?

Could you list the commands please?
I ran zk init as usual with no errors

Try zk init and make sure to delete previous docker volumes (db and geth) or other previous data folders

you will see this error

Error: Failed to save SetChainId upgrade transaction

Caused by:
    Expected a single set_chain_id event, got these 0: []

Stack backtrace:
   0: std::backtrace_rs::backtrace::libunwind::trace
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1: std::backtrace_rs::backtrace::trace_unsynchronized
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2: std::backtrace::Backtrace::create
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/backtrace.rs:331:13
   3: std::backtrace::Backtrace::capture
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/backtrace.rs:297:9
   4: anyhow::error::<impl anyhow::Error>::msg
   5: zksync_server::main::{{closure}}
   6: tokio::runtime::park::CachedParkThread::block_on
   7: tokio::runtime::context::runtime::enter_runtime
   8: tokio::runtime::runtime::Runtime::block_on
   9: zksync_server::main
  10: std::sys_common::backtrace::__rust_begin_short_backtrace
  11: std::rt::lang_start::{{closure}}
  12: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/core/src/ops/function.rs:284:13
  13: std::panicking::try::do_call
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panicking.rs:524:40
  14: std::panicking::try
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panicking.rs:488:19
  15: std::panic::catch_unwind
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panic.rs:142:14
  16: std::rt::lang_start_internal::{{closure}}
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/rt.rs:148:48
  17: std::panicking::try::do_call
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panicking.rs:524:40
  18: std::panicking::try
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panicking.rs:488:19
  19: std::panic::catch_unwind
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/panic.rs:142:14
  20: std::rt::lang_start_internal
             at /rustc/5c6a7e71cd66705c31c9af94077901a220f0870c/library/std/src/rt.rs:148:20
  21: _main
  22: <unknown>
  

The reason is that you can not setup server genesis before the l1 smart contracts are deployed

thomas-nguy avatar May 09 '24 14:05 thomas-nguy