mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-17 13:07:54 +02:00
Merge branch 'master' into elem-23.3.0rc4
This commit is contained in:
commit
69b18d4bef
36 changed files with 915 additions and 74 deletions
|
|
@ -29,7 +29,7 @@ don't have test cases for.
|
|||
- Avoid wildcard imports
|
||||
- Use a module-level docstring to describe what the test is testing, and how it
|
||||
is testing it.
|
||||
- When subclassing the BitcoinTestFramwork, place overrides for the
|
||||
- When subclassing the BitcoinTestFramework, place overrides for the
|
||||
`set_test_params()`, `add_options()` and `setup_xxxx()` methods at the top of
|
||||
the subclass, then locally-defined helper methods, then the `run_test()` method.
|
||||
- Use `'{}'.format(x)` for string formatting, not `'%s' % x`.
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ class BlockSignTest(BitcoinTestFramework):
|
|||
result = miner.combineblocksigs(block, sigs, self.witnessScript)
|
||||
sigs = sigs + self.nodes[i].signblock(block, self.witnessScript)
|
||||
assert_equal(result["complete"], i >= self.required_signers)
|
||||
# submitting should have no effect pre-threshhold
|
||||
# submitting should have no effect pre-threshold
|
||||
if i < self.required_signers:
|
||||
miner.submitblock(result["hex"])
|
||||
self.check_height(blockcount)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -290,7 +290,7 @@ class TapHashPeginTest(BitcoinTestFramework):
|
|||
|
||||
# Test introspection opcodes
|
||||
# 1a. No Pegins/issuances
|
||||
self.log.info("Instrospection tests: outpoint flag")
|
||||
self.log.info("Introspection tests: outpoint flag")
|
||||
self.tapscript_satisfy_test(CScript([OP_0, OP_INSPECTINPUTOUTPOINT, b'\x00', OP_EQUALVERIFY, OP_DROP, OP_DROP, OP_1]))
|
||||
# 1b. Add a pegin (Test pegin input must be 0x40)
|
||||
self.tapscript_satisfy_test(CScript([OP_0, OP_INSPECTINPUTOUTPOINT, b'\x40', OP_EQUALVERIFY, OP_DROP, OP_DROP, OP_1]), add_pegin=True)
|
||||
|
|
@ -304,7 +304,7 @@ class TapHashPeginTest(BitcoinTestFramework):
|
|||
self.tapscript_satisfy_test(CScript([OP_0, OP_INSPECTINPUTOUTPOINT, b'\x00', OP_EQUALVERIFY, OP_DROP, OP_DROP, OP_1]), add_pegin = True, add_issuance=True, fail="Script failed an OP_EQUALVERIFY operation")
|
||||
|
||||
# Test opcode for inspecting prev tx
|
||||
self.log.info("Instrospection tests: inputs")
|
||||
self.log.info("Introspection tests: inputs")
|
||||
self.tapscript_satisfy_test(CScript([OP_0, OP_INSPECTINPUTOUTPOINT, b'\x00', OP_EQUALVERIFY, OP_TOALTSTACK, OP_EQUALVERIFY, OP_FROMALTSTACK, OP_EQUAL]), add_prevout=True)
|
||||
|
||||
# Test taproot asset with blinding.
|
||||
|
|
@ -351,12 +351,12 @@ class TapHashPeginTest(BitcoinTestFramework):
|
|||
self.tapscript_satisfy_test(CScript([-1, OP_1, OP_INSPECTINPUTVALUE, OP_FALSE, OP_EQUAL]), fail="Introspection index out of bounds")
|
||||
|
||||
# Test current input
|
||||
self.log.info("Instrospection tests: current input index")
|
||||
self.log.info("Introspection tests: current input index")
|
||||
self.tapscript_satisfy_test(CScript([OP_PUSHCURRENTINPUTINDEX, OP_0, OP_EQUAL]))
|
||||
self.tapscript_satisfy_test(CScript([OP_PUSHCURRENTINPUTINDEX, OP_1, OP_EQUAL]), fail="Script evaluated without error but finished with a false/empty top stack element")
|
||||
|
||||
# Test Outputs
|
||||
self.log.info("Instrospection tests: outputs")
|
||||
self.log.info("Introspection tests: outputs")
|
||||
for blind in [True, False]:
|
||||
for out_pos in [0, 1]:
|
||||
self.tapscript_satisfy_test(CScript([out_pos, OP_INSPECTOUTPUTASSET, OP_TOALTSTACK, OP_EQUALVERIFY, OP_FROMALTSTACK, OP_EQUAL]), blind=blind, add_out_asset=out_pos)
|
||||
|
|
@ -368,8 +368,8 @@ class TapHashPeginTest(BitcoinTestFramework):
|
|||
self.tapscript_satisfy_test(CScript([120, OP_INSPECTOUTPUTASSET, OP_FALSE, OP_EQUAL]), fail="Introspection index out of bounds")
|
||||
self.tapscript_satisfy_test(CScript([-1, OP_INSPECTOUTPUTVALUE, OP_FALSE, OP_EQUAL]), fail="Introspection index out of bounds")
|
||||
|
||||
# Finally, check the tx instrospection
|
||||
self.log.info("Instrospection tests: tx")
|
||||
# Finally, check the tx introspection
|
||||
self.log.info("Introspection tests: tx")
|
||||
# Test version equality
|
||||
self.tapscript_satisfy_test(CScript([OP_INSPECTVERSION, int(2).to_bytes(4, 'little'), OP_EQUAL]), ver = 2)
|
||||
self.tapscript_satisfy_test(CScript([OP_INSPECTVERSION, int(5).to_bytes(4, 'little'), OP_EQUAL]), ver = 2, fail="Script evaluated without error but finished with a false/empty top stack element")
|
||||
|
|
|
|||
|
|
@ -261,6 +261,10 @@ class PSBTTest(BitcoinTestFramework):
|
|||
decoded = self.nodes[1].decodepsbt(walletsignpsbt_out['psbt'])
|
||||
assert 'non_witness_utxo' in decoded['inputs'][0]
|
||||
assert 'witness_utxo' in decoded['inputs'][0]
|
||||
if 'asset' in decoded['inputs'][0]['witness_utxo']:
|
||||
assert_equal(decoded['inputs'][0]['witness_utxo']['asset'], 'b2e15d0d7a0c94e4e2ce0fe6e8691b9e451377f6e46e8045a86f7c4b5d4f0f23')
|
||||
else:
|
||||
assert 'assetcommitment' in decoded['inputs'][0]['witness_utxo']
|
||||
# Check decodepsbt fee calculation (input values shall only be counted once per UTXO)
|
||||
#assert_equal(decoded['fee'], created_psbt['fee']) # ELEMENTS: we do not have this field. Should be fixed by #900
|
||||
assert_equal(walletsignpsbt_out['complete'], True)
|
||||
|
|
|
|||
|
|
@ -29,3 +29,4 @@ xwindows
|
|||
te
|
||||
ligh
|
||||
atack
|
||||
lsat
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ if ! command -v codespell > /dev/null; then
|
|||
fi
|
||||
|
||||
IGNORE_WORDS_FILE=test/lint/lint-spelling.ignore-words.txt
|
||||
mapfile -t FILES < <(git ls-files -- ":(exclude)build-aux/m4/" ":(exclude)contrib/seeds/*.txt" ":(exclude)depends/" ":(exclude)doc/release-notes/" ":(exclude)src/leveldb/" ":(exclude)src/crc32c/" ":(exclude)src/qt/locale/" ":(exclude)src/qt/*.qrc" ":(exclude)src/secp256k1/" ":(exclude)src/minisketch/" ":(exclude)src/univalue/" ":(exclude)contrib/builder-keys/keys.txt" ":(exclude)contrib/guix/patches")
|
||||
mapfile -t FILES < <(git ls-files -- ":(exclude)build-aux/m4/" ":(exclude)contrib/seeds/*.txt" ":(exclude)depends/" ":(exclude)doc/release-notes/" ":(exclude)src/leveldb/" ":(exclude)src/crc32c/" ":(exclude)src/qt/locale/" ":(exclude)src/qt/*.qrc" ":(exclude)src/secp256k1/" ":(exclude)src/minisketch/" ":(exclude)src/univalue/" ":(exclude)contrib/builder-keys/keys.txt" ":(exclude)contrib/guix/patches") ":(exclude)src/simplicity/"
|
||||
if ! codespell --check-filenames --disable-colors --quiet-level=7 --ignore-words=${IGNORE_WORDS_FILE} "${FILES[@]}"; then
|
||||
echo "^ Warning: codespell identified likely spelling errors. Any false positives? Add them to the list of ignored words in ${IGNORE_WORDS_FILE}"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
# -fsanitize=undefined suppressions
|
||||
# =================================
|
||||
# This would be `signed-integer-overflow:CTxMemPool::PrioritiseTransaction`,
|
||||
# The suppressions would be `sanitize-type:ClassName::MethodName`,
|
||||
# however due to a bug in clang the symbolizer is disabled and thus no symbol
|
||||
# names can be used.
|
||||
# See https://github.com/google/sanitizers/issues/1364
|
||||
signed-integer-overflow:txmempool.cpp
|
||||
|
||||
# https://github.com/bitcoin/bitcoin/pull/21798#issuecomment-829180719
|
||||
signed-integer-overflow:policy/feerate.cpp
|
||||
|
||||
|
|
@ -79,5 +79,24 @@ implicit-integer-sign-change:blech32.cpp
|
|||
implicit-integer-sign-change:primitives/block.h
|
||||
implicit-integer-sign-change:primitives/confidential.cpp
|
||||
implicit-integer-sign-change:primitives/confidential.h
|
||||
shift-base:simplicity/jets.c
|
||||
unsigned-integer-overflow:simplicity/jets.c
|
||||
implicit-unsigned-integer-truncation:simplicity/jets.c
|
||||
shift-base:simplicity/sha256.c
|
||||
unsigned-integer-overflow:simplicity/sha256.c
|
||||
unsigned-integer-overflow:simplicity/secp256k1/modinv64_impl.h
|
||||
implicit-integer-sign-change:simplicity/secp256k1/modinv64_impl.h
|
||||
implicit-unsigned-integer-truncation:simplicity/secp256k1/modinv64_impl.h
|
||||
shift-base:simplicity/secp256k1/modinv64_impl.h
|
||||
shift-base:simplicity/secp256k1/field_5x52_impl.h
|
||||
unsigned-integer-overflow:simplicity/secp256k1/field_5x52_impl.h
|
||||
shift-base:simplicity/secp256k1/scalar_4x64_impl.h
|
||||
implicit-unsigned-integer-truncation:simplicity/secp256k1/scalar_4x64_impl.h
|
||||
unsigned-integer-overflow:simplicity/secp256k1/scalar_4x64_impl.h
|
||||
# This one, in secp256k1_ge_table_set_globalz, looks dangerous (len - 1 with
|
||||
# len = 0) but is ok since the rest of the function is guarded on len > 0.
|
||||
unsigned-integer-overflow:simplicity/secp256k1/group_impl.h
|
||||
# This one involves careful roconnor code
|
||||
shift-base:simplicity/frame.c
|
||||
# See comment in simplicity/primitive/elements/env.c line 303
|
||||
unsigned-integer-overflow:simplicity/primitive/elements/env.c
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue