pass # 1b. Start bitcoind, then elementsd. Initially, the bitcoind may be warming up and # inaccessible over RPC. elementsd can detect this case and will stall until the # bitcoind is warmed up. print( "1b. Attempting to start validatepegin daemons with a bitcoind (will succeed)" ) bitcoin.start() e1.start() e2.start() # Connect the nodes. This can also be accomplished with the `connect=` config # parameter, but when starting two nodes simultaneously, this is unreliable. e1.connect_to(e2) e2.connect_to(e1) # 1c. Create a wallet on the Elements nodes. This is needed since version 0.21 # of the daemon; previously a wallet was created by default if one does not # already exist. print("1c. Creating wallets on all daemons") # We have configured this regtest chain to start with 21M bitcoins, which are initally # in a single OP_TRUE output. All Elements wallets recognize OP_TRUE outputs as their # own (this differs from Bitcoin), so the 21M bitcoins are immediately available for # use. This can be disabled by setting `anyonecanspend_aremine=0` in the daemon config. # # This is useful for testing basic functionality and for blockchains that have no peg, # since every blockchain needs a default "policy asset". This policy asset is used # for transaction fees (which are required for anti-DoS purposes). Also, asset
"elements", args.elementsd_dir + "/elementsd", "contrib/assets_tutorial/elements2.conf", not args.no_cleanup, ) ## 1. Start nodes print ("1. Start nodes and setup scenario") # 1a. Turn on both nodes. Disable -validatepegin as we will just swap the # initialcoins asset with a newly issued asset. Using the peg would # be an inessential distraction. # 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())