我正在开发一个Python应用程序,我需要使用钱包版本v5r1(TON区块链)发送交易。主要要求是实现多发送交易,此钱包版本支持此功能。
我正在使用tonsdk库,但它似乎原生不支持v5r1。这是我需要实现的目标:
使用 v5r1 钱包格式创建交易消息。发送
单批处理多个交易(多次发送)。
我可以使用哪些步骤或库来实现此目的?有没有任何例子或替代方法? 此外,我希望获得有关如何正确处理 v5r1 钱包的 SEQNO 的指导。
这是我尝试过的代码示例(基于其他钱包版本):
from tonsdk.contract.wallet import Wallets, WalletVersionEnum
from tonsdk.utils import to_nano
mnemonics = "my seed phrase here".split(" ")
version = WalletVersionEnum.v5r1 # Targeted version
# Key and wallet generation
mnemonics, pub_k, priv_k, wallet = Wallets.from_mnemonics(
mnemonics=mnemonics,
version=version,
workchain=0
)
# Issue: tonsdk does not support WalletVersionEnum.v5r1
我可以使用哪些库或方法来处理 v5r1?如果tonsdk不支持,如何手动发送所需格式的交易?
我通过利用 tonutils 库解决了发送多笔交易和使用 v5 钱包 (WalletV5R1) 的问题。关键是利用了batch_transfer方法,它支持在一个操作中处理多个交易。
这是我的实现方式:
from tonutils.wallet.data import TransferData
from tonutils.client import ToncenterClient
from tonutils.wallet import WalletV5R1
async def main(recipient_address, amount, payload) -> None:
# Initialize Toncenter client
client = ToncenterClient(api_key=settings.API_KEY, is_testnet=False)
# Create a WalletV5R1 instance from mnemonic
wallet, public_key, private_key, mnemonic = WalletV5R1.from_mnemonic(client, [settings.SENDER_SEED_PHRASE])
# Prepare a list of transfer data
data_list = []
data_list.append(
TransferData(
destination=recipient_address,
amount=amount,
body=payload,
)
)
# Send a batch of transactions
tx_hash = await wallet.batch_transfer(
data_list=data_list
)
# Log success
logger.info("Successfully transferred!")
logger.info(f"Transaction hash: {tx_hash}")