Brannon King
e7d8637cc5
[lbry] rpcclient: update defaultMaxFeeRate from 0.1 LBC to 0.5 LBC
2022-05-23 23:53:30 -07:00
Brannon King
9d70ff6f6d
[lbry] rpcserver: add ClaimTrie root hash to GetBlockTemplate()
2022-05-23 23:53:30 -07:00
Brannon King
6834591d52
[lbry] rpc: support claim related methods
2022-05-23 23:53:30 -07:00
Brannon King
0c5f94420a
[lbry] print out memory usage periodically
2022-05-23 23:53:30 -07:00
Roy Lee
6828cf5e36
[lbry] claimtrie: import current snapshot
...
Sync to tip
Co-authored-by: Brannon King <countprimes@gmail.com>
2022-05-23 23:53:30 -07:00
Roy Lee
45627c7a6a
[lbry] rename btcd to lbcd
...
Co-authored-by: Brannon King <countprimes@gmail.com>
2022-05-23 23:53:30 -07:00
Roy Lee
aae5b24bb0
[lbry] blockchain: connect to ClaimTrie
...
Co-authored-by: Brannon King <countprimes@gmail.com>
2022-05-23 23:53:30 -07:00
Brannon King
ba22414cc1
[lbry] log: support claimtrie entries
2022-05-23 23:53:30 -07:00
Brannon King
78d780263b
[lbry] txscript: remove claim prefix for addr calculation
2022-05-23 23:53:30 -07:00
Roy Lee
61a18152e9
[lbry] txscript: recognize LBRY claim script OPCODES
2022-05-23 23:53:30 -07:00
Roy Lee
2b28dfa528
[lbry] txscript: introduce claim script
...
Co-authored-by: Brannon King <countprimes@gmail.com>
2022-05-23 23:53:30 -07:00
Roy Lee
7657419b22
[lbry] txscript: change MaxScriptSize from 10,000 to 20,005
2022-05-23 23:53:30 -07:00
Alex Grintsvayg
33328a3e93
[lbry] server: make uptime rpc return a real uptime
2022-05-23 23:53:30 -07:00
Brannon King
44dd82a9f5
[lbry] server: don't ban peers on tx-not-in-block behavior
2022-05-23 23:53:30 -07:00
Roy Lee
93481d7f3a
[lbry] server: update client version to /btcwire:0.5.0/LBRY.GO:0.12.2/
...
TODO: double check if lbryd bumps the version.
2022-05-23 23:53:30 -07:00
Brannon King
4eb4dfa670
[lbry] blockchain: Consider a block with timestamp less 6 hours 'current'
2022-05-23 23:53:30 -07:00
Brannon King
8ff0f3787e
[lbry] blockchain: support force active fork deployment
2022-05-23 23:53:29 -07:00
Roy Lee
4a987b068d
[lbry] blockchain, mempool: validate txscripts
...
Co-authored-by: Brannon King <countprimes@gmail.com>
2022-05-23 23:53:29 -07:00
Roy Lee
767a375816
[lbry] blockchain: change Block Subsidy algorithm
2022-05-23 23:53:29 -07:00
Roy Lee
e63ede0311
[lbry] blockchain: change the difficulty adjustment algorithm.
...
adjusted := target + (actual - target) / 8
max := target + (target / 2)
min := target - (target / 8)
if adjusted > max {
adjusted = max
} else if adj < min {
adjusted = min
}
diffculty := lastDifficulty * adjusted / target
2022-05-23 23:53:29 -07:00
Roy Lee
4bfd69e23d
[lbry] blockchain: make UTXO in Genesis block spendable
2022-05-23 23:53:29 -07:00
Roy Lee
b2d0ae301e
[lbry] blockchain, txscript: change maxScriptElementSize from 520 t0 20,000 bytes
2022-05-23 23:53:29 -07:00
Roy Lee
03989a91d9
[lbry] blockchain, wire: verify blockheaders using LBRY PoW
2022-05-23 23:53:29 -07:00
Roy Lee
9f479837c1
[lbry] blockchain: change max block size to 2,000,000
2022-05-23 23:53:29 -07:00
Roy Lee
3dc91f1295
[lbry] blockchain, wire: add ClaimTrie to Block Header
2022-05-23 23:53:29 -07:00
Roy Lee
cbac056756
[lbry] chaincfg: update chainparams for LBRY chain
...
Co-authored-by: Brannon King <countprimes@gmail.com>
Co-authored-by: Alex Grintsvayg <grin@lbry.com>
2022-05-23 23:53:29 -07:00
Roy Lee
ba3ca3b77e
[lbry] chaincfg: setup genisis blocks
2022-05-23 23:53:29 -07:00
Roy Lee
21ad6495b6
[lbry] chaincfg: implement LBRY PoW Hash
2022-05-23 23:53:29 -07:00
Brannon King
dba1eb7261
[lbry] profile: support fgprof (flame graph)
2022-05-23 23:53:29 -07:00
Roy Lee
31d3d9debc
[lbry] wire: increase wire.MaxBlockPayload to 8MB
2022-05-23 23:53:29 -07:00
Roy Lee
abe121ea6e
[lbry] wire: update protocol NetIDs
2022-05-23 21:46:22 -07:00
Brannon King
2c3c4db198
[lbry] wire: optimize binaryFreeList handling
2022-05-23 21:46:22 -07:00
Tomasz Ziolkowski
a8ad257660
reduce redundant memory allocatio - resolves btcsuite/btcd#1699
...
Signed-off-by: Tomasz Ziolkowski <tomasz.ziolkowski@allegro.pl>
2022-05-23 21:46:22 -07:00
Calvin Kim
40dab558f6
go.mod, go.sum: Update goleveldb
...
Goleveldb recently had a PR in where memory allocation was reduced
drastically (github.com/syndtr/goleveldb/pull/367). Update goleveldb
to use that PR.
2022-05-23 21:46:22 -07:00
Dave Collins
42310f6948
txscript: Make op callbacks take opcode and data.
...
This converts the callback function defined on the internal opcode
struct to accept the opcode and data slice instead of a parsed opcode as
the final step towards removing the parsed opcode struct and associated
supporting code altogether.
It also updates all of the callbacks and tests accordingly and finally
removes the now unused parsedOpcode struct.
The final results for the raw script analysis and tokenizer
optimizations are as follows:
benchmark old ns/op new ns/op delta
BenchmarkIsPayToScriptHash-8 62393 0.51 -100.00%
BenchmarkIsPubKeyHashScript-8 62228 0.56 -100.00%
BenchmarkGetSigOpCount-8 61051 658 -98.92%
BenchmarkExtractPkScriptAddrsLarge-8 60713 17.2 -99.97%
BenchmarkExtractPkScriptAddrs-8 289 17.9 -93.81%
BenchmarkIsWitnessPubKeyHash-8 61688 0.42 -100.00%
BenchmarkIsUnspendable-8 656 520 -20.73%
BenchmarkExtractAtomicSwapDataPushesLarge-8 61332 44.0 -99.93%
BenchmarkExtractAtomicSwapDataPushes-8 990 260 -73.74%
BenchmarkDisasmString-8 102902 39754 -61.37%
BenchmarkGetPreciseSigOpCount-8 130223 715 -99.45%
BenchmarkScriptParsing-8 63464 681 -98.93%
BenchmarkIsMultisigScriptLarge-8 64166 5.83 -99.99%
BenchmarkIsMultisigScript-8 630 58.5 -90.71%
BenchmarkPushedData-8 64837 1779 -97.26%
BenchmarkCalcSigHash-8 3627895 3605459 -0.62%
BenchmarkIsPubKeyScript-8 62323 2.83 -100.00%
BenchmarkIsPushOnlyScript-8 62412 569 -99.09%
BenchmarkIsWitnessScriptHash-8 61243 0.56 -100.00%
BenchmarkGetScriptClass-8 61515 16.4 -99.97%
BenchmarkIsNullDataScript-8 62495 2.53 -100.00%
BenchmarkIsMultisigSigScriptLarge-8 69328 2.52 -100.00%
BenchmarkIsMultisigSigScript-8 2375 141 -94.06%
BenchmarkGetWitnessSigOpCountP2WKH-8 504 72.0 -85.71%
BenchmarkGetWitnessSigOpCountNested-8 1158 136 -88.26%
BenchmarkIsWitnessPubKeyHash-8 68927 0.53 -100.00%
BenchmarkIsWitnessScriptHash-8 62774 0.63 -100.00%
benchmark old allocs new allocs delta
BenchmarkIsPayToScriptHash-8 1 0 -100.00%
BenchmarkIsPubKeyHashScript-8 1 0 -100.00%
BenchmarkGetSigOpCount-8 1 0 -100.00%
BenchmarkExtractPkScriptAddrsLarge-8 1 0 -100.00%
BenchmarkExtractPkScriptAddrs-8 1 0 -100.00%
BenchmarkIsWitnessPubKeyHash-8 1 0 -100.00%
BenchmarkIsUnspendable-8 1 0 -100.00%
BenchmarkExtractAtomicSwapDataPushesLarge-8 1 0 -100.00%
BenchmarkExtractAtomicSwapDataPushes-8 2 1 -50.00%
BenchmarkDisasmString-8 46 51 +10.87%
BenchmarkGetPreciseSigOpCount-8 3 0 -100.00%
BenchmarkScriptParsing-8 1 0 -100.00%
BenchmarkIsMultisigScriptLarge-8 1 0 -100.00%
BenchmarkIsMultisigScript-8 1 0 -100.00%
BenchmarkPushedData-8 7 6 -14.29%
BenchmarkCalcSigHash-8 1335 712 -46.67%
BenchmarkIsPubKeyScript-8 1 0 -100.00%
BenchmarkIsPushOnlyScript-8 1 0 -100.00%
BenchmarkIsWitnessScriptHash-8 1 0 -100.00%
BenchmarkGetScriptClass-8 1 0 -100.00%
BenchmarkIsNullDataScript-8 1 0 -100.00%
BenchmarkIsMultisigSigScriptLarge-8 5 0 -100.00%
BenchmarkIsMultisigSigScript-8 3 0 -100.00%
BenchmarkGetWitnessSigOpCountP2WKH-8 2 0 -100.00%
BenchmarkGetWitnessSigOpCountNested-8 4 0 -100.00%
BenchmarkIsWitnessPubKeyHash-8 1 0 -100.00%
BenchmarkIsWitnessScriptHash-8 1 0 -100.00%
benchmark old bytes new bytes delta
BenchmarkIsPayToScriptHash-8 311299 0 -100.00%
BenchmarkIsPubKeyHashScript-8 311299 0 -100.00%
BenchmarkGetSigOpCount-8 311299 0 -100.00%
BenchmarkExtractPkScriptAddrsLarge-8 311299 0 -100.00%
BenchmarkExtractPkScriptAddrs-8 768 0 -100.00%
BenchmarkIsWitnessPubKeyHash-8 311299 0 -100.00%
BenchmarkIsUnspendable-8 1 0 -100.00%
BenchmarkExtractAtomicSwapDataPushesLarge-8 311299 0 -100.00%
BenchmarkExtractAtomicSwapDataPushes-8 3168 96 -96.97%
BenchmarkDisasmString-8 389324 130552 -66.47%
BenchmarkGetPreciseSigOpCount-8 623367 0 -100.00%
BenchmarkScriptParsing-8 311299 0 -100.00%
BenchmarkIsMultisigScriptLarge-8 311299 0 -100.00%
BenchmarkIsMultisigScript-8 2304 0 -100.00%
BenchmarkPushedData-8 312816 1520 -99.51%
BenchmarkCalcSigHash-8 1373812 1290507 -6.06%
BenchmarkIsPubKeyScript-8 311299 0 -100.00%
BenchmarkIsPushOnlyScript-8 311299 0 -100.00%
BenchmarkIsWitnessScriptHash-8 311299 0 -100.00%
BenchmarkGetScriptClass-8 311299 0 -100.00%
BenchmarkIsNullDataScript-8 311299 0 -100.00%
BenchmarkIsMultisigSigScriptLarge-8 330035 0 -100.00%
BenchmarkIsMultisigSigScript-8 9472 0 -100.00%
BenchmarkGetWitnessSigOpCountP2WKH-8 1408 0 -100.00%
BenchmarkGetWitnessSigOpCountNested-8 3200 0 -100.00%
BenchmarkIsWitnessPubKeyHash-8 311299 0 -100.00%
BenchmarkIsWitnessScriptHash-8 311299 0 -100.00%
2022-05-23 21:46:22 -07:00
Dave Collins
7358671e83
txscript: Make executeOpcode take opcode and data.
...
This converts the executeOpcode function defined on the engine to accept
an opcode and data slice instead of a parsed opcode as a step towards
removing the parsed opcode struct and associated supporting code altogether.
It also updates all callers accordingly.
2022-05-23 21:46:21 -07:00
Dave Collins
6f3f4c1b8c
txscript: Remove unused parseScriptTemplate func.
...
Also remove tests associated with the func accordingly.
2022-05-23 21:46:21 -07:00
Dave Collins
4bbfd2413c
txscript: Remove unused parsedOpcode.bytes func.
2022-05-23 21:46:21 -07:00
Dave Collins
849873675f
txscript: Remove unused unparseScript func.
...
Also remove tests associated with unparsing opcodes accordingly.
2022-05-23 21:46:21 -07:00
Conner Fromknecht
82e02951dc
txscript: Remove unused calcWitnessSignatureHash
2022-05-23 21:46:21 -07:00
Dave Collins
08a53b25fb
txscript: Remove unused parseScript func.
2022-05-23 21:46:21 -07:00
Conner Fromknecht
8588536586
txscript/pkscript: Use finalOpcodeData to extract redeem script
2022-05-23 21:46:21 -07:00
Conner Fromknecht
e84398d21e
txscript/sign: Use calcWitnessSigHashRaw for witness sigs
2022-05-23 21:46:21 -07:00
Conner Fromknecht
b40859ff00
txscript: Rename calcSignatureHashRaw
2022-05-23 21:46:21 -07:00
Dave Collins
9d1d6d59a6
txscript: Rename removeOpcodeByDataRaw func.
...
This renames the removeOpcodeByDataRaw to removeOpcodeByData now that
the old version has been removed.
2022-05-23 21:46:21 -07:00
Dave Collins
64aeab7882
txscript: Remove unused removeOpcodeByData func.
2022-05-23 21:46:21 -07:00
Conner Fromknecht
aa1014c87b
txscript: Remove unused isWitnessProgram
2022-05-23 21:46:21 -07:00
Conner Fromknecht
bd07a2580e
txscript: Remove unused calcSignatureHash
2022-05-23 21:46:21 -07:00
Dave Collins
b871286f98
txscript: Refactor engine to use raw scripts.
...
This refactors the script engine to store and step through raw scripts
by making using of the new zero-allocation script tokenizer as opposed
to the less efficient method of storing and stepping through parsed
opcodes. It also improves several aspects while refactoring such as
optimizing the disassembly trace, showing all scripts in the trace in
the case of execution failure, and providing additional comments
describing the purpose of each field in the engine.
It should be noted that this is a step towards removing the parsed
opcode struct and associated supporting code altogether, however, in
order to ease the review process, this retains the struct and all
function signatures for opcode execution which make use of an individual
parsed opcode. Those will be updated in future commits.
The following is an overview of the changes:
- Modify internal engine scripts slice to use raw scripts instead of
parsed opcodes
- Introduce a tokenizer to the engine to track the current script
- Remove no longer needed script offset parameter from the engine since
that is tracked by the tokenizer
- Add an opcode index counter for disassembly purposes to the engine
- Update check for valid program counter to only consider the script
index
- Update tests for bad program counter accordingly
- Rework the NewEngine function
- Store the raw scripts
- Setup the initial tokenizer
- Explicitly check against version 0 instead of DefaultScriptVersion
which would break consensus if changed
- Check the scripts parse according to version 0 semantics to retain
current consensus rules
- Improve comments throughout
- Rework the Step function
- Use the tokenizer and raw scripts
- Create a parsed opcode on the fly for now to retain existing
opcode execution function signatures
- Improve comments throughout
- Update the Execute function
- Explicitly check against version 0 instead of DefaultScriptVersion
which would break consensus if changed
- Improve the disassembly tracing in the case of error
- Update the CheckErrorCondition function
- Modify clean stack error message to make sense in all cases
- Improve the comments
- Update the DisasmPC and DisasmScript functions on the engine
- Use the tokenizer
- Optimize construction via the use of strings.Builder
- Modify the subScript function to return the raw script bytes since the
parsed opcodes are no longer stored
- Update the various signature checking opcodes to use the raw opcode
data removal and signature hash calculation functions since the
subscript is now a raw script
- opcodeCheckSig
- opcodeCheckMultiSig
- opcodeCheckSigAlt
2022-05-23 21:46:21 -07:00
Dave Collins
6198f45307
txscript: Convert to use non-parsed opcode disasm.
...
This converts the engine's current program counter disasembly to make
use of the standalone disassembly function to remove the dependency on
the parsed opcode struct.
It also updates the tests accordingly.
2022-05-23 21:46:21 -07:00