mesh-wallet

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Mesh SDK Wallet Skill

Mesh SDK 钱包开发指南

AI-assisted Cardano wallet integration using
@meshsdk/wallet
.
借助
@meshsdk/wallet
实现AI辅助的Cardano钱包集成。

Package Info

包信息

bash
npm install @meshsdk/wallet
bash
npm install @meshsdk/wallet

or

or

npm install @meshsdk/core # includes wallet + transaction + provider
undefined
npm install @meshsdk/core # 包含钱包 + 交易 + 提供者模块
undefined

Two Wallet Types

两种钱包类型

TypeClassUse Case
Browser
MeshCardanoBrowserWallet
Web apps - connect to Eternl, Nami, Flint, etc.
Headless
MeshCardanoHeadlessWallet
Server-side, CLI, backend - from mnemonic/keys
类型类名适用场景
浏览器端
MeshCardanoBrowserWallet
Web应用 - 连接Eternl、Nami、Flint等钱包
无头端
MeshCardanoHeadlessWallet
服务器端、CLI、后端 - 基于助记词/密钥生成

Quick Reference

快速参考

Browser Wallet (CIP-30)

浏览器端钱包(CIP-30标准)

typescript
import { MeshCardanoBrowserWallet } from '@meshsdk/wallet';

// List installed wallets
const wallets = MeshCardanoBrowserWallet.getInstalledWallets();
// → [{ id: 'eternl', name: 'Eternl', icon: '...', version: '...' }, ...]

// Connect to wallet
const wallet = await MeshCardanoBrowserWallet.enable('eternl');

// Get addresses (Bech32)
const addresses = await wallet.getUsedAddressesBech32();
const changeAddr = await wallet.getChangeAddressBech32();
const stakeAddrs = await wallet.getRewardAddressesBech32();

// Get UTxOs and balance (Mesh format)
const utxos = await wallet.getUtxosMesh();
const balance = await wallet.getBalanceMesh();
const collateral = await wallet.getCollateralMesh();

// Sign and submit
const signedTx = await wallet.signTxReturnFullTx(unsignedTxHex);
const txHash = await wallet.submitTx(signedTx);

// Sign data (CIP-8)
const signature = await wallet.signData(address, 'Hello Cardano!');
typescript
import { MeshCardanoBrowserWallet } from '@meshsdk/wallet';

// 列出已安装的钱包
const wallets = MeshCardanoBrowserWallet.getInstalledWallets();
// → [{ id: 'eternl', name: 'Eternl', icon: '...', version: '...' }, ...]

// 连接钱包
const wallet = await MeshCardanoBrowserWallet.enable('eternl');

// 获取地址(Bech32格式)
const addresses = await wallet.getUsedAddressesBech32();
const changeAddr = await wallet.getChangeAddressBech32();
const stakeAddrs = await wallet.getRewardAddressesBech32();

// 获取UTxO和余额(Mesh格式)
const utxos = await wallet.getUtxosMesh();
const balance = await wallet.getBalanceMesh();
const collateral = await wallet.getCollateralMesh();

// 签名并提交交易
const signedTx = await wallet.signTxReturnFullTx(unsignedTxHex);
const txHash = await wallet.submitTx(signedTx);

// 签名数据(CIP-8标准)
const signature = await wallet.signData(address, 'Hello Cardano!');

Headless Wallet (Server-Side)

无头端钱包(服务器端)

typescript
import { MeshCardanoHeadlessWallet } from '@meshsdk/wallet';
import { BlockfrostProvider } from '@meshsdk/core';

const provider = new BlockfrostProvider('your-api-key');

// From mnemonic
const wallet = await MeshCardanoHeadlessWallet.fromMnemonic({
  mnemonic: ['word1', 'word2', ...],  // 24 words
  networkId: 0,  // 0 = testnet, 1 = mainnet
  walletAddressType: 'Base',  // 'Base' or 'Enterprise'
  fetcher: provider,
  submitter: provider,
});

// Same API as browser wallet
const address = await wallet.getChangeAddressBech32();
const utxos = await wallet.getUtxosMesh();
const signedTx = await wallet.signTxReturnFullTx(unsignedTxHex);
typescript
import { MeshCardanoHeadlessWallet } from '@meshsdk/wallet';
import { BlockfrostProvider } from '@meshsdk/core';

const provider = new BlockfrostProvider('your-api-key');

// 从助记词生成钱包
const wallet = await MeshCardanoHeadlessWallet.fromMnemonic({
  mnemonic: ['word1', 'word2', ...],  // 24个助记词
  networkId: 0,  // 0 = 测试网, 1 = 主网
  walletAddressType: 'Base',  // 'Base' 或 'Enterprise'
  fetcher: provider,
  submitter: provider,
});

// 与浏览器端钱包API一致
const address = await wallet.getChangeAddressBech32();
const utxos = await wallet.getUtxosMesh();
const signedTx = await wallet.signTxReturnFullTx(unsignedTxHex);

Files

相关文件

  • WALLET.md - Complete API reference
  • PATTERNS.md - Common wallet patterns
  • TROUBLESHOOTING.md - Error solutions
  • WALLET.md - 完整API参考文档
  • PATTERNS.md - 常见钱包集成模式
  • TROUBLESHOOTING.md - 错误解决方案

CIP-30 Methods

CIP-30标准方法

Standard wallet interface methods:
MethodReturnsDescription
getNetworkId()
number
0 = testnet, 1 = mainnet
getUtxos()
string[]
UTxOs in CBOR hex
getCollateral()
string[]
Collateral UTxOs in CBOR hex
getBalance()
string
Balance in CBOR hex
getUsedAddresses()
string[]
Addresses in hex
getUnusedAddresses()
string[]
Addresses in hex
getChangeAddress()
string
Address in hex
getRewardAddresses()
string[]
Stake addresses in hex
signTx(tx, partial)
string
Witness set in CBOR hex
signData(addr, data)
DataSignature
CIP-8 signature
submitTx(tx)
string
Transaction hash
标准钱包接口方法:
方法名返回值说明
getNetworkId()
number
0 = 测试网, 1 = 主网
getUtxos()
string[]
CBOR十六进制格式的UTxO列表
getCollateral()
string[]
CBOR十六进制格式的抵押品UTxO列表
getBalance()
string
CBOR十六进制格式的余额
getUsedAddresses()
string[]
十六进制格式的已使用地址列表
getUnusedAddresses()
string[]
十六进制格式的未使用地址列表
getChangeAddress()
string
十六进制格式的找零地址
getRewardAddresses()
string[]
十六进制格式的质押地址列表
signTx(tx, partial)
string
CBOR十六进制格式的见证集
signData(addr, data)
DataSignature
CIP-8标准签名
submitTx(tx)
string
交易哈希

Mesh Extensions

Mesh扩展方法

Enhanced methods for better developer experience:
MethodReturnsDescription
getUtxosMesh()
UTxO[]
UTxOs in Mesh format
getCollateralMesh()
UTxO[]
Collateral in Mesh format
getBalanceMesh()
Asset[]
Balance in Mesh format
getUsedAddressesBech32()
string[]
Bech32 addresses
getUnusedAddressesBech32()
string[]
Bech32 addresses
getChangeAddressBech32()
string
Bech32 address
getRewardAddressesBech32()
string[]
Bech32 stake addresses
signTxReturnFullTx(tx, partial)
string
Full signed tx (not just witness)
为提升开发者体验提供的增强方法:
方法名返回值说明
getUtxosMesh()
UTxO[]
Mesh格式的UTxO列表
getCollateralMesh()
UTxO[]
Mesh格式的抵押品列表
getBalanceMesh()
Asset[]
Mesh格式的余额列表
getUsedAddressesBech32()
string[]
Bech32格式的已使用地址列表
getUnusedAddressesBech32()
string[]
Bech32格式的未使用地址列表
getChangeAddressBech32()
string
Bech32格式的找零地址
getRewardAddressesBech32()
string[]
Bech32格式的质押地址列表
signTxReturnFullTx(tx, partial)
string
完整的已签名交易(而非仅见证集)

Important Notes

重要注意事项

  1. Browser wallet requires user interaction -
    enable()
    prompts the user
  2. Headless wallet needs fetcher - For UTxO queries and signing
  3. Network ID matters - 0 for testnet/preprod, 1 for mainnet
  4. Collateral is auto-selected - Returns smallest pure-ADA UTxO >= 5 ADA
  1. 浏览器钱包需要用户交互 -
    enable()
    方法会触发用户授权提示
  2. 无头端钱包需要fetcher - 用于UTxO查询和签名操作
  3. 网络ID至关重要 - 0对应测试网/预生产网,1对应主网
  4. 抵押品自动选择 - 返回金额≥5 ADA的最小纯ADA UTxO