You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: bip-0014.mediawiki
+1-1
Original file line number
Diff line number
Diff line change
@@ -28,7 +28,7 @@ Version bumping can also introduce incompatibilities and fracture the network. I
28
28
29
29
By using a protocol version, we set all implementations on the network to a common standard. Everybody is able to agree within their confines what is protocol and what is implementation-dependent. A user agent string is offered as a 'vanity-plate' for clients to distinguish themselves in the network.
30
30
31
-
Separation of the network protocol from the implemention, and forming development of said protocol by means of a mutual consensus among participants, has the democratic disadvantage when agreement is hard to reach on contentious issues. To mitigate this issue, strong communication channels and fast release schedules are needed, and are outside the scope of this document (concerning a process-BIP type).
31
+
Separation of the network protocol from the implementation, and forming development of said protocol by means of a mutual consensus among participants, has the democratic disadvantage when agreement is hard to reach on contentious issues. To mitigate this issue, strong communication channels and fast release schedules are needed, and are outside the scope of this document (concerning a process-BIP type).
32
32
33
33
User agents provide extra tracking information that is useful for keeping tabs on network data such as client implementations used or common architectures/operating-systems. In the rare case they may even provide an emergency method of shunning faulty clients that threaten network health- although this is strongly unrecommended and extremely bad form. The user agent does not provide a method for clients to work around and behave differently to different implementations, as this will lead to protocol fracturing.
Copy file name to clipboardExpand all lines: bip-0015.mediawiki
+2-2
Original file line number
Diff line number
Diff line change
@@ -348,7 +348,7 @@ By using DNS lookups, the MITM problem with IP transactions could be mitigated b
348
348
349
349
=== Namecoin ID ===
350
350
351
-
This proposal uses the Namecoin blockchain to associate an alias with a bitcoin address. Bitcoin queries a namecoin node. This retreives the structured data containing the bitcoin address(es) associated with this alias.
351
+
This proposal uses the Namecoin blockchain to associate an alias with a bitcoin address. Bitcoin queries a namecoin node. This retrieves the structured data containing the bitcoin address(es) associated with this alias.
352
352
353
353
Using a decentralised domain name system like Namecoin, means no external server or entity needs to be trusted unlike the other proposals listed here. This indicates a system with the advantage of having a high availability and ease of entry (no restrictions for users to create aliases).
354
354
@@ -401,4 +401,4 @@ Any text can be put into the brackets, allowing merchants to adapt it to all the
401
401
New features can be added later to support uncovered cases.
402
402
403
403
404
-
See the specification of [http://dot-bit.org/Namespace:Identity Namecoin ID] for more informations.
404
+
See the specification of [http://dot-bit.org/Namespace:Identity Namecoin ID] for more information.
Copy file name to clipboardExpand all lines: bip-0067.mediawiki
+3-3
Original file line number
Diff line number
Diff line change
@@ -53,10 +53,10 @@ Hash the redeem script according to BIP-0016 to get the P2SH address.
53
53
3Q4sF6tv9wsdqu2NtARzNCpQgwifm2rAba
54
54
55
55
==Compatibility==
56
-
* Uncompressed keys are incompatible with this specificiation. A compatible implementation should not automatically compress keys. Receiving an uncompressed key from a multisig participant should be interpreted as a sign that the user has an incompatible implementation.
57
-
* P2SH addressses do not reveal information about the script that is receiving the funds. For this reason it is not technically possible to enforce this BIP as a rule on the network. Also, it would cause a hard fork.
56
+
* Uncompressed keys are incompatible with this specification. A compatible implementation should not automatically compress keys. Receiving an uncompressed key from a multisig participant should be interpreted as a sign that the user has an incompatible implementation.
57
+
* P2SH addresses do not reveal information about the script that is receiving the funds. For this reason it is not technically possible to enforce this BIP as a rule on the network. Also, it would cause a hard fork.
58
58
* Implementations that do not conform with this BIP will have compatibility issues with strictly-compliant wallets.
59
-
* Implementations which do adopt this standard will be cross-compatible when choosing multisig addressses.
59
+
* Implementations which do adopt this standard will be cross-compatible when choosing multisig addresses.
60
60
* If a group of users were not entirely compliant, there is the possibility that a participant will derive an address that the others will not recognize as part of the common multisig account.
Copy file name to clipboardExpand all lines: bip-0078.mediawiki
+7-7
Original file line number
Diff line number
Diff line change
@@ -143,7 +143,7 @@ If the receiver does not support the version of the sender, they should send an
143
143
}
144
144
</pre>
145
145
146
-
* <code>additionalfeeoutputindex=</code>, if the sender is willing to pay for increased fee, this indicate output can have its value substracted to pay for it.
146
+
* <code>additionalfeeoutputindex=</code>, if the sender is willing to pay for increased fee, this indicate output can have its value subtracted to pay for it.
147
147
148
148
If the <code>additionalfeeoutputindex</code> is out of bounds or pointing to the payment output meant for the receiver, the receiver should ignore the parameter. See [[#fee-output|fee output]] for more information.
149
149
@@ -198,7 +198,7 @@ It is advised to hard code the description of the well known error codes into th
198
198
===<span id="fee-output"></span>Fee output===
199
199
200
200
In some situation, the sender might want to pay some additional fee in the payjoin proposal.
201
-
If such is the case, the sender must use both [[#optional-params|optional parameters]] <code>additionalfeeoutputindex=</code> and <code>maxadditionalfeecontribution=</code> to indicate which output and how much the receiver can substract fee.
201
+
If such is the case, the sender must use both [[#optional-params|optional parameters]] <code>additionalfeeoutputindex=</code> and <code>maxadditionalfeecontribution=</code> to indicate which output and how much the receiver can subtract fee.
202
202
203
203
There is several cases where a fee output is useful:
204
204
@@ -273,7 +273,7 @@ The sender should check the payjoin proposal before signing it to prevent a mali
273
273
* For each outputs in the proposal:
274
274
** Verify that no keypaths is in the PSBT output
275
275
** If the output is the [[#fee-output|fee output]]:
276
-
*** The amount that was substracted from the output's value is less than or equal to <code>maxadditionalfeecontribution</code>. Let's call this amount <code>actual contribution</code>.
276
+
*** The amount that was subtracted from the output's value is less than or equal to <code>maxadditionalfeecontribution</code>. Let's call this amount <code>actual contribution</code>.
277
277
*** Make sure the actual contribution is only paying fee: The <code>actual contribution</code> is less than or equals to the difference of absolute fee between the payjoin proposal and the original PSBT.
278
278
*** Make sure the actual contribution is only paying for fee incurred by additional inputs: <code>actual contribution</code> is less than or equals to <code>originalPSBTFeeRate * vsize(sender_input_type) * (count(payjoin_proposal_inputs) - count(original_psbt_inputs))</code>. (see [[#fee-output|Fee output]] section)
279
279
** If the output is the payment output and payment output substitution is allowed.
@@ -344,7 +344,7 @@ On top of this the receiver can poison analysis by randomly faking a round amoun
Unless disallowed by sender explicitely via `disableoutputsubstitution=true` or by the BIP21 url via query parameter the `pjos=0`, the receiver is free to decrease the amount, remove, or change the scriptPubKey output paying to himself.
347
+
Unless disallowed by sender explicitly via `disableoutputsubstitution=true` or by the BIP21 url via query parameter the `pjos=0`, the receiver is free to decrease the amount, remove, or change the scriptPubKey output paying to himself.
348
348
Note that if payment output substitution is disallowed, the reveiver can still increase the amount of the output. (See [[#reference-impl|the reference implementation]])
349
349
350
350
For example, if the sender's scriptPubKey type is P2WPKH while the receiver's payment output in the original PSBT is P2SH, then the receiver can substitute the payment output to be P2WPKH to match the sender's scriptPubKey type.
@@ -413,7 +413,7 @@ Here is pseudo code of a sender implementation.
413
413
The <code>signedPSBT</code> represents a PSBT which has been fully signed, but not yet finalized.
414
414
We then prepare <code>originalPSBT</code> from the <code>signedPSBT</code> via the <code>CreateOriginalPSBT</code> function and get back the <code>proposal</code>.
415
415
416
-
While we verify the <code>proposal</code>, we also import into it informations about our own inputs and outputs from the <code>signedPSBT</code>.
416
+
While we verify the <code>proposal</code>, we also import into it information about our own inputs and outputs from the <code>signedPSBT</code>.
417
417
At the end of this <code>RequestPayjoin</code>, the proposal is verified and ready to be signed.
418
418
419
419
We logged the different PSBT involved, and show the result in our [[#test-vectors|test vectors]].
@@ -557,7 +557,7 @@ public async Task<PSBT> RequestPayjoin(
557
557
if (output.OriginalTxOut == feeOutput)
558
558
{
559
559
var actualContribution = feeOutput.Value - proposedPSBTOutput.Value;
560
-
// The amount that was substracted from the output's value is less than or equal to maxadditionalfeecontribution
560
+
// The amount that was subtracted from the output's value is less than or equal to maxadditionalfeecontribution
561
561
if (actualContribution > optionalParameters.MaxAdditionalFeeContribution)
562
562
throw new PayjoinSenderException("The actual contribution is more than maxadditionalfeecontribution");
563
563
// Make sure the actual contribution is only paying fee
Copy file name to clipboardExpand all lines: bip-0083.mediawiki
+1-1
Original file line number
Diff line number
Diff line change
@@ -53,7 +53,7 @@ p //' n instead of p / 0' / n
53
53
54
54
Rather than specifying upfront which path is to be used for a specific purpose (i.e. external invoicing vs. internal change), different applications can specify arbitrary parent nodes and derivation paths. This allows for nesting of sublevels to arbitrary depth with application-specified semantics. Rather than trying to specify use cases upfront, we leave the design completely open-ended. Different applications can exchange these mappings for interoperability. Eventually, if certain mappings become popular, application user interfaces can provide convenient shortcuts or use them as defaults.
55
55
56
-
Note that BIP32 suggests reserving child 0 for the derivation of signing keys rather than sublevels. It is not really necessary to reserve signing key parents, however, as each key's parent's path can be explicitly stated. But unless we reserve a child for sublevel derivation, we lose the ability to nest deeper levels into the hierarchy. While we could reserve any arbitrary index for nesting sublevels, reserving child 0 seems simplest to implement, leaving all indices > 0 for contiguously indexed signing keys. We could also use MAX_INDEX (2<sup>31</sup> - 1) for this purpose. However, we believe doing so introduces more ideosyncracies into the semantics and will present a problem if we ever decide to extend the scheme to use indices larger than 31 bits.
56
+
Note that BIP32 suggests reserving child 0 for the derivation of signing keys rather than sublevels. It is not really necessary to reserve signing key parents, however, as each key's parent's path can be explicitly stated. But unless we reserve a child for sublevel derivation, we lose the ability to nest deeper levels into the hierarchy. While we could reserve any arbitrary index for nesting sublevels, reserving child 0 seems simplest to implement, leaving all indices > 0 for contiguously indexed signing keys. We could also use MAX_INDEX (2<sup>31</sup> - 1) for this purpose. However, we believe doing so introduces more idiosyncrasies into the semantics and will present a problem if we ever decide to extend the scheme to use indices larger than 31 bits.
Copy file name to clipboardExpand all lines: bip-0109.mediawiki
+1-1
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,7 @@ In particular:
37
37
38
38
* The coinbase scriptSig is not counted
39
39
* Signature operations in un-executed branches of a Script are not counted
40
-
* OP_CHECKMULTISIG evaluations are counted accurately; if the signature for a 1-of-20 OP_CHECKMULTISIG is satisified by the public key nearest the top of the execution stack, it is counted as one signature operation. If it is satisfied by the public key nearest the bottom of the execution stack, it is counted as twenty signature operations.
40
+
* OP_CHECKMULTISIG evaluations are counted accurately; if the signature for a 1-of-20 OP_CHECKMULTISIG is satisfied by the public key nearest the top of the execution stack, it is counted as one signature operation. If it is satisfied by the public key nearest the bottom of the execution stack, it is counted as twenty signature operations.
41
41
* Signature operations involving invalidly encoded signatures or public keys are not counted towards the limit
42
42
43
43
=== Add a new limit of 1,300,000,000 bytes hashed to compute transaction signatures per block ===
Copy file name to clipboardExpand all lines: bip-0126.mediawiki
+8-8
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@
14
14
15
15
When a Bitcoin transaction contains inputs that reference previous transaction outputs sent to different Bitcoin addresses, personally identifiable information of the user will leak into the blockchain in an uncontrolled manner. While undesirable, these transactions are frequently unavoidable due to the natural fragmentation of wallet balances over time.
16
16
17
-
This document proposes a set of best practice guidelines which minimize the uncontrolled disclosure of personally identifiable information by defining standard forms for transactions containing heterogenous input scripts.
17
+
This document proposes a set of best practice guidelines which minimize the uncontrolled disclosure of personally identifiable information by defining standard forms for transactions containing heterogeneous input scripts.
18
18
19
19
==Copyright==
20
20
@@ -23,8 +23,8 @@ This BIP is in the public domain.
23
23
==Definitions==
24
24
25
25
* '''Heterogenous input script transaction (HIT)''': A transaction containing multiple inputs where the scripts of the previous transaction outputs being consumed are not identical (e.g. a transaction spending outputs which were sent to more than one Bitcoin address)
26
-
* '''Unavoidable heterogenous input script transaction''': A HIT created as a result of a user’s desire to create a new output with a value larger than the value of his wallet's largest existing unspent output
27
-
* '''Intentional heterogenous input script transaction''': A HIT created as part of a user protection protocol for reducing uncontrolled disclosure of personally-identifying information (PII)
26
+
* '''Unavoidable heterogeneous input script transaction''': A HIT created as a result of a user’s desire to create a new output with a value larger than the value of his wallet's largest existing unspent output
27
+
* '''Intentional heterogeneous input script transaction''': A HIT created as part of a user protection protocol for reducing uncontrolled disclosure of personally-identifying information (PII)
28
28
29
29
Throughout this procedure, when input scripts are evaluated for uniqueness, "input script" should be interpreted to mean, "the script of the previous output referenced by an input to a transaction".
30
30
@@ -33,18 +33,18 @@ Throughout this procedure, when input scripts are evaluated for uniqueness, "inp
33
33
The recommendations in this document are designed to accomplish three goals:
34
34
35
35
# Maximise the effectiveness of user-protecting protocols: Users may find that protection protocols are counterproductive if such transactions have a distinctive fingerprint which renders them ineffective.
36
-
# Minimise the adverse consequences of unavoidable heterogenous input transactions: If unavoidable HITs are indistinguishable from intentional HITs, a user creating an unavoidable HIT benefits from ambiguity with respect to graph analysis.
36
+
# Minimise the adverse consequences of unavoidable heterogeneous input transactions: If unavoidable HITs are indistinguishable from intentional HITs, a user creating an unavoidable HIT benefits from ambiguity with respect to graph analysis.
37
37
# Limiting the effect on UTXO set growth: To date, non-standardized intentional HITs tend to increase the network's UTXO set with each transaction; this standard attempts to minimize this effect by standardizing unavoidable and intentional HITs to limit UTXO set growth.
38
38
39
-
In order to achieve these goals, this specification proposes a set of best practices for heterogenous input script transaction creation. These practices accommodate all applicable requirements of both intentional and unavoidable HITs while maximising the effectiveness of both in terms of preventing uncontrolled disclosure of PII.
39
+
In order to achieve these goals, this specification proposes a set of best practices for heterogeneous input script transaction creation. These practices accommodate all applicable requirements of both intentional and unavoidable HITs while maximising the effectiveness of both in terms of preventing uncontrolled disclosure of PII.
40
40
41
41
In order to achieve this, two forms of HIT are proposed: Standard form and alternate form.
42
42
43
43
==Interaction with Other Procedures==
44
44
45
45
Applications which wish to comply both with this procedure and BIP69 should apply this procedure prior to applying BIP69.
46
46
47
-
==Standard form heterogenous input script transaction==
47
+
==Standard form heterogeneous input script transaction==
48
48
49
49
===Rules===
50
50
@@ -63,7 +63,7 @@ The requirement that all output scripts are unique prevents address reuse. Restr
63
63
64
64
The requirement for at least one pair of outputs in an intentional HIT to be of equal value results in optimal behavior, and causes intentional HITs to resemble unavoidable HITs.
65
65
66
-
==Alternate form heterogenous input script transactions==
66
+
==Alternate form heterogeneous input script transactions==
67
67
68
68
The formation of a standard form HIT is not possible in the following cases:
69
69
@@ -100,7 +100,7 @@ An HIT formed via the preceding procedure will adhere to the following condition
100
100
## The sum of the inputs in the set minus the value of the change output is equal to the standard value with a tolerance equal to the transaction fee.
101
101
## Change outputs with a value of zero (virtual change outputs) are permitted. The are defined for the purpose of testing whether or not a HIT adheres to this specification but are not present in the version of the transaction which is broadcast to the network.
If a user wishes to create an output that is larger than half the total size of their spendable outputs, or if their inputs are not distributed in a manner in which the alternate form procedure can be completed, then the user can not create a transaction which is compliant with this procedure.
0 commit comments