All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-01-26
.envfile support for all CLI arguments with--no-envflag to disable loading.env.templatewith comprehensive configuration examples--secret-fileargument as alternative to--secretfor all secret-requiring commands--secret-outputargument tolock-btcfor specifying custom secret file path- Environment variable defaults for all CLI arguments (e.g.,
BTC_RPC_URL,SELLER_ETH_PRIVKEY) - Default values for common arguments (e.g.,
--btc-rpcdefaults tohttp://localhost:18443)
- Added a new command:
refund-btc: Refund Bitcoin after timeout client/src/utils.rs: Centralized utility functions including:write_secret_to_file(): Secure secret file writing with 0600 permissionsread_secret_from_file(): Parse secret filesresolve_secrets(): Resolve secrets from CLI args or fileparse_btc_network(): Bitcoin network string parsing
client/src/btc/fee.rs: Dedicated Bitcoin fee estimation moduleget_fee_rate(): Dynamic fee estimation with fallbackestimate_fee_for_htlc_funding(): HTLC funding transaction feesestimate_fee_for_htlc_claim(): HTLC claim transaction feesestimate_fee_for_htlc_timeout(): HTLC timeout transaction fees
- Automatic time advancement in Ethereum demo after
commit-for-mintto satisfyMIN_COMMITMENT_TIME crosstermdependency for type-safe colored terminal output
- End-to-end tests for Solana HTLC program (
agent/sol/tests/sol-htlc.ts) - Witness creation path tests in
btc-htlclibrary
- npm dependency caching for faster builds
- Hardhat artifact caching
- Cargo registry, index, and build caching
- Comprehensive devnet deployment guide for Bitcoin testnet/signet, Ethereum Sepolia, and Solana Devnet
.envworkflow documentation with variable mapping table- NFTSecretMint contract ABI now auto-generated to
agent/eth/abi/ - Enhanced inline documentation across all modules
- BREAKING: Most CLI arguments now optional with environment variable defaults
- BREAKING:
--secretand--secret-hashnowOption<String>instead of requiredString - BREAKING:
--token-idnowOption<u64>withTOKEN_IDenv var support - BREAKING: Secret arguments now accept either
--secret <hex>OR--secret-file <path> - All commands now use environment variables from
.envfile by default
- Extracted Bitcoin RPC utilities from
btc.rsinto dedicated modules - Refactored
BtcTxSignerfor improved witness creation and idiomatic Rust patterns - Improved error handling with better context messages
- Simplified Ethereum client timing validation and polling
- Improved Docker setup with better directory structure handling
- Enhanced setup scripts
- Better separation of concerns in demo functions
- Restructured README with clear separation between local demo and devnet deployment
client/src/btc/utils.rs(moved toclient/src/utils.rs)agent/sol/tests/Cargo.tomland associated Rust test infrastructure
0.1.0 - 2025-01-14
- Initial release of cross-chain atomic swap system
- Bitcoin HTLC library (
agent/btc) with P2WSH script generation - Ethereum NFTSecretMint contract (
agent/eth) with ERC721 minting - Solana sol-htlc program (
agent/sol) with SPL token metadata - Rust CLI orchestration tool (
client) with the following commands:lock-btc: Lock Bitcoin in HTLCcommit-for-mint: Commit NFT for mintingmint-with-secret: Mint NFT by revealing secretclaim-btc: Claim Bitcoin using revealed secretcancel-commit: Cancel commitment
- Docker Compose setup for local development
- Setup scripts (
setup.sh,docker-setup.sh) for automated environment configuration - Demo environment with Bitcoin regtest, Hardhat, and Solana test validator
- Multi-chain support (Bitcoin ↔ Ethereum/Solana NFT)
- SHA256 hash consistency across all chains
- Dynamic Bitcoin fee estimation
- Comprehensive README with setup and usage instructions