diff --git a/frontend/src/locale/messages.es.xlf b/frontend/src/locale/messages.es.xlf
index abe3da134..88d7235a2 100644
--- a/frontend/src/locale/messages.es.xlf
+++ b/frontend/src/locale/messages.es.xlf
@@ -11,6 +11,7 @@
Slide of
+ Diapositiva de
node_modules/@ng-bootstrap/src/carousel/carousel.ts
114,118
@@ -147,6 +148,7 @@
+
node_modules/@ng-bootstrap/src/progressbar/progressbar.ts
32,38
@@ -250,6 +252,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
115,121
@@ -257,6 +260,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
123,131
@@ -432,6 +436,7 @@
transaction
+ Transacción
src/app/bisq/bisq-address/bisq-address.component.html
50
@@ -456,6 +461,7 @@
transactions
+ transacciones
src/app/bisq/bisq-address/bisq-address.component.html
51
@@ -480,6 +486,7 @@
Address:
+ Dirección:
src/app/bisq/bisq-address/bisq-address.component.ts
43
@@ -487,6 +494,7 @@
Block
+ B loque
src/app/bisq/bisq-block/bisq-block.component.html
4
@@ -552,6 +560,7 @@
Block :
+ Bloque :
src/app/bisq/bisq-block/bisq-block.component.ts
89
@@ -852,6 +861,7 @@
Amount ()
+ Cantidad ()
src/app/bisq/bisq-market/bisq-market.component.html
112,113
@@ -1082,6 +1092,7 @@
confirmation
+ confirmación
src/app/bisq/bisq-transaction/bisq-transaction.component.html
20,21
@@ -1103,6 +1114,7 @@
confirmations
+ confirmaciones
src/app/bisq/bisq-transaction/bisq-transaction.component.html
21,22
@@ -1209,6 +1221,7 @@
Transaction:
+ Transacción:
src/app/bisq/bisq-transaction/bisq-transaction.component.ts
50
@@ -1436,6 +1449,7 @@
Navigate to https://mempool.space/sponsor to sponsor
+ Navega a https://mempool.space/sponsor para patrocinar
src/app/components/about/about.component.html
78
@@ -1475,6 +1489,7 @@
Project Members
+ Miembros del proyecto
src/app/components/about/about.component.html
181,183
@@ -1512,6 +1527,7 @@
multisig of
+ multifirma de
src/app/components/address-labels/address-labels.component.html
5
@@ -1520,6 +1536,7 @@
Lightning
+ Lightning
src/app/components/address-labels/address-labels.component.html
11
@@ -1528,6 +1545,7 @@
Liquid
+ Liquid
src/app/components/address-labels/address-labels.component.html
17
@@ -1536,6 +1554,7 @@
Unconfidential
+ No confidencial
src/app/components/address/address.component.html
23,24
@@ -1544,6 +1563,7 @@
of transaction
+ de transacción
src/app/components/address/address.component.html
60,61
@@ -1552,6 +1572,7 @@
of transactions
+ de transacciones
src/app/components/address/address.component.html
61,62
@@ -1569,6 +1590,7 @@
The number of transactions on this address exceeds the Electrum server limit Consider viewing this address on the official Mempool website instead:
+ El número de transacciones en esta dirección excede el límite del servidor Electrum Considere ver esta dirección en la web oficial de mempool en su lugar:
src/app/components/address/address.component.html
137,140
@@ -1602,6 +1624,7 @@
Address:
+ Dirección:
src/app/components/address/address.component.ts
78
@@ -1703,6 +1726,7 @@
of
+ de
src/app/components/asset/asset.component.html
80
@@ -1738,6 +1762,7 @@
Asset:
+ Activo:
src/app/components/asset/asset.component.ts
73
@@ -1826,6 +1851,7 @@
Docs
+ Documentos
src/app/components/bisq-master-page/bisq-master-page.component.html
42,45
@@ -1838,6 +1864,7 @@
Next Block
+ Siguiente bloque
src/app/components/block/block.component.html
7,8
@@ -1850,6 +1877,7 @@
Previous Block
+ Bloque previo
src/app/components/block/block.component.html
26,27
@@ -2122,6 +2150,7 @@
Block :
+ Bloque :
src/app/components/block/block.component.ts
141
@@ -2137,6 +2166,7 @@
API service
+ Servicio API
src/app/components/docs/api-docs.component.html
12,14
@@ -2534,6 +2564,7 @@
Provides list of available currencies for a given base currency.
+ Entrega una lista de monedas disponibles para una determinada moneda base.
src/app/components/docs/api-docs.component.html
54,56
@@ -2541,6 +2572,7 @@
Provides list of open offer prices for a single market.
+ Entrega una lista de ofertas abiertas para un mercado individual.
src/app/components/docs/api-docs.component.html
67,69
@@ -2548,6 +2580,7 @@
Provides hi/low/open/close data for a given market. This can be used to generate a candlestick chart.
+ Entrega datos máx/mín/apertura/cierre para un determinado mercado. Puede usarse para generar un gráfico de velas.
src/app/components/docs/api-docs.component.html
80,82
@@ -2555,6 +2588,7 @@
Provides list of available markets.
+ Entrega una lista de mercados disponibles.
src/app/components/docs/api-docs.component.html
93,95
@@ -2562,6 +2596,7 @@
Provides list of open offer details for a single market.
+ Entrega una lista de detalles para un mercado único.
src/app/components/docs/api-docs.component.html
106,108
@@ -2569,6 +2604,7 @@
Provides 24 hour price ticker for single market or all markets
+ Entrega un ticker de precio de 24h para un mercado único o todos los mercados
src/app/components/docs/api-docs.component.html
119,121
@@ -2576,6 +2612,7 @@
Provides list of completed trades for a single market.
+ Entrega una lista de intercambios completados para un mercado único
src/app/components/docs/api-docs.component.html
132,134
@@ -2583,6 +2620,7 @@
Provides periodic volume data in terms of base currency for one or all markets.
+ Entrega datos de volumen periódicos en términos de moneda base para uno o todos los mercados.
src/app/components/docs/api-docs.component.html
145,147
@@ -2598,6 +2636,7 @@
Returns details about an address. Available fields: address, chain_stats, and mempool_stats. chain,mempool_stats each contain an object with tx_count, funded_txo_count, funded_txo_sum, spent_txo_count, and spent_txo_sum.
+ Devuelve detalles acerca de una dirección. Campos disponibles: dirección, chain_stats, y mempool_stats. chain,mempool_stats cada cual contiene un objeto con tx_count, funded_txo_count, funded_txo_sum, spent_txo_count, y spent_txo_sum.
src/app/components/docs/api-docs.component.html
179,180
@@ -2605,6 +2644,7 @@
Get transaction history for the specified address/scripthash, sorted with newest first. Returns up to 50 mempool transactions plus the first 25 confirmed transactions. You can request more confirmed transactions using :last_seen_txid (see below).
+ Obtén el histoial de transacciones para una determinada dirección/scripthash determinada, ordenada desde la más nueva primero. Devuelve hasta 50 transacciones de mempool más las primeras 25 transacciones confirmadas. Puede solicitar más transacciones confirmadas usando :last_seen_txid (ver abajo).
src/app/components/docs/api-docs.component.html
192,193
@@ -2628,6 +2668,7 @@
Get the list of unspent transaction outputs associated with the address/scripthash. Available fields: txid, vout, value, and status (with the status of the funding tx).There is also a valuecommitment field that may appear in place of value, plus the following additional fields: asset/assetcommitment, nonce/noncecommitment, surjection_proof, and range_proof.
+ Obtén la lista outputs de transacciones sin gastar (UTXO) asociadas a la dirección/scripthash. Campos disponibles. txid, vout, value, y status (con el estado de transacción de fondeo).También hay un campo valuecommitment que puede aparecer en lugar de value, junto a los siguientes campos adicionales: asset/assetcommitment, nonce/noncecommitment, surjection_proof, y range_proof.
src/app/components/docs/api-docs.component.html
231,233
@@ -2659,6 +2700,7 @@
Returns details about a block. Available fields: id, height, version, timestamp, bits, nonce, merkle_root, tx_count, size, weight,proof, and previousblockhash.
+ Devuelve detalles acercad e un bloque. Campos disponibles: id, height, version, timestamp, bits, nonce, merkle_root, tx_count, size, weight,proof, y previousblockhash.
src/app/components/docs/api-docs.component.html
290,291
@@ -2674,6 +2716,7 @@
Returns the hash of the block currently at :height.
+ Devuelve el hash de el bloque actual en :height.
src/app/components/docs/api-docs.component.html
316,317
@@ -2689,6 +2732,7 @@
Returns the confirmation status of a block. Available fields: in_best_chain (boolean, false for orphaned blocks), next_best (the hash of the next block, only available for blocks in the best chain).
+ Devuelve el estado de confirmación de un bloque. Campos disponibles: in_best_chain (boolean, falso para bloques huérfanos), next_best (el hash ddel siguiente bloque, solo disponible para bloques en la mejor cadena).
src/app/components/docs/api-docs.component.html
342,343
@@ -2712,6 +2756,7 @@
Returns the transaction at index :index within the specified block.
+ Devuelve la transacción en índice :index dentro de un bloque específico.
src/app/components/docs/api-docs.component.html
381,382
@@ -2727,6 +2772,7 @@
Returns a list of transactions in the block (up to 25 transactions beginning at start_index). Transactions returned here do not have the status field, since all the transactions share the same block and confirmation status.
+ Devuelve una lista de transacciones en el bloque (hasta 25 transacciones comenzando por start_index). Las transacciones devueltas aquí no tienen el capo de status , ya que todas las transacciones comparten el mismo bloque y estado de confirmación.
src/app/components/docs/api-docs.component.html
407,408
@@ -2734,6 +2780,7 @@
Returns the 10 newest blocks starting at the tip or at :start_height if specified.
+ Devuelve los 10 bloques más recientes compenzando por la punta o :start_height si se especifica.
src/app/components/docs/api-docs.component.html
420,421
@@ -2785,6 +2832,7 @@
Get a list of the last 10 transactions to enter the mempool. Each transaction object contains simplified overview data, with the following fields: txid, fee, vsize, and value.
+ Obtiene una lista de las 10 transacciones a introducir en la mempool. Cada transacción contiene datos de vista simplificada, con los siguientes campos: txid, fee, vsize, y value.
src/app/components/docs/api-docs.component.html
506,507
@@ -2804,6 +2852,7 @@
Returns details about a transaction. Available fields: txid, version, locktime, size, weight, fee, vin, vout, and status.
+ Devuelve detalles acerca de una transacción. Campos disponibles:txid, version, locktime, size, weight, fee, vin, vout, y status.
src/app/components/docs/api-docs.component.html
536,537
@@ -2819,6 +2868,7 @@
Returns a merkle inclusion proof for the transaction using bitcoind's merkleblock format.
+ Devuelve una prueba de inclusión Merkle para la transacción utilizando el formato bitcoind's merkleblock.
src/app/components/docs/api-docs.component.html
562,563
@@ -2826,6 +2876,7 @@
Returns a merkle inclusion proof for the transaction using Electrum's blockchain.transaction.get_merkle format.
+ Devuelve una prueba de inclusión Merkle para la transacción utilizando el fromato Electrum's blockchain.transaction.get_merkle
src/app/components/docs/api-docs.component.html
575,576
@@ -2833,6 +2884,7 @@
Returns the spending status of a transaction output. Available fields: spent (boolean), txid (optional), vin (optional), and status (optional, the status of the spending tx).
+ Devuelve el estado de gasto de un output de transacción. Campos disponibles: spent (boolean), txid (opcional), vin (optional), y status (opcional, el estado de la transacción de gasto).
src/app/components/docs/api-docs.component.html
588,589
@@ -2856,6 +2908,7 @@
Returns the confirmation status of a transaction. Available fields: confirmed (boolean), block_height (optional), and block_hash (optional).
+ Devuelve el estado de confirmación de una transacción. Campos disponibles:confirmed (boolean), block_height (opcional), y block_hash (opcional).
src/app/components/docs/api-docs.component.html
627,628
@@ -2871,6 +2924,7 @@
Broadcast a raw transaction to the network. The transaction should be provided as hex in the request body. The txid will be returned on success.
+ Transmite una transacción en bruto a la red. La transacción debe entregarse como hex en el campo de solicitud. La txid se devolverá en el proceso.
src/app/components/docs/api-docs.component.html
653,654
@@ -2878,6 +2932,7 @@
Default push: action: 'want', data: ['blocks', ...] to express what you want pushed. Available: blocks, mempool-blocks, live-2h-chart, and stats.Push transactions related to address: 'track-address': '3PbJ...bF9B' to receive all new transactions containing that address as input or output. Returns an array of transactions. address-transactions for new mempool transactions, and block-transactions for new block confirmed transactions.
+ Empujar por defecto: acciona: 'want', data: ['blocks', ...] para expresar lo que quiere empujar. Disponible: blocks, mempool-blocks, live-2h-chart, y stats.Empujar transacciones relaccionadas a la direccion: 'track-address': '3PbJ...bF9B' para recibir todas las nuevas transacciones que contengan la direccion como input o output. Devuelve cualquier formación de transacciones. dirección-transacciones para nuevas transacciones mempool, y bloque-transacciones para nuevas transacciones confirmadas en bloque.
src/app/components/docs/api-docs.component.html
671,672
@@ -2929,6 +2984,7 @@
Documentation
+ Documentación
src/app/components/docs/docs.component.html
4
@@ -3054,6 +3110,7 @@
blocks
+ bloques
src/app/components/footer/footer.component.html
22,23
@@ -3070,6 +3127,7 @@
block
+ bloque
src/app/components/footer/footer.component.html
23,24
@@ -3159,6 +3217,7 @@
Stack of mempool blocks
+ Montón de bloques mempool
src/app/components/mempool-block/mempool-block.component.ts
73
@@ -3166,6 +3225,7 @@
Mempool block
+ Bloque mempool
src/app/components/mempool-block/mempool-block.component.ts
75
@@ -3173,6 +3233,7 @@
Range
+ Rango
src/app/components/mempool-graph/mempool-graph.component.ts
256
@@ -3180,6 +3241,7 @@
Sum
+ Suma
src/app/components/mempool-graph/mempool-graph.component.ts
258
@@ -3196,6 +3258,7 @@
Identified by payout address: ''
+ Identificado por dirección de pago: ''
src/app/components/miner/miner.component.ts
42
@@ -3203,6 +3266,7 @@
Identified by coinbase tag: ''
+ Identificado por etiqueta coinbase: ''
src/app/components/miner/miner.component.ts
52
@@ -3210,6 +3274,7 @@
Broadcast Transaction
+ Transmitir transacción
src/app/components/push-transaction/push-transaction.component.html
2
@@ -3316,6 +3381,7 @@
Filter
+ Filtro
src/app/components/statistics/statistics.component.html
40
@@ -3354,6 +3420,7 @@
ago
+ atrás
src/app/components/time-since/time-since.component.ts
67
@@ -3413,6 +3480,7 @@
After
+ Después
src/app/components/time-span/time-span.component.ts
67
@@ -3472,6 +3540,7 @@
In ~
+ En ~
src/app/components/time-until/time-until.component.ts
66
@@ -3667,6 +3736,7 @@
Locktime
+ Tiempo de bloqueo
src/app/components/transaction/transaction.component.html
234,236
@@ -3815,6 +3885,7 @@
Previous output type
+ Anterior tipo de salida
src/app/components/transactions-list/transactions-list.component.html
116,117
@@ -3836,6 +3907,7 @@
Peg-out to
+ Peg-out a
src/app/components/transactions-list/transactions-list.component.html
146,147
@@ -3883,6 +3955,7 @@
This transaction saved % on fees by using native SegWit-Bech32
+ Esta transacción ahorra % en tasas usando Segwit-Bech32 nativo
src/app/components/tx-features/tx-features.component.html
1
@@ -3909,6 +3982,7 @@
This transaction saved % on fees by using SegWit and could save % more by fully upgrading to native SegWit-Bech32
+ Esta transacción ahorra % en tasas usando Segwit y podría ahorrar % más actualizando a SegWit-Bech32 nativo
src/app/components/tx-features/tx-features.component.html
3
@@ -3917,6 +3991,7 @@
This transaction could save % on fees by upgrading to native SegWit-Bech32 or % by upgrading to SegWit-P2SH
+ Esta transacción podría ahorrar% en tasas actualizando a SegWit-Bech32 nativo o % actualizando a Segwit-P2SH
src/app/components/tx-features/tx-features.component.html
5
@@ -3925,6 +4000,7 @@
This transaction uses Taproot
+ Esta transacción utiliza Taproot
src/app/components/tx-features/tx-features.component.html
8
@@ -3933,6 +4009,7 @@
Taproot
+ Taproot
src/app/components/tx-features/tx-features.component.html
8
@@ -3983,6 +4060,7 @@
Only ~ sat/vB was needed to get into this block
+ Solo ~ sat/vB se necesitaban para entrar en este bloque
src/app/components/tx-fee-rating/tx-fee-rating.component.html
2
@@ -3995,6 +4073,7 @@
Overpaid x
+ Pagado de más x
src/app/components/tx-fee-rating/tx-fee-rating.component.html
2
@@ -4118,6 +4197,7 @@
L-BTC in circulation
+ L-BTC en circulación
src/app/dashboard/dashboard.component.html
209,211
@@ -4192,6 +4272,7 @@
year
+ año
src/app/shared/i18n/dates.ts
3
@@ -4199,6 +4280,7 @@
years
+ años
src/app/shared/i18n/dates.ts
4
@@ -4206,6 +4288,7 @@
month
+ mes
src/app/shared/i18n/dates.ts
5
@@ -4213,6 +4296,7 @@
months
+ meses
src/app/shared/i18n/dates.ts
6
@@ -4220,6 +4304,7 @@
week
+ semana
src/app/shared/i18n/dates.ts
7
@@ -4227,6 +4312,7 @@
weeks
+ semanas
src/app/shared/i18n/dates.ts
8
@@ -4234,6 +4320,7 @@
day
+ día
src/app/shared/i18n/dates.ts
9
@@ -4241,6 +4328,7 @@
days
+ días
src/app/shared/i18n/dates.ts
10
@@ -4248,6 +4336,7 @@
hour
+ hora
src/app/shared/i18n/dates.ts
11
@@ -4255,6 +4344,7 @@
hours
+ horas
src/app/shared/i18n/dates.ts
12
@@ -4262,6 +4352,7 @@
minute
+ minuto
src/app/shared/i18n/dates.ts
13
@@ -4269,6 +4360,7 @@
minutes
+ minutos
src/app/shared/i18n/dates.ts
14
@@ -4276,6 +4368,7 @@
second
+ segundo
src/app/shared/i18n/dates.ts
15
@@ -4283,6 +4376,7 @@
seconds
+ segundos
src/app/shared/i18n/dates.ts
16
diff --git a/frontend/src/locale/messages.hu.xlf b/frontend/src/locale/messages.hu.xlf
index cc343a946..cfdeb5784 100644
--- a/frontend/src/locale/messages.hu.xlf
+++ b/frontend/src/locale/messages.hu.xlf
@@ -2929,6 +2929,7 @@
Documentation
+ Dokumentáció
src/app/components/docs/docs.component.html
4
@@ -3180,6 +3181,7 @@
Sum
+ Összesen
src/app/components/mempool-graph/mempool-graph.component.ts
258
@@ -3316,6 +3318,7 @@
Filter
+ Filter
src/app/components/statistics/statistics.component.html
40
@@ -3354,6 +3357,7 @@
ago
+ perce
src/app/components/time-since/time-since.component.ts
67
@@ -3413,6 +3417,7 @@
After
+ után
src/app/components/time-span/time-span.component.ts
67
@@ -3472,6 +3477,7 @@
In ~
+ ~ percen belül
src/app/components/time-until/time-until.component.ts
66
@@ -3667,6 +3673,7 @@
Locktime
+ Zárolási idő
src/app/components/transaction/transaction.component.html
234,236
@@ -3933,6 +3940,7 @@
Taproot
+ Taproot
src/app/components/tx-features/tx-features.component.html
8
@@ -4118,6 +4126,7 @@
L-BTC in circulation
+ L-BTC forgalomban
src/app/dashboard/dashboard.component.html
209,211
@@ -4192,6 +4201,7 @@
year
+ év
src/app/shared/i18n/dates.ts
3
@@ -4199,6 +4209,7 @@
years
+ éve
src/app/shared/i18n/dates.ts
4
@@ -4206,6 +4217,7 @@
month
+ hónap
src/app/shared/i18n/dates.ts
5
@@ -4213,6 +4225,7 @@
months
+ hónapja
src/app/shared/i18n/dates.ts
6
diff --git a/frontend/src/locale/messages.ja.xlf b/frontend/src/locale/messages.ja.xlf
index 5e86c14a5..f2ac3dc71 100644
--- a/frontend/src/locale/messages.ja.xlf
+++ b/frontend/src/locale/messages.ja.xlf
@@ -3110,7 +3110,7 @@
blocks
- ブロック
+ ブロック
src/app/components/footer/footer.component.html
22,23
@@ -4336,7 +4336,7 @@
hour
- 時
+ 時間
src/app/shared/i18n/dates.ts
11
@@ -4344,7 +4344,7 @@
hours
- 時
+ 時間
src/app/shared/i18n/dates.ts
12
diff --git a/frontend/src/locale/messages.ko.xlf b/frontend/src/locale/messages.ko.xlf
index 28c0612b3..eaa633980 100644
--- a/frontend/src/locale/messages.ko.xlf
+++ b/frontend/src/locale/messages.ko.xlf
@@ -147,6 +147,7 @@
+
node_modules/@ng-bootstrap/src/progressbar/progressbar.ts
32,38
@@ -250,6 +251,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
115,121
@@ -257,6 +259,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
123,131
@@ -432,6 +435,7 @@
transaction
+ 트랜잭션
src/app/bisq/bisq-address/bisq-address.component.html
50
@@ -456,6 +460,7 @@
transactions
+ 트랜잭년
src/app/bisq/bisq-address/bisq-address.component.html
51
@@ -480,6 +485,7 @@
Address:
+ 주소:
src/app/bisq/bisq-address/bisq-address.component.ts
43
@@ -487,6 +493,7 @@
Block
+ 블록
src/app/bisq/bisq-block/bisq-block.component.html
4
@@ -552,6 +559,7 @@
Block :
+ 블록 :
src/app/bisq/bisq-block/bisq-block.component.ts
89
@@ -852,6 +860,7 @@
Amount ()
+ 금액 ()
src/app/bisq/bisq-market/bisq-market.component.html
112,113
@@ -1082,6 +1091,7 @@
confirmation
+ 컨펌
src/app/bisq/bisq-transaction/bisq-transaction.component.html
20,21
@@ -1103,6 +1113,7 @@
confirmations
+ 컨펌들
src/app/bisq/bisq-transaction/bisq-transaction.component.html
21,22
@@ -1209,6 +1220,7 @@
Transaction:
+ 트랜잭션:
src/app/bisq/bisq-transaction/bisq-transaction.component.ts
50
@@ -1220,7 +1232,7 @@
BSQ Transactions
- BSQ 거래
+ BSQ 트랜잭션
src/app/bisq/bisq-transactions/bisq-transactions.component.html
2,5
@@ -1477,6 +1489,7 @@
Project Members
+ 프로젝트 멤버들
src/app/components/about/about.component.html
181,183
@@ -1522,6 +1535,7 @@
Lightning
+ 라이트닝
src/app/components/address-labels/address-labels.component.html
11
@@ -1530,6 +1544,7 @@
Liquid
+ Liquid
src/app/components/address-labels/address-labels.component.html
17
@@ -1604,6 +1619,7 @@
Address:
+ 주소:
src/app/components/address/address.component.ts
78
@@ -1740,6 +1756,7 @@
Asset:
+ 자산:
src/app/components/asset/asset.component.ts
73
@@ -1828,6 +1845,7 @@
Docs
+ 문서들
src/app/components/bisq-master-page/bisq-master-page.component.html
42,45
@@ -1840,6 +1858,7 @@
Next Block
+ 다음 블록
src/app/components/block/block.component.html
7,8
@@ -1852,6 +1871,7 @@
Previous Block
+ 이전 블록
src/app/components/block/block.component.html
26,27
@@ -2124,6 +2144,7 @@
Block :
+ 블록 :
src/app/components/block/block.component.ts
141
@@ -2139,6 +2160,7 @@
API service
+ API 서비스
src/app/components/docs/api-docs.component.html
12,14
@@ -2645,7 +2667,7 @@
Returns transactions associated with the specified Liquid asset. For the network's native asset, returns a list of peg in, peg out, and burn transactions. For user-issued assets, returns a list of issuance, reissuance, and burn transactions. Does not include regular transactions transferring this asset.
- 지정된 유동 자산과 관련된 거래를 반환합니다. 네트워크의 기본 자산을 위해 페그 인, 페그 아웃 및 소각 트랜잭션 목록을 반환합니다. 사용자 발행 자산의 경우 발행, 재발행 및 소각 트랜잭션 목록을 반환합니다. 이 자산을 양도하는 일반 거래는 포함되지 않습니다.
+ 지정된 Liquid 자산과 관련된 거래를 반환합니다. 네트워크의 기본 자산을 위해 페그 인, 페그 아웃 및 소각 트랜잭션 목록을 반환합니다. 사용자 발행 자산의 경우 발행, 재발행 및 소각 트랜잭션 목록을 반환합니다. 이 자산을 양도하는 일반 거래는 포함되지 않습니다.
src/app/components/docs/api-docs.component.html
260,262
@@ -2937,6 +2959,7 @@
Documentation
+ 문서
src/app/components/docs/docs.component.html
4
@@ -3823,6 +3846,7 @@
Previous output type
+ 이전 아웃풋 유형
src/app/components/transactions-list/transactions-list.component.html
116,117
@@ -3933,6 +3957,7 @@
This transaction uses Taproot
+ 이 거래는 탭루트를 사용하고 있습니다
src/app/components/tx-features/tx-features.component.html
8
@@ -3941,6 +3966,7 @@
Taproot
+ 탭루트
src/app/components/tx-features/tx-features.component.html
8
@@ -4126,6 +4152,7 @@
L-BTC in circulation
+ 유통 중인 L-BTC
src/app/dashboard/dashboard.component.html
209,211
@@ -4200,6 +4227,7 @@
year
+ 년
src/app/shared/i18n/dates.ts
3
@@ -4207,6 +4235,7 @@
years
+ 년
src/app/shared/i18n/dates.ts
4
@@ -4214,6 +4243,7 @@
month
+ 달
src/app/shared/i18n/dates.ts
5
@@ -4221,6 +4251,7 @@
months
+ 달
src/app/shared/i18n/dates.ts
6
@@ -4228,6 +4259,7 @@
week
+ 주
src/app/shared/i18n/dates.ts
7
@@ -4235,6 +4267,7 @@
weeks
+ 주
src/app/shared/i18n/dates.ts
8
@@ -4242,6 +4275,7 @@
day
+ 일
src/app/shared/i18n/dates.ts
9
@@ -4249,6 +4283,7 @@
days
+ 일
src/app/shared/i18n/dates.ts
10
@@ -4256,6 +4291,7 @@
hour
+ 시간
src/app/shared/i18n/dates.ts
11
@@ -4263,6 +4299,7 @@
hours
+ 시간
src/app/shared/i18n/dates.ts
12
@@ -4270,6 +4307,7 @@
minute
+ 분
src/app/shared/i18n/dates.ts
13
@@ -4277,6 +4315,7 @@
minutes
+ 분
src/app/shared/i18n/dates.ts
14
@@ -4284,6 +4323,7 @@
second
+ 초
src/app/shared/i18n/dates.ts
15
@@ -4291,6 +4331,7 @@
seconds
+ 초
src/app/shared/i18n/dates.ts
16
diff --git a/frontend/src/locale/messages.nl.xlf b/frontend/src/locale/messages.nl.xlf
index 57711b62c..b91d8f301 100644
--- a/frontend/src/locale/messages.nl.xlf
+++ b/frontend/src/locale/messages.nl.xlf
@@ -11,6 +11,7 @@
Slide of
+ Dia van
node_modules/@ng-bootstrap/src/carousel/carousel.ts
114,118
@@ -147,6 +148,7 @@
+
node_modules/@ng-bootstrap/src/progressbar/progressbar.ts
32,38
@@ -250,6 +252,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
115,121
@@ -257,6 +260,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
123,131
@@ -432,6 +436,7 @@
transaction
+ transactie
src/app/bisq/bisq-address/bisq-address.component.html
50
@@ -456,6 +461,7 @@
transactions
+ transacties
src/app/bisq/bisq-address/bisq-address.component.html
51
@@ -480,6 +486,7 @@
Address:
+ Adres:
src/app/bisq/bisq-address/bisq-address.component.ts
43
@@ -487,6 +494,7 @@
Block
+ Blok
src/app/bisq/bisq-block/bisq-block.component.html
4
@@ -552,6 +560,7 @@
Block :
+ Blok :
src/app/bisq/bisq-block/bisq-block.component.ts
89
@@ -852,6 +861,7 @@
Amount ()
+ Hoeveelheid ()
src/app/bisq/bisq-market/bisq-market.component.html
112,113
@@ -1082,6 +1092,7 @@
confirmation
+ bevestiging
src/app/bisq/bisq-transaction/bisq-transaction.component.html
20,21
@@ -1103,6 +1114,7 @@
confirmations
+ bevestigingen
src/app/bisq/bisq-transaction/bisq-transaction.component.html
21,22
@@ -1209,6 +1221,7 @@
Transaction:
+ Transactie:
src/app/bisq/bisq-transaction/bisq-transaction.component.ts
50
@@ -1436,6 +1449,7 @@
Navigate to https://mempool.space/sponsor to sponsor
+ Navigeer naar https://mempool.space/sponsor om te sponsoren
src/app/components/about/about.component.html
78
@@ -1475,6 +1489,7 @@
Project Members
+ Projectleden
src/app/components/about/about.component.html
181,183
@@ -1512,6 +1527,7 @@
multisig of
+ multisig van
src/app/components/address-labels/address-labels.component.html
5
@@ -1520,6 +1536,7 @@
Lightning
+ Lightning
src/app/components/address-labels/address-labels.component.html
11
@@ -1528,6 +1545,7 @@
Liquid
+ Liquid
src/app/components/address-labels/address-labels.component.html
17
@@ -1536,6 +1554,7 @@
Unconfidential
+ Niet-vertrouwelijk
src/app/components/address/address.component.html
23,24
@@ -1544,6 +1563,7 @@
of transaction
+ van transactie
src/app/components/address/address.component.html
60,61
@@ -1552,6 +1572,7 @@
of transactions
+ van transacties
src/app/components/address/address.component.html
61,62
@@ -1569,6 +1590,7 @@
The number of transactions on this address exceeds the Electrum server limit Consider viewing this address on the official Mempool website instead:
+ Het aantal transacties van dit adres overschrijdt het Electrum-serverlimiet Overweeg in plaats daarvan dit adres op de officiële Mempool-website te bekijken:
src/app/components/address/address.component.html
137,140
@@ -1602,6 +1624,7 @@
Address:
+ Adres:
src/app/components/address/address.component.ts
78
@@ -1703,6 +1726,7 @@
of
+ van
src/app/components/asset/asset.component.html
80
@@ -1738,6 +1762,7 @@
Asset:
+ Activa:
src/app/components/asset/asset.component.ts
73
@@ -1826,6 +1851,7 @@
Docs
+ Docs
src/app/components/bisq-master-page/bisq-master-page.component.html
42,45
@@ -1838,6 +1864,7 @@
Next Block
+ Volgend Blok
src/app/components/block/block.component.html
7,8
@@ -1850,6 +1877,7 @@
Previous Block
+ Vorig Blok
src/app/components/block/block.component.html
26,27
@@ -2122,6 +2150,7 @@
Block :
+ Blok :
src/app/components/block/block.component.ts
141
@@ -2137,6 +2166,7 @@
API service
+ API service
src/app/components/docs/api-docs.component.html
12,14
@@ -2534,6 +2564,7 @@
Provides list of available currencies for a given base currency.
+ Geeft een lijst met beschikbare valuta's voor een bepaalde basisvaluta
src/app/components/docs/api-docs.component.html
54,56
@@ -2541,6 +2572,7 @@
Provides list of open offer prices for a single market.
+ Geeft een lijst met open aanbiedingsprijzen voor een enkele markt.
src/app/components/docs/api-docs.component.html
67,69
@@ -2548,6 +2580,7 @@
Provides hi/low/open/close data for a given market. This can be used to generate a candlestick chart.
+ Geeft hoog/laag/open/sluit-gegevens voor een bepaalde markt. Dit kan worden gebruikt om een kandelaargrafiek te genereren.
src/app/components/docs/api-docs.component.html
80,82
@@ -2555,6 +2588,7 @@
Provides list of available markets.
+ Geeft een lijst van beschikbare markten.
src/app/components/docs/api-docs.component.html
93,95
@@ -2562,6 +2596,7 @@
Provides list of open offer details for a single market.
+ Geeft een lijst met details van openstaande aanbiedingen voor een enkele markt.
src/app/components/docs/api-docs.component.html
106,108
@@ -2569,6 +2604,7 @@
Provides 24 hour price ticker for single market or all markets
+ Geeft een 24-uurs prijsticker voor een enkele markt of alle markten.
src/app/components/docs/api-docs.component.html
119,121
@@ -2576,6 +2612,7 @@
Provides list of completed trades for a single market.
+ Geeft een lijst van voltooide transacties voor een enkele markt.
src/app/components/docs/api-docs.component.html
132,134
@@ -2583,6 +2620,7 @@
Provides periodic volume data in terms of base currency for one or all markets.
+ Geeft periodieke volumegegevens van een basisvaluta voor één of alle markten.
src/app/components/docs/api-docs.component.html
145,147
@@ -2598,6 +2636,7 @@
Returns details about an address. Available fields: address, chain_stats, and mempool_stats. chain,mempool_stats each contain an object with tx_count, funded_txo_count, funded_txo_sum, spent_txo_count, and spent_txo_sum.
+ Geeft details over een adres. Beschikbare velden: adres, chain_stats, en mempool_stats. keten,mempool_stats die elk een object bevatten met tx_count, funded_txo_count, funded_txo_sum, spent_txo_count, en spent_txo_sum.
src/app/components/docs/api-docs.component.html
179,180
@@ -2605,6 +2644,7 @@
Get transaction history for the specified address/scripthash, sorted with newest first. Returns up to 50 mempool transactions plus the first 25 confirmed transactions. You can request more confirmed transactions using :last_seen_txid (see below).
+ Verkrijg transactiegeschiedenis voor het opgegeven adres/scripthash, gesorteerd met de nieuwste eerst. Retourneert tot 50 mempool-transacties plus de eerste 25 bevestigde transacties. Je kan meer bevestigde transacties opvragen door het volgende te gebruiken :last_seen_txid (zie hieronder).
src/app/components/docs/api-docs.component.html
192,193
@@ -2628,6 +2668,7 @@
Get the list of unspent transaction outputs associated with the address/scripthash. Available fields: txid, vout, value, and status (with the status of the funding tx).There is also a valuecommitment field that may appear in place of value, plus the following additional fields: asset/assetcommitment, nonce/noncecommitment, surjection_proof, and range_proof.
+ Krijg de lijst met niet-uitgegeven transactie-outputs die zijn gekoppeld aan het adres/scripthash. Beschikbare velden: txid, vout, value, en status (met de status van de financiering-tx).Er is ook een valuecommitment veld die mogelijk verschijnt in plaats van value, plus de volgende aanvullende velden: asset/assetcommitment, nonce/noncecommitment, surjection_proof, en range_proof.
src/app/components/docs/api-docs.component.html
231,233
@@ -2659,6 +2700,7 @@
Returns details about a block. Available fields: id, height, version, timestamp, bits, nonce, merkle_root, tx_count, size, weight,proof, and previousblockhash.
+ Geeft details over een blok. Beschikbare velden: id, height, version, timestamp, bits, nonce, merkle_root, tx_count, size, weight,proof, en previousblockhash.
src/app/components/docs/api-docs.component.html
290,291
@@ -2674,6 +2716,7 @@
Returns the hash of the block currently at :height.
+ Geeft de hash van het blok dat momenteel op :height is.
src/app/components/docs/api-docs.component.html
316,317
@@ -2689,6 +2732,7 @@
Returns the confirmation status of a block. Available fields: in_best_chain (boolean, false for orphaned blocks), next_best (the hash of the next block, only available for blocks in the best chain).
+ Geeft de bevestigingsstatus van een blok. Beschikbare velden: in_best_chain (boolean, false voor georphanede blokken), next_best (de hash van het volgende blok, alleen beschikbaar voor blokken in de beste keten).
src/app/components/docs/api-docs.component.html
342,343
@@ -2712,6 +2756,7 @@
Returns the transaction at index :index within the specified block.
+ Geeft de transactie op index :index binnen het specifieke blok.
src/app/components/docs/api-docs.component.html
381,382
@@ -2929,6 +2974,7 @@
Documentation
+ Documentatie
src/app/components/docs/docs.component.html
4
@@ -3054,6 +3100,7 @@
blocks
+ blokken
src/app/components/footer/footer.component.html
22,23
@@ -3070,6 +3117,7 @@
block
+ blok
src/app/components/footer/footer.component.html
23,24
@@ -3159,6 +3207,7 @@
Stack of mempool blocks
+ Stapel van mempoolblokken
src/app/components/mempool-block/mempool-block.component.ts
73
@@ -3166,6 +3215,7 @@
Mempool block
+ Mempoolblok
src/app/components/mempool-block/mempool-block.component.ts
75
@@ -3173,6 +3223,7 @@
Range
+ Bereik
src/app/components/mempool-graph/mempool-graph.component.ts
256
@@ -3180,6 +3231,7 @@
Sum
+ Som
src/app/components/mempool-graph/mempool-graph.component.ts
258
@@ -3196,6 +3248,7 @@
Identified by payout address: ''
+ Geïdentificeerd door uitbetalingsadres: ''
src/app/components/miner/miner.component.ts
42
@@ -3203,6 +3256,7 @@
Identified by coinbase tag: ''
+ Geïdentificeerd door coinbase-tag: ''
src/app/components/miner/miner.component.ts
52
@@ -3210,6 +3264,7 @@
Broadcast Transaction
+ Uitzendtransactie
src/app/components/push-transaction/push-transaction.component.html
2
@@ -3316,6 +3371,7 @@
Filter
+ Filter
src/app/components/statistics/statistics.component.html
40
@@ -3354,6 +3410,7 @@
ago
+ geleden
src/app/components/time-since/time-since.component.ts
67
@@ -3413,6 +3470,7 @@
After
+ Na
src/app/components/time-span/time-span.component.ts
67
@@ -3472,6 +3530,7 @@
In ~
+ In ~
src/app/components/time-until/time-until.component.ts
66
@@ -3667,6 +3726,7 @@
Locktime
+ Locktime
src/app/components/transaction/transaction.component.html
234,236
@@ -3815,6 +3875,7 @@
Previous output type
+ Vorig output-type
src/app/components/transactions-list/transactions-list.component.html
116,117
@@ -3836,6 +3897,7 @@
Peg-out to
+ Peg-out naar
src/app/components/transactions-list/transactions-list.component.html
146,147
@@ -3883,6 +3945,7 @@
This transaction saved % on fees by using native SegWit-Bech32
+ Deze transactie heeft % aan vergoedingen bespaard door native SegWit-Bech32 te gebruiken
src/app/components/tx-features/tx-features.component.html
1
@@ -3909,6 +3972,7 @@
This transaction saved % on fees by using SegWit and could save % more by fully upgrading to native SegWit-Bech32
+ Deze transactie heeft % aan vergoedingen bespaard door SegWit te gebruiken en had % meer kunnen besparen door volledig te upgraden naar native SegWit-Bech32
src/app/components/tx-features/tx-features.component.html
3
@@ -3917,6 +3981,7 @@
This transaction could save % on fees by upgrading to native SegWit-Bech32 or % by upgrading to SegWit-P2SH
+ Deze transactie had % aan vergoedingen kunnen besparen door te upgraden naar native SegWit-Bech32 of % door te upgraden naar SegWit-P2SH
src/app/components/tx-features/tx-features.component.html
5
@@ -3925,6 +3990,7 @@
This transaction uses Taproot
+ Deze transactie gebruikt Taproot
src/app/components/tx-features/tx-features.component.html
8
@@ -3933,6 +3999,7 @@
Taproot
+ Taproot
src/app/components/tx-features/tx-features.component.html
8
@@ -3983,6 +4050,7 @@
Only ~ sat/vB was needed to get into this block
+ Er was maar ~ sat/vB nodig om in dit blok te komen
src/app/components/tx-fee-rating/tx-fee-rating.component.html
2
@@ -3995,6 +4063,7 @@
Overpaid x
+ Overbetaald x
src/app/components/tx-fee-rating/tx-fee-rating.component.html
2
@@ -4118,6 +4187,7 @@
L-BTC in circulation
+ L-BTC in circulatie
src/app/dashboard/dashboard.component.html
209,211
@@ -4192,6 +4262,7 @@
year
+ jaar
src/app/shared/i18n/dates.ts
3
@@ -4199,6 +4270,7 @@
years
+ jaren
src/app/shared/i18n/dates.ts
4
@@ -4206,6 +4278,7 @@
month
+ maand
src/app/shared/i18n/dates.ts
5
@@ -4213,6 +4286,7 @@
months
+ maanden
src/app/shared/i18n/dates.ts
6
@@ -4220,6 +4294,7 @@
week
+ week
src/app/shared/i18n/dates.ts
7
@@ -4227,6 +4302,7 @@
weeks
+ weken
src/app/shared/i18n/dates.ts
8
@@ -4234,6 +4310,7 @@
day
+ dag
src/app/shared/i18n/dates.ts
9
@@ -4241,6 +4318,7 @@
days
+ dagen
src/app/shared/i18n/dates.ts
10
@@ -4248,6 +4326,7 @@
hour
+ uur
src/app/shared/i18n/dates.ts
11
@@ -4255,6 +4334,7 @@
hours
+ uren
src/app/shared/i18n/dates.ts
12
@@ -4262,6 +4342,7 @@
minute
+ minuut
src/app/shared/i18n/dates.ts
13
@@ -4269,6 +4350,7 @@
minutes
+ minuten
src/app/shared/i18n/dates.ts
14
@@ -4276,6 +4358,7 @@
second
+ seconde
src/app/shared/i18n/dates.ts
15
@@ -4283,6 +4366,7 @@
seconds
+ seconden
src/app/shared/i18n/dates.ts
16
diff --git a/frontend/src/locale/messages.sl.xlf b/frontend/src/locale/messages.sl.xlf
index 1f6e785b8..a51a59d41 100644
--- a/frontend/src/locale/messages.sl.xlf
+++ b/frontend/src/locale/messages.sl.xlf
@@ -147,6 +147,7 @@
+
node_modules/@ng-bootstrap/src/progressbar/progressbar.ts
32,38
@@ -250,6 +251,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
115,121
@@ -257,6 +259,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
123,131
@@ -432,6 +435,7 @@
transaction
+ transakcija
src/app/bisq/bisq-address/bisq-address.component.html
50
@@ -456,6 +460,7 @@
transactions
+ transakcij
src/app/bisq/bisq-address/bisq-address.component.html
51
@@ -480,6 +485,7 @@
Address:
+ Naslov:
src/app/bisq/bisq-address/bisq-address.component.ts
43
@@ -487,6 +493,7 @@
Block
+ Blok
src/app/bisq/bisq-block/bisq-block.component.html
4
@@ -552,6 +559,7 @@
Block :
+ Blok :
src/app/bisq/bisq-block/bisq-block.component.ts
89
@@ -852,6 +860,7 @@
Amount ()
+ Znesek ()
src/app/bisq/bisq-market/bisq-market.component.html
112,113
@@ -1082,6 +1091,7 @@
confirmation
+ potrditev
src/app/bisq/bisq-transaction/bisq-transaction.component.html
20,21
@@ -1103,6 +1113,7 @@
confirmations
+ potrditev
src/app/bisq/bisq-transaction/bisq-transaction.component.html
21,22
@@ -1209,6 +1220,7 @@
Transaction:
+ Transakcija:
src/app/bisq/bisq-transaction/bisq-transaction.component.ts
50
@@ -1436,6 +1448,7 @@
Navigate to https://mempool.space/sponsor to sponsor
+ Pojdite na https://mempool.space/sponsor za sponzorstvo.
src/app/components/about/about.component.html
78
@@ -1512,6 +1525,7 @@
multisig of
+ multisig od
src/app/components/address-labels/address-labels.component.html
5
@@ -1520,6 +1534,7 @@
Lightning
+ Lightning
src/app/components/address-labels/address-labels.component.html
11
@@ -1528,6 +1543,7 @@
Liquid
+ Liquid
src/app/components/address-labels/address-labels.component.html
17
@@ -1545,6 +1561,7 @@
of transaction
+ od transakcij
src/app/components/address/address.component.html
60,61
@@ -1553,6 +1570,7 @@
of transactions
+ od transakcij
src/app/components/address/address.component.html
61,62
@@ -1603,6 +1621,7 @@
Address:
+ Naslov:
src/app/components/address/address.component.ts
78
@@ -1704,6 +1723,7 @@
of
+ od
src/app/components/asset/asset.component.html
80
@@ -1739,6 +1759,7 @@
Asset:
+ Sredstvo:
src/app/components/asset/asset.component.ts
73
@@ -1827,6 +1848,7 @@
Docs
+ Dokumentacija
src/app/components/bisq-master-page/bisq-master-page.component.html
42,45
@@ -2125,6 +2147,7 @@
Block :
+ Blok :
src/app/components/block/block.component.ts
141
@@ -2140,6 +2163,7 @@
API service
+ API storitev
src/app/components/docs/api-docs.component.html
12,14
@@ -2609,6 +2633,7 @@
Returns details about an address. Available fields: address, chain_stats, and mempool_stats. chain,mempool_stats each contain an object with tx_count, funded_txo_count, funded_txo_sum, spent_txo_count, and spent_txo_sum.
+ Vrne podatke o naslovu. Razpoložljiva polja: address, chain_stats, in mempool_stats. chain,mempool_stats vsebujeta objekt z tx_count, funded_txo_count, funded_txo_sum, spent_txo_count, in spent_txo_sum.
src/app/components/docs/api-docs.component.html
179,180
@@ -2940,6 +2965,7 @@
Documentation
+ Dokumentacija
src/app/components/docs/docs.component.html
4
@@ -3065,6 +3091,7 @@
blocks
+ blokov
src/app/components/footer/footer.component.html
22,23
@@ -3081,6 +3108,7 @@
block
+ blok
src/app/components/footer/footer.component.html
23,24
@@ -3170,6 +3198,7 @@
Stack of mempool blocks
+ Sklad mempool blokov
src/app/components/mempool-block/mempool-block.component.ts
73
@@ -3177,6 +3206,7 @@
Mempool block
+ Mempool blok
src/app/components/mempool-block/mempool-block.component.ts
75
@@ -3209,6 +3239,7 @@
Identified by payout address: ''
+ Prepoznano po naslovu za izplačilo: ''
src/app/components/miner/miner.component.ts
42
@@ -3216,6 +3247,7 @@
Identified by coinbase tag: ''
+ Prepoznano po coinbase oznaki: ''
src/app/components/miner/miner.component.ts
52
@@ -3369,6 +3401,7 @@
ago
+ nazaj
src/app/components/time-since/time-since.component.ts
67
@@ -3428,6 +3461,7 @@
After
+ Po
src/app/components/time-span/time-span.component.ts
67
@@ -3487,6 +3521,7 @@
In ~
+ Čez ~
src/app/components/time-until/time-until.component.ts
66
@@ -3853,6 +3888,7 @@
Peg-out to
+ Peg-out v
src/app/components/transactions-list/transactions-list.component.html
146,147
@@ -3900,6 +3936,7 @@
This transaction saved % on fees by using native SegWit-Bech32
+ Ta transakcija je prihranila % omrežnine z uporabo native SegWit-Bech32.
src/app/components/tx-features/tx-features.component.html
1
@@ -3926,6 +3963,7 @@
This transaction saved % on fees by using SegWit and could save % more by fully upgrading to native SegWit-Bech32
+ Ta transakcija je prihranila % omrežnine z uporabo SegWit in bi lahko dodatnih % s popolno nadgradnjo na native SegWit-Bech32.
src/app/components/tx-features/tx-features.component.html
3
@@ -4002,6 +4040,7 @@
Only ~ sat/vB was needed to get into this block
+ Samo ~ sat/vB je bilo potrebno za vključitev v ta blok.
src/app/components/tx-fee-rating/tx-fee-rating.component.html
2
@@ -4014,6 +4053,7 @@
Overpaid x
+ Preplačano x
src/app/components/tx-fee-rating/tx-fee-rating.component.html
2
diff --git a/frontend/src/locale/messages.th.xlf b/frontend/src/locale/messages.th.xlf
index d11c3c7cb..4e44d97ce 100644
--- a/frontend/src/locale/messages.th.xlf
+++ b/frontend/src/locale/messages.th.xlf
@@ -11,6 +11,7 @@
Slide of
+ สไลด์ จาก
node_modules/@ng-bootstrap/src/carousel/carousel.ts
114,118
@@ -147,6 +148,7 @@
+
node_modules/@ng-bootstrap/src/progressbar/progressbar.ts
32,38
@@ -250,6 +252,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
115,121
@@ -257,6 +260,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
123,131
@@ -376,7 +380,7 @@
Address
- ที่อยู่
+ แอดเดรส
src/app/bisq/bisq-address/bisq-address.component.html
2
@@ -432,6 +436,7 @@
transaction
+ ธุรกรรม
src/app/bisq/bisq-address/bisq-address.component.html
50
@@ -456,6 +461,7 @@
transactions
+ ธุรกรรม
src/app/bisq/bisq-address/bisq-address.component.html
51
@@ -480,6 +486,7 @@
Address:
+ แอดเดรส:
src/app/bisq/bisq-address/bisq-address.component.ts
43
@@ -487,6 +494,7 @@
Block
+ บล็อก
src/app/bisq/bisq-block/bisq-block.component.html
4
@@ -552,6 +560,7 @@
Block :
+ บล็อก :
src/app/bisq/bisq-block/bisq-block.component.ts
89
@@ -852,6 +861,7 @@
Amount ()
+ จำนวน ()
src/app/bisq/bisq-market/bisq-market.component.html
112,113
@@ -924,7 +934,7 @@
Addresses
- ที่อยู่
+ แอดเดรส
src/app/bisq/bisq-stats/bisq-stats.component.html
24
@@ -1082,6 +1092,7 @@
confirmation
+ การยืนยัน
src/app/bisq/bisq-transaction/bisq-transaction.component.html
20,21
@@ -1103,6 +1114,7 @@
confirmations
+ การยืนยัน
src/app/bisq/bisq-transaction/bisq-transaction.component.html
21,22
@@ -1209,6 +1221,7 @@
Transaction:
+ ธุรกรรม:
src/app/bisq/bisq-transaction/bisq-transaction.component.ts
50
@@ -1436,6 +1449,7 @@
Navigate to https://mempool.space/sponsor to sponsor
+ โปรดไปที่https://mempool.space/sponsor เพื่อสนับสนุนเรา
src/app/components/about/about.component.html
78
@@ -1475,6 +1489,7 @@
Project Members
+ สมาชิกในโปรเจคนี้
src/app/components/about/about.component.html
181,183
@@ -1512,6 +1527,7 @@
multisig of
+ multisig จาก
src/app/components/address-labels/address-labels.component.html
5
@@ -1520,6 +1536,7 @@
Lightning
+ Lightning
src/app/components/address-labels/address-labels.component.html
11
@@ -1528,6 +1545,7 @@
Liquid
+ Liquid
src/app/components/address-labels/address-labels.component.html
17
@@ -1536,6 +1554,7 @@
Unconfidential
+ ไม่เป็นความลับ
src/app/components/address/address.component.html
23,24
@@ -1544,6 +1563,7 @@
of transaction
+ จาก ธุรกรรม
src/app/components/address/address.component.html
60,61
@@ -1552,6 +1572,7 @@
of transactions
+ ของ ธุรกรรม
src/app/components/address/address.component.html
61,62
@@ -1560,7 +1581,7 @@
Error loading address data.
- เกิดข้อผิดพลาดในการโหลดข้อมูลที่อยู่
+ เกิดข้อผิดพลาดในการโหลดข้อมูลแอดเดรส
src/app/components/address/address.component.html
132,134
@@ -1602,6 +1623,7 @@
Address:
+ แอดเดรส:
src/app/components/address/address.component.ts
78
@@ -1703,6 +1725,7 @@
of
+ ของ
src/app/components/asset/asset.component.html
80
@@ -1738,6 +1761,7 @@
Asset:
+ สินทรัพย์:
src/app/components/asset/asset.component.ts
73
@@ -1826,6 +1850,7 @@
Docs
+ เอกสาร
src/app/components/bisq-master-page/bisq-master-page.component.html
42,45
@@ -1838,6 +1863,7 @@
Next Block
+ บล็อกถัดไป
src/app/components/block/block.component.html
7,8
@@ -1850,6 +1876,7 @@
Previous Block
+ บล็อกก่อนหน้า
src/app/components/block/block.component.html
26,27
@@ -2122,6 +2149,7 @@
Block :
+ บล็อก :
src/app/components/block/block.component.ts
141
@@ -2137,6 +2165,7 @@
API service
+ บริการ API
src/app/components/docs/api-docs.component.html
12,14
@@ -2612,7 +2641,7 @@
Get confirmed transaction history for the specified address/scripthash, sorted with newest first. Returns 25 transactions per page. More can be requested by specifying the last txid seen by the previous query.
- แสดงการยืนยันประวัติการทำธุรกรรมสำหรับ ที่อยู่/scripthash ที่ระบุ โดยเรียงลำดับที่ใหม่ที่สุดก่อน ส่งกลับธุรกรรม 25 รายการต่อหน้า สามารถขอเพิ่มเติมได้โดยระบุ txid สุดท้ายที่เห็นในข้อความค้นหาก่อนหน้า
+ แสดงการยืนยันประวัติการทำธุรกรรมสำหรับ แอดเดรส/scripthash ที่ระบุ โดยเรียงลำดับที่ใหม่ที่สุดก่อน ส่งกลับธุรกรรม 25 รายการต่อหน้า สามารถขอเพิ่มเติมได้โดยระบุ txid สุดท้ายที่เห็นในข้อความค้นหาก่อนหน้า
src/app/components/docs/api-docs.component.html
205,207
@@ -2620,7 +2649,7 @@
Get unconfirmed transaction history for the specified address/scripthash. Returns up to 50 transactions (no paging).
- แสดงประวัติการทำธุรกรรมที่ไม่ได้รับการยืนยันสำหรับ ที่อยู่/scripthash ที่ระบุ โดยแสดงค่าธุรกรรมสูงสุด 50 รายการ (ไม่มีการเพจ)
+ แสดงประวัติการทำธุรกรรมที่ไม่ได้รับการยืนยันสำหรับ แอดเดรส/scripthash ที่ระบุ โดยแสดงค่าธุรกรรมสูงสุด 50 รายการ (ไม่มีการเพจ)
src/app/components/docs/api-docs.component.html
218,220
@@ -2929,6 +2958,7 @@
Documentation
+ เอกสารคำอภิบาย
src/app/components/docs/docs.component.html
4
@@ -3054,6 +3084,7 @@
blocks
+ บล็อก
src/app/components/footer/footer.component.html
22,23
@@ -3070,6 +3101,7 @@
block
+ บล็อก
src/app/components/footer/footer.component.html
23,24
@@ -3159,6 +3191,7 @@
Stack of mempool blocks
+ ชั้นของ บล็อก mempool
src/app/components/mempool-block/mempool-block.component.ts
73
@@ -3166,6 +3199,7 @@
Mempool block
+ บล็อก mempool
src/app/components/mempool-block/mempool-block.component.ts
75
@@ -3173,6 +3207,7 @@
Range
+ ระยะ
src/app/components/mempool-graph/mempool-graph.component.ts
256
@@ -3180,6 +3215,7 @@
Sum
+ ผลรวม
src/app/components/mempool-graph/mempool-graph.component.ts
258
@@ -3210,6 +3246,7 @@
Broadcast Transaction
+ ประกาศธุรกรรม
src/app/components/push-transaction/push-transaction.component.html
2
@@ -3240,7 +3277,7 @@
TXID, block height, hash or address
- TXID, ความสูงบล็อก, แฮชหรือที่อยู่
+ TXID, ความสูงบล็อก, แฮชหรือแอดเดรส
src/app/components/search-form/search-form.component.html
4
@@ -3667,6 +3704,7 @@
Locktime
+ เวลาล็อก
src/app/components/transaction/transaction.component.html
234,236
@@ -3917,6 +3955,7 @@
This transaction could save % on fees by upgrading to native SegWit-Bech32 or % by upgrading to SegWit-P2SH
+ ธุรกรรมนี้สามารถประหยัดค่าธรรมเนียมได้ % โดยเปลี่ยนไปใช้ native SegWit-Bech32 หรือประหยัดได้ % โดยใช้ SegWit-P2SH
src/app/components/tx-features/tx-features.component.html
5
@@ -3925,6 +3964,7 @@
This transaction uses Taproot
+ ธุรกรรมนี้ใช้ Taproot
src/app/components/tx-features/tx-features.component.html
8
@@ -3933,6 +3973,7 @@
Taproot
+ Taproot
src/app/components/tx-features/tx-features.component.html
8
@@ -3983,6 +4024,7 @@
Only ~ sat/vB was needed to get into this block
+ จำเป็นต้องมีเพียง ~ sat/vB เพื่อที่จะเข้าสู่บล็อกนี้
src/app/components/tx-fee-rating/tx-fee-rating.component.html
2
@@ -3995,6 +4037,7 @@
Overpaid x
+ จ่ายเกิน x
src/app/components/tx-fee-rating/tx-fee-rating.component.html
2
@@ -4052,7 +4095,7 @@
USD
- ดอลล่าร์
+ USD
src/app/dashboard/dashboard.component.html
123,124
@@ -4118,6 +4161,7 @@
L-BTC in circulation
+ อุปทานหมุนเวียน L-BTC
src/app/dashboard/dashboard.component.html
209,211
@@ -4192,6 +4236,7 @@
year
+ ปี
src/app/shared/i18n/dates.ts
3
@@ -4199,6 +4244,7 @@
years
+ ปี
src/app/shared/i18n/dates.ts
4
@@ -4206,6 +4252,7 @@
month
+ เดือน
src/app/shared/i18n/dates.ts
5
@@ -4213,6 +4260,7 @@
months
+ เดือน
src/app/shared/i18n/dates.ts
6
@@ -4220,6 +4268,7 @@
week
+ สัปดาห์
src/app/shared/i18n/dates.ts
7
@@ -4227,6 +4276,7 @@
weeks
+ สัปดาห์
src/app/shared/i18n/dates.ts
8
@@ -4234,6 +4284,7 @@
day
+ วัน
src/app/shared/i18n/dates.ts
9
@@ -4241,6 +4292,7 @@
days
+ วัน
src/app/shared/i18n/dates.ts
10
@@ -4248,6 +4300,7 @@
hour
+ ชั่วโมง
src/app/shared/i18n/dates.ts
11
@@ -4255,6 +4308,7 @@
hours
+ ชั่วโมง
src/app/shared/i18n/dates.ts
12
@@ -4262,6 +4316,7 @@
minute
+ นาที
src/app/shared/i18n/dates.ts
13
@@ -4269,6 +4324,7 @@
minutes
+ นาที
src/app/shared/i18n/dates.ts
14
@@ -4276,6 +4332,7 @@
second
+ วินาที
src/app/shared/i18n/dates.ts
15
@@ -4283,6 +4340,7 @@
seconds
+ วินาที
src/app/shared/i18n/dates.ts
16
diff --git a/frontend/src/locale/messages.zh.xlf b/frontend/src/locale/messages.zh.xlf
index 7977fdd1b..34fcd1405 100644
--- a/frontend/src/locale/messages.zh.xlf
+++ b/frontend/src/locale/messages.zh.xlf
@@ -147,6 +147,7 @@
+
node_modules/@ng-bootstrap/src/progressbar/progressbar.ts
32,38
@@ -250,6 +251,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
115,121
@@ -257,6 +259,7 @@
+
node_modules/@ng-bootstrap/src/timepicker/timepicker.ts
123,131
@@ -432,6 +435,7 @@
transaction
+ 交易
src/app/bisq/bisq-address/bisq-address.component.html
50
@@ -456,6 +460,7 @@
transactions
+ 交易
src/app/bisq/bisq-address/bisq-address.component.html
51
@@ -480,6 +485,7 @@
Address:
+ 地址:
src/app/bisq/bisq-address/bisq-address.component.ts
43
@@ -487,6 +493,7 @@
Block
+ 区块
src/app/bisq/bisq-block/bisq-block.component.html
4
@@ -552,6 +559,7 @@
Block :
+ 区块:
src/app/bisq/bisq-block/bisq-block.component.ts
89
@@ -852,6 +860,7 @@
Amount ()
+ 数量()
src/app/bisq/bisq-market/bisq-market.component.html
112,113
@@ -1082,6 +1091,7 @@
confirmation
+ 已确认
src/app/bisq/bisq-transaction/bisq-transaction.component.html
20,21
@@ -1103,6 +1113,7 @@
confirmations
+ 已确认
src/app/bisq/bisq-transaction/bisq-transaction.component.html
21,22
@@ -1209,6 +1220,7 @@
Transaction:
+ 交易:
src/app/bisq/bisq-transaction/bisq-transaction.component.ts
50
@@ -1436,6 +1448,7 @@
Navigate to https://mempool.space/sponsor to sponsor
+ 前往https://mempool.space/sponsor去赞助
src/app/components/about/about.component.html
78
@@ -1475,6 +1488,7 @@
Project Members
+ 项目成员
src/app/components/about/about.component.html
181,183
@@ -1512,6 +1526,7 @@
multisig of
+ 多重签名 of
src/app/components/address-labels/address-labels.component.html
5
@@ -1520,6 +1535,7 @@
Lightning
+ 闪电交易
src/app/components/address-labels/address-labels.component.html
11
@@ -1528,6 +1544,7 @@
Liquid
+ Liquid交易
src/app/components/address-labels/address-labels.component.html
17
@@ -1545,6 +1562,7 @@
of transaction
+ 中的交易
src/app/components/address/address.component.html
60,61
@@ -1553,6 +1571,7 @@
of transactions
+ 中的交易
src/app/components/address/address.component.html
61,62
diff --git a/production/README.md b/production/README.md
index 8821cb43b..c9f067089 100644
--- a/production/README.md
+++ b/production/README.md
@@ -1,80 +1,88 @@
-# mempool.space v2 production website hosting
+# mempool enterprise production instance
-These instructions are for setting up a serious production mempool website for Mainnet, Testnet, and Liquid. For home users, follow the main instructions instead.
+These instructions are for setting up a serious production mempool website for Bitcoin mainnet, testnet, signet, Liquid mainnet and testnet, and Bisq. For home users, you should use one-click installation methods instead, and for advanced manual deployments of mainnet only see the top-level installation instructions.
### Server Hardware
-Mempool V2 is powered by electrs, which is a beast. I recommend a beefy server:
+Mempool V2 is powered by blockstream/electrs, which is a beast. I recommend a beefy server:
-* 16C CPU (more is better)
+* 20C CPU (more is better)
* 64G RAM (more is better)
-* 2TB SSD (NVMe is better)
+* 4TB SSD (NVMe is better)
### HDD vs SSD vs NVMe
If you don't have a fast SSD or NVMe backed disk, that's fine. What you do is, go online and buy some fast new NVMe drives and wait for them to arrive. After you install them, throw away your old HDDs and then proceed with the rest of this guide.
-## FreeBSD 12
+## FreeBSD 13
The mempool.space site is powered by FreeBSD with ZFS root and ARC cache for maximum performance. Linux probably works fine too, but why settle?
### Filesystem
-For maximum performance, I use 2x 1TB NVMe SSDs in a RAID 0 using ZFS with lots of RAM for the ARC L2 cache.
+For maximum performance, I use 2x 2TB NVMe SSDs in a RAID 0 using ZFS with lots of RAM for the ARC L2 cache.
```
-# zpool list -v nvmraid
-NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
-nvmraid 1.81T 1.04T 787G - - 0% 57% 1.00x ONLINE -
- nvd0 928G 535G 393G - - 0% 57%
- nvd1 928G 534G 394G - - 0% 57%
+% zpool list -v
+NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
+nvm 3.62T 1.25T 2.38T - - 2% 34% 1.00x ONLINE -
+ nvd0p3 1.81T 629G 1.20T - - 2% 33.9% - ONLINE
+ nvd1p3 1.81T 646G 1.18T - - 2% 34.8% - ONLINE
```
-For maximum flexibility of configuration, I configure the partitions separately for each data folder:
+For maximum flexibility of configuration, I recommend partitions separately for each data folder:
```
Filesystem Size Used Avail Capacity Mounted on
-nvmraid/mempool 732G 3.0G 729G 0% /mempool
-nvmraid/mysql 730G 618M 729G 0% /mysql
-nvmraid/bisq 729G 88K 729G 0% /bisq
-nvmraid/elements 731G 1.8G 729G 0% /elements
-nvmraid/elements/liquidv1 737G 7.2G 729G 1% /elements/liquidv1
-nvmraid/elements/electrs 730G 434M 729G 0% /elements/electrs
-nvmraid/bitcoin 730G 694M 729G 0% /bitcoin
-nvmraid/bitcoin/chainstate 733G 3.9G 729G 1% /bitcoin/chainstate
-nvmraid/bitcoin/indexes 757G 27G 729G 4% /bitcoin/indexes
-nvmraid/bitcoin/electrs 730G 853M 729G 0% /bitcoin/electrs
-nvmraid/bitcoin/blocks 1.0T 306G 729G 30% /bitcoin/blocks
-nvmraid/bitcoin/testnet3 729G 13M 729G 0% /bitcoin/testnet3
-nvmraid/bitcoin/testnet3/blocks 756G 26G 729G 3% /bitcoin/testnet3/blocks
-nvmraid/bitcoin/testnet3/chainstate 731G 1.3G 729G 0% /bitcoin/testnet3/chainstate
-nvmraid/bitcoin/testnet3/indexes 733G 3.8G 729G 1% /bitcoin/testnet3/indexes
-nvmraid/electrs/liquid/cache 729G 39M 729G 0% /electrs/liquid/newindex/cache
-nvmraid/electrs/liquid/history 730G 737M 729G 0% /electrs/liquid/newindex/history
-nvmraid/electrs/liquid/txstore 736G 6.2G 729G 1% /electrs/liquid/newindex/txstore
-nvmraid/electrs/mainnet/cache 729G 44M 729G 0% /electrs/mainnet/newindex/cache
-nvmraid/electrs/mainnet/history 964G 234G 729G 24% /electrs/mainnet/newindex/history
-nvmraid/electrs/mainnet/txstore 1.1T 392G 729G 35% /electrs/mainnet/newindex/txstore
-nvmraid/electrs/testnet/cache 729G 40M 729G 0% /electrs/testnet/newindex/cache
-nvmraid/electrs/testnet/history 747G 18G 729G 2% /electrs/testnet/newindex/history
-nvmraid/electrs/testnet/txstore 764G 34G 729G 4% /electrs/testnet/newindex/txstore
+nvm/bisq 766G 1.1G 765G 0% /bisq
+nvm/bitcoin 766G 648M 765G 0% /bitcoin
+nvm/bitcoin/blocks 1.1T 375G 765G 33% /bitcoin/blocks
+nvm/bitcoin/chainstate 770G 4.5G 765G 1% /bitcoin/chainstate
+nvm/bitcoin/electrs 772G 7.3G 765G 1% /bitcoin/electrs
+nvm/bitcoin/indexes 799G 34G 765G 4% /bitcoin/indexes
+nvm/bitcoin/testnet3 765G 5.0M 765G 0% /bitcoin/testnet3
+nvm/bitcoin/testnet3/blocks 786G 21G 765G 3% /bitcoin/testnet3/blocks
+nvm/bitcoin/testnet3/chainstate 766G 1.1G 765G 0% /bitcoin/testnet3/chainstate
+nvm/bitcoin/testnet3/indexes 768G 2.9G 765G 0% /bitcoin/testnet3/indexes
+nvm/electrs 765G 128K 765G 0% /electrs
+nvm/electrs/liquid 765G 104K 765G 0% /electrs/liquid
+nvm/electrs/liquid/cache 765G 7.8M 765G 0% /electrs/liquid/newindex/cache
+nvm/electrs/liquid/history 766G 886M 765G 0% /electrs/liquid/newindex/history
+nvm/electrs/liquid/txstore 775G 10G 765G 1% /electrs/liquid/newindex/txstore
+nvm/electrs/liquidtestnet 765G 112K 765G 0% /electrs/liquidtestnet
+nvm/electrs/liquidtestnet/cache 765G 96K 765G 0% /electrs/liquidtestnet/newindex/cache
+nvm/electrs/liquidtestnet/history 765G 96K 765G 0% /electrs/liquidtestnet/newindex/history
+nvm/electrs/liquidtestnet/txstore 765G 96K 765G 0% /electrs/liquidtestnet/newindex/txstore
+nvm/electrs/mainnet 765G 112K 765G 0% /electrs/mainnet
+nvm/electrs/mainnet/cache 765G 4.4M 765G 0% /electrs/mainnet/newindex/cache
+nvm/electrs/mainnet/history 1.0T 300G 765G 28% /electrs/mainnet/newindex/history
+nvm/electrs/mainnet/txstore 1.3T 530G 765G 41% /electrs/mainnet/newindex/txstore
+nvm/electrs/signet 766G 522M 765G 0% /electrs/signet
+nvm/electrs/testnet 765G 104K 765G 0% /electrs/testnet
+nvm/electrs/testnet/cache 765G 1.6M 765G 0% /electrs/testnet/newindex/cache
+nvm/electrs/testnet/history 784G 19G 765G 2% /electrs/testnet/newindex/history
+nvm/electrs/testnet/txstore 803G 38G 765G 5% /electrs/testnet/newindex/txstore
+nvm/elements 766G 927M 765G 0% /elements
+nvm/elements/electrs 766G 716M 765G 0% /elements/electrs
+nvm/elements/liquidv1 777G 11G 765G 1% /elements/liquidv1
+nvm/mempool 789G 24G 765G 3% /mempool
+nvm/mysql 766G 648M 765G 0% /mysql
+tmpfs 1.0G 1.3M 1.0G 0% /var/cache/nginx
+tmpfs 3.0G 1.9G 1.1G 63% /bisq/statsnode-data/btc_mainnet/db/json
```
### Build Dependencies
You'll probably need these:
```
-pkg install -y zsh sudo git screen vim-console curl wget neovim rsync
-pkg install -y openssl openssh-portable open-vm-tools-nox11 py37-pip
-pkg install -y boost-libs autoconf automake gmake gcc libevent libtool pkgconf
-pkg install -y mariadb55-server mariadb55-client nginx py37-certbot-nginx npm
+pkg install -y zsh sudo git screen curl wget neovim rsync nginx openssl openssh-portable py38-pip py38-certbot-nginx boost-libs autoconf automake gmake gcc libevent libtool pkgconf mariadb105-server mariadb105-client
```
### NodeJS / npm
I recommend to build nodejs / npm from source using nvm:
```
-curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | zsh
+curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh
source $HOME/.zshrc
-nvm install node
+nvm install v16.10.0
nvm alias default node
```
@@ -107,11 +115,18 @@ DataDirectory /var/db/tor
DataDirectoryGroupReadable 1
HiddenServiceDir /var/db/tor/mempool
-HiddenServicePort 80 127.0.0.1:80
+HiddenServicePort 80 127.0.0.1:81
+HiddenServiceVersion 3
+
+HiddenServiceDir /var/db/tor/bisq
+HiddenServicePort 80 127.0.0.1:82
+HiddenServiceVersion 3
+
+HiddenServiceDir /var/db/tor/liquid
+HiddenServicePort 80 127.0.0.1:83
HiddenServiceVersion 3
```
-
### Bitcoin
Build [Bitcoin Core](https://github.com/bitcoin/bitcoin) from source. Alternatively, install the OS packages:
@@ -121,25 +136,35 @@ pkg install -y bitcoin-daemon bitcoin-utils
Configure your bitcoin.conf like this:
```
+datadir=/bitcoin
server=1
-daemon=1
+txindex=1
listen=1
discover=1
-txindex=1
-dbcache=3700
-maxconnections=1337
+par=16
+dbcache=4096
+maxmempool=1337
+mempoolexpiry=999999
+maxconnections=42
onion=127.0.0.1:9050
rpcallowip=127.0.0.1
-rpcuser=0cd862dce678b830bd2aa36f10b9b6b2
-rpcpassword=2d89d36cac4a13c87b5d19ef8f577e37
+rpcuser=foo
+rpcpassword=bar
[main]
bind=127.0.0.1:8333
rpcbind=127.0.0.1:8332
+whitelist=bloomfilter@127.0.0.1
[test]
+daemon=1
bind=127.0.0.1:18333
rpcbind=127.0.0.1:18332
+
+[signet]
+daemon=1
+bind=127.0.0.1:38333
+rpcbind=127.0.0.1:38332
```
### Elements
@@ -158,15 +183,39 @@ Configure your elements.conf like this:
server=1
daemon=1
listen=1
-chain=liquidv1
-rpcuser=liquiduser
-rpcpassword=liquidpass
-validatepegin=1
+rpcuser=foo
+rpcpassword=bar
mainchainrpchost=127.0.0.1
-mainchainrpcport=8332
-mainchainrpcuser=user
-mainchainrpcpassword=pass
+mainchainrpcuser=foo
+mainchainrpcpassword=bar
txindex=1
+
+[liquidv1]
+validatepegin=1
+mainchainrpcport=8332
+
+[liquidtestnet]
+validatepegin=0
+anyonecanspendaremine=0
+initialfreecoins=2100000000000000
+con_dyna_deploy_start=0
+con_max_block_sig_size=150
+checkblockindex=0
+fallbackfee=0.00000100
+con_has_parent_chain=0
+parentgenesisblockhash=NULL
+pubkeyprefix=36
+scriptprefix=19
+blindedprefix=23
+bech32_hrp=tex
+blech32_hrp=tlq
+pchmessagestart=410edd62
+dynamic_epoch_length=1000
+signblockscript=51210217e403ddb181872c32a0cd468c710040b2f53d8cac69f18dad07985ee37e9a7151ae
+evbparams=dynafed:0:::
+addnode=liquid-testnet.blockstream.com:18892
+addnode=liquidtestnet.com:18891
+addnode=liquid.network:18444
```
Start elementsd and wait for it to sync the Liquid blockchain.
@@ -180,11 +229,13 @@ cd electrs
git checkout new-index
```
-You'll need 3 instances, one for each network. Build one at a time:
+You'll need one instance per network. Build and run them one at a time:
```
./electrs-start-mainnet
./electrs-start-testnet
+./electrs-start-signet
./electrs-start-liquid
+./electrs-start-liquidtestnet
```
### MariaDB
@@ -194,12 +245,26 @@ Import historical mempool fee database snapshot:
mysql -u root
create database mempool;
grant all on mempool.* to 'mempool'@'localhost' identified by 'mempool';
-create database tmempool;
-grant all on tmempool.* to 'tmempool'@'localhost' identified by 'tmempool';
-create database lmempool;
-grant all on lmempool.* to 'lmempool'@'localhost' identified by 'lmempool';
+create database mempool_testnet;
+grant all on mempool_testnet.* to 'mempool_testnet'@'localhost' identified by 'mempool_testnet';
+create database mempool_signet;
+grant all on mempool_signet.* to 'mempool_signet'@'localhost' identified by 'mempool_signet';
+create database mempool_liquid;
+grant all on mempool_liquid.* to 'mempool_liquid'@'localhost' identified by 'mempool_liquid';
+create database mempool_liquidtestnet;
+grant all on mempool_liquidtestnet.* to 'mempool_liquidtestnet'@'localhost' identified by 'mempool_liquidtestnet';
```
+
+### Bisq
+
+Build bisq-statsnode normally and run using options like this:
+```
+./bisq-statsnode --dumpBlockchainData=true --dumpStatistics=true
+```
+
+If bisq is happy, it should dump JSON files for Bisq Markets and BSQ data into /bisq that the mempool backend will use.
+
### Mempool
After all 3 electrs instances are fully indexed, install your 3 mempool nodes:
@@ -217,13 +282,15 @@ Finally, start your 3 mempool backends:
Get SSL certificate using certbot:
```
-certbot --nginx -d mempool.space
+certbot --nginx -d mempool.ninja
```
-Install nginx.conf from this repo, edit as necessary:
+Make a symlink from /usr/local/etc/nginx/mempool to /mempool/mempool, and copy the nginx.conf and edit as necessary. You probably only need to edit the top-level nginx.conf file.
```
-cp nginx.conf /usr/local/etc/nginx/nginx.conf
-vi /usr/local/etc/nginx/nginx.conf
+cd /usr/local/etc/nginx
+ln -s /mempool/mempool
+cp /mempool/mempool/nginx.conf .
+vi nginx.conf
```
Restart nginx
@@ -234,4 +301,3 @@ service nginx restart
### Done
Your site should look like https://mempool.space/
-If it doesn't ask wiz on Keybase DM or Twitter for help.
diff --git a/production/nginx-bisq.conf b/production/nginx-bisq.conf
deleted file mode 100644
index 25873c78c..000000000
--- a/production/nginx-bisq.conf
+++ /dev/null
@@ -1,75 +0,0 @@
-root /mempool/public_html/markets/en-US;
-index index.html;
-
-set $frameOptions "DENY";
-set $contentSecurityPolicy "frame-ancestors 'none'";
-if ($http_referer ~ ^https://bisq.markets/)
-{
- set $frameOptions "ALLOW-FROM https://bisq.markets";
- set $contentSecurityPolicy "frame-ancestors https://bisq.markets";
-}
-if ($http_referer ~ ^https://bisq.network/)
-{
- set $frameOptions "ALLOW-FROM https://bisq.network";
- set $contentSecurityPolicy "frame-ancestors https://bisq.network";
-}
-add_header X-Frame-Options $frameOptions;
-add_header Content-Security-Policy $contentSecurityPolicy;
-add_header Link "; rel=\"canonical\"";
-add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
-#add_header Onion-Location http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion$request_uri;
-
-proxy_cache markets;
-proxy_cache_valid 200 30s;
-
-location / {
- try_files $uri $uri/ /index.html;
-}
-location /api {
- rewrite ^/api$ / break;
- rewrite ^/api/$ / break;
- rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
- try_files $uri $uri/ @mempool;
-}
-location /bisq/api/markets {
- rewrite ^/bisq/api/markets/(.*) /api/v1/bisq/markets/$1 break;
- try_files $uri $uri/ @mempool;
-}
-location /bisq/api/v1/markets {
- rewrite ^/bisq/api/v1/markets/(.*) /api/v1/bisq/markets/$1 break;
- try_files $uri $uri/ @mempool;
-}
-location /bisq/api/v1/ws {
- proxy_pass http://127.0.0.1:8996/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
-}
-location /api/markets {
- rewrite ^/api/markets/(.*) /api/v1/bisq/markets/$1 break;
- try_files $uri $uri/ @mempool;
-}
-location /api/v1/markets {
- rewrite ^/api/v1/markets/(.*) /api/v1/bisq/markets/$1 break;
- try_files $uri $uri/ @mempool;
-}
-location /api/v1/ws {
- proxy_pass http://127.0.0.1:8996/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
-}
-location @mempool {
- proxy_pass http://127.0.0.1:8996;
- proxy_http_version 1.1;
-
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
-
- proxy_cache_bypass $http_upgrade;
- proxy_redirect off;
- proxy_set_header X-Forwarded-Proto $scheme;
-}
diff --git a/production/nginx-liquid.conf b/production/nginx-liquid.conf
deleted file mode 100644
index 37451fdb7..000000000
--- a/production/nginx-liquid.conf
+++ /dev/null
@@ -1,167 +0,0 @@
-root /mempool/public_html/liquid/;
-
-index index.html;
-
-set $frameOptions "DENY";
-set $contentSecurityPolicy "frame-ancestors 'none'";
-if ($http_referer ~ ^https://mempool.space/)
-{
- set $frameOptions "ALLOW-FROM https://mempool.space";
- set $contentSecurityPolicy "frame-ancestors https://mempool.space";
-}
-if ($http_referer ~ ^https://mempool.ninja/)
-{
- set $frameOptions "ALLOW-FROM https://mempool.ninja";
- set $contentSecurityPolicy "frame-ancestors https://mempool.ninja";
-}
-if ($http_referer ~ ^https://wiz.biz/)
-{
- set $frameOptions "ALLOW-FROM https://wiz.biz";
- set $contentSecurityPolicy "frame-ancestors https://wiz.biz";
-}
-
-add_header X-Frame-Options $frameOptions;
-add_header Content-Security-Policy $contentSecurityPolicy;
-add_header Onion-Location http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion$request_uri;
-add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
-
-# fallback for all URLs i.e. /address/foo /tx/foo /block/000
-location / {
- try_files /$lang/$uri /$lang/$uri/ $uri $uri/ /en-US/$uri @index-redirect;
- add_header Cache-Control "public, no-transform";
- add_header X-Frame-Options $frameOptions;
- add_header Content-Security-Policy $contentSecurityPolicy;
- add_header Onion-Location http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion$request_uri;
- add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
- expires 10m;
-}
-location /resources {
- try_files /$lang/$uri /$lang/$uri/ $uri $uri/ /en-US/$uri @index-redirect;
- add_header Cache-Control "public, no-transform";
- add_header X-Frame-Options $frameOptions;
- add_header Content-Security-Policy $contentSecurityPolicy;
- add_header Onion-Location http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion$request_uri;
- add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
- expires 1h;
-}
-location @index-redirect {
- add_header Vary accept-language;
- add_header X-Frame-Options $frameOptions;
- add_header Content-Security-Policy $contentSecurityPolicy;
- add_header Onion-Location http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion$request_uri;
- add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
- rewrite (.*) /$lang/index.html;
-}
-
-# location block using regex are matched in order
-
-# used to rewrite resources from // to /en-US/
-location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|ka|no|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh)/resources/ {
- rewrite ^/[a-zA-Z-]*/resources/(.*) /en-US/resources/$1;
-}
-# used for cookie override
-location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|ka|no|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh)/ {
- try_files $uri $uri/ /$1/index.html =404;
-}
-
-# static API docs
-location = /api {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
-}
-location = /api/ {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
-}
-location = /liquid/api {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
-}
-location = /liquid/api/ {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
-}
-location = /testnet/api {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
-}
-location = /testnet/api/ {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
-}
-
-# mainnet API
-location /api/v1/contributors {
- proxy_pass https://mempool.space;
- proxy_hide_header onion-location;
- proxy_hide_header strict-transport-security;
- proxy_hide_header content-security-policy;
- proxy_hide_header x-frame-options;
-}
-location /api/v1/donations {
- proxy_pass https://mempool.space;
- proxy_hide_header onion-location;
- proxy_hide_header strict-transport-security;
- proxy_hide_header content-security-policy;
- proxy_hide_header x-frame-options;
-}
-location /api/v1/donations/images {
- proxy_pass https://mempool.space;
- proxy_cache services;
- proxy_cache_valid 200 1d;
- expires 7d;
- add_header Cache-Control "public, no-transform";
- proxy_hide_header onion-location;
- proxy_hide_header strict-transport-security;
- proxy_hide_header content-security-policy;
- proxy_hide_header x-frame-options;
-}
-location /api/v1/ws {
- proxy_pass http://127.0.0.1:8998/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
-}
-location /api/v1 {
- proxy_pass http://127.0.0.1:8998/api/v1;
-}
-location /api/address {
- proxy_pass http://electrs-liquid/address;
-}
-location /api/tx {
- proxy_pass http://electrs-liquid/tx;
-}
-location /api/block {
- proxy_pass http://electrs-liquid/block;
-}
-location /api/ {
- proxy_pass http://electrs-liquid/;
-}
-
-# liquid API
-location /liquid/api/v1/ws {
- proxy_pass http://127.0.0.1:8998/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
-}
-location /liquid/api/v1 {
- proxy_pass http://127.0.0.1:8998/api/v1;
-}
-location /liquid/api/ {
- proxy_pass http://electrs-liquid/;
-}
-
-# liquidtestnet API
-location /liquidtestnet/api/v1/ws {
- proxy_pass http://127.0.0.1:8994/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
-}
-location /liquidtestnet/api/v1 {
- proxy_pass http://127.0.0.1:8994/api/v1;
-}
-location /liquidtestnet/api/ {
- proxy_pass http://electrs-liquidtestnet/;
-}
diff --git a/production/nginx-mempool-ssr.conf b/production/nginx-mempool-ssr.conf
deleted file mode 100644
index 5c80bb75f..000000000
--- a/production/nginx-mempool-ssr.conf
+++ /dev/null
@@ -1,212 +0,0 @@
- root /mempool/public_html/mainnet/;
-
- index index.html;
-
- add_header Onion-Location http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion$request_uri;
- add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
-
- set $frameOptions "DENY";
- set $contentSecurityPolicy "frame-ancestors 'none'";
- if ($http_referer ~ ^https://mempool.space/)
- {
- set $frameOptions "ALLOW-FROM https://mempool.space";
- set $contentSecurityPolicy "frame-ancestors https://mempool.space";
- }
- if ($http_referer ~ ^https://mempool.ninja/)
- {
- set $frameOptions "ALLOW-FROM https://mempool.ninja";
- set $contentSecurityPolicy "frame-ancestors https://mempool.ninja";
- }
- if ($http_referer ~ ^https://node100.bitcoin.wiz.biz/)
- {
- set $frameOptions "ALLOW-FROM https://node100.bitcoin.wiz.biz";
- set $contentSecurityPolicy "frame-ancestors https://node100.bitcoin.wiz.biz";
- }
- if ($http_referer ~ ^https://wiz.biz/)
- {
- set $frameOptions "ALLOW-FROM https://wiz.biz";
- set $contentSecurityPolicy "frame-ancestors https://wiz.biz";
- }
-
- add_header X-Frame-Options $frameOptions;
- add_header Content-Security-Policy $contentSecurityPolicy;
-
- # fallback for all URLs i.e. /address/foo /tx/foo /block/000
- location / {
- #try_files /$lang/$uri /$lang/$uri/ $uri $uri/ /en-US/$uri @index-redirect;
- proxy_pass http://127.0.0.1:4000;
- }
- location @index-redirect {
- add_header vary accept-language;
- rewrite (.*) /$lang/index.html;
- }
-
- # location block using regex are matched in order
-
- # used to rewrite resources from // to /en-US/
- location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|ka|no|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh)/resources/ {
- #rewrite ^/[a-zA-Z-]*/resources/(.*) /resources/$1;
- try_files $uri /en-US/$uri =404;
- }
- location /resources/ {
- try_files $uri /en-US/$uri =404;
- }
- # used for cookie override
- location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|ka|no|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh)/ {
- #try_files $uri $uri/ /$1/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
-
- # add /sitemap for production SEO
- location /sitemap {
- try_files $uri =410;
- }
- # old /explorer redirect from v1 days
- location /explorer {
- rewrite /explorer/(.*) https://$host/$1 permanent;
- }
-
- # static API docs
- location = /api {
- #return 302 https://mempool.space/$request_uri;
- #try_files $uri $uri/ /en-US/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
- location = /api/ {
- #return 302 https://mempool.space/$request_uri;
- #try_files $uri $uri/ /en-US/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
- location = /liquid/api {
- #return 302 https://mempool.space/$request_uri;
- #try_files $uri $uri/ /en-US/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
- location = /liquid/api/ {
- #return 302 https://mempool.space/$request_uri;
- #try_files $uri $uri/ /en-US/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
- location = /testnet/api {
- #return 302 https://mempool.space/$request_uri;
- #try_files $uri $uri/ /en-US/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
- location = /testnet/api/ {
- #return 302 https://mempool.space/$request_uri;
- #try_files $uri $uri/ /en-US/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
- location = /bisq/api {
- #return 302 https://mempool.space/$request_uri;
- #try_files $uri $uri/ /en-US/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
- location = /bisq/api/ {
- #return 302 https://mempool.space/$request_uri;
- #try_files $uri $uri/ /en-US/index.html =404;
- proxy_pass http://127.0.0.1:4000;
- }
-
- # mainnet API
- location /api/v1/donations {
- proxy_pass http://127.0.0.1:8999;
- # don't rate limit this API prefix
- }
- location /api/v1/donations/images {
- proxy_pass http://127.0.0.1:8999;
- proxy_cache services;
- proxy_cache_valid 200 1d;
- }
- location /api/v1/ws {
- proxy_pass http://127.0.0.1:8999/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /api/v1 {
- proxy_pass http://127.0.0.1:8999/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /api/ {
- proxy_pass http://[::1]:3000/;
- limit_req burst=50 nodelay zone=electrs;
- }
-
- # liquid API
- location /liquid/api/v1/ws {
- proxy_pass http://127.0.0.1:8998/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /liquid/api/v1 {
- proxy_pass http://127.0.0.1:8998/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /liquid/api/ {
- proxy_pass http://[::1]:3001/;
- limit_req burst=50 nodelay zone=electrs;
- }
-
- # testnet API
- location /testnet/api/v1/ws {
- proxy_pass http://127.0.0.1:8997/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /testnet/api/v1 {
- proxy_pass http://127.0.0.1:8997/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /testnet/api/ {
- proxy_pass http://[::1]:3002/;
- limit_req burst=50 nodelay zone=electrs;
- }
-
- # bisq API
- location /bisq/api/v1/ws {
- proxy_pass http://127.0.0.1:8996/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /bisq/api/v1/markets {
- proxy_pass http://127.0.0.1:8996/api/v1/bisq/markets;
- #limit_req burst=50 nodelay zone=api;
- }
- location /bisq/api/v1 {
- proxy_pass http://127.0.0.1:8996/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /bisq/api {
- proxy_pass http://127.0.0.1:8996/api/v1/bisq;
- limit_req burst=50 nodelay zone=api;
- }
-
- # mainnet API
- location /ws {
- proxy_pass http://127.0.0.1:8999/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /ws/mainnet {
- proxy_pass http://127.0.0.1:8999/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /ws/liquid {
- proxy_pass http://127.0.0.1:8998/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /ws/testnet {
- proxy_pass http://127.0.0.1:8997/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
diff --git a/production/nginx-mempool.conf b/production/nginx-mempool.conf
deleted file mode 100644
index 8b948b305..000000000
--- a/production/nginx-mempool.conf
+++ /dev/null
@@ -1,272 +0,0 @@
- root /mempool/public_html/mainnet/;
-
- index index.html;
-
- # tor onion redirect
- add_header Onion-Location http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion$request_uri;
-
- # HSTS preload enable
- add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
-
- # generate frame configuration from origin header
- set $frameOptions "DENY";
- set $contentSecurityPolicy "frame-ancestors 'none'";
- if ($http_referer ~ ^https://mempool.space/)
- {
- set $frameOptions "ALLOW-FROM https://mempool.space";
- set $contentSecurityPolicy "frame-ancestors https://mempool.space";
- }
- if ($http_referer ~ ^https://mempool.ninja/)
- {
- set $frameOptions "ALLOW-FROM https://mempool.ninja";
- set $contentSecurityPolicy "frame-ancestors https://mempool.ninja";
- }
- if ($http_referer ~ ^https://wiz.biz/)
- {
- set $frameOptions "ALLOW-FROM https://wiz.biz";
- set $contentSecurityPolicy "frame-ancestors https://wiz.biz";
- }
-
- # restrict usage of frames
- add_header X-Frame-Options $frameOptions;
- add_header Content-Security-Policy $contentSecurityPolicy;
-
- # enable browser and proxy caching
- add_header Cache-Control "public, no-transform";
-
- # vary cache if user changes language preference
- add_header Vary Accept-Language;
- add_header Vary Cookie;
-
- # fallback for all URLs i.e. /address/foo /tx/foo /block/000
- location / {
- try_files /$lang/$uri /$lang/$uri/ $uri $uri/ /en-US/$uri @index-redirect;
- expires 10m;
- }
- location /resources {
- try_files /$lang/$uri /$lang/$uri/ $uri $uri/ /en-US/$uri @index-redirect;
- expires 1h;
- }
- location @index-redirect {
- rewrite (.*) /$lang/index.html;
- }
-
- # location block using regex are matched in order
-
- # used to rewrite resources from // to /en-US/
- location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh|hi)/resources/ {
- rewrite ^/[a-zA-Z-]*/resources/(.*) /en-US/resources/$1;
- }
- # used for cookie override
- location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh|hi)/ {
- try_files $uri $uri/ /$1/index.html =404;
- }
-
- # add /sitemap for production SEO
- location /sitemap {
- try_files $uri =410;
- }
- # old /explorer redirect from v1 days
- location /explorer {
- rewrite /explorer/(.*) https://$host/$1 permanent;
- }
-
- # static API docs
- location = /api {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /api/ {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /liquid/api {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /liquid/api/ {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /testnet/api {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /testnet/api/ {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /bisq/api {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /bisq/api/ {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /signet/api {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
- location = /signet/api/ {
- #return 302 https://mempool.space/$request_uri;
- try_files $uri $uri/ /en-US/index.html =404;
- }
-
- # serivces API
- location /api/v1/contributors {
- # don't rate limit this API prefix
- proxy_pass https://mempool.space;
- proxy_hide_header onion-location;
- proxy_hide_header strict-transport-security;
- proxy_hide_header content-security-policy;
- proxy_hide_header x-frame-options;
- }
- location /api/v1/donations {
- # don't rate limit this API prefix
- proxy_pass https://mempool.space;
- proxy_hide_header onion-location;
- proxy_hide_header strict-transport-security;
- proxy_hide_header content-security-policy;
- proxy_hide_header x-frame-options;
- }
- location /api/v1/donations/images {
- # don't rate limit this API prefix
- proxy_pass https://mempool.space;
- proxy_cache services;
- proxy_cache_valid 200 1d;
- expires 7d;
- add_header Cache-Control "public, no-transform";
- proxy_hide_header onion-location;
- proxy_hide_header strict-transport-security;
- proxy_hide_header content-security-policy;
- proxy_hide_header x-frame-options;
- }
-
- # mainnet API
- location /api/v1/ws {
- proxy_pass http://127.0.0.1:8999/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /api/v1 {
- proxy_pass http://127.0.0.1:8999/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /api/address {
- proxy_pass http://electrs-mainnet/address;
- limit_req burst=50 nodelay zone=electrs-address;
- }
- location /api/tx {
- proxy_pass http://electrs-mainnet/tx;
- limit_req burst=50 nodelay zone=electrs-tx;
- }
- location /api/block {
- proxy_pass http://electrs-mainnet/block;
- limit_req burst=50 nodelay zone=electrs-block;
- }
- location /api/ {
- proxy_pass http://electrs-mainnet/;
- limit_req burst=50 nodelay zone=electrs;
- }
-
- # liquid API
- location /liquid/api/v1/ws {
- proxy_pass http://127.0.0.1:8998/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /liquid/api/v1 {
- proxy_pass http://127.0.0.1:8998/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /liquid/api/ {
- proxy_pass http://electrs-liquid/;
- limit_req burst=50 nodelay zone=electrs;
- }
-
- # testnet API
- location /testnet/api/v1/ws {
- proxy_pass http://127.0.0.1:8997/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /testnet/api/v1 {
- proxy_pass http://127.0.0.1:8997/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /testnet/api/ {
- proxy_pass http://electrs-testnet/;
- limit_req burst=50 nodelay zone=electrs;
- }
-
- # bisq API
- location /bisq/api/v1/ws {
- proxy_pass http://127.0.0.1:8996/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /bisq/api/v1/markets {
- proxy_pass http://127.0.0.1:8996/api/v1/bisq/markets;
- #limit_req burst=50 nodelay zone=api;
- }
- location /bisq/api/v1 {
- proxy_pass http://127.0.0.1:8996/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /bisq/api {
- proxy_pass http://127.0.0.1:8996/api/v1/bisq;
- limit_req burst=50 nodelay zone=api;
- }
-
- # signet API
- location /signet/api/v1/ws {
- proxy_pass http://127.0.0.1:8995/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /signet/api/v1 {
- proxy_pass http://127.0.0.1:8995/api/v1;
- limit_req burst=50 nodelay zone=api;
- }
- location /signet/api/ {
- proxy_pass http://electrs-signet/;
- limit_req burst=50 nodelay zone=electrs;
- }
-
- # websockets
- location /ws {
- proxy_pass http://127.0.0.1:8999/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /ws/mainnet {
- proxy_pass http://127.0.0.1:8999/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /ws/liquid {
- proxy_pass http://127.0.0.1:8998/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /ws/testnet {
- proxy_pass http://127.0.0.1:8997/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
- location /ws/signet {
- proxy_pass http://127.0.0.1:8995/;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "Upgrade";
- }
diff --git a/production/nginx.conf b/production/nginx.conf
deleted file mode 100644
index 7a00580dc..000000000
--- a/production/nginx.conf
+++ /dev/null
@@ -1,301 +0,0 @@
-user nobody;
-pid /var/run/nginx.pid;
-
-worker_processes auto;
-worker_rlimit_nofile 100000;
-
-events {
- worker_connections 9000;
- multi_accept on;
-}
-
-http {
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
-
- server_tokens off;
- server_name_in_redirect off;
-
- include /usr/local/etc/nginx/mime.types;
- default_type application/octet-stream;
-
- access_log /var/log/nginx/access.log;
- error_log /var/log/nginx/error.log;
-
- # reset timed out connections freeing ram
- reset_timedout_connection on;
- # maximum time between packets the client can pause when sending nginx any data
- client_body_timeout 10s;
- # maximum time the client has to send the entire header to nginx
- client_header_timeout 10s;
- # timeout which a single keep-alive client connection will stay open
- keepalive_timeout 69s;
- # maximum time between packets nginx is allowed to pause when sending the client data
- send_timeout 10s;
-
- # number of requests per connection, does not affect SPDY
- keepalive_requests 100;
-
- # enable gzip compression
- gzip on;
- gzip_vary on;
- gzip_comp_level 6;
- gzip_min_length 1000;
- gzip_proxied expired no-cache no-store private auth;
- # text/html is always compressed by gzip module
- gzip_types application/javascript application/json application/ld+json application/manifest+json application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard;
-
- # limit request body size
- client_max_body_size 10m;
-
- # proxy cache
- proxy_cache off;
- proxy_cache_path /var/cache/nginx/services keys_zone=services:20m levels=1:2 inactive=600s max_size=100m;
- proxy_cache_path /var/cache/nginx/markets keys_zone=markets:20m levels=1:2 inactive=600s max_size=100m;
- proxy_cache_path /var/cache/nginx/mainnet keys_zone=mainnet:20m levels=1:2 inactive=600s max_size=100m;
- proxy_cache_path /var/cache/nginx/testnet keys_zone=testnet:20m levels=1:2 inactive=600s max_size=100m;
- proxy_cache_path /var/cache/nginx/liquid keys_zone=liquid:20m levels=1:2 inactive=600s max_size=100m;
- proxy_cache_path /var/cache/nginx/signet keys_zone=signet:20m levels=1:2 inactive=600s max_size=100m;
- types_hash_max_size 2048;
-
- map $http_accept_language $header_lang {
- default en-US;
- ~*^en-US en-US;
- ~*^en en-US;
- ~*^ar ar;
- ~*^cs cs;
- ~*^de de;
- ~*^es es;
- ~*^fa fa;
- ~*^fr fr;
- ~*^ko ko;
- ~*^hi hi;
- ~*^it it;
- ~*^ka ka;
- ~*^hu hu;
- ~*^nl nl;
- ~*^ja ja;
- ~*^nb nb;
- ~*^pl pl;
- ~*^pt pt;
- ~*^sl sl;
- ~*^fi fi;
- ~*^sv sv;
- ~*^tr tr;
- ~*^uk uk;
- ~*^vi vi;
- ~*^zh zh;
- }
-
- map $cookie_lang $lang {
- default $header_lang;
- ~*^en-US en-US;
- ~*^en en-US;
- ~*^ar ar;
- ~*^cs cs;
- ~*^de de;
- ~*^es es;
- ~*^fa fa;
- ~*^fr fr;
- ~*^hi hi;
- ~*^it it;
- ~*^ka ka;
- ~*^hu hu;
- ~*^ja ja;
- ~*^ko ko;
- ~*^nb nb;
- ~*^nl nl;
- ~*^pl pl;
- ~*^pt pt;
- ~*^sl sl;
- ~*^fi fi;
- ~*^sv sv;
- ~*^tr tr;
- ~*^uk uk;
- ~*^vi vi;
- ~*^zh zh;
- }
-
- server {
- listen 80;
- listen [::]:80;
- server_name node206.mempool.space mempool.space mempool.ninja bisq.markets liquid.network;
-
- if ($host = mempool.space)
- {
- return 301 https://$host$request_uri;
- }
- if ($host = mempool.ninja)
- {
- return 301 https://$host$request_uri;
- }
- if ($host = bisq.markets)
- {
- return 301 https://$host$request_uri;
- }
- if ($host = liquid.network)
- {
- return 301 https://$host$request_uri;
- }
- if ($host = node206.mempool.space)
- {
- return 301 https://$host$request_uri;
- }
- return 503;
- }
-
- upstream electrs-mainnet {
- server [2401:b140:1::92:201]:3000 backup;
- server [2401:b140:1::92:202]:3000 backup;
- server [2401:b140:1::92:203]:3000 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:204]:3000 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:205]:3000 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:206]:3000 weight=9999 fail_timeout=10s max_fails=10;
- }
- server {
- listen 127.0.0.1:4000;
- access_log /dev/null;
- location / {
- proxy_pass http://electrs-mainnet;
- }
- }
-
- upstream electrs-liquid {
- server [2401:b140:1::92:201]:3001 backup;
- server [2401:b140:1::92:202]:3001 backup;
- server [2401:b140:1::92:203]:3001 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:204]:3001 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:205]:3001 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:206]:3001 weight=9999 fail_timeout=10s max_fails=10;
- }
- server {
- listen 127.0.0.1:4001;
- access_log /dev/null;
- location / {
- proxy_pass http://electrs-liquid;
- }
- }
-
- upstream electrs-testnet {
- server [2401:b140:1::92:201]:3002 backup;
- server [2401:b140:1::92:202]:3002 backup;
- server [2401:b140:1::92:203]:3002 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:204]:3002 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:205]:3002 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:206]:3002 weight=9999 fail_timeout=10s max_fails=10;
- }
- server {
- listen 127.0.0.1:4002;
- access_log /dev/null;
- location / {
- proxy_pass http://electrs-testnet;
- }
- }
-
- upstream electrs-signet {
- server [2401:b140:1::92:201]:3003 backup;
- server [2401:b140:1::92:202]:3003 backup;
- server [2401:b140:1::92:203]:3003 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:204]:3003 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:205]:3003 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:206]:3003 weight=9999 fail_timeout=10s max_fails=10;
- }
- server {
- listen 127.0.0.1:4003;
- access_log /dev/null;
- location / {
- proxy_pass http://electrs-signet;
- }
- }
-
- upstream electrs-liquidtestnet {
- server [2401:b140:1::92:201]:3004 backup;
- server [2401:b140:1::92:202]:3004 backup;
- server [2401:b140:1::92:203]:3004 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:204]:3004 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:205]:3004 weight=1 fail_timeout=10s max_fails=10;
- server [2401:b140:1::92:206]:3004 weight=9999 fail_timeout=10s max_fails=10;
- }
- server {
- listen 127.0.0.1:4004;
- access_log /dev/null;
- location / {
- proxy_pass http://electrs-liquidtestnet;
- }
- }
-
- server {
- listen 127.0.0.1:80;
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name mempool.space node206.mempool.space;
-
- include /usr/local/etc/nginx/ssl/mempool.conf;
- include /usr/local/etc/nginx/nginx-mempool.conf;
- access_log /var/log/nginx/mempool-access.log;
- error_log /var/log/nginx/mempool-error.log;
- }
-
- server {
- listen 127.0.0.1:80;
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name liquid.network;
- include /usr/local/etc/nginx/ssl/mempool.conf;
- include /usr/local/etc/nginx/nginx-liquid.conf;
- access_log /var/log/nginx/liquid-access.log;
- error_log /var/log/nginx/liquid-error.log;
- }
-
- server {
- listen 127.0.0.1:80;
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name bisq.markets;
- include /usr/local/etc/nginx/ssl/mempool.conf;
- include /usr/local/etc/nginx/nginx-bisq.conf;
- access_log /var/log/nginx/bisq-access.log;
- error_log /var/log/nginx/bisq-error.log;
-
- }
-
- server {
- listen 127.0.0.1:80;
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name mempool.ninja;
- ssl_certificate /usr/local/etc/letsencrypt/live/mempool.ninja/fullchain.pem;
- ssl_certificate_key /usr/local/etc/letsencrypt/live/mempool.ninja/privkey.pem;
- include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
- ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
-
- include /usr/local/etc/nginx/nginx-mempool.conf;
- }
-
- server {
- listen 127.0.0.1:80;
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name liquid.place;
- ssl_certificate /usr/local/etc/letsencrypt/live/liquid.place/fullchain.pem;
- ssl_certificate_key /usr/local/etc/letsencrypt/live/liquid.place/privkey.pem;
- include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
- ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
-
- include /usr/local/etc/nginx/nginx-liquid.conf;
- }
-
- server {
- listen 127.0.0.1:80;
- listen 443 ssl http2;
- listen [::]:443 ssl http2;
- server_name bisq.ninja;
- ssl_certificate /usr/local/etc/letsencrypt/live/bisq.ninja/fullchain.pem;
- ssl_certificate_key /usr/local/etc/letsencrypt/live/bisq.ninja/privkey.pem;
- include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
- ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
-
- include /usr/local/etc/nginx/nginx-bisq.conf;
- }
-}
diff --git a/production/nginx/http-basic.conf b/production/nginx/http-basic.conf
new file mode 100644
index 000000000..ce257591a
--- /dev/null
+++ b/production/nginx/http-basic.conf
@@ -0,0 +1,39 @@
+# basics
+sendfile on;
+tcp_nopush on;
+tcp_nodelay on;
+server_tokens off;
+server_name_in_redirect off;
+include /usr/local/etc/nginx/mime.types;
+default_type application/octet-stream;
+
+# default logs
+access_log /var/log/nginx/access.log;
+error_log /var/log/nginx/error.log;
+
+# reset timed out connections freeing ram
+reset_timedout_connection on;
+# maximum time between packets the client can pause when sending nginx any data
+client_body_timeout 10s;
+# maximum time the client has to send the entire header to nginx
+client_header_timeout 10s;
+# timeout which a single keep-alive client connection will stay open
+keepalive_timeout 69s;
+# maximum time between packets nginx is allowed to pause when sending the client data
+send_timeout 10s;
+
+# number of requests per connection, does not affect SPDY
+keepalive_requests 100;
+
+# enable gzip compression
+gzip on;
+gzip_vary on;
+gzip_comp_level 6;
+gzip_min_length 1000;
+gzip_proxied expired no-cache no-store private auth;
+# text/html is always compressed by gzip module
+gzip_types application/javascript application/json application/ld+json application/manifest+json application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard;
+
+# limit request body size
+client_max_body_size 10m;
+
diff --git a/production/nginx/http-language.conf b/production/nginx/http-language.conf
new file mode 100644
index 000000000..aacb030c4
--- /dev/null
+++ b/production/nginx/http-language.conf
@@ -0,0 +1,57 @@
+map $http_accept_language $header_lang {
+ default en-US;
+ ~*^en-US en-US;
+ ~*^en en-US;
+ ~*^ar ar;
+ ~*^cs cs;
+ ~*^de de;
+ ~*^es es;
+ ~*^fa fa;
+ ~*^fr fr;
+ ~*^ko ko;
+ ~*^hi hi;
+ ~*^it it;
+ ~*^ka ka;
+ ~*^hu hu;
+ ~*^nl nl;
+ ~*^ja ja;
+ ~*^nb nb;
+ ~*^pl pl;
+ ~*^pt pt;
+ ~*^sl sl;
+ ~*^fi fi;
+ ~*^sv sv;
+ ~*^tr tr;
+ ~*^uk uk;
+ ~*^vi vi;
+ ~*^zh zh;
+}
+map $cookie_lang $lang {
+ default $header_lang;
+ ~*^en-US en-US;
+ ~*^en en-US;
+ ~*^ar ar;
+ ~*^cs cs;
+ ~*^de de;
+ ~*^es es;
+ ~*^fa fa;
+ ~*^fr fr;
+ ~*^hi hi;
+ ~*^it it;
+ ~*^ka ka;
+ ~*^hu hu;
+ ~*^ja ja;
+ ~*^ko ko;
+ ~*^nb nb;
+ ~*^nl nl;
+ ~*^pl pl;
+ ~*^pt pt;
+ ~*^sl sl;
+ ~*^fi fi;
+ ~*^sv sv;
+ ~*^tr tr;
+ ~*^uk uk;
+ ~*^vi vi;
+ ~*^zh zh;
+}
+
diff --git a/production/nginx/http-proxy-cache.conf b/production/nginx/http-proxy-cache.conf
new file mode 100644
index 000000000..84efabffc
--- /dev/null
+++ b/production/nginx/http-proxy-cache.conf
@@ -0,0 +1,4 @@
+# proxy cache
+proxy_cache_path /var/cache/nginx/services keys_zone=services:20m levels=1:2 inactive=600s max_size=100m;
+proxy_cache_path /var/cache/nginx/markets keys_zone=markets:20m levels=1:2 inactive=600s max_size=100m;
+types_hash_max_size 2048;
diff --git a/production/nginx/location-api-v1-contributors.conf b/production/nginx/location-api-v1-contributors.conf
new file mode 100644
index 000000000..34fb5d06c
--- /dev/null
+++ b/production/nginx/location-api-v1-contributors.conf
@@ -0,0 +1,8 @@
+location /api/v1/contributors {
+ proxy_pass https://mempool.space;
+ proxy_hide_header onion-location;
+ proxy_hide_header strict-transport-security;
+ proxy_hide_header content-security-policy;
+ proxy_hide_header x-frame-options;
+ # don't rate limit this API prefix
+}
diff --git a/production/nginx/location-api-v1-donations-images.conf b/production/nginx/location-api-v1-donations-images.conf
new file mode 100644
index 000000000..bbd83738a
--- /dev/null
+++ b/production/nginx/location-api-v1-donations-images.conf
@@ -0,0 +1,11 @@
+location /api/v1/donations/images {
+ proxy_pass https://mempool.space;
+ proxy_cache services;
+ proxy_cache_valid 200 1d;
+ expires 7d;
+ add_header Cache-Control "public, no-transform";
+ proxy_hide_header onion-location;
+ proxy_hide_header strict-transport-security;
+ proxy_hide_header content-security-policy;
+ proxy_hide_header x-frame-options;
+}
diff --git a/production/nginx/location-api-v1-donations.conf b/production/nginx/location-api-v1-donations.conf
new file mode 100644
index 000000000..8c748beea
--- /dev/null
+++ b/production/nginx/location-api-v1-donations.conf
@@ -0,0 +1,8 @@
+location /api/v1/donations {
+ proxy_pass https://mempool.space;
+ proxy_hide_header onion-location;
+ proxy_hide_header strict-transport-security;
+ proxy_hide_header content-security-policy;
+ proxy_hide_header x-frame-options;
+ # don't rate limit this API prefix
+}
diff --git a/production/nginx/location-api.conf b/production/nginx/location-api.conf
new file mode 100644
index 000000000..75cc1f5a2
--- /dev/null
+++ b/production/nginx/location-api.conf
@@ -0,0 +1,43 @@
+location /api/v1/ws {
+ proxy_pass $mempoolBackend;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "Upgrade";
+}
+location /api/v1 {
+ try_files /dev/null @mempool-api-v1;
+}
+location /api/ {
+ rewrite ^/api/(.*) /$1 break;
+ try_files /dev/null @electrs-api;
+}
+
+location @mempool-api-v1 {
+ proxy_pass $mempoolBackend;
+ proxy_http_version 1.1;
+
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+
+ proxy_cache_bypass $http_upgrade;
+ proxy_redirect off;
+ proxy_set_header X-Forwarded-Proto $scheme;
+}
+
+location @electrs-api {
+ proxy_pass $electrsBackend;
+ proxy_http_version 1.1;
+
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+
+ proxy_cache_bypass $http_upgrade;
+ proxy_redirect off;
+ proxy_set_header X-Forwarded-Proto $scheme;
+}
diff --git a/production/nginx/location-liquid-api.conf b/production/nginx/location-liquid-api.conf
new file mode 100644
index 000000000..7c2f927a6
--- /dev/null
+++ b/production/nginx/location-liquid-api.conf
@@ -0,0 +1,12 @@
+location /liquid/api/v1/ws {
+ proxy_pass http://mempool-liquid-mainnet/;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "Upgrade";
+}
+location /liquid/api/v1 {
+ proxy_pass http://mempool-liquid-mainnet/api/v1;
+}
+location /liquid/api/ {
+ proxy_pass http://electrs-liquid-mainnet/;
+}
diff --git a/production/nginx/location-liquidtestnet-api.conf b/production/nginx/location-liquidtestnet-api.conf
new file mode 100644
index 000000000..8b03c6fc4
--- /dev/null
+++ b/production/nginx/location-liquidtestnet-api.conf
@@ -0,0 +1,12 @@
+location /liquidtestnet/api/v1/ws {
+ proxy_pass http://mempool-liquid-testnet/;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "Upgrade";
+}
+location /liquidtestnet/api/v1 {
+ proxy_pass http://mempool-liquid-testnet/api/v1;
+}
+location /liquidtestnet/api/ {
+ proxy_pass http://electrs-liquid-testnet/;
+}
diff --git a/production/nginx/location-redirects.conf b/production/nginx/location-redirects.conf
new file mode 100644
index 000000000..c6f20e7ad
--- /dev/null
+++ b/production/nginx/location-redirects.conf
@@ -0,0 +1,46 @@
+# redirect mempool.space/liquid to liquid.network
+location /liquid {
+ rewrite /liquid/(.*) https://liquid.network/$1;
+ rewrite /liquid https://liquid.network/;
+ return 308;
+}
+
+# redirect mempool.space/liquidtestnet to liquid.network/testnet
+location /liquidtestnet {
+ rewrite /liquidtestnet/(.*) https://liquid.network/testnet/$1;
+ rewrite /liquidtestnet/ https://liquid.network/testnet/;
+ rewrite /liquidtestnet https://liquid.network/testnet;
+ return 308;
+}
+
+# redirect mempool.space/bisq to bisq.markets
+location /bisq {
+ rewrite /bisq/(.*) https://bisq.markets/$1;
+ rewrite /bisq https://bisq.markets/;
+ return 308;
+}
+
+# redirect /api to /docs/api
+location = /api {
+ return 308 https://$host/docs/api;
+}
+location = /api/ {
+ return 308 https://$host/docs/api;
+}
+
+# redirect /testnet/api to /testnet/docs/api
+location = /testnet/api {
+ return 308 https://$host/testnet/docs/api;
+}
+location = /testnet/api/ {
+ return 308 https://$host/testnet/docs/api;
+}
+
+# redirect /signet/api to /signet/docs/api
+location = /signet/api {
+ return 308 https://$host/signet/docs/api;
+}
+location = /signet/api/ {
+ return 308 https://$host/signet/docs/api;
+}
+
diff --git a/production/nginx/location-signet-api.conf b/production/nginx/location-signet-api.conf
new file mode 100644
index 000000000..245979229
--- /dev/null
+++ b/production/nginx/location-signet-api.conf
@@ -0,0 +1,12 @@
+location /signet/api/v1/ws {
+ proxy_pass http://mempool-bitcoin-signet/;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "Upgrade";
+}
+location /signet/api/v1 {
+ proxy_pass http://mempool-bitcoin-signet/api/v1;
+}
+location /signet/api/ {
+ proxy_pass http://electrs-bitcoin-signet/;
+}
diff --git a/production/nginx/location-testnet-api.conf b/production/nginx/location-testnet-api.conf
new file mode 100644
index 000000000..857b1b957
--- /dev/null
+++ b/production/nginx/location-testnet-api.conf
@@ -0,0 +1,12 @@
+location /testnet/api/v1/ws {
+ proxy_pass http://mempool-bitcoin-testnet/;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "Upgrade";
+}
+location /testnet/api/v1 {
+ proxy_pass http://mempool-bitcoin-testnet/api/v1;
+}
+location /testnet/api/ {
+ proxy_pass http://electrs-bitcoin-testnet/;
+}
diff --git a/production/nginx/nginx.conf b/production/nginx/nginx.conf
new file mode 100644
index 000000000..01ed722c3
--- /dev/null
+++ b/production/nginx/nginx.conf
@@ -0,0 +1,124 @@
+# FreeBSD configuration
+user nobody;
+pid /var/run/nginx.pid;
+
+worker_processes auto;
+worker_rlimit_nofile 100000;
+
+events {
+ worker_connections 9000;
+ multi_accept on;
+}
+
+http {
+ # DNS servers for on-demand recursive resolver
+ resolver 8.8.8.8;
+
+ # HTTP basic configuration
+ include mempool/production/nginx/http-basic.conf;
+ include mempool/production/nginx/http-proxy-cache.conf;
+ include mempool/production/nginx/http-language.conf;
+
+ # mempool backend configuration
+ include mempool/production/nginx/upstream-mempool.conf;
+
+ # electrs backend configuration
+ include mempool/production/nginx/upstream-electrs.conf;
+ include mempool/production/nginx/server-electrs.conf;
+
+ # MEMPOOL.NINJA
+ server {
+ # clearnet v4/v6
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name mempool.ninja;
+ set $mempoolBackend "http://mempool-bitcoin-mainnet";
+ set $electrsBackend "http://electrs-bitcoin-mainnet";
+
+ # tor v3
+ listen 127.0.0.1:81;
+ set $onion "mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad";
+
+ # filesystem paths
+ root /mempool/public_html/mainnet/;
+ access_log /var/log/nginx/mempool-access.log;
+ error_log /var/log/nginx/mempool-error.log;
+
+ # ssl configuration
+ ssl_certificate /usr/local/etc/letsencrypt/live/mempool.ninja/fullchain.pem;
+ ssl_certificate_key /usr/local/etc/letsencrypt/live/mempool.ninja/privkey.pem;
+ include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
+ ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
+
+ # site configuration
+ include mempool/production/nginx/server-mempool.conf;
+ }
+ # BISQ.NINJA
+ server {
+ # clearnet v4/v6
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name bisq.ninja;
+ set $mempoolBackend "http://mempool-bisq-mainnet";
+ set $electrsBackend "http://electrs-bitcoin-mainnet";
+
+ # tor v3
+ listen 127.0.0.1:82;
+ set $onion "mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad";
+
+ # filesystem paths
+ root /mempool/public_html/bisq/;
+ access_log /var/log/nginx/bisq-access.log;
+ error_log /var/log/nginx/bisq-error.log;
+
+ # ssl configuration
+ ssl_certificate /usr/local/etc/letsencrypt/live/bisq.ninja/fullchain.pem;
+ ssl_certificate_key /usr/local/etc/letsencrypt/live/bisq.ninja/privkey.pem;
+ include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
+ ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
+
+ # site configuration
+ include mempool/production/nginx/server-bisq.conf;
+ }
+ # LIQUID.PLACE
+ server {
+ # clearnet v4/v6
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name liquid.place;
+ set $mempoolBackend "http://mempool-liquid-mainnet";
+ set $electrsBackend "http://electrs-liquid-mainnet";
+
+ # tor v3
+ listen 127.0.0.1:83;
+ set $onion "mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad";
+
+ # filesystem paths
+ root /mempool/public_html/liquid/;
+ access_log /var/log/nginx/liquid-access.log;
+ error_log /var/log/nginx/liquid-error.log;
+
+ # ssl configuration
+ ssl_certificate /usr/local/etc/letsencrypt/live/liquid.place/fullchain.pem;
+ ssl_certificate_key /usr/local/etc/letsencrypt/live/liquid.place/privkey.pem;
+ include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
+ ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
+
+ # site configuration
+ include mempool/production/nginx/server-liquid.conf;
+ }
+ # HTTP to HTTPS redirect
+ server {
+ # clearnet v4/v6
+ listen 80;
+ listen [::]:80;
+ server_name _;
+
+ # only redirect for our hosted domains
+ if ($host ~ "^(mempool.ninja|bisq.ninja|liquid.place)$")
+ {
+ return 301 https://$host$request_uri;
+ }
+ return 503;
+ }
+}
diff --git a/production/nginx/server-bisq.conf b/production/nginx/server-bisq.conf
new file mode 100644
index 000000000..2a6886f4b
--- /dev/null
+++ b/production/nginx/server-bisq.conf
@@ -0,0 +1,85 @@
+include mempool/production/nginx/server-common.conf;
+include mempool/production/nginx/location-api-v1-contributors.conf;
+include mempool/production/nginx/location-api-v1-donations.conf;
+include mempool/production/nginx/location-api-v1-donations-images.conf;
+
+proxy_cache markets;
+proxy_cache_valid 200 30s;
+
+# route electrs APIs to electrs
+location /api/tx/ {
+ proxy_pass http://electrs-bitcoin-mainnet/tx/;
+}
+
+# rewrite APIs to match what backend expects
+location /api/currencies {
+ rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api/depth {
+ rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api/hloc {
+ rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api/offers {
+ rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api/ticker {
+ rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api/trades {
+ rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api/volumes {
+ rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api/markets {
+ rewrite ^/api/(.*) /api/v1/bisq/markets/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api/v1 {
+ rewrite ^/api/v1/(.*) /api/v1/bisq/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /api {
+ rewrite ^/api/(.*) /api/v1/bisq/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /bisq/api/v1 {
+ rewrite ^/bisq/api/v1/(.*) /api/v1/bisq/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+location /bisq/api {
+ rewrite ^/bisq/api/(.*) /api/v1/bisq/$1 break;
+ try_files $uri $uri/ @mempool-bisq;
+}
+
+# special handling for websocket
+location /api/v1/ws {
+ proxy_pass http://mempool-bitcoin-bisq/;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "Upgrade";
+}
+
+location @mempool-bisq {
+ proxy_pass http://mempool-bitcoin-bisq;
+ proxy_http_version 1.1;
+
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+
+ proxy_cache_bypass $http_upgrade;
+ proxy_redirect off;
+ proxy_set_header X-Forwarded-Proto $scheme;
+}
diff --git a/production/nginx/server-common.conf b/production/nginx/server-common.conf
new file mode 100644
index 000000000..c380831cc
--- /dev/null
+++ b/production/nginx/server-common.conf
@@ -0,0 +1,66 @@
+# angular builds to index.html
+index index.html;
+
+# tor onion redirect
+add_header Onion-Location http://$onion.onion$request_uri;
+
+# HSTS preload enable
+add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
+
+# generate frame configuration from origin header
+set $frameOptions "DENY";
+set $contentSecurityPolicy "frame-ancestors 'none'";
+
+# used for iframes on https://mempool.space/network
+if ($http_referer ~ ^https://mempool.space/)
+{
+ set $frameOptions "ALLOW-FROM https://mempool.space";
+ set $contentSecurityPolicy "frame-ancestors https://mempool.space";
+}
+# used for iframes on https://mempool.ninja/network
+if ($http_referer ~ ^https://mempool.ninja/)
+{
+ set $frameOptions "ALLOW-FROM https://mempool.ninja";
+ set $contentSecurityPolicy "frame-ancestors https://mempool.ninja";
+}
+# used for iframes on https://wiz.biz/bitcoin/nodes
+if ($http_referer ~ ^https://wiz.biz/)
+{
+ set $frameOptions "ALLOW-FROM https://wiz.biz";
+ set $contentSecurityPolicy "frame-ancestors https://wiz.biz";
+}
+
+# restrict usage of frames
+add_header X-Frame-Options $frameOptions;
+add_header Content-Security-Policy $contentSecurityPolicy;
+
+# enable browser and proxy caching
+add_header Cache-Control "public, no-transform";
+
+# vary cache if user changes language preference
+add_header Vary Accept-Language;
+add_header Vary Cookie;
+
+# fallback for all URLs i.e. /address/foo /tx/foo /block/000
+location / {
+ try_files /$lang/$uri /$lang/$uri/ $uri $uri/ /en-US/$uri @index-redirect;
+ expires 10m;
+}
+location /resources {
+ try_files /$lang/$uri /$lang/$uri/ $uri $uri/ /en-US/$uri @index-redirect;
+ expires 1h;
+}
+location @index-redirect {
+ rewrite (.*) /$lang/index.html;
+}
+
+# location block using regex are matched in order
+
+# used to rewrite resources from // to /en-US/
+ location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|ka|no|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh)/resources/ {
+ rewrite ^/[a-zA-Z-]*/resources/(.*) /en-US/resources/$1;
+}
+# used for cookie override
+ location ~ ^/(ar|bg|bs|ca|cs|da|de|et|el|es|eo|eu|fa|fr|gl|ko|hr|id|it|he|ka|lv|lt|hu|mk|ms|nl|ja|ka|no|nb|nn|pl|pt|pt-BR|ro|ru|sk|sl|sr|sh|fi|sv|th|tr|uk|vi|zh)/ {
+ try_files $uri $uri/ /$1/index.html =404;
+}
diff --git a/production/nginx/server-electrs.conf b/production/nginx/server-electrs.conf
new file mode 100644
index 000000000..b817b8163
--- /dev/null
+++ b/production/nginx/server-electrs.conf
@@ -0,0 +1,35 @@
+server {
+ listen 127.0.0.1:4000;
+ access_log /dev/null;
+ location / {
+ proxy_pass http://electrs-bitcoin-mainnet;
+ }
+}
+server {
+ listen 127.0.0.1:4001;
+ access_log /dev/null;
+ location / {
+ proxy_pass http://electrs-liquid-mainnet;
+ }
+}
+server {
+ listen 127.0.0.1:4002;
+ access_log /dev/null;
+ location / {
+ proxy_pass http://electrs-bitcoin-testnet;
+ }
+}
+server {
+ listen 127.0.0.1:4003;
+ access_log /dev/null;
+ location / {
+ proxy_pass http://electrs-bitcoin-signet;
+ }
+}
+server {
+ listen 127.0.0.1:4004;
+ access_log /dev/null;
+ location / {
+ proxy_pass http://electrs-liquid-testnet;
+ }
+}
diff --git a/production/nginx/server-liquid.conf b/production/nginx/server-liquid.conf
new file mode 100644
index 000000000..a7161af29
--- /dev/null
+++ b/production/nginx/server-liquid.conf
@@ -0,0 +1,7 @@
+include mempool/production/nginx/server-common.conf;
+include mempool/production/nginx/location-api-v1-contributors.conf;
+include mempool/production/nginx/location-api-v1-donations-images.conf;
+include mempool/production/nginx/location-api-v1-donations.conf;
+include mempool/production/nginx/location-api.conf;
+include mempool/production/nginx/location-liquid-api.conf;
+include mempool/production/nginx/location-liquidtestnet-api.conf;
diff --git a/production/nginx/server-mempool.conf b/production/nginx/server-mempool.conf
new file mode 100644
index 000000000..9bbbb1b8c
--- /dev/null
+++ b/production/nginx/server-mempool.conf
@@ -0,0 +1,8 @@
+include mempool/production/nginx/server-common.conf;
+include mempool/production/nginx/location-redirects.conf;
+include mempool/production/nginx/location-api-v1-contributors.conf;
+include mempool/production/nginx/location-api-v1-donations.conf;
+include mempool/production/nginx/location-api-v1-donations-images.conf;
+include mempool/production/nginx/location-api.conf;
+include mempool/production/nginx/location-testnet-api.conf;
+include mempool/production/nginx/location-signet-api.conf;
diff --git a/production/nginx/upstream-electrs.conf b/production/nginx/upstream-electrs.conf
new file mode 100644
index 000000000..476b73054
--- /dev/null
+++ b/production/nginx/upstream-electrs.conf
@@ -0,0 +1,15 @@
+upstream electrs-bitcoin-mainnet {
+ server [::1]:3000 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream electrs-liquid-mainnet {
+ server [::1]:3001 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream electrs-bitcoin-testnet {
+ server [::1]:3002 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream electrs-bitcoin-signet {
+ server [::1]:3003 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream electrs-liquid-testnet {
+ server [::1]:3004 fail_timeout=10s max_fails=10 weight=99999;
+}
diff --git a/production/nginx/upstream-mempool.conf b/production/nginx/upstream-mempool.conf
new file mode 100644
index 000000000..8e0f12ab6
--- /dev/null
+++ b/production/nginx/upstream-mempool.conf
@@ -0,0 +1,18 @@
+upstream mempool-bitcoin-mainnet {
+ server 127.0.0.1:8999 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream mempool-liquid-mainnet {
+ server 127.0.0.1:8998 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream mempool-bitcoin-testnet {
+ server 127.0.0.1:8997 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream mempool-bitcoin-bisq {
+ server 127.0.0.1:8996 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream mempool-bitcoin-signet {
+ server 127.0.0.1:8995 fail_timeout=10s max_fails=10 weight=99999;
+}
+upstream mempool-liquid-testnet {
+ server 127.0.0.1:8994 fail_timeout=10s max_fails=10 weight=99999;
+}