diff --git a/.cirrus.yml b/.cirrus.yml index 506aaa3827fdc..1b3501efc896d 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -91,8 +91,8 @@ task: task: name: "Win64 native [vs2022]" windows_container: - cpu: 6 - memory: 12G + cpu: 8 + memory: 16G image: cirrusci/windowsservercore:visualstudio2022 timeout_in: 120m env: @@ -144,7 +144,7 @@ task: - cd %CIRRUS_WORKING_DIR% - ccache --zero-stats --max-size=%CCACHE_SIZE% - python build_msvc\msvc-autogen.py - - msbuild build_msvc\bitcoin.sln -property:CLToolExe=%WRAPPED_CL%;UseMultiToolTask=true;Configuration=Release -maxCpuCount -verbosity:minimal -noLogo + - msbuild build_msvc\bitcoin.sln -property:CLToolExe=%WRAPPED_CL%;UseMultiToolTask=true;Configuration=Release -verbosity:minimal -noLogo - ccache --show-stats check_script: - build_msvc\x64\Release\test_navcoin.exe -l test_suite @@ -246,8 +246,8 @@ task: << : *GLOBAL_TASK_TEMPLATE container: image: ubuntu:jammy - cpu: 4 # Increase CPU and memory to avoid timeout - memory: 16G + cpu: 8 # Increase CPU and memory to avoid timeout + memory: 32G env: << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV FILE_ENV: "./ci/test/00_setup_env_native_fuzz.sh" @@ -313,4 +313,3 @@ task: env: << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV FILE_ENV: "./ci/test/00_setup_env_android.sh" - diff --git a/build_msvc/common.init.vcxproj.in b/build_msvc/common.init.vcxproj.in index 395fe028799ba..7c9e0d89c0e55 100644 --- a/build_msvc/common.init.vcxproj.in +++ b/build_msvc/common.init.vcxproj.in @@ -5,6 +5,7 @@ 16.0 true + 2 diff --git a/build_msvc/common.props b/build_msvc/common.props index 278a48de55a5c..e444c7efd3758 100644 --- a/build_msvc/common.props +++ b/build_msvc/common.props @@ -4,7 +4,7 @@ - $(SolutionDir)\..\src\bls\mcl\../cybozulib/include;$(SolutionDir)\..\src\bls\mcl\../cybozulib_ext/include;$(SolutionDir)\..\src\bls\mcl\include;$(SolutionDir)\..\src\bls\mcl\../xbyak;$(SolutionDir)..\src\bls\include;$(SolutionDir)..\src;$(SolutionDir)..\src\univalue\include;$(SolutionDir)..\src\leveldb\include;$(SolutionDir)..\src\minisketch\include + $(SolutionDir)\..\src\bls\mcl\../cybozulib/include;$(SolutionDir)\..\src\bls\mcl\../cybozulib_ext/include;$(SolutionDir)\..\src\bls\mcl\include;$(SolutionDir)\..\src\bls\mcl\../xbyak;$(SolutionDir)..\src\bls\include;$(SolutionDir)..\src;$(SolutionDir)..\src\univalue\include;$(SolutionDir)..\src\leveldb\include;$(SolutionDir)..\src\minisketch\include;$(SolutionDir)..\src\secp256k1\include;%(AdditionalIncludeDirectories) @@ -16,7 +16,7 @@ _MBCS;%(PreprocessorDefinitions);NOMINMAX;BLS_ETH;MCL_USE_VINT;MCL_VINT_FIXED_BUFFER;MCL_DONT_USE_OPENSSL;MCL_DONT_USE_XBYAK;MCLBN_DONT_EXPORT;MT;MCL_SIZEOF_UNIT=4;MCL_MAX_BIT_SIZE=384;CYBOZU_MINIMUM_EXCEPTION;%(PreprocessorDefinitions) - $(SolutionDir)../cybozulib_ext/lib;$(SolutionDir)lib + $(SolutionDir)../cybozulib_ext/lib;$(SolutionDir)lib;%(AdditionalLibraryDirectories) diff --git a/build_msvc/libbitcoinconsensus/libbitcoinconsensus.vcxproj b/build_msvc/libbitcoinconsensus/libbitcoinconsensus.vcxproj index 4cb0bdc90218a..e8c3234c4db69 100644 --- a/build_msvc/libbitcoinconsensus/libbitcoinconsensus.vcxproj +++ b/build_msvc/libbitcoinconsensus/libbitcoinconsensus.vcxproj @@ -8,6 +8,12 @@ StaticLibrary + + {1DBB979A-C212-45CD-9563-446A96F87F72} + + + {1DBB979A-C212-45CD-9563-446A96F87F71} + @@ -30,8 +36,14 @@ + + + + + + - \ No newline at end of file + diff --git a/build_msvc/navcoin-tx/navcoin-tx.vcxproj b/build_msvc/navcoin-tx/navcoin-tx.vcxproj index 633a412149ff5..22e9cc10b7ade 100644 --- a/build_msvc/navcoin-tx/navcoin-tx.vcxproj +++ b/build_msvc/navcoin-tx/navcoin-tx.vcxproj @@ -37,7 +37,9 @@ {1DBB979A-C212-45CD-9563-446A96F87F71} + + diff --git a/build_msvc/navcoin-util/navcoin-util.vcxproj b/build_msvc/navcoin-util/navcoin-util.vcxproj index 60a6dc7c01020..1bd5d9efcb8e3 100644 --- a/build_msvc/navcoin-util/navcoin-util.vcxproj +++ b/build_msvc/navcoin-util/navcoin-util.vcxproj @@ -37,6 +37,7 @@ {1DBB979A-C212-45CD-9563-446A96F87F71} + diff --git a/build_msvc/navcoin-wallet/navcoin-wallet.vcxproj b/build_msvc/navcoin-wallet/navcoin-wallet.vcxproj index d54e5a9eb9fe7..d8cce6d7e94cf 100644 --- a/build_msvc/navcoin-wallet/navcoin-wallet.vcxproj +++ b/build_msvc/navcoin-wallet/navcoin-wallet.vcxproj @@ -46,6 +46,7 @@ {1DBB979A-C212-45CD-9563-446A96F87F71} + diff --git a/ci/test/04_install.sh b/ci/test/04_install.sh index 53fe6d961ffde..abf88639d310f 100755 --- a/ci/test/04_install.sh +++ b/ci/test/04_install.sh @@ -124,13 +124,13 @@ CI_EXEC df -h if [ "$RUN_FUZZ_TESTS" = "true" ]; then export DIR_FUZZ_IN=${DIR_QA_ASSETS}/fuzz_seed_corpus/ if [ ! -d "$DIR_FUZZ_IN" ]; then - CI_EXEC git clone --depth=1 https://github.com/bitcoin-core/qa-assets "${DIR_QA_ASSETS}" + CI_EXEC git clone --depth=1 https://github.com/navcoin/qa-assets "${DIR_QA_ASSETS}" fi elif [ "$RUN_UNIT_TESTS" = "true" ] || [ "$RUN_UNIT_TESTS_SEQUENTIAL" = "true" ]; then export DIR_UNIT_TEST_DATA=${DIR_QA_ASSETS}/unit_test_data/ if [ ! -d "$DIR_UNIT_TEST_DATA" ]; then CI_EXEC mkdir -p "$DIR_UNIT_TEST_DATA" - CI_EXEC curl --location --fail https://github.com/bitcoin-core/qa-assets/raw/main/unit_test_data/script_assets_test.json -o "${DIR_UNIT_TEST_DATA}/script_assets_test.json" + CI_EXEC curl --location --fail https://github.com/navcoin/qa-assets/raw/main/unit_test_data/script_assets_test.json -o "${DIR_UNIT_TEST_DATA}/script_assets_test.json" fi fi diff --git a/doc/fuzzing.md b/doc/fuzzing.md index 92f12097c4e6c..cfb31196b2e9f 100644 --- a/doc/fuzzing.md +++ b/doc/fuzzing.md @@ -82,12 +82,12 @@ $ FUZZ=address_deserialize_v2 src/test/fuzz/fuzz -runs=1 fuzz_seed_corpus/addres ## Fuzzing corpora -The project's collection of seed corpora is found in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo. +The project's collection of seed corpora is found in the [`navcoin/qa-assets`](https://github.com/navcoin/qa-assets) repo. -To fuzz `process_message` using the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) seed corpus: +To fuzz `process_message` using the [`navcoin/qa-assets`](https://github.com/navcoin/qa-assets) seed corpus: ```sh -$ git clone https://github.com/bitcoin-core/qa-assets +$ git clone https://github.com/navcoin/qa-assets $ FUZZ=process_message src/test/fuzz/fuzz qa-assets/fuzz_seed_corpus/process_message/ INFO: Seed: 1346407872 INFO: Loaded 1 modules (424174 inline 8-bit counters): 424174 [0x55d8a9004ab8, 0x55d8a906c3a6), @@ -101,7 +101,7 @@ INFO: seed corpus: files: 991 min: 1b max: 1858b total: 288291b rss: 150Mb ## Run without sanitizers for increased throughput -Fuzzing on a harness compiled with `--with-sanitizers=address,fuzzer,undefined` is good for finding bugs. However, the very slow execution even under libFuzzer will limit the ability to find new coverage. A good approach is to perform occasional long runs without the additional bug-detectors (configure `--with-sanitizers=fuzzer`) and then merge new inputs into a corpus as described in the qa-assets repo (https://github.com/bitcoin-core/qa-assets/blob/main/.github/PULL_REQUEST_TEMPLATE.md). Patience is useful; even with improved throughput, libFuzzer may need days and 10s of millions of executions to reach deep/hard targets. +Fuzzing on a harness compiled with `--with-sanitizers=address,fuzzer,undefined` is good for finding bugs. However, the very slow execution even under libFuzzer will limit the ability to find new coverage. A good approach is to perform occasional long runs without the additional bug-detectors (configure `--with-sanitizers=fuzzer`) and then merge new inputs into a corpus as described in the qa-assets repo (https://github.com/navcoin/qa-assets/blob/main/.github/PULL_REQUEST_TEMPLATE.md). Patience is useful; even with improved throughput, libFuzzer may need days and 10s of millions of executions to reach deep/hard targets. ## Reproduce a fuzzer crash reported by the CI @@ -117,9 +117,9 @@ Fuzzing on a harness compiled with `--with-sanitizers=address,fuzzer,undefined` ## Submit improved coverage -If you find coverage increasing inputs when fuzzing you are highly encouraged to submit them for inclusion in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo. +If you find coverage increasing inputs when fuzzing you are highly encouraged to submit them for inclusion in the [`navcoin/qa-assets`](https://github.com/navcoin/qa-assets) repo. -Every single pull request submitted against the Bitcoin Core repo is automatically tested against all inputs in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo. Contributing new coverage increasing inputs is an easy way to help make Bitcoin Core more robust. +Every single pull request submitted against the Bitcoin Core repo is automatically tested against all inputs in the [`navcoin/qa-assets`](https://github.com/navcoin/qa-assets) repo. Contributing new coverage increasing inputs is an easy way to help make Bitcoin Core more robust. ## macOS hints for libFuzzer @@ -323,7 +323,7 @@ be decoded in the same way. Fuzzing with Eclipser will likely be much more effective if using an existing corpus: ```sh -$ git clone https://github.com/bitcoin-core/qa-assets +$ git clone https://github.com/navcoin/qa-assets $ FUZZ=bech32 dotnet Eclipser/build/Eclipser.dll fuzz -p src/test/fuzz/fuzz -t 36000 -i qa-assets/fuzz_seed_corpus/bech32 outputs --src stdin ``` diff --git a/src/Makefile.am b/src/Makefile.am index 65d6f9f989534..e07089f0bdcbf 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -420,6 +420,7 @@ libbitcoin_node_a_SOURCES = \ blsct/range_proof/generators.cpp \ blsct/range_proof/lazy_g1point.cpp \ blsct/range_proof/range_proof_logic.cpp \ + blsct/range_proof/range_proof.cpp \ blsct/range_proof/range_proof_with_transcript.cpp \ blsct/signature.cpp \ chain.cpp \ @@ -660,6 +661,11 @@ libbitcoin_consensus_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) libbitcoin_consensus_a_SOURCES = \ arith_uint256.cpp \ arith_uint256.h \ + blsct/arith/elements.cpp \ + blsct/arith/mcl/mcl_g1point.cpp \ + blsct/arith/mcl/mcl_scalar.cpp \ + blsct/range_proof/range_proof.cpp \ + blsct/signature.cpp \ consensus/amount.h \ consensus/merkle.cpp \ consensus/merkle.h \ @@ -684,6 +690,7 @@ libbitcoin_consensus_a_SOURCES = \ script/script_error.h \ serialize.h \ span.h \ + streams.h \ tinyformat.h \ uint256.cpp \ uint256.h \ @@ -698,6 +705,7 @@ libbitcoin_common_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) libbitcoin_common_a_SOURCES = \ base58.cpp \ bech32.cpp \ + blsct/arith/elements.cpp \ chainparams.cpp \ coins.cpp \ common/bloom.cpp \ @@ -744,6 +752,7 @@ endif libbitcoin_util_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) libbitcoin_util_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) libbitcoin_util_a_SOURCES = \ + blsct/arith/elements.cpp \ support/lockedpool.cpp \ chainparamsbase.cpp \ clientversion.cpp \ @@ -854,7 +863,7 @@ navcoin_cli_LDADD += $(EVENT_LIBS) # navcoin-tx binary # navcoin_tx_SOURCES = bitcoin-tx.cpp -navcoin_tx_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) +navcoin_tx_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BOOST_CPPFLAGS) navcoin_tx_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) navcoin_tx_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS) @@ -900,7 +909,7 @@ endif # navcoin-util binary # navcoin_util_SOURCES = bitcoin-util.cpp -navcoin_util_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) +navcoin_util_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BOOST_CPPFLAGS) navcoin_util_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) navcoin_util_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS) @@ -970,6 +979,7 @@ libbitcoinkernel_la_SOURCES = \ blsct/private_key.cpp \ blsct/public_key.cpp \ blsct/public_keys.cpp \ + blsct/range_proof/range_proof.cpp \ blsct/signature.cpp \ chain.cpp \ chainparamsbase.cpp \ @@ -1065,7 +1075,7 @@ libbitcoinconsensus_la_LIBADD = \ $(LIBBLS) \ $(LIBMCL) \ $(LIBSECP256K1) -libbitcoinconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include -DBUILD_BITCOIN_INTERNAL +libbitcoinconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include $(BLS_INCLUDES) -DBUILD_BITCOIN_INTERNAL libbitcoinconsensus_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) endif diff --git a/src/Makefile.test_util.include b/src/Makefile.test_util.include index 2484b80466b23..639ca8d00d5d0 100644 --- a/src/Makefile.test_util.include +++ b/src/Makefile.test_util.include @@ -17,6 +17,7 @@ TEST_UTIL_H = \ blsct/private_key.h \ blsct/public_key.h \ blsct/public_keys.h \ + blsct/signature.h \ test/util/blockfilter.h \ test/util/chainstate.h \ test/util/logging.h \ @@ -44,6 +45,7 @@ libtest_util_a_SOURCES = \ blsct/private_key.cpp \ blsct/public_key.cpp \ blsct/public_keys.cpp \ + blsct/signature.h \ test/util/blockfilter.cpp \ test/util/logging.cpp \ test/util/mining.cpp \ diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp index 57ca2bbe8a239..05ca733d09f3f 100644 --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -6,14 +6,15 @@ #include #endif +#include #include #include #include #include #include #include -#include #include +#include #include #include #include