name: mvx_sdk_py_transactions description: 为MultiversX Python SDK创建交易和代币操作。
MultiversX SDK-Py 交易与代币
这个技能涵盖了使用控制器和工厂创建交易。
转账
原生EGLD转账
controller = entrypoint.create_transfers_controller()
tx = controller.create_transaction_for_transfer(
sender=account,
nonce=account.get_nonce_then_increment(),
receiver=receiver_address,
native_amount=1000000000000000000
)
ESDT代币转账
from multiversx_sdk import TokenTransfer
tx = controller.create_transaction_for_transfer(
sender=account,
nonce=account.get_nonce_then_increment(),
receiver=receiver_address,
token_transfers=[
TokenTransfer.fungible_from_amount("TOKEN-123456", 100.5, 18)
]
)
NFT/SFT转账
tx = controller.create_transaction_for_transfer(
sender=account,
nonce=account.get_nonce_then_increment(),
receiver=receiver_address,
token_transfers=[
TokenTransfer.nft_from_amount("NFT-123456", 1, 1)
]
)
代币管理
发行可替代代币
controller = entrypoint.create_token_management_controller()
tx = controller.create_transaction_for_issuing_fungible(
sender=account,
nonce=account.get_nonce_then_increment(),
token_name="MyToken",
token_ticker="MTK",
initial_supply=1000000000000,
num_decimals=6,
can_freeze=False,
can_wipe=True,
can_pause=False,
can_change_owner=True,
can_upgrade=True,
can_add_special_roles=True
)
tx_hash = entrypoint.send_transaction(tx)
outcome = controller.await_completed_issue_fungible(tx_hash)
print(outcome[0].token_identifier)
交易解析
解码交易数据
from multiversx_sdk import TransactionDecoder
decoded = TransactionDecoder.decode_transaction(tx)
print(decoded.function)
print(decoded.arguments)
解析事件
tx_on_network = entrypoint.get_transaction(tx_hash)
for event in tx_on_network.logs.events:
print(f"事件: {event.identifier}")
for topic in event.topics:
print(f"主题: {topic.hex()}")
中继交易(V3)
tx = Transaction(
sender=user_address,
receiver=receiver_address,
relayer=relayer_address,
gas_limit=150000, # 中继交易额外50k
data=b"endpoint@args"
)
tx.signature = user_account.sign_transaction(tx)
tx.relayer_signature = relayer_account.sign_transaction(tx)
entrypoint.send_transaction(tx)
最佳实践
- 使用
TokenTransfer助手:正确处理小数位 - 检查发行结果:代币获得随机后缀
- 中继交易:发送者和中继者必须在同一分片
- 燃气估算:控制器通常处理基本估算