RecipesWallets
AMP Wallet (Liquid Network)
AMP wallets are designed for the Liquid Network with confidential transactions and 2-of-2 multisig security.
What is an AMP Wallet?
AMP wallets are specialized for the Liquid sidechain and provide enterprise-grade features:
-
Confidential Transactions: Transaction amounts are cryptographically hidden from blockchain observers. Only the sender and receiver can see the actual amounts.
-
2-of-2 Multisig: Every transaction requires signatures from both the user's key AND the server's key. This provides:
- Theft prevention: A compromised user key alone cannot move funds
- Policy enforcement: Server can enforce business rules before co-signing
- Audit trail: Server records all signing requests
-
Asset Issuance: Create custom tokens on Liquid with controlled supply and transfer restrictions.
When to Use AMP Wallets
| Scenario | AMP Suitable? | Reason |
|---|---|---|
| Issue custom tokens | ✅ Yes | Required for Liquid asset issuance |
| Need transaction privacy | ✅ Yes | Confidential transactions hide amounts |
| Fast settlement | ✅ Yes | Liquid blocks every ~1 minute vs Bitcoin's ~10 minutes |
| Need on-chain transparency | ❌ No | Amounts are hidden by design |
Characteristics
- Network: Liquid only
- Security: 2-of-2 multisig (ecs + amp)
- Privacy: Confidential transactions (amounts hidden)
- Blinding: SLIP-77 blinding key derivation
- Restrictions: Ability to set restrictions for the asset
Creating an AMP Wallet
// Step 1: Create signer
const signerResult = await broadcastRequest({
action: 'add',
resource: '/signers',
details: {
sid: uuidv4(),
name: `amp_signer_${Date.now()}`,
location: 'hosted',
},
})
const signerId = signerResult.details.sid
// Step 2: Derive XPUB
const xpubResult = await broadcastRequest({
action: 'add',
resource: `/signers/${signerId}/xpubs`,
details: {
id: uuidv4(),
change: 'receive',
},
})
// Step 3: Create AMP wallet
const walletResult = await broadcastRequest({
action: 'add',
resource: '/wallets',
details: {
id: uuidv4(),
name: `amp_wallet_${Date.now()}`,
type: 'amp',
network: 'liquid',
value: {
signer_id: signerId,
},
},
})
const walletId = walletResult.details.widAMP Wallet Descriptor Format
AMP wallets use a complex descriptor structure:
ct(slip77(<master_blinding_key>),elwsh(multi(2,<user_key>,<server_key>)))Components:
ct()- Confidential transaction wrapperslip77()- SLIP-77 blinding key derivationelwsh()- Elements witness script hashmulti(2,...)- 2-of-2 multisig requirement