关于 mesh-wallet
mesh-wallet 是一项使用 `@meshsdk/wallet` 集成 Cardano 钱包的技能,涵盖基于 CIP-30 的浏览器钱包,以及用于服务器端、CLI 和后端的无头钱包。
主要功能
- 01通过 CIP-30 连接浏览器钱包
- 02用助记词或密钥创建无头钱包
- 03读取余额、地址和 UTxO
- 04签署数据和交易
- 05使用 Mesh 格式的钱包数据
适用场景
- 01让 Web 应用连接已安装的 Cardano 钱包
- 02在服务器端或 CLI 工作流中使用钱包
- 03获取钱包数据并签署交易
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ meshjs/ skills --skill mesh-wallet安装后在 Claude Code 中输入/mesh-wallet确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
PATTERNS.mdREADME.mdTROUBLESHOOTING.mdWALLET.md详细介绍
Mesh SDK 钱包技能
使用 @meshsdk/wallet 集成 Cardano 钱包,并借助 AI 提供支持。
软件包信息
npm install @meshsdk/wallet
# or
npm install @meshsdk/core # includes wallet + transaction + provider
两种钱包类型
| 类型 | 类 | 用例 |
|---|---|---|
| 浏览器 | MeshCardanoBrowserWallet | Web 应用——连接到 Eternl、Nami、Flint 等钱包。 |
| 无头 | MeshCardanoHeadlessWallet | 服务端、CLI、后端——使用助记词或密钥。 |
快速参考
浏览器钱包(CIP-30)
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!');
无头钱包(服务端)
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);
文件
- WALLET.md - 完整的 API 参考
- PATTERNS.md - 常见的钱包模式
- TROUBLESHOOTING.md - 错误解决方案
CIP-30 方法
标准钱包接口方法:
| 方法 | 返回值 | 描述 |
|---|---|---|
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 扩展
增强方法,提供更好的开发体验:
| 方法 | 返回值 | 描述 |
|---|---|---|
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 | 完整的已签名交易(不只是见证) |
重要说明
- 浏览器钱包需要用户交互——
enable()会提示用户 - 无头钱包需要 fetcher——用于查询 UTxO 和签名
- 网络 ID 很重要——测试网/预生产网为 0,主网为 1
- 抵押会自动选择——返回金额不低于 5 ADA 的最小纯 ADA UTxO
评论
支持 Markdown