def default_asset_creation_txn(context, total): context.total = int(total) params = context.acl.suggested_params() context.last_round = params.first context.pk = context.accounts[0] asset_name = "asset" unit_name = "unit" params.fee = 1 context.txn = transaction.AssetConfigTxn(context.pk, params, total=context.total, default_frozen=True, unit_name=unit_name, asset_name=asset_name, manager=context.pk, reserve=context.pk, freeze=context.pk, clawback=context.pk) context.expected_asset_info = { "defaultfrozen": False, "unitname": "unit", "assetname": "asset", "managerkey": context.pk, "reserveaddr": context.pk, "freezeaddr": context.pk, "clawbackaddr": context.pk, "creator": context.pk, "total": context.total, "decimals": 0, "metadatahash": None, "url": "" }
def no_manager_txn(context): context.txn = transaction.AssetConfigTxn(context.pk, context.acl.suggested_params(), index=context.asset_index, reserve=context.pk, clawback=context.pk, freeze=context.pk, strict_empty_address_check=False) context.expected_asset_info["managerkey"] = ""
def create_succint_ipi_record(IPI_id, cc, rl, rh, from_date, to_date, share, territories, account, private_key) : # get suggested parameters params = acl.suggested_params() gen = params["genesisID"] gh = params["genesishashb64"] last_round = params["lastRound"] fee = params["fee"] # create transaction2 # Configure fields for creating the asset. data = { "sender": account, "fee": fee, "first": last_round, "last": last_round+100, "gh": gh, "total": int(( 1 / share ) * 100), # (1 / share)*100 = total "decimals": 0, "default_frozen": False, "unit_name": cc+rl+rh, # CC, RL, RH "asset_name": IPI_id, # IP - base/name number? - 32 bytes "manager": account, "reserve": account, "freeze": account, "clawback": account, "url" : from_date+"-"+to_date, "metadata_hash" : countrytovector(country_list, territories).encode(), "flat_fee": True } if "WO" in territories: del data["metadata_hash"] if "ZW" in territories: data["url"] = data["url"] + "-ZW" txn = transaction.AssetConfigTxn(**data) # sign transaction stxn = txn.sign(private_key) # send them over network sent = acl.send_transaction(stxn) # print txid # print(sent) # wait for confirmation txinfo = wait_for_confirmation( acl, sent) asset_id = txinfo["txresults"]["createdasset"] asset_info = acl.asset_info(asset_id) # print(json.dumps(asset_info, indent=4)) return asset_id
def asa_pieces_create(algod_client, asset_creator, total): """HELP asa_pieces_create: (AlgodClient, dict, int) - Returns AlgoNim ASA Pieces Asset ID. """ assert type(total) == int # Get network suggested params for transactions. params = algod_client.suggested_params() first_valid = params.first last_valid = first_valid + 1000 gh = params.gh min_fee = params.min_fee assert min_fee <= 1000 data = { "sender": asset_creator['pk'], "fee": min_fee, "first": first_valid, "last": last_valid, "gh": gh, "total": total, "default_frozen": False, "unit_name": 'ALGONIMP', "asset_name": 'AlgoNim Piece', "manager": asset_creator['pk'], "reserve": asset_creator['pk'], "freeze": '', "clawback": '', "url": 'https://github.com/cusma/algonim', "flat_fee": True, "strict_empty_address_check": False, "decimals": 0 } txn = transaction.AssetConfigTxn(**data) stxn = txn.sign(asset_creator['sk']) txid = algod_client.send_transaction(stxn) print("Transaction ID:", txid) wait_for_tx_confirmation(algod_client, txid) try: ptx = algod_client.pending_transaction_info(txid) asa_id = ptx['asset-index'] print("AlgoNim ASA Piece ID: {}".format(asa_id)) return asa_id except Exception as e: print(e)
def create_external_ipi_record(account, private_key, url): # get suggested parameters params = acl.suggested_params() gen = params["genesisID"] gh = params["genesishashb64"] last_round = params["lastRound"] fee = params["fee"] # create transaction2 # Configure fields for creating the asset. data = { "sender": account, "fee": fee, "first": last_round, "last": last_round+100, "gh": gh, "total": 1, "decimals": 0, "default_frozen": False, "unit_name": "IPIs", # CC, RL, RH "asset_name": "IPI_external", # IP - base/name number? - 32 bytes "manager": account, "reserve": account, "freeze": account, "clawback": account, "url" : "https://bit.ly/37hQKQa", "flat_fee": True } txn = transaction.AssetConfigTxn(**data) # sign transaction stxn = txn.sign(private_key) # send them over network sent = acl.send_transaction(stxn) # print txid # print(sent) # wait for confirmation txinfo = wait_for_confirmation( acl, sent) asset_id = txinfo["txresults"]["createdasset"] asset_info = acl.asset_info(asset_id) # print(json.dumps(asset_info, indent=4)) return asset_id
def create_ipi_name(account, private_key): # get suggested parameters params = acl.suggested_params() gen = params["genesisID"] gh = params["genesishashb64"] last_round = params["lastRound"] fee = params["fee"] # create transaction # Configure fields for creating the asset. data = { "sender": account, "fee": fee, "first": last_round, "last": last_round+100, "gh": gh, "total": 1, "decimals": 0, "default_frozen": False, "unit_name": "41161231", # ipi_name_number "asset_name": "IPI:I-001450581-6;N;PA", # IPI:<ipi_base_number>;<IPI_type>;<name_type> - base/name number? - 32 bytes "manager": account, "reserve": account, "freeze": account, "clawback": account, "url": "Mario Rossi", # IPI_name "flat_fee": True } txn = transaction.AssetConfigTxn(**data) # sign transaction stxn = txn.sign(private_key) # send them over network sent = acl.send_transaction(stxn) # print txid # print(sent) # wait for confirmation txinfo = wait_for_confirmation( acl, sent) asset_id = txinfo["txresults"]["createdasset"] return asset_id
def test_serialize_assetconfig(self): address = "BH55E5RMBD4GYWXGX5W5PJ5JAHPGM5OXKDQH5DC4O2MGI7NW4H6VOE4CP4" gh = "SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=" txn = transaction.AssetConfigTxn(address, 10, 322575, 323575, gh, address, 1234, manager=address, reserve=address, freeze=address, clawback=address) golden = ("iKRhcGFyhKFjxCAJ+9J2LAj4bFrmv23Xp6kB3mZ111Dgfoxcdphkfbbh" + "/aFmxCAJ+9J2LAj4bFrmv23Xp6kB3mZ111Dgfoxcdphkfbbh/aFtxCAJ" + "+9J2LAj4bFrmv23Xp6kB3mZ111Dgfoxcdphkfbbh/aFyxCAJ+9J2LAj4" + "bFrmv23Xp6kB3mZ111Dgfoxcdphkfbbh/aRjYWlkgqFjxCAJ+9J2LAj4" + "bFrmv23Xp6kB3mZ111Dgfoxcdphkfbbh/aFpzQTSo2ZlZc0OzqJmds4A" + "BOwPomdoxCBIY7UYpLPITsgQ8i1PEIHLD3HwWaesIN7GL39w5Qk6IqJs" + "ds4ABO/3o3NuZMQgCfvSdiwI+Gxa5r9t16epAd5mdddQ4H6MXHaYZH22" + "4f2kdHlwZaRhY2Zn") self.assertEqual(encoding.msgpack_encode(txn), golden)
def certifacateDeletionDemo(hash): algod_address = "https://testnet-algorand.api.purestake.io/ps1" algod_token = "" headers = { "X-API-Key": "5K5TIs5wJtaqBNHNfOyya2mxDj9mQBEkYAqWgu09", } algod_client = algod.AlgodClient(algod_token, algod_address, headers) status = algod_client.status() print(json.dumps(status, indent=4)) passphrase = "thunder fun scout myself talk repeat hurry miracle puppy run vocal vicious shove fever idea lens above diesel action pulp before cigar horror above mass" private_key = mnemonic.to_private_key(passphrase) my_address = mnemonic.to_public_key(passphrase) print("My address: {}".format(my_address)) account_info = algod_client.account_info(my_address) print("Account balance: {} microAlgos".format(account_info.get('amount'))) c = Certificate("tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp") params = algod_client.suggested_params() first = params.get("lastRound") last = first + 1000 gen = params.get("genesisID") gh = params.get("genesishashb64") min_fee = params.get("minFee") data = { "sender": my_address, "fee": min_fee, "first": first, "last": last, "gh": gh, "total": 1000, "decimals": 0, "default_frozen": False, "unit_name": "aa", "asset_name": "bb", "metadata_hash": hash, "manager": my_address, "reserve": my_address, "freeze": my_address, "clawback": my_address, "url": "https://path/to/my/asset/details", "flat_fee": True } txn = transaction.AssetConfigTxn(**data) stxn = txn.sign(private_key) print("Asset Creation") txid = algod_client.send_transaction( stxn, headers={'content-type': 'application/x-binary'}) txinfo = wait_for_confirmation(algod_client, txid) print(txinfo.keys()) print(txinfo) asset_id = txinfo["txresults"]["createdasset"] account_info = algod_client.account_info(my_address) account_info = algod_client.account_info(my_address) holding = None if 'assets' in account_info: holding = account_info['assets'].get(str(asset_id)) if not holding: data = { "sender": my_address, "fee": min_fee, "first": first, "last": last, "gh": gh, "receiver": my_address, "amt": 0, "index": asset_id, "flat_fee": True } print("Asset Option In") txn = transaction.AssetTransferTxn(**data) stxn = txn.sign(private_key) txid = algod_client.send_transaction( stxn, headers={'content-type': 'application/x-binary'}) print(txid) wait_for_confirmation(txid) account_info = algod_client.account_info(my_address) print(json.dumps(account_info['assets'][str(asset_id)], indent=4)) data = { "sender": my_address, "fee": min_fee, "first": first, "last": last, "gh": gh, "receiver": my_address, "amt": 10, "index": asset_id, "flat_fee": True } print("Asset Transfer") txn = transaction.AssetTransferTxn(**data) stxn = txn.sign(private_key) txid = algod_client.send_transaction( stxn, headers={'content-type': 'application/x-binary'}) print(txid) wait_for_confirmation(algod_client, txid) account_info = algod_client.account_info(my_address) print(json.dumps(account_info['assets'][str(asset_id)], indent=4)) # Revoking an Asset data = { "sender": my_address, "fee": min_fee, "first": first, "last": last, "gh": gh, "receiver": my_address, "amt": 10, "index": asset_id, "revocation_target": my_address, "flat_fee": True } print("Asset Revoke") txn = transaction.AssetTransferTxn(**data) stxn = txn.sign(private_key) txid = algod_client.send_transaction( stxn, headers={'content-type': 'application/x-binary'}) print(txid) wait_for_confirmation(algod_client, txid) account_info = algod_client.account_info(my_address) print(json.dumps(account_info['assets'][str(asset_id)], indent=4)) account_info = algod_client.account_info(my_address) print(json.dumps(account_info['assets'][str(asset_id)], indent=4))
"gh": gh, "total": 1000, "default_frozen": False, "unit_name": "LATINUM", "asset_name": "latinum", "manager": accounts[2]['pk'], "reserve": accounts[2]['pk'], "freeze": accounts[2]['pk'], "clawback": accounts[2]['pk'], "url": "https://path/to/my/asset/details", "flat_fee": True, "decimals": 0 } # Construct Asset Creation transaction txn = transaction.AssetConfigTxn(**data) # Sign with secret key of creator stxn = txn.sign(accounts[1]['sk']) # Send the transaction to the network and retrieve the txid. txid = algod_client.send_transaction(stxn) print(txid) # Retrieve the asset ID of the newly created asset by first # ensuring that the creation transaction was confirmed, # then pulling account info of the creator and grabbing the # asset with the max asset ID. # Wait for the transaction to be confirmed wait_for_tx_confirmation(txid)
def create_asset_destroy_txn(context): context.txn = transaction.AssetConfigTxn(context.pk, context.acl.suggested_params(), index=context.asset_index, strict_empty_address_check=False)
def createCertificate(self,hash,asset_name, asset_url, amount, receive_address): c = Certificate("tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp", "tmp") params = self.algod_client.suggested_params() # pprint(params.__dict__) first = params.first last = params.last gen = params.gen gh = params.gh min_fee = params.min_fee data = { "sender": self.my_address, "fee": min_fee, "first": first, "last": last, "gh": gh, "total": amount, "decimals": 0, "default_frozen": False, "unit_name": asset_name, "asset_name": asset_name, "metadata_hash": bytearray(hash.digest()), "manager": self.my_address, "reserve": self.my_address, "freeze": self.my_address, "clawback": self.my_address, "url": asset_url, "flat_fee": True } txn = transaction.AssetConfigTxn(**data) stxn = txn.sign(self.private_key) print("Asset Creation") txid = self.algod_client.send_transaction(stxn) txinfo = Algorand.wait_for_confirmation(self.algod_client, txid) #print(txinfo.keys()) pprint(("txinfo", txinfo)) # asset_id = txinfo.txn. # account_info = self.algod_client.account_info(self.my_address) # pprint(account_info) print("The hash of certificate is: {}".format(hash.hexdigest())) print("Certificate recreated") # this is not yet working, not being called in the working version if receive_address: index = txn.index params = self.algod_client.suggested_params() # pprint(params.__dict__) first = params.first last = params.last gen = params.gen gh = params.gh min_fee = params.min_fee data = { "sender": self.my_address, "fee": min_fee, "first": first, "last": last, "gh": gh, "receiver": receive_address, "amt": amount, "index": index, "flat_fee": True } ttxn = transaction.AssetTransferTxn(**data) sttxn = ttxn.sign(self.private_key) print("Asset Transfer") ttxid = self.algod_client.send_transaction(sttxn) ttxinfo = Algorand.wait_for_confirmation(self.algod_client, ttxid) pprint(("ttxinfo", ttxinfo)) return txinfo['asset-index']