summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Dashjr <luke-jr+git@utopios.org>2016-04-25 00:18:39 +0000
committerLuke Dashjr <luke-jr+git@utopios.org>2016-04-25 00:18:39 +0000
commitcc4a94c1c04284fc8eca3f83b8d139711fa2a345 (patch)
tree84e835b60ad4d94da689ba243b6db2aebdb084a4
parent3cfa48d1e073090deee8864070274c54c000250a (diff)
downloadbips-cc4a94c1c04284fc8eca3f83b8d139711fa2a345.tar.xz
BIP 9 & 145: rules/force mutation
-rw-r--r--bip-0009.mediawiki13
-rw-r--r--bip-0145.mediawiki3
2 files changed, 16 insertions, 0 deletions
diff --git a/bip-0009.mediawiki b/bip-0009.mediawiki
index 66e6806..95dd740 100644
--- a/bip-0009.mediawiki
+++ b/bip-0009.mediawiki
@@ -191,6 +191,19 @@ The "version" key of the template is retained, and used to indicate the server's
If versionbits is being used, "version" MUST be within the versionbits range of [0x20000000...0x3FFFFFFF].
Miners MAY clear or set bits in the block version WITHOUT any special "mutable" key, provided they are listed among the template's "vbavailable" and (when clearing is desired) NOT included as a bit in "vbrequired".
+The mutable key defined by BIP 23 is expanded to optionally include one new mutation:
+
+{| class="wikitable"
+!colspan=4| mutations
+|-
+! Value !! Significance
+|-
+| rules/force || the miner may ignore rules it does not understand, if the template is to be used as-is (not modified by the client)
+|}
+
+Servers should only signal this mutation when they have verified a client behaving this way will not produce invalid blocks.
+This includes verifying the client's supported rules (listed in the template request) are not lacking of a rule that would change serialisation.
+
==Support for future changes==
The mechanism described above is very generic, and variations are possible for future soft forks. Here are some ideas that can be taken into account.
diff --git a/bip-0145.mediawiki b/bip-0145.mediawiki
index 6d3718b..0448b6c 100644
--- a/bip-0145.mediawiki
+++ b/bip-0145.mediawiki
@@ -25,6 +25,9 @@ The template Object is revised to include a new key:
| costlimit || No || Number || total cost allowed in blocks
|}
+The "rules/force" mutation MUST NOT be enabled for blocks including transactions with witness data unless the client has indicated in the template request that it also supports the "segwit" rule.
+In particular, note that even if the template's "rules" list includes "segwit", but none of the transactions have witness data, the server MAY use the "rules/force" mutation to support old miners.
+
====Transactions Object Format====
The Objects listed in the response's "transactions" key is revised to include these keys: