Prevent high S signatures (and possibly other malleability causes) by consensus
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- cpp
- Lĩnh vực
- blockchain
Hướng nghiên cứu
Issue không đề cập đến tệp, kiểm thử hay điểm vào nào. Cần đạt được sự thống nhất về thiết kế đối với thay đổi đồng thuận được đề xuất, các quy tắc bổ sung có thể có về tính dễ biến đổi và các yêu cầu triển khai trước khi người mới có thể xác định hướng triển khai.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Is your feature request related to a problem? Please describe.
Pre-segwit inputs cause problems for services building on both Bitcoin and Liquid, due to potential tx malleability (discussed extensively elsewhere). This increases the complexity of coding software which mediates or processes txs for users.
In Bitcoin the relationship to block miners is adversarial - if it is in their interest to do so, they can malleate a tx (or accept a malleated tx via non-standard means) and mine a valid block with it. In Elements/Liquid however the block producers are financially invested in the integrity of the chain and are are expected to not be malicious. A block producer including a malleated tx which facilitates a double spend or theft could erode the trust in the chain and its functionaries. Note that this could happen if a block producer is hacked for example, and not just out of malice/greed.
Liquid/Elements are potentially more sensitive to this issue given the push to build more complex contract structures, where dependent txs can be invalidated by malleation.
Describe the solution you'd like
High-S signatures are already non-standard and cannot be relayed. I propose for Elements we make such signatures invalid by consensus also. By doing so we prevent any possible bad behaviour by block producers, and at the same time reduce the barrier of entry/complexity of creating services using the chain.
Describe alternatives you've considered
The alternative is to do nothing and continue with the status quo. As above this makes building on Elements chains more difficult which could hamper future growth.
Additional context
Note that anyone holding back an old, validly-signed high-S tx must already transmit it OOB to a block producer in order to have it included in the chain. They, or the block producer can always maleiate the sig back to low-S in order to include it after this change is made.
A consensus failure can only occur while this change is deployed to the block producers, and only if one of them decides to fork the chain deliberately. As above the block producers are not incentivized to destroy the chain they work on, nonetheless this risk should be mitigated where required by whatever means are available (For example, updates to any legal contract).
It is possible that other standardness checks could also become consensus checks for Elements however they are not detailed here.
- Ngôn ngữ chính
- C++
- Star
- 1.2k
- Fork
- 418
- Merge trung bình
- 1 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 13
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ElementsProject/elements
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 58/100
ElementsProject/elements#1555 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 30/100
ElementsProject/elements#1521 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 32/100
ElementsProject/elements#1516 · 5 bình luận ·
-
Compilation error on WSL Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
ElementsProject/elements#1502 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 38/100
ElementsProject/elements#1500 · 2 bình luận ·
Tất cả issue của ElementsProject/elements
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
Component: GLib
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Mute ydb/tests/functional/dstool/test_canonical_requests.py.Test.test_group_take_snapshot in main Đang mởai_reviewed
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
ydb-platform/ydb#53974 · 3 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
google/libultrahdr#485 ·