Programmatic Cardano Wallet
Bursa implements the following Cardano Improvement Proposals:
- CIP-0003: Wallet Key Generation - Complete BIP39 seed generation and key derivation
- CIP-0005: Bech32 Address Format - Bech32 encoding/decoding for addresses and keys
- CIP-0011: Staking Key Delegation - Stake key derivation and reward address generation
- CIP-0016: Cryptographic Key Serialization - CBOR serialization for all key types
- CIP-0018: Multi-Stake Keys - Support for multiple stake keys per wallet
- CIP-0019: Cardano Addresses - Full address format support (mainnet/testnet)
- CIP-0105: Conway Era Key Chains - Governance key derivation (DRep, Committee)
- CIP-1852: HD Wallets - Hierarchical deterministic wallet structure
- CIP-1853: Stake Pool Cold Keys - Pool operator identity keys
- CIP-1854: Multi-signature Scripts - Native script support and validation
- CIP-1855: Forging Policy Keys - Native asset minting/burning policy keys
Start a Bursa wallet and interact with it using the Bursa API.
# Clone the Bursa repository
git clone git@github.com:blinklabs-io/bursa.git
cd bursa
# Start the Bursa API server
go run ./cmd/bursa api Access API Swagger documentation: http://localhost:8080/swagger/index.html
For more information about Bursa CLI
go run ./cmd/bursa
Usage:
bursa [command]
Available Commands:
address Address utility commands
api Runs the api
cert Certificate generation commands
help Help about any command
key Key derivation commands
script Script commands for multi-signature operations
wallet Wallet commands
Flags:
-h, --help help for bursa
Use "bursa [command] --help" for more information about a command.Derive individual keys from a BIP-39 mnemonic:
bursa key root --mnemonic "..." # Root extended private key
bursa key account --mnemonic "..." # Account key (CIP-1852)
bursa key payment --mnemonic "..." # Payment key (CIP-1852)
bursa key stake --mnemonic "..." # Stake key (CIP-1852)
bursa key policy --mnemonic "..." # Forging policy key (CIP-1855)
bursa key pool-cold --mnemonic "..." # Pool cold key (CIP-1853)
bursa key drep --mnemonic "..." # DRep key (CIP-0105)
bursa key committee-cold --mnemonic "..." # Committee cold key (CIP-0105)
bursa key committee-hot --mnemonic "..." # Committee hot key (CIP-0105)
bursa key vrf --mnemonic "..." # VRF key pair for block production
bursa key kes --mnemonic "..." # KES key pair for block productionAll keys are output in bech32 format with appropriate prefixes (root_xsk, acct_xsk, addr_xsk, stake_xsk, policy_xsk, pool_xsk, drep_xsk, cc_cold_xsk, cc_hot_xsk, vrf_sk, kes_sk).
Inspect Cardano addresses and display their components:
bursa address info <address> # Display address type, network, credentials, etc.Supports all CIP-0019 address types including base, enterprise, pointer, reward, and legacy Byron addresses.
Generate certificates for stake pool operations and block production:
bursa cert op-cert --kes-vkey kes.vkey --cold-skey cold.skey \
--counter 0 --kes-period 200 --out node.cert # Operational certificate for block productionOperational certificates link KES keys to stake pool cold keys for secure block production.
Bursa generates key files that are fully compatible with cardano-cli. Use bursa wallet create or bursa wallet restore to generate key files, then use them directly with cardano-cli commands:
# Create a wallet with Bursa
bursa wallet create --name mywallet
# Use the generated keys with cardano-cli
cardano-cli address build \
--payment-verification-key-file mywallet/payment.vkey \
--stake-verification-key-file mywallet/stake.vkey \
--mainnetThis enables Bursa as a drop-in replacement for key generation while maintaining full compatibility with the Cardano ecosystem.
