diff --git a/main.py b/main.py index 8b137891..1c8152df 100644 --- a/main.py +++ b/main.py @@ -1 +1,170 @@ +from algokit_utils.beta.algorand_client import ( + AlgorandClient, + AssetCreateParams, + AssetOptInParams, + AssetTransferParams, + PayParams +) +algorand = AlgorandClient.default_local_net() + +dispenser = algorand.account.dispenser() +print("Dispenser Address: ", dispenser.address) + +creator = algorand.account.random() +print("Creator Address: ", creator.address) + +print(algorand.account.get_information(creator.address)) + +algorand.send.payment( + PayParams( + sender=dispenser.address, + receiver=creator.address, + amount=10_000_000 + ) +) + +print(algorand.account.get_information(creator.address)) + +sent_txn = algorand.send.asset_create( + AssetCreateParams( + sender=creator.address, + total=333, + asset_name="BUILDH3R", + unit_name="H3R", + ) +) + +asset_id = sent_txn["confirmation"]["asset-index"] +print(asset_id) + +receiver_account = algorand.account.random() +print(receiver_account.address) + +algorand.send.payment( + PayParams( + sender=dispenser.address, + receiver=receiver_account.address, + amount=10_000_000 + ) +) + +algorand.send.asset_opt_in( + AssetOptInParams( + sender=receiver_account.address, + asset_id=asset_id + ) +) + +algorand.send.asset_transfer( + AssetTransferParams( + sender=creator.address, + receiver=receiver_account.address, + asset_id=asset_id, + amount=111 + ) +) + +print(algorand.account.get_information(receiver_account.address)) + +print("\n") + +# Task Submission + +# 1. Create new accounts +account1 = algorand.account.random() +print(account1.address) +account2 = algorand.account.random() +print(account2.address) +account3 = algorand.account.random() +print(account3.address) + + +algorand.send.payment( + PayParams( + sender=dispenser.address, + receiver=account1.address, + amount=10_000_000 + ) +) +print(algorand.account.get_information(account1.address)) + +algorand.send.payment( + PayParams( + sender=dispenser.address, + receiver=account2.address, + amount=10_000_000 + ) +) +print(algorand.account.get_information(account2.address)) + +algorand.send.payment( + PayParams( + sender=dispenser.address, + receiver=account3.address, + amount=10_000_000 + ) +) +print(algorand.account.get_information(account3.address)) + +# 2. Create a new asset + +sent_second_txn = algorand.send.asset_create( + AssetCreateParams( + sender=creator.address, + asset_name="BUILDHER", + unit_name="HER", + total=333 + ) +) + +second_asset_id = sent_second_txn["confirmation"]["asset-index"] +print("Created asset Id: ", second_asset_id) + + + +# 3. Opt-in to the asset and transfer to created accounts with inner transactions + +algorand.new_group().add_asset_opt_in( + AssetOptInParams( + sender=account1.address, + asset_id=second_asset_id + ) +).add_asset_transfer( + AssetTransferParams( + sender=creator.address, + receiver=account1.address, + asset_id=second_asset_id, + amount=100 + ) +).add_asset_opt_in( + AssetOptInParams( + sender=account2.address, + asset_id=second_asset_id + ) +).add_asset_transfer( + AssetTransferParams( + sender=creator.address, + receiver=account2.address, + asset_id=second_asset_id, + amount=100 + ) +).add_asset_opt_in( + AssetOptInParams( + sender=account3.address, + asset_id=second_asset_id + ) +).add_asset_transfer( + AssetTransferParams( + sender=creator.address, + receiver=account3.address, + asset_id=second_asset_id, + amount=100 + ) +).execute() + +# 5. Check the balance of accounts + +print(algorand.account.get_information(account1.address)) +print(algorand.account.get_information(account2.address)) +print(algorand.account.get_information(account3.address)) diff --git a/mainx.py b/mainx.py new file mode 100644 index 00000000..e7f73e36 --- /dev/null +++ b/mainx.py @@ -0,0 +1,106 @@ +from algokit_utils.beta.algorand_client import ( + AlgorandClient, + AssetCreateParams, + AssetOptInParams, + AssetTransferParams, + PayParams +) + +algorand = AlgorandClient.default_local_net() + +# Task Submission 2 + +# Create new account +creator = algorand.account.random() + +print("Account Address: ", creator.address) + +# Create dispenser address +dispenser = algorand.account.dispenser() + +algorand.send.payment( + PayParams( + sender=dispenser.address, + receiver=creator.address, + amount=10_000_000 + ) +) + +print(algorand.account.get_information(creator.address)) + +# Create asset + +sent_txn = algorand.send.asset_create( + AssetCreateParams( + sender=creator.address, + total=1_000, + asset_name="Buildh3r", + unit_name="Bh3r", + manager=creator.address, + clawback=creator.address, + freeze=creator.address, + reserve=creator.address + ) +) + +asset_identity = sent_txn['confirmation']['asset-index'] +print("Asset ID: ", asset_identity) + +receiver_addr = algorand.account.random() + +print("Receiver Address: ", receiver_addr.address) + +algorand.send.payment( + PayParams( + sender=dispenser.address, + receiver=receiver_addr.address, + amount=10_000_000 + ) +) + +algorand.account.get_information(receiver_addr.address) + +group_txn = algorand.new_group() + +group_txn.add_asset_opt_in( + AssetOptInParams( + sender=receiver_addr.address, + asset_id=asset_identity + ) +) + +group_txn.add_asset_transfer( + AssetTransferParams( + sender=creator.address, + receiver=receiver_addr.address, + asset_id=asset_identity, + amount=10 + ) +) + + +group_txn.execute() + +print("Receiver Account state: ", algorand.account.get_information(receiver_addr.address)) + +print("Creator Account Asset: ", algorand.account.get_information(creator.address)['assets'][0]['amount']) +print("Receiver Account Asset: ", algorand.account.get_information(receiver_addr.address)['assets'][0]['amount']) +print("\n") + +group_txn1 = algorand.new_group() + +group_txn1.add_asset_transfer( + AssetTransferParams( + sender=creator.address, + amount=5, + receiver=creator.address, + asset_id=asset_identity, + clawback_target=receiver_addr.address + ) +) + +group_txn1.execute() + +print("Creator Account Asset: ", algorand.account.get_information(creator.address)['assets'][0]['amount']) +print("Receiver Account Asset: ", algorand.account.get_information(receiver_addr.address)['assets'][0]['amount']) +print("\n") \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..de6193f8 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,14 @@ +[tool.poetry] +name = "codespace-algorand" +version = "0.1.0" +description = "" +authors = ["D3stinn3 "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.12" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api"