Mesh SDK Wallet Skill
AI-assisted Cardano wallet integration using @meshsdk/wallet.
Package Info
npm install @meshsdk/wallet
# or
npm install @meshsdk/core # includes wallet + transaction + provider
Two Wallet Types
| Type | Class | Use Case |
|------|-------|----------|
| Browser | MeshCardanoBrowserWallet | Web apps - connect to Eternl, Nami, Flint, etc. |
| Headless | MeshCardanoHeadlessWallet | Server-side, CLI, backend - from mnemonic/keys |
Quick Reference
Browser Wallet (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!');
Headless Wallet (Server-Side)
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);
Files
- WALLET.md - Complete API reference
- PATTERNS.md - Common wallet patterns
- TROUBLESHOOTING.md - Error solutions
CIP-30 Methods
Standard wallet interface methods:
| Method | Returns | Description |
|--------|---------|-------------|
| 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 |
Mesh Extensions
Enhanced methods for better developer experience:
| Method | Returns | Description |
|--------|---------|-------------|
| 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) |
Important Notes
- Browser wallet requires user interaction -
enable()prompts the user - 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
微信扫一扫