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:
Arya 2023-02-17 13:36:49 -05:00 committed by GitHub
parent d352b0c971
commit 76c0aa5dae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
540 changed files with 27354 additions and 3781 deletions

View File

@ -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:

View File

@ -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

View File

@ -130,3 +130,5 @@ src/fuzzing/*/output
src/fuzz.cpp
.updatecheck-token
.env
poetry.lock

View File

@ -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

365
depend/zcash/Cargo.lock generated
View File

@ -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",

View File

@ -1,4 +1,4 @@
Zcash 5.3.0
Zcash 5.4.0
<img align="right" width="120" height="80" src="doc/imgs/logo.png">
===========

View File

@ -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
])

View File

@ -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 !)

View File

@ -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 !)

View File

@ -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] !])

View File

@ -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 !)

View File

@ -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
])

View File

@ -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 !)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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.

View File

@ -1 +1 @@
9
13

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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-)

View File

@ -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[@]}" "${@}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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",
])

View File

@ -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)

View File

@ -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]

View File

@ -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
;;

View File

@ -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

View File

@ -41,3 +41,4 @@ darwin_debug_CXXFLAGS=$(darwin_debug_CFLAGS)
darwin_native_binutils=native_cctools
darwin_native_toolchain=native_cctools
darwin_cmake_system=Darwin

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 &&

View File

@ -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 */

View File

@ -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;

View File

@ -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)

View File

@ -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.

View File

@ -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 |

View File

@ -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.

View File

@ -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:

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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
Dont 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
Dont 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

View File

@ -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
Dont 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
Dont 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

View File

@ -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.

View File

@ -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 didnt match. When coinbase notes were selected in this
case, they would (properly) require that the transaction didnt have any
change, but this could be confusing, as the documentation stated that these
two conditions (using "ANY\_TADDR" and disallowing change) wouldnt 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
Dont 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

View File

@ -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 didnt match. When coinbase notes were selected in this
case, they would (properly) require that the transaction didnt have any
change, but this could be confusing, as the documentation stated that these
two conditions (using "ANY\_TADDR" and disallowing change) wouldnt 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
Dont 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

View File

@ -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 didnt match. When coinbase notes were selected in this
case, they would (properly) require that the transaction didnt have any
change, but this could be confusing, as the documentation stated that these
two conditions (using "ANY\_TADDR" and disallowing change) wouldnt 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
Dont 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

View File

@ -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 didnt match. When coinbase notes were selected in this
case, they would (properly) require that the transaction didnt have any
change, but this could be confusing, as the documentation stated that these
two conditions (using "ANY\_TADDR" and disallowing change) wouldnt 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
Dont 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

View File

@ -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 didnt match. When coinbase notes were selected in this
case, they would (properly) require that the transaction didnt have any
change, but this could be confusing, as the documentation stated that these
two conditions (using "ANY\_TADDR" and disallowing change) wouldnt 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
Dont 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

View File

@ -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

View File

@ -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,

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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):

View File

@ -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

View File

@ -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()

View File

@ -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)

View File

@ -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):

View File

@ -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)

View File

@ -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)

View File

@ -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:

View File

@ -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 dont have access to ones well 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)

View File

@ -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)

View File

@ -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)

View File

@ -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()

View File

@ -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))

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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__':

View File

@ -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