Quick start
At first you have to import all necessary modules
from pynear.account import Account
Then you have to initialize Account
ACCOUNT_ID = "bob.near"
PRIVATE_KEY = "ed25519:..."
acc = Account(ACCOUNT_ID, PRIVATE_KEY)
Next step: check account balance
import asyncio
from pynear.dapps.core import NEAR
async def main():
await acc.startup()
print(await acc.get_balance() / NEAR)
print(await acc.get_balance("bob.near") / NEAR)
asyncio.run(main())
Next step: send 2 NEAR to bob.near
tr = await acc.send_money("bob.near", NEAR * 2)
print(tr.transaction.hash)
print(tr.logs)
Next step: send 2 NEAR to bob.near no waiting for transaction confirmation
transaction_hash = await acc.send_money("bob.near", NEAR * 2, nowait=True)
print(transaction_hash)
Next step: send 0.1 NEAR by phone number
tr = await acc.phone.send_near_to_phone("+15626200110", NEAR // 10)
print(tr.transaction.hash)
Summary
from pynear.account import Account
import asyncio
from pynear.dapps.core import NEAR
ACCOUNT_ID = "bob.near"
PRIVATE_KEY = "ed25519:..."
async def main():
acc = Account(ACCOUNT_ID, PRIVATE_KEY)
await acc.startup()
print(await acc.get_balance() / NEAR)
print(await acc.get_balance("bob.near") / NEAR)
tr = await acc.send_money("bob.near", NEAR * 2)
print(tr.transaction.hash)
print(tr.logs)
tr = await acc.phone.send_near_to_phone("+15626200911", NEAR // 10)
print(tr.transaction.hash)
asyncio.run(main())
Parallel requests
Only one parallel request can be made from one private key. All transaction calls execute sequentially. To make several parallel calls you need to use several private keys
Add 2 new full access keys:
acc = Account("bob.near", private_key1)
for i in range(2):
signer = InMemorySigner.from_random(AccountId("bob.near"), KeyType.ED25519)
await acc.add_full_access_public_key(str(signer.public_key))
print(signer.secret_key)
Now we can call transactions in parallel
acc = Account("bob.near", [private_key1, private_key2, private_key3])
# request time = count transactions / count public keys
tasks = [
asyncio.create_task(acc.send_money("alisa.near", 1)),
asyncio.create_task(acc.send_money("alisa.near", 1)),
asyncio.create_task(acc.send_money("alisa.near", 1)),
]
for t in task:
await t