mesh-wallet
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMesh SDK Wallet Skill
Mesh SDK 钱包开发指南
AI-assisted Cardano wallet integration using .
@meshsdk/wallet借助实现AI辅助的Cardano钱包集成。
@meshsdk/walletPackage Info
包信息
bash
npm install @meshsdk/walletbash
npm install @meshsdk/walletor
or
npm install @meshsdk/core # includes wallet + transaction + provider
undefinednpm install @meshsdk/core # 包含钱包 + 交易 + 提供者模块
undefinedTwo Wallet Types
两种钱包类型
| Type | Class | Use Case |
|---|---|---|
| Browser | | Web apps - connect to Eternl, Nami, Flint, etc. |
| Headless | | Server-side, CLI, backend - from mnemonic/keys |
| 类型 | 类名 | 适用场景 |
|---|---|---|
| 浏览器端 | | Web应用 - 连接Eternl、Nami、Flint等钱包 |
| 无头端 | | 服务器端、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:
| Method | Returns | Description |
|---|---|---|
| | 0 = testnet, 1 = mainnet |
| | UTxOs in CBOR hex |
| | Collateral UTxOs in CBOR hex |
| | Balance in CBOR hex |
| | Addresses in hex |
| | Addresses in hex |
| | Address in hex |
| | Stake addresses in hex |
| | Witness set in CBOR hex |
| | CIP-8 signature |
| | Transaction hash |
标准钱包接口方法:
| 方法名 | 返回值 | 说明 |
|---|---|---|
| | 0 = 测试网, 1 = 主网 |
| | CBOR十六进制格式的UTxO列表 |
| | CBOR十六进制格式的抵押品UTxO列表 |
| | CBOR十六进制格式的余额 |
| | 十六进制格式的已使用地址列表 |
| | 十六进制格式的未使用地址列表 |
| | 十六进制格式的找零地址 |
| | 十六进制格式的质押地址列表 |
| | CBOR十六进制格式的见证集 |
| | CIP-8标准签名 |
| | 交易哈希 |
Mesh Extensions
Mesh扩展方法
Enhanced methods for better developer experience:
| Method | Returns | Description |
|---|---|---|
| | UTxOs in Mesh format |
| | Collateral in Mesh format |
| | Balance in Mesh format |
| | Bech32 addresses |
| | Bech32 addresses |
| | Bech32 address |
| | Bech32 stake addresses |
| | Full signed tx (not just witness) |
为提升开发者体验提供的增强方法:
| 方法名 | 返回值 | 说明 |
|---|---|---|
| | Mesh格式的UTxO列表 |
| | Mesh格式的抵押品列表 |
| | Mesh格式的余额列表 |
| | Bech32格式的已使用地址列表 |
| | Bech32格式的未使用地址列表 |
| | Bech32格式的找零地址 |
| | Bech32格式的质押地址列表 |
| | 完整的已签名交易(而非仅见证集) |
Important Notes
重要注意事项
- Browser wallet requires user interaction - prompts the user
enable() - Headless wallet needs fetcher - For UTxO queries and signing
- Network ID matters - 0 for testnet/preprod, 1 for mainnet
- Collateral is auto-selected - Returns smallest pure-ADA UTxO >= 5 ADA
- 浏览器钱包需要用户交互 - 方法会触发用户授权提示
enable() - 无头端钱包需要fetcher - 用于UTxO查询和签名操作
- 网络ID至关重要 - 0对应测试网/预生产网,1对应主网
- 抵押品自动选择 - 返回金额≥5 ADA的最小纯ADA UTxO