Update depends/zcash to 5.4.0 release (#60)
* delete previous version * Squashed 'depend/zcash/' content from commit 774f2d8ed git-subtree-dir: depend/zcash git-subtree-split: 774f2d8eda62cc51990e0aa154f92f09ffba3873 * updates Cargo.toml
This commit is contained in:
parent
d352b0c971
commit
76c0aa5dae
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "zcash_script"
|
||||
version = "0.1.7"
|
||||
version = "0.1.9"
|
||||
authors = ["Tamas Blummer <tamas.blummer@gmail.com>", "Zcash Foundation <zebra@zfnd.org>"]
|
||||
license = "Apache-2.0"
|
||||
readme = "README.md"
|
||||
|
@ -51,7 +51,7 @@ external-secp = []
|
|||
# All these dependencies must match the versions in:
|
||||
# https://github.com/zcash/zcash/blob/<git subtree version>/Cargo.toml
|
||||
blake2b_simd = "1"
|
||||
cxx = { version = "=1.0.79", features = ["c++17"] }
|
||||
cxx = { version = "=1.0.83", features = ["c++17"] }
|
||||
libc = "0.2"
|
||||
memuse = "0.2"
|
||||
orchard = "0.3"
|
||||
|
@ -59,7 +59,7 @@ rand_core = "0.6"
|
|||
tracing = "0.1"
|
||||
zcash_encoding = "0.2"
|
||||
zcash_note_encryption = "0.2"
|
||||
zcash_primitives = { version = "0.8.1", features = ["transparent-inputs"] }
|
||||
zcash_primitives = { version = "0.9.1", features = ["transparent-inputs"] }
|
||||
|
||||
[build-dependencies]
|
||||
# The `bindgen` dependency should match the version used by zebra-state's `rocksdb` dependency in:
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
Please ensure this checklist is followed for any pull requests for this repo. This checklist must be checked by both the PR creator and by anyone who reviews the PR.
|
||||
* [ ] Relevant documentation for this PR has to be completed and reviewed by @mdr0id before the PR can be merged
|
||||
* [ ] A test plan for the PR must be documented in the PR notes and included in the test plan for the next regular release
|
||||
|
||||
As a note, all buildbot tests need to be passing and all appropriate code reviews need to be done before this PR can be merged
|
|
@ -130,3 +130,5 @@ src/fuzzing/*/output
|
|||
src/fuzz.cpp
|
||||
|
||||
.updatecheck-token
|
||||
.env
|
||||
poetry.lock
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Copyright (c) 2016-2022 The Zcash developers
|
||||
Copyright (c) 2009-2022 The Bitcoin Core developers
|
||||
Copyright (c) 2009-2022 Bitcoin Developers
|
||||
Copyright (c) 2016-2023 The Zcash developers
|
||||
Copyright (c) 2009-2023 The Bitcoin Core developers
|
||||
Copyright (c) 2009-2023 Bitcoin Developers
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -4,9 +4,9 @@ version = 3
|
|||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.17.0"
|
||||
version = "0.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
|
||||
checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
|
||||
dependencies = [
|
||||
"gimli",
|
||||
]
|
||||
|
@ -45,16 +45,25 @@ version = "0.7.6"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
|
||||
dependencies = [
|
||||
"getrandom 0.2.7",
|
||||
"getrandom 0.2.8",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.65"
|
||||
name = "aho-corasick"
|
||||
version = "0.7.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602"
|
||||
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.68"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
|
||||
|
||||
[[package]]
|
||||
name = "arrayref"
|
||||
|
@ -76,9 +85,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|||
|
||||
[[package]]
|
||||
name = "backtrace"
|
||||
version = "0.3.66"
|
||||
version = "0.3.67"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7"
|
||||
checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
|
||||
dependencies = [
|
||||
"addr2line",
|
||||
"cc",
|
||||
|
@ -212,9 +221,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae"
|
|||
|
||||
[[package]]
|
||||
name = "bls12_381"
|
||||
version = "0.7.0"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "62250ece575fa9b22068b3a8d59586f01d426dd7785522efd97632959e71c986"
|
||||
checksum = "a3c196a77437e7cc2fb515ce413a6401291578b5afc8ecb29a3c7ab957f05941"
|
||||
dependencies = [
|
||||
"ff",
|
||||
"group",
|
||||
|
@ -234,15 +243,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.11.0"
|
||||
version = "3.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d"
|
||||
checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
|
||||
|
||||
[[package]]
|
||||
name = "byte-slice-cast"
|
||||
version = "1.2.1"
|
||||
version = "1.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87c5fdd0166095e1d463fc6cc01aa8ce547ad77a4e84d42eb6762b084e28067e"
|
||||
checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
|
@ -252,15 +261,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
|
|||
|
||||
[[package]]
|
||||
name = "bytes"
|
||||
version = "1.2.1"
|
||||
version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
|
||||
checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.73"
|
||||
version = "1.0.78"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
|
||||
checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
|
@ -320,9 +329,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clearscreen"
|
||||
version = "1.0.10"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c969a6b6dadff9f3349b1f783f553e2411104763ca4789e1c6ca6a41f46a57b0"
|
||||
checksum = "41aa24cc5e1d6b3fc49ad4cd540b522fedcbe88bc6f259ff16e20e7010b6f8c7"
|
||||
dependencies = [
|
||||
"nix",
|
||||
"terminfo",
|
||||
|
@ -369,9 +378,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossbeam-epoch"
|
||||
version = "0.9.11"
|
||||
version = "0.9.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"
|
||||
checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cfg-if 1.0.0",
|
||||
|
@ -382,9 +391,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.12"
|
||||
version = "0.8.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
|
||||
checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
]
|
||||
|
@ -402,7 +411,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"rand_core 0.6.4",
|
||||
"typenum",
|
||||
]
|
||||
|
||||
|
@ -431,9 +439,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cxx"
|
||||
version = "1.0.79"
|
||||
version = "1.0.83"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f83d0ebf42c6eafb8d7c52f7e5f2d3003b89c7aa4fd2b79229209459a849af8"
|
||||
checksum = "bdf07d07d6531bfcdbe9b8b739b104610c6508dcc4d63b410585faf338241daf"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"cxxbridge-flags",
|
||||
|
@ -443,15 +451,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cxxbridge-flags"
|
||||
version = "1.0.79"
|
||||
version = "1.0.83"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "99d2199b00553eda8012dfec8d3b1c75fce747cf27c169a270b3b99e3448ab78"
|
||||
checksum = "ac040a39517fd1674e0f32177648334b0f4074625b5588a64519804ba0553b12"
|
||||
|
||||
[[package]]
|
||||
name = "cxxbridge-macro"
|
||||
version = "1.0.79"
|
||||
version = "1.0.83"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcb67a6de1f602736dd7eaead0080cf3435df806c61b24b13328db128c58868f"
|
||||
checksum = "1362b0ddcfc4eb0a1f57b68bd77dd99f0e826958a96abd0ae9bd092e114ffed6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -469,9 +477,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.5"
|
||||
version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c"
|
||||
checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
|
||||
dependencies = [
|
||||
"block-buffer 0.10.3",
|
||||
"crypto-common",
|
||||
|
@ -509,16 +517,16 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ed25519-zebra"
|
||||
version = "3.0.0"
|
||||
version = "3.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69"
|
||||
checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6"
|
||||
dependencies = [
|
||||
"curve25519-dalek",
|
||||
"hashbrown",
|
||||
"hex",
|
||||
"rand_core 0.6.4",
|
||||
"serde",
|
||||
"sha2",
|
||||
"thiserror",
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
|
@ -549,9 +557,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ff"
|
||||
version = "0.12.0"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e"
|
||||
checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160"
|
||||
dependencies = [
|
||||
"bitvec",
|
||||
"rand_core 0.6.4",
|
||||
|
@ -598,30 +606,30 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
|
|||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.24"
|
||||
version = "0.3.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050"
|
||||
checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.24"
|
||||
version = "0.3.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf"
|
||||
checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.24"
|
||||
version = "0.3.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1"
|
||||
checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.24"
|
||||
version = "0.3.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90"
|
||||
checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
|
@ -652,9 +660,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.7"
|
||||
version = "0.2.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
|
||||
checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
|
@ -663,9 +671,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.26.2"
|
||||
version = "0.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"
|
||||
checksum = "dec7af912d60cdbd3677c1af9352ebae6fb8394d165568a2234df0fa00f87793"
|
||||
|
||||
[[package]]
|
||||
name = "group"
|
||||
|
@ -755,9 +763,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.19"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||
checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
@ -814,9 +822,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
|
|||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.14.20"
|
||||
version = "0.14.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac"
|
||||
checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
|
@ -866,9 +874,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.9.1"
|
||||
version = "1.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
|
||||
checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"hashbrown",
|
||||
|
@ -885,15 +893,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ipnet"
|
||||
version = "2.5.0"
|
||||
version = "2.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b"
|
||||
checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146"
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.4"
|
||||
version = "1.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
|
||||
checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
|
@ -926,15 +934,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.135"
|
||||
version = "0.2.139"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
|
||||
checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
|
||||
|
||||
[[package]]
|
||||
name = "libm"
|
||||
version = "0.2.5"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565"
|
||||
checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
|
||||
|
||||
[[package]]
|
||||
name = "librustzcash"
|
||||
|
@ -964,6 +972,7 @@ dependencies = [
|
|||
"memuse",
|
||||
"metrics",
|
||||
"metrics-exporter-prometheus",
|
||||
"metrics-util",
|
||||
"nonempty",
|
||||
"orchard",
|
||||
"rand 0.8.5",
|
||||
|
@ -977,6 +986,7 @@ dependencies = [
|
|||
"subtle",
|
||||
"thiserror",
|
||||
"time",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"tracing-appender",
|
||||
"tracing-core",
|
||||
|
@ -993,9 +1003,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "link-cplusplus"
|
||||
version = "1.0.7"
|
||||
version = "1.0.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369"
|
||||
checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
@ -1045,9 +1055,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
|||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.6.5"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
|
||||
checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
@ -1108,6 +1118,7 @@ version = "0.14.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f7d24dc2dbae22bff6f1f9326ffce828c9f07ef9cc1e8002e5279f845432a30a"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-utils",
|
||||
"hashbrown",
|
||||
|
@ -1121,18 +1132,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.5.4"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
|
||||
checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
|
||||
dependencies = [
|
||||
"adler",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.8.4"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
|
||||
checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
|
@ -1142,13 +1153,14 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "nix"
|
||||
version = "0.24.2"
|
||||
version = "0.26.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc"
|
||||
checksum = "46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
"static_assertions",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1209,37 +1221,28 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.13.1"
|
||||
version = "1.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
|
||||
checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_threads"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.29.0"
|
||||
version = "0.30.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"
|
||||
checksum = "2b8c786513eb403643f2a88c244c2aaa270ef2153f55094587d0c48a3cf22a83"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.15.0"
|
||||
version = "1.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
|
||||
checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
|
@ -1328,9 +1331,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "parking_lot_core"
|
||||
version = "0.9.3"
|
||||
version = "0.9.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"
|
||||
checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
|
@ -1352,9 +1355,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pasta_curves"
|
||||
version = "0.4.0"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "369d7785168ad7ff0cbe467d968ca3e19a927d8536b11ef9c21b4e454b15ba42"
|
||||
checksum = "5cc65faf8e7313b4b1fbaa9f7ca917a0eed499a9663be71477f87993604341d8"
|
||||
dependencies = [
|
||||
"blake2b_simd",
|
||||
"ff",
|
||||
|
@ -1438,15 +1441,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "portable-atomic"
|
||||
version = "0.3.15"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "15eb2c6e362923af47e13c23ca5afb859e83d54452c55b0b9ac763b8f7c1ac16"
|
||||
checksum = "26f6a7b87c2e435a3241addceeeff740ff8b7e76b74c13bf9acb17fa454ea00b"
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.16"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
|
||||
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
||||
|
||||
[[package]]
|
||||
name = "primitive-types"
|
||||
|
@ -1472,9 +1475,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.46"
|
||||
version = "1.0.49"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
|
||||
checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
@ -1497,9 +1500,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.21"
|
||||
version = "1.0.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
|
||||
checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
@ -1570,7 +1573,7 @@ version = "0.6.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
|
||||
dependencies = [
|
||||
"getrandom 0.2.7",
|
||||
"getrandom 0.2.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1602,21 +1605,19 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rayon"
|
||||
version = "1.5.3"
|
||||
version = "1.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
|
||||
checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"crossbeam-deque",
|
||||
"either",
|
||||
"rayon-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rayon-core"
|
||||
version = "1.9.3"
|
||||
version = "1.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
|
||||
checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3"
|
||||
dependencies = [
|
||||
"crossbeam-channel",
|
||||
"crossbeam-deque",
|
||||
|
@ -1672,16 +1673,16 @@ version = "0.4.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
|
||||
dependencies = [
|
||||
"getrandom 0.2.7",
|
||||
"getrandom 0.2.8",
|
||||
"redox_syscall",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.6.0"
|
||||
version = "1.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
|
||||
checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
|
||||
dependencies = [
|
||||
"regex-syntax",
|
||||
]
|
||||
|
@ -1697,9 +1698,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.27"
|
||||
version = "0.6.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
|
||||
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
|
||||
|
||||
[[package]]
|
||||
name = "ring"
|
||||
|
@ -1722,7 +1723,7 @@ version = "0.1.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f"
|
||||
dependencies = [
|
||||
"digest 0.10.5",
|
||||
"digest 0.10.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1739,9 +1740,9 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6"
|
|||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.11"
|
||||
version = "1.0.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
|
||||
checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
|
@ -1778,18 +1779,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.145"
|
||||
version = "1.0.152"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
|
||||
checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.145"
|
||||
version = "1.0.152"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
|
||||
checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -1798,9 +1799,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.86"
|
||||
version = "1.0.91"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074"
|
||||
checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
|
@ -1877,9 +1878,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.102"
|
||||
version = "1.0.107"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
|
||||
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -1919,18 +1920,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.37"
|
||||
version = "1.0.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
|
||||
checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.37"
|
||||
version = "1.0.38"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
|
||||
checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -1948,21 +1949,30 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.3.15"
|
||||
version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c"
|
||||
checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"libc",
|
||||
"num_threads",
|
||||
"serde",
|
||||
"time-core",
|
||||
"time-macros",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time-macros"
|
||||
version = "0.2.4"
|
||||
name = "time-core"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792"
|
||||
checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
|
||||
|
||||
[[package]]
|
||||
name = "time-macros"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2"
|
||||
dependencies = [
|
||||
"time-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinyvec"
|
||||
|
@ -1981,23 +1991,23 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
|
|||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "1.21.2"
|
||||
version = "1.24.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099"
|
||||
checksum = "1d9f76183f91ecfb55e1d7d5602bd1d979e38a3a522fe900241cf195624d67ae"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"libc",
|
||||
"mio",
|
||||
"pin-project-lite",
|
||||
"socket2",
|
||||
"winapi",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
version = "0.5.9"
|
||||
version = "0.5.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
|
||||
checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
@ -2071,21 +2081,21 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "try-lock"
|
||||
version = "0.2.3"
|
||||
version = "0.2.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
|
||||
checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
|
||||
|
||||
[[package]]
|
||||
name = "typenum"
|
||||
version = "1.15.0"
|
||||
version = "1.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
|
||||
checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
|
||||
|
||||
[[package]]
|
||||
name = "uint"
|
||||
version = "0.9.4"
|
||||
version = "0.9.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a45526d29728d135c2900b0d30573fe3ee79fceb12ef534c7bb30e810a91b601"
|
||||
checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"crunchy",
|
||||
|
@ -2095,9 +2105,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.5"
|
||||
version = "1.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
|
||||
checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-normalization"
|
||||
|
@ -2269,52 +2279,66 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
|||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.36.1"
|
||||
version = "0.42.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
|
||||
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.36.1"
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
|
||||
checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.36.1"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
|
||||
checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.36.1"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
|
||||
checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.36.1"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
|
||||
checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.36.1"
|
||||
version = "0.42.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
|
||||
checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
|
||||
|
||||
[[package]]
|
||||
name = "wyz"
|
||||
version = "0.5.0"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e"
|
||||
checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
|
||||
dependencies = [
|
||||
"tap",
|
||||
]
|
||||
|
@ -2367,9 +2391,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "zcash_primitives"
|
||||
version = "0.8.1"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c2e24cb5e3352f751c699f47d363279178871b126d23f49d9018f6bae49219a"
|
||||
checksum = "0f9a45953c4ddd81d68f45920955707f45c8926800671f354dd13b97507edf28"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"bip0039",
|
||||
|
@ -2377,9 +2401,7 @@ dependencies = [
|
|||
"blake2b_simd",
|
||||
"blake2s_simd",
|
||||
"bls12_381",
|
||||
"bs58",
|
||||
"byteorder",
|
||||
"chacha20poly1305",
|
||||
"equihash",
|
||||
"ff",
|
||||
"fpe",
|
||||
|
@ -2405,14 +2427,13 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "zcash_proofs"
|
||||
version = "0.8.0"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4b5cdd6f43c8b56449e52f760d71241b8490530dc10a88d990e8dcf0c435a957"
|
||||
checksum = "77381adc72286874e563ee36ba99953946abcbd195ada45440a2754ca823d407"
|
||||
dependencies = [
|
||||
"bellman",
|
||||
"blake2b_simd",
|
||||
"bls12_381",
|
||||
"byteorder",
|
||||
"directories",
|
||||
"group",
|
||||
"jubjub",
|
||||
|
@ -2434,9 +2455,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "zeroize_derive"
|
||||
version = "1.3.2"
|
||||
version = "1.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17"
|
||||
checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Zcash 5.3.0
|
||||
Zcash 5.4.0
|
||||
<img align="right" width="120" height="80" src="doc/imgs/logo.png">
|
||||
===========
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_boost_base.html
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_boost_base.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
|
@ -11,9 +11,9 @@
|
|||
# Test for the Boost C++ libraries of a particular version (or newer)
|
||||
#
|
||||
# If no path to the installed boost library is given the macro searches
|
||||
# under /usr, /usr/local, /opt and /opt/local and evaluates the
|
||||
# $BOOST_ROOT environment variable. Further documentation is available at
|
||||
# <http://randspringer.de/boost/index.html>.
|
||||
# under /usr, /usr/local, /opt, /opt/local and /opt/homebrew and evaluates
|
||||
# the $BOOST_ROOT environment variable. Further documentation is available
|
||||
# at <http://randspringer.de/boost/index.html>.
|
||||
#
|
||||
# This macro calls:
|
||||
#
|
||||
|
@ -33,7 +33,15 @@
|
|||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 26
|
||||
#serial 51
|
||||
|
||||
# example boost program (need to pass version)
|
||||
m4_define([_AX_BOOST_BASE_PROGRAM],
|
||||
[AC_LANG_PROGRAM([[
|
||||
#include <boost/version.hpp>
|
||||
]],[[
|
||||
(void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($1))]));
|
||||
]])])
|
||||
|
||||
AC_DEFUN([AX_BOOST_BASE],
|
||||
[
|
||||
|
@ -44,110 +52,123 @@ AC_ARG_WITH([boost],
|
|||
or disable it (ARG=no)
|
||||
@<:@ARG=yes@:>@ ])],
|
||||
[
|
||||
if test "$withval" = "no"; then
|
||||
want_boost="no"
|
||||
elif test "$withval" = "yes"; then
|
||||
want_boost="yes"
|
||||
ac_boost_path=""
|
||||
else
|
||||
want_boost="yes"
|
||||
ac_boost_path="$withval"
|
||||
fi
|
||||
AS_CASE([$withval],
|
||||
[no],[want_boost="no";_AX_BOOST_BASE_boost_path=""],
|
||||
[yes],[want_boost="yes";_AX_BOOST_BASE_boost_path=""],
|
||||
[want_boost="yes";_AX_BOOST_BASE_boost_path="$withval"])
|
||||
],
|
||||
[want_boost="yes"])
|
||||
|
||||
|
||||
AC_ARG_WITH([boost-libdir],
|
||||
AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
|
||||
[Force given directory for boost libraries. Note that this will override library path detection, so use this parameter only if default library detection fails and you know exactly where your boost libraries are located.]),
|
||||
[
|
||||
if test -d "$withval"
|
||||
then
|
||||
ac_boost_lib_path="$withval"
|
||||
else
|
||||
AC_MSG_ERROR(--with-boost-libdir expected directory name)
|
||||
fi
|
||||
],
|
||||
[ac_boost_lib_path=""]
|
||||
)
|
||||
[AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
|
||||
[Force given directory for boost libraries.
|
||||
Note that this will override library path detection,
|
||||
so use this parameter only if default library detection fails
|
||||
and you know exactly where your boost libraries are located.])],
|
||||
[
|
||||
AS_IF([test -d "$withval"],
|
||||
[_AX_BOOST_BASE_boost_lib_path="$withval"],
|
||||
[AC_MSG_ERROR([--with-boost-libdir expected directory name])])
|
||||
],
|
||||
[_AX_BOOST_BASE_boost_lib_path=""])
|
||||
|
||||
if test "x$want_boost" = "xyes"; then
|
||||
boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
|
||||
boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
|
||||
boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
|
||||
boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
|
||||
boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
|
||||
if test "x$boost_lib_version_req_sub_minor" = "x" ; then
|
||||
boost_lib_version_req_sub_minor="0"
|
||||
fi
|
||||
WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
|
||||
AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
|
||||
BOOST_LDFLAGS=""
|
||||
BOOST_CPPFLAGS=""
|
||||
AS_IF([test "x$want_boost" = "xyes"],
|
||||
[_AX_BOOST_BASE_RUNDETECT([$1],[$2],[$3])])
|
||||
AC_SUBST(BOOST_CPPFLAGS)
|
||||
AC_SUBST(BOOST_LDFLAGS)
|
||||
])
|
||||
|
||||
|
||||
# convert a version string in $2 to numeric and affect to polymorphic var $1
|
||||
AC_DEFUN([_AX_BOOST_BASE_TONUMERICVERSION],[
|
||||
AS_IF([test "x$2" = "x"],[_AX_BOOST_BASE_TONUMERICVERSION_req="1.20.0"],[_AX_BOOST_BASE_TONUMERICVERSION_req="$2"])
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_req_shorten=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\.[[0-9]]*\)'`
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_req_major=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\)'`
|
||||
AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_major" = "x"],
|
||||
[AC_MSG_ERROR([You should at least specify libboost major version])])
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_req_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.\([[0-9]]*\)'`
|
||||
AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_minor" = "x"],
|
||||
[_AX_BOOST_BASE_TONUMERICVERSION_req_minor="0"])
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
|
||||
AS_IF([test "X$_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor" = "X"],
|
||||
[_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor="0"])
|
||||
_AX_BOOST_BASE_TONUMERICVERSION_RET=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req_major \* 100000 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_minor \* 100 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor`
|
||||
AS_VAR_SET($1,$_AX_BOOST_BASE_TONUMERICVERSION_RET)
|
||||
])
|
||||
|
||||
dnl Run the detection of boost should be run only if $want_boost
|
||||
AC_DEFUN([_AX_BOOST_BASE_RUNDETECT],[
|
||||
_AX_BOOST_BASE_TONUMERICVERSION(WANT_BOOST_VERSION,[$1])
|
||||
succeeded=no
|
||||
|
||||
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
dnl On 64-bit systems check for system libraries in both lib64 and lib.
|
||||
dnl The former is specified by FHS, but e.g. Debian does not adhere to
|
||||
dnl this (as it rises problems for generic multi-arch support).
|
||||
dnl The last entry in the list is chosen by default when no libraries
|
||||
dnl are found, e.g. when only header-only libraries are installed!
|
||||
libsubdirs="lib"
|
||||
ax_arch=`uname -m`
|
||||
case $ax_arch in
|
||||
x86_64)
|
||||
libsubdirs="lib64 libx32 lib lib64"
|
||||
;;
|
||||
ppc64|s390x|sparc64|aarch64|ppc64le)
|
||||
libsubdirs="lib64 lib lib64 ppc64le"
|
||||
;;
|
||||
esac
|
||||
AS_CASE([${host_cpu}],
|
||||
[x86_64],[libsubdirs="lib64 libx32 lib lib64"],
|
||||
[mips*64*],[libsubdirs="lib64 lib32 lib lib64"],
|
||||
[ppc64|powerpc64|s390x|sparc64|aarch64|ppc64le|powerpc64le|riscv64|e2k],[libsubdirs="lib64 lib lib64"],
|
||||
[libsubdirs="lib"]
|
||||
)
|
||||
|
||||
dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give
|
||||
dnl them priority over the other paths since, if libs are found there, they
|
||||
dnl are almost assuredly the ones desired.
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
libsubdirs="lib/${host_cpu}-${host_os} $libsubdirs"
|
||||
|
||||
case ${host_cpu} in
|
||||
i?86)
|
||||
libsubdirs="lib/i386-${host_os} $libsubdirs"
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl some arches may advertise a cpu type that doesn't line up with their
|
||||
dnl prefix's cpu type. For example, uname may report armv7l while libs are
|
||||
dnl installed to /usr/lib/arm-linux-gnueabihf. Try getting the compiler's
|
||||
dnl value for an extra chance of finding the correct path.
|
||||
libsubdirs="lib/`$CXX -dumpmachine 2>/dev/null` $libsubdirs"
|
||||
AS_CASE([${host_cpu}],
|
||||
[i?86],[multiarch_libsubdir="lib/i386-${host_os}"],
|
||||
[armv7l],[multiarch_libsubdir="lib/arm-${host_os}"],
|
||||
[multiarch_libsubdir="lib/${host_cpu}-${host_os}"]
|
||||
)
|
||||
|
||||
dnl first we check the system location for boost libraries
|
||||
dnl this location is chosen if boost libraries are installed with the --layout=system option
|
||||
dnl or if you install boost with RPM
|
||||
if test "$ac_boost_path" != ""; then
|
||||
BOOST_CPPFLAGS="-I$ac_boost_path/include"
|
||||
for ac_boost_path_tmp in $libsubdirs; do
|
||||
if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
|
||||
BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
|
||||
break
|
||||
fi
|
||||
done
|
||||
elif test "$cross_compiling" != yes; then
|
||||
for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
|
||||
if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
|
||||
for libsubdir in $libsubdirs ; do
|
||||
if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
AS_IF([test "x$_AX_BOOST_BASE_boost_path" != "x"],[
|
||||
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) includes in "$_AX_BOOST_BASE_boost_path/include"])
|
||||
AS_IF([test -d "$_AX_BOOST_BASE_boost_path/include" && test -r "$_AX_BOOST_BASE_boost_path/include"],[
|
||||
AC_MSG_RESULT([yes])
|
||||
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include"
|
||||
for _AX_BOOST_BASE_boost_path_tmp in $multiarch_libsubdir $libsubdirs; do
|
||||
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) lib path in "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp"])
|
||||
AS_IF([test -d "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" && test -r "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" ],[
|
||||
AC_MSG_RESULT([yes])
|
||||
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp";
|
||||
break;
|
||||
],
|
||||
[AC_MSG_RESULT([no])])
|
||||
done],[
|
||||
AC_MSG_RESULT([no])])
|
||||
],[
|
||||
if test X"$cross_compiling" = Xyes; then
|
||||
search_libsubdirs=$multiarch_libsubdir
|
||||
else
|
||||
search_libsubdirs="$multiarch_libsubdir $libsubdirs"
|
||||
fi
|
||||
for _AX_BOOST_BASE_boost_path_tmp in /usr /usr/local /opt /opt/local /opt/homebrew ; do
|
||||
if test -d "$_AX_BOOST_BASE_boost_path_tmp/include/boost" && test -r "$_AX_BOOST_BASE_boost_path_tmp/include/boost" ; then
|
||||
for libsubdir in $search_libsubdirs ; do
|
||||
if ls "$_AX_BOOST_BASE_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
done
|
||||
BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
|
||||
BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
|
||||
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path_tmp/$libsubdir"
|
||||
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path_tmp/include"
|
||||
break;
|
||||
fi
|
||||
done
|
||||
fi
|
||||
])
|
||||
|
||||
dnl overwrite ld flags if we have required special directory with
|
||||
dnl --with-boost-libdir parameter
|
||||
if test "$ac_boost_lib_path" != ""; then
|
||||
BOOST_LDFLAGS="-L$ac_boost_lib_path"
|
||||
fi
|
||||
AS_IF([test "x$_AX_BOOST_BASE_boost_lib_path" != "x"],
|
||||
[BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path"])
|
||||
|
||||
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION)])
|
||||
CPPFLAGS_SAVED="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||
export CPPFLAGS
|
||||
|
@ -158,15 +179,7 @@ if test "x$want_boost" = "xyes"; then
|
|||
|
||||
AC_REQUIRE([AC_PROG_CXX])
|
||||
AC_LANG_PUSH(C++)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
@%:@include <boost/version.hpp>
|
||||
]], [[
|
||||
#if BOOST_VERSION >= $WANT_BOOST_VERSION
|
||||
// Everything is okay
|
||||
#else
|
||||
# error Boost version is too old
|
||||
#endif
|
||||
]])],[
|
||||
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
|
||||
AC_MSG_RESULT(yes)
|
||||
succeeded=yes
|
||||
found_system=yes
|
||||
|
@ -178,40 +191,50 @@ if test "x$want_boost" = "xyes"; then
|
|||
|
||||
dnl if we found no boost with system layout we search for boost libraries
|
||||
dnl built and installed without the --layout=system option or for a staged(not installed) version
|
||||
if test "x$succeeded" != "xyes"; then
|
||||
if test "x$succeeded" != "xyes" ; then
|
||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||
LDFLAGS="$LDFLAGS_SAVED"
|
||||
BOOST_CPPFLAGS=
|
||||
BOOST_LDFLAGS=
|
||||
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||
BOOST_LDFLAGS=
|
||||
fi
|
||||
_version=0
|
||||
if test "$ac_boost_path" != ""; then
|
||||
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
||||
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
|
||||
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
||||
if test -n "$_AX_BOOST_BASE_boost_path" ; then
|
||||
if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path"; then
|
||||
for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do
|
||||
_version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
||||
V_CHECK=`expr $_version_tmp \> $_version`
|
||||
if test "$V_CHECK" = "1" ; then
|
||||
if test "x$V_CHECK" = "x1" ; then
|
||||
_version=$_version_tmp
|
||||
fi
|
||||
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
||||
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
|
||||
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE"
|
||||
done
|
||||
dnl if nothing found search for layout used in Windows distributions
|
||||
if test -z "$BOOST_CPPFLAGS"; then
|
||||
if test -d "$ac_boost_path/boost" && test -r "$ac_boost_path/boost"; then
|
||||
BOOST_CPPFLAGS="-I$ac_boost_path"
|
||||
if test -d "$_AX_BOOST_BASE_boost_path/boost" && test -r "$_AX_BOOST_BASE_boost_path/boost"; then
|
||||
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path"
|
||||
fi
|
||||
fi
|
||||
dnl if we found something and BOOST_LDFLAGS was unset before
|
||||
dnl (because "$_AX_BOOST_BASE_boost_lib_path" = ""), set it here.
|
||||
if test -n "$BOOST_CPPFLAGS" && test -z "$BOOST_LDFLAGS"; then
|
||||
for libsubdir in $libsubdirs ; do
|
||||
if ls "$_AX_BOOST_BASE_boost_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
done
|
||||
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$libsubdir"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if test "$cross_compiling" != yes; then
|
||||
for ac_boost_path in /usr /usr/local /opt /opt/local ; do
|
||||
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
||||
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
|
||||
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
||||
if test "x$cross_compiling" != "xyes" ; then
|
||||
for _AX_BOOST_BASE_boost_path in /usr /usr/local /opt /opt/local /opt/homebrew ; do
|
||||
if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path" ; then
|
||||
for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do
|
||||
_version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
||||
V_CHECK=`expr $_version_tmp \> $_version`
|
||||
if test "$V_CHECK" = "1" ; then
|
||||
if test "x$V_CHECK" = "x1" ; then
|
||||
_version=$_version_tmp
|
||||
best_path=$ac_boost_path
|
||||
best_path=$_AX_BOOST_BASE_boost_path
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
@ -219,7 +242,7 @@ if test "x$want_boost" = "xyes"; then
|
|||
|
||||
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
||||
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
|
||||
if test "$ac_boost_lib_path" = ""; then
|
||||
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||
for libsubdir in $libsubdirs ; do
|
||||
if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
done
|
||||
|
@ -227,7 +250,7 @@ if test "x$want_boost" = "xyes"; then
|
|||
fi
|
||||
fi
|
||||
|
||||
if test "x$BOOST_ROOT" != "x"; then
|
||||
if test -n "$BOOST_ROOT" ; then
|
||||
for libsubdir in $libsubdirs ; do
|
||||
if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||
done
|
||||
|
@ -236,7 +259,7 @@ if test "x$want_boost" = "xyes"; then
|
|||
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
|
||||
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
|
||||
V_CHECK=`expr $stage_version_shorten \>\= $_version`
|
||||
if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
|
||||
if test "x$V_CHECK" = "x1" && test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
|
||||
BOOST_CPPFLAGS="-I$BOOST_ROOT"
|
||||
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
|
||||
|
@ -251,15 +274,7 @@ if test "x$want_boost" = "xyes"; then
|
|||
export LDFLAGS
|
||||
|
||||
AC_LANG_PUSH(C++)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
@%:@include <boost/version.hpp>
|
||||
]], [[
|
||||
#if BOOST_VERSION >= $WANT_BOOST_VERSION
|
||||
// Everything is okay
|
||||
#else
|
||||
# error Boost version is too old
|
||||
#endif
|
||||
]])],[
|
||||
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
|
||||
AC_MSG_RESULT(yes)
|
||||
succeeded=yes
|
||||
found_system=yes
|
||||
|
@ -268,17 +283,15 @@ if test "x$want_boost" = "xyes"; then
|
|||
AC_LANG_POP([C++])
|
||||
fi
|
||||
|
||||
if test "$succeeded" != "yes" ; then
|
||||
if test "$_version" = "0" ; then
|
||||
AC_MSG_NOTICE([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
|
||||
if test "x$succeeded" != "xyes" ; then
|
||||
if test "x$_version" = "x0" ; then
|
||||
AC_MSG_NOTICE([[We could not detect the boost libraries (version $1 or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
|
||||
else
|
||||
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
|
||||
fi
|
||||
# execute ACTION-IF-NOT-FOUND (if present):
|
||||
ifelse([$3], , :, [$3])
|
||||
else
|
||||
AC_SUBST(BOOST_CPPFLAGS)
|
||||
AC_SUBST(BOOST_LDFLAGS)
|
||||
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
|
||||
# execute ACTION-IF-FOUND (if present):
|
||||
ifelse([$2], , :, [$2])
|
||||
|
@ -286,6 +299,5 @@ if test "x$want_boost" = "xyes"; then
|
|||
|
||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||
LDFLAGS="$LDFLAGS_SAVED"
|
||||
fi
|
||||
|
||||
])
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_boost_chrono.html
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_boost_chrono.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
|
@ -8,7 +8,7 @@
|
|||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Test for System library from the Boost C++ libraries. The macro requires
|
||||
# Test for Chrono library from the Boost C++ libraries. The macro requires
|
||||
# a preceding call to AX_BOOST_BASE. Further documentation is available at
|
||||
# <http://randspringer.de/boost/index.html>.
|
||||
#
|
||||
|
@ -29,7 +29,7 @@
|
|||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 1
|
||||
#serial 5
|
||||
|
||||
AC_DEFUN([AX_BOOST_CHRONO],
|
||||
[
|
||||
|
@ -68,7 +68,7 @@ AC_DEFUN([AX_BOOST_CHRONO],
|
|||
CXXFLAGS_SAVE=$CXXFLAGS
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/chrono.hpp>]],
|
||||
[[boost::chrono::system_clock::time_point time;]])],
|
||||
[[boost::chrono::system_clock::time_point* time = new boost::chrono::system_clock::time_point; delete time;]])],
|
||||
ax_cv_boost_chrono=yes, ax_cv_boost_chrono=no)
|
||||
CXXFLAGS=$CXXFLAGS_SAVE
|
||||
AC_LANG_POP([C++])
|
||||
|
@ -81,7 +81,6 @@ AC_DEFUN([AX_BOOST_CHRONO],
|
|||
|
||||
LDFLAGS_SAVE=$LDFLAGS
|
||||
if test "x$ax_boost_user_chrono_lib" = "x"; then
|
||||
ax_lib=
|
||||
for libextension in `ls $BOOSTLIBDIR/libboost_chrono*.so* $BOOSTLIBDIR/libboost_chrono*.dylib* $BOOSTLIBDIR/libboost_chrono*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_chrono.*\)\.so.*$;\1;' -e 's;^lib\(boost_chrono.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_chrono.*\)\.a.*$;\1;'` ; do
|
||||
ax_lib=${libextension}
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
|
@ -106,7 +105,7 @@ AC_DEFUN([AX_BOOST_CHRONO],
|
|||
|
||||
fi
|
||||
if test "x$ax_lib" = "x"; then
|
||||
AC_MSG_ERROR(Could not find a version of the boost_chrono library!)
|
||||
AC_MSG_ERROR(Could not find a version of the Boost::Chrono library!)
|
||||
fi
|
||||
if test "x$link_chrono" = "xno"; then
|
||||
AC_MSG_ERROR(Could not link against $ax_lib !)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_boost_filesystem.html
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_boost_filesystem.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
|
@ -31,7 +31,7 @@
|
|||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 26
|
||||
#serial 28
|
||||
|
||||
AC_DEFUN([AX_BOOST_FILESYSTEM],
|
||||
[
|
||||
|
@ -80,7 +80,6 @@ AC_DEFUN([AX_BOOST_FILESYSTEM],
|
|||
if test "x$ax_cv_boost_filesystem" = "xyes"; then
|
||||
AC_DEFINE(HAVE_BOOST_FILESYSTEM,,[define if the Boost::Filesystem library is available])
|
||||
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
|
||||
ax_lib=
|
||||
if test "x$ax_boost_user_filesystem_lib" = "x"; then
|
||||
for libextension in `ls -r $BOOSTLIBDIR/libboost_filesystem* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
|
||||
ax_lib=${libextension}
|
||||
|
@ -105,7 +104,7 @@ AC_DEFUN([AX_BOOST_FILESYSTEM],
|
|||
|
||||
fi
|
||||
if test "x$ax_lib" = "x"; then
|
||||
AC_MSG_ERROR(Could not find a version of the boost_filesystem library!)
|
||||
AC_MSG_ERROR(Could not find a version of the Boost::Filesystem library!)
|
||||
fi
|
||||
if test "x$link_filesystem" != "xyes"; then
|
||||
AC_MSG_ERROR(Could not link against $ax_lib !)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# ============================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_boost_program_options.html
|
||||
# ============================================================================
|
||||
# =============================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_boost_program_options.html
|
||||
# =============================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
|
@ -29,7 +29,7 @@
|
|||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 24
|
||||
#serial 26
|
||||
|
||||
AC_DEFUN([AX_BOOST_PROGRAM_OPTIONS],
|
||||
[
|
||||
|
@ -96,7 +96,7 @@ AC_DEFUN([AX_BOOST_PROGRAM_OPTIONS],
|
|||
done
|
||||
fi
|
||||
if test "x$ax_lib" = "x"; then
|
||||
AC_MSG_ERROR(Could not find a version of the boost_program_options library!)
|
||||
AC_MSG_ERROR(Could not find a version of the Boost::Program_Options library!)
|
||||
fi
|
||||
if test "x$link_program_options" != "xyes"; then
|
||||
AC_MSG_ERROR([Could not link against [$ax_lib] !])
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_boost_system.html
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_boost_system.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
|
@ -31,7 +31,7 @@
|
|||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 18
|
||||
#serial 20
|
||||
|
||||
AC_DEFUN([AX_BOOST_SYSTEM],
|
||||
[
|
||||
|
@ -84,7 +84,6 @@ AC_DEFUN([AX_BOOST_SYSTEM],
|
|||
|
||||
LDFLAGS_SAVE=$LDFLAGS
|
||||
if test "x$ax_boost_user_system_lib" = "x"; then
|
||||
ax_lib=
|
||||
for libextension in `ls -r $BOOSTLIBDIR/libboost_system* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
|
||||
ax_lib=${libextension}
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
|
@ -109,7 +108,7 @@ AC_DEFUN([AX_BOOST_SYSTEM],
|
|||
|
||||
fi
|
||||
if test "x$ax_lib" = "x"; then
|
||||
AC_MSG_ERROR(Could not find a version of the boost_system library!)
|
||||
AC_MSG_ERROR(Could not find a version of the Boost::System library!)
|
||||
fi
|
||||
if test "x$link_system" = "xno"; then
|
||||
AC_MSG_ERROR(Could not link against $ax_lib !)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_boost_thread.html
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_boost_thread.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
|
@ -30,73 +30,96 @@
|
|||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 27
|
||||
#serial 33
|
||||
|
||||
AC_DEFUN([AX_BOOST_THREAD],
|
||||
[
|
||||
AC_ARG_WITH([boost-thread],
|
||||
AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@],
|
||||
[use the Thread library from boost - it is possible to specify a certain library for the linker
|
||||
e.g. --with-boost-thread=boost_thread-gcc-mt ]),
|
||||
AC_ARG_WITH([boost-thread],
|
||||
AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@],
|
||||
[use the Thread library from boost -
|
||||
it is possible to specify a certain library for the linker
|
||||
e.g. --with-boost-thread=boost_thread-gcc-mt ]),
|
||||
[
|
||||
if test "$withval" = "no"; then
|
||||
want_boost="no"
|
||||
elif test "$withval" = "yes"; then
|
||||
if test "$withval" = "yes"; then
|
||||
want_boost="yes"
|
||||
ax_boost_user_thread_lib=""
|
||||
else
|
||||
want_boost="yes"
|
||||
ax_boost_user_thread_lib="$withval"
|
||||
fi
|
||||
want_boost="yes"
|
||||
ax_boost_user_thread_lib="$withval"
|
||||
fi
|
||||
],
|
||||
[want_boost="yes"]
|
||||
)
|
||||
)
|
||||
|
||||
if test "x$want_boost" = "xyes"; then
|
||||
if test "x$want_boost" = "xyes"; then
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_BUILD])
|
||||
CPPFLAGS_SAVED="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||
export CPPFLAGS
|
||||
CPPFLAGS_SAVED="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||
export CPPFLAGS
|
||||
|
||||
LDFLAGS_SAVED="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
||||
export LDFLAGS
|
||||
LDFLAGS_SAVED="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
||||
export LDFLAGS
|
||||
|
||||
AC_CACHE_CHECK(whether the Boost::Thread library is available,
|
||||
ax_cv_boost_thread,
|
||||
ax_cv_boost_thread,
|
||||
[AC_LANG_PUSH([C++])
|
||||
CXXFLAGS_SAVE=$CXXFLAGS
|
||||
CXXFLAGS_SAVE=$CXXFLAGS
|
||||
|
||||
if test "x$host_os" = "xsolaris" ; then
|
||||
CXXFLAGS="-pthreads $CXXFLAGS"
|
||||
elif test "x$host_os" = "xmingw32" ; then
|
||||
CXXFLAGS="-mthreads $CXXFLAGS"
|
||||
else
|
||||
CXXFLAGS="-pthread $CXXFLAGS"
|
||||
fi
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/thread/thread.hpp>]],
|
||||
[[boost::thread_group thrds;
|
||||
return 0;]])],
|
||||
ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
|
||||
CXXFLAGS=$CXXFLAGS_SAVE
|
||||
case "x$host_os" in
|
||||
xsolaris )
|
||||
CXXFLAGS="-pthreads $CXXFLAGS"
|
||||
break;
|
||||
;;
|
||||
xmingw32 )
|
||||
CXXFLAGS="-mthreads $CXXFLAGS"
|
||||
break;
|
||||
;;
|
||||
*android* )
|
||||
break;
|
||||
;;
|
||||
* )
|
||||
CXXFLAGS="-pthread $CXXFLAGS"
|
||||
break;
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM(
|
||||
[[@%:@include <boost/thread/thread.hpp>]],
|
||||
[[boost::thread_group thrds;
|
||||
return 0;]])],
|
||||
ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
|
||||
CXXFLAGS=$CXXFLAGS_SAVE
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
if test "x$ax_cv_boost_thread" = "xyes"; then
|
||||
if test "x$host_os" = "xsolaris" ; then
|
||||
BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
|
||||
elif test "x$host_os" = "xmingw32" ; then
|
||||
BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
|
||||
else
|
||||
BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
|
||||
fi
|
||||
])
|
||||
if test "x$ax_cv_boost_thread" = "xyes"; then
|
||||
case "x$host_os" in
|
||||
xsolaris )
|
||||
BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
|
||||
break;
|
||||
;;
|
||||
xmingw32 )
|
||||
BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
|
||||
break;
|
||||
;;
|
||||
*android* )
|
||||
break;
|
||||
;;
|
||||
* )
|
||||
BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
|
||||
break;
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(BOOST_CPPFLAGS)
|
||||
AC_SUBST(BOOST_CPPFLAGS)
|
||||
|
||||
AC_DEFINE(HAVE_BOOST_THREAD,,[define if the Boost::Thread library is available])
|
||||
AC_DEFINE(HAVE_BOOST_THREAD,,
|
||||
[define if the Boost::Thread library is available])
|
||||
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
|
||||
|
||||
LDFLAGS_SAVE=$LDFLAGS
|
||||
LDFLAGS_SAVE=$LDFLAGS
|
||||
case "x$host_os" in
|
||||
*bsd* )
|
||||
LDFLAGS="-pthread $LDFLAGS"
|
||||
|
@ -104,47 +127,61 @@ AC_DEFUN([AX_BOOST_THREAD],
|
|||
;;
|
||||
esac
|
||||
if test "x$ax_boost_user_thread_lib" = "x"; then
|
||||
ax_lib=
|
||||
for libextension in `ls -r $BOOSTLIBDIR/libboost_thread* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do
|
||||
ax_lib=${libextension}
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
[BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
[link_thread="yes"; break],
|
||||
[link_thread="no"])
|
||||
done
|
||||
done
|
||||
if test "x$link_thread" != "xyes"; then
|
||||
for libextension in `ls -r $BOOSTLIBDIR/boost_thread* 2>/dev/null | sed 's,.*/,,' | sed 's,\..*,,'`; do
|
||||
ax_lib=${libextension}
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
[BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
[link_thread="yes"; break],
|
||||
[link_thread="no"])
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
else
|
||||
for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
[BOOST_THREAD_LIB="-l$ax_lib"; AC_SUBST(BOOST_THREAD_LIB) link_thread="yes"; break],
|
||||
AC_CHECK_LIB($ax_lib, exit,
|
||||
[link_thread="yes"; break],
|
||||
[link_thread="no"])
|
||||
done
|
||||
|
||||
fi
|
||||
if test "x$ax_lib" = "x"; then
|
||||
AC_MSG_ERROR(Could not find a version of the boost_thread library!)
|
||||
AC_MSG_ERROR(Could not find a version of the Boost::Thread library!)
|
||||
fi
|
||||
if test "x$link_thread" = "xno"; then
|
||||
AC_MSG_ERROR(Could not link against $ax_lib !)
|
||||
else
|
||||
case "x$host_os" in
|
||||
*bsd* )
|
||||
BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
|
||||
break;
|
||||
;;
|
||||
esac
|
||||
if test "x$link_thread" = "xno"; then
|
||||
AC_MSG_ERROR(Could not link against $ax_lib !)
|
||||
else
|
||||
BOOST_THREAD_LIB="-l$ax_lib"
|
||||
case "x$host_os" in
|
||||
*bsd* )
|
||||
BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
|
||||
break;
|
||||
;;
|
||||
xsolaris )
|
||||
BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread"
|
||||
break;
|
||||
;;
|
||||
xmingw32 )
|
||||
break;
|
||||
;;
|
||||
*android* )
|
||||
break;
|
||||
;;
|
||||
* )
|
||||
BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread"
|
||||
break;
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(BOOST_THREAD_LIB)
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||
LDFLAGS="$LDFLAGS_SAVED"
|
||||
fi
|
||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||
LDFLAGS="$LDFLAGS_SAVED"
|
||||
fi
|
||||
])
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# ================================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_boost_unit_test_framework.html
|
||||
# ================================================================================
|
||||
# =================================================================================
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_boost_unit_test_framework.html
|
||||
# =================================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
|
@ -29,7 +29,7 @@
|
|||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 19
|
||||
#serial 22
|
||||
|
||||
AC_DEFUN([AX_BOOST_UNIT_TEST_FRAMEWORK],
|
||||
[
|
||||
|
@ -66,7 +66,7 @@ AC_DEFUN([AX_BOOST_UNIT_TEST_FRAMEWORK],
|
|||
[AC_LANG_PUSH([C++])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/test/unit_test.hpp>]],
|
||||
[[using boost::unit_test::test_suite;
|
||||
test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" ); return 0;]])],
|
||||
test_suite* test= BOOST_TEST_SUITE( "Unit test example 1" ); if (test == NULL) { return 1; } else { return 0; }]])],
|
||||
ax_cv_boost_unit_test_framework=yes, ax_cv_boost_unit_test_framework=no)
|
||||
AC_LANG_POP([C++])
|
||||
])
|
||||
|
@ -76,7 +76,6 @@ AC_DEFUN([AX_BOOST_UNIT_TEST_FRAMEWORK],
|
|||
|
||||
if test "x$ax_boost_user_unit_test_framework_lib" = "x"; then
|
||||
saved_ldflags="${LDFLAGS}"
|
||||
ax_lib=
|
||||
for monitor_library in `ls $BOOSTLIBDIR/libboost_unit_test_framework*.so* $BOOSTLIBDIR/libboost_unit_test_framework*.dylib* $BOOSTLIBDIR/libboost_unit_test_framework*.a* 2>/dev/null` ; do
|
||||
if test -r $monitor_library ; then
|
||||
libextension=`echo $monitor_library | sed 's,.*/,,' | sed -e 's;^lib\(boost_unit_test_framework.*\)\.so.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_unit_test_framework.*\)\.a.*$;\1;'`
|
||||
|
@ -125,7 +124,7 @@ AC_DEFUN([AX_BOOST_UNIT_TEST_FRAMEWORK],
|
|||
done
|
||||
fi
|
||||
if test "x$ax_lib" = "x"; then
|
||||
AC_MSG_ERROR(Could not find a version of the boost_unit_test_framework library!)
|
||||
AC_MSG_ERROR(Could not find a version of the Boost::Unit_Test_Framework library!)
|
||||
fi
|
||||
if test "x$link_unit_test_framework" != "xyes"; then
|
||||
AC_MSG_ERROR(Could not link against $ax_lib !)
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
|
||||
AC_PREREQ([2.60])
|
||||
define(_CLIENT_VERSION_MAJOR, 5)
|
||||
define(_CLIENT_VERSION_MINOR, 3)
|
||||
define(_CLIENT_VERSION_MINOR, 4)
|
||||
define(_CLIENT_VERSION_REVISION, 0)
|
||||
define(_CLIENT_VERSION_BUILD, 50)
|
||||
define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50)))
|
||||
define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1)))
|
||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||
define(_COPYRIGHT_YEAR, 2022)
|
||||
define(_COPYRIGHT_YEAR, 2023)
|
||||
AC_INIT([Zcash],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_SUFFIX(_ZC_BUILD_VAL)],[https://github.com/zcash/zcash/issues],[zcash])
|
||||
AC_CONFIG_SRCDIR([src/main.cpp])
|
||||
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
|
||||
|
@ -896,7 +896,8 @@ if test x$use_boost = xyes; then
|
|||
|
||||
dnl Check for boost libs
|
||||
dnl We need Boost >= 1.62 to fix a potential security bug (https://github.com/zcash/zcash/issues/1241)
|
||||
AX_BOOST_BASE([1.62])
|
||||
dnl We need Boost >= 1.77 to fix usage of statx on Docker (https://github.com/zcash/zcash/issues/4945)
|
||||
AX_BOOST_BASE([1.77])
|
||||
AX_BOOST_SYSTEM
|
||||
AX_BOOST_FILESYSTEM
|
||||
AX_BOOST_PROGRAM_OPTIONS
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
# infra-tekton-labs
|
||||
Examples of CI/CD used to support Zcash build and testing
|
||||
|
||||
# Environment Tooling Setup (Pre-Install/Install)
|
||||
### Install Docker
|
||||
https://docs.docker.com/engine/install/
|
||||
|
||||
#### Setup Docker
|
||||
If you are installing Docker for the first time, to run `docker` without `sudo` privilege for every docker command:
|
||||
|
||||
- Check if Docker group already exists:
|
||||
- `cat /etc/group | grep docker`
|
||||
- How to create docker group:
|
||||
- `sudo groupadd docker`
|
||||
- Add current user to docker group
|
||||
- `sudo usermod -a -G docker $CURR_USER`
|
||||
- Validate current user was added:
|
||||
- `cat /etc/group | grep docker`
|
||||
- Restart system to persist changes and graceful setup (had issues with just logout/login)
|
||||
|
||||
### Install Kind
|
||||
https://kind.sigs.k8s.io/
|
||||
|
||||
### Install Kubctl
|
||||
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
|
||||
|
||||
### Install Tkn
|
||||
https://tekton.dev/docs/cli/
|
||||
|
||||
# Setup Local Zcash CI Environment
|
||||
Follow the steps below 1-3 to complete a local Zcash Tekton installation, assuming the above dependencies are installed.
|
||||
|
||||
### Create cluster (e.g. micro k8, kind, minicube)
|
||||
1. `kind create cluster --name zcash-tekton-lab`
|
||||
|
||||
Other Useful commands
|
||||
- Validate cluster creation & context: `kubectl cluster-info --context kind-zcash-tekton-lab`
|
||||
|
||||
- Delete cluster: `kind delete cluster --name zcash-tekton-lab || true`
|
||||
|
||||
- List Kube contexts: `kubectl config get-contexts`
|
||||
|
||||
- Delete Kube contexts: `kubectl config delete-context <context_name>`
|
||||
|
||||
- Setup Kube context: `kubectl config current-context`
|
||||
|
||||
- Create new Kube context: `kubectl config set-context zcash_local_ci --user=cluster-admin`
|
||||
|
||||
- Switch to new context: `kubectl config use-context zcash_local_ci`
|
||||
|
||||
### Create Tekton Pipeline in cluster
|
||||
See: https://github.com/tektoncd/pipeline for recent version
|
||||
|
||||
2. `kubectl apply -f releases/tekton-pipeline-v0.37.0.yaml`
|
||||
|
||||
(Alternative)
|
||||
|
||||
`kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.37.0/release.yaml`
|
||||
|
||||
### Create Tekton Dashboard in cluster
|
||||
See: https://github.com/tektoncd/dashboard for recent version
|
||||
|
||||
3. `kubectl apply -f releases/tekton-dashboard-readonly-v0.27.0.yaml`
|
||||
|
||||
Validate deployment of Tekton Dashboard & Pipeline
|
||||
|
||||
`kubectl get pods --namespace tekton-pipelines`
|
||||
|
||||
Forward Tekton Dashboard:
|
||||
|
||||
`kubectl --namespace tekton-pipelines port-forward svc/tekton-dashboard 9097:9097 &`
|
||||
|
||||
View Dashboard in Browser:
|
||||
|
||||
`http://localhost:9097/`
|
||||
|
||||
## Create Tekton Task
|
||||
kubectl apply -f ./tasks/zcash-build.yml
|
||||
|
||||
tkn task start --showlog zcash-build
|
||||
|
||||
tkn task delete zcash-build
|
||||
|
||||
## Create Tekton Pipeline
|
||||
kubectl apply -f ./pipeline/zcash-build-pipeline.yml
|
||||
|
||||
tkn pipeline start --showlog zcash-build-pipeline
|
||||
|
||||
tkn pipeline delete zcash-build-pipeline
|
|
@ -0,0 +1,334 @@
|
|||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
name: extensions.dashboard.tekton.dev
|
||||
spec:
|
||||
group: dashboard.tekton.dev
|
||||
names:
|
||||
categories:
|
||||
- tekton
|
||||
- tekton-dashboard
|
||||
kind: Extension
|
||||
plural: extensions
|
||||
shortNames:
|
||||
- ext
|
||||
- exts
|
||||
preserveUnknownFields: false
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- jsonPath: .spec.apiVersion
|
||||
name: API version
|
||||
type: string
|
||||
- jsonPath: .spec.name
|
||||
name: Kind
|
||||
type: string
|
||||
- jsonPath: .spec.displayname
|
||||
name: Display name
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: Age
|
||||
type: date
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
x-kubernetes-preserve-unknown-fields: true
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
name: tekton-dashboard
|
||||
namespace: tekton-pipelines
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
name: tekton-dashboard-info
|
||||
namespace: tekton-pipelines
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resourceNames:
|
||||
- dashboard-info
|
||||
resources:
|
||||
- configmaps
|
||||
verbs:
|
||||
- get
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
name: tekton-dashboard-backend
|
||||
rules:
|
||||
- apiGroups:
|
||||
- apiextensions.k8s.io
|
||||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- apiGroups:
|
||||
- security.openshift.io
|
||||
resources:
|
||||
- securitycontextconstraints
|
||||
verbs:
|
||||
- use
|
||||
- apiGroups:
|
||||
- tekton.dev
|
||||
resources:
|
||||
- clustertasks
|
||||
- clustertasks/status
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- triggers.tekton.dev
|
||||
resources:
|
||||
- clusterinterceptors
|
||||
- clustertriggerbindings
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
name: tekton-dashboard-tenant
|
||||
rules:
|
||||
- apiGroups:
|
||||
- dashboard.tekton.dev
|
||||
resources:
|
||||
- extensions
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- events
|
||||
- namespaces
|
||||
- pods
|
||||
- pods/log
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- tekton.dev
|
||||
resources:
|
||||
- tasks
|
||||
- taskruns
|
||||
- pipelines
|
||||
- pipelineruns
|
||||
- pipelineresources
|
||||
- conditions
|
||||
- tasks/status
|
||||
- taskruns/status
|
||||
- pipelines/status
|
||||
- pipelineruns/status
|
||||
- taskruns/finalizers
|
||||
- pipelineruns/finalizers
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- triggers.tekton.dev
|
||||
resources:
|
||||
- eventlisteners
|
||||
- triggerbindings
|
||||
- triggers
|
||||
- triggertemplates
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
name: tekton-dashboard-info
|
||||
namespace: tekton-pipelines
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: tekton-dashboard-info
|
||||
subjects:
|
||||
- apiGroup: rbac.authorization.k8s.io
|
||||
kind: Group
|
||||
name: system:authenticated
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
rbac.dashboard.tekton.dev/subject: tekton-dashboard
|
||||
name: tekton-dashboard-backend
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: tekton-dashboard-backend
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: tekton-dashboard
|
||||
namespace: tekton-pipelines
|
||||
---
|
||||
apiVersion: v1
|
||||
data:
|
||||
version: v0.27.0
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
name: dashboard-info
|
||||
namespace: tekton-pipelines
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app: tekton-dashboard
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/name: dashboard
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
app.kubernetes.io/version: v0.27.0
|
||||
dashboard.tekton.dev/release: v0.27.0
|
||||
version: v0.27.0
|
||||
name: tekton-dashboard
|
||||
namespace: tekton-pipelines
|
||||
spec:
|
||||
ports:
|
||||
- name: http
|
||||
port: 9097
|
||||
protocol: TCP
|
||||
targetPort: 9097
|
||||
selector:
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/name: dashboard
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app: tekton-dashboard
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/name: dashboard
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
app.kubernetes.io/version: v0.27.0
|
||||
dashboard.tekton.dev/release: v0.27.0
|
||||
version: v0.27.0
|
||||
name: tekton-dashboard
|
||||
namespace: tekton-pipelines
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/name: dashboard
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: tekton-dashboard
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/name: dashboard
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
app.kubernetes.io/version: v0.27.0
|
||||
name: tekton-dashboard
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- --port=9097
|
||||
- --logout-url=
|
||||
- --pipelines-namespace=tekton-pipelines
|
||||
- --triggers-namespace=tekton-pipelines
|
||||
- --read-only=true
|
||||
- --log-level=info
|
||||
- --log-format=json
|
||||
- --namespace=
|
||||
- --stream-logs=true
|
||||
- --external-logs=
|
||||
env:
|
||||
- name: INSTALLED_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
image: gcr.io/tekton-releases/github.com/tektoncd/dashboard/cmd/dashboard:v0.27.0@sha256:d57860eb2ff1f97ca1b657eda6ec640584ec8b756e80a5f888c98b7b056c14c1
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 9097
|
||||
name: tekton-dashboard
|
||||
ports:
|
||||
- containerPort: 9097
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /readiness
|
||||
port: 9097
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 65532
|
||||
serviceAccountName: tekton-dashboard
|
||||
volumes: []
|
||||
|
||||
---
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/component: dashboard
|
||||
app.kubernetes.io/instance: default
|
||||
app.kubernetes.io/part-of: tekton-dashboard
|
||||
rbac.dashboard.tekton.dev/subject: tekton-dashboard
|
||||
name: tekton-dashboard-tenant
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: tekton-dashboard-tenant
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: tekton-dashboard
|
||||
namespace: tekton-pipelines
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,218 @@
|
|||
---
|
||||
apiVersion: tekton.dev/v1beta1
|
||||
kind: Task
|
||||
metadata:
|
||||
name: zcash-build-bench
|
||||
spec:
|
||||
params:
|
||||
- name: JOBS
|
||||
default: "4"
|
||||
type: string
|
||||
- name: BUILD_FOR_HOST
|
||||
default: x86_64-pc-linux-gnu
|
||||
type: string
|
||||
- name: CONFIGURE_FLAGS
|
||||
default: ""
|
||||
type: string
|
||||
- name: BUILD_CONTAINER
|
||||
default: electriccoinco/zcashd-bench-debian10
|
||||
type: string
|
||||
- name: TEST_TARGET
|
||||
default: ""
|
||||
type: string
|
||||
resources:
|
||||
inputs:
|
||||
- name: source
|
||||
type: git
|
||||
steps:
|
||||
- name: build
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cd workspace/source
|
||||
echo $(git rev-parse HEAD)
|
||||
echo $(git rev-parse --short HEAD)
|
||||
|
||||
if [ "$(params.BUILD_FOR_HOST)" == "x86_64-apple-darwin18" ]
|
||||
then
|
||||
mkdir -p depends/SDKs
|
||||
curl -fs https://ecc.mypinata.cloud/ipfs/QmeSwckvSCGL9SXGdEHoAyqXdzD7T9HYTwsC34Bj5EVDF5 \
|
||||
-o depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz
|
||||
tar zxvf depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz \
|
||||
-C depends/SDKs
|
||||
fi
|
||||
|
||||
CONFIGURE_FLAGS=$(params.CONFIGURE_FLAGS) HOST=$(params.BUILD_FOR_HOST) ./zcutil/build.sh -j$(params.JOBS)
|
||||
|
||||
- name: bench-sleep
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time sleep | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-createsaplingspend
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time createsaplingspend | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-verifysaplingspend
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time verifysaplingspend | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-createsaplingoutput
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time createsaplingoutput | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-verifysaplingoutput
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time verifysaplingoutput | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-createjoinsplit
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time createjoinsplit | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-verifyjoinsplit
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time verifyjoinsplit | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-verifyequihash
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time verifyequihash | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-loadwallet-200k-recv
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp -r /home/benchmark-200k-UTXOs.tar.xz /workspace/source
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time loadwallet 200k-recv | sed 1d | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-loadwallet-200k-send
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp -r /home/benchmark-200k-UTXOs.tar.xz /workspace/source
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time loadwallet 200k-send | sed 1d | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-listunspent-200k-recv
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp -r /home/benchmark-200k-UTXOs.tar.xz /workspace/source
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time listunspent 200k-recv | sed 1d | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-listunspent-200k-send
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp -r /home/benchmark-200k-UTXOs.tar.xz /workspace/source
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time listunspent 200k-send | sed 1d | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-connectblocksapling
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp -r /home/block-1723244.tar.xz /workspace/source
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time connectblocksapling | sed -n '2,$p' | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-connectblockorchard
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp -r /home/block-1708048.tar.xz /workspace/source
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time connectblockorchard | sed -n '2,$p' | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
||||
|
||||
- name: bench-connectblockslow
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
cp -r /home/block-107134.tar.xz /workspace/source
|
||||
cp /home/perf_metrics.py /workspace/source
|
||||
cd /workspace/source
|
||||
|
||||
./qa/zcash/performance-measurements.sh time connectblockslow | sed -n '2,$p' | jq '.[]|.runningtime | tonumber' | python ./perf_metrics.py
|
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
apiVersion: tekton.dev/v1beta1
|
||||
kind: Task
|
||||
metadata:
|
||||
name: zcash-build-test
|
||||
spec:
|
||||
params:
|
||||
- name: JOBS
|
||||
default: "4"
|
||||
type: string
|
||||
- name: BUILD_FOR_HOST
|
||||
default: x86_64-pc-linux-gnu
|
||||
type: string
|
||||
- name: CONFIGURE_FLAGS
|
||||
default: ""
|
||||
type: string
|
||||
- name: BUILD_CONTAINER
|
||||
default: electriccoinco/zcashd-worker-ubuntu2004v2
|
||||
type: string
|
||||
- name: TEST_TARGET
|
||||
default: ""
|
||||
type: string
|
||||
resources:
|
||||
inputs:
|
||||
- name: source
|
||||
type: git
|
||||
steps:
|
||||
- name: build
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cd workspace/source
|
||||
echo $(git rev-parse HEAD)
|
||||
echo $(git rev-parse --short HEAD)
|
||||
|
||||
if [ "$(params.BUILD_FOR_HOST)" == "x86_64-apple-darwin18" ]
|
||||
then
|
||||
mkdir -p depends/SDKs
|
||||
curl -fs https://ecc.mypinata.cloud/ipfs/QmeSwckvSCGL9SXGdEHoAyqXdzD7T9HYTwsC34Bj5EVDF5 \
|
||||
-o depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz
|
||||
tar zxvf depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz \
|
||||
-C depends/SDKs
|
||||
fi
|
||||
|
||||
CONFIGURE_FLAGS=$(params.CONFIGURE_FLAGS) HOST=$(params.BUILD_FOR_HOST) ./zcutil/build.sh -j$(params.JOBS)
|
||||
|
||||
- name: test
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
python -m pip install pyblake2 pyflakes python-qpid-proton pyutil pyzmq requests simplejson
|
||||
cp -a /home/.zcash-params $HOME/
|
||||
echo $(git rev-parse HEAD)
|
||||
echo $(git rev-parse --short HEAD)
|
||||
HOST=x86_64-pc-linux-gnu /workspace/source/qa/zcash/full_test_suite.py $(params.TEST_TARGET)
|
|
@ -0,0 +1,51 @@
|
|||
---
|
||||
apiVersion: tekton.dev/v1beta1
|
||||
kind: Task
|
||||
metadata:
|
||||
name: zcash-build
|
||||
spec:
|
||||
params:
|
||||
- name: JOBS
|
||||
default: "4"
|
||||
type: string
|
||||
- name: BUILD_FOR_HOST
|
||||
default: x86_64-pc-linux-gnu
|
||||
type: string
|
||||
- name: CONFIGURE_FLAGS
|
||||
default: ""
|
||||
type: string
|
||||
- name: BUILD_CONTAINER
|
||||
default: electriccoinco/zcashd-worker-ubuntu2004v2
|
||||
type: string
|
||||
resources:
|
||||
inputs:
|
||||
- name: source
|
||||
type: git
|
||||
steps:
|
||||
- name: setup-venv
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -e -o pipefail
|
||||
python3 -m venv /venv/zcash-build-venv
|
||||
source /venv/zcash-build-venv/bin/activate
|
||||
python -m pip install pyblake2 pyflakes python-qpid-proton pyutil pyzmq requests simplejson
|
||||
|
||||
- name: build
|
||||
image: $(params.BUILD_CONTAINER)
|
||||
script: |
|
||||
#!/bin/bash
|
||||
set -o pipefail
|
||||
cd workspace/source
|
||||
echo $(git rev-parse HEAD)
|
||||
echo $(git rev-parse --short HEAD)
|
||||
if [ "$(params.BUILD_FOR_HOST)" == "x86_64-apple-darwin18" ]
|
||||
then
|
||||
mkdir -p depends/SDKs
|
||||
curl -fs https://ecc.mypinata.cloud/ipfs/QmeSwckvSCGL9SXGdEHoAyqXdzD7T9HYTwsC34Bj5EVDF5 \
|
||||
-o depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz
|
||||
tar zxvf depends/SDKs/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz \
|
||||
-C depends/SDKs
|
||||
fi
|
||||
|
||||
CONFIGURE_FLAGS=$(params.CONFIGURE_FLAGS) HOST=$(params.BUILD_FOR_HOST) ./zcutil/build.sh -j$(params.JOBS)
|
|
@ -1,3 +1,51 @@
|
|||
zcash (5.4.0) stable; urgency=medium
|
||||
|
||||
* 5.4.0 release.
|
||||
|
||||
-- Electric Coin Company <team@electriccoin.co> Wed, 08 Feb 2023 17:21:10 +0000
|
||||
|
||||
zcash (5.4.0~rc4) stable; urgency=medium
|
||||
|
||||
* 5.4.0-rc4 release.
|
||||
|
||||
-- Electric Coin Company <team@electriccoin.co> Wed, 01 Feb 2023 17:37:55 -0700
|
||||
|
||||
zcash (5.4.0~rc3) stable; urgency=medium
|
||||
|
||||
* 5.4.0-rc3 release.
|
||||
|
||||
-- Electric Coin Company <team@electriccoin.co> Fri, 27 Jan 2023 15:07:19 -0700
|
||||
|
||||
zcash (5.4.0~rc2) stable; urgency=medium
|
||||
|
||||
* 5.4.0-rc2 release.
|
||||
|
||||
-- Electric Coin Company <team@electriccoin.co> Tue, 24 Jan 2023 00:04:35 +0000
|
||||
|
||||
zcash (5.4.0~rc1) stable; urgency=medium
|
||||
|
||||
* 5.4.0-rc1 release.
|
||||
|
||||
-- Electric Coin Company <team@electriccoin.co> Thu, 19 Jan 2023 22:57:59 +0000
|
||||
|
||||
zcash (5.3.2) stable; urgency=medium
|
||||
|
||||
* 5.3.2 release.
|
||||
|
||||
-- Electric Coin Company <team@electriccoin.co> Sat, 03 Dec 2022 19:58:44 +0000
|
||||
|
||||
zcash (5.3.1) stable; urgency=medium
|
||||
|
||||
* 5.3.1 release.
|
||||
|
||||
-- Electric Coin Company <team@electriccoin.co> Fri, 02 Dec 2022 02:46:42 +0000
|
||||
|
||||
zcash (5.3.1~rc1) stable; urgency=medium
|
||||
|
||||
* 5.3.1-rc1 release.
|
||||
|
||||
-- Electric Coin Company <team@electriccoin.co> Wed, 23 Nov 2022 22:18:55 -0700
|
||||
|
||||
zcash (5.3.0) stable; urgency=medium
|
||||
|
||||
* 5.3.0 release.
|
||||
|
|
|
@ -1 +1 @@
|
|||
9
|
||||
13
|
||||
|
|
|
@ -4,9 +4,9 @@ Upstream-Contact: Electric Coin Company <team@electriccoin.co>
|
|||
Source: https://github.com/zcash/zcash
|
||||
|
||||
Files: *
|
||||
Copyright: 2016-2022, The Zcash developers
|
||||
2009-2022, Bitcoin Core developers
|
||||
2009-2022, Bitcoin Developers
|
||||
Copyright: 2016-2023, The Zcash developers
|
||||
2009-2023, The Bitcoin Core developers
|
||||
2009-2023, Bitcoin Developers
|
||||
License: Expat
|
||||
Comment: The Bitcoin Core developers encompasses the current developers listed on
|
||||
bitcoin.org, as well as the numerous contributors to the project.
|
||||
|
@ -160,6 +160,12 @@ Files: depends/sources/utfcpp-*.tar.gz
|
|||
Copyright: 2006 Nemanja Trifunovic
|
||||
License: Boost-Software-License-1.0
|
||||
|
||||
Files: depends/sources/tl-expected-*.tar.gz
|
||||
Copyright: 2017-2021 Sy Brand <simonrbrand@gmail.com> (@TartanLlama), 2022 The Zcash developers
|
||||
License: CC0-1.0
|
||||
Comment: Other contributors are Simon Truscott (@bobbleclank), Kévin Alexandre Boissonneault (@KABoissonneault),
|
||||
and Björn Fahller (@rollbear).
|
||||
|
||||
Files: depends/*/vendored-sources/orchard/*
|
||||
Copyright: 2020-2022 The Electric Coin Company
|
||||
License: BOSL-1+ with Zcash exception
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
'''
|
||||
Run this script inside of src/ and it will look for all the files
|
||||
that were changed this year that still have the last year in the
|
||||
copyright headers, and it will fix the headers on that file using
|
||||
a perl regex one liner.
|
||||
|
||||
For example: if it finds something like this and we're in 2014
|
||||
|
||||
// Copyright (c) 2009-2013 The Bitcoin Core developers
|
||||
|
||||
it will change it to
|
||||
|
||||
// Copyright (c) 2009-2014 The Bitcoin Core developers
|
||||
|
||||
It will do this for all the files in the folder and its children.
|
||||
|
||||
Author: @gubatron
|
||||
'''
|
||||
import os
|
||||
import time
|
||||
|
||||
year = time.gmtime()[0]
|
||||
last_year = year - 1
|
||||
command = "perl -pi -e 's/%s The Bitcoin/%s The Bitcoin/' %s"
|
||||
listFilesCommand = "find . | grep %s"
|
||||
|
||||
extensions = [".cpp",".h"]
|
||||
|
||||
def getLastGitModifiedDate(filePath):
|
||||
gitGetLastCommitDateCommand = "git log " + filePath +" | grep Date | head -n 1"
|
||||
p = os.popen(gitGetLastCommitDateCommand)
|
||||
result = ""
|
||||
for l in p:
|
||||
result = l
|
||||
break
|
||||
result = result.replace("\n","")
|
||||
return result
|
||||
|
||||
n=1
|
||||
for extension in extensions:
|
||||
foundFiles = os.popen(listFilesCommand % extension)
|
||||
for filePath in foundFiles:
|
||||
filePath = filePath[1:-1]
|
||||
if filePath.endswith(extension):
|
||||
filePath = os.getcwd() + filePath
|
||||
modifiedTime = getLastGitModifiedDate(filePath)
|
||||
if len(modifiedTime) > 0 and str(year) in modifiedTime:
|
||||
print(n,"Last Git Modified: ", modifiedTime, " - ", filePath)
|
||||
os.popen(command % (last_year,year,filePath))
|
||||
n = n + 1
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
current_year=$(date +%Y)
|
||||
|
||||
read -r -d '' VERIFY_SCRIPT << EOS
|
||||
for party in "The Zcash developers" "The Bitcoin Core developers" "Bitcoin Developers"; do
|
||||
sed -i"" -e "s#Copyright (c) \([0-9]\{4\}\)\(-[0-9]\{4\}\)\? \$party#Copyright (c) \1-$current_year \$party#" COPYING
|
||||
sed -i"" -e "s#\(.*\)\([0-9]\{4\}\)\(-[0-9]\{4\}\)\, \$party#\1\2-$current_year, \$party#" contrib/debian/copyright
|
||||
done
|
||||
|
||||
sed -i"" -e "s/define(_COPYRIGHT_YEAR, [0-9]\{4\})/define(_COPYRIGHT_YEAR, $current_year)/" configure.ac
|
||||
sed -i"" -e "s/#define COPYRIGHT_YEAR [0-9]\{4\}/#define COPYRIGHT_YEAR $current_year/" src/clientversion.h
|
||||
|
||||
git grep "^// Copyright (c) .* The Zcash developers" \\
|
||||
| awk -F ':' '{print \$1}' \\
|
||||
| xargs -I {} sed -i"" -e "s#// Copyright (c) \([0-9]\{4\}\)\(-[0-9]\{4\}\)\? The Zcash developers#// Copyright (c) \1-$current_year The Zcash developers#" {}
|
||||
EOS
|
||||
|
||||
bash << EOB
|
||||
$VERIFY_SCRIPT
|
||||
EOB
|
||||
|
||||
git commit -a -F - << EOS
|
||||
scripted-diff: Update Zcash copyrights to $current_year
|
||||
|
||||
-BEGIN VERIFY SCRIPT-
|
||||
$VERIFY_SCRIPT
|
||||
-END VERIFY SCRIPT-
|
||||
EOS
|
|
@ -33,11 +33,6 @@ import os
|
|||
# - g++ version 8.0.1 (https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/Packages/g/ search for gcc-)
|
||||
# - libc6 version 2.27 (https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/Packages/g/ search for glibc)
|
||||
#
|
||||
# CentOS 8 (Full update EOL May 2024, Maintenance EOL 2029-05-31) has:
|
||||
#
|
||||
# - g++ version 8.3.1 (https://centos.pkgs.org/8/centos-baseos-x86_64/ search for libgcc)
|
||||
# - libc6 version 2.28 (https://centos.pkgs.org/8/centos-baseos-x86_64/ search for glibc)
|
||||
#
|
||||
# Fedora 31 (EOL ~November 2020) has:
|
||||
#
|
||||
# - g++ version 9.2.1 (https://dl.fedoraproject.org/pub/fedora/linux/releases/31/Everything/x86_64/os/Packages/g/ search for gcc-)
|
||||
|
|
|
@ -9,7 +9,7 @@ if [[ ${1} == "--version" ]];then
|
|||
fi
|
||||
|
||||
env | sort | grep ZCASHD || true
|
||||
export ZCASHD_CMD='zcashd -printtoconsole'
|
||||
export ZCASHD_CMD=('zcashd' '-printtoconsole')
|
||||
|
||||
if [[ -z ${ZCASHD_NETWORK} ]];then
|
||||
export ZCASHD_NETWORK=mainnet
|
||||
|
@ -17,10 +17,10 @@ fi
|
|||
|
||||
case ${ZCASHD_NETWORK} in
|
||||
testnet)
|
||||
ZCASHD_CMD+=" -testnet -addnode=testnet.z.cash "
|
||||
ZCASHD_CMD+=("-testnet" "-addnode=testnet.z.cash")
|
||||
;;
|
||||
mainnet)
|
||||
ZCASHD_CMD+=" -addnode=mainnet.z.cash "
|
||||
ZCASHD_CMD+=("-addnode=mainnet.z.cash")
|
||||
;;
|
||||
*)
|
||||
echo "Error, unknown network: ${ZCASHD_NETWORK}"
|
||||
|
@ -28,31 +28,31 @@ case ${ZCASHD_NETWORK} in
|
|||
;;
|
||||
esac
|
||||
|
||||
if [[ -n "${ZCASHD_SHOWMETRICS}" ]];then ZCASHD_CMD+=" -showmetrics=${ZCASHD_SHOWMETRICS}";fi
|
||||
if [[ -n "${ZCASHD_LOGIPS}" ]];then ZCASHD_CMD+=" -logips=${ZCASHD_LOGIPS}";fi
|
||||
if [[ -n "${ZCASHD_EXPERIMENTALFEATURES}" ]];then ZCASHD_CMD+=" -experimentalfeatures=${ZCASHD_EXPERIMENTALFEATURES}";fi
|
||||
if [[ -n "${ZCASHD_GEN}" ]];then ZCASHD_CMD+=" -gen=${ZCASHD_GEN}";fi
|
||||
if [[ -n "${ZCASHD_EQUIHASHSOLVER}" ]];then ZCASHD_CMD+=" -equihashsolver=${ZCASHD_EQUIHASHSOLVER}";fi
|
||||
if [[ -n "${ZCASHD_GENPROCLIMIT}" ]];then ZCASHD_CMD+=" -genproclimit=${ZCASHD_GENPROCLIMIT}";fi
|
||||
if [[ -n "${ZCASHD_ZSHIELDCOINBASE}" ]];then ZCASHD_CMD+=" -zshieldcoinbase=${ZCASHD_ZSHIELDCOINBASE}";fi
|
||||
if [[ -n "${ZCASHD_RPCUSER}" ]];then ZCASHD_CMD+=" -rpcuser=${ZCASHD_RPCUSER}";fi
|
||||
if [[ -n "${ZCASHD_RPCPASSWORD}" ]];then ZCASHD_CMD+=" -rpcpassword=${ZCASHD_RPCPASSWORD}";fi
|
||||
if [[ -n "${ZCASHD_RPCBIND}" ]];then ZCASHD_CMD+=" -rpcbind=${ZCASHD_RPCBIND}";fi
|
||||
if [[ -n "${ZCASHD_RPCPORT}" ]];then ZCASHD_CMD+=" -rpcport=${ZCASHD_RPCPORT}";fi
|
||||
if [[ -n "${ZCASHD_ALLOWIP}" ]];then ZCASHD_CMD+=" -rpcallowip=${ZCASHD_ALLOWIP}";fi
|
||||
if [[ -n "${ZCASHD_TXINDEX}" ]];then ZCASHD_CMD+=" -txindex";fi
|
||||
if [[ -n "${ZCASHD_INSIGHTEXPLORER}" ]];then ZCASHD_CMD+=" -insightexplorer";fi
|
||||
if [[ -n "${ZCASHD_PROMETHEUSPORT}" ]];then ZCASHD_CMD+=" -prometheusport=${ZCASHD_PROMETHEUSPORT}";fi
|
||||
if [[ -n "${ZCASHD_METRICSIP}" ]];then ZCASHD_CMD+=" -metricsallowip=${ZCASHD_METRICSIP}";fi
|
||||
if [[ -n "${ZCASHD_SHOWMETRICS}" ]];then ZCASHD_CMD+=("-showmetrics=${ZCASHD_SHOWMETRICS}");fi
|
||||
if [[ -n "${ZCASHD_LOGIPS}" ]];then ZCASHD_CMD+=("-logips=${ZCASHD_LOGIPS}");fi
|
||||
if [[ -n "${ZCASHD_EXPERIMENTALFEATURES}" ]];then ZCASHD_CMD+=("-experimentalfeatures=${ZCASHD_EXPERIMENTALFEATURES}");fi
|
||||
if [[ -n "${ZCASHD_GEN}" ]];then ZCASHD_CMD+=("-gen=${ZCASHD_GEN}");fi
|
||||
if [[ -n "${ZCASHD_EQUIHASHSOLVER}" ]];then ZCASHD_CMD+=("-equihashsolver=${ZCASHD_EQUIHASHSOLVER}");fi
|
||||
if [[ -n "${ZCASHD_GENPROCLIMIT}" ]];then ZCASHD_CMD+=("-genproclimit=${ZCASHD_GENPROCLIMIT}");fi
|
||||
if [[ -n "${ZCASHD_ZSHIELDCOINBASE}" ]];then ZCASHD_CMD+=("-zshieldcoinbase=${ZCASHD_ZSHIELDCOINBASE}");fi
|
||||
if [[ -n "${ZCASHD_RPCUSER}" ]];then ZCASHD_CMD+=("-rpcuser=${ZCASHD_RPCUSER}");fi
|
||||
if [[ -n "${ZCASHD_RPCPASSWORD}" ]];then ZCASHD_CMD+=("-rpcpassword=${ZCASHD_RPCPASSWORD}");fi
|
||||
if [[ -n "${ZCASHD_RPCBIND}" ]];then ZCASHD_CMD+=("-rpcbind=${ZCASHD_RPCBIND}");fi
|
||||
if [[ -n "${ZCASHD_RPCPORT}" ]];then ZCASHD_CMD+=("-rpcport=${ZCASHD_RPCPORT}");fi
|
||||
if [[ -n "${ZCASHD_ALLOWIP}" ]];then ZCASHD_CMD+=("-rpcallowip=${ZCASHD_ALLOWIP}");fi
|
||||
if [[ -n "${ZCASHD_TXINDEX}" ]];then ZCASHD_CMD+=("-txindex");fi
|
||||
if [[ -n "${ZCASHD_INSIGHTEXPLORER}" ]];then ZCASHD_CMD+=("-insightexplorer");fi
|
||||
if [[ -n "${ZCASHD_PROMETHEUSPORT}" ]];then ZCASHD_CMD+=("-prometheusport=${ZCASHD_PROMETHEUSPORT}");fi
|
||||
if [[ -n "${ZCASHD_METRICSIP}" ]];then ZCASHD_CMD+=("-metricsallowip=${ZCASHD_METRICSIP}");fi
|
||||
if [[ -n "${ZCASHD_ZMQPORT}" && -n "${ZCASHD_ZMQBIND}" ]];then
|
||||
ZCASHD_CMD+=" -zmqpubhashblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
|
||||
ZCASHD_CMD+=" -zmqpubhashtx=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
|
||||
ZCASHD_CMD+=" -zmqpubrawblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
|
||||
ZCASHD_CMD+=" -zmqpubrawtx=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
|
||||
ZCASHD_CMD+=" -zmqpubhashblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}"
|
||||
ZCASHD_CMD+=("-zmqpubhashblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" \
|
||||
"-zmqpubhashtx=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" \
|
||||
"-zmqpubrawblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" \
|
||||
"-zmqpubrawtx=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}" \
|
||||
"-zmqpubhashblock=tcp://${ZCASHD_ZMQBIND}:${ZCASHD_ZMQPORT}")
|
||||
fi
|
||||
|
||||
zcash-fetch-params
|
||||
touch .zcash/zcash.conf
|
||||
echo "Starting: ${ZCASHD_CMD}"
|
||||
eval exec "${ZCASHD_CMD}" "${@}"
|
||||
echo "Starting: ${ZCASHD_CMD[*]}"
|
||||
exec "${ZCASHD_CMD[@]}" "${@}"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: "zcash-5.3.0-rc1"
|
||||
name: "zcash-5.4.0"
|
||||
enable_cache: true
|
||||
distro: "debian"
|
||||
suites:
|
||||
|
@ -97,7 +97,6 @@ script: |
|
|||
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||
|
||||
# Create the release tarball using (arbitrarily) the first host
|
||||
export GIT_DIR="$PWD/.git"
|
||||
./autogen.sh
|
||||
CONFIG_SITE=${BASEPREFIX}/$(echo "${HOSTS}" | awk '{print $1;}')/share/config.site ./configure --prefix=/
|
||||
make dist
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: "zcash-5.3.0"
|
||||
name: "zcash-5.4.0"
|
||||
enable_cache: true
|
||||
distro: "debian"
|
||||
suites:
|
||||
|
@ -97,7 +97,6 @@ script: |
|
|||
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||
|
||||
# Create the release tarball using (arbitrarily) the first host
|
||||
export GIT_DIR="$PWD/.git"
|
||||
./autogen.sh
|
||||
CONFIG_SITE=${BASEPREFIX}/$(echo "${HOSTS}" | awk '{print $1;}')/share/config.site ./configure --prefix=/
|
||||
make dist
|
||||
|
|
|
@ -92,7 +92,6 @@ script: |
|
|||
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||
|
||||
# Create the release tarball using (arbitrarily) the first host
|
||||
export GIT_DIR="$PWD/.git"
|
||||
./autogen.sh
|
||||
CONFIG_SITE=${BASEPREFIX}/$(echo "${HOSTS}" | awk '{print $1;}')/share/config.site ./configure --prefix=/
|
||||
make dist
|
||||
|
|
|
@ -113,7 +113,6 @@ script: |
|
|||
create_per-host_linker_wrapper "${REFERENCE_DATETIME}"
|
||||
|
||||
# Create the release tarball using (arbitrarily) the first host
|
||||
export GIT_DIR="$PWD/.git"
|
||||
./autogen.sh
|
||||
CONFIG_SITE=${BASEPREFIX}/$(echo "${HOSTS}" | awk '{print $1;}')/share/config.site ./configure --prefix=/
|
||||
make dist
|
||||
|
|
|
@ -25,5 +25,5 @@ output_file=/home/example/Downloads/bootstrap.dat
|
|||
hashlist=hashlist.txt
|
||||
split_year=1
|
||||
|
||||
# Maxmimum size in bytes of out-of-order blocks cache in memory
|
||||
# Maximum size in bytes of out-of-order blocks cache in memory
|
||||
out_of_order_cache_sz = 100000000
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
[tool.poetry]
|
||||
name = "zcash-metrics"
|
||||
version = "0.1.0"
|
||||
description = "Zcash Metrics"
|
||||
authors = [
|
||||
"Jack Grigg <jack@electriccoin.co>",
|
||||
"Daira Hopwood <daira@jacaranda.org>",
|
||||
"Kris Nuttycombe <kris@nutty.land>",
|
||||
]
|
||||
license = "MIT OR Apache-2.0"
|
||||
readme = "README.md"
|
||||
homepage = "https://github.com/zcash/zcash/"
|
||||
repository = "https://github.com/zcash/zcash/"
|
||||
documentation = "https://github.com/zcash/zcash/"
|
||||
classifiers = [
|
||||
"Private :: Do Not Upload",
|
||||
]
|
||||
packages = [
|
||||
{ include = "supply_check" }
|
||||
]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.7"
|
||||
slick-bitcoinrpc = "0.1.4"
|
||||
progressbar2 = "4.2.0"
|
||||
|
||||
[tool.poetry.scripts]
|
||||
supply-check = "supply_check:main"
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import progressbar
|
||||
from slickrpc.rpc import Proxy
|
||||
|
||||
from .deltas_mainnet import MainnetSupplyDeltas
|
||||
from .theoretical import Network, MAINNET
|
||||
|
||||
COIN=100000000
|
||||
|
||||
TXIDS_ONLY=1
|
||||
FULL_TX_DATA=2
|
||||
|
||||
# Returns the theoretical supply, the total block rewards claimed,
|
||||
# and the block at the given height.
|
||||
#
|
||||
# - `zcashd` a slickrpc.rpc.Proxy that can be used to access zcashd
|
||||
# - `deltas` a SupplyDeltas object tracking the deltas observed
|
||||
# - `height` the block height to consider
|
||||
# - `flag` Either `TXIDS_ONLY` or `FULL_TX_DATA`. This flag will be provided to
|
||||
# the getblock RPC call to indicate how much data should be returned. When
|
||||
# `TXIDS_ONLY` is provided, data for transactions in the block will be limited
|
||||
# to transaction identifiers; when `FULL_TX_DATA` is provided full transaction
|
||||
# data will be returned for each transaction in the block.
|
||||
def TheoreticalAndEmpirical(zcashd, deltas, height, flag):
|
||||
theoreticalSupply = Network(MAINNET).SupplyAfterHeight(height)
|
||||
block = zcashd.getblock(str(height), flag)
|
||||
measuredSupply = block['chainSupply']['chainValueZat']
|
||||
empiricalMaximum = measuredSupply + deltas.DeviationUpToHeight(height)
|
||||
return (theoreticalSupply, empiricalMaximum, block)
|
||||
|
||||
# Returns `True` if the theoretical supply matches the empirically
|
||||
# determined supply after accounting for known deltas over the specified
|
||||
# range, or `False` if it was not possible to determine a miner address
|
||||
# for a block containing unclaimed fee and/or block reward amounts.
|
||||
#
|
||||
# - `startHeight` The block height at which to begin checking
|
||||
# - `endHeight` The end of the block height range to check (inclusive)
|
||||
def Bisect(bar, zcashd, deltas, startHeight, endHeight):
|
||||
assert startHeight <= endHeight
|
||||
bar.update(startHeight)
|
||||
|
||||
flag = FULL_TX_DATA if startHeight == endHeight else TXIDS_ONLY
|
||||
(theoretical, empirical, block) = TheoreticalAndEmpirical(zcashd, deltas, endHeight, flag)
|
||||
if theoretical == empirical:
|
||||
return True
|
||||
elif startHeight == endHeight:
|
||||
return deltas.SaveMismatch(block, theoretical, empirical)
|
||||
else:
|
||||
midpoint = (startHeight + endHeight) // 2
|
||||
return (Bisect(bar, zcashd, deltas, startHeight, midpoint) and
|
||||
Bisect(bar, zcashd, deltas, midpoint + 1, endHeight))
|
||||
|
||||
|
||||
def main():
|
||||
missing_env = []
|
||||
if os.environ.get('ZCASHD_RPC_USER') is None:
|
||||
missing_env.append(' ZCASHD_RPC_USER: username for accessing the zcashd RPC API')
|
||||
if os.environ.get('ZCASHD_RPC_PASS') is None:
|
||||
missing_env.append(' ZCASHD_RPC_PASS: RPC API password for <ZCASHD_RPC_USER>')
|
||||
if os.environ.get('ZCASHD_RPC_HOST') is None:
|
||||
missing_env.append(' ZCASHD_RPC_HOST: hostname where zcashd is running')
|
||||
if os.environ.get('ZCASHD_RPC_PORT') is None:
|
||||
missing_env.append(' ZCASHD_RPC_PORT: zcashd RPC API port (usually 8232 for mainnet)')
|
||||
|
||||
if len(missing_env) > 0:
|
||||
print("Please ensure that the following environment variables have been set:")
|
||||
for v in missing_env:
|
||||
print(v)
|
||||
return
|
||||
|
||||
zcashd = Proxy('http://{rpc_user}:{rpc_pass}@{rpc_host}:{rpc_port}'.format(
|
||||
rpc_user=os.environ['ZCASHD_RPC_USER'],
|
||||
rpc_pass=os.environ['ZCASHD_RPC_PASS'],
|
||||
rpc_host=os.environ['ZCASHD_RPC_HOST'],
|
||||
rpc_port=os.environ['ZCASHD_RPC_PORT'],
|
||||
))
|
||||
|
||||
latestHeight = zcashd.getblockchaininfo()['blocks']
|
||||
deltas = MainnetSupplyDeltas()
|
||||
(theoretical, empirical, block) = TheoreticalAndEmpirical(zcashd, deltas, latestHeight, TXIDS_ONLY)
|
||||
interrupted = False
|
||||
if theoretical != empirical:
|
||||
with progressbar.ProgressBar(max_value = latestHeight, redirect_stdout = True) as bar:
|
||||
try:
|
||||
Bisect(bar, zcashd, deltas, 0, latestHeight)
|
||||
except KeyboardInterrupt:
|
||||
interrupted = True
|
||||
pass
|
||||
deltas.PrintDeltas()
|
||||
print("Block height: {}".format(latestHeight))
|
||||
print("Chain total value: {} ZEC".format(block['chainSupply']['chainValueZat'] / COIN))
|
||||
print("Theoretical maximum supply: {} ZEC".format(theoretical / COIN))
|
||||
if interrupted:
|
||||
print("Supply check was interrupted; supply delta evaluation incomplete.")
|
||||
else:
|
||||
print("Blocks with unclaimed balance: {}".format(len(deltas.delta_cache)))
|
||||
print("Unclaimed total: {} ZEC".format(deltas.delta_total / COIN))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,104 @@
|
|||
fr_addrs = set([
|
||||
# FR addresses
|
||||
"t3Vz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd",
|
||||
"t3cL9AucCajm3HXDhb5jBnJK2vapVoXsop3",
|
||||
"t3fqvkzrrNaMcamkQMwAyHRjfDdM2xQvDTR",
|
||||
"t3TgZ9ZT2CTSK44AnUPi6qeNaHa2eC7pUyF",
|
||||
"t3SpkcPQPfuRYHsP5vz3Pv86PgKo5m9KVmx",
|
||||
"t3Xt4oQMRPagwbpQqkgAViQgtST4VoSWR6S",
|
||||
"t3ayBkZ4w6kKXynwoHZFUSSgXRKtogTXNgb",
|
||||
"t3adJBQuaa21u7NxbR8YMzp3km3TbSZ4MGB",
|
||||
"t3K4aLYagSSBySdrfAGGeUd5H9z5Qvz88t2",
|
||||
"t3RYnsc5nhEvKiva3ZPhfRSk7eyh1CrA6Rk",
|
||||
"t3Ut4KUq2ZSMTPNE67pBU5LqYCi2q36KpXQ",
|
||||
"t3ZnCNAvgu6CSyHm1vWtrx3aiN98dSAGpnD",
|
||||
"t3fB9cB3eSYim64BS9xfwAHQUKLgQQroBDG",
|
||||
"t3cwZfKNNj2vXMAHBQeewm6pXhKFdhk18kD",
|
||||
"t3YcoujXfspWy7rbNUsGKxFEWZqNstGpeG4",
|
||||
"t3bLvCLigc6rbNrUTS5NwkgyVrZcZumTRa4",
|
||||
"t3VvHWa7r3oy67YtU4LZKGCWa2J6eGHvShi",
|
||||
"t3eF9X6X2dSo7MCvTjfZEzwWrVzquxRLNeY",
|
||||
"t3esCNwwmcyc8i9qQfyTbYhTqmYXZ9AwK3X",
|
||||
"t3M4jN7hYE2e27yLsuQPPjuVek81WV3VbBj",
|
||||
"t3gGWxdC67CYNoBbPjNvrrWLAWxPqZLxrVY",
|
||||
"t3LTWeoxeWPbmdkUD3NWBquk4WkazhFBmvU",
|
||||
"t3P5KKX97gXYFSaSjJPiruQEX84yF5z3Tjq",
|
||||
"t3f3T3nCWsEpzmD35VK62JgQfFig74dV8C9",
|
||||
"t3Rqonuzz7afkF7156ZA4vi4iimRSEn41hj",
|
||||
"t3fJZ5jYsyxDtvNrWBeoMbvJaQCj4JJgbgX",
|
||||
"t3Pnbg7XjP7FGPBUuz75H65aczphHgkpoJW",
|
||||
"t3WeKQDxCijL5X7rwFem1MTL9ZwVJkUFhpF",
|
||||
"t3Y9FNi26J7UtAUC4moaETLbMo8KS1Be6ME",
|
||||
"t3aNRLLsL2y8xcjPheZZwFy3Pcv7CsTwBec",
|
||||
"t3gQDEavk5VzAAHK8TrQu2BWDLxEiF1unBm",
|
||||
"t3Rbykhx1TUFrgXrmBYrAJe2STxRKFL7G9r",
|
||||
"t3aaW4aTdP7a8d1VTE1Bod2yhbeggHgMajR",
|
||||
"t3YEiAa6uEjXwFL2v5ztU1fn3yKgzMQqNyo",
|
||||
"t3g1yUUwt2PbmDvMDevTCPWUcbDatL2iQGP",
|
||||
"t3dPWnep6YqGPuY1CecgbeZrY9iUwH8Yd4z",
|
||||
"t3QRZXHDPh2hwU46iQs2776kRuuWfwFp4dV",
|
||||
"t3enhACRxi1ZD7e8ePomVGKn7wp7N9fFJ3r",
|
||||
"t3PkLgT71TnF112nSwBToXsD77yNbx2gJJY",
|
||||
"t3LQtHUDoe7ZhhvddRv4vnaoNAhCr2f4oFN",
|
||||
"t3fNcdBUbycvbCtsD2n9q3LuxG7jVPvFB8L",
|
||||
"t3dKojUU2EMjs28nHV84TvkVEUDu1M1FaEx",
|
||||
"t3aKH6NiWN1ofGd8c19rZiqgYpkJ3n679ME",
|
||||
"t3MEXDF9Wsi63KwpPuQdD6by32Mw2bNTbEa",
|
||||
"t3WDhPfik343yNmPTqtkZAoQZeqA83K7Y3f",
|
||||
"t3PSn5TbMMAEw7Eu36DYctFezRzpX1hzf3M",
|
||||
"t3R3Y5vnBLrEn8L6wFjPjBLnxSUQsKnmFpv",
|
||||
"t3Pcm737EsVkGTbhsu2NekKtJeG92mvYyoN",
|
||||
# ECC funding stream addresses
|
||||
"t3LmX1cxWPPPqL4TZHx42HU3U5ghbFjRiif",
|
||||
"t3Toxk1vJQ6UjWQ42tUJz2rV2feUWkpbTDs",
|
||||
"t3ZBdBe4iokmsjdhMuwkxEdqMCFN16YxKe6",
|
||||
"t3ZuaJziLM8xZ32rjDUzVjVtyYdDSz8GLWB",
|
||||
"t3bAtYWa4bi8VrtvqySxnbr5uqcG9czQGTZ",
|
||||
"t3dktADfb5Rmxncpe1HS5BRS5Gcj7MZWYBi",
|
||||
"t3hgskquvKKoCtvxw86yN7q8bzwRxNgUZmc",
|
||||
"t3R1VrLzwcxAZzkX4mX3KGbWpNsgtYtMntj",
|
||||
"t3ff6fhemqPMVujD3AQurxRxTdvS1pPSaa2",
|
||||
"t3cEUQFG3KYnFG6qYhPxSNgGi3HDjUPwC3J",
|
||||
"t3WR9F5U4QvUFqqx9zFmwT6xFqduqRRXnaa",
|
||||
"t3PYc1LWngrdUrJJbHkYPCKvJuvJjcm85Ch",
|
||||
"t3bgkjiUeatWNkhxY3cWyLbTxKksAfk561R",
|
||||
"t3Z5rrR8zahxUpZ8itmCKhMSfxiKjUp5Dk5",
|
||||
"t3PU1j7YW3fJ67jUbkGhSRto8qK2qXCUiW3",
|
||||
"t3S3yaT7EwNLaFZCamfsxxKwamQW2aRGEkh",
|
||||
"t3eutXKJ9tEaPSxZpmowhzKhPfJvmtwTEZK",
|
||||
"t3gbTb7brxLdVVghSPSd3ycGxzHbUpukeDm",
|
||||
"t3UCKW2LrHFqPMQFEbZn6FpjqnhAAbfpMYR",
|
||||
"t3NyHsrnYbqaySoQqEQRyTWkjvM2PLkU7Uu",
|
||||
"t3QEFL6acxuZwiXtW3YvV6njDVGjJ1qeaRo",
|
||||
"t3PdBRr2S1XTDzrV8bnZkXF3SJcrzHWe1wj",
|
||||
"t3ZWyRPpWRo23pKxTLtWsnfEKeq9T4XPxKM",
|
||||
"t3he6QytKCTydhpztykFsSsb9PmBT5JBZLi",
|
||||
"t3VWxWDsLb2TURNEP6tA1ZSeQzUmPKFNxRY",
|
||||
"t3NmWLvZkbciNAipauzsFRMxoZGqmtJksbz",
|
||||
"t3cKr4YxVPvPBG1mCvzaoTTdBNokohsRJ8n",
|
||||
"t3T3smGZn6BoSFXWWXa1RaoQdcyaFjMfuYK",
|
||||
"t3gkDUe9Gm4GGpjMk86TiJZqhztBVMiUSSA",
|
||||
"t3eretuBeBXFHe5jAqeSpUS1cpxVh51fAeb",
|
||||
"t3dN8g9zi2UGJdixGe9txeSxeofLS9t3yFQ",
|
||||
"t3S799pq9sYBFwccRecoTJ3SvQXRHPrHqvx",
|
||||
"t3fhYnv1S5dXwau7GED3c1XErzt4n4vDxmf",
|
||||
"t3cmE3vsBc5xfDJKXXZdpydCPSdZqt6AcNi",
|
||||
"t3h5fPdjJVHaH4HwynYDM5BB3J7uQaoUwKi",
|
||||
"t3Ma35c68BgRX8sdLDJ6WR1PCrKiWHG4Da9",
|
||||
"t3LokMKPL1J8rkJZvVpfuH7dLu6oUWqZKQK",
|
||||
"t3WFFGbEbhJWnASZxVLw2iTJBZfJGGX73mM",
|
||||
"t3L8GLEsUn4QHNaRYcX3EGyXmQ8kjpT1zTa",
|
||||
"t3PgfByBhaBSkH8uq4nYJ9ZBX4NhGCJBVYm",
|
||||
"t3WecsqKDhWXD4JAgBVcnaCC2itzyNZhJrv",
|
||||
"t3ZG9cSfopnsMQupKW5v9sTotjcP5P6RTbn",
|
||||
"t3hC1Ywb5zDwUYYV8LwhvF5rZ6m49jxXSG5",
|
||||
"t3VgMqDL15ZcyQDeqBsBW3W6rzfftrWP2yB",
|
||||
"t3LC94Y6BwLoDtBoK2NuewaEbnko1zvR9rm",
|
||||
"t3cWCUZJR3GtALaTcatrrpNJ3MGbMFVLRwQ",
|
||||
"t3YYF4rPLVxDcF9hHFsXyc5Yq1TFfbojCY6",
|
||||
"t3XHAGxRP2FNfhAjxGjxbrQPYtQQjc3RCQD",
|
||||
# ZF funding stream addresses
|
||||
"t3dvVE3SQEi7kqNzwrfNePxZ1d4hUyztBA1",
|
||||
# MG funding stream addresses
|
||||
"t3XyYW8yBFRuMnfvm5KLGFbEVz25kckZXym",
|
||||
])
|
|
@ -0,0 +1,60 @@
|
|||
import pprint
|
||||
import bisect
|
||||
|
||||
class SupplyDeltas:
|
||||
def __init__(self, fr_addrs, miner_deltas, flush_interval = 500):
|
||||
self.fr_addrs = fr_addrs
|
||||
self.miner_deltas = miner_deltas
|
||||
|
||||
self.delta_total = 0
|
||||
self.delta_cache = []
|
||||
self.flush_interval = flush_interval
|
||||
|
||||
deltas_flat = [pair for deltas in miner_deltas.values() for pair in deltas]
|
||||
for (deltaHeight, delta) in sorted(deltas_flat):
|
||||
self.AddSupplyDelta(deltaHeight, delta)
|
||||
|
||||
# AddSupplyDelta must be called with heights in increasing order.
|
||||
# It will raise an assertion error if an out-of-order insertion is
|
||||
# attempted.
|
||||
def AddSupplyDelta(self, deltaHeight, delta):
|
||||
assert len(self.delta_cache) == 0 or deltaHeight > self.delta_cache[-1][0]
|
||||
|
||||
self.delta_total += delta
|
||||
bisect.insort(self.delta_cache, (deltaHeight, self.delta_total), key=lambda x: x[0])
|
||||
|
||||
def DeviationUpToHeight(self, height):
|
||||
i = bisect.bisect(self.delta_cache, height, key=lambda x: x[0])
|
||||
return 0 if i == 0 else self.delta_cache[i - 1][1]
|
||||
|
||||
def SaveMismatch(self, block, theoretical, empirical):
|
||||
height = block['height']
|
||||
coinbase_tx = block['tx'][0]
|
||||
delta = theoretical - empirical
|
||||
|
||||
print('Mismatch at height {}: {} != {} ({}) miner_deltas: {}'.format(
|
||||
height,
|
||||
theoretical,
|
||||
empirical,
|
||||
delta,
|
||||
len(self.miner_deltas),
|
||||
))
|
||||
|
||||
# if delta ever goes negative, we will halt
|
||||
if delta >= 0:
|
||||
miner_addrs = set([addr for out in coinbase_tx['vout'] for addr in out['scriptPubKey'].get('addresses', [])]) - self.fr_addrs
|
||||
if len(miner_addrs) > 0:
|
||||
self.miner_deltas.setdefault(",".join(sorted(miner_addrs)), []).append((height, delta))
|
||||
self.AddSupplyDelta(height, delta)
|
||||
if len(self.delta_cache) % 500 == 0:
|
||||
with open("delta_cache.{}.out".format(len(self.delta_cache)), 'w', encoding="utf8") as f:
|
||||
pprint.pprint(self.miner_deltas, stream = f, compact = True)
|
||||
|
||||
return True
|
||||
|
||||
pprint.pprint(coinbase_tx['vout'], indent = 4)
|
||||
return False
|
||||
|
||||
def PrintDeltas(self):
|
||||
with open("delta_cache.out", 'w', encoding="utf8") as f:
|
||||
pprint.pprint(self.miner_deltas, stream = f, compact = True)
|
|
@ -0,0 +1,67 @@
|
|||
def exact_div(x, y):
|
||||
assert x % y == 0
|
||||
return x // y
|
||||
|
||||
# floor(u/x + v/y)
|
||||
def div2(u, x, v, y):
|
||||
return (u*y + v*x) // (x*y)
|
||||
|
||||
TESTNET = 0
|
||||
MAINNET = 1
|
||||
|
||||
class Network:
|
||||
# <https://zips.z.cash/protocol/protocol.pdf#constants>
|
||||
def __init__(self, network):
|
||||
self.BlossomActivationHeight = 653600 if network == MAINNET else 584000
|
||||
|
||||
SlowStartInterval = 20000
|
||||
MaxBlockSubsidy = 1250000000 # 12.5 ZEC
|
||||
PreBlossomHalvingInterval = 840000
|
||||
PreBlossomPoWTargetSpacing = 150
|
||||
PostBlossomPoWTargetSpacing = 75
|
||||
|
||||
# <https://zips.z.cash/protocol/protocol.pdf#diffadjustment>
|
||||
def IsBlossomActivated(self, height):
|
||||
return height >= self.BlossomActivationHeight
|
||||
|
||||
BlossomPoWTargetSpacingRatio = exact_div(PreBlossomPoWTargetSpacing, PostBlossomPoWTargetSpacing)
|
||||
|
||||
# no need for floor since this is necessarily an integer
|
||||
PostBlossomHalvingInterval = PreBlossomHalvingInterval * BlossomPoWTargetSpacingRatio
|
||||
|
||||
# <https://zips.z.cash/protocol/protocol.pdf#subsidies>
|
||||
SlowStartShift = exact_div(SlowStartInterval, 2)
|
||||
|
||||
SlowStartRate = exact_div(MaxBlockSubsidy, SlowStartInterval)
|
||||
|
||||
SupplyCache = []
|
||||
|
||||
def Halving(self, height):
|
||||
if height < self.SlowStartShift:
|
||||
return 0
|
||||
elif not self.IsBlossomActivated(height):
|
||||
return (height - self.SlowStartShift) // self.PreBlossomHalvingInterval
|
||||
else:
|
||||
return div2(self.BlossomActivationHeight - self.SlowStartShift, self.PreBlossomHalvingInterval,
|
||||
height - self.BlossomActivationHeight, self.PostBlossomHalvingInterval)
|
||||
|
||||
def BlockSubsidy(self, height):
|
||||
if height < self.SlowStartShift:
|
||||
return self.SlowStartRate * height
|
||||
elif self.SlowStartShift <= height and height < self.SlowStartInterval:
|
||||
return self.SlowStartRate * (height + 1)
|
||||
if self.SlowStartInterval <= height and not self.IsBlossomActivated(height):
|
||||
return self.MaxBlockSubsidy // (1 << self.Halving(height))
|
||||
else:
|
||||
return self.MaxBlockSubsidy // (self.BlossomPoWTargetSpacingRatio << self.Halving(height))
|
||||
|
||||
def SupplyAfterHeight(self, height):
|
||||
cacheLen = len(self.SupplyCache)
|
||||
if cacheLen > height:
|
||||
return self.SupplyCache[height]
|
||||
else:
|
||||
cur = 0 if cacheLen == 0 else self.SupplyCache[-1]
|
||||
for h in range(cacheLen, height + 1):
|
||||
cur += self.BlockSubsidy(h)
|
||||
self.SupplyCache.append(cur)
|
||||
return self.SupplyCache[-1]
|
|
@ -99,7 +99,7 @@ _zcash_cli() {
|
|||
fi
|
||||
|
||||
case "$prev" in
|
||||
backupwallet|dumpwallet|importwallet|z_exportwallet|z_importwallet)
|
||||
backupwallet|importwallet|z_exportwallet|z_importwallet)
|
||||
_filedir
|
||||
return 0
|
||||
;;
|
||||
|
|
|
@ -146,11 +146,11 @@ $(1)_config_env+=$($(1)_config_env_$(host_arch)_$(host_os)) $($(1)_config_env_$(
|
|||
|
||||
$(1)_config_env+=PKG_CONFIG_LIBDIR=$($($(1)_type)_prefix)/lib/pkgconfig
|
||||
$(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig
|
||||
$(1)_config_env+=CMAKE_MODULE_PATH=$($($(1)_type)_prefix)/lib/cmake
|
||||
$(1)_config_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||
$(1)_build_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||
$(1)_stage_env+=PATH="$(build_prefix)/bin:$(PATH)"
|
||||
$(1)_autoconf=./configure --host=$($($(1)_type)_host) --prefix=$($($(1)_type)_prefix) $$($(1)_config_opts) CC="$$($(1)_cc)" CXX="$$($(1)_cxx)"
|
||||
|
||||
ifneq ($($(1)_nm),)
|
||||
$(1)_autoconf += NM="$$($(1)_nm)"
|
||||
endif
|
||||
|
@ -172,6 +172,22 @@ endif
|
|||
ifneq ($($(1)_ldflags),)
|
||||
$(1)_autoconf += LDFLAGS="$$($(1)_ldflags)"
|
||||
endif
|
||||
|
||||
$(1)_cmake=env CC="$$($(1)_cc)" \
|
||||
CFLAGS="$$($(1)_cppflags) $$($(1)_cflags)" \
|
||||
CXX="$$($(1)_cxx)" \
|
||||
CXXFLAGS="$$($(1)_cppflags) $$($(1)_cxxflags)" \
|
||||
LDFLAGS="$$($(1)_ldflags)" \
|
||||
$(build_prefix)/bin/cmake -DCMAKE_INSTALL_PREFIX:PATH="$$($($(1)_type)_prefix)"
|
||||
ifeq ($($(1)_type),build)
|
||||
$(1)_cmake += -DCMAKE_INSTALL_RPATH:PATH="$$($($(1)_type)_prefix)/lib"
|
||||
else
|
||||
ifneq ($(host),$(build))
|
||||
$(1)_cmake += -DCMAKE_SYSTEM_NAME=$($(host_os)_cmake_system)
|
||||
$(1)_cmake += -DCMAKE_C_COMPILER_TARGET=$(host)
|
||||
$(1)_cmake += -DCMAKE_CXX_COMPILER_TARGET=$(host)
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
|
||||
define int_add_cmds
|
||||
|
|
|
@ -41,3 +41,4 @@ darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS)
|
|||
|
||||
darwin_native_binutils=native_cctools
|
||||
darwin_native_toolchain=native_cctools
|
||||
darwin_cmake_system=Darwin
|
||||
|
|
|
@ -18,3 +18,5 @@ i686_freebsd_CC=$(default_host_CC) -m32
|
|||
i686_freebsd_CXX=$(default_host_CXX) -m32
|
||||
x86_64_freebsd_CC=$(default_host_CC) -m64
|
||||
x86_64_freebsd_CXX=$(default_host_CXX) -m64
|
||||
|
||||
freebsd_cmake_system=FreeBSD
|
||||
|
|
|
@ -23,3 +23,4 @@ ifneq ($(canonical_host),$(build))
|
|||
linux_CFLAGS += -idirafter /usr/$(host)/include
|
||||
linux_LDFLAGS += -L/usr/$(host)/lib
|
||||
endif
|
||||
linux_cmake_system=Linux
|
||||
|
|
|
@ -10,3 +10,5 @@ mingw32_debug_CFLAGS=-O0
|
|||
mingw32_debug_CXXFLAGS=$(mingw32_debug_CFLAGS)
|
||||
|
||||
mingw32_debug_CPPFLAGS=-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC
|
||||
|
||||
mingw_cmake_system=Windows
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package=boost
|
||||
$(package)_version=1_80_0
|
||||
$(package)_version=1_81_0
|
||||
$(package)_download_path=https://boostorg.jfrog.io/artifactory/main/release/$(subst _,.,$($(package)_version))/source/
|
||||
$(package)_file_name=boost_$($(package)_version).tar.bz2
|
||||
$(package)_sha256_hash=1e19565d82e43bc59209a168f5ac899d3ba471d55c7610c677d4ccf2c9c500c0
|
||||
$(package)_sha256_hash=71feeed900fbccca04a3b4f2f84a7c217186f28a940ed8b7ed4725986baf99fa
|
||||
$(package)_dependencies=native_b2
|
||||
|
||||
ifneq ($(host_os),darwin)
|
||||
|
@ -45,7 +45,7 @@ define $(package)_preprocess_cmds
|
|||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
./bootstrap.sh --without-icu --with-libraries=$($(package)_config_libraries) --with-toolset=$($(package)_toolset_$(host_os)) --with-bjam=b2
|
||||
./bootstrap.sh --without-icu --with-libraries=$($(package)_config_libraries) --with-toolset=$($(package)_toolset_$(host_os)) --with-bjam=b2 --libdir=lib
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
package=googletest
|
||||
$(package)_version=1.8.1
|
||||
$(package)_version=1.12.1
|
||||
$(package)_download_path=https://github.com/google/$(package)/archive/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_download_file=release-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
|
||||
$(package)_sha256_hash=81964fe578e9bd7c94dfdb09c8e4d6e6759e19967e397dbea48d1c10e45d0df2
|
||||
$(package)_build_subdir=build
|
||||
$(package)_dependencies=native_cmake
|
||||
|
||||
ifneq ($(host_os),darwin)
|
||||
$(package)_dependencies=libcxx
|
||||
$(package)_dependencies+=libcxx
|
||||
endif
|
||||
|
||||
define $(package)_set_vars
|
||||
|
@ -22,15 +24,18 @@ endif
|
|||
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
mkdir build
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_cmake) ..
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) -C googlemock/make CC="$($(package)_cc)" CXX="$($(package)_cxx)" AR="$($(package)_ar)" CXXFLAGS="$($(package)_cxxflags)" gmock.a && \
|
||||
$($(package)_build_env) $(MAKE) -C googletest/make CC="$($(package)_cc)" CXX="$($(package)_cxx)" AR="$($(package)_ar)" CXXFLAGS="$($(package)_cxxflags)" gtest.a
|
||||
$(MAKE)
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
mkdir -p $($(package)_staging_dir)$(host_prefix)/lib && \
|
||||
install ./googlemock/make/gmock.a $($(package)_staging_dir)$(host_prefix)/lib/libgmock.a && \
|
||||
install ./googletest/make/gtest.a $($(package)_staging_dir)$(host_prefix)/lib/libgtest.a && \
|
||||
cp -a ./googlemock/include $($(package)_staging_dir)$(host_prefix)/ && \
|
||||
cp -a ./googletest/include $($(package)_staging_dir)$(host_prefix)/
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||
endef
|
||||
|
|
|
@ -1,15 +1,23 @@
|
|||
package=native_ccache
|
||||
$(package)_version=3.7.12
|
||||
$(package)_version=4.6.3
|
||||
$(package)_download_path=https://github.com/ccache/ccache/releases/download/v$($(package)_version)
|
||||
$(package)_file_name=ccache-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=d2abe88d4c283ce960e233583061127b156ffb027c6da3cf10770fc0c7244194
|
||||
$(package)_sha256_hash=f46ba3706ad80c30d4d5874dee2bf9227a7fcd0ccaac31b51919a3053d84bd05
|
||||
$(package)_build_subdir=build
|
||||
$(package)_dependencies=native_cmake native_zstd
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts=
|
||||
$(package)_config_opts += -DCMAKE_BUILD_TYPE=Release
|
||||
$(package)_config_opts += -DZSTD_LIBRARY=$(build_prefix)/lib/libzstd.a
|
||||
$(package)_config_opts += -DREDIS_STORAGE_BACKEND=OFF
|
||||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
mkdir $($(package)_build_subdir)
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_autoconf)
|
||||
$($(package)_cmake) .. $($(package)_config_opts)
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
|
|
|
@ -20,6 +20,7 @@ $(package)_download_path_freebsd=https://github.com/llvm/llvm-project/releases/d
|
|||
$(package)_download_file_freebsd=clang+llvm-$($(package)_version)-amd64-unknown-freebsd12.tar.xz
|
||||
$(package)_file_name_freebsd=clang-llvm-$($(package)_version)-amd64-unknown-freebsd12.tar.xz
|
||||
$(package)_sha256_hash_freebsd=b0a7b86dacb12afb8dd2ca99ea1b894d9cce84aab7711cb1964b3005dfb09af3
|
||||
$(package)_download_path_aarch64_linux=https://github.com/llvm/llvm-project/releases/download/llvmorg-$($(package)_version)
|
||||
$(package)_download_file_aarch64_linux=clang+llvm-$($(package)_version)-aarch64-linux-gnu.tar.xz
|
||||
$(package)_file_name_aarch64_linux=clang-llvm-$($(package)_version)-aarch64-linux-gnu.tar.xz
|
||||
$(package)_sha256_hash_aarch64_linux=1a81fda984f5e607584916fdf69cf41e5385b219b983544d2c1a14950d5a65cf
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package=native_cmake
|
||||
$(package)_version=3.25.2
|
||||
$(package)_download_path=https://github.com/Kitware/CMake/releases/download/v$($(package)_version)
|
||||
$(package)_file_name=cmake-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=c026f22cb931dd532f648f087d587f07a1843c6e66a3dfca4fb0ea21944ed33c
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts += -DCMAKE_BUILD_TYPE:STRING=Release
|
||||
$(package)_config_opts += -DCMAKE_USE_OPENSSL:BOOL=OFF
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
./bootstrap --prefix=$($(package)_staging_prefix_dir) -- $($(package)_config_opts)
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE) cmake
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) install
|
||||
endef
|
|
@ -1,10 +1,10 @@
|
|||
package=native_cxxbridge
|
||||
# The version needs to match cxx in Cargo.toml
|
||||
$(package)_version=1.0.79
|
||||
$(package)_version=1.0.83
|
||||
$(package)_download_path=https://github.com/dtolnay/cxx/archive/refs/tags
|
||||
$(package)_file_name=native_cxxbridge-$($(package)_version).tar.gz
|
||||
$(package)_download_file=$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=4da400783dee17e9a99dd39a17cd2cc346df311cb8745832e2b4d5173c23dfcd
|
||||
$(package)_sha256_hash=e30cbd34fc8ec2ae78f4f9e546d29c6c92e6d714f30c3c150f7b8c6ea08ea971
|
||||
$(package)_build_subdir=gen/cmd
|
||||
$(package)_dependencies=native_rust
|
||||
$(package)_extra_sources=$(package)-$($(package)_version)-vendored.tar.gz
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package=native_zstd
|
||||
$(package)_version=1.5.2
|
||||
$(package)_download_path=https://github.com/facebook/zstd/releases/download/v$($(package)_version)
|
||||
$(package)_file_name=zstd-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=7c42d56fac126929a6a85dbc73ff1db2411d04f104fae9bdea51305663a83fd0
|
||||
$(package)_build_subdir=build/cmake
|
||||
$(package)_dependencies=native_cmake
|
||||
|
||||
define $(package)_set_vars
|
||||
$(package)_config_opts += -DCMAKE_BUILD_TYPE=Release
|
||||
$(package)_config_opts += -DCMAKE_INSTALL_LIBDIR=lib
|
||||
$(package)_config_opts += -DZSTD_BUILD_CONTRIB=OFF
|
||||
$(package)_config_opts += -DZSTD_BUILD_PROGRAMS=ON
|
||||
$(package)_config_opts += -DZSTD_BUILD_SHARED=OFF
|
||||
$(package)_config_opts += -DZSTD_BUILD_STATIC=ON
|
||||
$(package)_config_opts += -DZSTD_BUILD_TESTS=OFF
|
||||
$(package)_config_opts += -DZSTD_LEGACY_SUPPORT=OFF
|
||||
$(package)_config_opts += -DZSTD_LZ4_SUPPORT=OFF
|
||||
$(package)_config_opts += -DZSTD_LZMA_SUPPORT=OFF
|
||||
$(package)_config_opts += -DZSTD_MULTITHREAD_SUPPORT=ON
|
||||
$(package)_config_opts += -DZSTD_PROGRAMS_LINK_SHARED=OFF
|
||||
$(package)_config_opts += -DZSTD_ZLIB_SUPPORT=OFF
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
$($(package)_cmake) $($(package)_config_opts)
|
||||
endef
|
||||
|
||||
define $(package)_build_cmds
|
||||
$(MAKE)
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
$(MAKE) DESTDIR=$($(package)_staging_dir) install
|
||||
endef
|
|
@ -1,6 +1,6 @@
|
|||
zcash_packages := libsodium rustcxx utfcpp
|
||||
zcash_packages := libsodium rustcxx utfcpp tl_expected
|
||||
packages := boost libevent zeromq $(zcash_packages) googletest
|
||||
native_packages := native_clang native_ccache native_rust native_cxxbridge
|
||||
native_packages := native_clang native_ccache native_cmake native_rust native_cxxbridge native_zstd
|
||||
|
||||
ifneq (,$(wildcard /etc/arch-release))
|
||||
native_packages += native_libtinfo
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package=tl_expected
|
||||
$(package)_version=1.0.1
|
||||
$(package)_download_path=https://github.com/TartanLlama/expected/archive
|
||||
$(package)_download_file=96d547c03d2feab8db64c53c3744a9b4a7c8f2c5.tar.gz
|
||||
$(package)_file_name=tl-expected-1.0.1.tar.gz
|
||||
$(package)_sha256_hash=64901df1de9a5a3737b331d3e1de146fa6ffb997017368b322c08f45c51b90a7
|
||||
$(package)_patches=remove-undefined-behaviour.diff
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 < $($(package)_patch_dir)/remove-undefined-behaviour.diff
|
||||
endef
|
||||
|
||||
define $(package)_stage_cmds
|
||||
mkdir -p $($(package)_staging_dir)$(host_prefix)/include && \
|
||||
cp -r include/tl $($(package)_staging_dir)$(host_prefix)/include
|
||||
endef
|
|
@ -1,10 +1,11 @@
|
|||
package=utfcpp
|
||||
$(package)_version=3.2.1
|
||||
$(package)_version=3.2.3
|
||||
$(package)_download_path=https://github.com/nemtrif/$(package)/archive/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_download_file=v$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=8d6aa7d77ad0abb35bb6139cb9a33597ac4c5b33da6a004ae42429b8598c9605
|
||||
$(package)_sha256_hash=3ba9b0dbbff08767bdffe8f03b10e596ca351228862722e4c9d4d126d2865250
|
||||
|
||||
define $(package)_stage_cmds
|
||||
cp -a ./source $($(package)_staging_dir)$(host_prefix)/include
|
||||
mkdir -p $($(package)_staging_dir)$(host_prefix)/include && \
|
||||
cp -a ./source $($(package)_staging_dir)$(host_prefix)/include/utf8cpp
|
||||
endef
|
||||
|
|
|
@ -3,7 +3,7 @@ $(package)_version=4.3.4
|
|||
$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($(package)_version)/
|
||||
$(package)_file_name=$(package)-$($(package)_version).tar.gz
|
||||
$(package)_sha256_hash=c593001a89f5a85dd2ddf564805deb860e02471171b3f204944857336295c3e5
|
||||
$(package)_patches=windows-unused-variables.diff
|
||||
$(package)_patches=windows-unused-variables.diff use-snprintf-not-sprintf.patch check_snprintf_return.patch
|
||||
|
||||
ifneq ($(host_os),darwin)
|
||||
$(package)_dependencies=libcxx
|
||||
|
@ -27,7 +27,9 @@ define $(package)_set_vars
|
|||
endef
|
||||
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 < $($(package)_patch_dir)/windows-unused-variables.diff
|
||||
patch -p1 < $($(package)_patch_dir)/windows-unused-variables.diff && \
|
||||
patch -p1 < $($(package)_patch_dir)/use-snprintf-not-sprintf.patch && \
|
||||
patch -p1 < $($(package)_patch_dir)/check_snprintf_return.patch
|
||||
endef
|
||||
|
||||
define $(package)_config_cmds
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
diff --recursive --unified tl-expected-1.0.1-orig/include/tl/expected.hpp tl-expected-1.0.1/include/tl/expected.hpp
|
||||
--- tl-expected-1.0.1-orig/include/tl/expected.hpp 2022-08-30 20:10:13.269489852 +0100
|
||||
+++ tl-expected-1.0.1/include/tl/expected.hpp 2022-08-30 20:17:35.744258828 +0100
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <functional>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
+#include <cassert>
|
||||
|
||||
#if defined(__EXCEPTIONS) || defined(_CPPUNWIND)
|
||||
#define TL_EXPECTED_EXCEPTIONS_ENABLED
|
||||
@@ -1862,27 +1863,37 @@
|
||||
}
|
||||
}
|
||||
|
||||
- constexpr const T *operator->() const { return valptr(); }
|
||||
- TL_EXPECTED_11_CONSTEXPR T *operator->() { return valptr(); }
|
||||
+ constexpr const T *operator->() const {
|
||||
+ assert(has_value());
|
||||
+ return valptr();
|
||||
+ }
|
||||
+ TL_EXPECTED_11_CONSTEXPR T *operator->() {
|
||||
+ assert(has_value());
|
||||
+ return valptr();
|
||||
+ }
|
||||
|
||||
template <class U = T,
|
||||
detail::enable_if_t<!std::is_void<U>::value> * = nullptr>
|
||||
constexpr const U &operator*() const & {
|
||||
+ assert(has_value());
|
||||
return val();
|
||||
}
|
||||
template <class U = T,
|
||||
detail::enable_if_t<!std::is_void<U>::value> * = nullptr>
|
||||
TL_EXPECTED_11_CONSTEXPR U &operator*() & {
|
||||
+ assert(has_value());
|
||||
return val();
|
||||
}
|
||||
template <class U = T,
|
||||
detail::enable_if_t<!std::is_void<U>::value> * = nullptr>
|
||||
constexpr const U &&operator*() const && {
|
||||
+ assert(has_value());
|
||||
return std::move(val());
|
||||
}
|
||||
template <class U = T,
|
||||
detail::enable_if_t<!std::is_void<U>::value> * = nullptr>
|
||||
TL_EXPECTED_11_CONSTEXPR U &&operator*() && {
|
||||
+ assert(has_value());
|
||||
return std::move(val());
|
||||
}
|
||||
|
||||
@@ -1918,10 +1929,22 @@
|
||||
return std::move(val());
|
||||
}
|
||||
|
||||
- constexpr const E &error() const & { return err().value(); }
|
||||
- TL_EXPECTED_11_CONSTEXPR E &error() & { return err().value(); }
|
||||
- constexpr const E &&error() const && { return std::move(err().value()); }
|
||||
- TL_EXPECTED_11_CONSTEXPR E &&error() && { return std::move(err().value()); }
|
||||
+ constexpr const E &error() const & {
|
||||
+ assert(!has_value());
|
||||
+ return err().value();
|
||||
+ }
|
||||
+ TL_EXPECTED_11_CONSTEXPR E &error() & {
|
||||
+ assert(!has_value());
|
||||
+ return err().value();
|
||||
+ }
|
||||
+ constexpr const E &&error() const && {
|
||||
+ assert(!has_value());
|
||||
+ return std::move(err().value());
|
||||
+ }
|
||||
+ TL_EXPECTED_11_CONSTEXPR E &&error() && {
|
||||
+ assert(!has_value());
|
||||
+ return std::move(err().value());
|
||||
+ }
|
||||
|
||||
template <class U> constexpr T value_or(U &&v) const & {
|
||||
static_assert(std::is_copy_constructible<T>::value &&
|
|
@ -0,0 +1,48 @@
|
|||
From 6dc559c0726c2d2d9a928bd8d1ed89773c0b47ea Mon Sep 17 00:00:00 2001
|
||||
From: Daira Hopwood <daira@jacaranda.org>
|
||||
Date: Wed, 1 Feb 2023 15:15:19 +0000
|
||||
Subject: [PATCH] #4494 added calls to snprintf, but did not take into account
|
||||
that snprintf can truncate, and then return the number of characters that
|
||||
would have been written without truncation.
|
||||
|
||||
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
|
||||
---
|
||||
RELICENSE/daira.md | 15 +++++++++++++++
|
||||
src/tcp_address.cpp | 5 +++--
|
||||
src/udp_engine.cpp | 6 +++---
|
||||
3 files changed, 21 insertions(+), 5 deletions(-)
|
||||
create mode 100644 RELICENSE/daira.md
|
||||
|
||||
diff --git a/src/tcp_address.cpp b/src/tcp_address.cpp
|
||||
index 46b4defc7..cd8016f64 100644
|
||||
--- a/src/tcp_address.cpp
|
||||
+++ b/src/tcp_address.cpp
|
||||
@@ -129,8 +129,9 @@ static std::string make_address_string (const char *hbuf_,
|
||||
pos += hbuf_len;
|
||||
memcpy (pos, ipv6_suffix_, sizeof ipv6_suffix_ - 1);
|
||||
pos += sizeof ipv6_suffix_ - 1;
|
||||
- pos += snprintf (pos, max_port_str_length + 1 * sizeof (char), "%d",
|
||||
- ntohs (port_));
|
||||
+ int res = snprintf (pos, max_port_str_length + 1, "%d", ntohs (port_));
|
||||
+ zmq_assert (res > 0 && res < (int) (max_port_str_length + 1));
|
||||
+ pos += res;
|
||||
return std::string (buf, pos - buf);
|
||||
}
|
||||
|
||||
diff --git a/src/udp_engine.cpp b/src/udp_engine.cpp
|
||||
index 47f1359e1..5ca03a425 100644
|
||||
--- a/src/udp_engine.cpp
|
||||
+++ b/src/udp_engine.cpp
|
||||
@@ -367,9 +367,9 @@ void zmq::udp_engine_t::sockaddr_to_msg (zmq::msg_t *msg_,
|
||||
const char *const name = inet_ntoa (addr_->sin_addr);
|
||||
|
||||
char port[6];
|
||||
- const int port_len = snprintf (port, 6 * sizeof (char), "%d",
|
||||
- static_cast<int> (ntohs (addr_->sin_port)));
|
||||
- zmq_assert (port_len > 0);
|
||||
+ const int port_len =
|
||||
+ snprintf (port, 6, "%d", static_cast<int> (ntohs (addr_->sin_port)));
|
||||
+ zmq_assert (port_len > 0 && port_len < 6);
|
||||
|
||||
const size_t name_len = strlen (name);
|
||||
const int size = static_cast<int> (name_len) + 1 /* colon */
|
|
@ -0,0 +1,249 @@
|
|||
From f7df6c8599835d6022335d63f37e291514d9a6f4 Mon Sep 17 00:00:00 2001
|
||||
From: Arnaud Loonstra <arnaud@sphaero.org>
|
||||
Date: Tue, 24 Jan 2023 12:54:48 +0100
|
||||
Subject: [PATCH] deprecate sprint and replace with snprintf
|
||||
|
||||
---
|
||||
src/tcp_address.cpp | 3 ++-
|
||||
src/udp_engine.cpp | 4 ++--
|
||||
tests/test_inproc_connect.cpp | 4 ++--
|
||||
tests/test_issue_566.cpp | 2 +-
|
||||
tests/test_proxy.cpp | 12 ++++++++----
|
||||
tests/test_reqrep_tcp.cpp | 8 ++++++--
|
||||
tests/test_setsockopt.cpp | 2 +-
|
||||
tests/test_stream_disconnect.cpp | 4 ++--
|
||||
tests/test_unbind_wildcard.cpp | 12 ++++++------
|
||||
tests/test_ws_transport.cpp | 3 ++-
|
||||
tests/testutil.cpp | 18 +++++++++---------
|
||||
11 files changed, 41 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/src/tcp_address.cpp b/src/tcp_address.cpp
|
||||
index bdda66a200..46b4defc79 100644
|
||||
--- a/src/tcp_address.cpp
|
||||
+++ b/src/tcp_address.cpp
|
||||
@@ -129,7 +129,8 @@ static std::string make_address_string (const char *hbuf_,
|
||||
pos += hbuf_len;
|
||||
memcpy (pos, ipv6_suffix_, sizeof ipv6_suffix_ - 1);
|
||||
pos += sizeof ipv6_suffix_ - 1;
|
||||
- pos += sprintf (pos, "%d", ntohs (port_));
|
||||
+ pos += snprintf (pos, max_port_str_length + 1 * sizeof (char), "%d",
|
||||
+ ntohs (port_));
|
||||
return std::string (buf, pos - buf);
|
||||
}
|
||||
|
||||
diff --git a/src/udp_engine.cpp b/src/udp_engine.cpp
|
||||
index d09bfe166e..47f1359e1b 100644
|
||||
--- a/src/udp_engine.cpp
|
||||
+++ b/src/udp_engine.cpp
|
||||
@@ -367,8 +367,8 @@ void zmq::udp_engine_t::sockaddr_to_msg (zmq::msg_t *msg_,
|
||||
const char *const name = inet_ntoa (addr_->sin_addr);
|
||||
|
||||
char port[6];
|
||||
- const int port_len =
|
||||
- sprintf (port, "%d", static_cast<int> (ntohs (addr_->sin_port)));
|
||||
+ const int port_len = snprintf (port, 6 * sizeof (char), "%d",
|
||||
+ static_cast<int> (ntohs (addr_->sin_port)));
|
||||
zmq_assert (port_len > 0);
|
||||
|
||||
const size_t name_len = strlen (name);
|
||||
diff --git a/tests/test_inproc_connect.cpp b/tests/test_inproc_connect.cpp
|
||||
index 7a3acbda8c..c6437d55bb 100644
|
||||
--- a/tests/test_inproc_connect.cpp
|
||||
+++ b/tests/test_inproc_connect.cpp
|
||||
@@ -155,7 +155,7 @@ void test_connect_before_bind_ctx_term ()
|
||||
void *connect_socket = test_context_socket (ZMQ_ROUTER);
|
||||
|
||||
char ep[32];
|
||||
- sprintf (ep, "inproc://cbbrr%d", i);
|
||||
+ snprintf (ep, 32 * sizeof (char), "inproc://cbbrr%d", i);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (connect_socket, ep));
|
||||
|
||||
// Cleanup
|
||||
@@ -233,7 +233,7 @@ void test_simultaneous_connect_bind_threads ()
|
||||
// Set up thread arguments: context followed by endpoint string
|
||||
for (unsigned int i = 0; i < no_of_times; ++i) {
|
||||
thr_args[i] = (void *) endpts[i];
|
||||
- sprintf (endpts[i], "inproc://foo_%d", i);
|
||||
+ snprintf (endpts[i], 20 * sizeof (char), "inproc://foo_%d", i);
|
||||
}
|
||||
|
||||
// Spawn all threads as simultaneously as possible
|
||||
diff --git a/tests/test_issue_566.cpp b/tests/test_issue_566.cpp
|
||||
index 7a8859feba..2495eadfbe 100644
|
||||
--- a/tests/test_issue_566.cpp
|
||||
+++ b/tests/test_issue_566.cpp
|
||||
@@ -58,7 +58,7 @@ void test_issue_566 ()
|
||||
void *dealer = zmq_socket (ctx2, ZMQ_DEALER);
|
||||
// Leave space for NULL char from sprintf, gcc warning
|
||||
char routing_id[11];
|
||||
- sprintf (routing_id, "%09d", cycle);
|
||||
+ snprintf (routing_id, 11 * sizeof (char), "%09d", cycle);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (
|
||||
zmq_setsockopt (dealer, ZMQ_ROUTING_ID, routing_id, 10));
|
||||
int rcvtimeo = 1000;
|
||||
diff --git a/tests/test_proxy.cpp b/tests/test_proxy.cpp
|
||||
index 5666721be1..16722e3ce5 100644
|
||||
--- a/tests/test_proxy.cpp
|
||||
+++ b/tests/test_proxy.cpp
|
||||
@@ -88,7 +88,8 @@ static void client_task (void *db_)
|
||||
TEST_ASSERT_SUCCESS_ERRNO (
|
||||
zmq_setsockopt (endpoint, ZMQ_LINGER, &linger, sizeof (linger)));
|
||||
char endpoint_source[256];
|
||||
- sprintf (endpoint_source, "inproc://endpoint%d", databag->id);
|
||||
+ snprintf (endpoint_source, 256 * sizeof (char), "inproc://endpoint%d",
|
||||
+ databag->id);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (endpoint, endpoint_source));
|
||||
char *my_endpoint = s_recv (endpoint);
|
||||
TEST_ASSERT_NOT_NULL (my_endpoint);
|
||||
@@ -107,7 +108,8 @@ static void client_task (void *db_)
|
||||
char content[CONTENT_SIZE_MAX] = {};
|
||||
// Set random routing id to make tracing easier
|
||||
char routing_id[ROUTING_ID_SIZE] = {};
|
||||
- sprintf (routing_id, "%04X-%04X", rand () % 0xFFFF, rand () % 0xFFFF);
|
||||
+ snprintf (routing_id, ROUTING_ID_SIZE * sizeof (char), "%04X-%04X",
|
||||
+ rand () % 0xFFFF, rand () % 0xFFFF);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (zmq_setsockopt (
|
||||
client, ZMQ_ROUTING_ID, routing_id,
|
||||
ROUTING_ID_SIZE)); // includes '\0' as an helper for printf
|
||||
@@ -164,7 +166,8 @@ static void client_task (void *db_)
|
||||
}
|
||||
|
||||
if (keep_sending) {
|
||||
- sprintf (content, "request #%03d", ++request_nbr); // CONTENT_SIZE
|
||||
+ snprintf (content, CONTENT_SIZE_MAX * sizeof (char),
|
||||
+ "request #%03d", ++request_nbr); // CONTENT_SIZE
|
||||
if (is_verbose)
|
||||
printf ("client send - routing_id = %s request #%03d\n",
|
||||
routing_id, request_nbr);
|
||||
@@ -228,7 +231,8 @@ void server_task (void * /*unused_*/)
|
||||
TEST_ASSERT_NOT_NULL (endpoint_receivers[i]);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (zmq_setsockopt (
|
||||
endpoint_receivers[i], ZMQ_LINGER, &linger, sizeof (linger)));
|
||||
- sprintf (endpoint_source, "inproc://endpoint%d", i);
|
||||
+ snprintf (endpoint_source, 256 * sizeof (char), "inproc://endpoint%d",
|
||||
+ i);
|
||||
TEST_ASSERT_SUCCESS_ERRNO (
|
||||
zmq_bind (endpoint_receivers[i], endpoint_source));
|
||||
}
|
||||
diff --git a/tests/test_reqrep_tcp.cpp b/tests/test_reqrep_tcp.cpp
|
||||
index c1bdf4719b..01d263ab3d 100644
|
||||
--- a/tests/test_reqrep_tcp.cpp
|
||||
+++ b/tests/test_reqrep_tcp.cpp
|
||||
@@ -66,8 +66,12 @@ void make_connect_address (char *connect_address_,
|
||||
const int port_,
|
||||
const char *bind_address_)
|
||||
{
|
||||
- sprintf (connect_address_, "tcp://%s:%i;%s", ipv6_ ? "[::1]" : "127.0.0.1",
|
||||
- port_, strrchr (bind_address_, '/') + 1);
|
||||
+ if (ipv6_)
|
||||
+ snprintf (connect_address_, 30 * sizeof (char), "tcp://[::1]:%i;%s",
|
||||
+ port_, strrchr (bind_address_, '/') + 1);
|
||||
+ else
|
||||
+ snprintf (connect_address_, 38 * sizeof (char), "tcp://127.0.0.1:%i;%s",
|
||||
+ port_, strrchr (bind_address_, '/') + 1);
|
||||
}
|
||||
|
||||
void test_multi_connect (int ipv6_)
|
||||
diff --git a/tests/test_setsockopt.cpp b/tests/test_setsockopt.cpp
|
||||
index 7e51a519c3..50414682b3 100644
|
||||
--- a/tests/test_setsockopt.cpp
|
||||
+++ b/tests/test_setsockopt.cpp
|
||||
@@ -120,7 +120,7 @@ void test_setsockopt_bindtodevice ()
|
||||
TEST_ASSERT_EQUAL_INT8 ('\0', devname[0]);
|
||||
TEST_ASSERT_EQUAL_UINT (1, buflen);
|
||||
|
||||
- sprintf (devname, "testdev");
|
||||
+ snprintf (devname, BOUNDDEVBUFSZ * sizeof (char), "testdev");
|
||||
buflen = strlen (devname);
|
||||
|
||||
TEST_ASSERT_SUCCESS_ERRNO (
|
||||
diff --git a/tests/test_stream_disconnect.cpp b/tests/test_stream_disconnect.cpp
|
||||
index d46916f279..2e1e77960c 100644
|
||||
--- a/tests/test_stream_disconnect.cpp
|
||||
+++ b/tests/test_stream_disconnect.cpp
|
||||
@@ -78,8 +78,8 @@ void test_stream_disconnect ()
|
||||
|
||||
// Apparently Windows can't connect to 0.0.0.0. A better fix would be welcome.
|
||||
#ifdef ZMQ_HAVE_WINDOWS
|
||||
- sprintf (connect_endpoint, "tcp://127.0.0.1:%s",
|
||||
- strrchr (bind_endpoint, ':') + 1);
|
||||
+ snprintf (connect_endpoint, MAX_SOCKET_STRING * sizeof (char),
|
||||
+ "tcp://127.0.0.1:%s", strrchr (bind_endpoint, ':') + 1);
|
||||
#else
|
||||
strcpy (connect_endpoint, bind_endpoint);
|
||||
#endif
|
||||
diff --git a/tests/test_unbind_wildcard.cpp b/tests/test_unbind_wildcard.cpp
|
||||
index f25d6acc46..92a577d9dd 100644
|
||||
--- a/tests/test_unbind_wildcard.cpp
|
||||
+++ b/tests/test_unbind_wildcard.cpp
|
||||
@@ -40,8 +40,8 @@ void test_address_wildcard_ipv4 ()
|
||||
|
||||
// Apparently Windows can't connect to 0.0.0.0. A better fix would be welcome.
|
||||
#ifdef ZMQ_HAVE_WINDOWS
|
||||
- sprintf (connect_endpoint, "tcp://127.0.0.1:%s",
|
||||
- strrchr (bind_endpoint, ':') + 1);
|
||||
+ snprintf (connect_endpoint, 256 * sizeof (char), "tcp://127.0.0.1:%s",
|
||||
+ strrchr (bind_endpoint, ':') + 1);
|
||||
#else
|
||||
strcpy (connect_endpoint, bind_endpoint);
|
||||
#endif
|
||||
@@ -81,11 +81,11 @@ void test_address_wildcard_ipv6 ()
|
||||
|
||||
#ifdef ZMQ_HAVE_WINDOWS
|
||||
if (ipv6)
|
||||
- sprintf (connect_endpoint, "tcp://[::1]:%s",
|
||||
- strrchr (bind_endpoint, ':') + 1);
|
||||
+ snprintf (connect_endpoint, 256 * sizeof (char), "tcp://[::1]:%s",
|
||||
+ strrchr (bind_endpoint, ':') + 1);
|
||||
else
|
||||
- sprintf (connect_endpoint, "tcp://127.0.0.1:%s",
|
||||
- strrchr (bind_endpoint, ':') + 1);
|
||||
+ snprintf (connect_endpoint, 256 * sizeof (char), "tcp://127.0.0.1:%s",
|
||||
+ strrchr (bind_endpoint, ':') + 1);
|
||||
#else
|
||||
strcpy (connect_endpoint, bind_endpoint);
|
||||
#endif
|
||||
diff --git a/tests/test_ws_transport.cpp b/tests/test_ws_transport.cpp
|
||||
index 49b810fec0..6781af4d7d 100644
|
||||
--- a/tests/test_ws_transport.cpp
|
||||
+++ b/tests/test_ws_transport.cpp
|
||||
@@ -47,7 +47,8 @@ void test_roundtrip ()
|
||||
zmq_getsockopt (sb, ZMQ_LAST_ENDPOINT, bind_address, &addr_length));
|
||||
|
||||
// Windows can't connect to 0.0.0.0
|
||||
- sprintf (connect_address, "ws://127.0.0.1%s", strrchr (bind_address, ':'));
|
||||
+ snprintf (connect_address, MAX_SOCKET_STRING * sizeof (char),
|
||||
+ "ws://127.0.0.1%s", strrchr (bind_address, ':'));
|
||||
|
||||
TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, connect_address));
|
||||
|
||||
diff --git a/tests/testutil.cpp b/tests/testutil.cpp
|
||||
index 5306aff9b2..ba7eb9b592 100644
|
||||
--- a/tests/testutil.cpp
|
||||
+++ b/tests/testutil.cpp
|
||||
@@ -510,16 +510,15 @@
|
||||
addr_len = sizeof (struct sockaddr_storage);
|
||||
TEST_ASSERT_SUCCESS_RAW_ERRNO (
|
||||
getsockname (s_pre, (struct sockaddr *) &addr, &addr_len));
|
||||
- sprintf (my_endpoint_, "%s://%s:%u",
|
||||
- protocol_ == IPPROTO_TCP
|
||||
- ? "tcp"
|
||||
- : protocol_ == IPPROTO_UDP
|
||||
- ? "udp"
|
||||
- : protocol_ == IPPROTO_WSS ? "wss" : "ws",
|
||||
- address_,
|
||||
- af_ == AF_INET
|
||||
- ? ntohs ((*(struct sockaddr_in *) &addr).sin_port)
|
||||
- : ntohs ((*(struct sockaddr_in6 *) &addr).sin6_port));
|
||||
+ snprintf (
|
||||
+ my_endpoint_, 6 + strlen (address_) + 7 * sizeof (char), "%s://%s:%u",
|
||||
+ protocol_ == IPPROTO_TCP ? "tcp"
|
||||
+ : protocol_ == IPPROTO_UDP ? "udp"
|
||||
+ : protocol_ == IPPROTO_WSS ? "wss"
|
||||
+ : "ws",
|
||||
+ address_,
|
||||
+ af_ == AF_INET ? ntohs ((*(struct sockaddr_in *) &addr).sin_port)
|
||||
+ : ntohs ((*(struct sockaddr_in6 *) &addr).sin6_port));
|
||||
}
|
||||
|
||||
return s_pre;
|
|
@ -1,70 +1,70 @@
|
|||
Zcash Contributors
|
||||
==================
|
||||
|
||||
Jack Grigg (1243)
|
||||
Kris Nuttycombe (582)
|
||||
Jack Grigg (1296)
|
||||
Kris Nuttycombe (618)
|
||||
Simon Liu (460)
|
||||
Sean Bowe (389)
|
||||
Daira Hopwood (343)
|
||||
Daira Hopwood (376)
|
||||
Eirik Ogilvie-Wigley (216)
|
||||
Wladimir J. van der Laan (158)
|
||||
Wladimir J. van der Laan (159)
|
||||
Pieter Wuille (143)
|
||||
Alfredo Garcia (119)
|
||||
Alfredo Garcia (120)
|
||||
Taylor Hornby (118)
|
||||
Marshall Gaucher (116)
|
||||
Marshall Gaucher (118)
|
||||
Ying Tong Lai (90)
|
||||
Marco Falke (90)
|
||||
Jonas Schnelli (90)
|
||||
Jay Graber (89)
|
||||
Larry Ruane (88)
|
||||
Marco Falke (86)
|
||||
Greg Pfeil (83)
|
||||
Cory Fields (78)
|
||||
sasha (62)
|
||||
Matt Corallo (60)
|
||||
sasha (59)
|
||||
Nathan Wilcox (57)
|
||||
practicalswift (42)
|
||||
Dimitris Apostolou (40)
|
||||
Kevin Gallagher (38)
|
||||
Dimitris Apostolou (38)
|
||||
fanquake (36)
|
||||
Carl Dong (30)
|
||||
Luke Dashjr (26)
|
||||
Carl Dong (26)
|
||||
Gregory Maxwell (24)
|
||||
John Newbery (23)
|
||||
Jorge Timón (22)
|
||||
Greg Pfeil (20)
|
||||
furszy (18)
|
||||
Jonathan "Duke" Leto (18)
|
||||
syd (16)
|
||||
Suhas Daftuar (16)
|
||||
Patick Strateman (16)
|
||||
Marius Kjærstad (15)
|
||||
Charlie O'Keefe (15)
|
||||
avnish (14)
|
||||
Per Grön (14)
|
||||
Alex Morcos (14)
|
||||
Benjamin Winston (13)
|
||||
Steven Smith (12)
|
||||
Pavel Janík (12)
|
||||
Patrick Strateman (12)
|
||||
Jeremy Rubin (12)
|
||||
Ariel Gabizon (12)
|
||||
Suhas Daftuar (11)
|
||||
Russell Yanofsky (11)
|
||||
Paige Peterson (11)
|
||||
Kaz Wesley (11)
|
||||
João Barbosa (11)
|
||||
Alex Morcos (11)
|
||||
Philip Kaufmann (10)
|
||||
Peter Todd (10)
|
||||
Marius Kjærstad (10)
|
||||
ying tong (9)
|
||||
teor (9)
|
||||
nomnombtc (9)
|
||||
Zancas Wilcox (9)
|
||||
Russell Yanofsky (9)
|
||||
kozyilmaz (8)
|
||||
Jeff Garzik (8)
|
||||
James O'Beirne (8)
|
||||
Chun Kuan Lee (8)
|
||||
Ben Wilson (8)
|
||||
Karl-Johan Alm (7)
|
||||
Hennadii Stepanov (7)
|
||||
Alex Wied (7)
|
||||
James O'Beirne (6)
|
||||
David Mercer (6)
|
||||
Daniel Kraft (6)
|
||||
Daniel Cousens (6)
|
||||
|
@ -123,8 +123,10 @@ Pejvan (2)
|
|||
Pavol Rusnak (2)
|
||||
Pavel Vasin (2)
|
||||
Mustafa (2)
|
||||
Miodrag Popović (2)
|
||||
Matthew King (2)
|
||||
Mary Moore-Simmons (2)
|
||||
Mark Friedenbach (2)
|
||||
Marek (2)
|
||||
Joe Turgeon (2)
|
||||
Jesse Cohen (2)
|
||||
|
@ -159,6 +161,7 @@ kirkalx (1)
|
|||
kazcw (1)
|
||||
jeff-liang (1)
|
||||
jc (1)
|
||||
idm (1)
|
||||
glowang (1)
|
||||
ewillbefull@gmail.com (1)
|
||||
emilrus (1)
|
||||
|
@ -198,10 +201,10 @@ Nick (1)
|
|||
Nathaniel Mahieu (1)
|
||||
Murilo Santana (1)
|
||||
Miles Manley (1)
|
||||
Michał Janiszewski (1)
|
||||
Maxwell Gubler (1)
|
||||
Matt Quinn (1)
|
||||
Marko Bencun (1)
|
||||
Mark Friedenbach (1)
|
||||
Luv Khemani (1)
|
||||
Louis Nyffenegger (1)
|
||||
LongShao007 (1)
|
||||
|
|
|
@ -35,49 +35,25 @@ The following features are deprecated, but remain enabled by default. These feat
|
|||
will be disabled if `-allowdeprecated=none` is added to the CLI arguments when starting
|
||||
the node, or if an `allowdeprecated=none` line is added to `zcash.conf`.
|
||||
|
||||
### Deprecated in 5.0.0
|
||||
|
||||
The following features are deprecated as of release 5.0.0 and will be disabled by
|
||||
default as of release 5.3.0.
|
||||
|
||||
- `legacy_privacy` - The default "legacy" privacy policy for z_sendmany is
|
||||
deprecated. Use `-allowdeprecated=none` to require the default behavior to
|
||||
conform to the `FullPrivacy` directive in all cases instead of just for
|
||||
transactions involving unified addresses.
|
||||
- `getnewaddress` - The `getnewaddress` RPC method is deprecated.
|
||||
- `getrawchangeaddress` - The `getrawchangeaddress` RPC method is deprecated.
|
||||
- `z_getbalance` - The `z_getbalance` RPC method is deprecated.
|
||||
- `z_gettotalbalance` - The `z_gettotalbalance` RPC method is deprecated.
|
||||
- `z_getnewaddress` - The `z_getnewaddress` RPC method is deprecated.
|
||||
- `z_listaddresses` - The `z_listaddresses` RPC method is deprecated.
|
||||
- `addrtype` - The `type` attribute is deprecated in the results of RPC
|
||||
methods that return address metadata. It is recommended that applications
|
||||
using this metadata be updated to use the `pool` or `address_type`
|
||||
attributes, which have replaced the `type` attribute, as appropriate.
|
||||
|
||||
### Deprecated in 5.1.0
|
||||
|
||||
- `wallettxvjoinsplit` - The `vjoinsplit` attribute returned by the
|
||||
`gettransaction` RPC method is deprecated.
|
||||
| `feature` | Deprecated | Feature details
|
||||
|-----------------------|------------|----------------
|
||||
| `z_getbalance` | 5.0.0 | The `z_getbalance` RPC method.
|
||||
| `z_gettotalbalance` | 5.0.0 | The `z_gettotalbalance` RPC method.
|
||||
| `gbt_oldhashes` | 5.4.0 | The `finalsaplingroothash`, `lightclientroothash`, and `blockcommitmentshash` fields in the output of `getblocktemplate`, which are replaced by the `defaultroots` field.
|
||||
|
||||
Stage 2
|
||||
-------
|
||||
|
||||
Each feature in the lists below may be enabled by adding `-allowdeprecated=<feature>`
|
||||
Each feature in the table below may be enabled by adding `-allowdeprecated=<feature>`
|
||||
to the CLI arguments when starting the node, or by adding an `allowdeprecated=<feature>`
|
||||
line to `zcash.conf`.
|
||||
|
||||
### Disabled in 5.0.0
|
||||
|
||||
The following features are disabled by default, and will be removed in release 5.3.0.
|
||||
|
||||
- `zcrawreceive` - The `zcrawreceive` RPC method is disabled.
|
||||
- `zcrawjoinsplit` - The `zcrawjoinsplit` RPC method is disabled.
|
||||
- `zcrawkeygen` - The `zcrawkeygen` RPC method is disabled.
|
||||
|
||||
### Disabled in 5.0.1
|
||||
|
||||
The following features are disabled by default, and will be removed in release 5.3.0.
|
||||
|
||||
- `dumpwallet` - The `dumpwallet` RPC method is disabled.
|
||||
|
||||
| `feature` | Deprecated | Feature details
|
||||
|-----------------------|------------|----------------
|
||||
| `legacy_privacy` | 5.0.0 | The default "legacy" privacy policy for `z_sendmany` has been replaced by the `FullPrivacy` directive.
|
||||
| `getnewaddress` | 5.0.0 | The `getnewaddress` RPC method.
|
||||
| `getrawchangeaddress` | 5.0.0 | The `getrawchangeaddress` RPC method.
|
||||
| `z_getnewaddress` | 5.0.0 | The `z_getnewaddress` RPC method.
|
||||
| `z_listaddresses` | 5.0.0 | The `z_listaddresses` RPC method.
|
||||
| `addrtype` | 5.0.0 | The `type` attribute is deprecated in the results of RPC methods that return address metadata. It is recommended that applications using this metadata be updated to use the `pool` or `address_type` attributes, which have replaced the `type` attribute, as appropriate.
|
||||
| `wallettxvjoinsplit` | 5.1.0 | The `vjoinsplit` attribute returned by the `gettransaction` RPC method.
|
||||
|
|
|
@ -15,8 +15,7 @@ be removed from tier 1. These dates are subject to change.
|
|||
|
||||
| target | OS | End of Support |
|
||||
| ----------------------- | ------------ | -------------- |
|
||||
| `x86_64-pc-linux-gnu` | CentOS 8 | TBD |
|
||||
| | Debian 10 | June 2024 |
|
||||
| `x86_64-pc-linux-gnu` | Debian 10 | June 2024 |
|
||||
| | Debian 11 | June 2026 |
|
||||
| | Ubuntu 18.04 | April 2023 |
|
||||
| | Ubuntu 20.04 | April 2025 |
|
||||
|
|
|
@ -135,9 +135,3 @@ rescan:
|
|||
```bash
|
||||
$ zcash-cli help importprivkey
|
||||
```
|
||||
|
||||
### Using `dumpwallet`
|
||||
|
||||
This command inherited from Bitcoin is deprecated and should not be used. It
|
||||
will export private keys in a similar fashion as `z_exportwallet` but only for
|
||||
transparent addresses.
|
||||
|
|
|
@ -42,7 +42,7 @@ with a couple of minor differences:
|
|||
- When running the release script, use the `--hotfix` flag. Provide the hash of
|
||||
the commit to be released as the first argument:
|
||||
|
||||
$ ./zcutil/make-release.py --hotfix <COMMIT_ID> <RELEASE> <RELEASE_PREV> <APPROX_RELEASE_HEIGHT>
|
||||
$ ./zcutil/make-release.py --hotfix <COMMIT_ID> <RELEASE> <RELEASE_PREV> <RELEASE_FROM> <APPROX_RELEASE_HEIGHT>
|
||||
|
||||
- To review the automated changes in git:
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
|
||||
.TH ZCASH-CLI "1" "October 2022" "zcash-cli v5.3.0" "User Commands"
|
||||
.TH ZCASH-CLI "1" "February 2023" "zcash-cli v5.4.0" "User Commands"
|
||||
.SH NAME
|
||||
zcash-cli \- manual page for zcash-cli v5.3.0
|
||||
zcash-cli \- manual page for zcash-cli v5.4.0
|
||||
.SH DESCRIPTION
|
||||
Zcash RPC client version v5.3.0
|
||||
Zcash RPC client version v5.4.0
|
||||
.PP
|
||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
@ -25,7 +25,8 @@ This help message
|
|||
.HP
|
||||
\fB\-conf=\fR<file>
|
||||
.IP
|
||||
Specify configuration file (default: zcash.conf)
|
||||
Specify configuration file. Relative paths will be prefixed by datadir
|
||||
location. (default: zcash.conf)
|
||||
.HP
|
||||
\fB\-datadir=\fR<dir>
|
||||
.IP
|
||||
|
@ -79,8 +80,8 @@ Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
|
|||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
||||
Copyright (C) 2009-2022 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2022 The Zcash Developers
|
||||
Copyright (C) 2009-2023 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2023 The Zcash Developers
|
||||
|
||||
This is experimental software.
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
|
||||
.TH ZCASH-TX "1" "October 2022" "zcash-tx v5.3.0" "User Commands"
|
||||
.TH ZCASH-TX "1" "February 2023" "zcash-tx v5.4.0" "User Commands"
|
||||
.SH NAME
|
||||
zcash-tx \- manual page for zcash-tx v5.3.0
|
||||
zcash-tx \- manual page for zcash-tx v5.4.0
|
||||
.SH DESCRIPTION
|
||||
Zcash zcash\-tx utility version v5.3.0
|
||||
Zcash zcash\-tx utility version v5.4.0
|
||||
.SS "Usage:"
|
||||
.TP
|
||||
zcash\-tx [options] <hex\-tx> [commands]
|
||||
|
@ -91,8 +91,8 @@ Set register NAME to given JSON\-STRING
|
|||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
||||
Copyright (C) 2009-2022 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2022 The Zcash Developers
|
||||
Copyright (C) 2009-2023 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2023 The Zcash Developers
|
||||
|
||||
This is experimental software.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
|
||||
.TH ZCASHD-WALLET-TOOL "1" "October 2022" "zcashd-wallet-tool v5.3.0" "User Commands"
|
||||
.TH ZCASHD-WALLET-TOOL "1" "February 2023" "zcashd-wallet-tool v5.4.0" "User Commands"
|
||||
.SH NAME
|
||||
zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.3.0
|
||||
zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.4.0
|
||||
.SH SYNOPSIS
|
||||
.B zcashd-wallet-tool
|
||||
[\fI\,OPTIONS\/\fR]
|
||||
|
@ -45,7 +45,7 @@ The environment variable RUST_LOG controls debug output, e.g.
|
|||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
||||
Copyright (C) 2015-2022 The Zcash Developers
|
||||
Copyright (C) 2015-2023 The Zcash Developers
|
||||
|
||||
This is experimental software.
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
|
||||
.TH ZCASHD "1" "October 2022" "zcashd v5.3.0" "User Commands"
|
||||
.TH ZCASHD "1" "February 2023" "zcashd v5.4.0" "User Commands"
|
||||
.SH NAME
|
||||
zcashd \- manual page for zcashd v5.3.0
|
||||
zcashd \- manual page for zcashd v5.4.0
|
||||
.SH DESCRIPTION
|
||||
Zcash Daemon version v5.3.0
|
||||
Zcash Daemon version v5.4.0
|
||||
.PP
|
||||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
@ -15,7 +15,11 @@ Start Zcash Daemon
|
|||
.HP
|
||||
\-?
|
||||
.IP
|
||||
This help message
|
||||
Print this help message and exit
|
||||
.HP
|
||||
\fB\-version\fR
|
||||
.IP
|
||||
Print version and exit
|
||||
.HP
|
||||
\fB\-alerts\fR
|
||||
.IP
|
||||
|
@ -30,11 +34,10 @@ long fork (%s in cmd is replaced by message)
|
|||
.IP
|
||||
Explicitly allow the use of the specified deprecated feature. Multiple
|
||||
instances of this parameter are permitted; values for <feature> must be
|
||||
selected from among {"none", "addrtype", "getnewaddress",
|
||||
"getrawchangeaddress", "legacy_privacy", "wallettxvjoinsplit",
|
||||
"z_getbalance", "z_getnewaddress", "z_gettotalbalance",
|
||||
"z_listaddresses", "dumpwallet", "zcrawjoinsplit", "zcrawkeygen",
|
||||
"zcrawreceive"}
|
||||
selected from among {"none", "gbt_oldhashes", "z_getbalance",
|
||||
"z_gettotalbalance", "addrtype", "getnewaddress", "getrawchangeaddress",
|
||||
"legacy_privacy", "wallettxvjoinsplit", "z_getnewaddress",
|
||||
"z_listaddresses"}
|
||||
.HP
|
||||
\fB\-blocknotify=\fR<cmd>
|
||||
.IP
|
||||
|
@ -51,7 +54,8 @@ How thorough the block verification of \fB\-checkblocks\fR is (0\-4, default: 3)
|
|||
.HP
|
||||
\fB\-conf=\fR<file>
|
||||
.IP
|
||||
Specify configuration file (default: zcash.conf)
|
||||
Specify configuration file. Relative paths will be prefixed by datadir
|
||||
location. (default: zcash.conf)
|
||||
.HP
|
||||
\fB\-daemon\fR
|
||||
.IP
|
||||
|
@ -71,8 +75,8 @@ Set database cache size in megabytes (4 to 16384, default: 450)
|
|||
.HP
|
||||
\fB\-debuglogfile=\fR<file>
|
||||
.IP
|
||||
Specify location of debug log file: this can be an absolute path or a
|
||||
path relative to the data directory (default: debug.log)
|
||||
Specify location of debug log file. Relative paths will be prefixed by a
|
||||
net\-specific datadir location. (default: debug.log)
|
||||
.HP
|
||||
\fB\-exportdir=\fR<dir>
|
||||
.IP
|
||||
|
@ -94,12 +98,13 @@ Keep at most <n> unconnectable transactions in memory (default: 100)
|
|||
.HP
|
||||
\fB\-par=\fR<n>
|
||||
.IP
|
||||
Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
|
||||
Set the number of script verification threads (\fB\-16\fR to 16, 0 = auto, <0 =
|
||||
leave that many cores free, default: 0)
|
||||
.HP
|
||||
\fB\-pid=\fR<file>
|
||||
.IP
|
||||
Specify pid file (default: zcashd.pid)
|
||||
Specify pid file. Relative paths will be prefixed by a net\-specific
|
||||
datadir location. (default: zcashd.pid)
|
||||
.HP
|
||||
\fB\-prune=\fR<n>
|
||||
.IP
|
||||
|
@ -416,9 +421,17 @@ Expose node metrics in the Prometheus exposition format. An HTTP
|
|||
listener will be started on <port>, which responds to GET requests on
|
||||
any request path. Use \fB\-metricsallowip\fR and \fB\-metricsbind\fR to control
|
||||
access.
|
||||
.HP
|
||||
\fB\-debugmetrics\fR
|
||||
.IP
|
||||
Include debug metrics in exposed node metrics.
|
||||
.PP
|
||||
Debugging/Testing options:
|
||||
.HP
|
||||
\fB\-uacomment=\fR<cmt>
|
||||
.IP
|
||||
Append comment to the user agent string
|
||||
.HP
|
||||
\fB\-debug=\fR<category>
|
||||
.IP
|
||||
Output debugging information (default: 0, supplying <category> is
|
||||
|
@ -532,6 +545,11 @@ Bind to given address to listen for JSON\-RPC connections. Use
|
|||
[host]:port notation for IPv6. This option can be specified multiple
|
||||
times (default: bind to all interfaces)
|
||||
.HP
|
||||
\fB\-rpccookiefile=\fR<loc>
|
||||
.IP
|
||||
Location of the auth cookie. Relative paths will be prefixed by a
|
||||
net\-specific datadir location. (default: data dir)
|
||||
.HP
|
||||
\fB\-rpcuser=\fR<user>
|
||||
.IP
|
||||
Username for JSON\-RPC connections
|
||||
|
@ -590,8 +608,8 @@ possible (default: 4)
|
|||
In order to ensure you are adequately protecting your privacy when using Zcash,
|
||||
please see <https://z.cash/support/security/>.
|
||||
|
||||
Copyright (C) 2009-2022 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2022 The Zcash Developers
|
||||
Copyright (C) 2009-2023 The Bitcoin Core Developers
|
||||
Copyright (C) 2015-2023 The Zcash Developers
|
||||
|
||||
This is experimental software.
|
||||
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Fixed
|
||||
-----
|
||||
|
||||
This release fixes an error "Assertion `uResultHeight == rewindHeight` failed" (#5958)
|
||||
that could sometimes happen when restarting a node.
|
||||
|
||||
Memory Usage Improvement
|
||||
------------------------
|
||||
|
||||
The memory usage of zcashd has been reduced by not keeping Equihash solutions for all
|
||||
block headers in memory.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Daira Hopwood (14):
|
||||
Always use a tuple as right argument of % in new Python code.
|
||||
Report the prevout for each transparent input as it is being checked
|
||||
Update authors of librustzcash to include Greg Pfeil.
|
||||
Ensure that the optimization of not scanning blocks prior to the wallet's birthday does not cause us to try to "rewind" the Orchard wallet to a height after its current checkpoint.
|
||||
Improve a comment about the wallet birthday scanning optimization.
|
||||
Add release notes for the fix to #5958.
|
||||
Fix a Markdown syntax error
|
||||
Error reporting improvements.
|
||||
Fix a dependency of the `show_help` RPC test on the number of cores, and an incompatibility with Python 3.9 in the test framework that affected the `receivedby` extended RPC test.
|
||||
Avoid storing the Equihash solution in a CBlockIndex object once it has been written to the leveldb database.
|
||||
Improve handling of database read errors.
|
||||
Add Prometheus metrics so we have more visibility into what is going on with the Equihash solution trimming:
|
||||
Declare `CBlockTreeDB::Read*` methods as `const` when they are trivially so.
|
||||
Update constants
|
||||
|
||||
Greg Pfeil (39):
|
||||
Fix display of binary name in error messages.
|
||||
Address review feedback and fixed test failures
|
||||
Check dependency updates on the correct branch
|
||||
updatecheck: fix GitHub auth
|
||||
updatecheck: simplify token handling
|
||||
updatecheck: support XDG-based token location
|
||||
`zcash --help` test improvements
|
||||
Remove the PR template
|
||||
Apply suggestions from code review
|
||||
Small formatting change
|
||||
Improve z_sendmany documentation
|
||||
Avoid inconsistent Python lookup
|
||||
Propagate asOfHeight to all relevant RPC calls
|
||||
Implement `asOfHeight`
|
||||
Add additional asOfHeight tests
|
||||
Don’t ignore asOfHeight in IsSpent calls
|
||||
Extract asOfHeight info from RPC calls
|
||||
Ignore mempool when asOfHeight is set
|
||||
Fix calls that should have specified asOfHeight
|
||||
GetUnconfirmedBalance should not take asOfHeight
|
||||
Require minconf > 0 when asOfHeight is provided
|
||||
Add error cases and default to `asOfHeight`
|
||||
Work around #6262 in wallet_listunspent
|
||||
Don’t trust mempool tx when using `asOfHeight`
|
||||
Apply suggestions from code review
|
||||
Add matured_at_height test helper
|
||||
Add FIXMEs to repair comments after #6262 is fixed
|
||||
Update src/rpc/server.cpp
|
||||
Apply suggestions from code review
|
||||
Fix small error in code review suggestions
|
||||
Revert change to getbalance minconf
|
||||
Revert getinfo support of asOfHeight
|
||||
Change asOfHeight to use -1 as default
|
||||
Change asOfHeight to preserve Bitcoin compat
|
||||
Apply suggestions from code review
|
||||
Simplify filtering AvailableCoins by destination
|
||||
Postpone dependency updates for v5.3.1
|
||||
make-release.py: Versioning changes for 5.3.1-rc1.
|
||||
make-release.py: Updated manpages for 5.3.1-rc1.
|
||||
|
||||
Jack Grigg (1):
|
||||
Place zcashd.debug.* metrics behind a -debugmetrics config option
|
||||
|
||||
Kris Nuttycombe (3):
|
||||
Add extra detail related to transparent inputs and outputs.
|
||||
Add `unspent_as_of` argument to `listunspent`
|
||||
Add RPC test for wallet_listunspent changes
|
||||
|
||||
Miodrag Popović (2):
|
||||
FindNextBlocksToDownload(): Fetch active consensus params to read nMinimumChainWork
|
||||
Headers sync timeout: Use EstimateNetHeight() for closer approximation of remaining headers to download
|
||||
|
||||
Suhas Daftuar (2):
|
||||
Delay parallel block download until chain has sufficient work
|
||||
Add timeout for headers sync
|
||||
|
||||
idm (1):
|
||||
fix aarch64 dependency native clang download URL
|
||||
|
||||
sasha (3):
|
||||
Update gitian-linux-parallel.yml
|
||||
Fix gitian version string issue by reverting the GIT_DIR backport commit
|
||||
Remove `git_check_in_repo` from genbuild.sh to fix gitian version string
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Fixed
|
||||
-----
|
||||
|
||||
This release fixes an error "Assertion `uResultHeight == rewindHeight` failed" (#5958)
|
||||
that could sometimes happen when restarting a node.
|
||||
|
||||
Memory Usage Improvement
|
||||
------------------------
|
||||
|
||||
The memory usage of zcashd has been reduced by not keeping Equihash solutions for all
|
||||
block headers in memory.
|
||||
|
||||
RPC changes
|
||||
-----------
|
||||
|
||||
The following RPC methods that query wallet state now support an optional `asOfHeight`
|
||||
parameter, to execute the query as if it were run when the blockchain was at the height
|
||||
specified by this argument:
|
||||
|
||||
* `getbalance`
|
||||
* `getreceivedbyaddress`
|
||||
* `gettransaction` (*)
|
||||
* `getwalletinfo`
|
||||
* `listaddressgroupings`
|
||||
* `listreceivedbyaddress` (*)
|
||||
* `listsinceblock` (*)
|
||||
* `listtransactions`
|
||||
* `listunspent` (*)
|
||||
* `z_getbalanceforaccount`
|
||||
* `z_getbalanceforviewingkey`
|
||||
* `z_getmigrationstatus`
|
||||
* `z_getnotescount`
|
||||
* `z_listreceivedbyaddress`
|
||||
* `z_listunspent`
|
||||
|
||||
(*) For these methods, additional parameters have been added to maintain
|
||||
compatibility of parameter lists with Bitcoin Core. Default values should be
|
||||
passed for these additional parameters in order to use `asOfHeight`. See the
|
||||
[RPC documentation](https://zcash.github.io/) for details.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Daira Hopwood (21):
|
||||
Always use a tuple as right argument of % in new Python code.
|
||||
Report the prevout for each transparent input as it is being checked
|
||||
Update authors of librustzcash to include Greg Pfeil.
|
||||
Ensure that the optimization of not scanning blocks prior to the wallet's birthday does not cause us to try to "rewind" the Orchard wallet to a height after its current checkpoint.
|
||||
Improve a comment about the wallet birthday scanning optimization.
|
||||
Add release notes for the fix to #5958.
|
||||
Fix a Markdown syntax error
|
||||
Error reporting improvements.
|
||||
Fix a dependency of the `show_help` RPC test on the number of cores, and an incompatibility with Python 3.9 in the test framework that affected the `receivedby` extended RPC test.
|
||||
Avoid storing the Equihash solution in a CBlockIndex object once it has been written to the leveldb database.
|
||||
Improve handling of database read errors.
|
||||
Add Prometheus metrics so we have more visibility into what is going on with the Equihash solution trimming:
|
||||
Declare `CBlockTreeDB::Read*` methods as `const` when they are trivially so.
|
||||
Update constants
|
||||
Add release notes for #6122 (`asOfHeight` RPC parameters).
|
||||
Update release notes: z_getnotescount already had the minconf parameter
|
||||
Add release notes for #6122 (`asOfHeight` RPC parameters).
|
||||
Update release notes: z_getnotescount already had the minconf parameter
|
||||
Bump timestamps and add libcxx/native_clang 15.0.6 in `postponed-updates.txt`.
|
||||
make-release.py: Versioning changes for 5.3.1.
|
||||
make-release.py: Updated manpages for 5.3.1.
|
||||
|
||||
Greg Pfeil (40):
|
||||
Fix display of binary name in error messages.
|
||||
Address review feedback and fixed test failures
|
||||
Check dependency updates on the correct branch
|
||||
updatecheck: fix GitHub auth
|
||||
updatecheck: simplify token handling
|
||||
updatecheck: support XDG-based token location
|
||||
`zcash --help` test improvements
|
||||
Remove the PR template
|
||||
Apply suggestions from code review
|
||||
Small formatting change
|
||||
Improve z_sendmany documentation
|
||||
Avoid inconsistent Python lookup
|
||||
Propagate asOfHeight to all relevant RPC calls
|
||||
Implement `asOfHeight`
|
||||
Add additional asOfHeight tests
|
||||
Don’t ignore asOfHeight in IsSpent calls
|
||||
Extract asOfHeight info from RPC calls
|
||||
Ignore mempool when asOfHeight is set
|
||||
Fix calls that should have specified asOfHeight
|
||||
GetUnconfirmedBalance should not take asOfHeight
|
||||
Require minconf > 0 when asOfHeight is provided
|
||||
Add error cases and default to `asOfHeight`
|
||||
Work around #6262 in wallet_listunspent
|
||||
Don’t trust mempool tx when using `asOfHeight`
|
||||
Apply suggestions from code review
|
||||
Add matured_at_height test helper
|
||||
Add FIXMEs to repair comments after #6262 is fixed
|
||||
Update src/rpc/server.cpp
|
||||
Apply suggestions from code review
|
||||
Fix small error in code review suggestions
|
||||
Revert change to getbalance minconf
|
||||
Revert getinfo support of asOfHeight
|
||||
Change asOfHeight to use -1 as default
|
||||
Change asOfHeight to preserve Bitcoin compat
|
||||
Apply suggestions from code review
|
||||
Simplify filtering AvailableCoins by destination
|
||||
Postpone dependency updates for v5.3.1
|
||||
make-release.py: Versioning changes for 5.3.1-rc1.
|
||||
make-release.py: Updated manpages for 5.3.1-rc1.
|
||||
make-release.py: Updated release notes and changelog for 5.3.1-rc1.
|
||||
|
||||
Jack Grigg (1):
|
||||
Place zcashd.debug.* metrics behind a -debugmetrics config option
|
||||
|
||||
Kris Nuttycombe (3):
|
||||
Add extra detail related to transparent inputs and outputs.
|
||||
Add `unspent_as_of` argument to `listunspent`
|
||||
Add RPC test for wallet_listunspent changes
|
||||
|
||||
Miodrag Popović (2):
|
||||
FindNextBlocksToDownload(): Fetch active consensus params to read nMinimumChainWork
|
||||
Headers sync timeout: Use EstimateNetHeight() for closer approximation of remaining headers to download
|
||||
|
||||
Suhas Daftuar (2):
|
||||
Delay parallel block download until chain has sufficient work
|
||||
Add timeout for headers sync
|
||||
|
||||
idm (1):
|
||||
fix aarch64 dependency native clang download URL
|
||||
|
||||
sasha (3):
|
||||
Update gitian-linux-parallel.yml
|
||||
Fix gitian version string issue by reverting the GIT_DIR backport commit
|
||||
Remove `git_check_in_repo` from genbuild.sh to fix gitian version string
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Fixed
|
||||
-----
|
||||
|
||||
This is a hotfix release that fixes a regression in memory usage during
|
||||
Initial Block Download. The regression was indirectly caused by a change
|
||||
to prioritize downloading headers (PR #6231), introduced in release 5.3.1.
|
||||
It caused memory usage for new nodes to spike to roughly 11 GiB about an
|
||||
hour after starting Initial Block Download.
|
||||
|
||||
The issue fixed by this release does not affect nodes that start from
|
||||
a fully synced chain, or that had sufficient memory available to get
|
||||
past the memory usage spike.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Daira Hopwood (5):
|
||||
Revert "Headers-first fix"
|
||||
Add release notes for the IBD memory spike issue.
|
||||
Postpone updates.
|
||||
make-release.py: Versioning changes for 5.3.2.
|
||||
make-release.py: Updated manpages for 5.3.2.
|
||||
|
|
@ -0,0 +1,202 @@
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
This release fixes an issue that could potentially cause a node to crash with the
|
||||
log message "The wallet's best block hash `<hash>` was not detected in restored
|
||||
chain state. Giving up; please restart with `-rescan`."
|
||||
|
||||
RPC Changes
|
||||
-----------
|
||||
|
||||
- `z_sendmany` will no longer select transparent coinbase when "ANY\_TADDR" is
|
||||
used as the `fromaddress`. It was already documented to do this, but the
|
||||
previous behavior didn’t match. When coinbase notes were selected in this
|
||||
case, they would (properly) require that the transaction didn’t have any
|
||||
change, but this could be confusing, as the documentation stated that these
|
||||
two conditions (using "ANY\_TADDR" and disallowing change) wouldn’t coincide.
|
||||
|
||||
[Deprecations](https://zcash.github.io/zcash/user/deprecation.html)
|
||||
--------------
|
||||
|
||||
The following features have been deprecated, but remain available by default.
|
||||
These features may be disabled by setting `-allowdeprecated=none`. 18 weeks
|
||||
after this release, these features will be disabled by default and the following
|
||||
flags to `-allowdeprecated` will be required to permit their continued use:
|
||||
|
||||
- `gbt_oldhashes`: the `finalsaplingroothash`, `lightclientroothash`, and
|
||||
`blockcommitmentshash` fields in the output of `getblocktemplate` have been
|
||||
replaced by the `defaultroots` field.
|
||||
|
||||
The following previously-deprecated features have been disabled by default, and
|
||||
will be removed in 18 weeks:
|
||||
|
||||
- `legacy_privacy`
|
||||
- `getnewaddress`
|
||||
- `getrawchangeaddress`
|
||||
- `z_getbalance`
|
||||
- `z_gettotalbalance`
|
||||
- `z_getnewaddress`
|
||||
- `z_listaddresses`
|
||||
- `addrtype`
|
||||
- `wallettxvjoinsplit`
|
||||
|
||||
The following previously-deprecated features have been removed:
|
||||
|
||||
- `dumpwallet`
|
||||
- `zcrawreceive`
|
||||
- `zcrawjoinsplit`
|
||||
- `zcrawkeygen`
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
|
||||
- CentOS 8 has been removed from the list of supported platforms. It reached EoL
|
||||
on December 31st 2021, and does not satisfy our Tier 2 policy requirements.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Alex Morcos (3):
|
||||
Make accessing mempool parents and children public
|
||||
Expose FormatStateMessage
|
||||
Rewrite CreateNewBlock
|
||||
|
||||
Carl Dong (4):
|
||||
depends: More robust cmake invocation
|
||||
depends: Cleanup CMake invocation
|
||||
depends: Prepend CPPFLAGS to C{,XX}FLAGS for CMake
|
||||
depends: Specify LDFLAGS to cmake as well
|
||||
|
||||
Daira Hopwood (6):
|
||||
Add tl::expected. refs #4816
|
||||
The std::expected proposal has unnecessary instances of undefined behaviour for operator->, operator*, and error(). Make these into assertion failures (this still conforms to the proposal).
|
||||
Refactor HaveShieldedRequirements to use tl::expected (example with a void T) and rename it to CheckShieldedRequirements.
|
||||
tl::expected follow-up to address @str4d's comments.
|
||||
Cleanup after removing dumpwallet.
|
||||
Change the time that the wallet will wait for the block index to load from 5 minutes to 2 hours.
|
||||
|
||||
Dimitris Apostolou (2):
|
||||
Fix typos
|
||||
Fix typos
|
||||
|
||||
Greg Pfeil (22):
|
||||
Add PrivacyPolicyMeet
|
||||
Remove trailing whitespace in fetch-params.sh
|
||||
Migrate fetch-params.sh to bash
|
||||
Scope the fetch-params lock file to the user
|
||||
Update comments to match changed tests
|
||||
Put utf8.h in the correct place
|
||||
Don’t select transparent coinbase with ANY_TADDR
|
||||
Update failing tests after fixing ANY_TADDR behavior
|
||||
Apply suggestions from code review
|
||||
Apply suggestions from code review
|
||||
Appease ShellCheck
|
||||
Defer fixing docker/entrypoint.sh lint failure
|
||||
Apply suggestions from code review
|
||||
Fix a minor bug in docker/entrypoint.sh
|
||||
Improve PrivacyPolicy comments
|
||||
Apply suggestions from code review
|
||||
Add release notes
|
||||
Update src/wallet/asyncrpcoperation_sendmany.cpp
|
||||
Fix a missing newline in the RPC docs
|
||||
No longer test_received_sprout
|
||||
Use cached sprout addresses rather than funding
|
||||
Update overwinter test to not shield to Sprout
|
||||
|
||||
Jack Grigg (39):
|
||||
test: Handle mining slow start inside `CreateNewBlock_validity`
|
||||
test: Improve CreateNewBlock_validity exception checks
|
||||
txdb: Remove const annotation from blockinfo iterator type
|
||||
Remove `dumpwallet` RPC method
|
||||
qa: Refactor `wallet_deprecation` test to simplify deprecation changes
|
||||
Remove `zcraw*` RPC methods
|
||||
txdb: Clean up for loop syntax in `WriteBatchSync`
|
||||
Disable previously-deprecated features by default
|
||||
Deprecate old hash fields of `getblocktemplate`
|
||||
qa: Change show_help RPC test to print out differences
|
||||
qa: Update mempool_packages RPC test after deprecation ratcheting
|
||||
qa: Import Rust crate audits from Firefox
|
||||
qa: Import Rust crate audits from the Bytecode Alliance
|
||||
qa: Import Rust crate audits from Embark Studios
|
||||
qa: Remove audit-as-crates-io for non-third-party crates
|
||||
cargo update
|
||||
zcash_primitives 0.9
|
||||
clearscreen 2.0
|
||||
depends: googletest 1.12.1
|
||||
Remove CentOS 8 as a supported platform
|
||||
depends: native_zstd 1.5.2
|
||||
depends: native_ccache 4.6.3
|
||||
depends: Add package for native_cmake 3.25.1
|
||||
depends: Force cmake to install libzstd in lib/
|
||||
build-aux: Update Boost macros to latest serials
|
||||
build: Bump required Boost version
|
||||
depends: Force Boost library to be installed in lib/
|
||||
depends: Add tl_expected to update checker
|
||||
depends: Boost 1.81.0
|
||||
depends: utfcpp 3.2.3
|
||||
qa: Postpone LLVM 15 and CCache 4.7 updates
|
||||
depends: Update cxx to 1.0.83
|
||||
cargo update
|
||||
Document -clockoffset option
|
||||
qa: Update show_help RPC test
|
||||
doc: Fix arguments to make-release.py in hotfix process
|
||||
depends: CMake 3.25.2
|
||||
make-release.py: Versioning changes for 5.4.0-rc1.
|
||||
make-release.py: Updated manpages for 5.4.0-rc1.
|
||||
|
||||
James O'Beirne (2):
|
||||
Clarify help messages for path args to mention datadir prefix
|
||||
Add AbsPathForConfigVal to consolidate datadir prefixing for path args
|
||||
|
||||
Kris Nuttycombe (6):
|
||||
Add TransactionStrategy::IsCompatibleWith
|
||||
Modify TransactionBuilder to use the standard default fee.
|
||||
Factor out memo parsing from asyncrpcoperation_sendmany
|
||||
Remove mergetoaddress_sprout test as sending to Sprout is no longer supported.
|
||||
Remove wallet_shieldcoinbase_sprout test.
|
||||
Update `mergetoaddress_mixednotes.py` to no longer send to Sprout.
|
||||
|
||||
Marco Falke (4):
|
||||
[init] Add missing help for args
|
||||
[init] Help Msg: Use Params(CBaseChainParams::MAIN)
|
||||
Clarify mocktime help message
|
||||
init: Fix help message for checkblockindex
|
||||
|
||||
Marius Kjærstad (5):
|
||||
Hardened checkpoint update at block 1860000 for mainnet
|
||||
Update src/chainparams.cpp
|
||||
Some more formatting changes to chainparams.cpp
|
||||
Forgot to add 0x
|
||||
Add some more historical checkpoints
|
||||
|
||||
Mark Friedenbach (1):
|
||||
Prevent block.nTime from decreasing
|
||||
|
||||
Marshall Gaucher (4):
|
||||
Update zcash-build-bench.yml
|
||||
Update README.md
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build.yml
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build-test.yml
|
||||
|
||||
Michał Janiszewski (1):
|
||||
Update debian/compat to version 13
|
||||
|
||||
Russell Yanofsky (2):
|
||||
depends: Add CMake helper for building packages
|
||||
depends: Set CMAKE_INSTALL_RPATH for native packages
|
||||
|
||||
Suhas Daftuar (3):
|
||||
Track transaction packages in CTxMemPoolEntry
|
||||
Add test showing bug in mempool packages
|
||||
Fix mempool package tracking edge case
|
||||
|
||||
Wladimir J. van der Laan (1):
|
||||
rpc: Write authcookie atomically
|
||||
|
||||
Marshall Gaucher (2):
|
||||
add basic tekton zcash env
|
||||
update memory targets with heaptrack
|
||||
|
|
@ -0,0 +1,262 @@
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
This release fixes an issue that could potentially cause a node to crash with the
|
||||
log message "The wallet's best block hash `<hash>` was not detected in restored
|
||||
chain state. Giving up; please restart with `-rescan`."
|
||||
|
||||
Transparent pool and chain supply tracking
|
||||
------------------------------------------
|
||||
|
||||
Since v2.0.0, `zcashd` has tracked the change in value within the Sprout and
|
||||
Sapling shielded pools for each block; v5.0.0 added the Orchard pool. This
|
||||
release completes the set, by tracking the change in value within the
|
||||
"transparent" pool (more precisely, the value stored in Bitcoin-style UTXOs).
|
||||
|
||||
`zcashd` also now tracks the change in "chain supply" for each block, defined as
|
||||
the sum of coinbase output values, minus unclaimed fees. This is precisely equal
|
||||
to the sum of the value in the transparent and shielded pools, and equivalent to
|
||||
the sum of all unspent coins/notes on the chain. It is bounded above by the
|
||||
theoretical maximum supply, but in practice is lower due to, for example, miners
|
||||
not claiming transaction fees.
|
||||
|
||||
> Bitcoin-style consensus rules implement fees as an imbalance between spent
|
||||
> coins/notes and newly-created coins/notes. The consensus rules require that a
|
||||
> coinbase transaction's outputs have a total value no greater than the sum of
|
||||
> that block's subsidy and the fees made available by the transactions in the
|
||||
> block. However, the consensus rules do not require that all of the available
|
||||
> funds are claimed, and a miner can create coinbase transactions with lower
|
||||
> value in the outputs (though in the case of Zcash, the consensus rules do
|
||||
> require the transaction to include [ZIP 1014](https://zips.z.cash/zip-1014)
|
||||
> Funding Stream outputs).
|
||||
|
||||
After upgrading to v5.4.0, `zcashd` will start tracking changes in transparent
|
||||
pool value and chain supply from the height at which it is restarted. Block
|
||||
heights prior to this will not have any information recorded. To track changes
|
||||
from genesis, and thus monitor the total transparent pool size and chain supply,
|
||||
you will need to restart your node with the `-reindex` option.
|
||||
|
||||
RPC Changes
|
||||
-----------
|
||||
|
||||
- `z_sendmany` will no longer select transparent coinbase when "ANY\_TADDR" is
|
||||
used as the `fromaddress`. It was already documented to do this, but the
|
||||
previous behavior didn’t match. When coinbase notes were selected in this
|
||||
case, they would (properly) require that the transaction didn’t have any
|
||||
change, but this could be confusing, as the documentation stated that these
|
||||
two conditions (using "ANY\_TADDR" and disallowing change) wouldn’t coincide.
|
||||
- A new value pool object with `"id": "transparent"` has been added to the
|
||||
`valuePools` list in `getblockchaininfo` and `getblock`.
|
||||
- A new `chainSupply` key has been added to `getblockchaininfo` and `getblock`
|
||||
to report the total chain supply as of that block height (if tracked), and the
|
||||
change in chain supply caused by the block (for `getblock`, if measured).
|
||||
|
||||
Mining
|
||||
-------
|
||||
|
||||
- Changes to `getblocktemplate` have been backported from upstream Bitcoin Core,
|
||||
to significantly improve its performance by doing more work ahead of time in
|
||||
the mempool (and reusing the work across multiple `getblocktemplate` calls).
|
||||
|
||||
[Deprecations](https://zcash.github.io/zcash/user/deprecation.html)
|
||||
--------------
|
||||
|
||||
The following features have been deprecated, but remain available by default.
|
||||
These features may be disabled by setting `-allowdeprecated=none`. 18 weeks
|
||||
after this release, these features will be disabled by default and the following
|
||||
flags to `-allowdeprecated` will be required to permit their continued use:
|
||||
|
||||
- `gbt_oldhashes`: the `finalsaplingroothash`, `lightclientroothash`, and
|
||||
`blockcommitmentshash` fields in the output of `getblocktemplate` have been
|
||||
replaced by the `defaultroots` field.
|
||||
|
||||
The following previously-deprecated features have been disabled by default, and
|
||||
will be removed in 18 weeks:
|
||||
|
||||
- `legacy_privacy`
|
||||
- `getnewaddress`
|
||||
- `getrawchangeaddress`
|
||||
- `z_getbalance`
|
||||
- `z_gettotalbalance`
|
||||
- `z_getnewaddress`
|
||||
- `z_listaddresses`
|
||||
- `addrtype`
|
||||
- `wallettxvjoinsplit`
|
||||
|
||||
The following previously-deprecated features have been removed:
|
||||
|
||||
- `dumpwallet`
|
||||
- `zcrawreceive`
|
||||
- `zcrawjoinsplit`
|
||||
- `zcrawkeygen`
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
|
||||
- CentOS 8 has been removed from the list of supported platforms. It reached EoL
|
||||
on December 31st 2021, and does not satisfy our Tier 2 policy requirements.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Alex Morcos (3):
|
||||
Make accessing mempool parents and children public
|
||||
Expose FormatStateMessage
|
||||
Rewrite CreateNewBlock
|
||||
|
||||
Alfredo Garcia (1):
|
||||
Add chain supply and transparent value to block index.
|
||||
|
||||
Carl Dong (4):
|
||||
depends: More robust cmake invocation
|
||||
depends: Cleanup CMake invocation
|
||||
depends: Prepend CPPFLAGS to C{,XX}FLAGS for CMake
|
||||
depends: Specify LDFLAGS to cmake as well
|
||||
|
||||
Daira Hopwood (6):
|
||||
Add tl::expected. refs #4816
|
||||
The std::expected proposal has unnecessary instances of undefined behaviour for operator->, operator*, and error(). Make these into assertion failures (this still conforms to the proposal).
|
||||
Refactor HaveShieldedRequirements to use tl::expected (example with a void T) and rename it to CheckShieldedRequirements.
|
||||
tl::expected follow-up to address @str4d's comments.
|
||||
Cleanup after removing dumpwallet.
|
||||
Change the time that the wallet will wait for the block index to load from 5 minutes to 2 hours.
|
||||
|
||||
Dimitris Apostolou (2):
|
||||
Fix typos
|
||||
Fix typos
|
||||
|
||||
Greg Pfeil (22):
|
||||
Add PrivacyPolicyMeet
|
||||
Remove trailing whitespace in fetch-params.sh
|
||||
Migrate fetch-params.sh to bash
|
||||
Scope the fetch-params lock file to the user
|
||||
Update comments to match changed tests
|
||||
Put utf8.h in the correct place
|
||||
Don’t select transparent coinbase with ANY_TADDR
|
||||
Update failing tests after fixing ANY_TADDR behavior
|
||||
Apply suggestions from code review
|
||||
Apply suggestions from code review
|
||||
Appease ShellCheck
|
||||
Defer fixing docker/entrypoint.sh lint failure
|
||||
Apply suggestions from code review
|
||||
Fix a minor bug in docker/entrypoint.sh
|
||||
Improve PrivacyPolicy comments
|
||||
Apply suggestions from code review
|
||||
Add release notes
|
||||
Update src/wallet/asyncrpcoperation_sendmany.cpp
|
||||
Fix a missing newline in the RPC docs
|
||||
No longer test_received_sprout
|
||||
Use cached sprout addresses rather than funding
|
||||
Update overwinter test to not shield to Sprout
|
||||
|
||||
Jack Grigg (45):
|
||||
test: Handle mining slow start inside `CreateNewBlock_validity`
|
||||
test: Improve CreateNewBlock_validity exception checks
|
||||
txdb: Remove const annotation from blockinfo iterator type
|
||||
Remove `dumpwallet` RPC method
|
||||
qa: Refactor `wallet_deprecation` test to simplify deprecation changes
|
||||
Remove `zcraw*` RPC methods
|
||||
txdb: Clean up for loop syntax in `WriteBatchSync`
|
||||
Disable previously-deprecated features by default
|
||||
Deprecate old hash fields of `getblocktemplate`
|
||||
qa: Change show_help RPC test to print out differences
|
||||
qa: Update mempool_packages RPC test after deprecation ratcheting
|
||||
qa: Import Rust crate audits from Firefox
|
||||
qa: Import Rust crate audits from the Bytecode Alliance
|
||||
qa: Import Rust crate audits from Embark Studios
|
||||
qa: Remove audit-as-crates-io for non-third-party crates
|
||||
cargo update
|
||||
zcash_primitives 0.9
|
||||
clearscreen 2.0
|
||||
depends: googletest 1.12.1
|
||||
Remove CentOS 8 as a supported platform
|
||||
depends: native_zstd 1.5.2
|
||||
depends: native_ccache 4.6.3
|
||||
depends: Add package for native_cmake 3.25.1
|
||||
depends: Force cmake to install libzstd in lib/
|
||||
build-aux: Update Boost macros to latest serials
|
||||
build: Bump required Boost version
|
||||
depends: Force Boost library to be installed in lib/
|
||||
depends: Add tl_expected to update checker
|
||||
depends: Boost 1.81.0
|
||||
depends: utfcpp 3.2.3
|
||||
qa: Postpone LLVM 15 and CCache 4.7 updates
|
||||
depends: Update cxx to 1.0.83
|
||||
cargo update
|
||||
Document -clockoffset option
|
||||
qa: Update show_help RPC test
|
||||
doc: Fix arguments to make-release.py in hotfix process
|
||||
depends: CMake 3.25.2
|
||||
make-release.py: Versioning changes for 5.4.0-rc1.
|
||||
make-release.py: Updated manpages for 5.4.0-rc1.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc1.
|
||||
depends: Update cxx to 1.0.87
|
||||
metrics: Update `zcash.pool.value.zatoshis` gauge for transparent pool
|
||||
Update release notes with notable changes for v5.4.0
|
||||
make-release.py: Versioning changes for 5.4.0-rc2.
|
||||
make-release.py: Updated manpages for 5.4.0-rc2.
|
||||
|
||||
James O'Beirne (2):
|
||||
Clarify help messages for path args to mention datadir prefix
|
||||
Add AbsPathForConfigVal to consolidate datadir prefixing for path args
|
||||
|
||||
Kris Nuttycombe (14):
|
||||
Add TransactionStrategy::IsCompatibleWith
|
||||
Modify TransactionBuilder to use the standard default fee.
|
||||
Factor out memo parsing from asyncrpcoperation_sendmany
|
||||
Remove mergetoaddress_sprout test as sending to Sprout is no longer supported.
|
||||
Remove wallet_shieldcoinbase_sprout test.
|
||||
Update `mergetoaddress_mixednotes.py` to no longer send to Sprout.
|
||||
Verify sum of pool balances against chain total supply.
|
||||
Apply suggestions from code review
|
||||
Add script for verifying block rewards and fees not claimed by miners.
|
||||
Apply suggestions from code review
|
||||
Remove unnecessary delta_count variable.
|
||||
Replace fix-copyright-headers.py with a script that creates a scripted-diff git commit.
|
||||
scripted-diff: Update Zcash copyrights to 2023
|
||||
Apply suggestions from code review
|
||||
|
||||
Marco Falke (4):
|
||||
[init] Add missing help for args
|
||||
[init] Help Msg: Use Params(CBaseChainParams::MAIN)
|
||||
Clarify mocktime help message
|
||||
init: Fix help message for checkblockindex
|
||||
|
||||
Marius Kjærstad (5):
|
||||
Hardened checkpoint update at block 1860000 for mainnet
|
||||
Update src/chainparams.cpp
|
||||
Some more formatting changes to chainparams.cpp
|
||||
Forgot to add 0x
|
||||
Add some more historical checkpoints
|
||||
|
||||
Mark Friedenbach (1):
|
||||
Prevent block.nTime from decreasing
|
||||
|
||||
Marshall Gaucher (4):
|
||||
Update zcash-build-bench.yml
|
||||
Update README.md
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build.yml
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build-test.yml
|
||||
|
||||
Michał Janiszewski (1):
|
||||
Update debian/compat to version 13
|
||||
|
||||
Russell Yanofsky (2):
|
||||
depends: Add CMake helper for building packages
|
||||
depends: Set CMAKE_INSTALL_RPATH for native packages
|
||||
|
||||
Suhas Daftuar (3):
|
||||
Track transaction packages in CTxMemPoolEntry
|
||||
Add test showing bug in mempool packages
|
||||
Fix mempool package tracking edge case
|
||||
|
||||
Wladimir J. van der Laan (1):
|
||||
rpc: Write authcookie atomically
|
||||
|
||||
Marshall Gaucher (2):
|
||||
add basic tekton zcash env
|
||||
update memory targets with heaptrack
|
||||
|
|
@ -0,0 +1,288 @@
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
This release fixes an issue that could potentially cause a node to crash with the
|
||||
log message "The wallet's best block hash `<hash>` was not detected in restored
|
||||
chain state. Giving up; please restart with `-rescan`."
|
||||
|
||||
Transparent pool and chain supply tracking
|
||||
------------------------------------------
|
||||
|
||||
Since v2.0.0, `zcashd` has tracked the change in value within the Sprout and
|
||||
Sapling shielded pools for each block; v5.0.0 added the Orchard pool. This
|
||||
release completes the set, by tracking the change in value within the
|
||||
"transparent" pool (more precisely, the value stored in Bitcoin-style UTXOs).
|
||||
|
||||
`zcashd` also now tracks the change in "chain supply" for each block, defined as
|
||||
the sum of coinbase output values, minus unclaimed fees. This is precisely equal
|
||||
to the sum of the value in the transparent and shielded pools, and equivalent to
|
||||
the sum of all unspent coins/notes on the chain. It is bounded above by the
|
||||
theoretical maximum supply, but in practice is lower due to, for example, miners
|
||||
not claiming transaction fees.
|
||||
|
||||
> Bitcoin-style consensus rules implement fees as an imbalance between spent
|
||||
> coins/notes and newly-created coins/notes. The consensus rules require that a
|
||||
> coinbase transaction's outputs have a total value no greater than the sum of
|
||||
> that block's subsidy and the fees made available by the transactions in the
|
||||
> block. However, the consensus rules do not require that all of the available
|
||||
> funds are claimed, and a miner can create coinbase transactions with lower
|
||||
> value in the outputs (though in the case of Zcash, the consensus rules do
|
||||
> require the transaction to include [ZIP 1014](https://zips.z.cash/zip-1014)
|
||||
> Funding Stream outputs).
|
||||
|
||||
After upgrading to v5.4.0, `zcashd` will start tracking changes in transparent
|
||||
pool value and chain supply from the height at which it is restarted. Block
|
||||
heights prior to this will not have any information recorded. To track changes
|
||||
from genesis, and thus monitor the total transparent pool size and chain supply,
|
||||
you would need to restart your node with the `-reindex` option.
|
||||
|
||||
Wallet Performance Fixes
|
||||
------------------------
|
||||
|
||||
The 100MiB memory limit for the batch scanner has been replaced by a 1000-block
|
||||
limit. This eliminates an expensive call to determine the current memory usage
|
||||
of the batch scanner.
|
||||
|
||||
The following associated metric has been removed from the set of metrics
|
||||
reported when `-prometheusport` is set:
|
||||
|
||||
- (gauge) `zcashd.wallet.batchscanner.usage.bytes`
|
||||
|
||||
RPC Changes
|
||||
-----------
|
||||
|
||||
- `z_sendmany` will no longer select transparent coinbase when "ANY\_TADDR" is
|
||||
used as the `fromaddress`. It was already documented to do this, but the
|
||||
previous behavior didn’t match. When coinbase notes were selected in this
|
||||
case, they would (properly) require that the transaction didn’t have any
|
||||
change, but this could be confusing, as the documentation stated that these
|
||||
two conditions (using "ANY\_TADDR" and disallowing change) wouldn’t coincide.
|
||||
- A new value pool object with `"id": "transparent"` has been added to the
|
||||
`valuePools` list in `getblockchaininfo` and `getblock`.
|
||||
- A new `chainSupply` key has been added to `getblockchaininfo` and `getblock`
|
||||
to report the total chain supply as of that block height (if tracked), and the
|
||||
change in chain supply caused by the block (for `getblock`, if measured).
|
||||
|
||||
Mining
|
||||
-------
|
||||
|
||||
- Changes to `getblocktemplate` have been backported from upstream Bitcoin Core,
|
||||
to significantly improve its performance by doing more work ahead of time in
|
||||
the mempool (and reusing the work across multiple `getblocktemplate` calls).
|
||||
|
||||
[Deprecations](https://zcash.github.io/zcash/user/deprecation.html)
|
||||
--------------
|
||||
|
||||
The following features have been deprecated, but remain available by default.
|
||||
These features may be disabled by setting `-allowdeprecated=none`. 18 weeks
|
||||
after this release, these features will be disabled by default and the following
|
||||
flags to `-allowdeprecated` will be required to permit their continued use:
|
||||
|
||||
- `gbt_oldhashes`: the `finalsaplingroothash`, `lightclientroothash`, and
|
||||
`blockcommitmentshash` fields in the output of `getblocktemplate` have been
|
||||
replaced by the `defaultroots` field.
|
||||
|
||||
The following previously-deprecated features have been disabled by default, and
|
||||
will be removed in 18 weeks:
|
||||
|
||||
- `legacy_privacy`
|
||||
- `getnewaddress`
|
||||
- `getrawchangeaddress`
|
||||
- `z_getbalance`
|
||||
- `z_gettotalbalance`
|
||||
- `z_getnewaddress`
|
||||
- `z_listaddresses`
|
||||
- `addrtype`
|
||||
- `wallettxvjoinsplit`
|
||||
|
||||
The following previously-deprecated features have been removed:
|
||||
|
||||
- `dumpwallet`
|
||||
- `zcrawreceive`
|
||||
- `zcrawjoinsplit`
|
||||
- `zcrawkeygen`
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
|
||||
- CentOS 8 has been removed from the list of supported platforms. It reached EoL
|
||||
on December 31st 2021, and does not satisfy our Tier 2 policy requirements.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Alex Morcos (3):
|
||||
Make accessing mempool parents and children public
|
||||
Expose FormatStateMessage
|
||||
Rewrite CreateNewBlock
|
||||
|
||||
Alfredo Garcia (1):
|
||||
Add chain supply and transparent value to block index.
|
||||
|
||||
Carl Dong (4):
|
||||
depends: More robust cmake invocation
|
||||
depends: Cleanup CMake invocation
|
||||
depends: Prepend CPPFLAGS to C{,XX}FLAGS for CMake
|
||||
depends: Specify LDFLAGS to cmake as well
|
||||
|
||||
Daira Hopwood (7):
|
||||
Add tl::expected. refs #4816
|
||||
The std::expected proposal has unnecessary instances of undefined behaviour for operator->, operator*, and error(). Make these into assertion failures (this still conforms to the proposal).
|
||||
Refactor HaveShieldedRequirements to use tl::expected (example with a void T) and rename it to CheckShieldedRequirements.
|
||||
tl::expected follow-up to address @str4d's comments.
|
||||
Cleanup after removing dumpwallet.
|
||||
Change the time that the wallet will wait for the block index to load from 5 minutes to 2 hours.
|
||||
Postpone updates for 5.4.0.
|
||||
|
||||
Dimitris Apostolou (2):
|
||||
Fix typos
|
||||
Fix typos
|
||||
|
||||
Greg Pfeil (23):
|
||||
Add PrivacyPolicyMeet
|
||||
Remove trailing whitespace in fetch-params.sh
|
||||
Migrate fetch-params.sh to bash
|
||||
Scope the fetch-params lock file to the user
|
||||
Update comments to match changed tests
|
||||
Put utf8.h in the correct place
|
||||
Don’t select transparent coinbase with ANY_TADDR
|
||||
Update failing tests after fixing ANY_TADDR behavior
|
||||
Apply suggestions from code review
|
||||
Apply suggestions from code review
|
||||
Appease ShellCheck
|
||||
Defer fixing docker/entrypoint.sh lint failure
|
||||
Apply suggestions from code review
|
||||
Fix a minor bug in docker/entrypoint.sh
|
||||
Improve PrivacyPolicy comments
|
||||
Apply suggestions from code review
|
||||
Add release notes
|
||||
Update src/wallet/asyncrpcoperation_sendmany.cpp
|
||||
Fix a missing newline in the RPC docs
|
||||
No longer test_received_sprout
|
||||
Use cached sprout addresses rather than funding
|
||||
Update overwinter test to not shield to Sprout
|
||||
Support Bash 3.2 in fetch-params.sh
|
||||
|
||||
Jack Grigg (47):
|
||||
test: Handle mining slow start inside `CreateNewBlock_validity`
|
||||
test: Improve CreateNewBlock_validity exception checks
|
||||
txdb: Remove const annotation from blockinfo iterator type
|
||||
Remove `dumpwallet` RPC method
|
||||
qa: Refactor `wallet_deprecation` test to simplify deprecation changes
|
||||
Remove `zcraw*` RPC methods
|
||||
txdb: Clean up for loop syntax in `WriteBatchSync`
|
||||
Disable previously-deprecated features by default
|
||||
Deprecate old hash fields of `getblocktemplate`
|
||||
qa: Change show_help RPC test to print out differences
|
||||
qa: Update mempool_packages RPC test after deprecation ratcheting
|
||||
qa: Import Rust crate audits from Firefox
|
||||
qa: Import Rust crate audits from the Bytecode Alliance
|
||||
qa: Import Rust crate audits from Embark Studios
|
||||
qa: Remove audit-as-crates-io for non-third-party crates
|
||||
cargo update
|
||||
zcash_primitives 0.9
|
||||
clearscreen 2.0
|
||||
depends: googletest 1.12.1
|
||||
Remove CentOS 8 as a supported platform
|
||||
depends: native_zstd 1.5.2
|
||||
depends: native_ccache 4.6.3
|
||||
depends: Add package for native_cmake 3.25.1
|
||||
depends: Force cmake to install libzstd in lib/
|
||||
build-aux: Update Boost macros to latest serials
|
||||
build: Bump required Boost version
|
||||
depends: Force Boost library to be installed in lib/
|
||||
depends: Add tl_expected to update checker
|
||||
depends: Boost 1.81.0
|
||||
depends: utfcpp 3.2.3
|
||||
qa: Postpone LLVM 15 and CCache 4.7 updates
|
||||
depends: Update cxx to 1.0.83
|
||||
cargo update
|
||||
Document -clockoffset option
|
||||
qa: Update show_help RPC test
|
||||
doc: Fix arguments to make-release.py in hotfix process
|
||||
depends: CMake 3.25.2
|
||||
make-release.py: Versioning changes for 5.4.0-rc1.
|
||||
make-release.py: Updated manpages for 5.4.0-rc1.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc1.
|
||||
qa: Enable RPC test execution to be overridden from Python
|
||||
depends: Postpone cxx update
|
||||
metrics: Update `zcash.pool.value.zatoshis` gauge for transparent pool
|
||||
Update release notes with notable changes for v5.4.0
|
||||
make-release.py: Versioning changes for 5.4.0-rc2.
|
||||
make-release.py: Updated manpages for 5.4.0-rc2.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc2.
|
||||
|
||||
James O'Beirne (2):
|
||||
Clarify help messages for path args to mention datadir prefix
|
||||
Add AbsPathForConfigVal to consolidate datadir prefixing for path args
|
||||
|
||||
Kris Nuttycombe (24):
|
||||
Add TransactionStrategy::IsCompatibleWith
|
||||
Modify TransactionBuilder to use the standard default fee.
|
||||
Factor out memo parsing from asyncrpcoperation_sendmany
|
||||
Remove mergetoaddress_sprout test as sending to Sprout is no longer supported.
|
||||
Remove wallet_shieldcoinbase_sprout test.
|
||||
Update `mergetoaddress_mixednotes.py` to no longer send to Sprout.
|
||||
Verify sum of pool balances against chain total supply.
|
||||
Apply suggestions from code review
|
||||
Add script for verifying block rewards and fees not claimed by miners.
|
||||
Apply suggestions from code review
|
||||
Remove unnecessary delta_count variable.
|
||||
Replace fix-copyright-headers.py with a script that creates a scripted-diff git commit.
|
||||
scripted-diff: Update Zcash copyrights to 2023
|
||||
Apply suggestions from code review
|
||||
Enable tests of chain supply & transparent pool balance.
|
||||
Update doc/release-notes.md
|
||||
Fixes an error in `zcash-cli help` following the removal of `dumpwallet`.
|
||||
Allow rescan to exit in the case that Ctrl-C is pressed.
|
||||
Fetch recently conflicted transactions incrementally in ThreadNotifyWallet.
|
||||
Bound wallet batch scanner size to 1000 blocks instead of 100 MiB
|
||||
Remove unused DEFAULT_BATCHSCANNERMEMLIMIT constant.
|
||||
Tolerate missing cached conflict data in ThreadNotifyWallets
|
||||
make-release.py: Versioning changes for 5.4.0-rc3.
|
||||
make-release.py: Updated manpages for 5.4.0-rc3.
|
||||
|
||||
Marco Falke (4):
|
||||
[init] Add missing help for args
|
||||
[init] Help Msg: Use Params(CBaseChainParams::MAIN)
|
||||
Clarify mocktime help message
|
||||
init: Fix help message for checkblockindex
|
||||
|
||||
Marius Kjærstad (5):
|
||||
Hardened checkpoint update at block 1860000 for mainnet
|
||||
Update src/chainparams.cpp
|
||||
Some more formatting changes to chainparams.cpp
|
||||
Forgot to add 0x
|
||||
Add some more historical checkpoints
|
||||
|
||||
Mark Friedenbach (1):
|
||||
Prevent block.nTime from decreasing
|
||||
|
||||
Marshall Gaucher (4):
|
||||
Update zcash-build-bench.yml
|
||||
Update README.md
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build.yml
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build-test.yml
|
||||
|
||||
Michał Janiszewski (1):
|
||||
Update debian/compat to version 13
|
||||
|
||||
Russell Yanofsky (2):
|
||||
depends: Add CMake helper for building packages
|
||||
depends: Set CMAKE_INSTALL_RPATH for native packages
|
||||
|
||||
Suhas Daftuar (3):
|
||||
Track transaction packages in CTxMemPoolEntry
|
||||
Add test showing bug in mempool packages
|
||||
Fix mempool package tracking edge case
|
||||
|
||||
Wladimir J. van der Laan (1):
|
||||
rpc: Write authcookie atomically
|
||||
|
||||
Marshall Gaucher (2):
|
||||
add basic tekton zcash env
|
||||
update memory targets with heaptrack
|
||||
|
|
@ -0,0 +1,300 @@
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
This release fixes an issue that could potentially cause a node to crash with the
|
||||
log message "The wallet's best block hash `<hash>` was not detected in restored
|
||||
chain state. Giving up; please restart with `-rescan`."
|
||||
|
||||
Additionally, a bug that could cause an assertion failure during reindexing has
|
||||
been fixed. See [#6387](https://github.com/zcash/zcash/pull/6387) for details.
|
||||
|
||||
Transparent pool and chain supply tracking
|
||||
------------------------------------------
|
||||
|
||||
Since v2.0.0, `zcashd` has tracked the change in value within the Sprout and
|
||||
Sapling shielded pools for each block; v5.0.0 added the Orchard pool. This
|
||||
release completes the set, by tracking the change in value within the
|
||||
"transparent" pool (more precisely, the value stored in Bitcoin-style UTXOs).
|
||||
|
||||
`zcashd` also now tracks the change in "chain supply" for each block, defined as
|
||||
the sum of coinbase output values, minus unclaimed fees. This is precisely equal
|
||||
to the sum of the value in the transparent and shielded pools, and equivalent to
|
||||
the sum of all unspent coins/notes on the chain. It is bounded above by the
|
||||
theoretical maximum supply, but in practice is lower due to, for example, miners
|
||||
not claiming transaction fees.
|
||||
|
||||
> Bitcoin-style consensus rules implement fees as an imbalance between spent
|
||||
> coins/notes and newly-created coins/notes. The consensus rules require that a
|
||||
> coinbase transaction's outputs have a total value no greater than the sum of
|
||||
> that block's subsidy and the fees made available by the transactions in the
|
||||
> block. However, the consensus rules do not require that all of the available
|
||||
> funds are claimed, and a miner can create coinbase transactions with lower
|
||||
> value in the outputs (though in the case of Zcash, the consensus rules do
|
||||
> require the transaction to include [ZIP 1014](https://zips.z.cash/zip-1014)
|
||||
> Funding Stream outputs).
|
||||
|
||||
After upgrading to v5.4.0, `zcashd` will start tracking changes in transparent
|
||||
pool value and chain supply from the height at which it is restarted. Block
|
||||
heights prior to this will not have any information recorded. To track changes
|
||||
from genesis, and thus monitor the total transparent pool size and chain supply,
|
||||
you would need to restart your node with the `-reindex` option.
|
||||
|
||||
Wallet Performance Fixes
|
||||
------------------------
|
||||
|
||||
The 100MiB memory limit for the batch scanner has been replaced by a 1000-block
|
||||
limit. This eliminates an expensive call to determine the current memory usage
|
||||
of the batch scanner.
|
||||
|
||||
The following associated metric has been removed from the set of metrics
|
||||
reported when `-prometheusport` is set:
|
||||
|
||||
- (gauge) `zcashd.wallet.batchscanner.usage.bytes`
|
||||
|
||||
RPC Changes
|
||||
-----------
|
||||
|
||||
- `z_sendmany` will no longer select transparent coinbase when "ANY\_TADDR" is
|
||||
used as the `fromaddress`. It was already documented to do this, but the
|
||||
previous behavior didn’t match. When coinbase notes were selected in this
|
||||
case, they would (properly) require that the transaction didn’t have any
|
||||
change, but this could be confusing, as the documentation stated that these
|
||||
two conditions (using "ANY\_TADDR" and disallowing change) wouldn’t coincide.
|
||||
- A new value pool object with `"id": "transparent"` has been added to the
|
||||
`valuePools` list in `getblockchaininfo` and `getblock`.
|
||||
- A new `chainSupply` key has been added to `getblockchaininfo` and `getblock`
|
||||
to report the total chain supply as of that block height (if tracked), and the
|
||||
change in chain supply caused by the block (for `getblock`, if measured).
|
||||
|
||||
Mining
|
||||
-------
|
||||
|
||||
- Changes to `getblocktemplate` have been backported from upstream Bitcoin Core,
|
||||
to significantly improve its performance by doing more work ahead of time in
|
||||
the mempool (and reusing the work across multiple `getblocktemplate` calls).
|
||||
|
||||
[Deprecations](https://zcash.github.io/zcash/user/deprecation.html)
|
||||
--------------
|
||||
|
||||
The following features have been deprecated, but remain available by default.
|
||||
These features may be disabled by setting `-allowdeprecated=none`. 18 weeks
|
||||
after this release, these features will be disabled by default and the following
|
||||
flags to `-allowdeprecated` will be required to permit their continued use:
|
||||
|
||||
- `gbt_oldhashes`: the `finalsaplingroothash`, `lightclientroothash`, and
|
||||
`blockcommitmentshash` fields in the output of `getblocktemplate` have been
|
||||
replaced by the `defaultroots` field.
|
||||
|
||||
The following previously-deprecated features have been disabled by default, and
|
||||
will be removed in 18 weeks:
|
||||
|
||||
- `legacy_privacy`
|
||||
- `getnewaddress`
|
||||
- `getrawchangeaddress`
|
||||
- `z_getnewaddress`
|
||||
- `z_listaddresses`
|
||||
- `addrtype`
|
||||
- `wallettxvjoinsplit`
|
||||
|
||||
The following previously-deprecated features have been removed:
|
||||
|
||||
- `dumpwallet`
|
||||
- `zcrawreceive`
|
||||
- `zcrawjoinsplit`
|
||||
- `zcrawkeygen`
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
|
||||
- CentOS 8 has been removed from the list of supported platforms. It reached EoL
|
||||
on December 31st 2021, and does not satisfy our Tier 2 policy requirements.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Alex Morcos (3):
|
||||
Make accessing mempool parents and children public
|
||||
Expose FormatStateMessage
|
||||
Rewrite CreateNewBlock
|
||||
|
||||
Alfredo Garcia (1):
|
||||
Add chain supply and transparent value to block index.
|
||||
|
||||
Carl Dong (4):
|
||||
depends: More robust cmake invocation
|
||||
depends: Cleanup CMake invocation
|
||||
depends: Prepend CPPFLAGS to C{,XX}FLAGS for CMake
|
||||
depends: Specify LDFLAGS to cmake as well
|
||||
|
||||
Daira Hopwood (7):
|
||||
Add tl::expected. refs #4816
|
||||
The std::expected proposal has unnecessary instances of undefined behaviour for operator->, operator*, and error(). Make these into assertion failures (this still conforms to the proposal).
|
||||
Refactor HaveShieldedRequirements to use tl::expected (example with a void T) and rename it to CheckShieldedRequirements.
|
||||
tl::expected follow-up to address @str4d's comments.
|
||||
Cleanup after removing dumpwallet.
|
||||
Change the time that the wallet will wait for the block index to load from 5 minutes to 2 hours.
|
||||
Postpone updates for 5.4.0.
|
||||
|
||||
Dimitris Apostolou (2):
|
||||
Fix typos
|
||||
Fix typos
|
||||
|
||||
Greg Pfeil (23):
|
||||
Add PrivacyPolicyMeet
|
||||
Remove trailing whitespace in fetch-params.sh
|
||||
Migrate fetch-params.sh to bash
|
||||
Scope the fetch-params lock file to the user
|
||||
Update comments to match changed tests
|
||||
Put utf8.h in the correct place
|
||||
Don’t select transparent coinbase with ANY_TADDR
|
||||
Update failing tests after fixing ANY_TADDR behavior
|
||||
Apply suggestions from code review
|
||||
Apply suggestions from code review
|
||||
Appease ShellCheck
|
||||
Defer fixing docker/entrypoint.sh lint failure
|
||||
Apply suggestions from code review
|
||||
Fix a minor bug in docker/entrypoint.sh
|
||||
Improve PrivacyPolicy comments
|
||||
Apply suggestions from code review
|
||||
Add release notes
|
||||
Update src/wallet/asyncrpcoperation_sendmany.cpp
|
||||
Fix a missing newline in the RPC docs
|
||||
No longer test_received_sprout
|
||||
Use cached sprout addresses rather than funding
|
||||
Update overwinter test to not shield to Sprout
|
||||
Support Bash 3.2 in fetch-params.sh
|
||||
|
||||
Jack Grigg (50):
|
||||
test: Handle mining slow start inside `CreateNewBlock_validity`
|
||||
test: Improve CreateNewBlock_validity exception checks
|
||||
txdb: Remove const annotation from blockinfo iterator type
|
||||
Remove `dumpwallet` RPC method
|
||||
qa: Refactor `wallet_deprecation` test to simplify deprecation changes
|
||||
Remove `zcraw*` RPC methods
|
||||
txdb: Clean up for loop syntax in `WriteBatchSync`
|
||||
Disable previously-deprecated features by default
|
||||
Deprecate old hash fields of `getblocktemplate`
|
||||
qa: Change show_help RPC test to print out differences
|
||||
qa: Update mempool_packages RPC test after deprecation ratcheting
|
||||
qa: Import Rust crate audits from Firefox
|
||||
qa: Import Rust crate audits from the Bytecode Alliance
|
||||
qa: Import Rust crate audits from Embark Studios
|
||||
qa: Remove audit-as-crates-io for non-third-party crates
|
||||
cargo update
|
||||
zcash_primitives 0.9
|
||||
clearscreen 2.0
|
||||
depends: googletest 1.12.1
|
||||
Remove CentOS 8 as a supported platform
|
||||
depends: native_zstd 1.5.2
|
||||
depends: native_ccache 4.6.3
|
||||
depends: Add package for native_cmake 3.25.1
|
||||
depends: Force cmake to install libzstd in lib/
|
||||
build-aux: Update Boost macros to latest serials
|
||||
build: Bump required Boost version
|
||||
depends: Force Boost library to be installed in lib/
|
||||
depends: Add tl_expected to update checker
|
||||
depends: Boost 1.81.0
|
||||
depends: utfcpp 3.2.3
|
||||
qa: Postpone LLVM 15 and CCache 4.7 updates
|
||||
depends: Update cxx to 1.0.83
|
||||
cargo update
|
||||
Document -clockoffset option
|
||||
qa: Update show_help RPC test
|
||||
doc: Fix arguments to make-release.py in hotfix process
|
||||
depends: CMake 3.25.2
|
||||
make-release.py: Versioning changes for 5.4.0-rc1.
|
||||
make-release.py: Updated manpages for 5.4.0-rc1.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc1.
|
||||
qa: Enable RPC test execution to be overridden from Python
|
||||
depends: Postpone cxx update
|
||||
metrics: Update `zcash.pool.value.zatoshis` gauge for transparent pool
|
||||
Update release notes with notable changes for v5.4.0
|
||||
make-release.py: Versioning changes for 5.4.0-rc2.
|
||||
make-release.py: Updated manpages for 5.4.0-rc2.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc2.
|
||||
qa: Add RPC test reproducing the Orchard reindex issue
|
||||
Fix return type of `orchard_wallet_reset`
|
||||
Reset Orchard wallet state in `CWallet::ClearNoteWitnessCache`
|
||||
|
||||
James O'Beirne (2):
|
||||
Clarify help messages for path args to mention datadir prefix
|
||||
Add AbsPathForConfigVal to consolidate datadir prefixing for path args
|
||||
|
||||
Kris Nuttycombe (32):
|
||||
Add TransactionStrategy::IsCompatibleWith
|
||||
Modify TransactionBuilder to use the standard default fee.
|
||||
Factor out memo parsing from asyncrpcoperation_sendmany
|
||||
Remove mergetoaddress_sprout test as sending to Sprout is no longer supported.
|
||||
Remove wallet_shieldcoinbase_sprout test.
|
||||
Update `mergetoaddress_mixednotes.py` to no longer send to Sprout.
|
||||
Verify sum of pool balances against chain total supply.
|
||||
Apply suggestions from code review
|
||||
Add script for verifying block rewards and fees not claimed by miners.
|
||||
Apply suggestions from code review
|
||||
Remove unnecessary delta_count variable.
|
||||
Replace fix-copyright-headers.py with a script that creates a scripted-diff git commit.
|
||||
scripted-diff: Update Zcash copyrights to 2023
|
||||
Apply suggestions from code review
|
||||
Enable tests of chain supply & transparent pool balance.
|
||||
Update doc/release-notes.md
|
||||
Fixes an error in `zcash-cli help` following the removal of `dumpwallet`.
|
||||
Allow rescan to exit in the case that Ctrl-C is pressed.
|
||||
Fetch recently conflicted transactions incrementally in ThreadNotifyWallet.
|
||||
Bound wallet batch scanner size to 1000 blocks instead of 100 MiB
|
||||
Remove unused DEFAULT_BATCHSCANNERMEMLIMIT constant.
|
||||
Tolerate missing cached conflict data in ThreadNotifyWallets
|
||||
make-release.py: Versioning changes for 5.4.0-rc3.
|
||||
make-release.py: Updated manpages for 5.4.0-rc3.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc3.
|
||||
Defer z_getbalance and z_gettotalbalance disablement.
|
||||
Patch uses of `sprintf` in `zeromq` that break the build on macOS
|
||||
Patch zeromq to check the return value of snprintf where necessary.
|
||||
Postpone rustcxx and native_cxxbridge versions 1.0.89
|
||||
Add #6387 fix to v5.4.0 release notes.
|
||||
make-release.py: Versioning changes for 5.4.0-rc4.
|
||||
make-release.py: Updated manpages for 5.4.0-rc4.
|
||||
|
||||
Marco Falke (4):
|
||||
[init] Add missing help for args
|
||||
[init] Help Msg: Use Params(CBaseChainParams::MAIN)
|
||||
Clarify mocktime help message
|
||||
init: Fix help message for checkblockindex
|
||||
|
||||
Marius Kjærstad (5):
|
||||
Hardened checkpoint update at block 1860000 for mainnet
|
||||
Update src/chainparams.cpp
|
||||
Some more formatting changes to chainparams.cpp
|
||||
Forgot to add 0x
|
||||
Add some more historical checkpoints
|
||||
|
||||
Mark Friedenbach (1):
|
||||
Prevent block.nTime from decreasing
|
||||
|
||||
Marshall Gaucher (4):
|
||||
Update zcash-build-bench.yml
|
||||
Update README.md
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build.yml
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build-test.yml
|
||||
|
||||
Michał Janiszewski (1):
|
||||
Update debian/compat to version 13
|
||||
|
||||
Russell Yanofsky (2):
|
||||
depends: Add CMake helper for building packages
|
||||
depends: Set CMAKE_INSTALL_RPATH for native packages
|
||||
|
||||
Suhas Daftuar (3):
|
||||
Track transaction packages in CTxMemPoolEntry
|
||||
Add test showing bug in mempool packages
|
||||
Fix mempool package tracking edge case
|
||||
|
||||
Wladimir J. van der Laan (1):
|
||||
rpc: Write authcookie atomically
|
||||
|
||||
Marshall Gaucher (2):
|
||||
add basic tekton zcash env
|
||||
update memory targets with heaptrack
|
||||
|
|
@ -0,0 +1,311 @@
|
|||
Notable changes
|
||||
===============
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
This release fixes an issue that could potentially cause a node to crash with the
|
||||
log message "The wallet's best block hash `<hash>` was not detected in restored
|
||||
chain state. Giving up; please restart with `-rescan`."
|
||||
|
||||
Additionally, a bug that could cause an assertion failure during reindexing has
|
||||
been fixed. See [#6387](https://github.com/zcash/zcash/pull/6387) for details.
|
||||
|
||||
### Known issues
|
||||
|
||||
- When `zcashd` is started with `-reindex`, until the node's chain tip catches
|
||||
back up to the main chain, RPC calls might block for long periods of time (or
|
||||
time out), and the wallet's view of the chain may lag significantly behind the
|
||||
node's chain tip. See [#6406](https://github.com/zcash/zcash/pull/6406) for
|
||||
details and the fix (which will be included in the next release).
|
||||
|
||||
Transparent pool and chain supply tracking
|
||||
------------------------------------------
|
||||
|
||||
Since v2.0.0, `zcashd` has tracked the change in value within the Sprout and
|
||||
Sapling shielded pools for each block; v5.0.0 added the Orchard pool. This
|
||||
release completes the set, by tracking the change in value within the
|
||||
"transparent" pool (more precisely, the value stored in Bitcoin-style UTXOs).
|
||||
|
||||
`zcashd` also now tracks the change in "chain supply" for each block, defined as
|
||||
the sum of coinbase output values, minus unclaimed fees. This is precisely equal
|
||||
to the sum of the value in the transparent and shielded pools, and equivalent to
|
||||
the sum of all unspent coins/notes on the chain. It is bounded above by the
|
||||
theoretical maximum supply, but in practice is lower due to, for example, miners
|
||||
not claiming transaction fees.
|
||||
|
||||
> Bitcoin-style consensus rules implement fees as an imbalance between spent
|
||||
> coins/notes and newly-created coins/notes. The consensus rules require that a
|
||||
> coinbase transaction's outputs have a total value no greater than the sum of
|
||||
> that block's subsidy and the fees made available by the transactions in the
|
||||
> block. However, the consensus rules do not require that all of the available
|
||||
> funds are claimed, and a miner can create coinbase transactions with lower
|
||||
> value in the outputs (though in the case of Zcash, the consensus rules do
|
||||
> require the transaction to include [ZIP 1014](https://zips.z.cash/zip-1014)
|
||||
> Funding Stream outputs).
|
||||
|
||||
After upgrading to v5.4.0, `zcashd` will start tracking changes in transparent
|
||||
pool value and chain supply from the height at which it is restarted. Block
|
||||
heights prior to this will not have any information recorded. To track changes
|
||||
from genesis, and thus monitor the total transparent pool size and chain supply,
|
||||
you would need to restart your node with the `-reindex` option.
|
||||
|
||||
Wallet Performance Fixes
|
||||
------------------------
|
||||
|
||||
The 100MiB memory limit for the batch scanner has been replaced by a 1000-block
|
||||
limit. This eliminates an expensive call to determine the current memory usage
|
||||
of the batch scanner.
|
||||
|
||||
The following associated metric has been removed from the set of metrics
|
||||
reported when `-prometheusport` is set:
|
||||
|
||||
- (gauge) `zcashd.wallet.batchscanner.usage.bytes`
|
||||
|
||||
RPC Changes
|
||||
-----------
|
||||
|
||||
- `z_sendmany` will no longer select transparent coinbase when "ANY\_TADDR" is
|
||||
used as the `fromaddress`. It was already documented to do this, but the
|
||||
previous behavior didn’t match. When coinbase notes were selected in this
|
||||
case, they would (properly) require that the transaction didn’t have any
|
||||
change, but this could be confusing, as the documentation stated that these
|
||||
two conditions (using "ANY\_TADDR" and disallowing change) wouldn’t coincide.
|
||||
- A new value pool object with `"id": "transparent"` has been added to the
|
||||
`valuePools` list in `getblockchaininfo` and `getblock`.
|
||||
- A new `chainSupply` key has been added to `getblockchaininfo` and `getblock`
|
||||
to report the total chain supply as of that block height (if tracked), and the
|
||||
change in chain supply caused by the block (for `getblock`, if measured).
|
||||
|
||||
Mining
|
||||
-------
|
||||
|
||||
- Changes to `getblocktemplate` have been backported from upstream Bitcoin Core,
|
||||
to significantly improve its performance by doing more work ahead of time in
|
||||
the mempool (and reusing the work across multiple `getblocktemplate` calls).
|
||||
|
||||
[Deprecations](https://zcash.github.io/zcash/user/deprecation.html)
|
||||
--------------
|
||||
|
||||
The following features have been deprecated, but remain available by default.
|
||||
These features may be disabled by setting `-allowdeprecated=none`. 18 weeks
|
||||
after this release, these features will be disabled by default and the following
|
||||
flags to `-allowdeprecated` will be required to permit their continued use:
|
||||
|
||||
- `gbt_oldhashes`: the `finalsaplingroothash`, `lightclientroothash`, and
|
||||
`blockcommitmentshash` fields in the output of `getblocktemplate` have been
|
||||
replaced by the `defaultroots` field.
|
||||
|
||||
The following previously-deprecated features have been disabled by default, and
|
||||
will be removed in 18 weeks:
|
||||
|
||||
- `legacy_privacy`
|
||||
- `getnewaddress`
|
||||
- `getrawchangeaddress`
|
||||
- `z_getnewaddress`
|
||||
- `z_listaddresses`
|
||||
- `addrtype`
|
||||
- `wallettxvjoinsplit`
|
||||
|
||||
The following previously-deprecated features have been removed:
|
||||
|
||||
- `dumpwallet`
|
||||
- `zcrawreceive`
|
||||
- `zcrawjoinsplit`
|
||||
- `zcrawkeygen`
|
||||
|
||||
Platform Support
|
||||
----------------
|
||||
|
||||
- CentOS 8 has been removed from the list of supported platforms. It reached EoL
|
||||
on December 31st 2021, and does not satisfy our Tier 2 policy requirements.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Alex Morcos (3):
|
||||
Make accessing mempool parents and children public
|
||||
Expose FormatStateMessage
|
||||
Rewrite CreateNewBlock
|
||||
|
||||
Alfredo Garcia (1):
|
||||
Add chain supply and transparent value to block index.
|
||||
|
||||
Carl Dong (4):
|
||||
depends: More robust cmake invocation
|
||||
depends: Cleanup CMake invocation
|
||||
depends: Prepend CPPFLAGS to C{,XX}FLAGS for CMake
|
||||
depends: Specify LDFLAGS to cmake as well
|
||||
|
||||
Daira Hopwood (7):
|
||||
Add tl::expected. refs #4816
|
||||
The std::expected proposal has unnecessary instances of undefined behaviour for operator->, operator*, and error(). Make these into assertion failures (this still conforms to the proposal).
|
||||
Refactor HaveShieldedRequirements to use tl::expected (example with a void T) and rename it to CheckShieldedRequirements.
|
||||
tl::expected follow-up to address @str4d's comments.
|
||||
Cleanup after removing dumpwallet.
|
||||
Change the time that the wallet will wait for the block index to load from 5 minutes to 2 hours.
|
||||
Postpone updates for 5.4.0.
|
||||
|
||||
Dimitris Apostolou (2):
|
||||
Fix typos
|
||||
Fix typos
|
||||
|
||||
Greg Pfeil (23):
|
||||
Add PrivacyPolicyMeet
|
||||
Remove trailing whitespace in fetch-params.sh
|
||||
Migrate fetch-params.sh to bash
|
||||
Scope the fetch-params lock file to the user
|
||||
Update comments to match changed tests
|
||||
Put utf8.h in the correct place
|
||||
Don’t select transparent coinbase with ANY_TADDR
|
||||
Update failing tests after fixing ANY_TADDR behavior
|
||||
Apply suggestions from code review
|
||||
Apply suggestions from code review
|
||||
Appease ShellCheck
|
||||
Defer fixing docker/entrypoint.sh lint failure
|
||||
Apply suggestions from code review
|
||||
Fix a minor bug in docker/entrypoint.sh
|
||||
Improve PrivacyPolicy comments
|
||||
Apply suggestions from code review
|
||||
Add release notes
|
||||
Update src/wallet/asyncrpcoperation_sendmany.cpp
|
||||
Fix a missing newline in the RPC docs
|
||||
No longer test_received_sprout
|
||||
Use cached sprout addresses rather than funding
|
||||
Update overwinter test to not shield to Sprout
|
||||
Support Bash 3.2 in fetch-params.sh
|
||||
|
||||
Jack Grigg (52):
|
||||
test: Handle mining slow start inside `CreateNewBlock_validity`
|
||||
test: Improve CreateNewBlock_validity exception checks
|
||||
txdb: Remove const annotation from blockinfo iterator type
|
||||
Remove `dumpwallet` RPC method
|
||||
qa: Refactor `wallet_deprecation` test to simplify deprecation changes
|
||||
Remove `zcraw*` RPC methods
|
||||
txdb: Clean up for loop syntax in `WriteBatchSync`
|
||||
Disable previously-deprecated features by default
|
||||
Deprecate old hash fields of `getblocktemplate`
|
||||
qa: Change show_help RPC test to print out differences
|
||||
qa: Update mempool_packages RPC test after deprecation ratcheting
|
||||
qa: Import Rust crate audits from Firefox
|
||||
qa: Import Rust crate audits from the Bytecode Alliance
|
||||
qa: Import Rust crate audits from Embark Studios
|
||||
qa: Remove audit-as-crates-io for non-third-party crates
|
||||
cargo update
|
||||
zcash_primitives 0.9
|
||||
clearscreen 2.0
|
||||
depends: googletest 1.12.1
|
||||
Remove CentOS 8 as a supported platform
|
||||
depends: native_zstd 1.5.2
|
||||
depends: native_ccache 4.6.3
|
||||
depends: Add package for native_cmake 3.25.1
|
||||
depends: Force cmake to install libzstd in lib/
|
||||
build-aux: Update Boost macros to latest serials
|
||||
build: Bump required Boost version
|
||||
depends: Force Boost library to be installed in lib/
|
||||
depends: Add tl_expected to update checker
|
||||
depends: Boost 1.81.0
|
||||
depends: utfcpp 3.2.3
|
||||
qa: Postpone LLVM 15 and CCache 4.7 updates
|
||||
depends: Update cxx to 1.0.83
|
||||
cargo update
|
||||
Document -clockoffset option
|
||||
qa: Update show_help RPC test
|
||||
doc: Fix arguments to make-release.py in hotfix process
|
||||
depends: CMake 3.25.2
|
||||
make-release.py: Versioning changes for 5.4.0-rc1.
|
||||
make-release.py: Updated manpages for 5.4.0-rc1.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc1.
|
||||
qa: Enable RPC test execution to be overridden from Python
|
||||
depends: Postpone cxx update
|
||||
metrics: Update `zcash.pool.value.zatoshis` gauge for transparent pool
|
||||
Update release notes with notable changes for v5.4.0
|
||||
make-release.py: Versioning changes for 5.4.0-rc2.
|
||||
make-release.py: Updated manpages for 5.4.0-rc2.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc2.
|
||||
qa: Add RPC test reproducing the Orchard reindex issue
|
||||
Fix return type of `orchard_wallet_reset`
|
||||
Reset Orchard wallet state in `CWallet::ClearNoteWitnessCache`
|
||||
make-release.py: Versioning changes for 5.4.0.
|
||||
make-release.py: Updated manpages for 5.4.0.
|
||||
|
||||
James O'Beirne (2):
|
||||
Clarify help messages for path args to mention datadir prefix
|
||||
Add AbsPathForConfigVal to consolidate datadir prefixing for path args
|
||||
|
||||
Kris Nuttycombe (33):
|
||||
Add TransactionStrategy::IsCompatibleWith
|
||||
Modify TransactionBuilder to use the standard default fee.
|
||||
Factor out memo parsing from asyncrpcoperation_sendmany
|
||||
Remove mergetoaddress_sprout test as sending to Sprout is no longer supported.
|
||||
Remove wallet_shieldcoinbase_sprout test.
|
||||
Update `mergetoaddress_mixednotes.py` to no longer send to Sprout.
|
||||
Verify sum of pool balances against chain total supply.
|
||||
Apply suggestions from code review
|
||||
Add script for verifying block rewards and fees not claimed by miners.
|
||||
Apply suggestions from code review
|
||||
Remove unnecessary delta_count variable.
|
||||
Replace fix-copyright-headers.py with a script that creates a scripted-diff git commit.
|
||||
scripted-diff: Update Zcash copyrights to 2023
|
||||
Apply suggestions from code review
|
||||
Enable tests of chain supply & transparent pool balance.
|
||||
Update doc/release-notes.md
|
||||
Fixes an error in `zcash-cli help` following the removal of `dumpwallet`.
|
||||
Allow rescan to exit in the case that Ctrl-C is pressed.
|
||||
Fetch recently conflicted transactions incrementally in ThreadNotifyWallet.
|
||||
Bound wallet batch scanner size to 1000 blocks instead of 100 MiB
|
||||
Remove unused DEFAULT_BATCHSCANNERMEMLIMIT constant.
|
||||
Tolerate missing cached conflict data in ThreadNotifyWallets
|
||||
make-release.py: Versioning changes for 5.4.0-rc3.
|
||||
make-release.py: Updated manpages for 5.4.0-rc3.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc3.
|
||||
Defer z_getbalance and z_gettotalbalance disablement.
|
||||
Patch uses of `sprintf` in `zeromq` that break the build on macOS
|
||||
Patch zeromq to check the return value of snprintf where necessary.
|
||||
Postpone rustcxx and native_cxxbridge versions 1.0.89
|
||||
Add #6387 fix to v5.4.0 release notes.
|
||||
make-release.py: Versioning changes for 5.4.0-rc4.
|
||||
make-release.py: Updated manpages for 5.4.0-rc4.
|
||||
make-release.py: Updated release notes and changelog for 5.4.0-rc4.
|
||||
|
||||
Marco Falke (4):
|
||||
[init] Add missing help for args
|
||||
[init] Help Msg: Use Params(CBaseChainParams::MAIN)
|
||||
Clarify mocktime help message
|
||||
init: Fix help message for checkblockindex
|
||||
|
||||
Marius Kjærstad (5):
|
||||
Hardened checkpoint update at block 1860000 for mainnet
|
||||
Update src/chainparams.cpp
|
||||
Some more formatting changes to chainparams.cpp
|
||||
Forgot to add 0x
|
||||
Add some more historical checkpoints
|
||||
|
||||
Mark Friedenbach (1):
|
||||
Prevent block.nTime from decreasing
|
||||
|
||||
Marshall Gaucher (4):
|
||||
Update zcash-build-bench.yml
|
||||
Update README.md
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build.yml
|
||||
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build-test.yml
|
||||
|
||||
Michał Janiszewski (1):
|
||||
Update debian/compat to version 13
|
||||
|
||||
Russell Yanofsky (2):
|
||||
depends: Add CMake helper for building packages
|
||||
depends: Set CMAKE_INSTALL_RPATH for native packages
|
||||
|
||||
Suhas Daftuar (3):
|
||||
Track transaction packages in CTxMemPoolEntry
|
||||
Add test showing bug in mempool packages
|
||||
Fix mempool package tracking edge case
|
||||
|
||||
Wladimir J. van der Laan (1):
|
||||
rpc: Write authcookie atomically
|
||||
|
||||
Marshall Gaucher (2):
|
||||
add basic tekton zcash env
|
||||
update memory targets with heaptrack
|
||||
|
|
@ -28,10 +28,10 @@ Check that dependencies are up-to-date or have been postponed:
|
|||
$ ./qa/zcash/updatecheck.py
|
||||
```
|
||||
|
||||
If you are missing the `.updatecheck-token` file required to run this script,
|
||||
please ask Taylor or another Zcash developer for a copy, or create an
|
||||
unprivileged personal access token for a github account and save it to the
|
||||
file in the format `username:hex-token`.
|
||||
You can optionally create a file `~/.local/share/zcash/updatecheck/token` (or
|
||||
`$XDG_DATA_HOME/zcash/updatecheck/token` if the `XDG_DATA_HOME` environment
|
||||
variable is set) to avoid running into GitHub rate limiting. Create an
|
||||
unprivileged personal access token on GitHub and copy the value into the file.
|
||||
|
||||
If there are updates that have not been postponed, review their changelogs
|
||||
for urgent security fixes, and if there aren't any, postpone the update by
|
||||
|
@ -59,9 +59,8 @@ The release script has the following dependencies:
|
|||
|
||||
- `help2man`
|
||||
- `debchange` (part of the devscripts Debian package)
|
||||
|
||||
You can optionally install the `progressbar2` Python module with pip to have a
|
||||
progress bar displayed during the build process.
|
||||
- the python modules `progressbar2` (optional - displays a progress bar),
|
||||
`requests` and `xdg`
|
||||
|
||||
## Versioning
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@ SERIAL_SCRIPTS = [
|
|||
# These tests involve enough shielded spends (consuming all CPU
|
||||
# cores) that we can't run them in parallel.
|
||||
'mergetoaddress_sapling.py',
|
||||
'mergetoaddress_sprout.py',
|
||||
'wallet_shieldingcoinbase.py',
|
||||
]
|
||||
|
||||
|
@ -39,12 +38,10 @@ BASE_SCRIPTS= [
|
|||
# Longest test should go first, to favor running tests in parallel
|
||||
# vv Tests less than 5m vv
|
||||
'wallet.py',
|
||||
'wallet_shieldcoinbase_sprout.py',
|
||||
'sprout_sapling_migration.py',
|
||||
'remove_sprout_shielding.py',
|
||||
'zcjoinsplitdoublespend.py',
|
||||
'mempool_packages.py',
|
||||
# vv Tests less than 2m vv
|
||||
'zcjoinsplit.py',
|
||||
'mergetoaddress_mixednotes.py',
|
||||
'wallet_shieldcoinbase_sapling.py',
|
||||
'wallet_shieldcoinbase_ua_sapling.py',
|
||||
|
@ -62,6 +59,7 @@ BASE_SCRIPTS= [
|
|||
'wallet_overwintertx.py',
|
||||
'wallet_persistence.py',
|
||||
'wallet_listnotes.py',
|
||||
'wallet_listunspent.py',
|
||||
# vv Tests less than 60s vv
|
||||
'orchard_reorg.py',
|
||||
'fundrawtransaction.py',
|
||||
|
@ -81,6 +79,7 @@ BASE_SCRIPTS= [
|
|||
'wallet_orchard_change.py',
|
||||
'wallet_orchard_init.py',
|
||||
'wallet_orchard_persistence.py',
|
||||
'wallet_orchard_reindex.py',
|
||||
'wallet_nullifiers.py',
|
||||
'wallet_sapling.py',
|
||||
'wallet_sendmany_any_taddr.py',
|
||||
|
@ -288,9 +287,18 @@ def main():
|
|||
tests_to_run = split_list[args.rpcgroup]
|
||||
else:
|
||||
tests_to_run = test_list
|
||||
run_tests(tests_to_run, config["environment"]["SRCDIR"], config["environment"]["BUILDDIR"], config["environment"]["EXEEXT"], args.jobs, args.coverage, passon_args)
|
||||
all_passed = run_tests(
|
||||
RPCTestHandler,
|
||||
tests_to_run,
|
||||
config["environment"]["SRCDIR"],
|
||||
config["environment"]["BUILDDIR"],
|
||||
config["environment"]["EXEEXT"],
|
||||
args.jobs,
|
||||
args.coverage,
|
||||
passon_args)
|
||||
sys.exit(not all_passed)
|
||||
|
||||
def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=False, args=[]):
|
||||
def run_tests(test_handler, test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=False, args=[]):
|
||||
BOLD = ("","")
|
||||
if os.name == 'posix':
|
||||
# primitive formatting on supported
|
||||
|
@ -322,7 +330,7 @@ def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=Fal
|
|||
time_sum = 0
|
||||
time0 = time.time()
|
||||
|
||||
job_queue = RPCTestHandler(jobs, tests_dir, test_list, flags)
|
||||
job_queue = test_handler(jobs, tests_dir, test_list, flags)
|
||||
|
||||
max_len_name = len(max(test_list, key=len))
|
||||
results = BOLD[1] + "%s | %s | %s\n\n" % ("TEST".ljust(max_len_name), "PASSED", "DURATION") + BOLD[0]
|
||||
|
@ -348,7 +356,7 @@ def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=Fal
|
|||
print("Cleaning up coverage data")
|
||||
coverage.cleanup()
|
||||
|
||||
sys.exit(not all_passed)
|
||||
return all_passed
|
||||
|
||||
class RPCTestHandler:
|
||||
"""
|
||||
|
@ -368,6 +376,13 @@ class RPCTestHandler:
|
|||
self.portseed_offset = int(time.time() * 1000) % 625
|
||||
self.jobs = []
|
||||
|
||||
def start_test(self, args, stdout, stderr):
|
||||
return subprocess.Popen(
|
||||
args,
|
||||
universal_newlines=True,
|
||||
stdout=stdout,
|
||||
stderr=stderr)
|
||||
|
||||
def get_next(self):
|
||||
while self.num_running < self.num_jobs and self.test_list:
|
||||
# Add tests
|
||||
|
@ -378,10 +393,9 @@ class RPCTestHandler:
|
|||
log_stderr = tempfile.SpooledTemporaryFile(max_size=2**16)
|
||||
self.jobs.append((t,
|
||||
time.time(),
|
||||
subprocess.Popen((self.tests_dir + t).split() + self.flags + port_seed,
|
||||
universal_newlines=True,
|
||||
stdout=log_stdout,
|
||||
stderr=log_stderr),
|
||||
self.start_test((self.tests_dir + t).split() + self.flags + port_seed,
|
||||
log_stdout,
|
||||
log_stderr),
|
||||
log_stdout,
|
||||
log_stderr))
|
||||
# Run serial scripts on their own. We always run these first,
|
||||
|
|
|
@ -49,10 +49,16 @@ class AddressIndexTest(BitcoinTestFramework):
|
|||
self.cache_behavior = 'clean'
|
||||
|
||||
def setup_network(self):
|
||||
base_args = [
|
||||
'-debug',
|
||||
'-txindex',
|
||||
'-experimentalfeatures',
|
||||
'-allowdeprecated=getnewaddress',
|
||||
]
|
||||
# -insightexplorer causes addressindex to be enabled (fAddressIndex = true)
|
||||
args_insight = ('-debug', '-txindex', '-experimentalfeatures', '-insightexplorer')
|
||||
args_insight = base_args + ['-insightexplorer']
|
||||
# -lightwallet also causes addressindex to be enabled
|
||||
args_lightwallet = ('-debug', '-txindex', '-experimentalfeatures', '-lightwalletd')
|
||||
args_lightwallet = base_args + ['-lightwalletd']
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, [args_insight] * 3 + [args_lightwallet])
|
||||
|
||||
connect_nodes(self.nodes[0], 1)
|
||||
|
|
|
@ -26,7 +26,11 @@ class BIP65Test(ComparisonTestFramework):
|
|||
|
||||
def setup_network(self):
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||
extra_args=[['-debug', '-whitelist=127.0.0.1']],
|
||||
extra_args=[[
|
||||
'-debug',
|
||||
'-whitelist=127.0.0.1',
|
||||
'-allowdeprecated=getnewaddress',
|
||||
]],
|
||||
binary=[self.options.testbinary])
|
||||
self.is_network_split = False
|
||||
|
||||
|
|
|
@ -26,7 +26,11 @@ class BIP66Test(ComparisonTestFramework):
|
|||
|
||||
def setup_network(self):
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||
extra_args=[['-debug', '-whitelist=127.0.0.1']],
|
||||
extra_args=[[
|
||||
'-debug',
|
||||
'-whitelist=127.0.0.1',
|
||||
'-allowdeprecated=getnewaddress',
|
||||
]],
|
||||
binary=[self.options.testbinary])
|
||||
self.is_network_split = False
|
||||
|
||||
|
|
|
@ -30,6 +30,9 @@ class CoinbaseFundingStreamsTest (BitcoinTestFramework):
|
|||
nuparams(HEARTWOOD_BRANCH_ID, 2),
|
||||
nuparams(CANOPY_BRANCH_ID, 5),
|
||||
"-nurejectoldversions=false",
|
||||
"-allowdeprecated=z_getnewaddress",
|
||||
"-allowdeprecated=z_getbalance",
|
||||
"-allowdeprecated=z_gettotalbalance",
|
||||
]
|
||||
return start_node(index, self.options.tmpdir, args + extra_args)
|
||||
|
||||
|
|
|
@ -50,7 +50,9 @@ class Zip239Test(BitcoinTestFramework):
|
|||
nuparams(HEARTWOOD_BRANCH_ID, 205),
|
||||
nuparams(CANOPY_BRANCH_ID, 205),
|
||||
nuparams(NU5_BRANCH_ID, 210),
|
||||
"-preferredtxversion=5"
|
||||
"-preferredtxversion=5",
|
||||
"-allowdeprecated=getnewaddress",
|
||||
"-allowdeprecated=z_getbalance",
|
||||
]] * self.num_nodes)
|
||||
|
||||
def cinv_for(self, txid, authDigest=None):
|
||||
|
|
|
@ -37,6 +37,9 @@ class FinalOrchardRootTest(BitcoinTestFramework):
|
|||
'-reindex', # Required due to enabling -txindex
|
||||
nuparams(NU5_BRANCH_ID, 200),
|
||||
'-debug',
|
||||
'-allowdeprecated=getnewaddress',
|
||||
'-allowdeprecated=z_getnewaddress',
|
||||
'-allowdeprecated=z_getbalance',
|
||||
]] * self.num_nodes)
|
||||
connect_nodes_bi(self.nodes,0,1)
|
||||
self.is_network_split=False
|
||||
|
|
|
@ -37,6 +37,9 @@ class FinalSaplingRootTest(BitcoinTestFramework):
|
|||
'-reindex', # Required due to enabling -txindex
|
||||
nuparams(NU5_BRANCH_ID, 210),
|
||||
'-debug',
|
||||
'-allowdeprecated=getnewaddress',
|
||||
'-allowdeprecated=z_getnewaddress',
|
||||
'-allowdeprecated=z_getbalance',
|
||||
]] * self.num_nodes)
|
||||
connect_nodes_bi(self.nodes,0,1)
|
||||
self.is_network_split=False
|
||||
|
@ -93,7 +96,7 @@ class FinalSaplingRootTest(BitcoinTestFramework):
|
|||
saplingAddr0 = self.nodes[0].z_getnewaddress('sapling')
|
||||
recipients = []
|
||||
recipients.append({"address": saplingAddr0, "amount": Decimal('10')})
|
||||
myopid = self.nodes[0].z_sendmany(taddr0, recipients, 1, 0)
|
||||
myopid = self.nodes[0].z_sendmany(taddr0, recipients, 1, 0, 'AllowRevealedSenders')
|
||||
mytxid = wait_and_assert_operationid_status(self.nodes[0], myopid)
|
||||
|
||||
self.sync_all()
|
||||
|
@ -193,7 +196,7 @@ class FinalSaplingRootTest(BitcoinTestFramework):
|
|||
taddr2 = self.nodes[0].getnewaddress()
|
||||
recipients = []
|
||||
recipients.append({"address": taddr2, "amount": Decimal('2.34')})
|
||||
myopid = self.nodes[1].z_sendmany(saplingAddr1, recipients, 1, 0)
|
||||
myopid = self.nodes[1].z_sendmany(saplingAddr1, recipients, 1, 0, 'AllowRevealedRecipients')
|
||||
mytxid = wait_and_assert_operationid_status(self.nodes[1], myopid)
|
||||
|
||||
self.sync_all()
|
||||
|
|
|
@ -21,8 +21,11 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||
self.num_nodes = 4
|
||||
|
||||
def setup_network(self, split=False):
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||
extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * 4)
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||
'-experimentalfeatures',
|
||||
'-developerencryptwallet',
|
||||
'-allowdeprecated=getnewaddress',
|
||||
]] * self.num_nodes)
|
||||
|
||||
connect_nodes_bi(self.nodes,0,1)
|
||||
connect_nodes_bi(self.nodes,1,2)
|
||||
|
@ -450,7 +453,9 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||
stop_nodes(self.nodes)
|
||||
wait_bitcoinds()
|
||||
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||
'-allowdeprecated=getnewaddress',
|
||||
]] * self.num_nodes)
|
||||
|
||||
connect_nodes_bi(self.nodes,0,1)
|
||||
connect_nodes_bi(self.nodes,1,2)
|
||||
|
|
|
@ -9,6 +9,7 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||
from test_framework.util import (
|
||||
assert_equal,
|
||||
CANOPY_BRANCH_ID,
|
||||
DEFAULT_FEE,
|
||||
NU5_BRANCH_ID,
|
||||
get_coinbase_address,
|
||||
hex_str_to_bytes,
|
||||
|
@ -40,6 +41,8 @@ class GetBlockTemplateTest(BitcoinTestFramework):
|
|||
args = [
|
||||
nuparams(CANOPY_BRANCH_ID, 215),
|
||||
nuparams(NU5_BRANCH_ID, 230),
|
||||
"-allowdeprecated=getnewaddress",
|
||||
"-allowdeprecated=z_getbalance",
|
||||
]
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, [args] * self.num_nodes)
|
||||
self.is_network_split = False
|
||||
|
@ -49,13 +52,13 @@ class GetBlockTemplateTest(BitcoinTestFramework):
|
|||
node = self.node
|
||||
# sprout to transparent (v4)
|
||||
recipients = [{"address": self.transparent_addr, "amount": Decimal('0.1')}]
|
||||
myopid = node.z_sendmany(self.sprout_addr, recipients, 1)
|
||||
myopid = node.z_sendmany(self.sprout_addr, recipients, 1, DEFAULT_FEE, 'AllowRevealedRecipients')
|
||||
wait_and_assert_operationid_status(node, myopid)
|
||||
|
||||
def add_nu5_v5_tx_to_mempool(self):
|
||||
node = self.node
|
||||
recipients = [{"address": self.unified_addr, "amount": Decimal('9.99999')}]
|
||||
myopid = node.z_sendmany(get_coinbase_address(node), recipients, 1, Decimal('0.00001'), 'AllowRevealedSenders')
|
||||
myopid = node.z_sendmany(get_coinbase_address(node), recipients, 1, DEFAULT_FEE, 'AllowRevealedSenders')
|
||||
wait_and_assert_operationid_status(node, myopid)
|
||||
|
||||
def add_transparent_tx_to_mempool(self):
|
||||
|
|
|
@ -27,8 +27,13 @@ class GetrawtransactionTest(BitcoinTestFramework):
|
|||
def setup_network(self):
|
||||
# -insightexplorer causes spentindex to be enabled (fSpentIndex = true)
|
||||
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||
[['-debug', '-txindex', '-experimentalfeatures', '-insightexplorer']] * self.num_nodes)
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||
'-debug',
|
||||
'-txindex',
|
||||
'-experimentalfeatures',
|
||||
'-insightexplorer',
|
||||
'-allowdeprecated=getnewaddress',
|
||||
]] * self.num_nodes)
|
||||
connect_nodes(self.nodes[0], 1)
|
||||
connect_nodes(self.nodes[0], 2)
|
||||
|
||||
|
|
|
@ -22,7 +22,9 @@ class KeyImportExportTest (BitcoinTestFramework):
|
|||
self.cache_behavior = 'clean'
|
||||
|
||||
def setup_network(self, split=False):
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir )
|
||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||
'-allowdeprecated=getnewaddress',
|
||||
]] * self.num_nodes)
|
||||
connect_nodes_bi(self.nodes,0,1)
|
||||
connect_nodes_bi(self.nodes,1,2)
|
||||
connect_nodes_bi(self.nodes,0,2)
|
||||
|
|
|
@ -40,7 +40,10 @@ class KeyPoolTest(BitcoinTestFramework):
|
|||
nodes[0].encryptwallet('test')
|
||||
bitcoind_processes[0].wait()
|
||||
# Restart node 0
|
||||
nodes[0] = start_node(0, self.options.tmpdir)
|
||||
nodes[0] = start_node(0, self.options.tmpdir, extra_args=[
|
||||
'-allowdeprecated=getnewaddress',
|
||||
'-allowdeprecated=getrawchangeaddress',
|
||||
])
|
||||
# We can't create any external addresses, which don't use the keypool.
|
||||
# We should get an error that we need to unlock the wallet.
|
||||
try:
|
||||
|
|
|
@ -7,9 +7,17 @@
|
|||
# Exercise the listtransactions API
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal, start_nodes
|
||||
|
||||
from decimal import Decimal
|
||||
|
||||
def count_array_matches(object_array, to_match):
|
||||
num_matched = 0
|
||||
for item in object_array:
|
||||
if all((item[key] == value for key,value in to_match.items())):
|
||||
num_matched = num_matched+1
|
||||
return num_matched
|
||||
|
||||
def check_array_result(object_array, to_match, expected):
|
||||
"""
|
||||
Pass in array of JSON objects, a dictionary with key/value pairs
|
||||
|
@ -27,12 +35,17 @@ def check_array_result(object_array, to_match, expected):
|
|||
for key,value in expected.items():
|
||||
if item[key] != value:
|
||||
raise AssertionError("%s : expected %s=%s"%(str(item), str(key), str(value)))
|
||||
num_matched = num_matched+1
|
||||
num_matched = num_matched+1
|
||||
if num_matched == 0:
|
||||
raise AssertionError("No objects matched %s"%(str(to_match)))
|
||||
|
||||
class ListTransactionsTest(BitcoinTestFramework):
|
||||
|
||||
def setup_nodes(self):
|
||||
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||
'-allowdeprecated=getnewaddress',
|
||||
]] * self.num_nodes)
|
||||
|
||||
def run_test(self):
|
||||
# Simple send, 0 to 1:
|
||||
txid = self.nodes[0].sendtoaddress(self.nodes[1].getnewaddress(), 0.1)
|
||||
|
@ -45,6 +58,7 @@ class ListTransactionsTest(BitcoinTestFramework):
|
|||
{"category":"receive","amount":Decimal("0.1"),"amountZat":10000000,"confirmations":0})
|
||||
|
||||
# mine a block, confirmations should change:
|
||||
old_block = self.nodes[0].getblockcount()
|
||||
self.nodes[0].generate(1)
|
||||
self.sync_all()
|
||||
check_array_result(self.nodes[0].listtransactions(),
|
||||
|
@ -53,6 +67,16 @@ class ListTransactionsTest(BitcoinTestFramework):
|
|||
check_array_result(self.nodes[1].listtransactions(),
|
||||
{"txid":txid},
|
||||
{"category":"receive","amount":Decimal("0.1"),"amountZat":10000000,"confirmations":1})
|
||||
# Confirmations here are -1 instead of 0 because while we only went back
|
||||
# 1 block, “0” means the tx is in the mempool, but the tx has already
|
||||
# been mined and `asOfHeight` ignores the mempool regardless.
|
||||
check_array_result(self.nodes[0].listtransactions("*", 10, 0, False, old_block),
|
||||
{"txid":txid},
|
||||
{"category":"send","amount":Decimal("-0.1"),"amountZat":-10000000,"confirmations":-1})
|
||||
# And while we can still see the tx we sent before the block where they
|
||||
# got mined, we don’t have access to ones we’ll receive after the
|
||||
# specified block.
|
||||
assert_equal(0, count_array_matches(self.nodes[1].listtransactions("*", 10, 0, False, old_block), {"txid":txid}))
|
||||
|
||||
# send-to-self:
|
||||
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 0.2)
|
||||
|
|
|
@ -17,15 +17,21 @@ from test_framework.util import (
|
|||
from decimal import Decimal
|
||||
from time import sleep
|
||||
|
||||
BASE_ARGS = [
|
||||
'-debug=mempool',
|
||||
'-allowdeprecated=z_getnewaddress',
|
||||
'-allowdeprecated=z_gettotalbalance',
|
||||
]
|
||||
|
||||
# Test wallet behaviour with Sapling addresses
|
||||
class MempoolLimit(BitcoinTestFramework):
|
||||
def setup_nodes(self):
|
||||
extra_args = [
|
||||
["-debug=mempool", '-mempooltxcostlimit=8000'], # 2 transactions at min cost
|
||||
["-debug=mempool", '-mempooltxcostlimit=8000'], # 2 transactions at min cost
|
||||
["-debug=mempool", '-mempooltxcostlimit=8000'], # 2 transactions at min cost
|
||||
BASE_ARGS + ['-mempooltxcostlimit=8000'], # 2 transactions at min cost
|
||||
BASE_ARGS + ['-mempooltxcostlimit=8000'], # 2 transactions at min cost
|
||||
BASE_ARGS + ['-mempooltxcostlimit=8000'], # 2 transactions at min cost
|
||||
# Let node 3 hold one more transaction
|
||||
["-debug=mempool", '-mempooltxcostlimit=12000'], # 3 transactions at min cost
|
||||
BASE_ARGS + ['-mempooltxcostlimit=12000'], # 3 transactions at min cost
|
||||
]
|
||||
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
|
||||
|
||||
|
@ -63,16 +69,25 @@ class MempoolLimit(BitcoinTestFramework):
|
|||
zaddr3 = self.nodes[0].z_getnewaddress('sapling')
|
||||
|
||||
print("Filling mempool...")
|
||||
opid1 = self.nodes[1].z_sendmany(get_coinbase_address(self.nodes[1]), [{"address": zaddr1, "amount": Decimal('10.0') - DEFAULT_FEE}])
|
||||
opid1 = self.nodes[1].z_sendmany(
|
||||
get_coinbase_address(self.nodes[1]),
|
||||
[{"address": zaddr1, "amount": Decimal('10.0') - DEFAULT_FEE}],
|
||||
1, DEFAULT_FEE, 'AllowRevealedSenders')
|
||||
wait_and_assert_operationid_status(self.nodes[1], opid1)
|
||||
opid2 = self.nodes[2].z_sendmany(get_coinbase_address(self.nodes[2]), [{"address": zaddr2, "amount": Decimal('10.0') - DEFAULT_FEE}])
|
||||
opid2 = self.nodes[2].z_sendmany(
|
||||
get_coinbase_address(self.nodes[2]),
|
||||
[{"address": zaddr2, "amount": Decimal('10.0') - DEFAULT_FEE}],
|
||||
1, DEFAULT_FEE, 'AllowRevealedSenders')
|
||||
wait_and_assert_operationid_status(self.nodes[2], opid2)
|
||||
self.sync_all()
|
||||
|
||||
self.check_mempool_sizes(2)
|
||||
|
||||
print("Adding one more transaction...")
|
||||
opid3 = self.nodes[3].z_sendmany(get_coinbase_address(self.nodes[3]), [{"address": zaddr3, "amount": Decimal('10.0') - DEFAULT_FEE}])
|
||||
opid3 = self.nodes[3].z_sendmany(
|
||||
get_coinbase_address(self.nodes[3]),
|
||||
[{"address": zaddr3, "amount": Decimal('10.0') - DEFAULT_FEE}],
|
||||
1, DEFAULT_FEE, 'AllowRevealedSenders')
|
||||
wait_and_assert_operationid_status(self.nodes[3], opid3)
|
||||
# The mempools are no longer guaranteed to be in a consistent state, so we cannot sync
|
||||
sleep(5)
|
||||
|
|
|
@ -29,7 +29,13 @@ class MempoolUpgradeActivationTest(BitcoinTestFramework):
|
|||
self.cache_behavior = 'clean'
|
||||
|
||||
def setup_network(self):
|
||||
args = ["-checkmempool", "-debug=mempool", "-blockmaxsize=4000",
|
||||
args = [
|
||||
"-checkmempool",
|
||||
"-debug=mempool",
|
||||
"-blockmaxsize=4000",
|
||||
'-allowdeprecated=getnewaddress',
|
||||
'-allowdeprecated=z_getnewaddress',
|
||||
'-allowdeprecated=z_getbalance',
|
||||
nuparams(BLOSSOM_BRANCH_ID, 200),
|
||||
nuparams(HEARTWOOD_BRANCH_ID, 210),
|
||||
nuparams(CANOPY_BRANCH_ID, 220),
|
||||
|
@ -55,7 +61,7 @@ class MempoolUpgradeActivationTest(BitcoinTestFramework):
|
|||
node1_taddr = get_coinbase_address(self.nodes[1])
|
||||
node0_zaddr = self.nodes[0].z_getnewaddress('sapling')
|
||||
recipients = [{'address': node0_zaddr, 'amount': Decimal('10')}]
|
||||
myopid = self.nodes[1].z_sendmany(node1_taddr, recipients, 1, 0)
|
||||
myopid = self.nodes[1].z_sendmany(node1_taddr, recipients, 1, 0, 'AllowRevealedSenders')
|
||||
print(wait_and_assert_operationid_status(self.nodes[1], myopid))
|
||||
self.sync_all()
|
||||
self.nodes[0].generate(1)
|
||||
|
|
|
@ -0,0 +1,193 @@
|
|||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2014-2016 The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
# Test descendant package tracking code
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import (
|
||||
ROUND_DOWN,
|
||||
Decimal,
|
||||
JSONRPCException,
|
||||
assert_equal,
|
||||
connect_nodes,
|
||||
start_node,
|
||||
sync_blocks,
|
||||
sync_mempools,
|
||||
)
|
||||
|
||||
def satoshi_round(amount):
|
||||
return Decimal(amount).quantize(Decimal('0.00000001'), rounding=ROUND_DOWN)
|
||||
|
||||
class MempoolPackagesTest(BitcoinTestFramework):
|
||||
|
||||
def setup_network(self):
|
||||
base_args = [
|
||||
"-maxorphantx=1000",
|
||||
"-relaypriority=0",
|
||||
"-debug",
|
||||
"-allowdeprecated=getnewaddress",
|
||||
]
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, base_args))
|
||||
self.nodes.append(start_node(1, self.options.tmpdir, base_args + ["-limitancestorcount=5"]))
|
||||
connect_nodes(self.nodes[0], 1)
|
||||
self.is_network_split = False
|
||||
self.sync_all()
|
||||
|
||||
# Build a transaction that spends parent_txid:vout
|
||||
# Return amount sent
|
||||
def chain_transaction(self, node, parent_txid, vout, value, fee, num_outputs):
|
||||
send_value = satoshi_round((value - fee)/num_outputs)
|
||||
inputs = [ {'txid' : parent_txid, 'vout' : vout} ]
|
||||
outputs = {}
|
||||
for i in range(num_outputs):
|
||||
outputs[node.getnewaddress()] = send_value
|
||||
rawtx = node.createrawtransaction(inputs, outputs)
|
||||
signedtx = node.signrawtransaction(rawtx)
|
||||
txid = node.sendrawtransaction(signedtx['hex'])
|
||||
fulltx = node.getrawtransaction(txid, 1)
|
||||
assert(len(fulltx['vout']) == num_outputs) # make sure we didn't generate a change output
|
||||
return (txid, send_value)
|
||||
|
||||
def run_test(self):
|
||||
''' Mine some blocks and have them mature. '''
|
||||
self.nodes[0].generate(101)
|
||||
utxo = self.nodes[0].listunspent(10)
|
||||
txid = utxo[0]['txid']
|
||||
vout = utxo[0]['vout']
|
||||
value = utxo[0]['amount']
|
||||
|
||||
fee = Decimal("0.00005")
|
||||
# 100 transactions off a confirmed tx should be fine
|
||||
chain = []
|
||||
for i in range(100):
|
||||
(txid, sent_value) = self.chain_transaction(self.nodes[0], txid, 0, value, fee, 1)
|
||||
value = sent_value
|
||||
chain.append(txid)
|
||||
|
||||
# Check mempool has 100 transactions in it, and descendant
|
||||
# count and fees should look correct
|
||||
mempool = self.nodes[0].getrawmempool(True)
|
||||
assert_equal(len(mempool), 100)
|
||||
descendant_count = 1
|
||||
descendant_fees = 0
|
||||
descendant_size = 0
|
||||
SATOSHIS = 100000000
|
||||
|
||||
for x in reversed(chain):
|
||||
assert_equal(mempool[x]['descendantcount'], descendant_count)
|
||||
descendant_fees += mempool[x]['fee']
|
||||
assert_equal(mempool[x]['descendantfees'], SATOSHIS*descendant_fees)
|
||||
descendant_size += mempool[x]['size']
|
||||
assert_equal(mempool[x]['descendantsize'], descendant_size)
|
||||
descendant_count += 1
|
||||
|
||||
# Adding one more transaction on to the chain should fail.
|
||||
try:
|
||||
self.chain_transaction(self.nodes[0], txid, vout, value, fee, 1)
|
||||
except JSONRPCException:
|
||||
print("too-long-ancestor-chain successfully rejected")
|
||||
|
||||
# TODO: check that node1's mempool is as expected
|
||||
|
||||
# TODO: test ancestor size limits
|
||||
|
||||
# Now test descendant chain limits
|
||||
txid = utxo[1]['txid']
|
||||
value = utxo[1]['amount']
|
||||
vout = utxo[1]['vout']
|
||||
|
||||
transaction_package = []
|
||||
# First create one parent tx with 10 children
|
||||
(txid, sent_value) = self.chain_transaction(self.nodes[0], txid, vout, value, fee, 10)
|
||||
parent_transaction = txid
|
||||
for i in range(10):
|
||||
transaction_package.append({'txid': txid, 'vout': i, 'amount': sent_value})
|
||||
|
||||
for i in range(1000):
|
||||
utxo = transaction_package.pop(0)
|
||||
try:
|
||||
(txid, sent_value) = self.chain_transaction(self.nodes[0], utxo['txid'], utxo['vout'], utxo['amount'], fee, 10)
|
||||
for j in range(10):
|
||||
transaction_package.append({'txid': txid, 'vout': j, 'amount': sent_value})
|
||||
if i == 998:
|
||||
mempool = self.nodes[0].getrawmempool(True)
|
||||
assert_equal(mempool[parent_transaction]['descendantcount'], 1000)
|
||||
except JSONRPCException as e:
|
||||
print(e.error['message'])
|
||||
assert_equal(i, 999)
|
||||
print("tx that would create too large descendant package successfully rejected")
|
||||
|
||||
# TODO: check that node1's mempool is as expected
|
||||
|
||||
# TODO: test descendant size limits
|
||||
|
||||
# Test reorg handling
|
||||
# First, the basics:
|
||||
self.nodes[0].generate(1)
|
||||
sync_blocks(self.nodes)
|
||||
self.nodes[1].invalidateblock(self.nodes[0].getbestblockhash())
|
||||
self.nodes[1].reconsiderblock(self.nodes[0].getbestblockhash())
|
||||
|
||||
# Now test the case where node1 has a transaction T in its mempool that
|
||||
# depends on transactions A and B which are in a mined block, and the
|
||||
# block containing A and B is disconnected, AND B is not accepted back
|
||||
# into node1's mempool because its ancestor count is too high.
|
||||
|
||||
# Create 8 transactions, like so:
|
||||
# Tx0 -> Tx1 (vout0)
|
||||
# \--> Tx2 (vout1) -> Tx3 -> Tx4 -> Tx5 -> Tx6 -> Tx7
|
||||
#
|
||||
# Mine them in the next block, then generate a new tx8 that spends
|
||||
# Tx1 and Tx7, and add to node1's mempool, then disconnect the
|
||||
# last block.
|
||||
|
||||
# Create tx0 with 2 outputs
|
||||
utxo = self.nodes[0].listunspent()
|
||||
txid = utxo[0]['txid']
|
||||
value = utxo[0]['amount']
|
||||
vout = utxo[0]['vout']
|
||||
|
||||
send_value = satoshi_round((value - fee)/2)
|
||||
inputs = [ {'txid' : txid, 'vout' : vout} ]
|
||||
outputs = {}
|
||||
for i in range(2):
|
||||
outputs[self.nodes[0].getnewaddress()] = send_value
|
||||
rawtx = self.nodes[0].createrawtransaction(inputs, outputs)
|
||||
signedtx = self.nodes[0].signrawtransaction(rawtx)
|
||||
txid = self.nodes[0].sendrawtransaction(signedtx['hex'])
|
||||
tx0_id = txid
|
||||
value = send_value
|
||||
|
||||
# Create tx1
|
||||
(tx1_id, tx1_value) = self.chain_transaction(self.nodes[0], tx0_id, 0, value, fee, 1)
|
||||
|
||||
# Create tx2-7
|
||||
vout = 1
|
||||
txid = tx0_id
|
||||
for i in range(6):
|
||||
(txid, sent_value) = self.chain_transaction(self.nodes[0], txid, vout, value, fee, 1)
|
||||
vout = 0
|
||||
value = sent_value
|
||||
|
||||
# Mine these in a block
|
||||
self.nodes[0].generate(1)
|
||||
self.sync_all()
|
||||
|
||||
# Now generate tx8, with a big fee
|
||||
inputs = [ {'txid' : tx1_id, 'vout': 0}, {'txid' : txid, 'vout': 0} ]
|
||||
outputs = { self.nodes[0].getnewaddress() : send_value + value - 4*fee }
|
||||
rawtx = self.nodes[0].createrawtransaction(inputs, outputs)
|
||||
signedtx = self.nodes[0].signrawtransaction(rawtx)
|
||||
txid = self.nodes[0].sendrawtransaction(signedtx['hex'])
|
||||
sync_mempools(self.nodes)
|
||||
|
||||
# Now try to disconnect the tip on each node...
|
||||
self.nodes[1].invalidateblock(self.nodes[1].getbestblockhash())
|
||||
self.nodes[0].invalidateblock(self.nodes[0].getbestblockhash())
|
||||
sync_blocks(self.nodes)
|
||||
|
||||
if __name__ == '__main__':
|
||||
MempoolPackagesTest().main()
|
|
@ -23,7 +23,11 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
|
|||
alert_filename = None # Set by setup_network
|
||||
|
||||
def setup_network(self):
|
||||
args = ["-checkmempool", "-debug=mempool"]
|
||||
args = [
|
||||
"-checkmempool",
|
||||
"-debug=mempool",
|
||||
"-allowdeprecated=getnewaddress",
|
||||
]
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, args))
|
||||
self.nodes.append(start_node(1, self.options.tmpdir, args))
|
||||
|
|
|
@ -24,7 +24,7 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
|
|||
|
||||
def setup_network(self):
|
||||
# Just need one node for this test
|
||||
args = ["-checkmempool", "-debug=mempool"]
|
||||
args = ["-checkmempool", "-debug=mempool", "-allowdeprecated=getnewaddress"]
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, args))
|
||||
self.is_network_split = False
|
||||
|
|
|
@ -29,7 +29,11 @@ class MempoolSpendCoinbaseTest(BitcoinTestFramework):
|
|||
|
||||
def setup_network(self):
|
||||
# Just need one node for this test
|
||||
args = ["-checkmempool", "-debug=mempool"]
|
||||
args = [
|
||||
"-checkmempool",
|
||||
"-debug=mempool",
|
||||
"-allowdeprecated=getnewaddress",
|
||||
]
|
||||
self.nodes = []
|
||||
self.nodes.append(start_node(0, self.options.tmpdir, args))
|
||||
self.is_network_split = False
|
||||
|
|
|
@ -24,7 +24,10 @@ class MempoolTxExpiryTest(BitcoinTestFramework):
|
|||
return start_nodes(self.num_nodes, self.options.tmpdir,
|
||||
[[
|
||||
"-txexpirydelta=%d" % TX_EXPIRY_DELTA,
|
||||
"-debug=mempool"
|
||||
"-debug=mempool",
|
||||
"-allowdeprecated=getnewaddress",
|
||||
"-allowdeprecated=z_getnewaddress",
|
||||
"-allowdeprecated=z_gettotalbalance",
|
||||
]] * self.num_nodes)
|
||||
|
||||
# Test before, at, and after expiry block
|
||||
|
|
|
@ -42,14 +42,18 @@ class MergeToAddressHelper:
|
|||
initialize_chain_clean(test.options.tmpdir, 4)
|
||||
|
||||
def setup_network(self, test, additional_args=[]):
|
||||
args = ['-debug=zrpcunsafe']
|
||||
args = [
|
||||
'-debug=zrpcunsafe',
|
||||
'-limitancestorcount=%d' % self.utxos_to_generate,
|
||||
'-allowdeprecated=getnewaddress',
|
||||
'-allowdeprecated=z_getnewaddress',
|
||||
'-allowdeprecated=z_getbalance',
|
||||
]
|
||||
args += additional_args
|
||||
test.nodes = []
|
||||
test.nodes.append(start_node(0, test.options.tmpdir, args))
|
||||
test.nodes.append(start_node(1, test.options.tmpdir, args))
|
||||
args2 = ['-debug=zrpcunsafe']
|
||||
args2 += additional_args
|
||||
test.nodes.append(start_node(2, test.options.tmpdir, args2))
|
||||
test.nodes.append(start_node(2, test.options.tmpdir, args))
|
||||
connect_nodes_bi(test.nodes, 0, 1)
|
||||
connect_nodes_bi(test.nodes, 1, 2)
|
||||
connect_nodes_bi(test.nodes, 0, 2)
|
||||
|
@ -97,7 +101,7 @@ class MergeToAddressHelper:
|
|||
{'address': mytaddr, 'amount': 10},
|
||||
{'address': mytaddr2, 'amount': 10},
|
||||
{'address': mytaddr3, 'amount': 10},
|
||||
], 1, 0)
|
||||
], 1, 0, 'AllowRevealedRecipients')
|
||||
wait_and_assert_operationid_status(test.nodes[0], result)
|
||||
test.sync_all()
|
||||
test.nodes[1].generate(1)
|
||||
|
|
|
@ -6,47 +6,45 @@
|
|||
from decimal import Decimal
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal, get_coinbase_address, \
|
||||
initialize_chain_clean, start_nodes, wait_and_assert_operationid_status
|
||||
start_nodes, wait_and_assert_operationid_status
|
||||
from mergetoaddress_helper import assert_mergetoaddress_exception
|
||||
|
||||
|
||||
class MergeToAddressMixedNotes(BitcoinTestFramework):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.cache_behavior = 'sprout'
|
||||
|
||||
def setup_nodes(self):
|
||||
self.num_nodes = 4
|
||||
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[['-anchorconfirmations=1']] * self.num_nodes)
|
||||
|
||||
def setup_chain(self):
|
||||
print("Initializing test directory " + self.options.tmpdir)
|
||||
initialize_chain_clean(self.options.tmpdir, 4)
|
||||
return start_nodes(self.num_nodes, self.options.tmpdir, extra_args=[[
|
||||
'-anchorconfirmations=1',
|
||||
'-allowdeprecated=getnewaddress',
|
||||
'-allowdeprecated=z_getnewaddress',
|
||||
'-allowdeprecated=z_getbalance',
|
||||
'-allowdeprecated=z_gettotalbalance',
|
||||
]] * self.num_nodes)
|
||||
|
||||
def run_test(self):
|
||||
print("Mining blocks...")
|
||||
self.nodes[0].generate(102)
|
||||
self.sync_all()
|
||||
|
||||
# Send some ZEC to Sprout/Sapling addresses
|
||||
coinbase_addr = get_coinbase_address(self.nodes[0])
|
||||
sproutAddr = self.nodes[0].z_getnewaddress('sprout')
|
||||
sproutAddr = self.nodes[0].listaddresses()[0]['sprout']['addresses'][0]
|
||||
saplingAddr = self.nodes[0].z_getnewaddress('sapling')
|
||||
t_addr = self.nodes[1].getnewaddress()
|
||||
|
||||
result = self.nodes[0].z_shieldcoinbase(coinbase_addr, sproutAddr, 0, 1)
|
||||
wait_and_assert_operationid_status(self.nodes[0], result['opid'])
|
||||
self.nodes[0].generate(1)
|
||||
self.sync_all()
|
||||
assert_equal(self.nodes[0].z_getbalance(sproutAddr), Decimal('10'))
|
||||
assert_equal(self.nodes[0].z_getbalance(sproutAddr), Decimal('50'))
|
||||
assert_equal(self.nodes[0].z_getbalance(saplingAddr), Decimal('0'))
|
||||
assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('0'))
|
||||
assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('200'))
|
||||
# Make sure we cannot use "ANY_SPROUT" and "ANY_SAPLING" even if we only have Sprout Notes
|
||||
assert_mergetoaddress_exception(
|
||||
"Cannot send from both Sprout and Sapling addresses using z_mergetoaddress",
|
||||
lambda: self.nodes[0].z_mergetoaddress(["ANY_SPROUT", "ANY_SAPLING"], t_addr))
|
||||
opid = self.nodes[0].z_sendmany(coinbase_addr, [{"address": saplingAddr, "amount": Decimal('10')}], 1, 0)
|
||||
opid = self.nodes[0].z_sendmany(coinbase_addr, [{"address": saplingAddr, "amount": Decimal('10')}], 1, 0, 'AllowRevealedSenders')
|
||||
wait_and_assert_operationid_status(self.nodes[0], opid)
|
||||
self.nodes[0].generate(1)
|
||||
self.sync_all()
|
||||
|
||||
assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('0'))
|
||||
assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('200'))
|
||||
|
||||
# Merge Sprout -> taddr
|
||||
result = self.nodes[0].z_mergetoaddress(["ANY_SPROUT"], t_addr, 0)
|
||||
|
@ -56,7 +54,7 @@ class MergeToAddressMixedNotes(BitcoinTestFramework):
|
|||
|
||||
assert_equal(self.nodes[0].z_getbalance(sproutAddr), Decimal('0'))
|
||||
assert_equal(self.nodes[0].z_getbalance(saplingAddr), Decimal('10'))
|
||||
assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('10'))
|
||||
assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('250'))
|
||||
|
||||
# Make sure we cannot use "ANY_SPROUT" and "ANY_SAPLING" even if we only have Sapling Notes
|
||||
assert_mergetoaddress_exception(
|
||||
|
@ -70,7 +68,7 @@ class MergeToAddressMixedNotes(BitcoinTestFramework):
|
|||
|
||||
assert_equal(self.nodes[0].z_getbalance(sproutAddr), Decimal('0'))
|
||||
assert_equal(self.nodes[0].z_getbalance(saplingAddr), Decimal('0'))
|
||||
assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('20'))
|
||||
assert_equal(Decimal(self.nodes[1].z_gettotalbalance()["transparent"]), Decimal('260'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2018 The Zcash developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or https://www.opensource.org/licenses/mit-license.php .
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from mergetoaddress_helper import MergeToAddressHelper
|
||||
|
||||
|
||||
class MergeToAddressSprout (BitcoinTestFramework):
|
||||
# 13505 would be the maximum number of utxos based on the transaction size limits for Sapling
|
||||
# but testing this causes the test to take an indeterminately long time to run.
|
||||
helper = MergeToAddressHelper('sprout', 'ANY_SPROUT', 800, 800, 0)
|
||||
|
||||
def setup_chain(self):
|
||||
self.helper.setup_chain(self)
|
||||
|
||||
def setup_network(self, split=False):
|
||||
self.helper.setup_network(self, ['-anchorconfirmations=1'])
|
||||
|
||||
def run_test(self):
|
||||
self.helper.run_test(self)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
MergeToAddressSprout().main()
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue