Gregory Maxwell [ARCHIVE] on Nostr: 📅 Original date posted:2015-12-04 📝 Original message:For discussion, A ...
📅 Original date posted:2015-12-04
📝 Original message:For discussion,
A significant fraction of hashrate currently mines blocks without
verifying them for a span of time after a new block shows up on the
network for economically rational reasons. This otherwise harmful
behavior can be made a beneficial to the whole network; but only if it
is communicated.
This BIP proposal suggests a communication channel and describes its
use and the motivations for it. I wrote it in response to suggestions
that Bitcoin Core add explicit support for this kind of mining, which
could also implement best in class risk mitigations. I believe
signaling the behavior is a necessary component for risk mitigation
here.
-----------------------------------------------------------------
<pre>
BIP: draft-maxwell-flagverify
Title: Blockchain verification flag
Author: Greg Maxwell <greg at xiph.org>
Status: Draft
Type: Standards Track
Created: 2015-12-02
</pre>
==Abstract==
This BIP describes a flag that the authors of blocks can use to voluntarily
signal that they have completely validated the content of their
block and the blocks before it.
Correct use of this signaling is not enforced internally to the network
but if used it can act as a hint allowing more intelligent risk analysis.
If deployed and adhered to, this mechanism turns otherwise harmful
validation skipping by miners into a behavior which benefits the public.
==Summary==
The version field in a Bitcoin block header is a 32-bit signed integer.
The most significant bit (30) of the block version is defined to signal that
the author of the block has validated the whole chain up to and including the
content of the block.
Conforming miners MUST NOT set this flag when they have not completely
validated the prior block(s) or the content of their own block. Miners
should continue to try to minimize the amount of time spent mining
on a non-validated chain. Blocks which extend an invalid chain will
continue to be rejected and ultimately orphaned as validation catches up.
It is recommended, but not required, that miners also not set the flag on blocks
created by the same device which created the block immediately prior. This
will reduce the incorrect implication of independent validation when the two
most recent blocks are both the product of the same, single, faulty system.
The set state for the bit is defined as verified so that that
un(der)maintained systems do not falsely signal validation.
Non-verifying clients of the network may check this bit (e.g. checking
that the version is >= 1073741824) and use it as an input to their risk
modeling. It is recommended that once this BIP is widely accepted by the
network that non-full-node wallets refrain from counting confirmations on
blocks where the bit is not set.
The authors of non-verifying clients should keep in mind that this flag
is only correct with the cooperation of the block author, and even then
a validating miner may still accidentally accept or produce an invalid
block due to faulty hardware or software. Additionally, any miner which
correctly uses this flag could stop doing so at any time, and might
do so intentionally in order to increase the effectiveness of an attack.
As a result of misunderstanding, misconfiguration, laziness, or other
human factors some miners may falsely set the flag. Because invalid
blocks are rare it may take a long time to detect misuse of the flag.
As such, the accuracy of this field MUST NOT be strongly relied upon.
Especially due to the non-enforceability of the flag, the user community
should keep in mind that both setting the flag correctly and mining
without verification (for brief periods of time) are healthy for the
network. If participants are punished for following this specification
they will simply lie, and its utility will be diminished.
==Motivation==
Some applications of the Bitcoin system such as thin-client wallets make
a strong assumption that all the authors of the blocks have faithfully
verified the blockchain. Because many of these applications also take
irreversible actions based on only one or two confirmations and the time
between blocks is often very short, these clients are vulnerable to
even small and short-duration violations of this assumption.
Processing and propagation delays resulting from increased transaction
load contribute to block orphaning when multiple blocks are found at
close to the same time. This has caused some miners to work on extending
the chain with the most proof-of-work prior to validating the latest
block(s).
Although this validation skipping undermines the security assumptions
of thin clients, it also has a beneficial effect: these delays also
make the mining process unfair and cause increased rewards for the
largest miners relative to other miners, resulting in a centralization
pressure. Deferring validation can reduce this pressure and improve
the security of the Bitcoin system long term.
This BIP seeks to mitigate the harm of breaking the thin client
assumption by allowing miners to efficiently provide additional
information on their level of validation. By doing so the
network can take advantage of the benefits of bypassed
validation with minimal collateral damage.
==Deployment==
Because there is no consensus enforced behavior there is no special
deployment strategy required. [BIP 9 will need to be updated.]
==Credits==
Thanks goes to Jeremy Rubin for his two-phase mining suggestion
which inspired this simplified proposal.
==Copyright==
This document is placed in the public domain.
Published at
2023-06-07 17:45:29Event JSON
{
"id": "4d2b27e75d00d20e12f4cd846c822626e412c022c8e90b447668d01c84eb6ed9",
"pubkey": "4aa6cf9aa5c8e98f401dac603c6a10207509b6a07317676e9d6615f3d7103d73",
"created_at": 1686159929,
"kind": 1,
"tags": [
[
"e",
"15a16192f3a989cab67f2ac617a2f0c8ac441d823789f63c6c25a5e7f0b7696c",
"",
"reply"
],
[
"p",
"a23dbf6c6cc83e14cc3df4e56cc71845f611908084cfe620e83e40c06ccdd3d0"
]
],
"content": "📅 Original date posted:2015-12-04\n📝 Original message:For discussion,\n\nA significant fraction of hashrate currently mines blocks without\nverifying them for a span of time after a new block shows up on the\nnetwork for economically rational reasons. This otherwise harmful\nbehavior can be made a beneficial to the whole network; but only if it\nis communicated.\n\nThis BIP proposal suggests a communication channel and describes its\nuse and the motivations for it. I wrote it in response to suggestions\nthat Bitcoin Core add explicit support for this kind of mining, which\ncould also implement best in class risk mitigations. I believe\nsignaling the behavior is a necessary component for risk mitigation\nhere.\n\n-----------------------------------------------------------------\n\n\u003cpre\u003e\n BIP: draft-maxwell-flagverify\n Title: Blockchain verification flag\n Author: Greg Maxwell \u003cgreg at xiph.org\u003e\n Status: Draft\n Type: Standards Track\n Created: 2015-12-02\n\u003c/pre\u003e\n\n==Abstract==\n\nThis BIP describes a flag that the authors of blocks can use to voluntarily\nsignal that they have completely validated the content of their\nblock and the blocks before it.\n\nCorrect use of this signaling is not enforced internally to the network\nbut if used it can act as a hint allowing more intelligent risk analysis.\n\nIf deployed and adhered to, this mechanism turns otherwise harmful\nvalidation skipping by miners into a behavior which benefits the public.\n\n==Summary==\n\nThe version field in a Bitcoin block header is a 32-bit signed integer.\n\nThe most significant bit (30) of the block version is defined to signal that\nthe author of the block has validated the whole chain up to and including the\ncontent of the block.\n\nConforming miners MUST NOT set this flag when they have not completely\nvalidated the prior block(s) or the content of their own block. Miners\nshould continue to try to minimize the amount of time spent mining\non a non-validated chain. Blocks which extend an invalid chain will\ncontinue to be rejected and ultimately orphaned as validation catches up.\n\nIt is recommended, but not required, that miners also not set the flag on blocks\ncreated by the same device which created the block immediately prior. This\nwill reduce the incorrect implication of independent validation when the two\nmost recent blocks are both the product of the same, single, faulty system.\n\nThe set state for the bit is defined as verified so that that\nun(der)maintained systems do not falsely signal validation.\n\nNon-verifying clients of the network may check this bit (e.g. checking\nthat the version is \u003e= 1073741824) and use it as an input to their risk\nmodeling. It is recommended that once this BIP is widely accepted by the\nnetwork that non-full-node wallets refrain from counting confirmations on\nblocks where the bit is not set.\n\nThe authors of non-verifying clients should keep in mind that this flag\nis only correct with the cooperation of the block author, and even then\na validating miner may still accidentally accept or produce an invalid\nblock due to faulty hardware or software. Additionally, any miner which\ncorrectly uses this flag could stop doing so at any time, and might\ndo so intentionally in order to increase the effectiveness of an attack.\nAs a result of misunderstanding, misconfiguration, laziness, or other\nhuman factors some miners may falsely set the flag. Because invalid\nblocks are rare it may take a long time to detect misuse of the flag.\n\nAs such, the accuracy of this field MUST NOT be strongly relied upon.\n\nEspecially due to the non-enforceability of the flag, the user community\nshould keep in mind that both setting the flag correctly and mining\nwithout verification (for brief periods of time) are healthy for the\nnetwork. If participants are punished for following this specification\nthey will simply lie, and its utility will be diminished.\n\n==Motivation==\n\nSome applications of the Bitcoin system such as thin-client wallets make\na strong assumption that all the authors of the blocks have faithfully\nverified the blockchain. Because many of these applications also take\nirreversible actions based on only one or two confirmations and the time\nbetween blocks is often very short, these clients are vulnerable to\neven small and short-duration violations of this assumption.\n\nProcessing and propagation delays resulting from increased transaction\nload contribute to block orphaning when multiple blocks are found at\nclose to the same time. This has caused some miners to work on extending\nthe chain with the most proof-of-work prior to validating the latest\nblock(s).\n\nAlthough this validation skipping undermines the security assumptions\nof thin clients, it also has a beneficial effect: these delays also\nmake the mining process unfair and cause increased rewards for the\nlargest miners relative to other miners, resulting in a centralization\npressure. Deferring validation can reduce this pressure and improve\nthe security of the Bitcoin system long term.\n\nThis BIP seeks to mitigate the harm of breaking the thin client\nassumption by allowing miners to efficiently provide additional\ninformation on their level of validation. By doing so the\nnetwork can take advantage of the benefits of bypassed\nvalidation with minimal collateral damage.\n\n==Deployment==\n\nBecause there is no consensus enforced behavior there is no special\ndeployment strategy required. [BIP 9 will need to be updated.]\n\n==Credits==\n\nThanks goes to Jeremy Rubin for his two-phase mining suggestion\nwhich inspired this simplified proposal.\n\n==Copyright==\n\nThis document is placed in the public domain.",
"sig": "bdbfb305ba93bad16e9c5222db31e0dfc44fa7e53076030c0d276a8b3df3ddcf9bcb5ba691d7db309d639bf8dd72e677758d500cc236db56c7f566870784d1bd"
}