diff --git a/src/ar_http_iface.erl b/src/ar_http_iface.erl index 2857a2880..dac75037c 100644 --- a/src/ar_http_iface.erl +++ b/src/ar_http_iface.erl @@ -1596,6 +1596,34 @@ add_external_tx_test() -> TXID = TX#tx.id, ?assertEqual([TXID], (ar_storage:read_block(B1, ar_node:get_hash_list(Node)))#block.txs). +%% @doc Test adding transactions to a block. +add_external_tx_with_tags_test() -> + ar_storage:clear(), + [B0] = ar_weave:init([]), + Node = ar_node:start([], [B0]), + reregister(Node), + Bridge = ar_bridge:start([], Node), + reregister(http_bridge_node, Bridge), + ar_node:add_peers(Node, Bridge), + TX = ar_tx:new(<<"DATA">>), + TaggedTX = + TX#tx { + tags = + [ + {<<"TEST_TAG1">>, <<"TEST_VAL1">>}, + {<<"TEST_TAG2">>, <<"TEST_VAL2">>} + ] + }, + send_new_tx({127, 0, 0, 1, 1984}, TaggedTX), + receive after 1000 -> ok end, + ar_node:mine(Node), + receive after 1000 -> ok end, + [B1Hash|_] = ar_node:get_blocks(Node), + B1 = ar_storage:read_block(B1Hash, ar_node:get_hash_list(Node)), + TXID = TaggedTX#tx.id, + ?assertEqual([TXID], B1#block.txs), + ?assertEqual(TaggedTX, ar_storage:read_tx(hd(B1#block.txs))). + %% @doc Test getting transactions find_external_tx_test() -> ar_storage:clear(), diff --git a/src/ar_node_tests.erl b/src/ar_node_tests.erl index 1a66357d2..00e71f846 100644 --- a/src/ar_node_tests.erl +++ b/src/ar_node_tests.erl @@ -714,6 +714,26 @@ wallet_two_transaction_test_() -> ?AR(500) = ar_node:get_balance(Node1, Pub3) end}. +%% @doc Wallet0 -> Wallet1 { with tags } | mine | check +mine_tx_with_key_val_tags_test() -> + ar_storage:clear(), + {Priv1, Pub1} = ar_wallet:new(), + {_Priv2, Pub2} = ar_wallet:new(), + TX = ar_tx:new(Pub2, ?AR(1), ?AR(9000), <<>>), + SignedTX = ar_tx:sign(TX, Priv1, Pub1), + B0 = ar_weave:init([{ar_wallet:to_address(Pub1), ?AR(10000), <<>>}], 8), + Node1 = ar_node:start([], B0), + Node2 = ar_node:start([Node1], B0), + ar_node:add_peers(Node1, Node2), + ar_storage:write_tx([SignedTX]), + ar_node:add_tx(Node1, SignedTX), + timer:sleep(300), + ar_node:mine(Node1), % Mine B1 + timer:sleep(1000), + BHL = [B1Hash|_] = ar_node:get_blocks(Node2), + #block { txs = TXs } = ar_storage:read_block(B1Hash, BHL), + ?assertEqual(ar_storage:read_tx(TXs), [SignedTX]). + %% @doc Wallet1 -> Wallet2 | Wallet1 -> Wallet3 | mine | check %% @doc Wallet1 -> Wallet2 | Wallet1 -> Wallet3 | mine | check single_wallet_double_tx_before_mine_test_() ->