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
Foundry does not allow blocks that have the same timestamp.
Foundry allows blocks from the future, up to 5 seconds. For instance, if the current timestamp is A, a block with the timestamp A + 7 will be rejected.
When creating a block, the timestamp of the block will be min(parent block's timestamp + 1, current timestamp).
What happened:
If a node creates blocks faster than 1 block/sec, it will eventually generate blocks with future timestamps. We are assuming that if the foundry itself creates a block, it is always valid. Since a block that has a future timestamp violates the assumption, foundry stops at a strange point.
Here is the panic log:
====================
stack backtrace:
0: 0x55e341b60163 - backtrace::backtrace::libunwind::trace::h78e882580cf0470d
at /home/juhyung/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.7/src/backtrace/libunwind.rs:53
- backtrace::backtrace::trace::he884cb33efaf1cc8
at /home/juhyung/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.7/src/backtrace/mod.rs:42
1: 0x55e341b51643 - backtrace::capture::Backtrace::new_unresolved::h2195345b6bfc30d0
at /home/juhyung/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.7/src/capture.rs:88
2: 0x55e341b5159d - backtrace::capture::Backtrace::new::h364652a813c7f694
at /home/juhyung/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.7/src/capture.rs:63
3: 0x55e3400dc2ed - panic_hook::panic_message::h50fdd7579f1d10ec
at util/panic_hook/src/lib.rs:75
4: 0x55e3400dbb7a - panic_hook::panic_hook::hbdf778282053c9fe
at util/panic_hook/src/lib.rs:44
5: 0x55e3400de8a7 - core::ops::function::Fn::call::h74b5112062c5f02a
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libcore/ops/function.rs:69
6: 0x55e341eb782f - std::panicking::rust_panic_with_hook::hbe174577402a475d
at src/libstd/panicking.rs:468
7: 0x55e341eb72fd - std::panicking::continue_panic_fmt::h4d855dad868accf3
at src/libstd/panicking.rs:373
8: 0x55e341eb71e5 - rust_begin_unwind
at src/libstd/panicking.rs:302
9: 0x55e341ed89ad - core::panicking::panic_fmt::hdeb7979ab6591473
at src/libcore/panicking.rs:139
10: 0x55e341ed8a16 - core::option::expect_failed::h6c3ec3658ee2670d
at src/libcore/option.rs:1185
11: 0x55e3405da3c1 - core::option::Option<T>::expect::h197b26790b12cd05
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libcore/option.rs:345
12: 0x55e34094c9cf - codechain_core::consensus::tendermint::worker::Worker::broadcast_proposal_block::he7fd2a2fc5a7e5d4
at core/src/consensus/tendermint/worker.rs:1567
13: 0x55e3409491b3 - codechain_core::consensus::tendermint::worker::Worker::on_timeout::h00be05dcbfa25fba
at core/src/consensus/tendermint/worker.rs:1320
14: 0x55e340803558 - codechain_core::consensus::tendermint::worker::Worker::spawn::{{closure}}::h0daa882c0626e5cd
at core/src/consensus/tendermint/worker.rs:320
15: 0x55e340935b81 - std::sys_common::backtrace::__rust_begin_short_backtrace::h9b01b58ab4cc8ed9
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/sys_common/backtrace.rs:129
16: 0x55e3408f02a0 - std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::hab353df2b7b7e832
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/thread/mod.rs:469
17: 0x55e34091fbb0 - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h5452be344df113f7
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/panic.rs:317
18: 0x55e34096b0cd - std::panicking::try::do_call::h92eebfceeca86128
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/panicking.rs:287
19: 0x55e341ec0579 - __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:78
20: 0x55e34096a557 - std::panicking::try::h632d8b03394d7d4e
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/panicking.rs:265
21: 0x55e34091fdf2 - std::panic::catch_unwind::had57540be874eeec
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/panic.rs:396
22: 0x55e3408ef955 - std::thread::Builder::spawn_unchecked::{{closure}}::ha85ccfc2020068e0
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/thread/mod.rs:468
23: 0x55e3404103e3 - core::ops::function::FnOnce::call_once{{vtable.shim}}::hc4b4c1b1a2fc8a6c
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libcore/ops/function.rs:227
24: 0x55e341ea56de - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h3534c64212330b0c
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/liballoc/boxed.rs:942
25: 0x55e341ebf63f - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h338c10574a337ece
at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/liballoc/boxed.rs:942
- std::sys_common::thread::start_thread::h761ac6d57710d65d
at src/libstd/sys_common/thread.rs:13
- std::sys::unix::thread::Thread::new::thread_start::h61c012ef60f933c0
at src/libstd/sys/unix/thread.rs:79
26: 0x7f63f973b668 - start_thread
27: 0x7f63f9647322 - clone
28: 0x0 - <unknown>
Thread 'tendermint' panicked at 'Proposal vote is generated before', src/libcore/option.rs:1185
This is a bug. Please report it at:
https://github.com/CodeChain-io/codechain/issues/new
The text was updated successfully, but these errors were encountered:
majecty
changed the title
Foundry panicks if block is generated faster than 1 block/sec
Foundry panics if block is generated faster than 1 block/sec
Mar 3, 2020
Background:
A + 7
will be rejected.What happened:
If a node creates blocks faster than 1 block/sec, it will eventually generate blocks with future timestamps. We are assuming that if the foundry itself creates a block, it is always valid. Since a block that has a future timestamp violates the assumption, foundry stops at a strange point.
Here is the panic log:
The text was updated successfully, but these errors were encountered: