コード例 #1
0
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": ""
    }
コード例 #2
0
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"] = ""
コード例 #3
0
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
コード例 #4
0
ファイル: algonim_asa.py プロジェクト: cusma/algonim
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)
コード例 #5
0
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
コード例 #6
0
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
コード例 #7
0
 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)
コード例 #8
0
ファイル: Algorand.py プロジェクト: shyich03/tree-backend
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))
コード例 #9
0
    "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)
コード例 #10
0
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)
コード例 #11
0
    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']