mesh-transaction

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Mesh SDK Transaction Skill

Mesh SDK 交易开发指南

AI-assisted Cardano transaction building using
MeshTxBuilder
from
@meshsdk/transaction
.
借助
@meshsdk/transaction
中的
MeshTxBuilder
实现AI辅助的Cardano交易构建。

Package Info

包信息

bash
npm install @meshsdk/transaction
bash
npm install @meshsdk/transaction

or

npm install @meshsdk/core # includes transaction + wallet + provider
undefined
npm install @meshsdk/core # 包含交易、钱包与提供器功能
undefined

Quick Reference

快速参考

TaskMethod Chain
Send ADA
txIn() -> txOut() -> changeAddress() -> complete()
Mint tokens (Plutus)
mintPlutusScriptV2() -> mint() -> mintingScript() -> mintRedeemerValue() -> ...
Mint tokens (Native)
mint() -> mintingScript() -> ...
Script spending
spendingPlutusScriptV2() -> txIn() -> txInScript() -> txInDatumValue() -> txInRedeemerValue() -> ...
Stake delegation
delegateStakeCertificate(rewardAddress, poolId)
Withdraw rewards
withdrawal(rewardAddress, coin) -> withdrawalScript() -> withdrawalRedeemerValue()
Governance vote
vote(voter, govActionId, votingProcedure)
DRep registration
drepRegistrationCertificate(drepId, anchor?, deposit?)
任务方法调用链
发送ADA
txIn() -> txOut() -> changeAddress() -> complete()
铸造代币(Plutus)
mintPlutusScriptV2() -> mint() -> mintingScript() -> mintRedeemerValue() -> ...
铸造代币(原生)
mint() -> mintingScript() -> ...
脚本消费
spendingPlutusScriptV2() -> txIn() -> txInScript() -> txInDatumValue() -> txInRedeemerValue() -> ...
质押委托
delegateStakeCertificate(rewardAddress, poolId)
提取奖励
withdrawal(rewardAddress, coin) -> withdrawalScript() -> withdrawalRedeemerValue()
治理投票
vote(voter, govActionId, votingProcedure)
DRep注册
drepRegistrationCertificate(drepId, anchor?, deposit?)

Constructor Options

构造函数选项

typescript
import { MeshTxBuilder } from '@meshsdk/transaction';

const txBuilder = new MeshTxBuilder({
  fetcher?: IFetcher,      // For querying UTxOs (e.g., BlockfrostProvider)
  submitter?: ISubmitter,  // For submitting transactions
  evaluator?: IEvaluator,  // For script execution cost estimation
  serializer?: IMeshTxSerializer,  // Custom serializer
  selector?: IInputSelector,       // Custom coin selection
  isHydra?: boolean,       // Hydra L2 mode (zero fees)
  params?: Partial<Protocol>,  // Custom protocol parameters
  verbose?: boolean,       // Enable logging
});
typescript
import { MeshTxBuilder } from '@meshsdk/transaction';

const txBuilder = new MeshTxBuilder({
  fetcher?: IFetcher,      // 用于查询UTXO(例如BlockfrostProvider)
  submitter?: ISubmitter,  // 用于提交交易
  evaluator?: IEvaluator,  // 用于估算脚本执行成本
  serializer?: IMeshTxSerializer,  // 自定义序列化器
  selector?: IInputSelector,       // 自定义UTXO选择器
  isHydra?: boolean,       // Hydra二层网络模式(零手续费)
  params?: Partial<Protocol>,  // 自定义协议参数
  verbose?: boolean,       // 启用日志输出
});

Completion Methods

完成方法

MethodAsyncBalancedUse Case
complete()
YesYesProduction - auto coin selection, fee calculation
completeSync()
NoNoTesting - requires manual inputs/fee
completeUnbalanced()
NoNoPartial build for inspection
completeSigning()
NoN/AAdd signatures after complete()
方法是否异步是否自动平衡使用场景
complete()
生产环境 - 自动UTXO选择、手续费计算
completeSync()
测试环境 - 需要手动输入UTXO与手续费
completeUnbalanced()
用于检查的部分交易构建
completeSigning()
不适用在complete()之后添加签名

Files

相关文件

  • TRANSACTION.md - Complete API reference
  • PATTERNS.md - Common transaction recipes
  • TROUBLESHOOTING.md - Error solutions
  • TRANSACTION.md - 完整API参考文档
  • PATTERNS.md - 常见交易实现示例
  • TROUBLESHOOTING.md - 错误解决方案

Key Concepts

核心概念

Fluent API

链式API

All methods return
this
for chaining:
typescript
txBuilder
  .txIn(hash, index)
  .txOut(address, amount)
  .changeAddress(addr)
  .complete();
所有方法均返回
this
以支持链式调用:
typescript
txBuilder
  .txIn(hash, index)
  .txOut(address, amount)
  .changeAddress(addr)
  .complete();

Script Versions

脚本版本

  • spendingPlutusScriptV1/V2/V3()
    - Set before
    txIn()
    for script inputs
  • mintPlutusScriptV1/V2/V3()
    - Set before
    mint()
    for Plutus minting
  • withdrawalPlutusScriptV1/V2/V3()
    - Set before
    withdrawal()
    for script withdrawals
  • votePlutusScriptV1/V2/V3()
    - Set before
    vote()
    for script votes
  • spendingPlutusScriptV1/V2/V3()
    - 在
    txIn()
    之前调用,用于指定脚本输入
  • mintPlutusScriptV1/V2/V3()
    - 在
    mint()
    之前调用,用于Plutus脚本铸造
  • withdrawalPlutusScriptV1/V2/V3()
    - 在
    withdrawal()
    之前调用,用于脚本提取奖励
  • votePlutusScriptV1/V2/V3()
    - 在
    vote()
    之前调用,用于脚本投票

Data Types

数据类型

Datum and redeemer values accept three formats:
  • "Mesh"
    (default) - Mesh Data type
  • "JSON"
    - Raw constructor format
  • "CBOR"
    - Hex-encoded CBOR string
Datum与Redeemer支持三种格式:
  • "Mesh"
    (默认)- Mesh数据类型
  • "JSON"
    - 原始构造格式
  • "CBOR"
    - 十六进制编码的CBOR字符串

Reference Scripts

引用脚本

Use
*TxInReference()
methods to reference scripts stored on-chain instead of including them in the transaction (reduces tx size/fees).
使用
*TxInReference()
方法引用链上存储的脚本,无需将脚本包含在交易中(可减小交易大小并降低手续费)。

Important Notes

重要注意事项

  1. Change address required -
    complete()
    fails without
    changeAddress()
  2. Collateral required - Script transactions need
    txInCollateral()
  3. Order matters - Call
    spendingPlutusScriptV2()
    BEFORE
    txIn()
    for script inputs
  4. Coin selection - Provide UTxOs via
    selectUtxosFrom()
    for auto-selection
  1. 必须设置找零地址 - 未调用
    changeAddress()
    complete()
    会执行失败
  2. 需要设置抵押UTXO - 脚本交易必须调用
    txInCollateral()
  3. 调用顺序至关重要 - 对于脚本输入,需先调用
    spendingPlutusScriptV2()
    再调用
    txIn()
  4. UTXO选择 - 通过
    selectUtxosFrom()
    提供UTXO以启用自动选择功能