diff --git a/.ruby-version b/.ruby-version
index 2714f5313a..2aa5131992 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.6.4
+3.4.7
diff --git a/.travis.yml b/.travis.yml
index 575d6102bf..729a2c7fe0 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
@@ -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
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/Makefile b/Makefile
index 90bbbb48d8..06d0922c71 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
@@ -109,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
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:
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
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"
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
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 %}
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/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/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-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 933957fba7..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` 是什么时候、为什么添加的?"
@@ -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
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"
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";
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: .