From 76ed0aa3b6b22d6178c5f7f70a8921706cffa558 Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 14:10:40 +0000 Subject: [PATCH 01/12] remove deprecated docker-compose version field --- docker-compose.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 78ed73bf57..9b44a1f15a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3' - services: bitcoinops: build: . From 5fb9c02f5cb3e9c96c0c39174b087de1db8e926a Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 15:09:54 +0000 Subject: [PATCH 02/12] make: fix broken redirects in preview mode Build with dev config first (correct URL), then serve --skip-initial-build. jekyll serve --host 0.0.0.0 otherwise overrides site.url to 0.0.0.0. --- Makefile | 4 +++- _config_dev.yml | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 _config_dev.yml diff --git a/Makefile b/Makefile index 90bbbb48d8..9e95bd46d1 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,9 @@ preview: _site/*/topics/categories/index.html \ _site/*/topics/dates/index.html \ _site/*/topics/index.html - bundle exec jekyll serve --host 0.0.0.0 $(JEKYLL_FLAGS) + ## Build with dev config (for correct redirect URLs), then serve + bundle exec jekyll build --config _config.yml,_config_dev.yml $(JEKYLL_FLAGS) && \ + bundle exec jekyll serve --host 0.0.0.0 --skip-initial-build $(JEKYLL_FLAGS) build: @# Tiny sleep for when running concurrently to ensure output diff --git a/_config_dev.yml b/_config_dev.yml new file mode 100644 index 0000000000..445c2a2509 --- /dev/null +++ b/_config_dev.yml @@ -0,0 +1,3 @@ +# Development overrides - used by `make preview` +# Ensures redirects work correctly when serving via Docker +url: "http://localhost:4000" From 29e993a7353f52b28a44a90523be20a84ec75914 Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 15:47:58 +0000 Subject: [PATCH 03/12] yaml: enable aliases and Date class in schema validator Required for Ruby 3.1+ where Psych 4 disables YAML aliases by default and restricts class instantiation. See https://bugs.ruby-lang.org/issues/17866 --- _contrib/schema-validator.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_contrib/schema-validator.rb b/_contrib/schema-validator.rb index 51a6bbbf54..91b1344844 100755 --- a/_contrib/schema-validator.rb +++ b/_contrib/schema-validator.rb @@ -19,12 +19,12 @@ to_validate = ARGV[1] file = File.open(schema_file, 'r') -schema = YAML.load(file) +schema = YAML.load(file, aliases: true, permitted_classes: [Date]) file.close() file = File.open(to_validate, 'r') if to_validate.end_with?(".yaml") or to_validate.end_with?(".md") - document = YAML.load(file) + document = YAML.load(file, aliases: true, permitted_classes: [Date]) elsif to_validate.end_with?(".toml") document = TOML.load_file(file) else From 064e5d6a31e4d1d01fd9b616d8af0d5b1e5b9085 Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 14:14:21 +0000 Subject: [PATCH 04/12] ruby: bump to 3.4 Ruby 2.6 has become EOL since 2022. Bump it to the latest stable version. Also update the lockfile and dependencies. --- .ruby-version | 2 +- .travis.yml | 4 +- Dockerfile | 2 +- Gemfile | 3 +- Gemfile.lock | 201 ++++++++++++++++++++++++++++++++------------------ README.md | 8 +- 6 files changed, 141 insertions(+), 79 deletions(-) diff --git a/.ruby-version b/.ruby-version index 2714f5313a..81f1b89fea 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.6.4 +3.4.7 \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 575d6102bf..00323ead8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ -dist: xenial +dist: jammy language: ruby rvm: - - "2.6.4" + - "3.4" cache: bundler diff --git a/Dockerfile b/Dockerfile index 044a771cf5..796298add9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Use an official Ruby runtime as a parent image -FROM ruby:2.6.4 +FROM ruby:3.4.7 # Install program to configure locales RUN apt-get update && \ diff --git a/Gemfile b/Gemfile index de133667b9..c7076c5540 100644 --- a/Gemfile +++ b/Gemfile @@ -3,11 +3,12 @@ source 'https://rubygems.org' ## If you update the version here, also update it in .travis.yml, .ruby-version, ## and README.md. Then push your branch and make sure Travis supports that ## version. -ruby '2.6.4' +ruby '~> 3.4.0' ## If you add a new Gem below, run `bundle install` to install it. group :development do gem 'jekyll' + gem 'logger' # Required by Jekyll, will be removed from default gems in Ruby 3.5 gem "minima", "~> 2.0" ## Default Jekyll theme gem 'jekyll-redirect-from' end diff --git a/Gemfile.lock b/Gemfile.lock index c501d4adea..1789e765ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,98 +1,158 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) + Ascii85 (2.0.1) + addressable (2.8.8) + public_suffix (>= 2.0.2, < 8.0) + afm (1.0.0) + async (2.35.0) + console (~> 1.29) + fiber-annotation + io-event (~> 1.11) + metrics (~> 0.12) + traces (~> 0.18) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (3.3.1) + chef-utils (18.8.54) + concurrent-ruby colorator (1.1.0) - concurrent-ruby (1.1.5) - em-websocket (0.5.1) + concurrent-ruby (1.3.5) + console (1.34.2) + fiber-annotation + fiber-local (~> 1.1) + json + csv (3.3.5) + em-websocket (0.5.3) eventmachine (>= 0.12.9) - http_parser.rb (~> 0.6.0) - ethon (0.12.0) - ffi (>= 1.3.0) + http_parser.rb (~> 0) + ethon (0.15.0) + ffi (>= 1.15.0) eventmachine (1.2.7) - ffi (1.11.3) + ffi (1.17.2) + fiber-annotation (0.2.0) + fiber-local (1.1.0) + fiber-storage + fiber-storage (1.0.1) forwardable-extended (2.6.0) - html-proofer (3.15.0) + google-protobuf (4.33.1) + bigdecimal + rake (>= 13) + hashery (2.1.2) + html-proofer (5.1.1) addressable (~> 2.3) - mercenary (~> 0.3) - nokogumbo (~> 2.0) - parallel (~> 1.3) + async (~> 2.1) + benchmark (~> 0.5) + nokogiri (~> 1.13) + pdf-reader (~> 2.11) rainbow (~> 3.0) typhoeus (~> 1.3) yell (~> 2.0) - http_parser.rb (0.6.0) - i18n (0.9.5) + zeitwerk (~> 2.5) + http_parser.rb (0.8.0) + i18n (1.14.7) concurrent-ruby (~> 1.0) - jekyll (3.8.3) + io-event (1.14.2) + jekyll (4.4.1) addressable (~> 2.4) + base64 (~> 0.2) colorator (~> 1.0) + csv (~> 3.0) em-websocket (~> 0.5) - i18n (~> 0.7) - jekyll-sass-converter (~> 1.0) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) jekyll-watch (~> 2.0) - kramdown (~> 1.14) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) liquid (~> 4.0) - mercenary (~> 0.3.3) + mercenary (~> 0.3, >= 0.3.6) pathutil (~> 0.9) - rouge (>= 1.7, < 4) + rouge (>= 3.0, < 5.0) safe_yaml (~> 1.0) - jekyll-feed (0.10.0) - jekyll (~> 3.3) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) jekyll-redirect-from (0.16.0) jekyll (>= 3.3, < 5.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.4.0) - jekyll (~> 3.3) - jekyll-watch (2.0.0) + jekyll-sass-converter (3.1.0) + sass-embedded (~> 1.75) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-watch (2.2.1) listen (~> 3.0) - json-schema (2.8.1) - addressable (>= 2.4) - kramdown (1.17.0) - liquid (4.0.0) - listen (3.1.1) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9.7) - mdl (0.6.0) - kramdown (~> 1.12, >= 1.12.0) - mixlib-cli (~> 2.1, >= 2.1.1) - mixlib-config (~> 2.2, >= 2.2.1) - mercenary (0.3.6) - mini_portile2 (2.4.0) - minima (2.5.0) - jekyll (~> 3.5) + json (2.16.0) + json-schema (6.0.0) + addressable (~> 2.8) + bigdecimal (~> 3.1) + kramdown (2.5.1) + rexml (>= 3.3.9) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) + mdl (0.15.0) + kramdown (~> 2.3) + kramdown-parser-gfm (~> 1.1) + mixlib-cli + mixlib-config + mixlib-shellout + mercenary (0.4.0) + metrics (0.15.0) + mini_portile2 (2.8.9) + minima (2.5.2) + jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - mixlib-cli (2.1.1) - mixlib-config (2.2.18) + mixlib-cli (2.1.8) + mixlib-config (3.0.27) tomlrb - nokogiri (1.10.7) - mini_portile2 (~> 2.4.0) - nokogumbo (2.0.2) - nokogiri (~> 1.8, >= 1.8.4) - parallel (1.19.1) - parslet (1.8.2) - pathutil (0.16.1) + mixlib-shellout (3.3.9) + chef-utils + nokogiri (1.18.10) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + parslet (2.0.0) + pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.1) - rainbow (3.0.0) - rb-fsevent (0.10.3) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) - rouge (3.1.1) - safe_yaml (1.0.4) - sass (3.5.6) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - toml (0.2.0) - parslet (~> 1.8.0) - tomlrb (1.2.9) - typhoeus (1.3.1) - ethon (>= 0.9.0) - yell (2.2.0) + pdf-reader (2.15.0) + Ascii85 (>= 1.0, < 3.0, != 2.0.0) + afm (>= 0.2.1, < 2) + hashery (~> 2.0) + ruby-rc4 + ttfunk + public_suffix (7.0.0) + racc (1.8.1) + rainbow (3.1.1) + rake (13.3.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.4) + rouge (4.6.1) + ruby-rc4 (0.1.5) + safe_yaml (1.0.5) + sass-embedded (1.94.2) + google-protobuf (~> 4.31) + rake (>= 13) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + toml (0.3.0) + parslet (>= 1.8.0, < 3.0.0) + tomlrb (2.0.3) + traces (0.18.2) + ttfunk (1.8.0) + bigdecimal (~> 3.1) + typhoeus (1.5.0) + ethon (>= 0.9.0, < 0.16.0) + unicode-display_width (2.6.0) + webrick (1.9.2) + yell (2.2.2) + zeitwerk (2.7.3) PLATFORMS ruby @@ -102,9 +162,10 @@ DEPENDENCIES jekyll jekyll-redirect-from json-schema + logger mdl minima (~> 2.0) toml RUBY VERSION - ruby 2.6.4p104 + ruby 3.4.7p58 diff --git a/README.md b/README.md index e83bb61863..5b0dd32aae 100644 --- a/README.md +++ b/README.md @@ -61,17 +61,17 @@ following command: **Install Ruby** -To install Ruby 2.6.4, simply run this command: +To install Ruby 3.4, simply run this command: - rvm install 2.6.4 + rvm install 3.4 Sometimes this will find a pre-compiled Ruby package for your Linux distribution, but sometimes it will need to compile Ruby from scratch (which takes about 15 minutes). -After Ruby 2.6.4 is installed, make it your default Ruby: +After Ruby 3.4 is installed, make it your default Ruby: - rvm alias create default ruby-2.6.4 + rvm alias create default ruby-3.4 And tell your system to use it: From 94801bed4986120495f832f161618e9fb09aa5c0 Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 14:14:21 +0000 Subject: [PATCH 05/12] ruby: bump to 3.4 Ruby 2.6 has become EOL since 2022. Bump it to the latest stable version. Also update the lockfile and dependencies. --- .ruby-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ruby-version b/.ruby-version index 81f1b89fea..2aa5131992 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.4.7 \ No newline at end of file +3.4.7 From 060b60d1b5213a4c8a5f9c12b0f051702658c909 Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 14:44:33 +0000 Subject: [PATCH 06/12] sass: fix slash division deprecation in font-awesome Replace deprecated `/` division with `calc()` to fix Dart Sass 2.0 deprecation warnings. See https://sass-lang.com/d/slash-div --- _sass/vendor/font-awesome/_fixed-width.scss | 2 +- _sass/vendor/font-awesome/_larger.scss | 4 ++-- _sass/vendor/font-awesome/_list.scss | 4 ++-- _sass/vendor/font-awesome/_variables.scss | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_sass/vendor/font-awesome/_fixed-width.scss b/_sass/vendor/font-awesome/_fixed-width.scss index b221c98133..7102bbac0c 100644 --- a/_sass/vendor/font-awesome/_fixed-width.scss +++ b/_sass/vendor/font-awesome/_fixed-width.scss @@ -1,6 +1,6 @@ // Fixed Width Icons // ------------------------- .#{$fa-css-prefix}-fw { - width: (18em / 14); + width: calc(18em / 14); text-align: center; } diff --git a/_sass/vendor/font-awesome/_larger.scss b/_sass/vendor/font-awesome/_larger.scss index 41e9a8184a..d76b24067a 100644 --- a/_sass/vendor/font-awesome/_larger.scss +++ b/_sass/vendor/font-awesome/_larger.scss @@ -3,8 +3,8 @@ /* makes the font 33% larger relative to the icon container */ .#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); + font-size: calc(4em / 3); + line-height: calc(3em / 4); vertical-align: -15%; } .#{$fa-css-prefix}-2x { font-size: 2em; } diff --git a/_sass/vendor/font-awesome/_list.scss b/_sass/vendor/font-awesome/_list.scss index 7d1e4d54d6..fc17f7d76d 100644 --- a/_sass/vendor/font-awesome/_list.scss +++ b/_sass/vendor/font-awesome/_list.scss @@ -11,9 +11,9 @@ position: absolute; left: -$fa-li-width; width: $fa-li-width; - top: (2em / 14); + top: calc(2em / 14); text-align: center; &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); + left: calc(-1 * $fa-li-width + calc(4em / 14)); } } diff --git a/_sass/vendor/font-awesome/_variables.scss b/_sass/vendor/font-awesome/_variables.scss index 0a471102c4..13245adb2d 100644 --- a/_sass/vendor/font-awesome/_variables.scss +++ b/_sass/vendor/font-awesome/_variables.scss @@ -9,7 +9,7 @@ $fa-css-prefix: fa !default; $fa-version: "4.5.0" !default; $fa-border-color: #eee !default; $fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; +$fa-li-width: calc(30em / 14) !default; $fa-var-500px: "\f26e"; $fa-var-adjust: "\f042"; From 8e4c338beb4bf2792b1176e345551da0ce5cfbaa Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 14:45:54 +0000 Subject: [PATCH 07/12] sass: silence deprecation warnings for minima theme imports - quiet_deps: suppress warnings from dependencies (minima theme) - silence @import deprecation: migration to @use/@forward requires significant minima refactoring (tracked: https://sass-lang.com/d/import) --- _config.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/_config.yml b/_config.yml index 3ce8a22284..b4bd14c953 100644 --- a/_config.yml +++ b/_config.yml @@ -33,6 +33,13 @@ author: "Bitcoin Optech" ## Default author name for blog posts # Build settings markdown: kramdown theme: minima +sass: + # quiet_deps silences warnings from dependencies loaded via sass_dir + quiet_deps: true + # Silence @import deprecation warnings - migration to @use/@forward requires + # significant refactoring of minima theme. Track: https://sass-lang.com/d/import + silence_deprecations: + - import plugins: - jekyll-feed - jekyll-redirect-from From 84dab24507ac50833d85d3dd11cb0a8d633f755b Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 15:32:22 +0000 Subject: [PATCH 08/12] travis: update apt-get before installing dependencies --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 00323ead8b..729a2c7fe0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,4 +14,5 @@ env: - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer before_install: - - sudo apt install optipng + - sudo apt-get update + - sudo apt-get install -y optipng From 7850ce480cf182bb23b3c556cd7f664bc8389c9b Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 16:15:23 +0000 Subject: [PATCH 09/12] test: fix protocol-relative URLs in newsletters Change `//github.com/` to `https://github.com/` to ensure links work correctly and pass html-proofer validation. --- _posts/en/newsletters/2018-11-06-newsletter.md | 2 +- _posts/en/newsletters/2020-04-08-newsletter.md | 2 +- _posts/zh/newsletters/2018-11-06-newsletter.md | 2 +- _posts/zh/newsletters/2020-04-08-newsletter.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_posts/en/newsletters/2018-11-06-newsletter.md b/_posts/en/newsletters/2018-11-06-newsletter.md index cdeaa65018..c2063271f2 100644 --- a/_posts/en/newsletters/2018-11-06-newsletter.md +++ b/_posts/en/newsletters/2018-11-06-newsletter.md @@ -154,7 +154,7 @@ repo].* [bech32 patch]: https://github.com/sipa/bech32/commit/2b0aac650ce560fb2b2a2bebeacaa5c87d7e5938 [Bitcoin Core 0.17.0.1]: https://bitcoincore.org/en/releases/0.17.0.1/ [bech32 overflow blog]: https://blog.trezor.io/details-about-the-security-updates-in-trezor-one-firmware-1-7-1-5c34278425d8 -[bech32 refs]: //github.com/sipa/bech32/tree/master/ref/ +[bech32 refs]: https://github.com/sipa/bech32/tree/master/ref/ [trezor-crypto]: https://github.com/trezor/trezor-crypto/ [cashaddr patch]: https://github.com/trezor/trezor-crypto/commit/2bbbc3e15573294c6dd0273d2a8542ba42507eb0 [ln bolt11 ss]: https://gnusha.org/url/https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-November/001489.html diff --git a/_posts/en/newsletters/2020-04-08-newsletter.md b/_posts/en/newsletters/2020-04-08-newsletter.md index 6f051dcfa8..d55da7b06f 100644 --- a/_posts/en/newsletters/2020-04-08-newsletter.md +++ b/_posts/en/newsletters/2020-04-08-newsletter.md @@ -257,7 +257,7 @@ hidden service if enabled at [the command line][watchtower tor]. [uSEkaCIO email]: https://gnusha.org/url/https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-November/002316.html [jonasnick otves]: https://github.com/jonasnick/secp256k1/pull/14/ [nkohen otves]: https://github.com/bitcoin-s/bitcoin-s/pull/1302 -[lnd psbt]: //github.com/lightningnetwork/lnd/blob/master/docs/psbt.md +[lnd psbt]: https://github.com/lightningnetwork/lnd/blob/master/docs/psbt.md [review club 18238]: https://bitcoincore.reviews/18238.html [wtxid transaction relay]: https://bitcoincore.reviews/18044 [watchtower tor]: https://github.com/lightningnetwork/lnd/blob/master/docs/watchtower.md#tor-hidden-services diff --git a/_posts/zh/newsletters/2018-11-06-newsletter.md b/_posts/zh/newsletters/2018-11-06-newsletter.md index 9252733493..0675a40e7c 100644 --- a/_posts/zh/newsletters/2018-11-06-newsletter.md +++ b/_posts/zh/newsletters/2018-11-06-newsletter.md @@ -75,7 +75,7 @@ lang: zh [bech32 patch]: https://github.com/sipa/bech32/commit/2b0aac650ce560fb2b2a2bebeacaa5c87d7e5938 [Bitcoin Core 0.17.0.1]: https://bitcoincore.org/en/releases/0.17.0.1/ [bech32 overflow blog]: https://blog.trezor.io/details-about-the-security-updates-in-trezor-one-firmware-1-7-1-5c34278425d8 -[bech32 refs]: //github.com/sipa/bech32/tree/master/ref/ +[bech32 refs]: https://github.com/sipa/bech32/tree/master/ref/ [trezor-crypto]: https://github.com/trezor/trezor-crypto/ [cashaddr patch]: https://github.com/trezor/trezor-crypto/commit/2bbbc3e15573294c6dd0273d2a8542ba42507eb0 [ln bolt11 ss]: https://gnusha.org/url/https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-November/001489.html \ No newline at end of file diff --git a/_posts/zh/newsletters/2020-04-08-newsletter.md b/_posts/zh/newsletters/2020-04-08-newsletter.md index 933957fba7..fb5a289556 100644 --- a/_posts/zh/newsletters/2020-04-08-newsletter.md +++ b/_posts/zh/newsletters/2020-04-08-newsletter.md @@ -121,7 +121,7 @@ _在本节中,我们总结了一次最近的 Bitcoin Core PR 审查俱乐部 [uSEkaCIO email]: https://gnusha.org/url/https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-November/002316.html [jonasnick otves]: https://github.com/jonasnick/secp256k1/pull/14/ [nkohen otves]: https://github.com/bitcoin-s/bitcoin-s/pull/1302 -[lnd psbt]: //github.com/lightningnetwork/lnd/blob/master/docs/psbt.md +[lnd psbt]: https://github.com/lightningnetwork/lnd/blob/master/docs/psbt.md [review club 18238]: https://bitcoincore.reviews/18238.html [wtxid transaction relay]: https://bitcoincore.reviews/18044 [watchtower tor]: https://github.com/lightningnetwork/lnd/blob/master/docs/watchtower.md#tor-hidden-services From 7e260290db6d5d38850b8ee02d4c2e6312a1a5e7 Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 16:16:07 +0000 Subject: [PATCH 10/12] test: add href to podcast seek buttons The timestamp seek buttons used anchor tags without href attributes, relying solely on onclick handlers. Add href="javascript:void(0)" to make them valid anchors for html-proofer. --- _includes/functions/podcast-note.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/functions/podcast-note.md b/_includes/functions/podcast-note.md index 47e1e5d6eb..29c2714ccc 100644 --- a/_includes/functions/podcast-note.md +++ b/_includes/functions/podcast-note.md @@ -1,4 +1,4 @@ -({{include.timestamp}}) +({{include.timestamp}}) {% if include.reference %} {% endif %} From 310550beb3fe216499304dd609422939b6f8706b Mon Sep 17 00:00:00 2001 From: stickies-v Date: Wed, 3 Dec 2025 16:16:12 +0000 Subject: [PATCH 11/12] test: update html-proofer options for 5.x compatibility - Remove --check-html (deprecated in 4.0+) - Rename --url-ignore to --ignore-urls - Add --no-enforce-https (5.x now enforces https by default) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9e95bd46d1..06d0922c71 100644 --- a/Makefile +++ b/Makefile @@ -111,7 +111,7 @@ test-after-build: build done | grep . ## Check for broken links - bundle exec htmlproofer --check-html --disable-external --url-ignore '/^\/bin/.*/' ./_site + bundle exec htmlproofer --disable-external --no-enforce-https --ignore-urls '/^\/bin/.*/' ./_site ## Tests to run last because they identify problems that may not be fixable during initial commit review. ## However, these should not be still failing when the site goes to production From 25395e18e5a4593bb79ae29a441d143645ed969c Mon Sep 17 00:00:00 2001 From: Mike Schmidt Date: Fri, 5 Dec 2025 13:18:40 -0600 Subject: [PATCH 12/12] test: fix non ASCII slugs in newsletters --- _posts/hi/newsletters/2022-06-08-newsletter.md | 2 +- _posts/ja/newsletters/2023-08-09-newsletter.md | 2 +- _posts/ja/newsletters/2023-10-11-newsletter.md | 4 ++-- _posts/ja/newsletters/2024-01-10-newsletter.md | 6 +++--- _posts/ja/newsletters/2024-08-09-newsletter.md | 6 +++--- _posts/zh/newsletters/2020-03-11-newsletter.md | 12 ++++++------ _posts/zh/newsletters/2020-04-08-newsletter.md | 2 +- _posts/zh/newsletters/2020-05-13-newsletter.md | 10 +++++----- _posts/zh/newsletters/2023-08-09-newsletter.md | 2 +- _posts/zh/newsletters/2023-10-11-newsletter.md | 4 ++-- 10 files changed, 25 insertions(+), 25 deletions(-) diff --git a/_posts/hi/newsletters/2022-06-08-newsletter.md b/_posts/hi/newsletters/2022-06-08-newsletter.md index 6b17cc836d..2581fd77c7 100644 --- a/_posts/hi/newsletters/2022-06-08-newsletter.md +++ b/_posts/hi/newsletters/2022-06-08-newsletter.md @@ -79,7 +79,7 @@ Pieter Wuille द्वारा पीआर, [descriptors][topic descriptors] गैर-Miniscript के रूप में पार्स किया जाता है।" a3link="https://bitcoincore.reviews/24148-2#l-30" - q4="उपलब्ध पर्याप्तता मानदंड में से चयन करते समय हमें छोटी स्क्रिप्ट के बजाय सबसे कम हस्ताक्षर वाल + q4="उपलब्ध पर्याप्तता मानदंड में से चयन करते समय हमें छोटी स्क्रिप्ट के बजाय सबसे कम हस्ताक्षर वाल को प्राथमिकता क्यों देनी चाहिए?" a4="एक तृतीय पक्ष (अर्थात, जिसकी निजी कुंजी तक पहुंच नहीं है) लेन-देन के साथ छेड़छाड़ करने का प्रयास करके हस्ताक्षर हटा सकता हैं, लेकिन एक नया हस्ताक्षर नहीं बना सकता। अतिरिक्त हस्ताक्षरों के साथ diff --git a/_posts/ja/newsletters/2023-08-09-newsletter.md b/_posts/ja/newsletters/2023-08-09-newsletter.md index dd1f2ab8fd..d1b37ad030 100644 --- a/_posts/ja/newsletters/2023-08-09-newsletter.md +++ b/_posts/ja/newsletters/2023-08-09-newsletter.md @@ -168,7 +168,7 @@ Bitcoin Coreのウォレットに[サイレントペイメント][topic silent p (またはすべての機能を失うことがない)ようにするために重要です。" a2link="https://bitcoincore.reviews/28122#l-170" - q3="新しいバージョンが意図的に互換性を破壊したい場合は?" + q3="新しいバージョンが意図的に互換性を破壊したい場合は?" a3="v31が互換性を破壊するようなアップグレードのために予約されています。" a3link="https://bitcoincore.reviews/28122#l-186" diff --git a/_posts/ja/newsletters/2023-10-11-newsletter.md b/_posts/ja/newsletters/2023-10-11-newsletter.md index c97438c593..a9c0fe80f4 100644 --- a/_posts/ja/newsletters/2023-10-11-newsletter.md +++ b/_posts/ja/newsletters/2023-10-11-newsletter.md @@ -42,7 +42,7 @@ Niklas Gögge (dergoegge)によるPRで、 将来のPRで、コードベースの他の領域でも新しい型を使用する予定です。 {% include functions/details-list.md - q0="トランザクション識別子が型安全であるとはどういうことですか? + q0="トランザクション識別子が型安全であるとはどういうことですか? なぜそれが重要で役に立つのですか?デメリットはありますか?" a0="トランザクション識別子には2つの意味(`txid`か`wtxid`)のいずれかがあるため、 型安全とは、識別子が間違った意味で使用されることがないという特性です。 @@ -56,7 +56,7 @@ Niklas Gögge (dergoegge)によるPRで、 さらに多くの行のソースを触る必要があります)。" a1link="https://bitcoincore.reviews/28107#l-39" - q2="なぜ実行時ではなくコンパイル時に型を強制する方が良いのですか?" + q2="なぜ実行時ではなくコンパイル時に型を強制する方が良いのですか?" a2="開発者は、実行時にバグを発見するために大規模なテスト・スイートを書くことに依存するよりも (そしてこれらのテストはまだいくつかのエラーを見落としているかもしれません)、 コーディングしている時に素早くエラーを発見することができます。 diff --git a/_posts/ja/newsletters/2024-01-10-newsletter.md b/_posts/ja/newsletters/2024-01-10-newsletter.md index 2705f02d8c..e4b1b10cda 100644 --- a/_posts/ja/newsletters/2024-01-10-newsletter.md +++ b/_posts/ja/newsletters/2024-01-10-newsletter.md @@ -186,7 +186,7 @@ LN-Symmetryの研究実装の発表を掲載しています。また、Bitcoin C (チェーンは先に進んでいる可能性があるものの)後に有効になる可能性があることに注意してください。 {% include functions/details-list.md - q0="ブロックヘッダーにタイムスタンプが必要ですか?必要な場合、それはなぜですか?" + q0="ブロックヘッダーにタイムスタンプが必要ですか?必要な場合、それはなぜですか?" a0="はい。タイムスタンプは難易度調整とトランザクションのタイムロックの検証に使用されます。" a0link="https://bitcoincore.reviews/28956#l-39" @@ -198,7 +198,7 @@ LN-Symmetryの研究実装の発表を掲載しています。また、Bitcoin C 有効なブロックタイムスタンプの最大値となります。このPRに関係するのは、ネットワーク調整時間です。" a1link="https://bitcoincore.reviews/28956#l-67" - q2="なぜこれらの時間は概念的に大きく異なるのですか?" + q2="なぜこれらの時間は概念的に大きく異なるのですか?" a2="MTPは、同じチェーンに同期しているすべてのノードに対して一意に定義されます。 時間どおりにコンセンサスが得られます。ネットワーク調整時間はノード間で異なる可能性があります。" a2link="https://bitcoincore.reviews/28956#l-74" @@ -208,7 +208,7 @@ LN-Symmetryの研究実装の発表を掲載しています。また、Bitcoin C 将来のブロックタイムスタンプは未知であるため、上限としては使えません。" a3link="https://bitcoincore.reviews/28956#l-77" - q4="ブロックヘッダーのタイムスタンプがノードの内部クロックからどの程度「ずれている」ことが許容されるかについて、 + q4="ブロックヘッダーのタイムスタンプがノードの内部クロックからどの程度「ずれている」ことが許容されるかについて、 制限が適用されているのはなぜですか?また、時刻の正確な一致を要求しているわけではないので、 これらの制限をもっと厳しくすることはできますか?" a4="ブロックタイムスタンプの範囲は制限されているため、悪意のあるノードが難易度調整やロックタイムを細工する能力は制限されています。 diff --git a/_posts/ja/newsletters/2024-08-09-newsletter.md b/_posts/ja/newsletters/2024-08-09-newsletter.md index cda393ccca..73b1fcbc07 100644 --- a/_posts/ja/newsletters/2024-08-09-newsletter.md +++ b/_posts/ja/newsletters/2024-08-09-newsletter.md @@ -219,20 +219,20 @@ FROSTによる閾値署名を定義する新しいBIPへの言及、 それを使用するトランザクションは標準にはなりません。" a1link="https://bitcoincore.reviews/30352#l-24" - q2="このPRの前のデフォルトの設定では、標準トランザクションでどのアウトプットタイプを作成できますか? + q2="このPRの前のデフォルトの設定では、標準トランザクションでどのアウトプットタイプを作成できますか? これは標準トランザクション内でインプットとして使用されるスクリプトタイプと同じですか?" a2="`TxoutType::NONSTANDARD`を除くすべての定義済み`TxoutType`を作成できます。 `TxoutType::NONSTANDARD`と`TxoutType::WITNESS_UNKNOWN`を除くすべての定義済み`TxoutType`が 支払いに使用できます(ただし、`TxoutType::NULL_DATA`を支払いに使用することはできません)。" a2link="https://bitcoincore.reviews/30352#l-42" - q3="ライトニングネットワークのトランザクションに触れずにアンカーアウトプットを定義してください(より一般的なものに)" + q3="ライトニングネットワークのトランザクションに触れずにアンカーアウトプットを定義してください(より一般的なものに)" a3="アンカーアウトプットは、ブロードキャスト時にCPFPを介して手数料を追加できるようにするために、 事前署名済みのトランザクションで作成される追加のアウトプットです。詳細については、 [トピックのアンカーアウトプット][topic anchor outputs]をご覧ください。" a3link="https://bitcoincore.reviews/30352#l-48" - q4="アンカーアウトプットのアウトプットスクリプトのサイズが重要なのはなぜですか?" + q4="アンカーアウトプットのアウトプットスクリプトのサイズが重要なのはなぜですか?" a4="アウトプットスクリプトが大きいと、トランザクションのリレーと優先順位付けのコストが高くなります。" a4link="https://bitcoincore.reviews/30352#l-66" diff --git a/_posts/zh/newsletters/2020-03-11-newsletter.md b/_posts/zh/newsletters/2020-03-11-newsletter.md index a0e55412c0..fd3d520e03 100644 --- a/_posts/zh/newsletters/2020-03-11-newsletter.md +++ b/_posts/zh/newsletters/2020-03-11-newsletter.md @@ -32,13 +32,13 @@ Review Club 是学习比特币协议、Bitcoin Core 参考实现以及比特币 讨论首先从建立日蚀攻击的基本概念开始: {% include functions/details-list.md - q0="什么是日蚀攻击?" + q0="什么是日蚀攻击?" a0="日蚀攻击是指当一个节点被所有诚实的对等节点隔离时发生的攻击。" - q1="攻击者如何对节点发起日蚀攻击?" + q1="攻击者如何对节点发起日蚀攻击?" a1="填满节点的 IP 地址列表,使其只包含攻击者控制的地址,然后迫使节点重启或等待其重启。" - q2="如果一个节点被日蚀攻击,攻击者可以对受害者执行哪些类型的攻击?" + q2="如果一个节点被日蚀攻击,攻击者可以对受害者执行哪些类型的攻击?" a2="阻止区块传播、审查交易以及去匿名化交易来源。" %} @@ -48,17 +48,17 @@ Review Club 是学习比特币协议、Bitcoin Core 参考实现以及比特币 q0="这个 PR 如何缓解日蚀攻击?" a0="通过保存一些已连接的节点(锚点连接)列表,并在重启时重新连接到它们。" - q1="一个对等节点如何成为锚点?" + q1="一个对等节点如何成为锚点?" a1="该对等节点必须是仅区块中继的对等节点。" %} 在会议的后半部分,讨论了 PR 中的权衡和设计决策: {% include functions/details-list.md - q0="为什么只使用仅区块中继的对等节点作为锚点?" + q0="为什么只使用仅区块中继的对等节点作为锚点?" a0="为了使网络拓扑推断更加困难并保护网络隐私。" - q1="如果选择了一个能够远程崩溃你节点的锚点会发生什么?" + q1="如果选择了一个能够远程崩溃你节点的锚点会发生什么?" a1="恶意对等节点将能够在重启时反复崩溃你的节点。" %} diff --git a/_posts/zh/newsletters/2020-04-08-newsletter.md b/_posts/zh/newsletters/2020-04-08-newsletter.md index fb5a289556..a6aeed1b9c 100644 --- a/_posts/zh/newsletters/2020-04-08-newsletter.md +++ b/_posts/zh/newsletters/2020-04-08-newsletter.md @@ -41,7 +41,7 @@ _在本节中,我们总结了一次最近的 Bitcoin Core PR 审查俱乐部 q1="可能的 DoS 攻击担忧是什么?" a1="拥有小内存池的节点可能通过宣布交易但无法交付它来无意中减慢交易中继速度。" - q2="为什么交易传播速度很重要?" + q2="为什么交易传播速度很重要?" a2="几秒钟的短暂延迟并不是问题(甚至对隐私有益),但几分钟的较长延迟会损害交易的传播和 [BIP152][] 致密区块的中继。" q3="****`mapRelay` 是什么时候、为什么添加的?" diff --git a/_posts/zh/newsletters/2020-05-13-newsletter.md b/_posts/zh/newsletters/2020-05-13-newsletter.md index 71d5145318..1f9f60c891 100644 --- a/_posts/zh/newsletters/2020-05-13-newsletter.md +++ b/_posts/zh/newsletters/2020-05-13-newsletter.md @@ -32,23 +32,23 @@ _在这个每月的部分中,我们总结了一次最近的 [Bitcoin Core PR 大部分讨论围绕基本概念和错误修复的细节展开: {% include functions/details-list.md - q0="现有的错误是否会导致数据丢失(并可能导致共识失败)?" + q0="现有的错误是否会导致数据丢失(并可能导致共识失败)?" a0="不会。[该错误][Bitcoin Core #17890] 可能会导致磁盘空间的不必要使用,但不会导致数据丢失。" a0link="https://bitcoincore.reviews/17994.html#l-33" - q1="在没有所有前置区块的情况下,是否可以创建一个区块的撤销数据?" + q1="在没有所有前置区块的情况下,是否可以创建一个区块的撤销数据?" a1="不能。创建一个区块的撤销数据需要在连接该区块时的 UTXO 集。为此,我们需要验证并连接所有前置区块。" a1link="https://bitcoincore.reviews/17994.html#l-43" - q2="我们是否会在写入磁盘后修改区块或撤销数据?" + q2="我们是否会在写入磁盘后修改区块或撤销数据?" a2="通常不会。区块和撤销数据是只写的。一旦它们被写入磁盘,就不会被修改。修剪节点可能会在足够多的新区块埋藏之后删除区块和撤销数据。" a2link="https://bitcoincore.reviews/17994.html#l-79" - q3="撤销数据是按照与区块数据相同的顺序写入磁盘的吗?" + q3="撤销数据是按照与区块数据相同的顺序写入磁盘的吗?" a3="不是。区块数据按照接收的顺序写入(由于我们在初始同步期间并行获取区块,这可能不是按高度顺序),而撤销数据按照区块连接的顺序写入。然而,撤销数据总是出现在与区块所在的 `blk*` 文件对应的 `rev*` 文件中。" a3link="https://bitcoincore.reviews/17994.html#l-103" - q4="区块和撤销文件中的空间是如何分配的?为什么?" + q4="区块和撤销文件中的空间是如何分配的?为什么?" a4="文件中的空间是以 16MB 的块大小预分配的,而撤销文件的空间则是 1MB。这是为了减少文件系统碎片化。" a4link="https://bitcoincore.reviews/17994.html#l-122" diff --git a/_posts/zh/newsletters/2023-08-09-newsletter.md b/_posts/zh/newsletters/2023-08-09-newsletter.md index ecf6b0b8be..6bfc8e2d1b 100644 --- a/_posts/zh/newsletters/2023-08-09-newsletter.md +++ b/_posts/zh/newsletters/2023-08-09-newsletter.md @@ -66,7 +66,7 @@ lang: zh a2="它允许(例如)v0 钱包解码并发送到 v1(以及 v2 等)静默支付地址(即使钱包无法生成 v1 地址)。这一点很重要,这样钱包在有新版本时不需要立即升级(否则就失去所有功能)。" a2link="https://bitcoincore.reviews/28122#l-170" - q3="如果新版本想要有意破坏兼容性怎么办?" + q3="如果新版本想要有意破坏兼容性怎么办?" a3="v31 保留给可能破坏兼容性的升级。" a3link="https://bitcoincore.reviews/28122#l-186" diff --git a/_posts/zh/newsletters/2023-10-11-newsletter.md b/_posts/zh/newsletters/2023-10-11-newsletter.md index 2c7183b161..35aca77ef0 100644 --- a/_posts/zh/newsletters/2023-10-11-newsletter.md +++ b/_posts/zh/newsletters/2023-10-11-newsletter.md @@ -24,7 +24,7 @@ lang: zh 为了将干扰最小化并方便审查,这些新类型最初将仅在代码的一个区域(交易“孤儿院”)中使用;将来的 PR 会把这些新类型使用在代码库的其他区域。{% assign timestamp="18:36" %} {% include functions/details-list.md - q0="一个交易的标识符是类型安全的意思是什么?为什么这个会很重要或有帮助?有什么缺点吗?" + q0="一个交易的标识符是类型安全的意思是什么?为什么这个会很重要或有帮助?有什么缺点吗?" a0="一个交易标识符有两种含义(`txid` 或 `wtxid`),类型安全是指标识符不能以错误的含义使用的属性。也就是说,`txid` 不能在期望 `wtxid` 的地方使用,反之亦然,并且这是由编译器的标准类型检查强制执行的。" a0link="https://bitcoincore.reviews/28107#l-38" @@ -32,7 +32,7 @@ lang: zh a1="这些类可以这样做,但会导致更多的代码变动(需要修改更多行的源代码)。" a1link="https://bitcoincore.reviews/28107#l-39" - q2="为什么在编译时强制执行类型比在运行时更好?" + q2="为什么在编译时强制执行类型比在运行时更好?" a2="开发人员在编码过程中就可以快速发现错误,而不是依赖于编写大量的测试套件来捕捉运行时错误(这些测试可能仍然会漏掉一些错误)。然而,测试仍然是有用的,因为类型安全无法阻止一开始就用错了交易 ID 的类型。" a2link="https://bitcoincore.reviews/28107#l-67"