diff --git a/README.mediawiki b/README.mediawiki index e4ca17bf..ca65833d 100644 --- a/README.mediawiki +++ b/README.mediawiki @@ -1436,13 +1436,13 @@ users (see also: [https://en.bitcoin.it/wiki/Economic_majority economic majority | Gregory Sanders | Informational | Draft -|- +|- style="background-color: #ffffcf" | [[bip-0434.md|434]] | Peer Services | Peer Feature Negotiation | Anthony Towns | Specification -| Draft +| Complete |- | [[bip-0440.mediawiki|440]] | Consensus (soft fork) diff --git a/bip-0434.md b/bip-0434.md index 3f3b4f65..dbb2b147 100644 --- a/bip-0434.md +++ b/bip-0434.md @@ -3,13 +3,13 @@ Layer: Peer Services Title: Peer Feature Negotiation Authors: Anthony Towns - Status: Draft + Status: Complete Type: Specification Assigned: 2026-01-14 License: BSD-2-Clause 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/ - Version: 0.1.0 + Version: 1.0.0 ``` ## Abstract @@ -286,6 +286,11 @@ that prefer to fully validate each message received: * Sending unknown messages after `verack` is explicitly forbidden, 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 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#9720]: https://github.com/bitcoin/bitcoin/pull/9720 [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#1661]: https://github.com/btcsuite/btcd/issues/1661 [permless-extensible]: https://github.com/bitcoin/bitcoin/pull/20564#issuecomment-738456560 diff --git a/scripts/buildtable.pl b/scripts/buildtable.pl index aa1329fd..3f5ba6a5 100755 --- a/scripts/buildtable.pl +++ b/scripts/buildtable.pl @@ -136,7 +136,7 @@ while (++$bipnum <= $topbip) { } } my %found; - my ($title, $authors, $status, $type, $layer); + my ($title, $authors, $status, $version, $type, $layer); my ($field, $val, @field_order, $continuation); while (<$F>) { 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"; } elsif (exists $VersionField{$field}) { $val =~ m/^(\d+\.\d+\.\d+)$/ or die "Malformed $field line in $fn"; + $version = $val; } elsif (not exists $MiscField{$field}) { die "Unknown field $field in $fn"; } @@ -228,6 +229,11 @@ while (++$bipnum <= $topbip) { if (defined $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 "| [[${fn}|${bipnum}]]\n"; if ($include_layer) {