Policy Settings
Related Topics: Network Consensus Rules, Transaction Validation
Policy settings control BSV Blockchain consensus rules and transaction validation behavior in Teranode. These settings determine what transactions and blocks are considered valid on the BSV Blockchain according to the Bitcoin Protocol.
Configuration Settings
Block Size Limits
| Setting |
Type |
Default |
Environment Variable |
Usage |
| BlockMaxSize |
int |
0 (unlimited) |
blockmaxsize |
CRITICAL - Maximum block size policy limit |
| ExcessiveBlockSize |
int |
4294967296 (4GB) |
excessiveblocksize |
Excessive block size threshold |
Transaction Size and Script Limits
| Setting |
Type |
Default |
Environment Variable |
Usage |
| MaxTxSizePolicy |
int |
10485760 (10MB) |
maxtxsizepolicy |
CRITICAL - Maximum transaction size policy |
| MaxScriptSizePolicy |
int |
500000 (500KB) |
maxscriptsizepolicy |
CRITICAL - Maximum script size policy |
| MaxScriptNumLengthPolicy |
int |
10000 |
maxscriptnumlengthpolicy |
Maximum script number length |
Multisig and Signature Limits
| Setting |
Type |
Default |
Environment Variable |
Usage |
| MaxPubKeysPerMultisigPolicy |
int64 |
0 (unlimited) |
maxpubkeyspermultisigpolicy |
Maximum public keys per multisig |
| MaxTxSigopsCountsPolicy |
int64 |
0 (unlimited) |
maxtxsigopscountspolicy |
Maximum signature operations per transaction |
Memory and Stack Limits
| Setting |
Type |
Default |
Environment Variable |
Usage |
| MaxStackMemoryUsagePolicy |
int |
104857600 (100MB) |
maxstackmemoryusagepolicy |
CRITICAL - Maximum stack memory usage (policy) |
| MaxStackMemoryUsageConsensus |
int |
0 (unlimited) |
maxstackmemoryusageconsensus |
CRITICAL - Maximum stack memory usage (consensus) |
Mining and Fee Settings
| Setting |
Type |
Default |
Environment Variable |
Usage |
| MinMiningTxFee |
float64 |
0.00000500 |
minminingtxfee |
Minimum transaction fee for mining |
| AcceptNonStdOutputs |
bool |
true |
acceptnonstdoutputs |
CRITICAL - Accept non-standard output scripts |
Consolidation Transaction Settings
| Setting |
Type |
Default |
Environment Variable |
Usage |
| MinConsolidationFactor |
int |
20 |
minconsolidationfactor |
Minimum consolidation factor |
| MaxConsolidationInputScriptSize |
int |
150 |
maxconsolidationinputscriptsize |
Maximum input script size for consolidation |
| MinConfConsolidationInput |
int |
6 |
minconfconsolidationinput |
Minimum confirmations for consolidation input |
| MinConsolidationInputMaturity |
int |
6 |
minconsolidationinputmaturity |
Minimum input maturity for consolidation |
| AcceptNonStdConsolidationInput |
bool |
false |
acceptnonstdconsolidationinput |
Accept non-standard consolidation inputs |
Configuration Dependencies
Block Size Policy
BlockMaxSize = 0 means unlimited block size (default behavior for BSV)
ExcessiveBlockSize defines the threshold for considering blocks "excessive"
- Both settings work together to enforce Bitcoin SV's unbounded block size philosophy
Script Validation
Multisig and Signature Operations
MaxPubKeysPerMultisigPolicy = 0 means unlimited public keys (BSV default)
MaxTxSigopsCountsPolicy = 0 means unlimited signature operations (BSV default)
- These unlimited defaults reflect Bitcoin SV's restoration of original Bitcoin capabilities
Non-Standard Transactions
AcceptNonStdOutputs = true enables acceptance of non-standard output scripts
- Required for many BSV applications that use custom script templates
- Aligns with BSV's philosophy of not restricting valid script types
Consolidation Transactions
- Consolidation transactions allow efficient UTXO management
MinConsolidationFactor requires minimum input-to-output ratio
MinConfConsolidationInput and MinConsolidationInputMaturity prevent immature UTXO consolidation
MaxConsolidationInputScriptSize limits input script complexity
AcceptNonStdConsolidationInput controls whether non-standard inputs can be consolidated
Bitcoin SV Specifics
Restored Protocol Features
Bitcoin SV restores the original Bitcoin protocol, which is reflected in these policy settings:
- Unlimited Block Size:
BlockMaxSize = 0 (unlimited)
- Unlimited Script Capabilities: Most limits set to 0 (unlimited)
- Original Opcodes: All original Bitcoin opcodes restored and functional
- No Artificial Restrictions: Non-standard transactions accepted by default
Policy vs Consensus
Teranode distinguishes between policy and consensus rules:
- Policy Rules: Local node preferences (can be more restrictive)
- Consensus Rules: Network-wide agreement (must match the BSV Blockchain protocol)
The settings allow operators to configure policy rules while maintaining consensus compatibility.
Validation Rules
| Setting |
Validation |
Impact |
| BlockMaxSize |
0 means unlimited |
Block acceptance criteria |
| MaxTxSizePolicy |
Must be positive or 0 |
Transaction size validation |
| MaxStackMemoryUsagePolicy |
Policy enforcement |
Script execution limits |
| MaxStackMemoryUsageConsensus |
Consensus enforcement |
Block validation limits |
| MinMiningTxFee |
Minimum fee threshold |
Mining inclusion criteria |
Configuration Examples
Default BSV Configuration
blockmaxsize = 0
excessiveblocksize = 4294967296
maxtxsizepolicy = 10485760
maxscriptsizepolicy = 500000
maxpubkeyspermultisigpolicy = 0
maxtxsigopscountspolicy = 0
maxstackmemoryusagepolicy = 104857600
maxstackmemoryusageconsensus = 0
acceptnonstdoutputs = true
Conservative Policy Configuration
blockmaxsize = 2147483648
maxtxsizepolicy = 5242880
maxscriptsizepolicy = 250000
maxstackmemoryusagepolicy = 52428800
acceptnonstdoutputs = false
Mining-Focused Configuration
minminingtxfee = 0.00001000
acceptnonstdoutputs = true
minconsolidationfactor = 30