Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions algokit-utils-py
Submodule algokit-utils-py added at 816b54
107 changes: 107 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
@@ -1 +1,108 @@
from algokit_utils.beta.algorand_client import (
AlgorandClient,
AssetCreateParams,
AssetOptInParams,
AssetTransferParams,
PayParams,
)


# Conectar el cliente a Localnet: (AlgorandClient )
algorand = AlgorandClient.default_local_net()


# Dispenser:
dispenser = algorand.account.dispenser()
# Muestra la address del dispenser:
print("Dispenser: ", dispenser.address)


# Generar accounts aleatoria:
creator = algorand.account.random()
# Muestra la address de la account creada:
print("Creator: ", creator.address)
# Muestra informacion detallada de la address de la account creada:
#print("Creator info: ", algorand.account.get_information(creator.address))

# Fondear la address creator con algos: (Primera trx)
algorand.send.payment(
PayParams(
sender = dispenser.address,
receiver = creator.address,
amount = 10_000_000 # <=> 10 Algos
)
)
#print("Creator amount: ", algorand.account.get_information(creator.address))

# Crear un asset:
sent_txn = algorand.send.asset_create(
AssetCreateParams(
sender = creator.address, # <-- Creador del Asset.
total = 100, # <-- Cantidad de Tokens a crear.
asset_name = "JereToken", # <-- Nombre del Token a crear.
unit_name = "JDB", # <-- Nombre Unit del Token a crear.
)
)

# Obtener el Asset ID: (extraer confimacion e index del asset [])
asset_id = sent_txn["confirmation"]["asset-index"]
#print("Asset ID: ", asset_id)

# Crear nueva cuenta para transferir el asset: (Receiver)
receiver_acc = algorand.account.random()
# Fondear nueva cuenta para transferir el asset: (Receiver)
algorand.send.payment(
PayParams(
sender = dispenser.address,
receiver = receiver_acc.address,
amount = 10_000_000 # <=> 10 Algos
)
)
#print("Creator amount: ", algorand.account.get_information(receiver_acc.address))


# Envviar el asset Token de: Creator al Receiver
"""
asset_transfer = algorand.send.asset_transfer(
AssetTransferParams(
sender = creator.address,
receiver = receiver_acc.address,
asset_id = asset_id,
amount = 10,
)
)
"""
# Transferencia Atomica para hacer OptIn (New tx group):

group_tx = algorand.new_group()

group_tx.add_asset_opt_in(
AssetOptInParams(
sender = receiver_acc.address,
asset_id = asset_id,
)
)

group_tx.add_payment(
PayParams(
sender = receiver_acc.address,
receiver = creator.address,
amount = 1_000_000 # <=> 1 Algos
)
)

group_tx.add_asset_transfer(
AssetTransferParams(
sender = creator.address,
receiver = receiver_acc.address,
asset_id = asset_id,
amount = 10,
)
)

group_tx.execute()

print(algorand.account.get_information(receiver_acc.address))

print("Receiver Account asset balance: ", algorand.account.get_information(receiver_acc.address)["assets"][0]["amount"])
print("Creator Account asset balance: ", algorand.account.get_information(creator.address)["assets"][0]["amount"])
14 changes: 14 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[tool.poetry]
name = "codespace-algorand"
version = "0.1.0"
description = ""
authors = ["4A657265 <jeremiasblanco.dev@gmail.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.12"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"