0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-06 10:18:44 -05:00
Commit graph

31 commits

Author SHA1 Message Date
MarcoFalke
fa6842978d
fuzz: Speed up script fuzz target 2022-01-27 15:38:59 +01:00
MarcoFalke
fa00447442
scripted-diff: Use clang-tidy syntax for C++ named arguments
-BEGIN VERIFY SCRIPT-
 perl -0777 -pi -e 's:((\(|\{|,)(\n| )*)\/\* ?([^=* ]+) ?\*\/ ?:\1/*\4=*/:g' $( git ls-files ./src/test ./src/wallet/test )
-END VERIFY SCRIPT-
2021-11-19 12:41:47 +01:00
MarcoFalke
fa4baf0756
fuzz: Rework ConsumeScript
This should make it easier for the fuzz engine to explore multisig code
paths. See discussion in https://github.com/bitcoin/bitcoin/issues/23105

The downside is that all fuzz inputs that use ConsumeScript are now
invalidated and need to be re-generated.

Another downside may be that most multisig scripts from ConsumeScript are
using likely not fully valid pubkeys.
2021-11-01 12:25:29 +01:00
Michael Dietz
d64deac7b8
refactor: share logic between ScriptPubKeyToUniv and ScriptToUniv 2021-09-24 14:22:53 -05:00
Michael Dietz
8721638daa
rpc: remove deprecated addresses and reqSigs from rpc outputs 2021-09-24 14:22:49 -05:00
MarcoFalke
fabf17056c
fuzz: Move CTxDestination fuzzing to script fuzz target
No need to split it over several targets
2021-07-04 21:30:50 +02:00
MarcoFalke
fa42800a51
fuzz: Simplify CTxDestination fuzzing in the script target
The WitnessUnknown operators == and < are already called indirectly by
the corresponding CTxDestination operators.
2021-07-04 21:29:56 +02:00
MarcoFalke
4cfe6c37d9
Merge bitcoin/bitcoin#18847: compressor: use a prevector in CompressScript serialization [ZAP1]
83a425d25a compressor: use a prevector in compressed script serialization (William Casarin)

Pull request description:

  This function was doing millions of unnecessary heap allocations during IBD.

  I'm start to catalog unnecessary heap allocations as a pet project of mine: as-zero-as-possible-alloc IBD. This is one small step.

  before:
  ![May01-174536](https://user-images.githubusercontent.com/45598/80850964-9a38de80-8bd3-11ea-8eec-08cd38ee1fa1.png)

  after:
  ![May01-174610](https://user-images.githubusercontent.com/45598/80850974-a91f9100-8bd3-11ea-94a1-e2077391f6f4.png)

  ~should I type alias this?~ *I type aliased it*

  This is a part of the Zero Allocations Project #18849 (ZAP1). This code came up as a place where many allocations occur.

ACKs for top commit:
  Empact:
    ACK 83a425d25a
  elichai:
    tACK 83a425d25a
  sipa:
    utACK 83a425d25a

Tree-SHA512: f0ffa6ab0ea1632715b0b76362753f9f6935f05cdcc80d85566774401155a3c57ad45a687942a1806d3503858f0bb698da9243746c8e2edb8fdf13611235b0e0
2021-04-28 21:13:44 +02:00
MarcoFalke
549d20a31b
Merge bitcoin/bitcoin#20772: fuzz: bolster ExtractDestination(s) checks
a29f522ba4 fuzz: bolster ExtractDestination(s) checks (Michael Dietz)

Pull request description:

ACKs for top commit:
  practicalswift:
    Tested ACK a29f522ba4

Tree-SHA512: 0fc194edb7b0fce77c7bb725fe65dec7976598edcd53882b5a0eb7cd83281a3ddcd2b3de00282468be659a7e5bc9991eb482816418f55b30e657cdc5a3bd7438
2021-04-28 11:02:25 +02:00
Michael Dietz
085b3a7299
rpc: deprecate addresses and reqSigs from rpc outputs
1) add a new sane "address" field (for outputs that have an
   identifiable address, which doesn't include bare multisig)
2) with -deprecatedrpc: leave "reqSigs" and "addresses" intact
   (with all weird/wrong behavior they have now)
3) without -deprecatedrpc: drop "reqSigs" and "addresses" entirely,
   always.
2021-03-23 10:51:43 -04:00
fanquake
3ba2840e7e
scripted-diff: remove MakeUnique<T>()
-BEGIN VERIFY SCRIPT-
git rm src/util/memory.h
sed -i -e 's/MakeUnique/std::make_unique/g' $(git grep -l MakeUnique src)
sed -i -e '/#include <util\/memory.h>/d' $(git grep -l '#include <util/memory.h>' src)
sed -i -e '/util\/memory.h \\/d' src/Makefile.am
-END VERIFY SCRIPT-
2021-03-11 13:45:14 +08:00
MarcoFalke
fae216a73d
scripted-diff: Rename MakeFuzzingContext to MakeNoLogFileContext
-BEGIN VERIFY SCRIPT-
 # Rename
 sed -i -e 's/MakeFuzzingContext/MakeNoLogFileContext/g' $(git grep -l MakeFuzzingContext)
 # Bump the copyright of touched files in this scripted diff to avoid touching them again later
 ./contrib/devtools/copyright_header.py update ./src/test/fuzz/
-END VERIFY SCRIPT-
2021-02-22 10:27:22 +01:00
practicalswift
58232e3ffb fuzz: Avoid -fsanitize=integer warnings in fuzzing harnesses 2021-01-25 20:55:36 +00:00
Michael Dietz
a29f522ba4
fuzz: bolster ExtractDestination(s) checks 2021-01-03 11:38:19 -06:00
Michael Dietz
efaf80e9bb
fuzz: check that certain script TxoutType are nonstandard 2020-12-28 19:31:23 -06:00
MarcoFalke
fa26303286
fuzz: Check that NULL_DATA is unspendable 2020-12-24 14:16:59 +01:00
MarcoFalke
44444ba759
fuzz: Link all targets once 2020-12-10 07:15:42 +01:00
MeshCollider
b887060d06 Replace usage of GetScriptForWitness with GetScriptForDestination 2020-08-14 08:44:42 +12:00
Jon Atack
c0f09c2c9d
fuzz: add missing overrides to signature_checker
and also

- add missing parentheses in fuzz/scriptnum_ops.cpp

- remove useless unsigned int conditional in fuzz/script.cpp

These changes fix 5 compile warnings in gcc 10.
2020-07-22 05:27:13 +02:00
MarcoFalke
fa32adf9dc
scripted-diff: TxoutType C++11 scoped enum class
-BEGIN VERIFY SCRIPT-
 # General rename helper: $1 -> $2
 rename_global() { sed -i "s/\<$1\>/$2/g" $(git grep -l "$1"); }

 # Helper to rename TxoutType $1
 rename_value() {
   sed -i "s/    TX_$1,/    $1,/g" src/script/standard.h;  # First strip the prefix in the definition (header)
   rename_global TX_$1 "TxoutType::$1";                    # Then replace globally
 }

 # Change the type globally to bring it in line with the style-guide
 # (clsses are UpperCamelCase)
 rename_global 'enum txnouttype' 'enum class TxoutType'
 rename_global      'txnouttype'            'TxoutType'

 # Now rename each enum value
 rename_value 'NONSTANDARD'
 rename_value 'PUBKEY'
 rename_value 'PUBKEYHASH'
 rename_value 'SCRIPTHASH'
 rename_value 'MULTISIG'
 rename_value 'NULL_DATA'
 rename_value 'WITNESS_V0_KEYHASH'
 rename_value 'WITNESS_V0_SCRIPTHASH'
 rename_value 'WITNESS_UNKNOWN'

-END VERIFY SCRIPT-
2020-06-21 06:41:55 -04:00
practicalswift
8de72711c6 tests: Fill fuzzing coverage gaps for functions in script/script.h, script/script_error.h and script/standard.h 2020-05-30 10:37:01 +00:00
William Casarin
83a425d25a compressor: use a prevector in compressed script serialization
Use a prevector for stack allocation instead of heap allocation during
script compression and decompression. These functions were doing
millions of unnecessary heap allocations during IBD.

We introduce a CompressedScript type alias for this prevector. It is
size 33 as that is the maximum size of a compressed script.

Fix the DecompressScript header to match the variable name from
compressor.cpp

Signed-off-by: William Casarin <jb55@jb55.com>
2020-05-15 15:26:54 -07:00
practicalswift
cd34038cbd Switch from Optional<T> to std::optional<T> (C++17). Run clang-format. 2020-05-14 18:52:57 +00:00
MarcoFalke
fa488f131f
scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-
2020-04-16 13:33:09 -04:00
MarcoFalke
fa86edf66d
fuzz: Extend script fuzz test 2020-04-04 01:32:17 +08:00
practicalswift
d3d4892ef4 tests: Simplify code by removing unwarranted use of unique_ptr:s 2020-03-11 12:51:26 +00:00
practicalswift
c2c58f6f59 tests: Increase fuzzing coverage of DecompressScript(...) 2020-03-11 12:51:26 +00:00
practicalswift
516cc6fc78 tests: Remove unit test from fuzzing harness 2020-03-11 11:42:27 +00:00
MarcoFalke
fab0e5ba7f
fuzz: Add assert(script == decompressed_script) 2020-03-07 16:55:34 -05:00
practicalswift
52fed696d2 tests: Fuzz additional functions in the script fuzzing harness 2020-03-07 14:35:49 +00:00
practicalswift
dc2fdb9907 tests: Add fuzzing harness for various CScript related functions 2019-10-25 08:28:13 +00:00