MultiversXPythonSDK交易与代币操作Skill mvx_sdk_py_transactions

这个技能提供了使用MultiversX Python SDK进行交易创建和代币管理的全面指南,包括转账、代币发行、交易解析和中继交易等功能。适用于区块链开发者、DApp开发者和智能合约工程师,帮助快速上手MultiversX生态系统。关键词:MultiversX, Python SDK, 交易, 代币, 区块链, DApp开发, 智能合约, 转账, 发行, 解析。

DApp开发 0 次安装 0 次浏览 更新于 3/21/2026

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)

最佳实践

  1. 使用TokenTransfer助手:正确处理小数位
  2. 检查发行结果:代币获得随机后缀
  3. 中继交易:发送者和中继者必须在同一分片
  4. 燃气估算:控制器通常处理基本估算