QuickSign (KIP-0015)

QuickSign is a Kadena Improvement Proposal (KIP-0015) that enables batch transaction signing in eckoWALLET. Instead of signing transactions one at a time, users can review and sign multiple transactions together, dramatically improving UX for complex DeFi operations.

Overview

QuickSign extends the Kadena signing API with a new endpoint that allows wallets to present multiple transactions to users for batch approval.

Official Specification: KIP-0015 on GitHub

Benefits

  • Faster UX - Sign multiple transactions at once

  • 🔄 Atomic Operations - All or nothing approach for complex workflows

  • 💰 DeFi Optimized - Perfect for multi-step swaps, liquidity operations

  • 🎯 Better Context - Users see the full operation, not isolated steps

Use Cases

QuickSign is ideal for:

  • Multi-hop swaps - Token A → Token B → Token C

  • Liquidity operations - Add liquidity + stake LP tokens

  • Cross-chain transfers - Multiple signatures required

  • Batch operations - Process multiple similar transactions

  • Complex DeFi - Any operation requiring multiple signatures

How QuickSign Works

Traditional Signing Flow

Without QuickSign:

  1. dApp requests signature for transaction 1

  2. User approves

  3. dApp requests signature for transaction 2

  4. User approves

  5. dApp requests signature for transaction 3

  6. User approves

  7. ... (repeat for each transaction)

Problems:

  • User must approve each transaction individually

  • Poor UX for multi-step operations

  • No context about the overall operation

  • Risk of partial completion if user cancels mid-flow

QuickSign Flow

With QuickSign:

  1. dApp requests signatures for ALL transactions at once

  2. User sees complete operation

  3. User approves all signatures in one action

  4. All transactions are signed together

Advantages:

  • Single approval for entire operation

  • User sees full context

  • Faster and more efficient

  • Clear all-or-nothing semantics

API Reference

Method: kda_requestQuickSign

Request batch signing of multiple Kadena transactions.

Request Format

Parameters

networkId (string, required)

  • The Kadena network to use

  • Valid values: 'mainnet01', 'testnet04', 'development'

commandSigDatas (Array, required)

  • Array of CommandSigData objects

  • Each represents one transaction to sign

  • Minimum: 1 transaction

  • Maximum: Determined by wallet (eckoWALLET supports up to 100)

CommandSigData Structure

Each CommandSigData object contains:

cmd (string, required)

  • JSON-stringified Pact command object

  • Must follow Chainweb command format

sigs (Array, required)

  • Array of signer objects

  • Each signer represents a public key that should sign

  • Use null for signatures you're requesting

Signer Structure

pubKey (string, required)

  • Lowercase base-16 encoded public key

  • 64 characters hex string

  • Example: "5a2afbc631fc209296f5b1b9bfd3956048e3bc40ca3cb62afac329c944be08f5"

sig (string | null, optional)

  • If null or omitted: Request signature for this public key

  • If string: Pre-existing signature (wallet won't sign)

  • Lowercase base-16 encoded signature

Response Format

Success Response

Response Fields:

  • status: 'success' if user approved

  • quickSignData: Array of signed commands (one per input)

    • commandSigData: Original command with signatures added

    • outcome.hash: Transaction hash (request key)

    • outcome.result: 'success' if signed successfully

Error Response

Common Errors:

  • "QuickSign fail: wallet public key not found" - Wallet doesn't control requested key

  • "User rejected the request" - User canceled in wallet UI

  • "Invalid command format" - Malformed command

  • "Network mismatch" - Wrong network selected in wallet

Complete Example

Basic QuickSign Implementation

Multi-Step DeFi Operation

Example: Swap Token A → B, then stake Token B

Advanced Patterns

Multi-Signature Transactions

QuickSign supports transactions requiring multiple signatures:

Note: Wallet will only sign for keys it controls. For multi-sig with different parties, coordinate signing separately.

Partial Signing

Some signatures pre-filled, others requested:

Error Handling

Comprehensive error handling:

Best Practices

Command Construction

DO:

  • Use unique nonces for each command

  • Set reasonable gas limits

  • Include all required capabilities

  • Validate commands before QuickSign

  • Use current timestamps

DON'T:

  • Reuse nonces across commands

  • Set extremely high gas limits

  • Forget required capabilities

  • Skip command validation

User Experience

DO:

  • Group related transactions together

  • Provide context about the operation

  • Show estimated total cost

  • Explain what will happen

  • Handle rejections gracefully

DON'T:

  • Batch unrelated transactions

  • Hide what transactions do

  • Surprise users with unexpected txs

  • Force re-approval on rejection

Security

DO:

  • Validate all user inputs

  • Verify recipients before signing

  • Check amounts are as expected

  • Use appropriate gas settings

  • Log all QuickSign operations

DON'T:

  • Trust user input blindly

  • Sign transactions without review

  • Use hardcoded private keys

  • Skip error handling

Transaction Ordering

QuickSign does NOT guarantee transaction execution order. Each transaction is sent to the blockchain independently.

Sequential Execution

If you need guaranteed order:

Parallel Execution

For independent transactions:

Comparison with Single Sign

Feature
Single Sign
QuickSign

User Approvals

One per transaction

One for all

UX

Multiple popups

Single popup

Context

Individual txs

Full operation

Speed

Slower

Faster

Complexity

Simple

Moderate

Best For

Simple operations

Complex workflows

Debugging

Common Issues

"Command not valid JSON"

  • Ensure cmd is JSON.stringify()-ed

  • Check for circular references

  • Validate JSON syntax

"Signer not found"

  • Wallet doesn't control the public key

  • Check key is correct (64 hex chars)

  • Ensure wallet is unlocked

"Transaction failed after signing"

  • Check Pact code for errors

  • Verify sufficient balance

  • Ensure capabilities are correct

Testing

Test QuickSign thoroughly:

Browser Compatibility

QuickSign is available in:

  • ✅ eckoWALLET Browser Extension (v2.0+)

  • ✅ eckoWALLET Mobile via WalletConnect

Check for support:

Resources

Need Help?


QuickSign makes complex DeFi operations simple. Use it to provide the best UX for your users! 🚀

Last updated