Page MenuHomePhabricator

[chronik, chronik-client, ecash-agora, ecash-lib, cashtab, ecash-herald, token-server, faucet, mock-chronik-client] Improve names of keys and params that expect satoshis and atoms (aka base tokens)
Needs ReviewPublic

Authored by bytesofman on Fri, Feb 7, 22:31.

Details

Reviewers
tobias_ruck
PiRK
Group Reviewers
Restricted Project
Summary

1. Change the "value" key (which stores satoshis as a number) to "sats", which stores satoshis as bigint

The "value" does not really make sense; this is always "satoshis". It's extra confusing as satoshis can look quite close to XEC from a visual check, but in reality a factor of 100 is quite a difference indeed. Although the type "number" is ok, since the supply of satoshis is below JS max safe number, it is nice to use bigint since we then know it should always be an int.

2. Change the "amount" key (which stores base tokens as a string) to "atoms", which stores base tokens as bigint

"amount" is also an ambiguous key. Is it the decimalized amount of a token? or base tokens? what are base tokens anyway? We introduce the term "atoms" to describe the smallest unit of a token. Store as a bigint as this is always an int and also can be larger than JS safest integer. Decimalized amounts are usually a string, so keeping this bigint further distinguishes it from decimalized amounts.

We also update tokenBurnAmount -> tokenBurnAtoms, intentionalBurn -> intentionalBurnAtoms and change their type from string to bigint. We update error msgs to replace "base tokens" with "atoms"

The ecash-agora library uses the term "Token" in many places when instead what is meant is "atoms." We correct this.

We combine the changes here since

  1. These changes are related
  2. Any part of the changes here would itself be a breaking change
  3. CI allows us to confirm a proper implementation

It is not possible to do this incrementally as we need CI to confirm a correct implementation, and breaking changes to the libs must be implemented in the same diff. The diff history here loosely follows "one place at a time" implementation.

Goal here is to improve speed of development going forward. This ambiguity is something I have tripped over often in building apps, esp implementing ecash-agora in Cashtab (token vs base tokens, satoshis, nanosatoshis per token actually is nanosatoshis per atom, etc).

Looking to get this in before getting a strongly typed wallet library into the monorepo, which will be implemented in Cashtab to get rid of...a lot of spaghetti supporting tx building and wallet mgmt / migrations.

Note: not implemented in the Rust analogue to chronik-client. It should be implemented there as well. I'm not sure what our progress is like on getting that lib into the monorepo.

Test Plan

judgment call on the new names and definitions, CI

Cashtab migration can be tested in prod-like env at https://cashtab-local-dev.netlify.app/

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Partial review up to and including ecash-agora (just a comment nit)

I'm still trying to make sense of all the implications of this API change. The fact that we are soon going to bump the major Bitcoin ABC version and that this affects the chronik messages means that it is going to be a mandatory API change for all users within 3 or 9 months (depending whether this land before Bticoin ABC 0.31.0 of after). Anyone depending on our chronik instances will have to upgrade at the same time as we upgrade the node (and chronik).

As you mentioned above, for now the ecosystem is still kind of small and we can communicate with all the users, so this kind of breaking change is best done ASAP, but I just want to make sure the implications are clear.

chronik/chronik-db/src/mem/tokens.rs
498 ↗(On Diff #52612)
PiRK requested changes to this revision.EditedSun, Feb 16, 08:11

I was wrong in my previous comment, changing the name of fields in protobuf files does not break compatibility for clients of Chronik.

Code look good, but please rebase on latest master and check chronik/chronik-http/src/electrum.rs. There are probably a few new lines with .value that need converting to .stats (see D17605 and D17664)
And maybe remove the console.log(...) unless you really want it to be there for logging purposes?

diff --git a/chronik/chronik-http/src/electrum.rs b/chronik/chronik-http/src/electrum.rs
index 2dbb2b3951..ae763d1e5a 100644
--- a/chronik/chronik-http/src/electrum.rs
+++ b/chronik/chronik-http/src/electrum.rs
@@ -374,9 +374,9 @@ fn get_scripthash_balance(
                 continue;
             }
             if is_mempool {
-                unconfirmed += outp.value;
+                unconfirmed += outp.sats;
             } else {
-                confirmed += outp.value;
+                confirmed += outp.sats;
             }
         }
         for inp in tx.inputs.iter() {
@@ -384,9 +384,9 @@ fn get_scripthash_balance(
                 continue;
             }
             if is_mempool {
-                unconfirmed -= inp.value;
+                unconfirmed -= inp.sats;
             } else {
-                confirmed -= inp.value;
+                confirmed -= inp.sats;
             }
         }
     }
@@ -396,10 +396,10 @@ fn get_scripthash_balance(
 fn get_tx_fee(tx: &Tx) -> i64 {
     let mut fee: i64 = 0;
     for inp in tx.inputs.iter() {
-        fee += inp.value;
+        fee += inp.sats;
     }
     for outp in tx.outputs.iter() {
-        fee -= outp.value;
+        fee -= outp.sats;
     }
     fee
 }
This revision now requires changes to proceed.Sun, Feb 16, 08:11
bytesofman marked 8 inline comments as done.

rebase, remove debug logs, remove duplicated branch in cashtab wallet migration, revert unrelated lint change in Configure.test.js

Tail of the build log:

    |
389 |                 confirmed -= inp.value;
    |                                  ^^^^^ unknown field
    |
    = note: available fields are: `prev_out`, `input_script`, `output_script`, `sats`, `sequence_no` ... and 2 others

error[E0609]: no field `value` on type `&chronik_proto::proto::TxInput`
   --> chronik/chronik-http/src/electrum.rs:399:20
    |
399 |         fee += inp.value;
    |                    ^^^^^ unknown field
    |
    = note: available fields are: `prev_out`, `input_script`, `output_script`, `sats`, `sequence_no` ... and 2 others

error[E0609]: no field `value` on type `&chronik_proto::proto::TxOutput`
   --> chronik/chronik-http/src/electrum.rs:402:21
    |
402 |         fee -= outp.value;
    |                     ^^^^^ unknown field
    |
    = note: available fields are: `sats`, `output_script`, `spent_by`, `token`, `plugins`

For more information about this error, try `rustc --explain E0609`.
error: could not compile `chronik-http` (lib) due to 7 previous errors
warning: build failed, waiting for other jobs to finish...
[7/8] cd /work && /usr/bin/cmake -E env CARGO_TARGET_DIR="/work/abc-ci-builds/build-chronik/cargo/build" CARGO_BUILD_RUSTC="/root/.rustup/toolchains/1.76.0-x86_64-unknown-linux-gnu/bin/rustc" CARGO_BUILD_RUSTDOC="/root/.cargo/bin/rustdoc" /root/.rustup/toolchains/1.76.0-x86_64-unknown-linux-gnu/bin/cargo --locked clippy --package 'bitcoinsuite-slp' -- -D warnings
warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Checking either v1.13.0
    Checking itertools v0.10.5
    Checking bitcoinsuite-slp v0.1.0 (/work/chronik/bitcoinsuite-slp)
    Finished dev [unoptimized + debuginfo] target(s) in 5m 05s
[8/8] cd /work && /usr/bin/cmake -E env CARGO_TARGET_DIR="/work/abc-ci-builds/build-chronik/cargo/build" CARGO_BUILD_RUSTC="/root/.rustup/toolchains/1.76.0-x86_64-unknown-linux-gnu/bin/rustc" CARGO_BUILD_RUSTDOC="/root/.cargo/bin/rustdoc" /root/.rustup/toolchains/1.76.0-x86_64-unknown-linux-gnu/bin/cargo --locked clippy --package 'abc-rust-*' -- -D warnings
warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Checking memchr v2.7.4
    Checking libc v0.2.167
    Checking bytes v1.9.0
    Checking http v1.2.0
    Checking object v0.32.2
    Checking backtrace v0.3.71
    Checking stable-eyre v0.2.2
    Checking abc-rust-error v0.1.0 (/work/chronik/abc-rust-error)
    Finished dev [unoptimized + debuginfo] target(s) in 5m 07s
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   --> chronik/chronik-http/src/electrum.rs:949:32
    |
949 |                 "value": &utxo.value,
    |                                ^^^^^ unknown field
    |
    = note: available fields are: `outpoint`, `block_height`, `is_coinbase`, `sats`, `is_final` ... and 2 others

error[E0609]: no field `value` on type `&chronik_proto::proto::TxOutput`
   --> chronik/chronik-http/src/electrum.rs:377:37
    |
377 |                 unconfirmed += outp.value;
    |                                     ^^^^^ unknown field
    |
    = note: available fields are: `sats`, `output_script`, `spent_by`, `token`, `plugins`

error[E0609]: no field `value` on type `&chronik_proto::proto::TxOutput`
   --> chronik/chronik-http/src/electrum.rs:379:35
    |
379 |                 confirmed += outp.value;
    |                                   ^^^^^ unknown field
    |
    = note: available fields are: `sats`, `output_script`, `spent_by`, `token`, `plugins`

error[E0609]: no field `value` on type `&chronik_proto::proto::TxInput`
   --> chronik/chronik-http/src/electrum.rs:387:36
    |
387 |                 unconfirmed -= inp.value;
    |                                    ^^^^^ unknown field
    |
    = note: available fields are: `prev_out`, `input_script`, `output_script`, `sats`, `sequence_no` ... and 2 others

error[E0609]: no field `value` on type `&chronik_proto::proto::TxInput`
   --> chronik/chronik-http/src/electrum.rs:389:34
    |
389 |                 confirmed -= inp.value;
    |                                  ^^^^^ unknown field
    |
    = note: available fields are: `prev_out`, `input_script`, `output_script`, `sats`, `sequence_no` ... and 2 others

error[E0609]: no field `value` on type `&chronik_proto::proto::TxInput`
   --> chronik/chronik-http/src/electrum.rs:399:20
    |
399 |         fee += inp.value;
    |                    ^^^^^ unknown field
    |
    = note: available fields are: `prev_out`, `input_script`, `output_script`, `sats`, `sequence_no` ... and 2 others

error[E0609]: no field `value` on type `&chronik_proto::proto::TxOutput`
   --> chronik/chronik-http/src/electrum.rs:402:21
    |
402 |         fee -= outp.value;
    |                     ^^^^^ unknown field
    |
    = note: available fields are: `sats`, `output_script`, `spent_by`, `token`, `plugins`

For more information about this error, try `rustc --explain E0609`.
error: could not compile `chronik-http` (lib) due to 7 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/common/configfile.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/kernel/chainparams.cpp.o
[248/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[250/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[251/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[252/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[255/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[256/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[257/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[258/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[259/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[260/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[261/589] Building CXX object src/CMakeFiles/common.dir/common/args.cpp.o
[262/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[263/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[264/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[265/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[266/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[267/589] Linking C static library src/secp256k1/libsecp256k1.a
[268/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[269/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[270/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[271/589] Linking C executable src/secp256k1/verify-bench
[272/589] Linking C executable src/secp256k1/recover-bench
[273/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[274/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[275/589] Linking C executable src/secp256k1/internal-bench
[276/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[277/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[278/589] Linking C executable src/secp256k1/sign-bench
[279/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[280/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[281/589] Linking C executable src/secp256k1/ecmult-bench
[282/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[283/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[284/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[285/589] Linking CXX static library src/libbitcoinconsensus.a
[286/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[287/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[288/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[289/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[290/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[291/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[292/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[293/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[294/589] Linking CXX static library src/libscript.a
[295/589] Linking CXX static library src/libcommon.a
[296/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[297/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[298/589] Linking CXX executable src/iguana/iguana
[299/589] Linking CXX executable src/bitcoin-cli
[300/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-lib-integration-tests failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/common/args.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[248/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[249/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[251/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[252/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[254/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[255/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[256/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[258/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[259/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[260/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[261/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[262/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[263/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[264/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[265/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[266/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[267/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[268/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[269/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[270/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[271/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[272/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[273/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[274/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[275/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[276/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[277/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[278/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[279/589] Linking C static library src/secp256k1/libsecp256k1.a
[280/589] Linking C executable src/secp256k1/sign-bench
[281/589] Linking C executable src/secp256k1/recover-bench
[282/589] Linking C executable src/secp256k1/verify-bench
[283/589] Linking CXX static library src/libbitcoinconsensus.a
[284/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[285/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[286/589] Linking C executable src/secp256k1/internal-bench
[287/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[288/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[289/589] Linking C executable src/secp256k1/ecmult-bench
[290/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[291/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[292/589] Linking CXX static library src/libscript.a
[293/589] Linking CXX static library src/libcommon.a
[294/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[295/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[296/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[297/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[298/589] Linking CXX executable src/iguana/iguana
[299/589] Linking CXX executable src/bitcoin-cli
[300/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build chronik-client-integration-tests failed with exit code 1

Failed tests logs:

====== CashTab Unit Tests: <Token /> available actions rendered SLP1 fixed supply token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered SLP1 variable supply token with mint baton ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 fungible token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with no NFT Mint inputs, then create some NFT Mint inputs ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with NFT Mint inputs, then mint an NFT ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can render an SLP1 NFT Parent token with a minted NFT in its collection ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 NFT ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can send an SLP1 NFT ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered SLP1 NFT page will update cashtab token cache for the NFT if it does not include groupTokenId, and for its parent if it is not in cache ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We show an agora query error if we cannot get active offers for an NFT token id ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We show an agora oneshot listing for an SLP1 NFT if it is for sale ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered ALP token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can send an ALP token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token with change ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token without change ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can mint max one-output ALP token qty ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an ALP fungible token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can redeem XECX for XEC 1:1 using a workflow unique to XECX ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <SendXec /> ALP Fungible: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1628:67)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <SendXec /> SLP1 NFT Child: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1738:67)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)

Each failure log is accessible here:
CashTab Unit Tests: <Token /> available actions rendered SLP1 fixed supply token
CashTab Unit Tests: <Token /> available actions rendered SLP1 variable supply token with mint baton
CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 fungible token
CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with no NFT Mint inputs, then create some NFT Mint inputs
CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with NFT Mint inputs, then mint an NFT
CashTab Unit Tests: <Token /> available actions rendered We can render an SLP1 NFT Parent token with a minted NFT in its collection
CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 NFT
CashTab Unit Tests: <Token /> available actions rendered We can send an SLP1 NFT
CashTab Unit Tests: <Token /> available actions rendered SLP1 NFT page will update cashtab token cache for the NFT if it does not include groupTokenId, and for its parent if it is not in cache
CashTab Unit Tests: <Token /> available actions rendered We show an agora query error if we cannot get active offers for an NFT token id
CashTab Unit Tests: <Token /> available actions rendered We show an agora oneshot listing for an SLP1 NFT if it is for sale
CashTab Unit Tests: <Token /> available actions rendered ALP token
CashTab Unit Tests: <Token /> available actions rendered We can send an ALP token
CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token with change
CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token without change
CashTab Unit Tests: <Token /> available actions rendered We can mint max one-output ALP token qty
CashTab Unit Tests: <Token /> available actions rendered We can list an ALP fungible token
CashTab Unit Tests: <Token /> available actions rendered We can redeem XECX for XEC 1:1 using a workflow unique to XECX
CashTab Unit Tests: <SendXec /> ALP Fungible: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent
CashTab Unit Tests: <SendXec /> SLP1 NFT Child: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/common/args.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[248/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[250/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[251/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[252/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[254/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[255/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[256/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[258/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[259/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[260/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[261/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[262/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[263/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[264/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[265/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[266/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[267/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[268/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[269/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[270/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[271/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[272/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[273/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[274/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[275/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[276/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[277/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[278/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[279/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[280/589] Linking C static library src/secp256k1/libsecp256k1.a
[281/589] Linking C executable src/secp256k1/recover-bench
[282/589] Linking C executable src/secp256k1/verify-bench
[283/589] Linking C executable src/secp256k1/sign-bench
[284/589] Linking CXX static library src/libbitcoinconsensus.a
[285/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[286/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[287/589] Linking C executable src/secp256k1/internal-bench
[288/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[289/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[290/589] Linking C executable src/secp256k1/ecmult-bench
[291/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[292/589] Linking CXX static library src/libscript.a
[293/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[294/589] Linking CXX static library src/libcommon.a
[295/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[296/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[297/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[298/589] Linking CXX executable src/iguana/iguana
[299/589] Linking CXX executable src/bitcoin-cli
[300/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-agora-integration-tests failed with exit code 1

update types in chronik-http/src/electrum.rs

Failed tests logs:

====== CashTab Unit Tests: <Token /> available actions rendered SLP1 fixed supply token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered SLP1 variable supply token with mint baton ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 fungible token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with no NFT Mint inputs, then create some NFT Mint inputs ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with NFT Mint inputs, then mint an NFT ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can render an SLP1 NFT Parent token with a minted NFT in its collection ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 NFT ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can send an SLP1 NFT ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered SLP1 NFT page will update cashtab token cache for the NFT if it does not include groupTokenId, and for its parent if it is not in cache ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We show an agora query error if we cannot get active offers for an NFT token id ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We show an agora oneshot listing for an SLP1 NFT if it is for sale ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered ALP token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can send an ALP token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token with change ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token without change ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can mint max one-output ALP token qty ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can list an ALP fungible token ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <Token /> available actions rendered We can redeem XECX for XEC 1:1 using a workflow unique to XECX ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:55:61)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusHook (/work/cashtab/node_modules/jest-circus/build/run.js:281:40)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:246:5)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <SendXec /> ALP Fungible: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1628:67)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)
====== CashTab Unit Tests: <SendXec /> SLP1 NFT Child: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent ======
TypeError: Cannot read properties of undefined (reading 'toString')
    at toString (/work/cashtab/src/helpers/index.ts:231:25)
    at scriptUtxoToJson (/work/cashtab/src/helpers/index.ts:450:13)
    at initializeCashtabStateForTests (/work/cashtab/src/components/App/fixtures/helpers.js:49:52)
    at Object.<anonymous> (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1738:67)
    at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10)
    at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40)
    at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9)
    at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9)
    at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3)
    at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
    at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
    at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16)
    at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34)
    at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12)

Each failure log is accessible here:
CashTab Unit Tests: <Token /> available actions rendered SLP1 fixed supply token
CashTab Unit Tests: <Token /> available actions rendered SLP1 variable supply token with mint baton
CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 fungible token
CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with no NFT Mint inputs, then create some NFT Mint inputs
CashTab Unit Tests: <Token /> available actions rendered We can correctly render an SLP1 NFT Parent token with NFT Mint inputs, then mint an NFT
CashTab Unit Tests: <Token /> available actions rendered We can render an SLP1 NFT Parent token with a minted NFT in its collection
CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 NFT
CashTab Unit Tests: <Token /> available actions rendered We can send an SLP1 NFT
CashTab Unit Tests: <Token /> available actions rendered SLP1 NFT page will update cashtab token cache for the NFT if it does not include groupTokenId, and for its parent if it is not in cache
CashTab Unit Tests: <Token /> available actions rendered We show an agora query error if we cannot get active offers for an NFT token id
CashTab Unit Tests: <Token /> available actions rendered We show an agora oneshot listing for an SLP1 NFT if it is for sale
CashTab Unit Tests: <Token /> available actions rendered ALP token
CashTab Unit Tests: <Token /> available actions rendered We can send an ALP token
CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token with change
CashTab Unit Tests: <Token /> available actions rendered We can burn an ALP token without change
CashTab Unit Tests: <Token /> available actions rendered We can mint max one-output ALP token qty
CashTab Unit Tests: <Token /> available actions rendered We can list an ALP fungible token
CashTab Unit Tests: <Token /> available actions rendered We can redeem XECX for XEC 1:1 using a workflow unique to XECX
CashTab Unit Tests: <SendXec /> ALP Fungible: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent
CashTab Unit Tests: <SendXec /> SLP1 NFT Child: Entering a valid bip21 query string for a token send tx will correcty populate the UI, and the tx can be sent

tobias_ruck added inline comments.
chronik/bitcoinsuite-slp/src/alp/parse.rs
286 ↗(On Diff #52681)

et tu?

293 ↗(On Diff #52681)
chronik/bitcoinsuite-slp/src/parsed.rs
53 ↗(On Diff #52681)

don't see why not

chronik/chronik-db/src/plugins/io.rs
621 ↗(On Diff #52681)
modules/chronik-client/tsconfig.json
14 ↗(On Diff #52681)

bigint i assume?

modules/ecash-agora/src/partial.ts
286 ↗(On Diff #52681)

We need to consider renaming this to dustSats (and everywhere else too). Having another major version might not be the way to go.

modules/ecash-lib/src/consts.ts
6 ↗(On Diff #52681)

We might want to consider naming this this way

8 ↗(On Diff #52681)

We might need to consider this (since we do breaking changes anyway...)

This revision now requires changes to proceed.Thu, Feb 20, 19:26
bytesofman added inline comments.
apps/ecash-herald/test/mocks/block.ts
4011–4013 ↗(On Diff #52612)

True -- this is a generated file and the same prettier version is applied here as in CONTRIBUTING. Potentially the last time it was updated there was a different prettier version, or potentially there is some obscure formatting rule related to the new content in the array. Either way, I think it's ok to leave this for now. I am still behind on implementing a pinned prettier for the monorepo.

apps/token-server/src/transactions.ts
24 ↗(On Diff #52612)

see modules/ecash-lib/src/consts.ts

DEFAULT_DUST_LIMIT is now a bigint instead of a number, which is now the required type everywhere. So, we would have needed to change it to 546n here as well, or just use the updated DEFAULT_DUST_LIMIT

but yes, could still have been split. But I think with the type change, makes sense to only update it in one place, have this constant live at the lib level.

Will still need another diff to replace appConfig.dustSats everywhere with this.

cashtab/src/components/App/fixtures/helpers.js
45 ↗(On Diff #52612)

good catch, fixed.

Will need to clean up some of the migration logic in another diff, but that will probably happen with the next "big" migration -- implementing a wallet class instead of Cashtab's customized wallet.

cashtab/src/components/Configure/__tests__/Configure.test.js
10 ↗(On Diff #52612)

it is unrelated. Linter issue that this was missed before.

reverted will handle separately

cashtab/src/transactions/index.js
192 ↗(On Diff #52612)

🎯, removed

modules/chronik-client/tsconfig.json
14 ↗(On Diff #52681)

indeed. We can keep it at 2016 if this is needed for some reason.

modules/ecash-agora/src/partial.ts
286 ↗(On Diff #52681)

good point, might as well do it now

modules/ecash-lib/src/consts.ts
6 ↗(On Diff #52681)

yup this is better

8 ↗(On Diff #52681)

I think this is slightly better, yes. Implemented.

I don't like making something like a tx fee a bigint ... but, with typescript, it is much better to have it always be something. the param does need to unambiguously be a bigint and it is already calculated as a bigint in ecash-lib functions.

bytesofman marked 4 inline comments as done.

update more names, implement

Tail of the build log:

    |                                                      ^^^^^^^ unknown field
    |
    = note: available fields are: `atoms_vec`, `num_batons`

error[E0609]: no field `amounts` on type `&ParsedMintData`
  --> chronik/bitcoinsuite-slp/src/parsed.rs:74:21
   |
74 |         1..1 + self.amounts.len()
   |                     ^^^^^^^ unknown field
   |
   = note: available fields are: `atoms_vec`, `num_batons`

error[E0609]: no field `amounts` on type `&ParsedMintData`
  --> chronik/bitcoinsuite-slp/src/parsed.rs:79:30
   |
79 |         let start = 1 + self.amounts.len();
   |                              ^^^^^^^ unknown field
   |
   = note: available fields are: `atoms_vec`, `num_batons`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/bitcoinsuite-slp/src/slp/genesis.rs:107:17
    |
107 |                 amounts,
    |                 ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
  --> chronik/bitcoinsuite-slp/src/slp/mint.rs:68:13
   |
68 |             amounts,
   |             ^^^^^^^ `ParsedMintData` does not have this field
   |
   = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
  --> chronik/bitcoinsuite-slp/src/slp/mint_vault.rs:78:13
   |
78 |             amounts,
   |             ^^^^^^^ `ParsedMintData` does not have this field
   |
   = note: available fields are: `atoms_vec`

   Compiling crossbeam-utils v0.8.20
error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/bitcoinsuite-slp/src/test_helpers.rs:170:13
    |
170 |             amounts: atoms.into_iter().collect(),
    |             ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

   Compiling icu_collections v1.5.0
Some errors have detailed explanations: E0560, E0609.
For more information about an error, try `rustc --explain E0560`.
error: could not compile `bitcoinsuite-slp` (lib) due to 11 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

    |
428 |             mint_data.amounts_range().zip(&mint_data.amounts)
    |                                                      ^^^^^^^ unknown field
    |
    = note: available fields are: `atoms_vec`, `num_batons`

error[E0609]: no field `amounts` on type `&ParsedMintData`
  --> chronik/bitcoinsuite-slp/src/parsed.rs:74:21
   |
74 |         1..1 + self.amounts.len()
   |                     ^^^^^^^ unknown field
   |
   = note: available fields are: `atoms_vec`, `num_batons`

error[E0609]: no field `amounts` on type `&ParsedMintData`
  --> chronik/bitcoinsuite-slp/src/parsed.rs:79:30
   |
79 |         let start = 1 + self.amounts.len();
   |                              ^^^^^^^ unknown field
   |
   = note: available fields are: `atoms_vec`, `num_batons`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/bitcoinsuite-slp/src/slp/genesis.rs:107:17
    |
107 |                 amounts,
    |                 ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
  --> chronik/bitcoinsuite-slp/src/slp/mint.rs:68:13
   |
68 |             amounts,
   |             ^^^^^^^ `ParsedMintData` does not have this field
   |
   = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
  --> chronik/bitcoinsuite-slp/src/slp/mint_vault.rs:78:13
   |
78 |             amounts,
   |             ^^^^^^^ `ParsedMintData` does not have this field
   |
   = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/bitcoinsuite-slp/src/test_helpers.rs:170:13
    |
170 |             amounts: atoms.into_iter().collect(),
    |             ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

Some errors have detailed explanations: E0560, E0609.
For more information about an error, try `rustc --explain E0560`.
error: could not compile `bitcoinsuite-slp` (lib) due to 11 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[248/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[251/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[252/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[253/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[255/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[256/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[258/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[259/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[260/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[261/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[262/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[263/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[264/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[265/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[266/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[267/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[268/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[269/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[270/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[271/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[272/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[273/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[274/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[276/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[277/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[278/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[279/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[280/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[281/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[282/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[283/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[284/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[285/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[286/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[287/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[288/589] Linking C static library src/secp256k1/libsecp256k1.a
[289/589] Linking C executable src/secp256k1/internal-bench
[290/589] Linking C executable src/secp256k1/ecmult-bench
[291/589] Linking C executable src/secp256k1/sign-bench
[292/589] Linking C executable src/secp256k1/recover-bench
[293/589] Linking C executable src/secp256k1/verify-bench
[294/589] Linking CXX static library src/libbitcoinconsensus.a
[295/589] Linking CXX static library src/libscript.a
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build chronik-client-integration-tests failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[245/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[247/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[248/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[249/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[250/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[251/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[252/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[253/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/cashaddr.cpp.o
[255/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[256/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[257/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[258/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[259/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[260/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[261/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[262/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[263/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[264/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[265/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[266/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[267/589] Linking C static library src/secp256k1/libsecp256k1.a
[268/589] Linking CXX static library src/libbitcoinconsensus.a
[269/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[270/589] Building CXX object src/CMakeFiles/common.dir/config.cpp.o
[271/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[272/589] Linking C executable src/secp256k1/recover-bench
[273/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[274/589] Linking C executable src/secp256k1/verify-bench
[275/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[276/589] Linking C executable src/secp256k1/sign-bench
[277/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[278/589] Linking C executable src/secp256k1/ecmult-bench
[279/589] Linking C executable src/secp256k1/internal-bench
[280/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[281/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[282/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[283/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[284/589] Building CXX object src/CMakeFiles/common.dir/chainparams.cpp.o
[285/589] Building CXX object src/CMakeFiles/common.dir/cashaddrenc.cpp.o
[286/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[287/589] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[288/589] Building CXX object src/CMakeFiles/common.dir/kernel/chainparams.cpp.o
[289/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[290/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[291/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[292/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[293/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[294/589] Linking CXX static library src/libscript.a
[295/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-lib-integration-tests failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[248/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[251/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[252/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[255/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[256/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[258/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[259/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[260/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[261/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[262/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[263/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[264/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[265/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[266/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[267/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[268/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[269/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[270/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[271/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[272/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[273/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[274/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[276/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[277/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[278/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[279/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[280/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[281/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[282/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[283/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[284/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[285/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[286/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[287/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[288/589] Linking C static library src/secp256k1/libsecp256k1.a
[289/589] Linking C executable src/secp256k1/internal-bench
[290/589] Linking C executable src/secp256k1/ecmult-bench
[291/589] Linking C executable src/secp256k1/recover-bench
[292/589] Linking C executable src/secp256k1/verify-bench
[293/589] Linking C executable src/secp256k1/sign-bench
[294/589] Linking CXX static library src/libbitcoinconsensus.a
[295/589] Linking CXX static library src/libscript.a
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-agora-integration-tests failed with exit code 1

chronik updates from name changes in mint data

Tail of the build log:

   Compiling parking_lot v0.12.3
   Compiling cc v1.2.3
   Compiling signal-hook-registry v1.4.2
   Compiling socket2 v0.5.8
   Compiling mio v1.0.3
   Compiling versions v6.3.2
   Compiling cexpr v0.6.0
   Compiling clang-sys v1.8.1
   Compiling tempfile v3.14.0
   Compiling cmake v0.1.52
   Compiling which v4.4.2
   Compiling getrandom v0.2.15
   Compiling bytes v1.9.0
   Compiling serde_json v1.0.133
   Compiling icu_locid v1.5.0
   Compiling cxx-build v1.0.133
   Compiling rand_core v0.6.4
   Compiling ppv-lite86 v0.2.20
   Compiling hash32 v0.2.1
   Compiling spin v0.9.8
   Compiling http v1.2.0
   Compiling tokio v1.42.0
   Compiling icu_locid_transform_data v1.5.0
   Compiling icu_provider v1.5.0
   Compiling rand_chacha v0.3.1
   Compiling heapless v0.7.17
   Compiling prost v0.11.9
   Compiling bitcoinsuite-core v0.1.0 (/work/chronik/bitcoinsuite-core)
   Compiling backtrace v0.3.71
   Compiling link-cplusplus v1.0.9
   Compiling aws-lc-sys v0.23.1
   Compiling prost-types v0.11.9
   Compiling cxx v1.0.133
   Compiling bitcoinsuite-slp v0.1.0 (/work/chronik/bitcoinsuite-slp)
error[E0425]: cannot find value `atoms_vec` in this scope
   --> chronik/bitcoinsuite-slp/src/slp/genesis.rs:107:17
    |
107 |                 atoms_vec,
    |                 ^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `atoms_vec` in this scope
  --> chronik/bitcoinsuite-slp/src/slp/mint.rs:68:13
   |
68 |             atoms_vec,
   |             ^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `atoms_vec` in this scope
  --> chronik/bitcoinsuite-slp/src/slp/mint_vault.rs:78:13
   |
78 |             atoms_vec,
   |             ^^^^^^^^^ not found in this scope

   Compiling bindgen v0.65.1
   Compiling icu_locid_transform v1.5.0
   Compiling crossbeam-utils v0.8.20
For more information about this error, try `rustc --explain E0425`.
error: could not compile `bitcoinsuite-slp` (lib) due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[248/589] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/primitives/block.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[251/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[252/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[253/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[255/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[256/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[257/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[258/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[259/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[260/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[261/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[262/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[263/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[264/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[265/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[266/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[267/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[268/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[269/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[270/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[271/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[272/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[273/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[274/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[276/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[277/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[278/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[279/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[280/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[281/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[282/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[283/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[284/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[285/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[286/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[287/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[288/589] Linking C static library src/secp256k1/libsecp256k1.a
[289/589] Linking C executable src/secp256k1/recover-bench
[290/589] Linking C executable src/secp256k1/verify-bench
[291/589] Linking C executable src/secp256k1/internal-bench
[292/589] Linking C executable src/secp256k1/ecmult-bench
[293/589] Linking C executable src/secp256k1/sign-bench
[294/589] Linking CXX static library src/libbitcoinconsensus.a
[295/589] Linking CXX static library src/libscript.a
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-agora-integration-tests failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/chainparams.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/common/bloom.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[247/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[248/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/cashaddrenc.cpp.o
[251/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[252/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[254/589] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[255/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[256/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/kernel/chainparams.cpp.o
[258/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[259/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[260/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[261/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[262/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[263/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[264/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[265/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[266/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[267/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[268/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[269/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[270/589] Linking C static library src/secp256k1/libsecp256k1.a
[271/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[272/589] Linking C executable src/secp256k1/recover-bench
[273/589] Linking C executable src/secp256k1/verify-bench
[274/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[276/589] Linking C executable src/secp256k1/ecmult-bench
[277/589] Linking C executable src/secp256k1/sign-bench
[278/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[279/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[280/589] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[281/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[282/589] Building CXX object src/CMakeFiles/common.dir/core_write.cpp.o
[283/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[284/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[285/589] Linking CXX static library src/libbitcoinconsensus.a
[286/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[287/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[288/589] Linking C executable src/secp256k1/internal-bench
[289/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[290/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[291/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[292/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[293/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[294/589] Linking CXX static library src/libscript.a
[295/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build chronik-client-integration-tests failed with exit code 1

Tail of the build log:

    Checking utf16_iter v1.0.5
    Checking rustls-pki-types v1.10.0
   Compiling aws-lc-sys v0.23.1
   Compiling backtrace v0.3.71
   Compiling link-cplusplus v1.0.9
   Compiling prost v0.11.9
   Compiling bindgen v0.65.1
    Checking utf8_iter v1.0.4
    Checking untrusted v0.9.0
    Checking percent-encoding v2.3.1
    Checking write16 v1.0.0
    Checking parking v2.2.1
    Checking icu_normalizer_data v1.5.0
   Compiling prost-types v0.11.9
    Checking event-listener v5.3.1
   Compiling petgraph v0.6.5
    Checking form_urlencoded v1.2.1
   Compiling cxx v1.0.133
    Checking stable-eyre v0.2.2
   Compiling which v4.4.2
   Compiling tempfile v3.14.0
    Checking icu_normalizer v1.5.0
    Checking bitcoinsuite-slp v0.1.0 (/work/chronik/bitcoinsuite-slp)
    Checking httparse v1.9.5
error[E0425]: cannot find value `atoms_vec` in this scope
   --> chronik/bitcoinsuite-slp/src/slp/genesis.rs:107:17
    |
107 |                 atoms_vec,
    |                 ^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `atoms_vec` in this scope
  --> chronik/bitcoinsuite-slp/src/slp/mint.rs:68:13
   |
68 |             atoms_vec,
   |             ^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `atoms_vec` in this scope
  --> chronik/bitcoinsuite-slp/src/slp/mint_vault.rs:78:13
   |
78 |             atoms_vec,
   |             ^^^^^^^^^ not found in this scope

    Checking versions v6.3.2
    Checking bimap v0.6.3
    Checking tower-service v0.3.3
    Checking option-ext v0.2.0
    Checking subtle v2.6.1
    Checking idna_adapter v1.2.0
    Checking dirs-sys v0.4.1
   Compiling cxx-build v1.0.133
    Checking num-traits v0.2.19
    Checking abc-rust-error v0.1.0 (/work/chronik/abc-rust-error)
    Checking event-listener-strategy v0.5.3
   Compiling pyo3-macros-backend v0.23.3
   Compiling pyo3-ffi v0.23.3
For more information about this error, try `rustc --explain E0425`.
error: could not compile `bitcoinsuite-slp` (lib) due to 3 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

[244/589] Building CXX object src/CMakeFiles/common.dir/core_read.cpp.o
[245/589] Building CXX object src/CMakeFiles/common.dir/key_io.cpp.o
[246/589] Building CXX object src/CMakeFiles/common.dir/netaddress.cpp.o
[247/589] Building CXX object src/CMakeFiles/common.dir/outputtype.cpp.o
[248/589] Building CXX object src/CMakeFiles/common.dir/netbase.cpp.o
[249/589] Building CXX object src/CMakeFiles/common.dir/policy/policy.cpp.o
[250/589] Building CXX object src/CMakeFiles/common.dir/scheduler.cpp.o
[251/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/chainparamsconstants.cpp.o
[252/589] Building CXX object src/CMakeFiles/script.dir/script/bitfield.cpp.o
[253/589] Building CXX object src/CMakeFiles/common.dir/warnings.cpp.o
[254/589] Building CXX object src/CMakeFiles/script.dir/script/intmath.cpp.o
[255/589] Building CXX object src/CMakeFiles/common.dir/protocol.cpp.o
[256/589] Building CXX object src/CMakeFiles/common.dir/networks/abc/checkpoints.cpp.o
[257/589] Building CXX object src/CMakeFiles/common.dir/psbt.cpp.o
[258/589] Building CXX object src/CMakeFiles/common.dir/rpc/rawtransaction_util.cpp.o
[259/589] Building CXX object src/CMakeFiles/script.dir/script/script.cpp.o
[260/589] Building CXX object src/CMakeFiles/script.dir/script/script_error.cpp.o
[261/589] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[262/589] Building CXX object src/CMakeFiles/script.dir/script/interpreter.cpp.o
[263/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/arith_uint256.cpp.o
[264/589] Building CXX object src/CMakeFiles/script.dir/script/descriptor.cpp.o
[265/589] Building CXX object src/CMakeFiles/script.dir/script/sigencoding.cpp.o
[266/589] Building CXX object src/CMakeFiles/script.dir/script/sign.cpp.o
[267/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/hash.cpp.o
[268/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/uint256.cpp.o
[269/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/util/strencodings.cpp.o
[270/589] Building CXX object src/CMakeFiles/script.dir/script/signingprovider.cpp.o
[271/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/primitives/transaction.cpp.o
[272/589] Building CXX object src/CMakeFiles/script.dir/script/standard.cpp.o
[273/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/pubkey.cpp.o
[274/589] Building C object src/secp256k1/CMakeFiles/recover-bench.dir/src/bench_recover.c.o
[275/589] Building C object src/secp256k1/CMakeFiles/verify-bench.dir/src/bench_verify.c.o
[276/589] Building C object src/secp256k1/CMakeFiles/sign-bench.dir/src/bench_sign.c.o
[277/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/amount.cpp.o
[278/589] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[279/589] Building CXX object src/CMakeFiles/bitcoinconsensus.dir/consensus/tx_check.cpp.o
[280/589] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[281/589] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[282/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[283/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[284/589] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[285/589] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[286/589] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[287/589] Building CXX object src/CMakeFiles/bitcoinconsensus-shared.dir/script/bitcoinconsensus.cpp.o
[288/589] Linking C static library src/secp256k1/libsecp256k1.a
[289/589] Linking C executable src/secp256k1/internal-bench
[290/589] Linking C executable src/secp256k1/recover-bench
[291/589] Linking C executable src/secp256k1/sign-bench
[292/589] Linking C executable src/secp256k1/ecmult-bench
[293/589] Linking C executable src/secp256k1/verify-bench
[294/589] Linking CXX static library src/libbitcoinconsensus.a
[295/589] Linking CXX static library src/libscript.a
[296/589] Linking CXX static library src/libcommon.a
[297/589] Linking CXX shared library src/libbitcoinconsensus.so.0.30.12
[298/589] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[299/589] Linking CXX executable src/iguana/iguana
[300/589] Linking CXX executable src/bitcoin-cli
[301/589] Linking CXX executable src/bitcoin-tx
ninja: build stopped: cannot make progress due to previous errors.
Build ecash-lib-integration-tests failed with exit code 1

more script patches, update other amounts params

Tail of the build log:

   Compiling dirs v5.0.1
   Compiling http-body-util v0.1.2
   Compiling toml_datetime v0.6.8
   Compiling serde_spanned v0.6.8
   Compiling pyo3 v0.23.3
   Compiling sha1 v0.10.6
   Compiling httpdate v1.0.3
   Compiling utf-8 v0.7.6
   Compiling winnow v0.6.20
   Compiling data-encoding v2.6.0
   Compiling hyper v1.5.1
   Compiling memoffset v0.9.1
   Compiling url v2.5.4
   Compiling tungstenite v0.24.0
   Compiling sync_wrapper v0.1.2
   Compiling karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
   Compiling unicode-segmentation v1.12.0
   Compiling unindent v0.2.3
   Compiling sync_wrapper v1.0.2
   Compiling mime v0.3.17
   Compiling convert_case v0.6.0
   Compiling tokio-tungstenite v0.24.0
   Compiling axum-core v0.4.5
   Compiling hyper-util v0.1.10
   Compiling tower v0.5.1
   Compiling serde_urlencoded v0.7.1
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
   Compiling futures-executor v0.3.31
   Compiling toml_edit v0.22.22
   Compiling serde_path_to_error v0.1.16
   Compiling base64 v0.22.1
   Compiling matchit v0.7.3
   Compiling futures v0.3.31
   Compiling tower-http v0.5.2
   Compiling librocksdb-sys v0.11.0+8.1.1
   Compiling pyo3-macros v0.23.3
   Compiling toml v0.8.19
   Compiling axum v0.7.9
   Compiling chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/chronik-plugin-impl/tests/test_tx_to_py.rs:358:29
    |
358 | ...                   amounts: vec![0, 0, 10, 0, 0],
    |                       ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/chronik-plugin-impl/tests/test_tx_to_py.rs:366:29
    |
366 | ...                   amounts: vec![1000, 0, 0],
    |                       ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

For more information about this error, try `rustc --explain E0560`.
error: could not compile `chronik-plugin-impl` (test "test_tx_to_py") due to 2 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
   Compiling chrono v0.4.38
   Compiling dirs v5.0.1
   Compiling bincode v2.0.0-rc.3
   Compiling http-body-util v0.1.2
   Compiling serde_spanned v0.6.8
   Compiling toml_datetime v0.6.8
   Compiling sha1 v0.10.6
   Compiling utf-8 v0.7.6
   Compiling data-encoding v2.6.0
   Compiling httpdate v1.0.3
   Compiling toml_edit v0.22.22
   Compiling hyper v1.5.1
   Compiling tungstenite v0.24.0
   Compiling url v2.5.4
   Compiling karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
   Compiling pyo3-ffi v0.23.3
   Compiling mime v0.3.17
   Compiling sync_wrapper v1.0.2
   Compiling sync_wrapper v0.1.2
   Compiling hyper-util v0.1.10
   Compiling tower v0.5.1
   Compiling toml v0.8.19
   Compiling axum-core v0.4.5
   Compiling tokio-tungstenite v0.24.0
   Compiling serde_urlencoded v0.7.1
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
   Compiling futures-executor v0.3.31
   Compiling serde_path_to_error v0.1.16
   Compiling matchit v0.7.3
   Compiling base64 v0.22.1
   Compiling futures v0.3.31
   Compiling tower-http v0.5.2
   Compiling chronik-util v0.1.0 (/work/chronik/chronik-util)
   Compiling librocksdb-sys v0.11.0+8.1.1
   Compiling pyo3-macros v0.23.3
   Compiling axum v0.7.9
   Compiling pyo3 v0.23.3
   Compiling chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/chronik-plugin-impl/tests/test_tx_to_py.rs:358:29
    |
358 | ...                   amounts: vec![0, 0, 10, 0, 0],
    |                       ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

error[E0560]: struct `ParsedMintData` has no field named `amounts`
   --> chronik/chronik-plugin-impl/tests/test_tx_to_py.rs:366:29
    |
366 | ...                   amounts: vec![1000, 0, 0],
    |                       ^^^^^^^ `ParsedMintData` does not have this field
    |
    = note: available fields are: `atoms_vec`

For more information about this error, try `rustc --explain E0560`.
error: could not compile `chronik-plugin-impl` (test "test_tx_to_py") due to 2 previous errors
warning: build failed, waiting for other jobs to finish...
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

   Compiling itoa v1.0.14
    Checking utf-8 v0.7.6
    Checking data-encoding v2.6.0
   Compiling ryu v1.0.18
    Checking foldhash v0.1.3
    Checking httpdate v1.0.3
    Checking cobs v0.2.3
    Checking postcard v1.1.1
    Checking tungstenite v0.24.0
    Checking hyper v1.5.1
    Checking karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
    Checking url v2.5.4
    Checking toml_datetime v0.6.8
    Checking serde_spanned v0.6.8
   Compiling pyo3 v0.23.3
    Checking seahash v4.1.0
    Checking sync_wrapper v1.0.2
    Checking winnow v0.6.20
    Checking topo_sort v0.4.0
    Checking sync_wrapper v0.1.2
    Checking mime v0.3.17
    Checking tower v0.5.1
    Checking hyper-util v0.1.10
    Checking axum-core v0.4.5
    Checking memoffset v0.9.1
    Checking tokio-tungstenite v0.24.0
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.16
    Checking unicode-segmentation v1.12.0
    Checking unindent v0.2.3
    Checking matchit v0.7.3
    Checking base64 v0.22.1
    Checking convert_case v0.6.0
    Checking tower-http v0.5.2
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking futures v0.3.31
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking toml_edit v0.22.22
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking axum v0.7.9
   Compiling pyo3-macros v0.23.3
    Checking toml v0.8.19
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
    Checking rustls-webpki v0.102.8
    Checking tokio-rustls v0.26.1
    Checking karyon_async_rustls v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_net v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_jsonrpc v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
    Finished dev [unoptimized + debuginfo] target(s) in 4m 55s
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   Compiling ryu v1.0.18
   Compiling itoa v1.0.14
    Checking httpdate v1.0.3
    Checking utf-8 v0.7.6
    Checking foldhash v0.1.3
    Checking cobs v0.2.3
    Checking data-encoding v2.6.0
    Checking hyper v1.5.1
    Checking postcard v1.1.1
    Checking karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking tungstenite v0.24.0
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
    Checking url v2.5.4
   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
    Checking serde_spanned v0.6.8
    Checking toml_datetime v0.6.8
   Compiling pyo3 v0.23.3
    Checking mime v0.3.17
    Checking winnow v0.6.20
    Checking topo_sort v0.4.0
    Checking sync_wrapper v1.0.2
    Checking seahash v4.1.0
    Checking sync_wrapper v0.1.2
    Checking axum-core v0.4.5
    Checking tower v0.5.1
    Checking tokio-tungstenite v0.24.0
    Checking hyper-util v0.1.10
    Checking memoffset v0.9.1
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.16
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking unicode-segmentation v1.12.0
    Checking base64 v0.22.1
    Checking unindent v0.2.3
    Checking matchit v0.7.3
    Checking tower-http v0.5.2
    Checking futures v0.3.31
    Checking convert_case v0.6.0
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking toml_edit v0.22.22
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking axum v0.7.9
    Checking toml v0.8.19
   Compiling pyo3-macros v0.23.3
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
    Checking rustls-webpki v0.102.8
    Checking tokio-rustls v0.26.1
    Checking karyon_async_rustls v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_net v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_jsonrpc v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
    Finished dev [unoptimized + debuginfo] target(s) in 7m 18s
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

apologies for the phab noise here ... not sure how to find all these locally. ninja check-functional is passing

Tail of the build log:

    Checking cobs v0.2.3
    Checking utf-8 v0.7.6
    Checking foldhash v0.1.3
   Compiling ryu v1.0.18
   Compiling itoa v1.0.14
    Checking data-encoding v2.6.0
    Checking httpdate v1.0.3
    Checking postcard v1.1.1
    Checking hyper v1.5.1
    Checking tungstenite v0.24.0
    Checking karyon_core v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking chronik-plugin v0.1.0 (/work/chronik/chronik-plugin)
    Checking url v2.5.4
   Compiling chronik-proto v0.1.0 (/work/chronik/chronik-proto)
    Checking serde_spanned v0.6.8
    Checking toml_datetime v0.6.8
   Compiling pyo3 v0.23.3
    Checking sync_wrapper v0.1.2
    Checking sync_wrapper v1.0.2
    Checking winnow v0.6.20
    Checking seahash v4.1.0
    Checking topo_sort v0.4.0
    Checking mime v0.3.17
    Checking tower v0.5.1
    Checking hyper-util v0.1.10
    Checking tokio-tungstenite v0.24.0
    Checking axum-core v0.4.5
    Checking memoffset v0.9.1
    Checking serde_urlencoded v0.7.1
    Checking futures-executor v0.3.31
    Checking serde_path_to_error v0.1.16
    Checking base64 v0.22.1
    Checking matchit v0.7.3
   Compiling karyon_jsonrpc_macro v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking unicode-segmentation v1.12.0
    Checking unindent v0.2.3
    Checking tower-http v0.5.2
    Checking futures v0.3.31
    Checking convert_case v0.6.0
   Compiling chronik-bridge v0.1.0 (/work/chronik/chronik-bridge)
    Checking toml_edit v0.22.22
   Compiling librocksdb-sys v0.11.0+8.1.1
    Checking axum v0.7.9
    Checking toml v0.8.19
   Compiling pyo3-macros v0.23.3
    Checking chronik-plugin-impl v0.1.0 (/work/chronik/chronik-plugin-impl)
   Compiling aws-lc-rs v1.11.1
   Compiling rustls v0.23.19
    Checking rustls-webpki v0.102.8
    Checking tokio-rustls v0.26.1
    Checking karyon_async_rustls v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_net v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking karyon_jsonrpc v0.2.1 (https://github.com/karyontech/karyon.git?rev=c019ca3273a89afb34e2aa429386851f45cfa5d1#c019ca32)
    Checking rocksdb v0.21.0
    Checking chronik-db v0.1.0 (/work/chronik/chronik-db)
    Checking chronik-indexer v0.1.0 (/work/chronik/chronik-indexer)
    Checking chronik-http v0.1.0 (/work/chronik/chronik-http)
    Finished dev [unoptimized + debuginfo] target(s) in 5m 28s
ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

      data: "abc"
    }
  }
}
time_first_seen: 1740146305
size: 178
])
2025-02-21T13:58:26.092000Z TestFramework (INFO): Stopping nodes
2025-02-21T13:58:26.394000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/chronik-client-integration-tests/test/tmp/test_runner_₿₵_🏃_20250221_135824/setup_scripts/chronik-client_plugins_0
2025-02-21T13:58:26.394000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/chronik-client-integration-tests/test/tmp/test_runner_₿₵_🏃_20250221_135824/setup_scripts/chronik-client_plugins_0/test_framework.log
2025-02-21T13:58:26.394000Z TestFramework (ERROR): 
2025-02-21T13:58:26.394000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/chronik-client-integration-tests/test/tmp/test_runner_₿₵_🏃_20250221_135824/setup_scripts/chronik-client_plugins_0' to consolidate all logs
2025-02-21T13:58:26.395000Z TestFramework (ERROR): 
2025-02-21T13:58:26.395000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-02-21T13:58:26.395000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-02-21T13:58:26.395000Z TestFramework (ERROR): 
Running Unit Tests for Test Framework Modules
setup_scripts/chronik-client_plugins.py started
setup_scripts/chronik-client_plugins.py failed, Duration: 2 s

stdout:

stderr:


TEST                                    | STATUS    | DURATION

setup_scripts/chronik-client_plugins.py | ✖ Failed  | 2 s

ALL                                     | ✖ Failed  | 2 s (accumulated) 
Runtime: 2 s

Test runner for chronik-client_plugins completed with code 1
----------------------|---------|----------|---------|---------|------------------------------------
File                  | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                  
----------------------|---------|----------|---------|---------|------------------------------------
All files             |   31.54 |    12.38 |   28.39 |   31.51 |                                    
 chronik-client       |     100 |      100 |     100 |     100 |                                    
  index.ts            |     100 |      100 |     100 |     100 |                                    
 chronik-client/proto |   23.88 |     9.25 |   17.05 |    24.1 |                                    
  chronik.ts          |   23.88 |     9.25 |   17.05 |    24.1 | ...3,6399-6402,6408-6450,6485-6494 
 chronik-client/src   |   67.21 |    49.38 |   65.41 |   66.48 |                                    
  ChronikClient.ts    |   60.38 |    48.69 |   63.63 |   60.38 | ...6,1357-1365,1373-1438,1446-1451 
  failoverProxy.ts    |   79.43 |    56.66 |   69.23 |   78.84 | ...282-285,288,297,304,308,313,317 
  hex.ts              |   89.47 |       50 |      75 |   87.87 | 58,66-68                           
  validation.ts       |    75.6 |       40 |      75 |   72.97 | 17,21,33,38-49,62-63               
----------------------|---------|----------|---------|---------|------------------------------------

##teamcity[blockOpened name='Code Coverage Summary']
##teamcity[buildStatisticValue key='CodeCoverageAbsBCovered' value='988']
##teamcity[buildStatisticValue key='CodeCoverageAbsBTotal' value='3132']
##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='257']
##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='2075']
##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='161']
##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='567']
##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='976']
##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='3097']
##teamcity[blockClosed name='Code Coverage Summary']
mv: cannot stat 'test_results/chronik-client-integration-tests-junit.xml': No such file or directory
Build chronik-client-integration-tests failed with exit code 1

Tail of the build log:

  ecash_lib_wasm_bg_browser.js |       0 |      100 |     100 |       0 | 1                         
  ecash_lib_wasm_browser.js    |       0 |        0 |       0 |       0 | 3-631                     
  ecash_lib_wasm_nodejs.js     |       0 |        0 |       0 |       0 | 1-561                     
 ecash-lib/src                 |   30.44 |    25.63 |   28.76 |   51.52 |                           
  consts.ts                    |       0 |      100 |     100 |       0 | 6-8                       
  ecc.ts                       |    18.6 |    83.33 |   11.42 |   36.36 | 38-66,84,97-115           
  hash.ts                      |   41.46 |    83.33 |   26.66 |   80.95 | 26,35,38,41               
  hdwallet.ts                  |       0 |        0 |       0 |       0 | 12-175                    
  hmac.ts                      |       0 |        0 |       0 |       0 | 16-73                     
  index.ts                     |       0 |        0 |       0 |       0 |                           
  indexBrowser.ts              |       0 |        0 |       0 |       0 |                           
  indexNodeJs.ts               |       0 |        0 |       0 |       0 |                           
  initBrowser.ts               |       0 |      100 |       0 |       0 | 11-17                     
  initNodeJs.ts                |   54.54 |      100 |     100 |      80 | 10                        
  mnemonic.ts                  |       0 |        0 |       0 |       0 | 9-144                     
  op.ts                        |   20.13 |    23.33 |   36.36 |   39.47 | ...07,109,117-122,133-161 
  opcode.ts                    |    50.2 |    83.33 |     100 |     100 | 1                         
  pbkdf2.ts                    |       0 |      100 |       0 |       0 | 17-51                     
  script.ts                    |   28.44 |    20.58 |   29.03 |   50.87 | ...33-144,150,160,182-193 
  sigHashType.ts               |      40 |       25 |   46.15 |   78.94 | 26-38                     
  tx.ts                        |   47.25 |    45.23 |   47.61 |   87.23 | 110,114,123-125,144       
  txBuilder.ts                 |   40.74 |    33.92 |   54.54 |   80.43 | ...62,181-186,191,261-265 
  unsignedTx.ts                |   25.27 |       16 |   30.76 |   46.15 | ...12,320,326-329,345,357 
 ecash-lib/src/address         |   11.35 |    15.15 |    5.12 |   22.41 |                           
  address.ts                   |   10.95 |    11.36 |    3.22 |   21.05 | ...39-240,255-256,266-344 
  legacyaddr.ts                |   12.04 |    22.72 |    12.5 |      25 | ...9,23-38,70-111,124-128 
 ecash-lib/src/ffi             |   15.68 |    13.97 |    8.57 |   15.89 |                           
  ecash_lib_wasm_bg_browser.js |       0 |      100 |     100 |       0 | 1                         
  ecash_lib_wasm_browser.js    |       0 |        0 |       0 |       0 | 3-631                     
  ecash_lib_wasm_nodejs.js     |   32.76 |    40.62 |   18.36 |   32.98 | ...69,476-541,547-548,552 
 ecash-lib/src/io              |   30.79 |    41.17 |   39.06 |   59.55 |                           
  bytes.ts                     |    8.19 |       60 |   11.76 |   16.12 | 12,23-74                  
  hex.ts                       |   41.55 |       50 |   44.44 |   82.35 | 41-45,50,58               
  int.ts                       |       0 |        0 |       0 |       0 |                           
  str.ts                       |   46.15 |    83.33 |      40 |   85.71 | 15                        
  varsize.ts                   |   16.32 |    21.05 |      40 |      32 | 14-24,40-47               
  writer.ts                    |       0 |        0 |       0 |       0 |                           
  writerbytes.ts               |   42.62 |    40.62 |   53.33 |   83.87 | 34,44,54,64,80            
  writerlength.ts              |   53.33 |    83.33 |   53.84 |     100 | 1                         
 ecash-lib/src/test            |   44.73 |    36.23 |   47.05 |    86.3 |                           
  testRunner.ts                |   44.73 |    36.23 |   47.05 |    86.3 | ...,80-82,105,114,157,197 
 ecash-lib/src/token           |   31.48 |    28.44 |   28.57 |   60.11 |                           
  alp.ts                       |    42.5 |    53.12 |   43.47 |   82.92 | 110-123,142               
  common.ts                    |   54.54 |    83.33 |     100 |     100 | 1                         
  empp.ts                      |   52.17 |       60 |   57.14 |   91.66 | 12                        
  slp.ts                       |   14.76 |     7.35 |       4 |    28.2 | ...74-178,185-197,201-211 
-------------------------------|---------|----------|---------|---------|---------------------------

##teamcity[blockOpened name='Code Coverage Summary']
##teamcity[buildStatisticValue key='CodeCoverageAbsBCovered' value='815']
##teamcity[buildStatisticValue key='CodeCoverageAbsBTotal' value='3643']
##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='244']
##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='1011']
##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='131']
##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='622']
##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='794']
##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='2528']
##teamcity[blockClosed name='Code Coverage Summary']
mv: cannot stat 'test_results/ecash-lib-integration-tests-junit.xml': No such file or directory
Build ecash-lib-integration-tests failed with exit code 1

Failed tests logs:

====== Bitcoin ABC functional tests: rpc_psbt.py ======

------- Stdout: -------
2025-02-21T14:09:17.594000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250221_140915/rpc_psbt_11
2025-02-21T14:09:20.971000Z TestFramework (INFO): Test walletcreatefundedpsbt feeRate of 100,000 XEC/kB produces a total fee at or slightly below -maxtxfee
2025-02-21T14:09:21.001000Z TestFramework (INFO): Test walletcreatefundedpsbt feeRate of 10,000,000 XEC/kB  produces a total fee well above -maxtxfee and raises RPC error
2025-02-21T14:09:21.024000Z TestFramework (INFO): Test various PSBT operations
2025-02-21T14:10:27.033000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 149, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 139, in _run_test_internal
    self.run_test()
  File "/work/test/functional/rpc_psbt.py", line 275, in run_test
    self.sync_mempools()
  File "/work/test/functional/test_framework/test_framework.py", line 834, in sync_mempools
    raise AssertionError(f"Mempool sync timed out after {timeout}s:{pool_str}")
AssertionError: Mempool sync timed out after 60s:
  {'80e59786452c1b29ae0fa542281494e2ff02668a705eda83b0a1b6ce5fd1e1d5'}
  {'80e59786452c1b29ae0fa542281494e2ff02668a705eda83b0a1b6ce5fd1e1d5'}
  set()
2025-02-21T14:10:27.085000Z TestFramework (INFO): Stopping nodes
2025-02-21T14:10:27.338000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250221_140915/rpc_psbt_11
2025-02-21T14:10:27.338000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250221_140915/rpc_psbt_11/test_framework.log
2025-02-21T14:10:27.338000Z TestFramework (ERROR): 
2025-02-21T14:10:27.338000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250221_140915/rpc_psbt_11' to consolidate all logs
2025-02-21T14:10:27.338000Z TestFramework (ERROR): 
2025-02-21T14:10:27.338000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-02-21T14:10:27.338000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-02-21T14:10:27.338000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: rpc_psbt.py

Still lgtm

cashtab/src/components/Agora/OrderBook/index.tsx
389 ↗(On Diff #52708)

?

Failed tests logs:

====== Bitcoin ABC functional tests: abc_mining_stakingrewards.py ======

------- Stdout: -------
2025-02-21T14:33:00.987000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250221_142936/abc_mining_stakingrewards_70
2025-02-21T14:33:04.136000Z TestFramework (INFO): Staking rewards not ready yet, check getblocktemplate lacks the staking rewards data
2025-02-21T14:33:04.139000Z TestFramework (INFO): Staking rewards not ready yet, check the miner doesn't produce the staking rewards output
2025-02-21T14:33:04.213000Z TestFramework (INFO): Staking rewards are computed, check the block template returns the staking rewards data
2025-02-21T14:33:09.265000Z TestFramework (INFO): Staking rewards are computed, check the miner produces the staking rewards output
2025-02-21T14:33:09.297000Z TestFramework (INFO): Override the staking reward via RPC
2025-02-21T14:33:09.299000Z TestFramework (INFO): 5f0cb342f8508435c81ddbf76b888d82efad5dff8537390553bc0c115b09548d
2025-02-21T14:33:09.324000Z TestFramework (INFO): Recompute the staking reward
2025-02-21T14:33:09.326000Z TestFramework (INFO): Check it works with longpoll
2025-02-21T14:33:10.786000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 149, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 139, in _run_test_internal
    self.run_test()
  File "/work/test/functional/abc_mining_stakingrewards.py", line 417, in run_test
    assert node.setflakyproof(last_proofid, True)
AssertionError
2025-02-21T14:33:10.837000Z TestFramework (INFO): Stopping nodes
2025-02-21T14:33:10.940000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250221_142936/abc_mining_stakingrewards_70
2025-02-21T14:33:10.940000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250221_142936/abc_mining_stakingrewards_70/test_framework.log
2025-02-21T14:33:10.940000Z TestFramework (ERROR): 
2025-02-21T14:33:10.940000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-debug/test/tmp/test_runner_₿₵_🏃_20250221_142936/abc_mining_stakingrewards_70' to consolidate all logs
2025-02-21T14:33:10.940000Z TestFramework (ERROR): 
2025-02-21T14:33:10.940000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-02-21T14:33:10.940000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-02-21T14:33:10.940000Z TestFramework (ERROR):

Each failure log is accessible here:
Bitcoin ABC functional tests: abc_mining_stakingrewards.py