Skip to content

[BUG] Blockpersister microservice fails at block height 1,234 #5

@KeyvanJS

Description

@KeyvanJS

Describe the bug

When blockpersister microservice is enabled and Ternode is synced from genesis, the blockpersister fails to pass block 1,234.

To Reproduce

Steps to reproduce the behavior:

  1. Shut down ternode
  2. Enable blockpersister microservice.
  3. Reset blockchain state with reset-data.sh
  4. Observe failure with docker logs -f -n 100 blockpersister

Expected behavior

Should process all blocks

Screenshots

Image
2025-10-06T10:28:51Z | INFO  | persist_block.go:83              | blockpersister| [BlockPersister] processing subtree 13309 / 13312 [b586db94bb9b4367dff6b3fe5b47786b8d1edfe18d628c9d26a31e7a92dfb369]
2025-10-06T10:28:51Z | INFO  | persist_block.go:83              | blockpersister| [BlockPersister] processing subtree 13310 / 13312 [a07af859af0dcd686413a80f8ba0555467d121a022e2dd3640e2b3647c19d896]
2025-10-06T10:28:51Z | INFO  | persist_block.go:83              | blockpersister| [BlockPersister] processing subtree 13311 / 13312 [6e997cc2dac7fbe7d5d6799f5882faf793a0302a09b3105e44fc8ae109994c6e]
2025-10-06T10:28:51Z | INFO  | persist_block.go:89              | blockpersister| [BlockPersister] writing UTXODiff for block 00000000b3ce8adebba16671844d4c3c4c1e37e5cafd2229890a5770c8e2aa9c
2025-10-06T10:28:51Z | INFO  | persist_block.go:83              | blockpersister| [BlockPersister] processing subtree 13312 / 13312 [95e36be7bb5c5a5633442e3d9b897e8a8041e71405c6477ae2a9be5b13529997]
2025-10-06T10:28:51Z | INFO  | persist_block.go:93              | blockpersister| [persistBlock] called for block 00000000b3ce8adebba16671844d4c3c4c1e37e5cafd2229890a5770c8e2aa9c DONE in 9.006833388s
2025-10-06T10:28:51Z | ERROR | blockpersister/Server.go:373     | blockpersister| Failed to persist block 00000000b3ce8adebba16671844d4c3c4c1e37e5cafd2229890a5770c8e2aa9c: SERVICE_ERROR (59): [ValidateSubtreeInternal][c5d68db61ef9db86aba74a54629ada9e5fecb11e7ab518949302b6b0bbd2ee30] failed to get tx meta from store -> PROCESSING (4): [processTxMetaUsingStore] failed to retrieve transaction metadata for hash 3ca51eede189b7efd72264ce49e1931e2e6d95ebf25c5b04d1fb4efa4774ef8e -> TX_NOT_FOUND (30): 3ca51eede189b7efd72264ce49e1931e2e6d95ebf25c5b04d1fb4efa4774ef8e not found

Server (please complete the following information):

  • OS: Rocky Linux 8
  • 384GB RAM, 48 Core XEON CPU

TERANODE Env

SETTINGS_CONTEXT

'''2025-10-06T10:52:42Z | INFO | util/grpc_helper.go:465 | teranode-cli| [VALIDATOR] Using default resolver for clients
2025-10-06T10:52:42Z | INFO | cmd/settings/Settings.go:42 | teranode-cli| STATS

CMDLINE

0: teranode-cli
1: settings

SETTINGS_ENV

Context: docker.m
Application: Not set

SETTINGS

ALERT_P2P_PORT=9908
ASSET_HTTP_PORT=8090
BLOCKCHAIN_GRPC_PORT=8087
BLOCKCHAIN_HTTP_PORT=8082
BLOCK_ASSEMBLY_GRPC_PORT=8085
BLOCK_PERSISTER_HTTP_PORT=8083
BLOCK_VALIDATION_GRPC_PORT=8088
CENTRIFUGE_PORT=8892
COINBASE_GRPC_PORT=8093
DATADIR=./data
FAUCET_HTTP_PORT=8097
HEALTH_CHECK_PORT=8000
JAEGER_PORT=6831
JAEGER_PORT_HTTP=4318
KAFKA_BLOCKS[.docker]=blocks-TeraNode.Api.sv
KAFKA_BLOCKS_FINAL[.docker]=blocks-final-TeraNode.Api.sv
KAFKA_CONSUMER_RATIO_HIGH=1
KAFKA_CONSUMER_RATIO_LOW=1
KAFKA_ENABLE_TLS=false
KAFKA_HOSTS[.docker]=kafka-shared:9092
KAFKA_INVALID_BLOCKS[.docker]=invalid-blocks-TeraNode.Api.sv
KAFKA_INVALID_SUBTREES[.docker]=invalid-subtrees-TeraNode.Api.sv
KAFKA_LEGACY_INV[.docker]=legacy-inv-TeraNode.Api.sv
KAFKA_PARTITIONS_HIGH=8
KAFKA_PARTITIONS_LOW=1
KAFKA_PORT=9092
KAFKA_REJECTEDTX[.docker]=rejectedtx-TeraNode.Api.sv
KAFKA_REPLICATION_FACTOR=1
KAFKA_SCHEMA=kafka
KAFKA_SUBTREES[.docker]=subtrees-TeraNode.Api.sv
KAFKA_TLS_SKIP_VERIFY=false
KAFKA_TXMETA[.docker]=txmeta-TeraNode.Api.sv
KAFKA_UNITTEST=unittest
KAFKA_VALIDATORTXS[.docker]=validatortxs-TeraNode.Api.sv
LEGACY_GRPC_PORT=8099
LEGACY_HTTP_PORT=8098
P2P_BOOTSTRAP_PORT=9901
P2P_GRPC_PORT=9904
P2P_HTTP_PORT=9906
P2P_PORT=9905
P2P_PORT_COINBASE=9907
PK1=L56TgyTpDdvL3W24SMoALYotibToSCySQeo4pThLKxw6EFR6f93Q
PK2=KyAwSjuXZNgj78w3W7mR1fVMbPFu2heaCJJkWK5Yy58NZ4xafV6k
PK3=L3NVjmwg3nC7ZPrwMVF6FXiG1a1RZ89nhizmJVctGztRKLYrhtFL
PK4=L3NVjmwg3nC7ZPrwMVF6FXiG1a1RZ89nhizmJVctGztRKLYrhtFL
PK5=L3NVjmwg3nC7ZPrwMVF6FXiG1a1RZ89nhizmJVctGztRKLYrhtFL
PK6=L3NVjmwg3nC7ZPrwMVF6FXiG1a1RZ89nhizmJVctGztRKLYrhtFL
PORT_PREFIX=
POSTGRES_PORT=5432
PROD_T1=dns:///prod-teranet-1.teratestnet.ubsv.dev:8084
PROD_T2=dns:///prod-teranet-2.teratestnet.ubsv.dev:8084
PROD_T3=dns:///prod-teranet-3.teratestnet.ubsv.dev:8084
PROFILE_PORT=9091
PROFILE_PORT_TXBLASTER=9092
PROPAGATION_GRPC_PORT=8084
PROPAGATION_HTTP_PORT=8833
SUBTREE_VALIDATION_GRPC_PORT=8086
TERANODE_RPC_PORT=9292
VALIDATOR_GRPC_PORT=8081
VALIDATOR_HTTP_PORT=8834
advertisingInterval=10s
advertisingURL=
aerospike_batchPolicy=aerospike:///?MaxRetries=5&SleepBetweenRetries=500ms&SleepMultiplier=1&TotalTimeout=64s&SocketTimeout=10s&ConcurrentNodes=0
aerospike_debug=false
aerospike_host[DEFAULT]=
aerospike_port[DEFAULT]=
aerospike_readPolicy=aerospike:///?MaxRetries=5&SleepBetweenRetries=500ms&SleepMultiplier=1&TotalTimeout=1s&SocketTimeout=1s
aerospike_useDefaultBasePolicies=false
aerospike_useDefaultPolicies=false
aerospike_warmUp=true
aerospike_writePolicy=aerospike:///?MaxRetries=5&SleepBetweenRetries=500ms&SleepMultiplier=1&TotalTimeout=1s&SocketTimeout=1s
alert_genesis_keys=02a1589f2c8e1a4e7cbf28d4d6b676aa2f30811277883211027950e82a83eb2768 | 03aec1d40f02ac7f6df701ef8f629515812f1bcd949b6aa6c7a8dd778b748b2433 | 03ddb2806f3cc48aa36bd4aea6b9f1c7ed3ffc8b9302b198ca963f15beff123678 | 036846e3e8f4f944af644b6a6c6243889dd90d7b6c3593abb9ccf2acb8c9e606e2 | 03e45c9dd2b34829c1d27c8b5d16917dd0dc2c88fa0d7bad7bffb9b542229a9304
alert_p2p_private_key=e76c77795b43d2aacd564648bffebde74a4c31540357dad4a3694a561b4c4f1fbb0ba060a3015f7f367742500ef8486707e58032af1b4dfdb1203c790bcf2526
alert_protocol_id=/bitcoin/alert-system/1.0.0
alert_store=sqlite:///alert
alert_topic_name=bitcoin_alert_system
asset_apiPrefix=/api/v1
asset_centrifugeListenAddress=:8892
asset_centrifuge_disable=false
asset_httpAddress[.docker.m]=http://asset:8090/api/v1
asset_httpListenAddress=:8090
asset_httpPublicAddress[.docker.m]=http://teranode.api.sv:8000/api/v1
blockMinedCacheMaxMB[.docker]=32
blockPersisterStore=file://./data/blockstore
blockPersister_httpListenAddress=:8083
blockPersister_persistAge[.docker]=0
blockPersister_persistSleep[.docker]=10ms
blockPersister_stateFile=./data/blockpersister_state.txt
block_checkDuplicateTransactionsConcurrency[.docker.m]=32
block_getAndValidateSubtreesConcurrency[.docker.m]=32
block_validOrderAndBlessedConcurrency[.docker.m]=32
blockassembly_difficultyCache=true
blockassembly_disabled=false
blockassembly_grpcAddress[.docker.m]=blockassembly:8085
blockassembly_grpcListenAddress=:8085
blockassembly_grpcMaxRetries=3
blockassembly_grpcRetryBackoff=2s
blockassembly_localDAHCache=
blockassembly_maxBlockReorgCatchup=100
blockassembly_maxBlockReorgRollback=100
blockassembly_moveBackBlockConcurrency[DEFAULT]=
blockassembly_processRemainderTxHashesConcurrency[DEFAULT]=
blockassembly_sendBatchSize=1024
blockassembly_sendBatchTimeout=5
blockassembly_subtreeProcessorBatcherSize=32768
blockassembly_subtreeProcessorConcurrentReads=375
blockassembly_subtreeTTL[DEFAULT]=
blockassembly_useDynamicSubtreeSize=true
blockchainDB[DEFAULT]=
blockchainDBUserPwd[DEFAULT]=
blockchain_grpcAddress[.docker.m]=blockchain:8087
blockchain_grpcListenAddress[.docker.m]=:8087
blockchain_httpListenAddress=:8082
blockchain_initializeNodeInState=
blockchain_maxRetries[DEFAULT]=
blockchain_store[.docker.m]=postgres://teranode:teranode@postgres:5432/teranode
blockchain_store_cache_enabled=true
blockmaxsize[.docker.m]=4294967296
blockstore[.docker]=file://./data/blockstore
blockvalidation_fail_fast_validation=false
blockvalidation_finalizeBlockValidationConcurrency=8
blockvalidation_getMissingTransactions=32
blockvalidation_grpcAddress[.docker.m]=blockvalidation:8088
blockvalidation_grpcListenAddress=:8088
blockvalidation_localSetTxMinedConcurrency=8
blockvalidation_maxPreviousBlockHeadersToCheck=100
blockvalidation_missingTransactionsBatchSize=5000
blockvalidation_processTxMetaUsingCache_BatchSize=1024
blockvalidation_processTxMetaUsingCache_Concurrency=128
blockvalidation_processTxMetaUsingCache_MissingTxThreshold=1
blockvalidation_processTxMetaUsingStore_BatchSize=1024
blockvalidation_processTxMetaUsingStore_Concurrency=128
blockvalidation_processTxMetaUsingStore_MissingTxThreshold=1
blockvalidation_subtreeFoundChConcurrency=64
blockvalidation_subtree_fetch_timeout=120s
blockvalidation_subtree_validation_abandon_threshold=0
blockvalidation_validateBlockSubtreesConcurrency=64
blockvalidation_validation_max_retries=3
blockvalidation_validation_retry_sleep=5s
clientName[.docker.m]=TeraNode.Api.sv
coinbaseDB[DEFAULT]=
coinbaseDBUserPwd[DEFAULT]=
coinbase_arbitrary_text=/teranode/
coinbase_grpcAddress[.docker.m]=teranode-coinbase:8093
coinbase_grpcListenAddress=:8093
coinbase_notification_threshold[DEFAULT]=
coinbase_p2p_peer_id[DEFAULT]=
coinbase_p2p_private_key[DEFAULT]=
coinbase_p2p_static_peers[.docker.m]=
coinbase_should_wait=false
coinbase_store[.docker.m]=postgres://coinbase1:coinbase1@postgres:5432/coinbase1
coinbase_store_dbTimeoutMillis=5000
coinbase_test_mode=false
coinbase_wait_for_peers=true
coinbase_wallet_private_key=L56TgyTpDdvL3W24SMoALYotibToSCySQeo4pThLKxw6EFR6f93Q
dashboard_enabled=true
distributer_wait_time=10
distributor_backoff_duration=1s
distributor_failure_tolerance=99
distributor_max_retries=3
distributor_timeout[DEFAULT]=
double_spend_window_millis=0
excessiveblocksize=10737418240
faucet_httpListenAddress[.docker.m]=:8097
fsm_state_change_delay[DEFAULT]=
fsm_state_restore=false
global_blockHeightRetention=288
gocore_stats_reported_time_threshold=24h
grpc_admin_api_key=testkey
grpc_resolver=dns
health_check_httpListenAddress=:8000
http_sign_response=true
http_timeout=1000
initial_merkle_items_per_subtree[.docker.m]=1024
k8s_resolver_ttl=10
kafka_blocksConfig=kafka://kafka-shared:9092/blocks-TeraNode.Api.sv?partitions=1&replication=1&retention=60000&flush_bytes=64&consumer_ratio=1
kafka_blocksFinalConfig=kafka://kafka-shared:9092/blocks-final-TeraNode.Api.sv?partitions=1&replication=1&retention=60000&flush_bytes=64&consumer_ratio=1
kafka_invalidBlocksConfig=kafka://kafka-shared:9092/invalid-blocks-TeraNode.Api.sv?partitions=1&replication=1&retention=600000&flush_bytes=1024&flush_messages=10000&flush_frequency=1s&consumer_ratio=1&replay=0
kafka_invalidSubtreesConfig=kafka://kafka-shared:9092/invalid-subtrees-TeraNode.Api.sv?partitions=8&replication=1&retention=60000&segment_bytes=33554432&flush_bytes=64&flush_messages=1&consumer_ratio=1&replay=0
kafka_legacyInvConfig=kafka://kafka-shared:9092/legacy-inv-TeraNode.Api.sv?partitions=8&replication=1&retention=6000&flush_bytes=1024&flush_messages=16&flush_frequency=1s&consumer_ratio=1
kafka_rejectedTxConfig=kafka://kafka-shared:9092/rejectedtx-TeraNode.Api.sv?partitions=1&replication=1&retention=600000&flush_bytes=1024&flush_messages=10000&flush_frequency=1s&consumer_ratio=1&replay=0
kafka_subtreesConfig=kafka://kafka-shared:9092/subtrees-TeraNode.Api.sv?partitions=1&replication=1&retention=60000&segment_bytes=33554432&flush_bytes=64&flush_messages=1&consumer_ratio=1&replay=0
kafka_txmetaConfig=kafka://kafka-shared:9092/txmeta-TeraNode.Api.sv?partitions=8&replication=1&retention=60000&flush_bytes=1024&flush_messages=10000&flush_frequency=1s&consumer_ratio=1
kafka_unitTest=kafka://localhost:9092/unittest?partitions=1&replication=1&retention=600000&flush_bytes=1024&flush_messages=10000&flush_frequency=1s
kafka_validatortxsConfig=
legacy_allowSyncCandidateFromLocalPeers[.docker]=true
legacy_config_ConnectPeers=
legacy_config_DataDir=./data/legacy
legacy_config_DisableCheckpoints=false
legacy_config_Listeners=0.0.0.0
legacy_config_MaxPeers=20
legacy_config_MaxPeersPerIP=5
legacy_config_Upnp[.docker.m]=false
legacy_grpcAddress[.docker.m]=legacy:8099
legacy_grpcListenAddress=:8099
legacy_httpAddress[.docker.m]=http://legacy:8098
legacy_httpListenAddress=:8098
legacy_outpointBatcherConcurrency=32
legacy_outpointBatcherSize=1024
legacy_printInvMessages=false
legacy_spendBatcherConcurrency=32
legacy_spendBatcherSize=1024
legacy_storeBatcherConcurrency=32
legacy_storeBatcherSize=1024
legacy_workingDir=./data/legacy
listen_mode[.docker.m]=full
local_test_start_from_state=
logLevel=INFO
logger=zerolog
logger_output_format=| %-25s | %-7s | %s |
logger_show_socket_info=true
logger_show_timestamps=true
maximum_merkle_items_per_subtree[.docker.m]=32768
maxscriptnumlengthpolicy[DEFAULT]=
maxscriptsizepolicy[DEFAULT]=
maxtxsigopscountspolicy=4294967295
maxtxsizepolicy=100000000
min_block_height_for_e2e=100
miner_wallet_private_keys[.docker]=L56TgyTpDdvL3W24SMoALYotibToSCySQeo4pThLKxw6EFR6f93Q | KyAwSjuXZNgj78w3W7mR1fVMbPFu2heaCJJkWK5Yy58NZ4xafV6k | L3NVjmwg3nC7ZPrwMVF6FXiG1a1RZ89nhizmJVctGztRKLYrhtFL
minimum_merkle_items_per_subtree[DEFAULT]=
minminingtxfee[ENV]=0
network[ENV]=teratestnet
p2p_advertise_addresses=
p2p_ban_duration=24h
p2p_ban_threshold=100
p2p_bestblock_topic=bestblock
p2p_block_topic=block
p2p_bootstrapAddresses[.docker.m]=/dns4/teranode-bootstrap.bsvb.tech/tcp/9901/p2p/12D3KooWESmhNAN8s6NPdGNvJH3zJ4wMKDxapXKNUe2DzkAwKYqK
p2p_bootstrap_persistent=true
p2p_dht_use_private=true
p2p_enable_hole_punching=true
p2p_enable_nat_port_map=true
p2p_enable_nat_service=true
p2p_enable_relay=true
p2p_force_sync_peer=
p2p_grpcAddress[.docker.m]=peer:9904
p2p_grpcListenAddress=:9904
p2p_handshake_topic=handshake
p2p_httpAddress[.docker.m]=peer:9906
p2p_httpListenAddress[.docker.m]=:9906
p2p_listen_addresses=0.0.0.0
p2p_mining_on_topic=miningon
p2p_optimise_retries=true
p2p_peer_cache_dir=./data
p2p_peer_id[DEFAULT]=
p2p_port=9905
p2p_port_coinbase[.docker]=9907
p2p_private_key[DEFAULT]=
p2p_rejected_tx_topic=rejected_tx
p2p_share_private_addresses=false
p2p_shared_key=285b49e6d910726a70f205086c39cbac6d8dcc47839053a21b1f614773bbc137
p2p_static_peers[.docker.m]=
p2p_subtree_topic=subtree
p2p_sync_stuck_retry_threshold=1
peerStatus_timeout=5m
profilerAddr=:9091
prometheusEndpoint=/metrics
propagation_grpcAddresses[.docker.m]=propagation:8084
propagation_grpcListenAddress=:8084
propagation_grpcMaxConnectionAge=30s
propagation_httpAddresses[.docker.m]=http://propagation:8833
propagation_httpListenAddress=:8833
propagation_sendBatchSize=100
propagation_sendBatchTimeout=10
rpc_address=http://localhost:9292
rpc_listener_url[.docker.m]=http://:9292
rpc_max_clients=3
rpc_pass[.docker.m]=bitcoin
rpc_user[.docker.m]=bitcoin
securityLevelGRPC=0
securityLevelHTTP=0
server_certFile=certs/teranode.crt
server_keyFile=certs/teranode.key
spent_utxo_ttl[.docker]=10
startAlert[.docker.m]=false
startAsset[.docker.m]=false
startBlockAssembly[.docker.m]=false
startBlockPersister[.docker.m]=false
startBlockValidation[.docker.m]=false
startBlockchain[.docker.m]=false
startCoinbase[.docker.m]=false
startFaucet[.docker.m]=false
startLegacy[.docker.m]=false
startP2P[.docker.m]=false
startPropagation[.docker.m]=false
startRPC=true
startSubtreeValidation[.docker.m]=false
startUTXOPersister=false
startValidator[.docker]=true
stats_prefix=gocore
subtree_quorum_absolute_timeout=30s
subtree_quorum_path[.docker]=./data/subtreestore/subtree_quorum
subtreestore[.docker]=file://./data/subtreestore
subtreevalidation_failfast_validation[.docker]=false
subtreevalidation_getMissingTransactions=32
subtreevalidation_grpcAddress[.docker.m]=subtreevalidation:8086
subtreevalidation_grpcListenAddress=:8086
subtreevalidation_processTxMetaUsingCache_BatchSize=1024
subtreevalidation_processTxMetaUsingCache_Concurrency=32
subtreevalidation_processTxMetaUsingCache_MissingTxThreshold=1
subtreevalidation_processTxMetaUsingStore_BatchSize=1024
subtreevalidation_processTxMetaUsingStore_Concurrency=32
subtreevalidation_processTxMetaUsingStore_MissingTxThreshold=1
subtreevalidation_spendBatcherSize=8192
subtreevalidation_subtreeTTL[DEFAULT]=
subtreevalidation_subtreeTTLConcurrency=8
subtreevalidation_subtreeTTLDuration[DEFAULT]=
subtreevalidation_subtreeValidationTimeout=1000
subtreevalidation_subtree_validation_abandon_threshold=1
subtreevalidation_txMetaCacheEnabled=true
subtreevalidation_validation_max_retries=30
subtreevalidation_validation_retry_sleep=5s
temp_store=file://./data/tempstore
test_run_mode[.docker]=ci
tracing_SampleRate=0.1
tracing_collector_url[.docker]=jaeger:4318
tracing_enabled[DEFAULT]=
txMetaCacheMaxMB=1024
txMetaCacheTrimRatio=5
tx_blaster_p2p_static_peers=
tx_blaster_profilerAddr=:9092
tx_blaster_staggerWorkersTimeMs=20
txstore=null:///
useLocalValidator=true
use_cgo_signer=true
use_cgo_verifier=true
use_datadog_profiler=false
utxostore[.docker.m]=aerospike://aerospike:3000/utxo-store?WarmUp=0&ConnectionQueueSize=16&LimitConnectionsToQueueSize=true&MinConnectionsPerNode=8&set=utxo&externalStore=file://./data/external%3FhashPrefix=2
utxostore_dbTimeoutDuration=5s
utxostore_dbTimeoutMillis=5000
utxostore_getBatcherDurationMillis=10
utxostore_getBatcherSize=4096
utxostore_maxMinedBatchSize=1024
utxostore_maxMinedRoutines=128
utxostore_outpointBatcherConcurrency=32
utxostore_outpointBatcherDurationMillis=5
utxostore_outpointBatcherSize=4096
utxostore_spendBatcherConcurrency=16
utxostore_spendBatcherDurationMillis=10
utxostore_spendBatcherSize=1024
utxostore_storeBatcherDurationMillis=10
utxostore_storeBatcherSize=2048
utxostore_useExternalTxCache=true
utxostore_utxoBatchSize[.docker.m]=512
validator_blockvalidation_delay=0
validator_blockvalidation_maxRetries=5
validator_blockvalidation_retrySleep=2s
validator_grpcAddress[.docker.m]=validator:8081
validator_grpcListenAddress=:8081
validator_httpAddress[.docker]=http://TeraNode.Api.sv:8834
validator_httpListenAddress=:8834
validator_kafka_maxMessageBytes=1048500
validator_sendBatchSize[.docker.m]=1000
validator_sendBatchTimeout[.docker.m]=5
validator_sendBatchWorkers=1

VERSION

()

2025-10-06T10:52:42Z | INFO | cmd/settings/Settings.go:48 | teranode-cli| SETTINGS JSON

{
"Commit": "Unknown",
"Version": "Unknown",
"Context": "docker.m",
"ServiceName": "teranode",
"TracingEnabled": false,
"TracingSampleRate": 0.1,
"TracingCollectorURL": {
"Scheme": "jaeger",
"Opaque": "4318",
"User": null,
"Host": "",
"Path": "",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"ClientName": "TeraNode.Api.sv",
"DataFolder": "data",
"SecurityLevelHTTP": 0,
"ServerCertFile": "certs/teranode.crt",
"ServerKeyFile": "certs/teranode.key",
"Logger": "zerolog",
"LogLevel": "INFO",
"PrettyLogs": true,
"JSONLogging": false,
"ProfilerAddr": ":9091",
"StatsPrefix": "gocore",
"PrometheusEndpoint": "/metrics",
"HealthCheckHTTPListenAddress": ":8000",
"UseDatadogProfiler": false,
"LocalTestStartFromState": "",
"PostgresCheckAddress": "localhost:5432",
"UseCgoVerifier": true,
"GRPCResolver": "dns",
"GRPCMaxRetries": 40,
"GRPCRetryBackoff": 250000000,
"SecurityLevelGRPC": 0,
"UsePrometheusGRPCMetrics": true,
"GRPCAdminAPIKey": "testkey",
"ChainCfgParams": {
"Name": "teratestnet",
"Net": 201916685,
"TopicPrefix": "teranode/bitcoin/1.0.0/teratestnet",
"DefaultPort": "18333",
"DNSSeeds": null,
"GenesisBlock": {
"Header": {
"Version": 1,
"PrevBlock": "0000000000000000000000000000000000000000000000000000000000000000",
"MerkleRoot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",
"Timestamp": "2025-08-19T12:33:56Z",
"Bits": 486604799,
"Nonce": 1092578460
},
"Transactions": [
{
"Version": 1,
"TxIn": [
{
"PreviousOutPoint": {
"Hash": "0000000000000000000000000000000000000000000000000000000000000000",
"Index": 4294967295
},
"SignatureScript": "BP//AB0BBEVUaGUgVGltZXMgMDMvSmFuLzIwMDkgQ2hhbmNlbGxvciBvbiBicmluayBvZiBzZWNvbmQgYmFpbG91dCBmb3IgYmFua3M=",
"Sequence": 4294967295
}
],
"TxOut": [
{
"Value": 5000000000,
"PkScript": "QQRniv2w/lVIJxln8aZxMLcQXNaoKOA5CaZ5YuDqH2Hetkn2vD9M7zjE81UE5R7BEt5cOE33uguNV4pMcCtr8R1frA=="
}
],
"LockTime": 0
}
]
},
"GenesisHash": "000000000499eabba0a88f5b3747231c74b9191c1a4a04b2c2ea817976b7776d",
"PowLimit": 26959946667150639794667015087019630673637144422540572481103610249215,
"PowLimitBits": 486604799,
"BIP0034Height": 0,
"BIP0065Height": 0,
"BIP0066Height": 0,
"CSVHeight": 0,
"UahfForkHeight": 0,
"DaaForkHeight": 0,
"GenesisActivationHeight": 1,
"ChronicleActivationHeight": 2,
"CoinbaseMaturity": 100,
"MaxCoinbaseScriptSigSize": 100,
"SubsidyReductionInterval": 210000,
"TargetTimePerBlock": 600000000000,
"RetargetAdjustmentFactor": 4,
"ReduceMinDifficulty": true,
"NoDifficultyAdjustment": false,
"MinDiffReductionTime": 1200000000000,
"GenerateSupported": false,
"Checkpoints": null,
"RuleChangeActivationThreshold": 1512,
"MinerConfirmationWindow": 2016,
"Deployments": [
{
"BitNumber": 28,
"StartTime": 0,
"ExpireTime": 9223372036854775807
},
{
"BitNumber": 0,
"StartTime": 0,
"ExpireTime": 9223372036854775807
}
],
"RelayNonStdTxs": true,
"RequireStandard": false,
"CashAddressPrefix": "bsvtest",
"LegacyPubKeyHashAddrID": 111,
"LegacyScriptHashAddrID": 196,
"PrivateKeyID": 239,
"HDPrivateKeyID": [
4,
53,
131,
148
],
"HDPublicKeyID": [
4,
53,
135,
207
],
"HDCoinType": 1
},
"Policy": {
"excessiveblocksize": 10737418240,
"blockmaxsize": 4294967296,
"maxtxsizepolicy": 100000000,
"maxorphantxsize": 0,
"datacarriersize": 0,
"maxscriptsizepolicy": 500000,
"maxopsperscriptpolicy": 0,
"maxscriptnumlengthpolicy": 10000,
"maxpubkeyspermultisigpolicy": 0,
"maxtxsigopscountspolicy": 4294967295,
"maxstackmemoryusagepolicy": 104857600,
"maxstackmemoryusageconsensus": 0,
"limitancestorcount": 0,
"limitcpfpgroupmemberscount": 0,
"acceptnonstdoutputs": true,
"datacarrier": false,
"minminingtxfee": 0,
"maxstdtxvalidationduration": 0,
"maxnonstdtxvalidationduration": 0,
"maxtxchainvalidationbudget": 0,
"validationclockcpu": false,
"minconsolidationfactor": 20,
"maxconsolidationinputscriptsize": 150,
"minconfconsolidationinput": 6,
"minconsolidationinputmaturity": 6,
"acceptnonstdconsolidationinput": false
},
"Kafka": {
"Blocks": "blocks-TeraNode.Api.sv",
"BlocksFinal": "blocks-final-TeraNode.Api.sv",
"BlocksValidate": "",
"Hosts": "kafka-shared:9092",
"InvalidBlocks": "invalid-blocks-TeraNode.Api.sv",
"InvalidSubtrees": "invalid-subtrees-TeraNode.Api.sv",
"LegacyInv": "legacy-inv-TeraNode.Api.sv",
"Partitions": 1,
"Port": 9092,
"RejectedTx": "rejectedtx-TeraNode.Api.sv",
"ReplicationFactor": 1,
"Subtrees": "subtrees-TeraNode.Api.sv",
"TxMeta": "txmeta-TeraNode.Api.sv",
"UnitTest": "unittest",
"ValidatorTxsConfig": null,
"TxMetaConfig": {
"Scheme": "kafka",
"Opaque": "",
"User": null,
"Host": "kafka-shared:9092",
"Path": "/txmeta-TeraNode.Api.sv",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "partitions=8\u0026replication=1\u0026retention=60000\u0026flush_bytes=1024\u0026flush_messages=10000\u0026flush_frequency=1s\u0026consumer_ratio=1",
"Fragment": "",
"RawFragment": ""
},
"LegacyInvConfig": {
"Scheme": "kafka",
"Opaque": "",
"User": null,
"Host": "kafka-shared:9092",
"Path": "/legacy-inv-TeraNode.Api.sv",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "partitions=8\u0026replication=1\u0026retention=6000\u0026flush_bytes=1024\u0026flush_messages=16\u0026flush_frequency=1s\u0026consumer_ratio=1",
"Fragment": "",
"RawFragment": ""
},
"BlocksFinalConfig": {
"Scheme": "kafka",
"Opaque": "",
"User": null,
"Host": "kafka-shared:9092",
"Path": "/blocks-final-TeraNode.Api.sv",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "partitions=1\u0026replication=1\u0026retention=60000\u0026flush_bytes=64\u0026consumer_ratio=1",
"Fragment": "",
"RawFragment": ""
},
"RejectedTxConfig": {
"Scheme": "kafka",
"Opaque": "",
"User": null,
"Host": "kafka-shared:9092",
"Path": "/rejectedtx-TeraNode.Api.sv",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "partitions=1\u0026replication=1\u0026retention=600000\u0026flush_bytes=1024\u0026flush_messages=10000\u0026flush_frequency=1s\u0026consumer_ratio=1\u0026replay=0",
"Fragment": "",
"RawFragment": ""
},
"InvalidBlocksConfig": {
"Scheme": "kafka",
"Opaque": "",
"User": null,
"Host": "kafka-shared:9092",
"Path": "/invalid-blocks-TeraNode.Api.sv",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "partitions=1\u0026replication=1\u0026retention=600000\u0026flush_bytes=1024\u0026flush_messages=10000\u0026flush_frequency=1s\u0026consumer_ratio=1\u0026replay=0",
"Fragment": "",
"RawFragment": ""
},
"InvalidSubtreesConfig": {
"Scheme": "kafka",
"Opaque": "",
"User": null,
"Host": "kafka-shared:9092",
"Path": "/invalid-subtrees-TeraNode.Api.sv",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "partitions=8\u0026replication=1\u0026retention=60000\u0026segment_bytes=33554432\u0026flush_bytes=64\u0026flush_messages=1\u0026consumer_ratio=1\u0026replay=0",
"Fragment": "",
"RawFragment": ""
},
"SubtreesConfig": {
"Scheme": "kafka",
"Opaque": "",
"User": null,
"Host": "kafka-shared:9092",
"Path": "/subtrees-TeraNode.Api.sv",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "partitions=1\u0026replication=1\u0026retention=60000\u0026segment_bytes=33554432\u0026flush_bytes=64\u0026flush_messages=1\u0026consumer_ratio=1\u0026replay=0",
"Fragment": "",
"RawFragment": ""
},
"BlocksConfig": {
"Scheme": "kafka",
"Opaque": "",
"User": null,
"Host": "kafka-shared:9092",
"Path": "/blocks-TeraNode.Api.sv",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "partitions=1\u0026replication=1\u0026retention=60000\u0026flush_bytes=64\u0026consumer_ratio=1",
"Fragment": "",
"RawFragment": ""
},
"EnableTLS": false,
"TLSSkipVerify": false,
"TLSCAFile": "",
"TLSCertFile": "",
"TLSKeyFile": ""
},
"Aerospike": {
"Debug": false,
"Host": "localhost",
"BatchPolicyURL": {
"Scheme": "aerospike",
"Opaque": "",
"User": null,
"Host": "",
"Path": "/",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "MaxRetries=5\u0026SleepBetweenRetries=500ms\u0026SleepMultiplier=1\u0026TotalTimeout=64s\u0026SocketTimeout=10s\u0026ConcurrentNodes=0",
"Fragment": "",
"RawFragment": ""
},
"ReadPolicyURL": {
"Scheme": "aerospike",
"Opaque": "",
"User": null,
"Host": "",
"Path": "/",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "MaxRetries=5\u0026SleepBetweenRetries=500ms\u0026SleepMultiplier=1\u0026TotalTimeout=1s\u0026SocketTimeout=1s",
"Fragment": "",
"RawFragment": ""
},
"WritePolicyURL": {
"Scheme": "aerospike",
"Opaque": "",
"User": null,
"Host": "",
"Path": "/",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "MaxRetries=5\u0026SleepBetweenRetries=500ms\u0026SleepMultiplier=1\u0026TotalTimeout=1s\u0026SocketTimeout=1s",
"Fragment": "",
"RawFragment": ""
},
"Port": 3000,
"UseDefaultBasePolicies": false,
"UseDefaultPolicies": false,
"WarmUp": true,
"StoreBatcherDuration": 10000000,
"StatsRefreshDuration": 5000000000
},
"Alert": {
"GenesisKeys": [
"02a1589f2c8e1a4e7cbf28d4d6b676aa2f30811277883211027950e82a83eb2768",
"03aec1d40f02ac7f6df701ef8f629515812f1bcd949b6aa6c7a8dd778b748b2433",
"03ddb2806f3cc48aa36bd4aea6b9f1c7ed3ffc8b9302b198ca963f15beff123678",
"036846e3e8f4f944af644b6a6c6243889dd90d7b6c3593abb9ccf2acb8c9e606e2",
"03e45c9dd2b34829c1d27c8b5d16917dd0dc2c88fa0d7bad7bffb9b542229a9304"
],
"P2PPrivateKey": "e76c77795b43d2aacd564648bffebde74a4c31540357dad4a3694a561b4c4f1fbb0ba060a3015f7f367742500ef8486707e58032af1b4dfdb1203c790bcf2526",
"ProtocolID": "/bitcoin/alert-system/1.0.0",
"Store": "sqlite:///alert",
"StoreURL": {
"Scheme": "sqlite",
"Opaque": "",
"User": null,
"Host": "",
"Path": "/alert",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"TopicName": "bitcoin_alert_system",
"P2PPort": 9908
},
"Asset": {
"APIPrefix": "/api/v1",
"CentrifugeListenAddress": ":8892",
"CentrifugeDisable": false,
"HTTPAddress": "http://asset:8090/api/v1",
"HTTPPublicAddress": "http://teranode.api.sv:8000/api/v1",
"HTTPListenAddress": ":8090",
"HTTPPort": 8090,
"SignHTTPResponses": false,
"EchoDebug": false
},
"Block": {
"MinedCacheMaxMB": 32,
"PersisterStore": {
"Scheme": "file",
"Opaque": "",
"User": null,
"Host": ".",
"Path": "/data/blockstore",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"PersisterHTTPListenAddress": ":8083",
"StateFile": "./data/blockpersister_state.txt",
"CheckDuplicateTransactionsConcurrency": 32,
"GetAndValidateSubtreesConcurrency": 32,
"KafkaWorkers": 0,
"ValidOrderAndBlessedConcurrency": 32,
"StoreCacheEnabled": true,
"StoreCacheSize": 200,
"MaxSize": 4294967296,
"BlockStore": {
"Scheme": "file",
"Opaque": "",
"User": null,
"Host": ".",
"Path": "/data/blockstore",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"FailFastValidation": false,
"FinalizeBlockValidationConcurrency": 8,
"GetMissingTransactions": 32,
"QuorumTimeout": 10000000000,
"BlockPersisterConcurrency": 8,
"BatchMissingTransactions": true,
"ProcessTxMetaUsingStoreBatchSize": 1024,
"SkipUTXODelete": false,
"UTXOPersisterBufferSize": "4KB",
"TxStore": {
"Scheme": "null",
"Opaque": "",
"User": null,
"Host": "",
"Path": "/",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"UTXOPersisterDirect": true,
"BlockPersisterPersistAge": 100,
"BlockPersisterPersistSleep": 10000000,
"UtxoStore": null
},
"BlockAssembly": {
"Disabled": false,
"GRPCAddress": "blockassembly:8085",
"GRPCListenAddress": ":8085",
"GRPCMaxRetries": 3,
"GRPCRetryBackoff": 2000000000,
"LocalDAHCache": "",
"MaxBlockReorgCatchup": 100,
"MaxBlockReorgRollback": 100,
"MoveBackBlockConcurrency": 375,
"ProcessRemainderTxHashesConcurrency": 375,
"SendBatchSize": 1024,
"SendBatchTimeout": 5,
"SubtreeProcessorBatcherSize": 32768,
"SubtreeProcessorConcurrentReads": 375,
"NewSubtreeChanBuffer": 1000,
"SubtreeRetryChanBuffer": 1000,
"SubmitMiningSolutionWaitForResponse": true,
"InitialMerkleItemsPerSubtree": 1024,
"MinimumMerkleItemsPerSubtree": 1024,
"MaximumMerkleItemsPerSubtree": 32768,
"DoubleSpendWindow": 0,
"MaxGetReorgHashes": 10000,
"MinerWalletPrivateKeys": [
"L56TgyTpDdvL3W24SMoALYotibToSCySQeo4pThLKxw6EFR6f93Q",
"KyAwSjuXZNgj78w3W7mR1fVMbPFu2heaCJJkWK5Yy58NZ4xafV6k",
"L3NVjmwg3nC7ZPrwMVF6FXiG1a1RZ89nhizmJVctGztRKLYrhtFL"
],
"DifficultyCache": true,
"UseDynamicSubtreeSize": true,
"MiningCandidateCacheTimeout": 5000000000
},
"BlockChain": {
"GRPCAddress": "blockchain:8087",
"GRPCListenAddress": ":8087",
"HTTPListenAddress": ":8082",
"MaxRetries": 3,
"RetrySleep": 1000,
"StoreURL": {
"Scheme": "postgres",
"Opaque": "",
"User": {},
"Host": "postgres:5432",
"Path": "/teranode",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"FSMStateRestore": false,
"FSMStateChangeDelay": 0,
"StoreDBTimeoutMillis": 5000,
"InitializeNodeInState": ""
},
"BlockValidation": {
"MaxRetries": 3,
"RetrySleep": 1000000000,
"GRPCAddress": "blockvalidation:8088",
"GRPCListenAddress": ":8088",
"KafkaWorkers": 0,
"LocalSetTxMinedConcurrency": 8,
"MaxPreviousBlockHeadersToCheck": 100,
"MissingTransactionsBatchSize": 5000,
"ProcessTxMetaUsingCacheBatchSize": 1024,
"ProcessTxMetaUsingCacheConcurrency": 128,
"ProcessTxMetaUsingCacheMissingTxThreshold": 1,
"ProcessTxMetaUsingStoreBatchSize": 1024,
"ProcessTxMetaUsingStoreConcurrency": 128,
"ProcessTxMetaUsingStoreMissingTxThreshold": 1,
"SkipCheckParentMined": false,
"SubtreeFoundChConcurrency": 64,
"SubtreeValidationAbandonThreshold": 0,
"ValidateBlockSubtreesConcurrency": 64,
"ValidationMaxRetries": 3,
"ValidationRetrySleep": 5000000000,
"OptimisticMining": true,
"IsParentMinedRetryMaxRetry": 20,
"IsParentMinedRetryBackoffMultiplier": 30,
"SubtreeGroupConcurrency": 1,
"BlockFoundChBufferSize": 1000,
"CatchupChBufferSize": 10,
"UseCatchupWhenBehind": false,
"CatchupConcurrency": 24,
"ValidationWarmupCount": 128,
"BatchMissingTransactions": false,
"CheckSubtreeFromBlockTimeout": 300000000000,
"CheckSubtreeFromBlockRetries": 5,
"CheckSubtreeFromBlockRetryBackoffDuration": 30000000000,
"SecretMiningThreshold": 99,
"ArePreviousBlocksProcessedMaxRetry": 20,
"ArePreviousBlocksProcessedRetryBackoffMultiplier": 30,
"PreviousBlockHeaderCount": 100,
"CatchupMaxRetries": 3,
"CatchupIterationTimeout": 30,
"CatchupOperationTimeout": 300,
"CatchupMaxAccumulatedHeaders": 100000,
"CircuitBreakerFailureThreshold": 5,
"CircuitBreakerSuccessThreshold": 2,
"CircuitBreakerTimeoutSeconds": 30,
"FetchLargeBatchSize": 100,
"FetchNumWorkers": 16,
"FetchBufferSize": 500,
"SubtreeFetchConcurrency": 8,
"ExtendTransactionTimeout": 120000000000,
"GetBlockTransactionsConcurrency": 64
},
"Validator": {
"GRPCAddress": "validator:8081",
"GRPCListenAddress": ":8081",
"KafkaWorkers": 0,
"SendBatchSize": 1000,
"SendBatchTimeout": 5,
"SendBatchWorkers": 1,
"BlockValidationDelay": 0,
"BlockValidationMaxRetries": 5,
"BlockValidationRetrySleep": "2s",
"VerboseDebug": false,
"HTTPListenAddress": ":8834",
"HTTPAddress": {
"Scheme": "http",
"Opaque": "",
"User": null,
"Host": "TeraNode.Api.sv:8834",
"Path": "",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"HTTPRateLimit": 1024,
"KafkaMaxMessageBytes": 1048500,
"UseLocalValidator": true
},
"Region": {
"Name": "defaultRegionName"
},
"Advertising": {
"Interval": "10s",
"URL": ""
},
"UtxoStore": {
"UtxoStore": {
"Scheme": "aerospike",
"Opaque": "",
"User": null,
"Host": "aerospike:3000",
"Path": "/utxo-store",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "WarmUp=0\u0026ConnectionQueueSize=16\u0026LimitConnectionsToQueueSize=true\u0026MinConnectionsPerNode=8\u0026set=utxo\u0026externalStore=file://./data/external%3FhashPrefix=2",
"Fragment": "",
"RawFragment": ""
},
"BlockHeightRetention": 288,
"UnminedTxRetention": 144,
"ParentPreservationBlocks": 1440,
"OutpointBatcherSize": 4096,
"OutpointBatcherDurationMillis": 5,
"SpendBatcherDurationMillis": 10,
"SpendBatcherSize": 1024,
"SpendBatcherConcurrency": 16,
"StoreBatcherDurationMillis": 10,
"StoreBatcherSize": 2048,
"UtxoBatchSize": 512,
"IncrementBatcherSize": 256,
"IncrementBatcherDurationMillis": 10,
"SetDAHBatcherSize": 256,
"SetDAHBatcherDurationMillis": 10,
"LockedBatcherSize": 1024,
"LockedBatcherDurationMillis": 5,
"LongestChainBatcherSize": 1024,
"LongestChainBatcherDurationMillis": 5,
"GetBatcherSize": 4096,
"GetBatcherDurationMillis": 10,
"DBTimeout": 5000000000,
"UseExternalTxCache": true,
"ExternalizeAllTransactions": false,
"PostgresMaxIdleConns": 10,
"PostgresMaxOpenConns": 80,
"VerboseDebug": false,
"UpdateTxMinedStatus": true,
"MaxMinedRoutines": 128,
"MaxMinedBatchSize": 1024,
"BlockHeightRetentionAdjustment": 0,
"DisableDAHCleaner": false,
"CleanupParentUpdateBatcherSize": 100,
"CleanupParentUpdateBatcherDurationMillis": 10,
"CleanupDeleteBatcherSize": 256,
"CleanupDeleteBatcherDurationMillis": 10,
"CleanupMaxConcurrentOperations": 128
},
"P2P": {
"BootstrapAddresses": [
"/dns4/teranode-bootstrap.bsvb.tech/tcp/9901/p2p/12D3KooWESmhNAN8s6NPdGNvJH3zJ4wMKDxapXKNUe2DzkAwKYqK"
],
"GRPCAddress": "peer:9904",
"GRPCListenAddress": ":9904",
"HTTPAddress": "peer:9906",
"HTTPListenAddress": ":9906",
"ListenAddresses": [
"0.0.0.0"
],
"AdvertiseAddresses": [],
"ListenMode": "full",
"PeerID": "",
"Port": 9905,
"PrivateKey": "",
"BlockTopic": "block",
"NodeStatusTopic": "",
"RejectedTxTopic": "rejected_tx",
"SubtreeTopic": "subtree",
"StaticPeers": [],
"RelayPeers": [],
"PeerCacheDir": "./data",
"BanThreshold": 100,
"BanDuration": 86400000000000,
"ForceSyncPeer": "",
"SharePrivateAddresses": false,
"PeerMapMaxSize": 0,
"PeerMapTTL": 0,
"PeerMapCleanupInterval": 0,
"PeerHealthCheckInterval": 30000000000,
"PeerHealthHTTPTimeout": 5000000000,
"PeerHealthRemoveAfterFailures": 3
},
"Coinbase": {
"DB": "",
"UserPwd": "",
"ArbitraryText": "/teranode/",
"GRPCAddress": "teranode-coinbase:8093",
"GRPCListenAddress": ":8093",
"NotificationThreshold": 0,
"P2PPeerID": "",
"P2PPrivateKey": "",
"P2PStaticPeers": [],
"ShouldWait": false,
"Store": {
"Scheme": "postgres",
"Opaque": "",
"User": {},
"Host": "postgres:5432",
"Path": "/coinbase1",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"StoreDBTimeoutMillis": 5000,
"WaitForPeers": true,
"WalletPrivateKey": "L56TgyTpDdvL3W24SMoALYotibToSCySQeo4pThLKxw6EFR6f93Q",
"DistributorBackoffDuration": 1000000000,
"DistributorMaxRetries": 3,
"DistributorFailureTolerance": 99,
"DistributerWaitTime": 10,
"DistributorTimeout": 30000000000,
"PeerStatusTimeout": 300000000000,
"SlackChannel": "",
"SlackToken": "",
"TestMode": false,
"P2PPort": 9907
},
"SubtreeValidation": {
"QuorumPath": "./data/subtreestore/subtree_quorum",
"QuorumAbsoluteTimeout": 30000000000,
"SubtreeStore": {
"Scheme": "file",
"Opaque": "",
"User": null,
"Host": ".",
"Path": "/data/subtreestore",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"FailFastValidation": false,
"GetMissingTransactions": 32,
"GRPCAddress": "subtreevalidation:8086",
"GRPCListenAddress": ":8086",
"ProcessTxMetaUsingCacheBatchSize": 1024,
"ProcessTxMetaUsingCacheConcurrency": 32,
"ProcessTxMetaUsingCacheMissingTxThreshold": 1,
"ProcessTxMetaUsingStoreBatchSize": 1024,
"ProcessTxMetaUsingStoreConcurrency": 32,
"ProcessTxMetaUsingStoreMissingTxThreshold": 1,
"SubtreeBlockHeightRetention": 288,
"SubtreeDAHConcurrency": 8,
"SubtreeValidationTimeout": 1000,
"SubtreeValidationAbandonThreshold": 1,
"TxMetaCacheEnabled": true,
"TxMetaCacheMaxMB": 1024,
"ValidationMaxRetries": 30,
"ValidationRetrySleep": "5s",
"TxChanBufferSize": 0,
"BatchMissingTransactions": true,
"SpendBatcherSize": 8192,
"MissingTransactionsBatchSize": 16384,
"PercentageMissingGetFullData": 20,
"BlacklistedBaseURLs": {},
"BlockHeightRetentionAdjustment": 0,
"OrphanageTimeout": 900000000000,
"CheckBlockSubtreesConcurrency": 32
},
"Legacy": {
"WorkingDir": "./data/legacy",
"ListenAddresses": [],
"ConnectPeers": [],
"OrphanEvictionDuration": 600000000000,
"StoreBatcherSize": 1024,
"StoreBatcherConcurrency": 32,
"SpendBatcherSize": 1024,
"SpendBatcherConcurrency": 32,
"OutpointBatcherSize": 1024,
"OutpointBatcherConcurrency": 32,
"PrintInvMessages": false,
"GRPCAddress": "legacy:8099",
"AllowBlockPriority": false,
"GRPCListenAddress": ":8099",
"SavePeers": false,
"AllowSyncCandidateFromLocalPeers": true,
"TempStore": {
"Scheme": "file",
"Opaque": "",
"User": null,
"Host": ".",
"Path": "/data/tempstore",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"PeerIdleTimeout": 125000000000,
"PeerProcessingTimeout": 180000000000
},
"Propagation": {
"IPv6Addresses": "",
"IPv6Interface": "",
"GRPCMaxConnectionAge": 30000000000,
"HTTPListenAddress": ":8833",
"HTTPAddresses": [
"http://propagation:8833"
],
"AlwaysUseHTTP": false,
"HTTPRateLimit": 1024,
"SendBatchSize": 100,
"SendBatchTimeout": 10,
"GRPCAddresses": [
"propagation:8084"
],
"GRPCListenAddress": ":8084"
},
"RPC": {
"RPCUser": "bitcoin",
"RPCPass": "bitcoin",
"RPCLimitUser": "",
"RPCLimitPass": "",
"RPCMaxClients": 3,
"RPCQuirks": true,
"RPCListenerURL": {
"Scheme": "http",
"Opaque": "",
"User": null,
"Host": ":9292",
"Path": "",
"RawPath": "",
"OmitHost": false,
"ForceQuery": false,
"RawQuery": "",
"Fragment": "",
"RawFragment": ""
},
"CacheEnabled": true,
"RPCTimeout": 30000000000,
"ClientCallTimeout": 5000000000
},
"Faucet": {
"HTTPListenAddress": ":8097"
},
"Dashboard": {
"Enabled": true,
"DevServerPorts": [
5173,
4173
],
"WebSocketPort": "8090",
"WebSocketPath": "/connection/websocket"
},
"GlobalBlockHeightRetention": 288
}
'''

SETTINGS

listen_mode.docker.m = full
asset_httpPublicAddress.docker.m = http://example.com:8000/api/v1
rpc_user.docker.m = bitcoin
rpc_pass.docker.m = bitcoin
clientName.docker.m = example.com

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions