mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-18 13:17:55 +02:00
Merge branch 'master' into elem-23.3.1rc3
This commit is contained in:
commit
752b11dae7
11 changed files with 102 additions and 11 deletions
|
|
@ -313,7 +313,7 @@ task:
|
|||
name: 'macOS 13 native arm64 [gui, sqlite only] [no depends]'
|
||||
macos_instance:
|
||||
# Use latest image, but hardcode version to avoid silent upgrades (and breaks)
|
||||
image: ghcr.io/cirruslabs/macos-ventura-xcode:14.1 # https://cirrus-ci.org/guide/macOS
|
||||
image: ghcr.io/cirruslabs/macos-runner:sequoia # https://cirrus-ci.org/guide/macOS
|
||||
<< : *MACOS_NATIVE_TASK_TEMPLATE
|
||||
env:
|
||||
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
|
||||
|
|
|
|||
|
|
@ -7,9 +7,7 @@
|
|||
export LC_ALL=C.UTF-8
|
||||
|
||||
export HOST=arm64-apple-darwin
|
||||
# Homebrew's python@3.12 is marked as externally managed (PEP 668).
|
||||
# Therefore, `--break-system-packages` is needed.
|
||||
export PIP_PACKAGES="--break-system-packages zmq"
|
||||
export PIP_PACKAGES="zmq"
|
||||
export GOAL="install"
|
||||
# ELEMENTS: add -fno-stack-check to work around clang bug on macos
|
||||
export BITCOIN_CONFIG="--with-gui --with-miniupnpc --with-natpmp --enable-reduce-exports CXXFLAGS=-fno-stack-check"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ if [[ $QEMU_USER_CMD == qemu-s390* ]]; then
|
|||
fi
|
||||
|
||||
if [ "$CI_OS_NAME" == "macos" ]; then
|
||||
sudo -H pip3 install --upgrade --break-system-packages --ignore-installed pip
|
||||
sudo -H pip3 install --upgrade --ignore-installed pip
|
||||
# shellcheck disable=SC2086
|
||||
IN_GETOPT_BIN="$(brew --prefix gnu-getopt)/bin/getopt" ${CI_RETRY_EXE} pip3 install --user $PIP_PACKAGES
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(git -c log.showSignature=false log --f
|
|||
# across time.
|
||||
time-machine() {
|
||||
# shellcheck disable=SC2086
|
||||
guix time-machine --url=https://git.savannah.gnu.org/git/guix.git \
|
||||
guix time-machine --url=https://codeberg.org/guix.git \
|
||||
--commit=ae03f401381e956c4c41b4cf495cbde964fa43d0 \
|
||||
--cores="$JOBS" \
|
||||
--keep-failed \
|
||||
|
|
|
|||
|
|
@ -226,7 +226,7 @@ SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(git -c log.showSignature=false log --f
|
|||
# across time.
|
||||
time-machine() {
|
||||
# shellcheck disable=SC2086
|
||||
guix time-machine --url=https://git.savannah.gnu.org/git/guix.git \
|
||||
guix time-machine --url=https://codeberg.org/guix.git \
|
||||
--commit=ae03f401381e956c4c41b4cf495cbde964fa43d0 \
|
||||
--cores="$JOBS" \
|
||||
--keep-failed \
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
oyVthSegrEARVcCyL6LuB5mZhO7c3elKHA==
|
||||
=K/wp
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
@ -28,6 +28,8 @@ if [ "${BITCOIN_GENBUILD_NO_GIT}" != "1" ] && [ -e "$(command -v git)" ] && [ "$
|
|||
RAWDESC=$(git describe --abbrev=0 2>/dev/null)
|
||||
if [ "$(git rev-parse HEAD)" = "$(git rev-list -1 "$RAWDESC" 2>/dev/null)" ]; then
|
||||
git diff-index --quiet HEAD -- && GIT_TAG=$RAWDESC
|
||||
# Replace elements- tag with the corresponding v
|
||||
case "$GIT_TAG" in elements-*) GIT_TAG="v${GIT_TAG#elements-}";; esac
|
||||
fi
|
||||
|
||||
# otherwise generate suffix from git, i.e. string like "59887e8-dirty"
|
||||
|
|
|
|||
|
|
@ -318,6 +318,10 @@ bool IsIssuanceInMoneyRange(const CTransaction& tx)
|
|||
if (issuance.nAmount.IsExplicit() && !MoneyRange(issuance.nAmount.GetAmount())) {
|
||||
return false;
|
||||
}
|
||||
// check the reissuance token is in range
|
||||
if (!issuance.nInflationKeys.IsNull() && issuance.nInflationKeys.IsExplicit() && !MoneyRange(issuance.nInflationKeys.GetAmount())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ class InvalidMessagesTest(BitcoinTestFramework):
|
|||
def test_size(self):
|
||||
self.log.info("Test message with oversized payload disconnects peer")
|
||||
conn = self.nodes[0].add_p2p_connection(P2PDataStore())
|
||||
with self.nodes[0].assert_debug_log(['Header error: Size too large (badmsg, 4000001 bytes)']):
|
||||
with self.nodes[0].assert_debug_log(['Header error: Size too large (badmsg, 16000001 bytes)']):
|
||||
msg = msg_unrecognized(str_data="d" * (VALID_DATA_LIMIT + 1))
|
||||
msg = conn.build_message(msg)
|
||||
conn.send_raw_message(msg)
|
||||
|
|
|
|||
|
|
@ -244,8 +244,7 @@ BASE_SCRIPTS = [
|
|||
'p2p_invalid_block.py',
|
||||
'feature_elements_taproot_activation.py',
|
||||
'feature_elements_simplicity_activation.py',
|
||||
# ELEMENTS: needs to be fixed
|
||||
#'p2p_invalid_messages.py',
|
||||
'p2p_invalid_messages.py',
|
||||
'p2p_invalid_tx.py',
|
||||
'feature_assumevalid.py',
|
||||
'example_test.py',
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ class WalletTest(BitcoinTestFramework):
|
|||
self.extra_args = [
|
||||
args + ["-acceptunlimitedissuances=1"],
|
||||
args + ["-acceptunlimitedissuances=1"],
|
||||
args, # node 2 blocks unblinded issuances out of moneyrange
|
||||
args, # node 2 blocks unblinded issuances out of moneyrange (default -acceptunlimitedissuances=0)
|
||||
]
|
||||
|
||||
def setup_network(self, split=False):
|
||||
|
|
@ -61,6 +61,12 @@ class WalletTest(BitcoinTestFramework):
|
|||
self.generate(self.nodes[0], 1)
|
||||
assert_equal(self.nodes[0].getbalance()[unblinded_asset], 500_000_000)
|
||||
|
||||
self.log.info("Issue more than 21 million of a unblinded reissuance token")
|
||||
issuance = self.nodes[0].issueasset(300_000_000, 100_000_000, False)
|
||||
self.generate(self.nodes[0], 1)
|
||||
assert_equal(self.nodes[0].getbalance()[issuance['asset']], 300_000_000)
|
||||
assert_equal(self.nodes[0].getbalance()[issuance['token']], 100_000_000)
|
||||
|
||||
# send more than 21 million of that asset
|
||||
addr = self.nodes[1].getnewaddress()
|
||||
self.nodes[0].sendtoaddress(address=addr, amount=22_000_000, assetlabel=asset)
|
||||
|
|
@ -130,5 +136,40 @@ class WalletTest(BitcoinTestFramework):
|
|||
assert(asset not in self.nodes[0].getbalance())
|
||||
assert_equal(self.nodes[2].getbalance()[asset], 300_000_000)
|
||||
|
||||
self.log.info("Reissue more than 21 million of a unblinded non-policy asset on node 2 - rejected from mempool")
|
||||
issuance = self.nodes[2].issueasset(3_000_000, 100, False)
|
||||
asset = issuance['asset']
|
||||
unblinded_asset = issuance['asset']
|
||||
self.generate(self.nodes[2], 1)
|
||||
assert_equal(self.nodes[2].getbalance()[unblinded_asset], 3_000_000)
|
||||
reissuance = self.nodes[2].reissueasset(unblinded_asset, 200_000_000)
|
||||
reissuance_tx = self.nodes[2].gettransaction(reissuance["txid"])
|
||||
assert_raises_rpc_error(-26, "issuance-out-of-range", self.nodes[2].sendrawtransaction, reissuance_tx['hex'])
|
||||
# transaction should be accepted on node 0
|
||||
self.nodes[0].sendrawtransaction(reissuance_tx["hex"])
|
||||
assert(reissuance['txid'] in self.nodes[0].getrawmempool())
|
||||
assert(reissuance['txid'] not in self.nodes[2].getrawmempool())
|
||||
self.generate(self.nodes[0], 1)
|
||||
assert(asset not in self.nodes[0].getbalance())
|
||||
assert_equal(self.nodes[2].getbalance()[asset], 203_000_000)
|
||||
|
||||
self.log.info("Issue more than 21 million reissuance tokens on node 2 - rejected from mempool")
|
||||
issuance = self.nodes[2].issueasset(3_000_000, 200_000_000, False)
|
||||
asset = issuance['asset']
|
||||
token = issuance['token']
|
||||
issuance_tx = self.nodes[2].gettransaction(issuance["txid"])
|
||||
assert_raises_rpc_error(-26, "issuance-out-of-range", self.nodes[2].sendrawtransaction, issuance_tx['hex'])
|
||||
self.generate(self.nodes[0], 1)
|
||||
assert(asset not in self.nodes[2].getbalance())
|
||||
assert(token not in self.nodes[2].getbalance())
|
||||
# transaction should be accepted on node 0
|
||||
self.nodes[0].sendrawtransaction(issuance_tx["hex"])
|
||||
assert(issuance['txid'] in self.nodes[0].getrawmempool())
|
||||
assert(issuance['txid'] not in self.nodes[2].getrawmempool())
|
||||
self.generate(self.nodes[0], 1)
|
||||
assert(asset not in self.nodes[0].getbalance())
|
||||
assert_equal(self.nodes[2].getbalance()[asset], 3_000_000)
|
||||
assert_equal(self.nodes[2].getbalance()[token], 200_000_000)
|
||||
|
||||
if __name__ == '__main__':
|
||||
WalletTest().main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue