Algorand SDK in Python
Project description
py-algorand-sdk
A python library for interacting with the Algorand network.
Installation
Run $ pip3 install py-algorand-sdk
to install the package.
Alternatively, choose a distribution file, and run $ pip3 install [file name]
.
Quick start
Here's a simple example you can run without a node.
from algosdk import account, encoding # generate an account private_key, address = account.generate_account() print("Private key:", private_key) print("Address:", address) # check if the address is valid if encoding.is_valid_address(address): print("The address is valid!") else: print("The address is invalid.")
Node setup
Follow the instructions in Algorand's developer resources to install a node on your computer.
Running example.py
Before running example.py, start kmd:
$ ./goal kmd start -d [data directory]
Next, create a wallet and an account:
$ ./goal wallet new [wallet name] -d [data directory]
$ ./goal account new -d [data directory] -w [wallet name]
Visit the Algorand dispenser and enter the account address to fund your account.
Next, in params.py, either update the tokens and addresses, or provide a path to the data directory.
You're now ready to run example.py!
More examples
using the Wallet class
Instead of always having to keep track of handles, IDs, and passwords for wallets, create a Wallet object to manage everything for you.
import params from algosdk import kmd from algosdk.wallet import Wallet # create a kmd client kcl = kmd.KMDClient(params.kmd_token, params.kmd_address) # create a wallet object wallet = Wallet("wallet_name", "wallet_password", kcl) # get wallet information info = wallet.info() print("Wallet name:", info["wallet"]["name"]) # create an account address = wallet.generate_key() print("New account:", address) # delete the account delete = wallet.delete_key(address) print("Account deleted:", delete)
backing up a wallet with mnemonic
import params from algosdk import kmd, mnemonic from algosdk.wallet import Wallet # create a kmd client kcl = kmd.KMDClient(params.kmd_token, params.kmd_address) # create a wallet object wallet = Wallet("wallet_name", "wallet_password", kcl) # get the wallet's master derivation key mdk = wallet.export_master_derivation_key() print("Master Derivation Key:", mdk) # get the backup phrase backup = mnemonic.from_master_derivation_key(mdk) print("Wallet backup phrase:", backup)
You can also back up accounts using mnemonic.from_private_key().
recovering a wallet using a backup phrase
import params from algosdk import kmd, mnemonic # get the master derivation key from the mnemonic backup = "such chapter crane ugly uncover fun kitten duty culture giant skirt reunion pizza pill web monster upon dolphin aunt close marble dune kangaroo ability merit" mdk = mnemonic.to_master_derivation_key(backup) # create a kmd client kcl = kmd.KMDClient(params.kmd_token, params.kmd_address) # recover the wallet by passing mdk when creating a wallet kcl.create_wallet("wallet_name", "wallet_password", master_deriv_key=mdk)
You can also recover accounts using mnemonic.to_private_key().
writing transactions to file
If you don't want to send your transactions now, you can write them to file. This works with both signed and unsigned transactions.
import params from algosdk import algod, kmd, transaction sender = "sender_address" receiver = "receiver_address" # create an algod and kmd client acl = algod.AlgodClient(params.algod_token, params.algod_address) kcl = kmd.KMDClient(params.kmd_token, params.kmd_address) # get suggested parameters params = acl.suggested_params() gen = params["genesisID"] gh = params["genesishashb64"] last_round = params["lastRound"] fee = params["fee"] # create a transaction amount = 10000 txn = transaction.PaymentTxn(sender, fee, last_round, last_round+100, gh, receiver, amount) # write to file txns = [txn] transaction.write_to_file([txn], "pathtofile.tx")
We can also read transactions after writing them to file.
# read from file read_txns = transaction.retrieve_from_file("pathtofile.tx")
manipulating multisig transactions
import params from algosdk import account, transaction, algod, encoding acl = algod.AlgodClient(params.algod_token, params.algod_address) # generate three accounts private_key_1, account_1 = account.generate_account() private_key_2, account_2 = account.generate_account() private_key_3, account_3 = account.generate_account() # create a multisig account version = 1 # multisig version threshold = 2 # how many signatures are necessary msig = transaction.Multisig(version, threshold, [account_1, account_2]) # get suggested parameters params = acl.suggested_params() gen = params["genesisID"] gh = params["genesishashb64"] last_round = params["lastRound"] fee = params["fee"] # create a transaction sender = msig.address() amount = 10000 txn = transaction.PaymentTxn(sender, fee, last_round, last_round+100, gh, account_3, amount) # create a SignedTransaction object mtx = transaction.MultisigTransaction(txn, msig) # sign the transaction mtx.sign(private_key_1) mtx.sign(private_key_2) # print encoded transaction print(encoding.msgpack_encode(mtx))
License
py-algorand-sdk is licensed under a MIT license. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size py_algorand_sdk-1.0.0-py3-none-any.whl (27.3 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size py-algorand-sdk-1.0.0.tar.gz (24.2 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for py_algorand_sdk-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c3989c7023aa65d957a5bc79ec676c91407130b2615a1461be74474c2a4e736 |
|
MD5 | e162a553c3ffc7c7778ce3c385fb9942 |
|
BLAKE2-256 | 612bb19d9b513749599efdc669f0dd358a67195314fb986daf69fc4f8c9b9648 |