From c4a0715200ee84d3a74b1e23be3844b4ca6ead6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zoe=20Faltib=C3=A0?= Date: Mon, 27 Oct 2025 17:36:30 +0100 Subject: [PATCH 1/2] bitcoin-core: upgrade to 28.2 in the docker container --- contrib/Dockerfile.base | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/Dockerfile.base b/contrib/Dockerfile.base index 2a185dbb..a18e1101 100644 --- a/contrib/Dockerfile.base +++ b/contrib/Dockerfile.base @@ -31,10 +31,10 @@ RUN git clone --quiet --depth 1 --single-branch --branch v0.40.1 https://github. ARG TARGETARCH ENV SHA256SUM_ELEMENTS_X86_64="86e3061a6cb82ea979954d7b187442b6a104648c26bda2ddf297e513b5d53c51" ENV SHA256SUM_ELEMENTS_ARM64="e44566fad37cb632fa7b4d288e6e20fb3af26745a20950da8c55997ad427e05c" -ENV SHA256SUM_BITCOINCORE_X86_64="acc223af46c178064c132b235392476f66d486453ddbd6bca6f1f8411547da78" -ENV SHA256SUM_BITCOINCORE_ARM64="154c9b9e6e17136edc8f20fda5d252fb339e727e4a85ef49e7d8facb9085f2d3" +ENV SHA256SUM_BITCOINCORE_X86_64="98add5f220c01b387343b70edeb6273403fe081e22cd85fda132704cdcaa98aa" +ENV SHA256SUM_BITCOINCORE_ARM64="10581b6d4aeb091c08c9e69eb4e4ced000038c009286dc1edb8a876656ccf6df" -ENV VERSION_BITCOINCORE=27.2 +ENV VERSION_BITCOINCORE=28.2 RUN if [ "${TARGETARCH}" = "arm64" ]; then \ curl -sL -o bitcoin.tar.gz "https://bitcoincore.org/bin/bitcoin-core-${VERSION_BITCOINCORE}/bitcoin-${VERSION_BITCOINCORE}-aarch64-linux-gnu.tar.gz"; \ echo "${SHA256SUM_BITCOINCORE_ARM64} bitcoin.tar.gz" | sha256sum --check; \ From eda14561674365072de67f76ab1941276ced2468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zoe=20Faltib=C3=A0?= Date: Fri, 7 Feb 2025 15:28:39 +0100 Subject: [PATCH 2/2] feat: support bitcoin testnet4 network --- .dockerignore | 3 +- README.md | 9 +++ contrib/Dockerfile | 4 + contrib/Dockerfile.base | 2 +- contrib/bitcoin-testnet4-explorer.conf.in | 11 +++ flavors/bitcoin-testnet4/config.env | 12 +++ flavors/bitcoin-testnet4/extras.css | 71 ++++++++++++++++++ flavors/bitcoin-testnet4/www/img/block.png | Bin 0 -> 1451 bytes flavors/bitcoin-testnet4/www/img/favicon.png | Bin 0 -> 930 bytes .../www/img/icons/menu-logo.svg | 11 +++ .../bitcoin-testnet4/www/img/icons/minus.png | Bin 0 -> 125 bytes .../bitcoin-testnet4/www/img/icons/plus.png | Bin 0 -> 225 bytes .../bitcoin-testnet4/www/img/icons/search.png | Bin 0 -> 711 bytes .../bitcoin-testnet4/www/img/transaction.png | Bin 0 -> 1778 bytes run.sh | 8 +- 15 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 contrib/bitcoin-testnet4-explorer.conf.in create mode 100755 flavors/bitcoin-testnet4/config.env create mode 100644 flavors/bitcoin-testnet4/extras.css create mode 100644 flavors/bitcoin-testnet4/www/img/block.png create mode 100644 flavors/bitcoin-testnet4/www/img/favicon.png create mode 100644 flavors/bitcoin-testnet4/www/img/icons/menu-logo.svg create mode 100644 flavors/bitcoin-testnet4/www/img/icons/minus.png create mode 100644 flavors/bitcoin-testnet4/www/img/icons/plus.png create mode 100644 flavors/bitcoin-testnet4/www/img/icons/search.png create mode 100644 flavors/bitcoin-testnet4/www/img/transaction.png diff --git a/.dockerignore b/.dockerignore index 8a5a20c6..862cda4c 100644 --- a/.dockerignore +++ b/.dockerignore @@ -11,9 +11,10 @@ prerender-server/node_modules data_bitcoin_mainnet data_liquid_mainnet data_bitcoin_testnet +data_bitcoin_testnet4 data_bitcoin_regtest data_liquid_regtest www/libwally data_liquid_testnet data_bitcoin_signet -gitlab/ \ No newline at end of file +gitlab/ diff --git a/README.md b/README.md index f811543b..abbba2de 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,15 @@ docker run -p 50001:50001 -p 8084:80 \ bash -c "/srv/explorer/run.sh bitcoin-testnet explorer" ``` +## How to run the explorer for Bitcoin testnet4 + +``` +docker run -p 50001:50001 -p 8084:80 \ + --volume $PWD/data_bitcoin_testnet4:/data \ + --rm -i -t esplora \ + bash -c "/srv/explorer/run.sh bitcoin-testnet4 explorer" +``` + ## How to run the explorer for Bitcoin signet ```bash diff --git a/contrib/Dockerfile b/contrib/Dockerfile index 6f7b63a0..87eb3de3 100644 --- a/contrib/Dockerfile +++ b/contrib/Dockerfile @@ -26,6 +26,8 @@ RUN source /root/.nvm/nvm.sh \ npm run dist -- bitcoin-mainnet \ && DEST=/srv/explorer/static/bitcoin-testnet \ npm run dist -- bitcoin-testnet \ + && DEST=/srv/explorer/static/bitcoin-testnet4 \ + npm run dist -- bitcoin-testnet4 \ && DEST=/srv/explorer/static/bitcoin-signet \ npm run dist -- bitcoin-signet \ && DEST=/srv/explorer/static/bitcoin-regtest \ @@ -40,6 +42,8 @@ RUN source /root/.nvm/nvm.sh \ npm run dist -- bitcoin-mainnet blockstream \ && DEST=/srv/explorer/static/bitcoin-testnet-blockstream \ npm run dist -- bitcoin-testnet blockstream \ + && DEST=/srv/explorer/static/bitcoin-testnet4-blockstream \ + npm run dist -- bitcoin-testnet4 blockstream \ && DEST=/srv/explorer/static/bitcoin-signet-blockstream \ npm run dist -- bitcoin-signet blockstream \ && DEST=/srv/explorer/static/bitcoin-regtest-blockstream \ diff --git a/contrib/Dockerfile.base b/contrib/Dockerfile.base index a18e1101..65c47208 100644 --- a/contrib/Dockerfile.base +++ b/contrib/Dockerfile.base @@ -65,7 +65,7 @@ RUN source /root/.cargo/env \ && mkdir -p /srv/explorer/electrs{,_liquid} \ && git clone --no-checkout https://github.com/blockstream/electrs.git \ && (cd electrs \ - && git checkout 306f66acf2ab10bcd99b8012e95a0de30b2cc012 \ + && git checkout fee74a0450bc28f50f89d8115c8434844088d469 \ && cp contrib/popular-scripts.txt /srv/explorer \ && cargo install --root /srv/explorer/electrs_bitcoin --locked --path . --features electrum-discovery \ && cargo install --root /srv/explorer/electrs_liquid --locked --path . --features electrum-discovery,liquid \ diff --git a/contrib/bitcoin-testnet4-explorer.conf.in b/contrib/bitcoin-testnet4-explorer.conf.in new file mode 100644 index 00000000..0da574e0 --- /dev/null +++ b/contrib/bitcoin-testnet4-explorer.conf.in @@ -0,0 +1,11 @@ +testnet4=1 +[testnet4] +server=1 +peerbloomfilters=0 +enforcenodebloom=1 +disablewallet=1 +listenonion=1 +listen=1 +mempoolfullrbf=1 +blocknotify=pkill -USR1 electrs +maxmempool=1000 diff --git a/flavors/bitcoin-testnet4/config.env b/flavors/bitcoin-testnet4/config.env new file mode 100755 index 00000000..46105212 --- /dev/null +++ b/flavors/bitcoin-testnet4/config.env @@ -0,0 +1,12 @@ +#!/bin/bash + +export SITE_TITLE='Bitcoin Testnet4 Explorer' +export HOME_TITLE='Bitcoin Testnet4 Explorer' +export NATIVE_ASSET_LABEL=tBTC +export NATIVE_ASSET_NAME='Bitcoin Testnet4' + +export MENU_ACTIVE='Bitcoin Testnet4' +export BASE_HREF=${BASE_HREF:-'/testnet4/'} + +export CUSTOM_ASSETS="$CUSTOM_ASSETS flavors/bitcoin-testnet4/www/*" +export CUSTOM_CSS="$CUSTOM_CSS flavors/bitcoin-testnet4/extras.css" diff --git a/flavors/bitcoin-testnet4/extras.css b/flavors/bitcoin-testnet4/extras.css new file mode 100644 index 00000000..14ab3d3a --- /dev/null +++ b/flavors/bitcoin-testnet4/extras.css @@ -0,0 +1,71 @@ +#BitcoinTestnet, #LiquidTestnet{ + display: block; +} + +#Bitcoin, #Liquid{ + display: none; +} + +.main-nav li.active a{ + border: 1px solid rgba(168, 184, 201, 1); +} + +.sub-nav .active { + border-bottom: solid 2px rgba(168, 184, 201, 1); +} + +.details-btn > div { + color: rgba(168, 184, 201, 1); + border: 1px solid rgba(168, 184, 201, 1); +} + +.transaction-box > .footer > div:nth-child(3) { + color: rgba(168, 184, 201, 1); +} + +.navbar { + background-image: linear-gradient(-90deg, rgba(84, 103, 124, 1) 0%, rgba(29, 72, 111, 1) 18%, rgba(24, 53, 80, 1) 36%, rgba(29, 37, 48, 1) 58%, rgba(14, 16, 17, 1) 100%); +} + +.sub-nav a sup.highlight{ + display: none; +} + +.main-nav li a{ + color: #78838e; +} + +.nav-link:hover{ + color: white !important; +} + +.sub-navbar:before { + content: "Bitcoin Testnet4 is used for testing. Funds have no value!"; + width: 100%; + height: 35px; + background: #ba042a; + position: absolute; + margin-top: -10px; + text-align: center; + font-size: 14px; + line-height: 2.4; +} + +.sub-nav-container{ + margin-top: 25px; +} + +.table-title, .block-header-title, .transaction-header-title{ + display: flex; +} + +.table-title:after, .block-header-title:after, .transaction-header-title:after { + content: "Testnet4"; + font-size: 13px; + background-color: rgb(48 59 70); + padding: 3px 12px; + border-radius: 30px; + margin-left: 15px; + display: inline-block; + align-self: center; +} diff --git a/flavors/bitcoin-testnet4/www/img/block.png b/flavors/bitcoin-testnet4/www/img/block.png new file mode 100644 index 0000000000000000000000000000000000000000..34e97f0d862c48e540fc5f67d4ce7ca1aebc1a02 GIT binary patch literal 1451 zcmV;c1yuTpP)#00009a7bBm000XU z000XU0RWnu7ytkTT}ebiR9J=Wm}_j4WfaGM=Y6}$rh$l{Xw+yT5fo!W#yU`gjj(lG zOi_`nUS&J1@IEQqQr@t5yUSjihX&#U%DO>|w?cEX7| z%TxS~s;mGG8r7LWzjvNdoeA=Vs;sa)#osvLM4jup_DE}u=p=VUVm=kC3DxU>?*x6c z#$WN#5OKFF@(OSTB1a9n@{TI+XQK+~M&nm1G^(-$IDxRfxA z{#oychz=Vv6m9pS(mY_Mu)3zI{M|E|<*LCi4;;3X`ard}Jts)FrE_w|PQE(O78QBb zE7o|Sv_a4a?&WXgYSD{IixeC9C%0nWiTagckiqC$MBAHr$#TzD_oGPNt zqTB#@A>Elp92}*`$+GgVp7m5XofA%X*Rn>i_Q6JA2#T zBx7wvbh(jKjT4SP+cVjI{lT)b)Y&|?baWI=IG%afNa|@pCeXit)a1B;s3eenyDX`VyPasWg(nN({3St0vZvpRRrq0MU9uPIVzu!BxCzV4#plbd}$Upim7 zwzf9Uu~X;PCDXbNI3L)LSSy27v%VTCK5M%J3+EiIsrKHY%55mWqcnH-l^$_gW0m;; zI<2wF?!M9^BH9G}D#DVW-#afG;29wYR9o%cIbJ7TgUA}-a*RZsaQss@a_Fkzz-@1h zO?4viT^NZ1mnp0sZzf(_Q|0~SY`Hlt7z-9m?E_wN_axpnwpowJ-3GgAM>x@(QuExM z3o8D|mit~yYyOs{bVQ-zr%u;6)pwo1ln-zw>vY<&b+M+ z`oXX>JM+HZ_y2vbD4kA228z$`25=ET9e~;#OQHZ408Fcqa9l>NtpbYAPo#qYTvD25 zk)U;IBs~2`3Mf8*HGq(XwXz_ubgPl@7qjn+bC8qO@dA*8%ZPKC_6jIIe>Z?B0A&Rr z7a&wINH+x=8EZZqSs3lG+QQ?6>nN@4twM14~ zQO@o?C!BaP6v(`_0uS?gnoC6@6o zU%x?D|3D^0;Gq$UTA;2tpKeF-6|sjQ;mF;_1eB+_V%rH9sLM92#H=|t8#-HL%*}i6Cm)_GQKAw@gOrbl?P(8)E;Lu+$7uF|KPnVYk&t zMnrUp{XX_d+EOF7ITwTOT)-zI%TN>mt=hwit`YGUJ^zrr$9PiutrMz|Fb#~Y+*O6b zHn%)vlxNzCxt4C;CI1#tK8Bl~5&z%Asfi+mKb`~l2}V*(7q4yaOaK4?07*qoM6N<$ Ef~IMzCIA2c literal 0 HcmV?d00001 diff --git a/flavors/bitcoin-testnet4/www/img/icons/menu-logo.svg b/flavors/bitcoin-testnet4/www/img/icons/menu-logo.svg new file mode 100644 index 00000000..99ae109c --- /dev/null +++ b/flavors/bitcoin-testnet4/www/img/icons/menu-logo.svg @@ -0,0 +1,11 @@ + + + btc_test + + + + + + + + \ No newline at end of file diff --git a/flavors/bitcoin-testnet4/www/img/icons/minus.png b/flavors/bitcoin-testnet4/www/img/icons/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c849425d5173bca737949237afbd3a6bce74d1 GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhoCO|{#XvD(5N2eUHAey{sPF0G z7$Pw>IYHuCL*e6dy#M$ApRTfE!sLgR%-rmUUp|-d`P0M_`v3orc~a{Zn=>#xb>@1= TRy=(>P%DF{tDnm{r-UW|Of@CI literal 0 HcmV?d00001 diff --git a/flavors/bitcoin-testnet4/www/img/icons/plus.png b/flavors/bitcoin-testnet4/www/img/icons/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..de3d03b9d0910e3b99a3e9024cb3c259da41144c GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhoCO|{#XvD(5N2eUHAey{IN8(1 zF+^hO(*BLShYUnq-uJxbIUul7V3FtiH4|c2Z0Zi*@Y^KN<*0z9f~_4FlZ9IsOHA>l z|NiCwg=fx@_j3Lgxa!uk65n#QcE`=^0XluT70&Soul-!;qg{T;v1SMNL?M%b{=Q4H+|nlP U!38CkfX-v^boFyt=akR{0EPinZ2$lO literal 0 HcmV?d00001 diff --git a/flavors/bitcoin-testnet4/www/img/icons/search.png b/flavors/bitcoin-testnet4/www/img/icons/search.png new file mode 100644 index 0000000000000000000000000000000000000000..6476e51266fa3ca4578b1b4d6ba70fc09ed7680e GIT binary patch literal 711 zcmV;&0yzDNP)T(?3j8Q547V@40~j7DyoA%tie?4VGDp=zLF zT#bKb5(h_<&JGeV0#1rmqK%@WAul8h1w$Bs1j4{*B@QNl(58LIp>5KAl=@ zKJVn-cLhhH(G5?g=3v+eArN&^|qNCxS?)$EAG`iujYxlQ+ zx{OiZNoe8pKa$?Bpck?ALb$Ix?yNDHnuB4WNg+}S3J?ec(njSDkip0Uw;E%F5Rk5{ z@Qjy&<}(=dZK2Eq!Kh_b7r`pp0jw4tRH;#60r1#I-j*U5r4i-S|I#f+G?9B~aITdp z>|v<=8(1~lr*`_V_@lzMC~cNym7SfIb^uM6uNT9%%mQ`0DR1yBWGuE=1M~wc!vmc^ zi{O-)iR?Ai$dqMOmI@zMls^ROfibsrbE~)WyQ)Nh)~e*WiBh)Y<>#egU<8r1&A5Nk ztwsP;Ria;(XH*FRmQizeFzDNI7RO?XHMvPga=j@Lxjxk6fA0!I?wY2m9;0#($e_%t zuwX&Rx@BuCXvHz}RNoKiS+B?-wzz zkHd@Le4>_BZ6A4CFw&rQ`cTv5>(0}EHMcyVs&DeR!qpqSU9%^`rDl3=sUKy=iT^X~ tf+rCZ`Y*5xzVqMUEdDKs+D}Az_XirV4V`dDN}~V(002ovPDHLkV1jZ;O!WW& literal 0 HcmV?d00001 diff --git a/flavors/bitcoin-testnet4/www/img/transaction.png b/flavors/bitcoin-testnet4/www/img/transaction.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a6cb09d8b5351238e4fb5b4e2171f18d450e6d GIT binary patch literal 1778 zcmV#00009a7bBm000XU z000XU0RWnu7ytkUq)9|UR9J=Wn15{4XC231pYL6JUXfAkfUy~p%}r2@FjueFu9zL! z=oJHv0l%~u85-U64}Zigni()%h(w)?7-GhPiDqo{dUYeCuKgZt7B%bcu61a_2I~Bg z&A~Pz0}g0=Kc0_&+?93L?_IBjgn#-@p4|7I=kt6%ukZ8o`#dnKSs9N)>c=ss$WJ z`L9A9@CkuN73Ne52p}Tb(GnPJ4+p+#skI!T4`}chiFe16pR35nR0ao}WY|Iv0af`5 z^1!BWVBd5=CrVYN+etozuoEz#c6&JZT)8?WTM{7B7Y|zKGk^-529R7fK2t!*w`_ZB z!=s=Z^YP{Bh?7_`Bgm)v;x~vTJ%At8`!#QydTprj)vJLVS9>`493oqR8sN~gFC^-w z4e7PyCkh`0eauR|(S!0cklme~Vv21ePGVPAe{w58x0C3P#^QHX1lkgK8rTagNoVOS z$>NrIz)3C#{RZ$)>w?*C+jb6ktW3NWpeX=_Rj6lvC6ECAvCI!feO2oe9*jDJzp%qi zuU72~7tMCFt(ojKmt)|@H@ z+1A#aia3c!fPDtfcHsVEn@O|#;J~rkv2^+raQ1wi=hg@7>odhRg&E&pDsYif0(pNm z#3Ul?McEC^Rrp~fmi&IHx3KM|5kZ~;=K4qHteqUMSfZgkzQ#&A4L6+yjz*m18Bl=H zj@HJbE~dQ^C$Sk=B(MSaX(^wo`Uerd19}he?8LH3Evax9fF<5UDTgj9x87D4eqDQI zTp26-5&*&{i_0dpq`*zUIs3l)^OZAF743UvL7KErsy)?`lWNJS-xA%d=zIW0_m*?8 zrRDB-BeBE?uxv_5U?Fg78h`*xjFoxUi$J!pj9P_(03h^qv;_B0<)rW-<1fy4>!vL4 zcTuIf0J;lhkD~j4{Rln4UjR_P*cFTKn97O57%nT0TT7k==1mjwz4mbMA-95vll(2{ z22pu9`h4=2_U8j{y8^08cPx1`!kOYSx0XB&d?fmO@}_Bmx=Zv};mLz#ZZBol(>JsT zs20QDDuIjx7_Z!UO(2adx$>Mf|1M>g^O|M=L{1c!O`hGtpH%rCm^Q$5S2^%Pe39f> z1$s+icGPsm;u|O0SjZfVd`d+N+noH`Uf1+i$(K=S1yIb9DIq^Jnt5@=SCvB9@Wk-& zw_JCftaYcLJri;kh|0wOdG`D+cutWYdoE;uUW%``cev&fx%I%s5#Pw9O=MDcx3x8= zP<{j4IPZ-4x|>t4@%|ZM-IavAqR?fKR$vrio29x+MV6e52kJV)fgNriD&x9Tm3;uX z5u~Sh--Z&$hp01nyTNlp;H>yAf6NYrE|v-a5OER?Fx(z)*cNdT7Y(v;b2#9Xt8*pR zk>PnJXI=wcU{3{0#%gv?9ZC|Sax(uYy<+5@QkGA~{`!G~ zTrQV;9Q0=32{%9}a}bM02mNNQ=QzS`0^i&eZYaC0RjNoV@hg<|1_@cJ%?NuzPo~9R zzolixCAT^yKMZWUX~dvk0M0Ayi8zTZ*8&oy5twgb?nQVUVZ@s4FMF$2xd{vMD9W8-DV`b`r7X=9zqr;K@#G&r~_}aov zM@15~f*;J$ABpNqr2R|F)~htYxFSxx4dhYajzZQ2UuR#a+@NUf;W8m~UG`QBj36=6nKf2t~7hm#>o*{ZNs@^?jUdb>T` zuy`ghCd&0lJCzEjzTX!T(Idl4a@ovE5vx`ZpHVd+|M6J*ud4-|)vRVUtLv=)0}8vQ UX4RgVvj6}907*qoM6N<$f{^!C6aWAK literal 0 HcmV?d00001 diff --git a/run.sh b/run.sh index cebacfdc..a9fd846d 100755 --- a/run.sh +++ b/run.sh @@ -10,7 +10,7 @@ SYNC_SOURCE=$5 NGINX_GCLB_IP=${NGINX_GCLB_IP:-34.36.36.12} # bs.info if [ -z "$FLAVOR" ] || [ ! -d /srv/explorer/static/$FLAVOR ]; then - echo "Please provide bitcoin-mainnet, bitcoin-testnet, bitcoin-signet, bitcoin-regtest, liquid-mainnet, liquid-testnet or liquid-regtest as a parameter" + echo "Please provide bitcoin-mainnet, bitcoin-testnet, bitcoin-testnet4, bitcoin-signet, bitcoin-regtest, liquid-mainnet, liquid-testnet or liquid-regtest as a parameter" echo "For example run.sh bitcoin-mainnet explorer" exit 1 fi @@ -26,7 +26,9 @@ ELECTRS_NETWORK=${NETWORK} DAEMON_DIR="/data/$DAEMON" if [ "$DAEMON-$NETWORK" == "bitcoin-testnet" ]; then - DAEMON_DIR="$DAEMON_DIR/testnet3" + DAEMON_DIR="$DAEMON_DIR/testnet" +elif [ "$DAEMON-$NETWORK" == "bitcoin-testnet4" ]; then + DAEMON_DIR="$DAEMON_DIR/testnet4" elif [ "$DAEMON-$NETWORK" == "bitcoin-signet" ]; then DAEMON_DIR="$DAEMON_DIR/signet" elif [ "$DAEMON-$NETWORK" == "liquid-mainnet" ]; then @@ -54,7 +56,7 @@ NGINX_REWRITE_NOJS='return 301 " /nojs$uri"' NGINX_CSP="default-src 'self'; script-src 'self' 'unsafe-eval'; img-src 'self' data:; style-src 'self' 'unsafe-inline'; font-src 'self' data:; object-src 'none'" if [ "${DAEMON}" != "liquid" ]; then - if [ "$NETWORK" == "testnet" ] || [ "$NETWORK" == "signet" ] || [ "$NETWORK" == "regtest" ]; then + if [ "$NETWORK" == "testnet" ] || [ "$NETWORK" == "testnet4" ] || [ "$NETWORK" == "signet" ] || [ "$NETWORK" == "regtest" ]; then NGINX_PATH="$NETWORK/" NGINX_NOSLASH_PATH="$NETWORK" NGINX_REWRITE='rewrite ^/'$NETWORK'(/.*)$ $1 break;'