-
Notifications
You must be signed in to change notification settings - Fork 5
/
swap_ton_to_jetton.py
53 lines (40 loc) · 1.35 KB
/
swap_ton_to_jetton.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import time
from tonutils.client import TonapiClient
from tonutils.jetton.dex.dedust import Asset, Factory, PoolType, SwapParams, VaultNative
from tonutils.wallet import WalletV4R2
# API key for accessing the Tonapi (obtainable from https://tonconsole.com)
API_KEY = ""
# Mnemonic phrase used to connect the wallet
MNEMONIC: list[str] = []
# Address of the Jetton Master contract
JETTON_MASTER_ADDRESS = "EQ..."
# Amount of TON to swap (in TON)
SWAP_TON_AMOUNT = 1
async def main() -> None:
client = TonapiClient(api_key=API_KEY)
wallet, _, _, _ = WalletV4R2.from_mnemonic(client, MNEMONIC)
pool = await Factory(client).get_pool(
pool_type=PoolType.VOLATILE,
assets=[
Asset.native(),
Asset.jetton(JETTON_MASTER_ADDRESS)
],
)
swap_params = SwapParams(
deadline=int(time.time() + 60 * 5),
recipient_address=wallet.address,
)
tx_hash = await wallet.transfer(
destination=VaultNative.ADDRESS,
amount=SWAP_TON_AMOUNT + 0.25,
body=VaultNative.create_swap_payload(
amount=int(SWAP_TON_AMOUNT * 1e9),
pool_address=pool.address,
swap_params=swap_params
),
)
print("Successfully swapped TON to Jetton!")
print(f"Transaction hash: {tx_hash}")
if __name__ == "__main__":
import asyncio
asyncio.run(main())