Python Solana Package
Project description
PySolana
PySolana is a Python library for dealing with Solana blockchain.
Installation
Use the package manager pip to install pysolana.
pip install pysolana
Usage
There are 2 modules in pysolana
:
api
includes all RPC API Solana methods.sol
includes classSol
that used to simply manage Solana accounts withPython3
api
You can see all RPC API Solana methods here
Example:
from pysolana.api import *
print(getTransactionCount()) # 555309062
sol
Keypairs
To generate new keypair you need to create Sol
object in code.
from pysolana.sol import *
keypair = Sol(chain='devnet')
print(keypair.seedphrase) # 12-words seedphrase that used to import keypair
print(keypair.pubkey) # Solana account address
To import keypair put seedphrase in __init__
method.
from pysolana.sol import *
kp1 = Sol(chain='devnet')
kp2 = Sol(seedphrase=kp1.seedphrase, chain='testnet')
print(kp1.pubkey == kp2.pubkey) # True
One keypair can be used in different chains.
There are some methods in Sol
class:
- set_chain
- balance
- airdrop
- transfer
- create_stake_account
- delegate_stake
- deactivate_stake
- withdraw_stake
set_chain
set_chain(chain)
method used to change keypair chain.
from pysolana.sol import *
kp = Sol(chain='mainnet') # Created keypair
kp.balance() # Check balance in mainnet
kp.set_chain('testnet') # Set chain to testnet
kp.balance() # Check balance in testnet
balance
balance()
method used to get balance of account.
from pysolana.sol import *
kp = Sol(seedphrase=my_seedphrase, chain='mainnet') # Created keypair
print(kp.balance()) # 15.0
airdrop
aidrop(amount, wait=True)
method used to request airdrop of SOL tokens in devnet.
from pysolana.sol import *
kp = Sol(chain='devnet') # Created keypair
print(kp.balance()) # 0.0
kp.airdrop(100) # Request airdrop to account in devnet.
print(kp.balance()) # 100.0
kp.airdrop(100, wait=False)
# Here I can do anything without waiting transaction to confirm
print(kp.balance()) # 100.0
# Transaction is not confirmed in chain and balance() showing only confirmed balance.
transfer
transfer(to, amount, wait=True)
method used to send SOL tokens to another account.
from pysolana.sol import *
kp1 = Sol(chain='devnet') # Created first keypair
kp2 = Sol(chain='devnet') # Created second keypair
kp1.airdrop(100)
kp2.airdrop(100)
print(kp1.balance()) # 100.0
print(kp2.balance()) # 100.0
kp1.transfer(kp2, 10) # 'to' can be Sol object or str pubkey
print(kp1.balance()) # 89.999995
print(kp2.balance()) # 110.0
kp2.transfer(kp1.pubkey, 10)
print(kp1.balance()) # 99.999995
print(kp2.balance()) # 99.999995
kp1.transfer(kp2, 50, wait=False)
# Here I can do anything without waiting transaction to confirm
print(kp1.balance()) # 99.999995
print(kp2.balance()) # 99.999995
# Transaction is not confirmed in chain and balance() showing only confirmed balance.
create_stake_account
create_stake_account(amount)
method used to create new stake account.
from pysolana.sol import *
kp = Sol(chain='devnet') # Create new keypair
kp.airdrop(200)
stake_account = kp.create_stake_account(100) # Creating new stake account
print(stake_account) # Dhyi75k1aA4Rfn99gh4XCT64yxvGzCpu81ZE4iDe3RZz
print(kp.balance()) # 99.99999
delegate_stake
delegate_stake(stake_account, vote_account)
method used to delegate stake at account stake_account
for validator vote_account
.
from pysolana.sol import *
kp = Sol(chain='devnet') # Create new keypair
kp.airdrop(1000)
stake_account = kp.create_stake_account(100) # Creating new stake account
kp.delegate_stake(stake_account, '5MMCR4NbTZqjthjLGywmeT66iwE9J9f7kjtxzJjwfUx2') # Delegating ALL stake to validator
deactivate_stake
deactivate_stake(stake_account)
method used to deactivate stake from stake_account
from pysolana.sol import *
kp = Sol(chain='devnet') # Create new keypair
kp.airdrop(1000)
stake_account = kp.create_stake_account(100) # Creating new stake account with 100 SOL staked
kp.delegate_stake(stake_account, '5MMCR4NbTZqjthjLGywmeT66iwE9J9f7kjtxzJjwfUx2') # Delegating ALL stake to validator
print(kp.balance()) # 899.999985
kp.deactivate_stake(stake_account) # Deactivating ALL stake from stake_account
# Stake transactions take some time to proceed in blockchain, so you need to wait until your SOL tokens back to account
# Some time later:
print(kp.balance()) # 999.99998
withdraw_stake
withdraw_stake(stake_account, amount)
method used to withdraw stake dividends from stake_account
from pysolana.sol import *
kp = Sol(chain='devnet') # Create new keypair
kp.airdrop(1000)
stake_account = kp.create_stake_account(100) # Creating new stake account with 100 SOL staked
kp.delegate_stake(stake_account, '5MMCR4NbTZqjthjLGywmeT66iwE9J9f7kjtxzJjwfUx2') # Delegating ALL stake to validator
print(kp.balance()) # 899.999985
# Some time later:
kp.withdraw_stake(stake_account, 3)
print(kp.balance()) # 902.99998
License
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.