nDiffChangeTarget = 100060-second target
src/main.cpp defines nTargetSpacing = 60.
1-block retarget
After the block-1000 protocol change, nIntervalRe = 1, so the production path recalculates difficulty every block.
Difficulty transition check
AcceptBlock() rejects a block when its nBits does not equal GetNextWorkRequired().
1. Exact VTA difficulty implementation
The source contains a two-stage difficulty design. Before block 1000 it uses the earlier interval; from block 1000 onward it switches to the one-block retarget protocol.
nTargetSpacing = 60nTargetTimespanRe = 60nIntervalRe = 1GetNextWorkRequired()nDiffChangeTarget, nTargetSpacing and GetNextWorkRequired sections.2. VTA-specific anti-manipulation change
The source explicitly labels a VirtaCoin change intended to address a difficulty-manipulation issue. At the retarget, the code walks back through the required number of blocks and measures the elapsed time between the selected first and last block.
The post-1000 protocol also bounds the measured timespan before calculating the new target: the lower bound is 75% of the 60-second target period and the upper bound is 150% of it. The target is then calculated as:
new_target = previous_target × bounded_actual_timespan / retarget_timespan
This implementation detail is code-verified. The security effect of this design still requires adversarial testing; the code comment alone is not proof that a 51% attack is prevented.
GetNextWorkRequired().3. Proof-of-work validation path
CheckProofOfWork()nBits to a target, rejects targets outside the permitted range, then rejects a hash above that target.CheckBlock()AcceptBlock()nBits to equal GetNextWorkRequired().4. Consensus architecture evidence
Transaction validity layer
The source exposes CheckTransaction(), CheckInputs(), script verification and UTXO updates as separate validation operations.
Merkle validation
Block checking includes Merkle-root validation and the source implements Merkle-tree construction/branch checking.
Fork / chain-work handling
The source tracks chain work and has explicit fork-warning and invalid-chain handling.
5. Bitcoin reference point
For the comparison baseline, current Bitcoin Core's GetNextWorkRequired() changes difficulty only at the configured adjustment interval; otherwise it returns the previous nBits (with special testnet handling). citeturn7search0
Therefore, the verified VTA distinction is not merely a website claim: the VTA source actually contains a one-block retarget path after height 1000, whereas the Bitcoin reference implementation uses its configured multi-block adjustment interval. citeturn12view0turn7search0
NEXT — Transaction Validation Deep Audit
Now we move from consensus difficulty to money movement.
- Double-spend protection: inspect
CheckInputs()and UTXO spending. - Signature validation: trace
VerifySignature()→ script checks. - Amount safety: verify
MoneyRange(), output limits and overflow handling. - Transaction structure: empty inputs/outputs, duplicate inputs, size limits and locktime.
- Block transaction rules: coinbase, Merkle root, duplicate transaction IDs and signature-operation limits.
- Banking relevance: translate verified code behavior into settlement-control requirements without claiming suitability until the evidence supports it.