summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Dashjr <luke-jr+git@utopios.org>2023-07-26 19:54:18 +0000
committerLuke Dashjr <luke-jr+git@utopios.org>2023-07-26 19:54:18 +0000
commit9d4ec80215727779142862d023c5d253ed3a997b (patch)
treee437b03efa3b182a1db43c386d3adc238f485a81
parent69d872461b239059d134c195347267289e19535d (diff)
downloadbips-9d4ec80215727779142862d023c5d253ed3a997b.tar.xz
bip-0300: Reorder upvote vector version numbers to leave 1/2 bytes as version 1,2 respectively
-rw-r--r--bip-0300.mediawiki6
1 files changed, 5 insertions, 1 deletions
diff --git a/bip-0300.mediawiki b/bip-0300.mediawiki
index 5a09935..0f2ef6e 100644
--- a/bip-0300.mediawiki
+++ b/bip-0300.mediawiki
@@ -287,7 +287,11 @@ The upvote vector will code "abstain" as 0xFF (or 0xFFFF); it will code "alarm"
For example: if there are two sidechains, and we wish to upvote the 7th bundle on sidechain #1 plus the 4th bundle on sidechain #2, then the upvote vector would be { 07, 04 }. And M4 would be [0x6A,D77D1776,00,0006,0003].
-The version number allows us to shrink the upvote vector in many cases. Version 0x00 requires a full two bytes per sidechain, but it always works. Version 0x01 uses half that (one byte per sidechain), and it works while all sidechains have fewer than 255 disputed withdrawals (ie, 99.99%+ of the time). Version 0x02 uses zero bytes (ie, 6 bytes for the whole M4) and sets this block's M4 equal to the previous block's M4. Version 0x03 upvotes only those withdrawals that are leading their rivals by at least 50 votes.
+The version number allows us to shrink the upvote vector in many cases.
+Version 0x00 omits the upvote vector entirely (ie, 6 bytes for the whole M4) and sets this block's M4 equal to the previous block's M4.
+Version 0x01 uses one byte per sidechain, and can be used while all ACKed withdrawals have an index under 256 (ie, 99.99%+ of the time).
+Version 0x02 uses a full two bytes per sidechain, but it always works no matter how many withdrawl proposals exist.
+Version 0x03 omits the upvote vector, and instead upvotes only those withdrawals that are leading their rivals by at least 50 votes.
If a sidechain has no pending bundles, then it is skipped over when M4 is created and parsed.