-
Notifications
You must be signed in to change notification settings - Fork 781
Fix transaction check - transactions in wallet can be coinbase tx's too #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix transaction check - transactions in wallet can be coinbase tx's too #4
Conversation
src/wallet/walletdb.cpp
Outdated
| CValidationState state; | ||
| if (!(CheckRegularTransaction(wtx, state) && (wtx.GetId() == hash) && state.IsValid())) | ||
| CValidationState state_regular, state_coinbase; | ||
| if (!(wtx.GetId() == hash)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just use !=
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, fixed in post review version
src/wallet/walletdb.cpp
Outdated
| return false; | ||
| CheckRegularTransaction(wtx, state_regular); | ||
| CheckCoinbase(wtx, state_coinbase); | ||
| if (!(state_regular.IsValid() || state_coinbase.IsValid())) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not for for something like
bool isValid = wtx.IsCoinbase() ? CheckCoinbase(wtx, state) : CheckRegularTransaction(wtx, state);
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good C++ style is something I still need to pick up :-)
Fixed in post review version.
c3fc79f to
283ad03
Compare
Not allowing for a wallet tx to possibly be a coinbase breaks a lot of regression tests.
283ad03 to
4fe2889
Compare
Blackcoin Lore conversion, attempt one
Summary:
We see occasional flakiness on TSAN that gives not-so-useful output like this:
```
==5540==WARNING: failed to fork (errno 12)
==5540==WARNING: Failed to use and restart external symbolizer!
==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=5540)
Cycle in lock order graph: M100059481 (0x7fffa93419f8) => M100059482 (0x7fffa93419d0) => M100059481
Mutex M100059482 acquired here while holding mutex M100059481 in main thread:
#0 <null> <null> (test_bitcoin+0xeacce)
#1 <null> <null> (test_bitcoin+0x7b9675)
#2 <null> <null> (test_bitcoin+0x7b8e8b)
#3 <null> <null> (test_bitcoin+0x198299)
#4 <null> <null> (libboost_unit_test_framework.so.1.67.0+0x55dbd)
#5 <null> <null> (libc.so.6+0x2409a)
```
Attempts to symbolize that memory manually suggests a deadlock that is already in our suppressions file.
Although clang sanitizers will default to llvm-symbolizer, it's not in our path, so it defaults to addr2line.
It's not clear if addr2line can be assumed to perform as well as llvm-symbolizer. Testing both locally
indicates they produce very similar output when suppressions files are not used, for instance.
This patch is more of an experiment to see if llvm-symbolizer is able to correctly symbolize the above logs.
If so, either the suppression will stop being flaky or we will obtain useful information to pinpoint the root
cause.
Test Plan: Run ASAN, TSAN, UBSAN on CI and make sure they still pass
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Differential Revision: https://reviews.bitcoinabc.org/D6746
…return checking
Summary:
8d22ab0e503ccaa464cbecd94d1059dbc5a61f4a ci: Enable address sanitizer (ASan) stack-use-after-return checking (practicalswift)
Pull request description:
Enable address sanitizer (ASan) stack-use-after-return checking (`detect_stack_use_after_return=1`).
Example:
```
#include <iostream>
#include <string>
const std::string& get_string(int i) {
return std::to_string(i);
}
int main() {
std::cout << get_string(41) << "\n";
}
```
Without address sanitizer (ASan) stack-use-after-return checking:
```
$ ./stack-use-after-return
$
```
With address sanitizer (ASan) stack-use-after-return checking:
```
$ ASAN_OPTIONS="detect_stack_use_after_return=1" ./stack-use-after-return
=================================================================
==10400==ERROR: AddressSanitizer: stack-use-after-return on address 0x7f7fa0400030 at pc 0x00000049d2cc bp 0x7ffcbd617070 sp 0x7ffcbd616820
READ of size 2 at 0x7f7abbecd030 thread T0
#0 0x439781 in fwrite
#1 0x7f7ac0504cb3 in std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x113cb3)
#2 0x4f9b5f in main stack-use-after-return.cpp:9:15
#3 0x7f7abf440b96 in __libc_start_main
#4 0x41bbc9 in _start
…
$
```
---
Backport of Core [[bitcoin/bitcoin#17205 | PR17205]]
Test Plan:
cmake -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DENABLE_SANITIZERS=address
ninja all check check-functional
Reviewers: #bitcoin_abc, jasonbcox
Reviewed By: #bitcoin_abc, jasonbcox
Differential Revision: https://reviews.bitcoinabc.org/D8756
…Travis Summary: 1f9d5af4f197e7cc0469a0bb25dcbc51dfa537f4 tests: Add initialization order fiasco detection in Travis (practicalswift) Pull request description: Add initialization order fiasco detection in Travis :) Context: bitcoin/bitcoin#17670 (comment) This would have caught the `events_hasher` initialization order issue introduced in #17573 and fixed in #17670. Output in case of an initialization order fiasco: ``` ==7934==ERROR: AddressSanitizer: initialization-order-fiasco on address 0x557098d79200 at pc 0x55709796b9a3 bp 0x7ffde524dc30 sp 0x7ffde524dc28 READ of size 8 at 0x557098d79200 thread T0 #0 0x55709796b9a2 in CSHA256::Finalize(unsigned char*) src/crypto/sha256.cpp:667:25 #1 0x5570978150e9 in SeedEvents(CSHA512&) src/random.cpp:462:19 #2 0x5570978145e1 in SeedSlow(CSHA512&) src/random.cpp:482:5 #3 0x5570978149a3 in SeedStartup(CSHA512&, (anonymous namespace)::RNGState&) src/random.cpp:527:5 #4 0x55709781102d in ProcRand(unsigned char*, int, RNGLevel) src/random.cpp:571:9 #5 0x557097810d19 in GetRandBytes(unsigned char*, int) src/random.cpp:576:59 #6 0x557096c2f9d5 in (anonymous namespace)::CSignatureCache::CSignatureCache() src/script/sigcache.cpp:34:9 #7 0x557096511977 in __cxx_global_var_init.7 src/script/sigcache.cpp:67:24 #8 0x5570965119f8 in _GLOBAL__sub_I_sigcache.cpp src/script/sigcache.cpp #9 0x557097bba4ac in __libc_csu_init (src/bitcoind+0x18554ac) #10 0x7f214b1c2b27 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:266 #11 0x5570965347d9 in _start (src/bitcoind+0x1cf7d9) 0x557098d79200 is located 96 bytes inside of global variable 'events_hasher' defined in 'random.cpp:456:16' (0x557098d791a0) of size 104 registered at: #0 0x557096545dfd in __asan_register_globals compiler-rt/lib/asan/asan_globals.cpp:360:3 #1 0x557097817f8b in asan.module_ctor (src/bitcoind+0x14b2f8b) SUMMARY: AddressSanitizer: initialization-order-fiasco src/crypto/sha256.cpp:667:25 in CSHA256::Finalize(unsigned char*) ``` --- Backport of Core [[bitcoin/bitcoin#17674 | PR17674]] Depends on D8756 Test Plan: cmake -GNinja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DENABLE_SANITIZERS=address ninja all check check-functional Reviewers: #bitcoin_abc, jasonbcox Reviewed By: #bitcoin_abc, jasonbcox Differential Revision: https://reviews.bitcoinabc.org/D8757
Summary: See https://build.bitcoinabc.org/viewLog.html?buildId=300891&guest=1 for a tsan race while running `interface_zmq.py` ``` node0 stdout ================== WARNING: ThreadSanitizer: data race (pid=10367) Read of size 8 at 0x7b2400030238 by thread T19: #0 memcpy <null> (bitcoind+0x2645a7) #1 <null> <null> (libzmq.so.5+0x76220) Previous write of size 8 at 0x7b2400030238 by thread T12: #0 malloc <null> (bitcoind+0x258ee4) #1 <null> <null> (libzmq.so.5+0x39578) #2 CZMQAbstractPublishNotifier::SendZmqMessage(char const*, void const*, unsigned long) /work/abc-ci-builds/build-tsan/../../src/zmq/zmqpublishnotifier.cpp:164:14 (bitcoind+0xa1e7a9) ... 0 Location is heap block of size 140 at 0x7b2400030210 allocated by thread T12: #0 malloc <null> (bitcoind+0x258ee4) #1 <null> <null> (libzmq.so.5+0x39578) #2 CZMQAbstractPublishNotifier::SendZmqMessage(char const*, void const*, unsigned long) /work/abc-ci-builds/build-tsan/../../src/zmq/zmqpublishnotifier.cpp:164:14 (bitcoind+0xa1e7a9) ... Thread T19 'ZMQbg/1' (tid=10388, running) created by main thread at: #0 pthread_create <null> (bitcoind+0x25a7ab) #1 <null> <null> (libzmq.so.5+0x6e8b3) #2 CZMQNotificationInterface::Initialize() /work/abc-ci-builds/build-tsan/../../src/zmq/zmqnotificationinterface.cpp:86:23 (bitcoind+0xa199d4) #3 CZMQNotificationInterface::Create() /work/abc-ci-builds/build-tsan/../../src/zmq/zmqnotificationinterface.cpp:61:36 (bitcoind+0xa19328) #4 AppInitMain(Config&, RPCServer&, HTTPRPCRequestProcessor&, NodeContext&, interfaces::BlockAndHeaderTipInfo*) /work/abc-ci-builds/build-tsan/../../src/init.cpp:2482:36 (bitcoind+0x30d673) #5 AppInit(int, char**) /work/abc-ci-builds/build-tsan/../../src/bitcoind.cpp:181:16 (bitcoind+0x2eaa8e) #6 main /work/abc-ci-builds/build-tsan/../../src/bitcoind.cpp:208:13 (bitcoind+0x2eaa8e) Thread T12 'b-scheduler' (tid=10380, running) created by main thread at: #0 pthread_create <null> (bitcoind+0x25a7ab) #1 boost::thread::start_thread_noexcept() <null> (libboost_thread.so.1.67.0+0x1396a) #2 boost::thread::thread<std::_Bind<void (* (char const*, std::function<void ()>))(char const*, std::function<void ()>)>&>(std::_Bind<void (* (char const*, std::function<void ()>))(char const*, std::function<void ()>)>&) /usr/include/boost/thread/detail/thread.hpp:266:13 (bitcoind+0x330342) #3 boost::thread* boost::thread_group::create_thread<std::_Bind<void (* (char const*, std::function<void ()>))(char const*, std::function<void ()>)> >(std::_Bind<void (* (char const*, std::function<void ()>))(char const*, std::function<void ()>)>) /usr/include/boost/thread/detail/thread_group.hpp:79:60 (bitcoind+0x32039e) #4 AppInitMain(Config&, RPCServer&, HTTPRPCRequestProcessor&, NodeContext&, interfaces::BlockAndHeaderTipInfo*) /work/abc-ci-builds/build-tsan/../../src/init.cpp:2243:17 (bitcoind+0x309628) #5 AppInit(int, char**) /work/abc-ci-builds/build-tsan/../../src/bitcoind.cpp:181:16 (bitcoind+0x2eaa8e) #6 main /work/abc-ci-builds/build-tsan/../../src/bitcoind.cpp:208:13 (bitcoind+0x2eaa8e) #1 <null> <null> (libzmq.so.5+0x6e8b3) #2 CZMQNotificationInterface::Initialize() /work/abc-ci-builds/build-tsan/../../src/zmq/zmqnotificationinterface.cpp:86:23 (bitcoind+0xa199d4) #3 CZMQNotificationInterface::Create() /work/abc-ci-builds/build-tsan/../../src/zmq/zmqnotificationinterface.cpp:61:36 (bitcoind+0xa19328) #4 AppInitMain(Config&, RPCServer&, HTTPRPCRequestProcessor&, NodeContext&, interfaces::BlockAndHeaderTipInfo*) /work/abc-ci-builds/build-tsan/../../src/init.cpp:2482:36 (bitcoind+0x30d673) #5 AppInit(int, char**) /work/abc-ci-builds/build-tsan/../../src/bitcoind.cpp:181:16 (bitcoind+0x2eaa8e) ``` This is a backport of [[bitcoin/bitcoin#20748 | core#20748]] Test Plan: With TSAN: `for i in $(seq 100); do TSAN_OPTIONS=second_deadlock_stack=1: TSAN_OPTIONS=suppressions=/home/pierre/dev/bitcoin-abc/test/sanitizer_suppressions/tsan test/functional/test_runner.py interface_zmq; done` This failure is intermittent, but relatively easy to reproduce: I was able to get it with 10 repetitions of the test, prior to adding the suppression. Reviewers: #bitcoin_abc, Fabien Reviewed By: #bitcoin_abc, Fabien Differential Revision: https://reviews.bitcoinabc.org/D10315
Summary:
This is needed to turn globals into member variables. Otherwise, this
will lead to issues:
```
runtime error: reference binding to null pointer of type 'CBlockFileInfo'
#0 in std::vector<CBlockFileInfo, std::allocator<CBlockFileInfo> >::operator[](unsigned long) /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/stl_vector.h:1046:2
#1 in BlockManager::FlushBlockFile(bool, bool) src/node/blockstorage.cpp:540:47
#2 in CChainState::FlushStateToDisk(BlockValidationState&, FlushStateMode, int) src/validation.cpp:2262:28
#3 in CChainState::ResizeCoinsCaches(unsigned long, unsigned long) src/validation.cpp:4414:15
#4 in validation_chainstate_tests::validation_chainstate_resize_caches::test_method() src/test/validation_chainstate_tests.cpp:66:12
```
This is a partial backport of [[bitcoin/bitcoin#23974 | core#23974]]
bitcoin/bitcoin@fad381b
Depends on D12512
Test Plan: `ninja check`
Reviewers: #bitcoin_abc, sdulfari
Reviewed By: #bitcoin_abc, sdulfari
Differential Revision: https://reviews.bitcoinabc.org/D12513
Co-authored-by: Calin Culianu <[email protected]> Co-authored-by: MarcoFalke <[email protected]> Co-authored-by: Antoine Riard <[email protected]> This is commit Bitcoin-ABC#4 from: bitcoin/bitcoin#19988 Slightly modified for BCHN. Original committer message: This removes most transaction request logic from net_processing, and replaces it with calls to a global TxRequestTracker object. The major changes are: * Announcements from outbound (and whitelisted) peers are now always preferred over those from inbound peers. This used to be the case for the first request (by delaying the first request from inbound peers), and a bias afters. The 2s delay for requests from inbound peers still exists, but after that, if viable outbound peers remain for any given transaction, they will always be tried first. * No more hard cap of 100 in flight transactions per peer, as there is less need for it (memory usage is linear in the number of announcements, but independent from the number in flight, and CPU usage isn't affected by it). Furthermore, if only one peer announces a transaction, and it has over 100 in flight and requestable already, we still want to request it from them. The cap is replaced with an additional 2s delay (possibly combined with the existing 2s delays for inbound connections, and for txid peers when wtxid peers are available). Includes functional tests written by Marco Falke and Antoine Riard.
logoMainnet Explorer learn more about eCash ! block height/hash, txid, address Address ecash:qz60j37wmr0wv2k9ksz5e4qkjdzgxggg3sr98q45ug Details JSON Summary Script Public Key 76a914b4f947ced8dee62ac5b4054cd41693448321088c88ac Balance 0 Transactions 2 QR Code ecash:qz60j37wmr0wv2k9ksz5e4qkjdzgxggg3sr98q45ug Scripthash 6b7253cd13966210f51a0482486181fb036f639aa1f2fbf6ddd0daee039d4450 Is Valid? Is Script? 2 Transactions Newest First Bitcoin-ABC#2– 0357c59fffffd39cd438db127a39e88887ab818b7b9933db03ba7e44dc73a98f -552,510.39XEC 6/2, 2014 19:24 (10y, 11mo, 13d ago) > Input #0 / 0 p2pkhe4a57a901c8d13e411ad47024… #0 (addr:ecash:qz60j37wmr0wv2k9ksz5e4qkjdzgxggg3sr98q45ug 552,510.39XEC Total Input: 552,510.39XEC < Output #0 / 1 p2pkh ecash:qzgyfwdkwn9zx6h9vvl0tafupvk2drkdtg0kzut2al 204,747.39XEC < Output Bitcoin-ABC#1 / 1 p2pkh ecash:qzq4es9v7eq2wfm6rxwhpazaryes4xyedsfpjlylcd 347,763XEC Total Output: 552,510.39XEC Bitcoin-ABC#1– e4a57a901c8d13e411ad47024dcba3e04f268c99c6fc1e99f0bf14afc2e81c7f +552,510.39XEC 5/19, 2014 19:36 (10y, 11mo, 27d ago) > Input #0 / 18 p2pkh01f5cb95681c922d44ae517da… Bitcoin-ABC#1 (addr:ecash:qqc24zdvcnjhnusda0jkvrrgmkg0jnl88vg4txjsg5 0.01XEC > Input Bitcoin-ABC#1 / 18 p2pkh6e8f883eb799a9a286fe492a3… #0 (addr:ecash:qr0tjhmsrgjsf3k72xdtqv7flxq750x645z0wwxpmq 40.47XEC > Input Bitcoin-ABC#2 / 18 p2pkh901bde191beb61d2fc5bf480c… Bitcoin-ABC#1 (addr:ecash:qrjckd8ep6grzchnsv9gcdzwcpwqjazn6unlutuff9 0.01XEC > Input Bitcoin-ABC#3 / 18 p2pkh8cab265e1896f173757325295… #0 (addr:ecash:qqh24fuuud0yp5pn2q4spdh8yfwd8kskzyhtmgu8c6 53,927.28XEC > Input Bitcoin-ABC#4 / 18 p2pkhbb79adc9ad5e696ed8fe08f74… Bitcoin-ABC#1 (addr:ecash:qqe3egddd4s95glp0kczh02evv3q326pvq9r25j3jn 0.01XEC > Input Bitcoin-ABC#5 / 18 p2pkh4dacaefb3d43daed074189358… Bitcoin-ABC#1 (addr:ecash:qrrdyutsjnr5xy7fd60dgra9aw8jc5gjdy00exz55l 0.01XEC > Input Bitcoin-ABC#6 / 18 p2pkh65f5d4d7b80e0cd4d4d477b65… Bitcoin-ABC#1 (addr:ecash:qrgs5rvlxee0f4cayf9tcslzdn3h7kky95jvyljnqq 0.01XEC > Input Bitcoin-ABC#7 / 18 p2pkhf183d53245ab3a17a3278e696… #0 (addr:ecash:qrjckd8ep6grzchnsv9gcdzwcpwqjazn6unlutuff9 9,438XEC > Input Bitcoin-ABC#8 / 18 p2pkh7f6ce8e4e912b8da7da9f43ac… Bitcoin-ABC#1 (addr:ecash:qzzy34srdrgtnzqcy3adgcxh278x78mwmuya540hkx 0.01XEC > Input Bitcoin-ABC#9 / 18 p2pkh3922dd199e8901bc7dffc06fe… #0 (addr:ecash:qpycut36dx0j03us0c4l3hn9cfhyclu9e5nxxhz3dg 0.01XEC > Input Bitcoin-ABC#10 / 18 p2pkhd00af226755d2f6f78c3c213d… Bitcoin-ABC#1 (addr:ecash:qpnyhed8vzp34mtg63cxxy6cdjcsdcnazsff2sylqt 0.01XEC > Input Bitcoin-ABC#11 / 18 p2pkha04e516237bc80d3716a174e0… #0 (addr:ecash:qptuamelkkux8r5uuv8uqlzmn0ag2542fydyslz7s5 399,970XEC > Input Bitcoin-ABC#12 / 18 p2pkhd63ccab1d9b1fe1788d21d38b… Bitcoin-ABC#1 (addr:ecash:qryd3ex3zq860sqzney5guqlf5r2y8huzcy0ng8uuv 5.13XEC > Input Bitcoin-ABC#13 / 18 p2pkh0fe15b8cc74cfd189ca866132… Bitcoin-ABC#16 (addr:ecash:qrjckd8ep6grzchnsv9gcdzwcpwqjazn6unlutuff9 80XEC > Input Bitcoin-ABC#14 / 18 p2pkh679fde36f4059292df243e074… Bitcoin-ABC#1 (addr:ecash:qzuch5gavmtnl7ql53xhswquhu8jz6p7z5jfej3nam 0.01XEC > Input Bitcoin-ABC#15 / 18 p2pkha2a641d13a94a3dcc77cacaa8… Bitcoin-ABC#6 (addr:ecash:qrjckd8ep6grzchnsv9gcdzwcpwqjazn6unlutuff9 400XEC > Input Bitcoin-ABC#16 / 18 p2pkh46f3140ef52750b7c380e8f91… Bitcoin-ABC#200 (addr:ecash:qrjckd8ep6grzchnsv9gcdzwcpwqjazn6unlutuff9 20.68XEC > Input Bitcoin-ABC#17 / 18 p2pkhafa535d4b4e2345cf7fce38f9… Bitcoin-ABC#46 (addr:ecash:qrjckd8ep6grzchnsv9gcdzwcpwqjazn6unlutuff9 96.45XEC > Input Bitcoin-ABC#18 / 18 p2pkh6ab5f652b42b27703f5c1fc34… Bitcoin-ABC#1 (addr:ecash:qzrn4d90fw6029pmdn95r5wy68z4638luyv5rnl303 88,932.29XEC Total Input: 552,910.39XEC < Output #0 / 0 p2pkh ecash:qz60j37wmr0wv2k9ksz5e4qkjdzgxggg3sr98q45ug 552,510.39XEC Total Output: 552,510.39XEC hosted by bitcoinabc.org
Summary: Yet another iteration on this but this time confirmed with local build and debug logs. We can still pin these versions, so we should. imo we should leave these debug logs in case there are future issues with CI, e.g. could happen if a diff lands that updates 2 modules at once, may need to see what dep got in. Test Plan: ``` docker build --progress=plain -f ecash-agora.Dockerfile -t ecash-agora_local . ``` Output (confirms we get the latest versions and not local versions) ``` #0 building with "default" instance using docker driver #1 [internal] load build definition from ecash-agora.Dockerfile #1 transferring dockerfile: 1.43kB done #1 DONE 0.0s #2 [internal] load metadata for docker.io/library/node:22-bookworm-slim #2 DONE 2.7s #3 [internal] load .dockerignore #3 transferring context: 2B done #3 DONE 0.0s #4 [1/5] FROM docker.io/library/node:22-bookworm-slim@sha256:7e3a5fac109e00e9f2616cd24f5227e2eb0d473bf33b98d661b0c1862f6bfbbd #4 DONE 0.0s #5 [internal] load build context #5 transferring context: 951.95kB 0.1s done #5 DONE 0.1s #6 [2/5] WORKDIR /app/modules/ecash-agora #6 CACHED #7 [3/5] COPY modules/ecash-agora . #7 DONE 0.4s #8 [4/5] RUN ECLIB_VERSION=$(npm view ecash-lib version) && CCLIENT_VERSION=$(npm view chronik-client version) && EWALLET_VERSION=$(npm view ecash-wallet version) && echo "Latest versions from npm:" && echo " ecash-lib: $ECLIB_VERSION" && echo " chronik-client: $CCLIENT_VERSION" && echo " ecash-wallet: $EWALLET_VERSION" && npm pkg set dependencies.ecash-lib=$ECLIB_VERSION && npm pkg set dependencies.chronik-client=$CCLIENT_VERSION && npm pkg set dependencies.ecash-wallet=$EWALLET_VERSION && echo "Updated package.json dependencies:" && cat package.json | grep -A 5 '"dependencies"' #8 4.790 Latest versions from npm: #8 4.790 ecash-lib: 4.5.1 #8 4.790 chronik-client: 3.4.1 #8 4.790 ecash-wallet: 2.2.0 #8 4.971 Updated package.json dependencies: #8 4.972 "dependencies": { #8 4.972 "chronik-client": "3.4.1", #8 4.972 "ecash-lib": "4.5.1", #8 4.972 "ecash-wallet": "2.2.0" #8 4.972 } #8 4.972 } #8 DONE 5.0s #9 [5/5] RUN rm -f package-lock.json && npm install && npm run build #9 7.044 #9 7.044 added 41 packages, changed 3 packages, and audited 315 packages in 7s #9 7.044 #9 7.044 43 packages are looking for funding #9 7.044 run `npm fund` for details #9 7.047 #9 7.047 7 vulnerabilities (1 low, 5 moderate, 1 high) #9 7.047 #9 7.047 To address all issues, run: #9 7.047 npm audit fix #9 7.047 #9 7.047 Run `npm audit` for details. #9 7.136 #9 7.136 > [email protected] build #9 7.136 > tsc && tsc -p ./tsconfig.build.json #9 7.136 #9 DONE 10.2s #10 exporting to image #10 exporting layers #10 exporting layers 0.3s done #10 writing image sha256:dcca77ce4b5f49de525a11894ad54cdac51e898e91af481a16b69a7c119abdd2 done #10 naming to docker.io/library/ecash-agora_local done #10 DONE 0.3s ``` Output: ``` docker run --rm ecash-agora_local cat /app/modules/ecash-agora/package.json { "name": "ecash-agora", "version": "2.6.2", "description": "Library for interacting with the eCash Agora protocol", "main": "./dist/index.js", "scripts": { "build": "tsc && tsc -p ./tsconfig.build.json", "test": "mocha --import=tsx ./src/*.test.ts ./src/**/*.test.ts", "integration-tests": "mocha --import=tsx ./tests/*.test.ts --timeout 60000", "coverage": "nyc npm run test", "junit": "npm run test --reporter mocha-junit-reporter" }, "repository": { "type": "git", "url": "git+https://github.com/Bitcoin-ABC/bitcoin-abc.git", "directory": "modules/ecash-agora" }, "keywords": [ "ecash", "xec", "bitcoin" ], "author": "Bitcoin ABC", "license": "MIT", "bugs": { "url": "https://github.com/Bitcoin-ABC/bitcoin-abc/issues" }, "homepage": "https://github.com/Bitcoin-ABC/bitcoin-abc#readme", "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.2", "@types/chai": "^4.3.14", "@types/chai-as-promised": "^7.1.8", "@types/mocha": "^10.0.6", "@types/node": "^20.12.7", "chai": "^4.4.1", "chai-as-promised": "^7.1.1", "mocha": "^10.4.0", "mocha-junit-reporter": "^2.2.1", "nyc": "^15.1.0", "source-map-support": "^0.5.21", "ts-node": "^10.9.2", "tsx": "^4.7.2", "typescript": "^5.4.3" }, "dependencies": { "chronik-client": "3.4.1", "ecash-lib": "4.5.1", "ecash-wallet": "2.2.0" } } ``` Reviewers: #bitcoin_abc, Fabien Reviewed By: #bitcoin_abc, Fabien Subscribers: Fabien Differential Revision: https://reviews.bitcoinabc.org/D18857
Now that regular and coinbase transaction validation checks have been separated, we must perform both during wallet reading. This PR re-introduces the coinbase tx check.