# `listissuances` RPC. Initially there is only one asset, "bitcoin", and one # issuance (the initial issuance). print("") print("5. Multi-asset support") print("Existing assets: ", e1.dumpassetlabels()) assert len(e1.dumpassetlabels()) == 1 assert len(e1.listissuances()) == 1 assert e1.listissuances()[0]['assetlabel'] == "bitcoin" assert e1.listissuances( )[0]['assetamount'] == 21000000 # 21M initial free coins assert e1.listissuances()[0]['tokenamount'] == 0 # no reissuance tokens assert e1.dumpassetlabels() == e2.dumpassetlabels() print("5a. Issue a new asset, with reissuance token") # We can also issue our own assets, 1 asset and 1 reissuance token in this case issue = e1.issueasset(1, 1) asset = issue["asset"] # From there you can look at the issuances you have in your wallet assert len(e1.listissuances()) == 2 assert len(e2.listissuances() ) == 1 ## e2 does not recognize this as a wallet issuance new_issuances = [i for i in e1.listissuances() if 'assetlabel' not in i] assert len(new_issuances) == 1 assert new_issuances[0]['assetamount'] == 1 assert new_issuances[0]['tokenamount'] == 1 assert len(e2.listissuances()) == 1 ## ANDREW print("5b. Reissue the asset using the reissuance token.") # If you gave `issueasset` a reissuance token argument greater than 0 # you can also reissue the base asset. This will appear as a second issuance
alice.start(["-validatepegin=0"]) carol.start(["-validatepegin=0"]) alice.connect_to(carol) carol.connect_to(alice) alice.createwallet("wallet") carol.createwallet("wallet") alice.rescanblockchain() # 1b. Split the initial coins so that both sides have some (but Alice has more) alice.sendmany("", { alice.getnewaddress(): 10000 for x in range(0, 10) }) alice.sendtoaddress(carol.getnewaddress(), 100000) alice.generatetoaddress(1, alice.getnewaddress()) # 1c. Issue 1000 units of a new asset. No reissuance tokens. Send them # all to the second node. issue = alice.issueasset(1000, 0) alice.sendtoaddress(address=carol.getnewaddress(), amount=1000, assetlabel=issue["asset"]) alice.generatetoaddress(1, alice.getnewaddress()) sync_all([alice, carol]) # 1d. Move the coins around on each wallet so that they do not share # any wallet transaction. (Otherwise they may fill in each others' # UTXO data, which is harmless but makes the tutorial harder to # follow.) alice.sendtoaddress(alice.getnewaddress(), alice.getbalance()["bitcoin"], "", "", True) carol.sendtoaddress(carol.getnewaddress(), carol.getbalance()["bitcoin"], "", "", True) carol.sendtoaddress(address=carol.getnewaddress(), amount=1000, assetlabel=issue["asset"]) sync_all([alice, carol]) alice.generatetoaddress(1, alice.getnewaddress()) sync_all([alice, carol])