mirror of
https://github.com/planetmint/planetmint.git
synced 2025-09-13 11:40:09 +00:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
871a8c1c09 | ||
![]() |
3afb2e6f3d | ||
![]() |
a23c180a0b | ||
![]() |
b14a092fb3 | ||
![]() |
2fc522dc77 | ||
![]() |
b1151d21f3 | ||
![]() |
be5280138f | ||
![]() |
4c7d9ae468 |
@ -25,6 +25,9 @@ For reference, the possible headings are:
|
||||
* **Known Issues**
|
||||
* **Notes**
|
||||
|
||||
## [1.4.2] - 2023-14-02
|
||||
* **fixed** fixed voting/election backward compatibility issue (using planetmint-transactions >= 0.7.0)
|
||||
|
||||
## [1.4.1] - 2022-21-12
|
||||
* **fixed** inconsistent cryptocondition keyring tag handling. Using cryptoconditions > 1.1.0 from now on.
|
||||
|
||||
|
@ -67,6 +67,7 @@ skipped_naughty_strings = [
|
||||
|
||||
naughty_strings = [naughty for naughty in naughty_strings if naughty not in skipped_naughty_strings]
|
||||
|
||||
|
||||
# This is our base test case, but we'll reuse it to send naughty strings as both keys and values.
|
||||
def send_naughty_tx(assets, metadata):
|
||||
# ## Set up a connection to Planetmint
|
||||
@ -118,7 +119,6 @@ def send_naughty_tx(assets, metadata):
|
||||
|
||||
@pytest.mark.parametrize("naughty_string", naughty_strings, ids=naughty_strings)
|
||||
def test_naughty_keys(naughty_string):
|
||||
|
||||
assets = [{"data": multihash(marshal({naughty_string: "nice_value"}))}]
|
||||
metadata = multihash(marshal({naughty_string: "nice_value"}))
|
||||
|
||||
@ -127,7 +127,6 @@ def test_naughty_keys(naughty_string):
|
||||
|
||||
@pytest.mark.parametrize("naughty_string", naughty_strings, ids=naughty_strings)
|
||||
def test_naughty_values(naughty_string):
|
||||
|
||||
assets = [{"data": multihash(marshal({"nice_key": naughty_string}))}]
|
||||
metadata = multihash(marshal({"nice_key": naughty_string}))
|
||||
|
||||
|
@ -19,7 +19,6 @@ def test_zenroom_signing(
|
||||
zenroom_script_input,
|
||||
condition_script_zencode,
|
||||
):
|
||||
|
||||
biolabs = generate_keypair()
|
||||
version = "2.0"
|
||||
|
||||
@ -47,7 +46,6 @@ def test_zenroom_signing(
|
||||
zenroom_house_assets,
|
||||
condition_script_zencode,
|
||||
):
|
||||
|
||||
biolabs = generate_keypair()
|
||||
version = "2.0"
|
||||
|
||||
|
@ -115,7 +115,6 @@ def send_naughty_tx(assets, metadata):
|
||||
|
||||
@pytest.mark.parametrize("naughty_string", naughty_strings, ids=naughty_strings)
|
||||
def test_naughty_keys(naughty_string):
|
||||
|
||||
assets = [{"data": {naughty_string: "nice_value"}}]
|
||||
metadata = {naughty_string: "nice_value"}
|
||||
|
||||
@ -124,7 +123,6 @@ def test_naughty_keys(naughty_string):
|
||||
|
||||
@pytest.mark.parametrize("naughty_string", naughty_strings, ids=naughty_strings)
|
||||
def test_naughty_values(naughty_string):
|
||||
|
||||
assets = [{"data": {"nice_key": naughty_string}}]
|
||||
metadata = {"nice_key": naughty_string}
|
||||
|
||||
|
@ -17,7 +17,6 @@ def test_zenroom_signing(
|
||||
zenroom_script_input,
|
||||
condition_script_zencode,
|
||||
):
|
||||
|
||||
biolabs = generate_keypair()
|
||||
version = "2.0"
|
||||
|
||||
|
@ -102,7 +102,6 @@ def store_block(conn, block):
|
||||
|
||||
@register_query(LocalMongoDBConnection)
|
||||
def get_txids_filtered(conn, asset_ids, operation=None, last_tx=None):
|
||||
|
||||
match = {
|
||||
Transaction.CREATE: {"operation": "CREATE", "id": {"$in": asset_ids}},
|
||||
Transaction.TRANSFER: {"operation": "TRANSFER", "asset.id": {"$in": asset_ids}},
|
||||
|
@ -47,7 +47,6 @@ class TransactionDecompose:
|
||||
}
|
||||
|
||||
def get_map(self, dictionary: dict = None):
|
||||
|
||||
return (
|
||||
_save_keys_order(dictionary=dictionary)
|
||||
if dictionary is not None
|
||||
@ -75,7 +74,6 @@ class TransactionDecompose:
|
||||
_inputs = []
|
||||
input_index = 0
|
||||
for _input in self._transaction["inputs"]:
|
||||
|
||||
_inputs.append(
|
||||
(
|
||||
self._transaction["id"],
|
||||
|
@ -684,7 +684,7 @@ class Planetmint(object):
|
||||
current_validators = self.get_validators_dict()
|
||||
|
||||
# NOTE: change more than 1/3 of the current power is not allowed
|
||||
if transaction.assets[0]["data"]["power"] >= (1 / 3) * sum(current_validators.values()):
|
||||
if transaction.get_assets()[0]["data"]["power"] >= (1 / 3) * sum(current_validators.values()):
|
||||
raise InvalidPowerChange("`power` change must be less than 1/3 of total power")
|
||||
|
||||
def get_election_status(self, transaction):
|
||||
@ -740,7 +740,7 @@ class Planetmint(object):
|
||||
return recipients
|
||||
|
||||
def show_election_status(self, transaction):
|
||||
data = transaction.assets[0]["data"]
|
||||
data = transaction.get_assets()[0]["data"]
|
||||
if "public_key" in data.keys():
|
||||
data["public_key"] = public_key_to_base64(data["public_key"]["value"])
|
||||
response = ""
|
||||
@ -821,8 +821,7 @@ class Planetmint(object):
|
||||
for tx in txns:
|
||||
if not isinstance(tx, Vote):
|
||||
continue
|
||||
|
||||
election_id = tx.assets[0]["id"]
|
||||
election_id = Transaction.read_out_asset_id(tx)
|
||||
if election_id not in elections:
|
||||
elections[election_id] = []
|
||||
elections[election_id].append(tx)
|
||||
@ -956,7 +955,7 @@ class Planetmint(object):
|
||||
if election.operation == CHAIN_MIGRATION_ELECTION:
|
||||
self.migrate_abci_chain()
|
||||
if election.operation == VALIDATOR_ELECTION:
|
||||
validator_updates = [election.assets[0]["data"]]
|
||||
validator_updates = [election.get_assets()[0]["data"]]
|
||||
curr_validator_set = self.get_validators(new_height)
|
||||
updated_validator_set = new_validator_set(curr_validator_set, validator_updates)
|
||||
|
||||
@ -964,7 +963,7 @@ class Planetmint(object):
|
||||
|
||||
# TODO change to `new_height + 2` when upgrading to Tendermint 0.24.0.
|
||||
self.store_validator_set(new_height + 1, updated_validator_set)
|
||||
return encode_validator(election.assets[0]["data"])
|
||||
return encode_validator(election.get_assets()[0]["data"])
|
||||
|
||||
|
||||
Block = namedtuple("Block", ("app_hash", "height", "transactions"))
|
||||
|
@ -3,7 +3,7 @@
|
||||
# SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)
|
||||
# Code is Apache-2.0 and docs are CC-BY-4.0
|
||||
|
||||
__version__ = "1.4.1"
|
||||
__version__ = "1.4.2"
|
||||
__short_version__ = "1.4"
|
||||
|
||||
# Supported Tendermint versions
|
||||
|
@ -18,9 +18,9 @@ from planetmint.web.views import (
|
||||
|
||||
def add_routes(app):
|
||||
"""Add the routes to an app"""
|
||||
for (prefix, routes) in API_SECTIONS:
|
||||
for prefix, routes in API_SECTIONS:
|
||||
api = Api(app, prefix=prefix)
|
||||
for ((pattern, resource, *args), kwargs) in routes:
|
||||
for (pattern, resource, *args), kwargs in routes:
|
||||
kwargs.setdefault("strict_slashes", False)
|
||||
api.add_resource(resource, pattern, *args, **kwargs)
|
||||
|
||||
|
10
setup.py
10
setup.py
@ -60,13 +60,13 @@ docs_require = [
|
||||
"mdit-py-plugins==0.3.0",
|
||||
"mdurl==0.1.1",
|
||||
"myst-parser==0.17.2",
|
||||
"packaging==21.3",
|
||||
"packaging>=22.0",
|
||||
"pockets==0.9.1",
|
||||
"Pygments==2.12.0",
|
||||
"pyparsing==3.0.8",
|
||||
"pytz==2022.1",
|
||||
"PyYAML>=5.4.0",
|
||||
"requests>=2.25i.1",
|
||||
"requests>=2.25.1",
|
||||
"six==1.16.0",
|
||||
"snowballstemmer==2.2.0",
|
||||
"Sphinx==4.5.0",
|
||||
@ -94,7 +94,7 @@ dev_require = ["ipdb", "ipython", "watchdog", "logging_tree", "pre-commit", "twi
|
||||
tests_require = [
|
||||
"coverage",
|
||||
"pep8",
|
||||
"black",
|
||||
"black>=23.1.0",
|
||||
"hypothesis>=5.3.0",
|
||||
"pytest>=3.0.0",
|
||||
"pytest-cov==2.8.1",
|
||||
@ -116,7 +116,7 @@ install_requires = [
|
||||
"gunicorn==20.1.0",
|
||||
"jsonschema==4.16.0",
|
||||
"logstats==0.3.0",
|
||||
"packaging>=20.9",
|
||||
"packaging>=22.0",
|
||||
"pymongo==3.11.4",
|
||||
"tarantool==0.7.1",
|
||||
"python-rapidjson>=1.0",
|
||||
@ -129,7 +129,7 @@ install_requires = [
|
||||
"planetmint-ipld>=0.0.3",
|
||||
"pyasn1>=0.4.8",
|
||||
"python-decouple",
|
||||
"planetmint-transactions>=0.5.0",
|
||||
"planetmint-transactions>=0.7.0",
|
||||
]
|
||||
|
||||
setup(
|
||||
|
@ -34,7 +34,6 @@ def test_single_in_single_own_single_out_single_own_create(alice, user_pk, b):
|
||||
# Multiple outputs
|
||||
# Single owners_after per output
|
||||
def test_single_in_single_own_multiple_out_single_own_create(alice, user_pk, b):
|
||||
|
||||
tx = Create.generate(
|
||||
[alice.public_key],
|
||||
[([user_pk], 50), ([user_pk], 50)],
|
||||
@ -55,7 +54,6 @@ def test_single_in_single_own_multiple_out_single_own_create(alice, user_pk, b):
|
||||
# Single output
|
||||
# Multiple owners_after
|
||||
def test_single_in_single_own_single_out_multiple_own_create(alice, user_pk, b):
|
||||
|
||||
tx = Create.generate(
|
||||
[alice.public_key],
|
||||
[([user_pk, user_pk], 100)],
|
||||
@ -81,7 +79,6 @@ def test_single_in_single_own_single_out_multiple_own_create(alice, user_pk, b):
|
||||
# Mix: one output with a single owners_after, one output with multiple
|
||||
# owners_after
|
||||
def test_single_in_single_own_multiple_out_mix_own_create(alice, user_pk, b):
|
||||
|
||||
tx = Create.generate(
|
||||
[alice.public_key],
|
||||
[([user_pk], 50), ([user_pk, user_pk], 50)],
|
||||
@ -130,7 +127,6 @@ def test_single_in_multiple_own_single_out_single_own_create(alice, b, user_pk,
|
||||
# Single output
|
||||
# Single owners_after
|
||||
def test_single_in_single_own_single_out_single_own_transfer(alice, b, user_pk, user_sk):
|
||||
|
||||
# CREATE divisible asset
|
||||
tx_create = Create.generate(
|
||||
[alice.public_key], [([user_pk], 100)], assets=[{"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}]
|
||||
@ -155,7 +151,6 @@ def test_single_in_single_own_single_out_single_own_transfer(alice, b, user_pk,
|
||||
# Multiple output
|
||||
# Single owners_after
|
||||
def test_single_in_single_own_multiple_out_single_own_transfer(alice, b, user_pk, user_sk):
|
||||
|
||||
# CREATE divisible asset
|
||||
tx_create = Create.generate(
|
||||
[alice.public_key], [([user_pk], 100)], assets=[{"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}]
|
||||
@ -183,7 +178,6 @@ def test_single_in_single_own_multiple_out_single_own_transfer(alice, b, user_pk
|
||||
# Single output
|
||||
# Multiple owners_after
|
||||
def test_single_in_single_own_single_out_multiple_own_transfer(alice, b, user_pk, user_sk):
|
||||
|
||||
# CREATE divisible asset
|
||||
tx_create = Create.generate(
|
||||
[alice.public_key], [([user_pk], 100)], assets=[{"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}]
|
||||
@ -219,7 +213,6 @@ def test_single_in_single_own_single_out_multiple_own_transfer(alice, b, user_pk
|
||||
# Mix: one output with a single owners_after, one output with multiple
|
||||
# owners_after
|
||||
def test_single_in_single_own_multiple_out_mix_own_transfer(alice, b, user_pk, user_sk):
|
||||
|
||||
# CREATE divisible asset
|
||||
tx_create = Create.generate(
|
||||
[alice.public_key], [([user_pk], 100)], assets=[{"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}]
|
||||
@ -448,7 +441,6 @@ def test_muiltiple_in_mix_own_multiple_out_mix_own_transfer(alice, b, user_pk, u
|
||||
# Single output
|
||||
# Single owners_after
|
||||
def test_multiple_in_different_transactions(alice, b, user_pk, user_sk):
|
||||
|
||||
# CREATE divisible asset
|
||||
# `b` creates a divisible asset and assigns 50 shares to `b` and
|
||||
# 50 shares to `user_pk`
|
||||
@ -549,7 +541,6 @@ def test_threshold_same_public_key(alice, b, user_pk, user_sk):
|
||||
|
||||
|
||||
def test_sum_amount(alice, b, user_pk, user_sk):
|
||||
|
||||
# CREATE divisible asset with 3 outputs with amount 1
|
||||
tx_create = Create.generate(
|
||||
[alice.public_key],
|
||||
@ -575,7 +566,6 @@ def test_sum_amount(alice, b, user_pk, user_sk):
|
||||
|
||||
|
||||
def test_divide(alice, b, user_pk, user_sk):
|
||||
|
||||
# CREATE divisible asset with 1 output with amount 3
|
||||
tx_create = Create.generate(
|
||||
[alice.public_key], [([user_pk], 3)], assets=[{"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}]
|
||||
|
@ -52,7 +52,6 @@ metadata = {"units": 300, "type": "KG"}
|
||||
|
||||
|
||||
def test_zenroom_signing():
|
||||
|
||||
biolabs = generate_key_pair()
|
||||
version = "3.0"
|
||||
|
||||
|
@ -99,7 +99,6 @@ class TestBigchainApi(object):
|
||||
b.validate_transaction(tx)
|
||||
|
||||
def test_write_transaction(self, b, user_sk, user_pk, alice, create_tx):
|
||||
|
||||
asset1 = {"data": "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4"}
|
||||
|
||||
tx = Create.generate([alice.public_key], [([alice.public_key], 1)], assets=[asset1]).sign([alice.private_key])
|
||||
|
@ -315,7 +315,6 @@ def test_write_config():
|
||||
),
|
||||
)
|
||||
def test_database_envs(env_name, env_value, config_key, monkeypatch):
|
||||
|
||||
monkeypatch.setattr("os.environ", {env_name: env_value})
|
||||
planetmint.config_utils.autoconfigure()
|
||||
|
||||
|
@ -155,7 +155,6 @@ def test_valid_election_votes_received(b_mock, valid_upsert_validator_election,
|
||||
|
||||
@pytest.mark.bdb
|
||||
def test_valid_election_conclude(b_mock, valid_upsert_validator_election, ed25519_node_keys):
|
||||
|
||||
# Node 0: cast vote
|
||||
tx_vote0 = gen_vote(valid_upsert_validator_election, 0, ed25519_node_keys)
|
||||
|
||||
@ -214,7 +213,6 @@ def test_valid_election_conclude(b_mock, valid_upsert_validator_election, ed2551
|
||||
|
||||
@pytest.mark.abci
|
||||
def test_upsert_validator(b, node_key, node_keys, ed25519_node_keys):
|
||||
|
||||
if b.get_latest_block()["height"] == 0:
|
||||
generate_block(b)
|
||||
|
||||
@ -343,6 +341,6 @@ def test_get_validator_update(b, node_keys, node_key, ed25519_node_keys):
|
||||
|
||||
def reset_validator_set(b, node_keys, height):
|
||||
validators = []
|
||||
for (node_pub, _) in node_keys.items():
|
||||
for node_pub, _ in node_keys.items():
|
||||
validators.append({"public_key": {"type": "ed25519-base64", "value": node_pub}, "voting_power": 10})
|
||||
b.store_validator_set(height, validators)
|
||||
|
@ -168,7 +168,9 @@ def test_create_tx_no_fulfills(b, create_tx, alice):
|
||||
tx = create_tx.to_dict()
|
||||
tx["inputs"][0]["fulfills"] = {"transaction_id": "a" * 64, "output_index": 0}
|
||||
tx = Transaction.from_dict(tx).sign([alice.private_key]).to_dict()
|
||||
validate_raises(tx)
|
||||
# Schema validation does not lookup inputs. this is only done by the node with DB/consensus context
|
||||
# validate_raises(tx)
|
||||
validate(tx)
|
||||
|
||||
|
||||
def test_transfer_has_inputs(user_sk, signed_transfer_tx, alice):
|
||||
@ -259,3 +261,89 @@ def test_validate_version(b, create_tx, alice):
|
||||
create_tx._id = None
|
||||
create_tx.sign([alice.private_key])
|
||||
validate_raises(create_tx)
|
||||
|
||||
|
||||
def test_upgrade_issue_validation(b):
|
||||
tx_dict = {
|
||||
"inputs": [
|
||||
{
|
||||
"owners_before": ["HY2gviZVW1fvsshx21kRCcGUJFBKQwf37xA959cTNFzP"],
|
||||
"fulfills": None,
|
||||
"fulfillment": "pGSAIPWt56ud3H3z0qf6hPKcMsJtOSc_goPAo3AXkH8T4mzAgUBuGTrhGQQ0oePAgxC_9pHNWzHiykddAuhMSnSDoatPExkDp2nAmq8D6pvc3ECqMUUj04GBEq2aROmAylDBKrgG",
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"public_keys": ["6G8TmxcbRgYuQviBg9Us5h4B8D94fNJ4kbMMKRwmY5sy"],
|
||||
"condition": {
|
||||
"details": {
|
||||
"type": "ed25519-sha-256",
|
||||
"public_key": "6G8TmxcbRgYuQviBg9Us5h4B8D94fNJ4kbMMKRwmY5sy",
|
||||
},
|
||||
"uri": "ni:///sha-256;jf_gG_7GnA7bTzelkz_Du2kMHzw7OS20TVNHD8XZSq4?fpt=ed25519-sha-256&cost=131072",
|
||||
},
|
||||
"amount": "10",
|
||||
},
|
||||
{
|
||||
"public_keys": ["CwHvbpvaWQu9wBuVVLRsc2rxUcGM7j1tR3RsVPWtgbXj"],
|
||||
"condition": {
|
||||
"details": {
|
||||
"type": "ed25519-sha-256",
|
||||
"public_key": "CwHvbpvaWQu9wBuVVLRsc2rxUcGM7j1tR3RsVPWtgbXj",
|
||||
},
|
||||
"uri": "ni:///sha-256;4VrA0c8Pvb4DA7Bvrx7or0JBKExRCfWyKSFiLYxpr7A?fpt=ed25519-sha-256&cost=131072",
|
||||
},
|
||||
"amount": "10",
|
||||
},
|
||||
{
|
||||
"public_keys": ["HY2gviZVW1fvsshx21kRCcGUJFBKQwf37xA959cTNFzP"],
|
||||
"condition": {
|
||||
"details": {
|
||||
"type": "ed25519-sha-256",
|
||||
"public_key": "HY2gviZVW1fvsshx21kRCcGUJFBKQwf37xA959cTNFzP",
|
||||
},
|
||||
"uri": "ni:///sha-256;-uhNj2-VQAytXDoz0z2n9PHUbJrzME4syF1EJCQ9cKw?fpt=ed25519-sha-256&cost=131072",
|
||||
},
|
||||
"amount": "10",
|
||||
},
|
||||
{
|
||||
"public_keys": ["2mxYGVViSHfTFJNydAKQQZaz8HAUjUSCDobPCF2q1hjk"],
|
||||
"condition": {
|
||||
"details": {
|
||||
"type": "ed25519-sha-256",
|
||||
"public_key": "2mxYGVViSHfTFJNydAKQQZaz8HAUjUSCDobPCF2q1hjk",
|
||||
},
|
||||
"uri": "ni:///sha-256;fTF2N2feWDvfEeMoTXss5KlWkYwnP4g2jUWKF2cmFRI?fpt=ed25519-sha-256&cost=131072",
|
||||
},
|
||||
"amount": "10",
|
||||
},
|
||||
{
|
||||
"public_keys": ["Dxy87xVCbGueayzmzo1csFFp47mhsvCYqX7dJJSTZmvB"],
|
||||
"condition": {
|
||||
"details": {
|
||||
"type": "ed25519-sha-256",
|
||||
"public_key": "Dxy87xVCbGueayzmzo1csFFp47mhsvCYqX7dJJSTZmvB",
|
||||
},
|
||||
"uri": "ni:///sha-256;Ga2y8alLY9f1tQ-Jvly68UZZ7csLLWbL7v7240_-uvo?fpt=ed25519-sha-256&cost=131072",
|
||||
},
|
||||
"amount": "10",
|
||||
},
|
||||
],
|
||||
"operation": "VALIDATOR_ELECTION",
|
||||
"metadata": None,
|
||||
"asset": {
|
||||
"data": {
|
||||
"public_key": {
|
||||
"value": "EEE57EEEE18BCC60B951C0672B09D70F52B20AC8C8DE9A191F956BB09083BF96",
|
||||
"type": "ed25519-base16",
|
||||
},
|
||||
"power": 10,
|
||||
"node_id": "a4ee5afed56efbfbc0d08c1d030b1d0291451c59",
|
||||
"seed": "99430bfa-26e7-422d-a816-37166a05818c",
|
||||
}
|
||||
},
|
||||
"version": "2.0",
|
||||
"id": "d2a58e4bb788e6594b4e8570b881b8b9859be34881fd4cba40b49481b0af2e98",
|
||||
}
|
||||
tx = Transaction.from_dict(tx_dict, False)
|
||||
print(tx)
|
||||
|
@ -24,7 +24,6 @@ def test_get_assets_with_missing_text_search(client):
|
||||
|
||||
@pytest.mark.bdb
|
||||
def test_get_assets_tendermint(client, b, alice):
|
||||
|
||||
# test returns empty list when no assets are found
|
||||
res = client.get(ASSETS_ENDPOINT + "?search=abc")
|
||||
assert res.json == []
|
||||
@ -45,7 +44,6 @@ def test_get_assets_tendermint(client, b, alice):
|
||||
|
||||
@pytest.mark.bdb
|
||||
def test_get_assets_limit_tendermint(client, b, alice):
|
||||
|
||||
# create two assets
|
||||
assets1 = [{"data": multihash(marshal({"msg": "abc 1"}))}]
|
||||
assets2 = [{"data": multihash(marshal({"msg": "abc 2"}))}]
|
||||
|
@ -48,7 +48,6 @@ def test_get_metadata_tendermint(client, b, alice):
|
||||
|
||||
@pytest.mark.bdb
|
||||
def test_get_metadata_limit_tendermint(client, b, alice):
|
||||
|
||||
# create two assets
|
||||
assets1 = [{"data": multihash(marshal({"msg": "abc 1"}))}]
|
||||
meta1 = multihash(marshal({"key": "meta 1"}))
|
||||
|
@ -327,7 +327,6 @@ def test_post_invalid_transaction(
|
||||
|
||||
@pytest.mark.abci
|
||||
def test_post_transfer_transaction_endpoint(client, user_pk, user_sk, posted_create_tx):
|
||||
|
||||
transfer_tx = Transfer.generate(posted_create_tx.to_inputs(), [([user_pk], 1)], asset_ids=[posted_create_tx.id])
|
||||
transfer_tx = transfer_tx.sign([user_sk])
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user