No project description provided
Project description
TicTon Python SDK
This is the Python SDK for Tic Ton Oracle on TON blockchain, which is a pure decentralized oracle protocol that can provide latest price with high precision guraranteed by incentive mechanism.
Installation
Install the SDK using pip:
pip install ticton
(Optional) Setting the Environment Variables
The SDK requires several environment variables for its operation.You can set the environment variables using the export command in your shell. Here are the variables you need to set:
TICTON_WALLET_MNEMONICS: A space-separated list of mnemonics used for wallet authentication and operations.TICTON_WALLET_VERSION: Specifies the wallet version. Supported values are "v2r1", "v2r2", "v3r1", "v3r2", "v4r1", "v4r2", "hv2". The default is "v4r2".TICTON_ORACLE_ADDRESS: The address of the oracle smart contract on the TON blockchain.TICTON_TONCENTER_API_KEY: An API key for accessing TON blockchain data. You can apply for an API key at @tonapibot.TICTON_THRESHOLD_PRICE: A float value that sets a threshold price, with a default of 0.7.
export TICTON_WALLET_MNEMONICS="word1 word2 word3 ... wordN"
export TICTON_WALLET_VERSION="v4r2"
export TICTON_ORACLE_ADDRESS="your_oracle_address"
export TICTON_TONCENTER_API_KEY="your_api_key"
export TICTON_THRESHOLD_PRICE=0.7
Initialization
If you have already set the environment variables by using the export command, you can easily initialize the ticton client using the following code:
from ticton import TicTonAsyncClient
client = await TicTonAsyncClient.init()
Alternatively, if you prefer not to set global environment variables, you can pass these directly to the initialization function:
from ticton import TicTonAsyncClient
client = await TicTonAsyncClient.init(
wallet_mnemonics="word1 word2 word3 ... wordN",
wallet_version="v4r2",
oracle_address="your_oracle_address",
toncenter_api_key="your_api_key",
threshold_price=0.7
)
Usage Example
Use Case - Ticton Oracle Automation
Tick
tick will open a alarm with the given price and timeout, the total amount of baseAsset and quoteAsset will be calculated automatically.
Parameters
price: float- The price of the alarm quoteAsset/baseAsset
timeout: int (optional, default=1000)- The timeout of the alarm in seconds
extra_ton: float (optional, default=0.1)- The extra ton to be sent to the oracle
Example
Assume the token pair is TON/USDT, the price is 2.5 USDT per TON
price = 2.5
result = await client.tick(price)
Ring
ring will close the alarm with the given alarm_id
Parameters
alarm_id: int- The alarm_id of the alarm to be closed
Example
alarm_id = 1
result = await client.ring(alarm_id)
Wind
wind will arbitrage the alarm with the given alarm_id, buy_num and new_price
Parameters
alarm_id: int- The alarm_id of the alarm to be arbitrage
buy_num: int- The number of tokens to be bought, at least 1.
new_price: float- The new price of the alarm quoteAsset/baseAsset
Example
Assume the token pair is TON/USDT, the price is 2.5 USDT per TON. The alarm is opened with 1 TON and 2.5 USDT with index 123. The new price is 5 USDT per TON, the buy_num is 1.
alarm_id = 123
buy_num = 1
new_price = 5
result = await client.wind(alarm_id, buy_num, new_price)
Subscribe
subscribe will subscribe the oracle's transactions, handle the transactions and call the given callbacks.
Parameters
-
on_tick_success: function- The callback function to be called when the tick transaction is successful, with the following parameters:
watchmaker: strbase_asset_price: floatnew_alarm_id: intcreated_at: int
- The callback function to be called when the tick transaction is successful, with the following parameters:
-
on_ring_success: function- The callback function to be called when the ring transaction is successful, with the following parameters:
alarm_id: intcreated_at: intorigin: strreceiver: stramount: int
- The callback function to be called when the ring transaction is successful, with the following parameters:
-
on_wind_success: function- The callback function to be called when the wind transaction is successful, with the following parameters:
timekeeper: stralarm_id: intnew_base_asset_price: floatremain_scale: intnew_alarm_id: intcreated_at: int
- The callback function to be called when the wind transaction is successful, with the following parameters:
-
start_lt: int, "oldest", "latest" (optional, default="oldest")
- From when to yield transaction, default to replay the transaction from the oldest transaction
Examples
async def on_tick_success(params: OnTickSuccessParams):
print(f"Tick success", params.model_dump())
async def on_ring_success(params: OnRingSuccessParams):
print(f"Tick success", params.model_dump())
async def on_wind_success(params: OnWindSuccessParams):
print(f"Tick success", params.model_dump())
await client.subscribe(on_tick_success, on_ring_success, on_wind_success)
Development Guide
Install
-
Make sure poetry installed on your machine.
you may need to set the
PATHenvironment variable to include the Poetry binary directory, e.g.export PATH="$HOME/.local/bin:$PATH"curl -sSL https://install.python-poetry.org | python3 -
-
Install plugin for poetry
poetry self add poetry-bumpversion poetry self add poetry-plugin-export
-
Install dependencies
make install -
Start your virtual environment
poetry shell -
Run tests
poetry run pytest
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ticton-0.1.31.tar.gz.
File metadata
- Download URL: ticton-0.1.31.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.0 Linux/6.5.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb65037cbfead435121e0df44983d335ccabfbde4c07d633b1c80d27bcf71abd
|
|
| MD5 |
6abd8ef36d9bf8ae0191dccc9668b77c
|
|
| BLAKE2b-256 |
b60f2916887437afffcb31a10070623c81d758d89e441959ef317f3e48ade97f
|
File details
Details for the file ticton-0.1.31-py3-none-any.whl.
File metadata
- Download URL: ticton-0.1.31-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.0 Linux/6.5.0-1015-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae1579651e5600ec738e888c66330455c7e0ecab038d0938f0859a37ac37c904
|
|
| MD5 |
2375b72c0b7d3375077c064070d4519f
|
|
| BLAKE2b-256 |
f41833818333f41bf9b03c4fd28d81db570ff50750da5a38b791ffdc0107a244
|