Python client for The Open Network
Project description
Introduction
This library allows you to work with the TON blockchain API from Python.
Features:
- Creating and importing wallet
- Getting wallets balance
- Getting transactions of any wallet
- Transfering coins
- Executing methods of smart-contracts
How to install:
pip install ton
If you have an illegal instruction error then you need to build libtonlibjson by yourself:
git clone https://github.com/psylopunk/ton && cd ton
chmod +x build_tonlib.sh && ./build_tonlib.sh # docker is needed
Getting started:
>>> from ton import TonlibClient
>>> # Initiate module
>>> client = TonlibClient()
>>> await client.init_tonlib()
>>> # Wallet generation
>>> wallet = await client.create_wallet()
>>> wallet
Wallet<EQCi-D5OSmueD61_ZCw7D_tcMMjB8E5e5AECZT7lCM2Gm6O1>
>>> # Get a word list
>>> seed = await wallet.export()
>>> # Importing wallet
>>> wallet = await client.import_wallet(seed)
>>> # Get saved wallet from Keystore
>>> path = wallet.path
>>> wallet = await client.find_wallet(path)
>>> # Getting an address
>>> wallet.account_address.account_address
EQCi-D5OSmueD61_ZCw7D_tcMMjB8E5e5AECZT7lCM2Gm6O1
>>> # Viewing transactions
>>> txs = await wallet.get_transactions()
>>> in_msg = txs[0].in_msg
>>> in_msg.source.account_address # Sender
EQBPhcJanCxCYc-eiSxUVcm7I4-PfHODzBNhY1Cd3R5IP041
>>> in_msg.destination.account_address # Recipient
EQCi-D5OSmueD61_ZCw7D_tcMMjB8E5e5AECZT7lCM2Gm6O1
>>> from ton.utils import from_nano
>>> from_nano(int(in_msg.value)) # Amount
0.6
>>> # Sending transaction
>>> from ton.utils import to_nano
>>> await wallet.transfer('EQBPhcJanCxCYc-eiSxUVcm7I4-PfHODzBNhY1Cd3R5IP041', to_nano(0.3), comment='test')
{
"@type": "ok",
"@extra": "1648032761.9897776:0:0.6654941473285754"
}
>>> # View account
>>> account = await client.find_account('EQBPhcJanCxCYc-eiSxUVcm7I4-PfHODzBNhY1Cd3R5IP041')
>>> # View transactions of an account
>>> txs = await account.get_transactions() # Returns a list of TL Objects (transactions)
[
{
'@type': 'raw.transaction', # An example of 'in' transaction
'data': 'XXXXXX',
'fee': '0',
'in_msg': {
'@type': 'raw.message',
'body_hash': 'XXXXXX',
'created_lt': '28669675000002',
'destination': {'@type': 'accountAddress',
'account_address': 'XXXXXX'},
'fwd_fee': '666672',
'ihr_fee': '0',
'msg_data': {'@type': 'msg.dataRaw',
'body': 'XXXXXX',
'init_state': ''},
'source': {'@type': 'accountAddress',
'account_address': 'XXXXXX'},
'value': '1000000000'
},
'other_fee': '0',
'out_msgs': [], # When it is 'in' transaction then there will be an array of msgs like 'in_msg'
'storage_fee': '0',
'transaction_id': {'@type': 'internal.transactionId',
'hash': 'XXXXXX',
'lt': '28669675000003'},
'utime': 1654954281 # Timestamp
}
]
More documentation here
Troubleshooting
Found a bug? Or just improvments? -- Read more about this in Troubleshooting
Dependencies
The TON library relies on these excellent libraries:
crc16
- Library for calculating CRC16poetry
- Python packaging and dependency management made easyrequests
- HTTP interface for pythonujson
- Ultra fast JSON encoder and decodered25519
- Public-key signature system
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.
Source Distribution
ton-0.19.tar.gz
(9.6 MB
view hashes)
Built Distribution
ton-0.19-py3-none-any.whl
(9.7 MB
view hashes)