Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Foundry panics if block is generated faster than 1 block/sec

Đang mở
#228 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
rust
Lĩnh vực
blockchain

Hướng nghiên cứu

Bắt đầu trong core/src/consensus/tendermint/worker.rs, đặc biệt là broadcast_proposal_block ở dòng 1567 và on_timeout ở dòng 1320. Tái hiện việc tạo block với tốc độ nhanh hơn một block mỗi giây và theo dõi cách xử lý timestamp của proposal. Được xem là hoàn tất khi việc tạo block nhanh không còn dẫn đến panic “Proposal vote is generated before” và các block được tạo vẫn hợp lệ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug

Background:

  • 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
 
Ngôn ngữ chính
Rust
Star
36
Fork
11
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của CodeChain-io/foundry

Tất cả issue của CodeChain-io/foundry

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.