1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-06-15 17:35:29 +00:00

Merge pull request #2197 from ajtowns/202606-434-complete

BIP-434: Add ref impl, mark complete / CI: add version check
This commit is contained in:
Jon Atack
2026-06-11 07:11:18 -07:00
committed by GitHub
3 changed files with 17 additions and 5 deletions

View File

@@ -1436,13 +1436,13 @@ users (see also: [https://en.bitcoin.it/wiki/Economic_majority economic majority
| Gregory Sanders | Gregory Sanders
| Informational | Informational
| Draft | Draft
|- |- style="background-color: #ffffcf"
| [[bip-0434.md|434]] | [[bip-0434.md|434]]
| Peer Services | Peer Services
| Peer Feature Negotiation | Peer Feature Negotiation
| Anthony Towns | Anthony Towns
| Specification | Specification
| Draft | Complete
|- |-
| [[bip-0440.mediawiki|440]] | [[bip-0440.mediawiki|440]]
| Consensus (soft fork) | Consensus (soft fork)

View File

@@ -3,13 +3,13 @@
Layer: Peer Services Layer: Peer Services
Title: Peer Feature Negotiation Title: Peer Feature Negotiation
Authors: Anthony Towns <aj@erisian.com.au> Authors: Anthony Towns <aj@erisian.com.au>
Status: Draft Status: Complete
Type: Specification Type: Specification
Assigned: 2026-01-14 Assigned: 2026-01-14
License: BSD-2-Clause License: BSD-2-Clause
Discussion: 2025-12-19: https://gnusha.org/pi/bitcoindev/aUUXLgEUCgGb122o@erisian.com.au/T/#u Discussion: 2025-12-19: https://gnusha.org/pi/bitcoindev/aUUXLgEUCgGb122o@erisian.com.au/T/#u
2020-08-21: https://gnusha.org/pi/bitcoindev/20200821023647.7eat4goqqrtaqnna@erisian.com.au/ 2020-08-21: https://gnusha.org/pi/bitcoindev/20200821023647.7eat4goqqrtaqnna@erisian.com.au/
Version: 0.1.0 Version: 1.0.0
``` ```
## Abstract ## Abstract
@@ -286,6 +286,11 @@ that prefer to fully validate each message received:
* Sending unknown messages after `verack` is explicitly forbidden, * Sending unknown messages after `verack` is explicitly forbidden,
in so far as that is possible. in so far as that is possible.
## Reference implementation
This feature was implemented in Bitcoin Core [PR#35221][PR#35221],
which may be used as a reference implementation.
## Backward compatibility ## Backward compatibility
Clients specifying a version number prior to `70017` remain fully Clients specifying a version number prior to `70017` remain fully
@@ -327,6 +332,7 @@ advertised even to peers that do not support the features in question.
[PR#20564]: https://github.com/bitcoin/bitcoin/pull/20564 [PR#20564]: https://github.com/bitcoin/bitcoin/pull/20564
[PR#9720]: https://github.com/bitcoin/bitcoin/pull/9720 [PR#9720]: https://github.com/bitcoin/bitcoin/pull/9720
[PR#19723]: https://github.com/bitcoin/bitcoin/pull/19723 [PR#19723]: https://github.com/bitcoin/bitcoin/pull/19723
[PR#35221]: https://github.com/bitcoin/bitcoin/pull/35221
[btcd#1812]: https://github.com/btcsuite/btcd/pull/1812 [btcd#1812]: https://github.com/btcsuite/btcd/pull/1812
[btcd#1661]: https://github.com/btcsuite/btcd/issues/1661 [btcd#1661]: https://github.com/btcsuite/btcd/issues/1661
[permless-extensible]: https://github.com/bitcoin/bitcoin/pull/20564#issuecomment-738456560 [permless-extensible]: https://github.com/bitcoin/bitcoin/pull/20564#issuecomment-738456560

View File

@@ -136,7 +136,7 @@ while (++$bipnum <= $topbip) {
} }
} }
my %found; my %found;
my ($title, $authors, $status, $type, $layer); my ($title, $authors, $status, $version, $type, $layer);
my ($field, $val, @field_order, $continuation); my ($field, $val, @field_order, $continuation);
while (<$F>) { while (<$F>) {
last if ($is_markdown && m[^```$]); last if ($is_markdown && m[^```$]);
@@ -208,6 +208,7 @@ while (++$bipnum <= $topbip) {
$val =~ m/^(\S[^<@>]*\S) \<[^@>]*\@[\w.]+\.\w+\>$/ or die "Malformed $field line in $fn"; $val =~ m/^(\S[^<@>]*\S) \<[^@>]*\@[\w.]+\.\w+\>$/ or die "Malformed $field line in $fn";
} elsif (exists $VersionField{$field}) { } elsif (exists $VersionField{$field}) {
$val =~ m/^(\d+\.\d+\.\d+)$/ or die "Malformed $field line in $fn"; $val =~ m/^(\d+\.\d+\.\d+)$/ or die "Malformed $field line in $fn";
$version = $val;
} elsif (not exists $MiscField{$field}) { } elsif (not exists $MiscField{$field}) {
die "Unknown field $field in $fn"; die "Unknown field $field in $fn";
} }
@@ -228,6 +229,11 @@ while (++$bipnum <= $topbip) {
if (defined $ValidStatus{$status}) { if (defined $ValidStatus{$status}) {
print " style=\"" . $ValidStatus{$status} . "\""; print " style=\"" . $ValidStatus{$status} . "\"";
} }
if (defined $version and $version =~ m/^0+[.]/) {
if ($status eq "Complete" or $status eq "Deployed") {
die "$fn marked as $status despite pre-1.0 version ($version)";
}
}
print "\n"; print "\n";
print "| [[${fn}|${bipnum}]]\n"; print "| [[${fn}|${bipnum}]]\n";
if ($include_layer) { if ($include_layer) {