The first transaction was failing with bad-txns-inputs-missingorspent
because the "input" selected with fundrawtransaction was the
anyonecanspend initialfreecoins.
Fixed by first spending the initialfreecoins to "real" outputs.
The first transaction from create_taproot_utxo was failing with
bad-txns-inputs-missingorspent because the "input" selected with
fundrawtransaction was the anyonecanspend initialfreecoins.
Fixed by first spending the initialfreecoins to "real" outputs.
Adds a functional test to cover the issue uncovered in #1259, where
calling fundrawtransaction with many non-policy inputs and no policy
recipients results in an assertion failure and a crash.
Fixed in #1258.
(cherry picked from commit a8b0ed6f96)
Fixes https://github.com/ElementsProject/elements/issues/1263
When not running in Elements mode, GetValidFedpegScripts returns an
empty vector. Subsequently `calculate_contract` is called with
`fedpegscripts.front().second` which is a null reference. This reference
is passed into `MatchLiquidWatchman` which tries to dereference the null
reference and causes a segfault.
This fix throws an exception in `getpeginaddress` if fedpegscripts is
empty, returning an error to the RPC caller. It also adds a functional
regression test.
In the "macOS 13 native arm64 [gui, sqlite only]" CI task, the
test_runner defaults to descriptor wallets, causing some Elements
specific tests to fail.
This commit explicitly runs those tests with `--legacy-wallet`.
We comment out a newly-added assert from the Bitcoin
side, because it's unclear how to replicate it
correctly in Elements.
Co-authored-by: Glenn Willen <gwillen@nerdnet.org>
The Elements 22 blinding logic has an edge case where when we drop change,
leaving only a single blinded output, we recompute a bunch of blinding
data to handle the potential for us to have 0 inputs and 1 output to blind.
(BlindTransaction will fail in this case because it cannot make the
transaction balance with only one output to mess with.)
In this recomputation, we dropped more data than we meant to, causing us
to incorrectly blind an output.
Modifies the getnewblockhex json rpc call to accept an array of
commitments instead of a single commitment.
Backwards compatibility is maintained by first attempting to parse as a
string for a singular commitment.