Releases: citadel-tech/coinswap
v0.2.0
Coinswap v0.2.0 Release Notes
This release introduces major improvements to the protocol's efficiency, security, and usability.
📋 Changelog Summary (v0.1.3 → v0.2.0)
- 🔧 30 Issues Closed: View on GitHub
- ✅ 109 Merged PRs: View on GitHub
Highlights of V0.2.0
The major highlights of this release are as follows:
- New Taproot + Musig2 Swap Protocol. This protocol allows faster swap rounds, unified funding and contract transactions, cheaper fees for swap recovery, and better anonymity set for increased privacy.
- Coinswap-FFI suits with language bindings into JS, Kotlin, Python, Swift, and Ruby. Allowing downstream wallets to easily integrate Coinswap in their stack.
- Coinswap-Docker with customizable Docker Compose configuration to quickly deploy the maker server backend stack, including bitcoind (Mutinynet), Tor, and preconfigured makerd/maker-cli. This enables swap server deployment in any environment with minimal configuration.
- Taker-App. A NodeJS Coinswap Client desktop app built with the coinswap-ffi/coinswap-js. Providing a working prototype and example of a real-life coinswap client.
- Public Marketplace is Now Live in Mutinynet Inquisition Signet, seeded with initial community run makers.
Major Improvements in v0.2.0
| Type | Improvement | PR(s) | Contributor |
|---|---|---|---|
| Protocol | Add watcher integration (deprecate tracker) and add hashlock-based recovery for swaps. | #621 | Wukong247 |
| Protocol | Implement private-key handover flow for Taproot swaps, enabling secure privkey transfer. | #631 | stark-3k |
| Protocol | Small watcher improvements and fixes to watch_tower and related modules. | #636 | Wukong247 |
| Protocol | Add hashlock- and timelock-based recovery paths so Taproot swaps can be recovered via preimage or timeout. | #637 | stark-3k |
| Protocol | Update watcher and offerbook logic to improve offer handling and market behavior. | #679 | Wukong247 |
| Protocol | Use swap ID as the connection identifier to reliably associate peers with swaps. | #663 | stark-3k |
| Protocol | Optimize watcher performance and market logic (offerbook integration and faster processing). | #666 | Wukong247 |
| Refactors | Refactor OngoingSwap and Connection state to persist swapcoins in state storage. |
#627 | 0xEgao |
| Refactors | Fix bug in handle_private_key_handover (formatting/docs and functional fix). |
#629 | Godzilla-oss |
| Refactors | Misc demo and code cleanup changes (clippy/fmt and small fixes). | #643 | stark-3k |
| Refactors | Add several Taproot integration tests covering multi-maker/taker flows and aborts. | #649 | 0xEgao |
| Refactors | Simplify and streamline the sync API used for wallet/rpc synchronization. | #665 | Godzilla-oss |
| Test | Improve test framework assertions for funding and verification to reduce flakiness. | #610 | NeoZ666 |
| Test | Add unit tests for watch_tower utility functions. |
#648 | Godzilla-oss |
| Test | Move balance verification into individual test cases to avoid shared-state flakiness. | #672 | 0xEgao |
| Test | Add nextest test runner and pin stable clippy in CI. |
#612 | Godzilla-oss |
| Apps | UI improvement: show total value of manually selected UTXOs in the virtual render. | #623 | NeoZ666 |
| Apps | FFI: add new methods and change interfaces from private->public where applicable. | #630 | NeoZ666 |
| Apps | Add an experimental --taproot flag to CLI apps to enable Taproot flows. |
#634 | stark-3k |
| Apps | Minor FFI updates to support the GUI application integration. | #639 | NeoZ666 |
| Docs | Add V2 demo documentation describing the Taproot+Musig2 protocol flow. | #645 | mojoX911 |
| Infrastructure | Add initial Docker image to run coinswap services for demos and testing. | #600 | hulxv |
| Infrastructure | Improve Docker setup for bitcoind configuration (ports, wallet names, defaults). | #640 | hulxv |
| Infrastructure | Prevent Tor auth password from being overwritten by default during setup. | #641 | stark-3k |
| Infrastructure | Refactor docker-compose to use profiles, add makerd-internal, healthchecks, and env configurability. | #659 | hulxv |
Full Changelog: v0.1.3...v0.2.0
Contributions
The project is under active beta development and open for contributions and beta testing. The Coinswap marketplace is live in Mutinynet SIgnet. Detailed instructions for connecting to Mutiny Signet can be found here. Bug fixes and feature requests are very much welcome.
Major References
- Project overview, contribution and guidelines: Readme
- Manuals and Demo Docs: Doc Folder
- Protocol Specifications: Spec Repo
- Coinswap Docker: Setup Instructions
- Taker App: Build From Source
v0.1.3
Coinswap v0.1.3 Release Notes
This release introduces major improvements to the protocol's efficiency, security, and usability.
📋 Changelog Summary (v0.1.2 → v0.1.3)
- 🔧 34 Issues Closed: View on GitHub
- ✅ 40 Merged PRs: View on GitHub
Major Improvements in v0.1.3
| Type | Improvement | PR(s) | Contributor |
|---|---|---|---|
| Privacy | Regular and Swap coin utxos and internally separated inside the wallet. Such that no transaction can be created by mixing both types of coin. Which leads to privacy leak | #574 | keraliss |
| Privacy | Address grouping behavior is enforced. If the wallet detects and utxos with identical address it will always try to spend them first and together to reduce address reuse cases. This enhances swap privacy. | #530 | keraliss |
| Protocol | The first sketch of Taproot Swaps are added. Showing the new protocol messages and communication flow. This marks the first step to moving towards taproot swap. This is not exposed in production yet. The full suit of taproot swap will be available at next release. | #571 | Stark |
| Protocol | A new watch tower mechanism is added for taker and maker to watch for transaction spending the contract utxo. This is needed to find hash preimage from the blockchain in case of a malicious party not sharing the hash preimage in time. | #568 | Wukong |
| Protocol | Sweep the incoming swaps after successful round. This allows all parties to quickly get out of the contract when a swap successfully completes. Reduces timelock related attack vectors. | #531 | 0xEgao |
| Protocol | Enable hashlock based spending. This is crucial for edge cases where the swap didn't complete but hash-preimage can be known from the blockchain. Allowing parties to unilaterally sweep the incoming funds via hashlock path. | #515 | 0xEgao |
| Security | A backup and restore mechanism is created for the wallet. The backup is encrypted and can be stored separately to recover the wallet in case of any loss. | #570 | bicodrex |
| Refactors | Various system level redundant parameters have been removed and the public API for Maker and Taker is streamlined. This makes the APIs simpler for downstream users | #590, #589, #587, #586 | keraliss 0xEgao |
| Apps | Added a detailed end swap report, showing various key swap parameters after the swap. This increases understanding for the user how the swap went through. | #596 | Neo |
| Apps | New feature for manually selecting the UTXOs for swap and regular spend is added. This allows more control for user to choose utxos for spend/swap manually. | #581 | Neo |
| Apps | A feature for interactively selecting manual UTXOs are added for the Taker app. | #576 | Neo |
| Docs | More Tutorials are added demonstrating various swap behavior, parameters and edge cases | #598 | Godzilla |
| Docs | Update Maker and Taker documentation to reflect the latest improvements in the APPs | #588 #579 ... |
v0.1.2
Coinswap v0.1.2 Release Notes
This release introduces major improvements to the protocol's efficiency, security, and usability.
📋 Changelog Summary (v0.1.1 → v0.1.2)
- 🔧 28 Issues Closed: View on GitHub
- ✅ 33 Merged PRs: View on GitHub
Major Improvements in v0.1.2
| Type | Improvements | PR(s) | Contributor |
|---|---|---|---|
| Decentralized DNS | The first stage of decentralizing the marketplace DNS. A new Tracker system is designed to mitigate the SPOF on the DNS Server. This will be fully integrated in the following release cycle. | #520 | Wukong |
| Improved Amount Privacy | A transaction building algorithm is developed to reduce amount correlation between receiver's and change UTXOs. In this new behavior, transactions are crafted with closely resembling values of the receiver's UTXOs and change UTXOs, making it harder to determine fund flows. | #518 | NeoZ |
| Wallet Encryption | The wallet now has strong encryption protection at creation, allowing better security of the private materials on the disk. | #507 | bicodrex |
| Fee Estimation | A fee estimation module is added that can estimate live fee rate, fetched from multiple independent sources. | #498 | Theives |
| Efficient Offer Downloads | Takers are now smarter about downloading offers. Offer download is triggered for makers whose offers haven't been fetched recently. | #493 | NeoZ |
| Live Market | A live market display mechanism is added, allowing anyone to check the current status of the Coinswap market without running any app. This display is also publicly hosted. Link in the readme. | #521 | Stark |
| Integrated Spend API | A uniform spend API has been developed and used for all forms of spending. This streamlines the code complexity of transaction building and removes redundant code. | #456 | NeoZ |
| Using Fee Rate | All hardcoded total fees are removed from the codebase, and proper fee rate handling is added. | #519 | keraliss |
| Address Grouping | The coin selection algorithm is improved to group all address reuses together. Address reuse can happen accidentally, and the new algorithm will ensure they are always spent together. | #514 | keraliss |
| Custom Signet | The Coinswap default network is changed from testnet4 to custom signet. This makes usage and demo of the software smoother and more efficient. The custom signet uses a 2-minute block interval. | #474 | Stark |
Contributions
The project is under active beta development and open for contributions and beta testing. The Coinswap marketplace is live in Custom Signet. Detailed instructions for connecting to our custom signet can be found here. Bug fixes and feature requests are very much welcome.
Major References
- Project overview, contribution and community: Readme
- Manuals and Demo Docs: Doc Folder
- Protocol Specifications: Spec Repo
v0.1.1
Coinswap v0.1.1 Release Notes
This release introduces major improvements to the protocol's efficiency, security, and usability.
📋 Changelog Summary (v0.1.0 → v0.1.1)
- 🔧 45 Issues Closed: View on GitHub
- ✅ 34 Merged PRs: View on GitHub
Major Improvements in v0.1.1
Core Protocol & Performance Improvements
| Type | Improvements | PR(s) | Contributor |
|---|---|---|---|
| UTXO Management | A major source of latency due to frequent Core RPC calls have been removed by having custom in-memory UTXO indexes. These maps are also persisted in the disk, reducing wallet sync time. | #417 | ab-oggm |
| Coin Selection | State of art coin-selection algorithms, similar to Bitcoin Core, is integrated, making various kind of tx creation more efficient. | #426 | NeoZ |
| Fidelity Management | Fidelity bond management tasks, like bond expiry checks, redemtion, recreation, is now automated in the maker servers. Reducing user responsibilities of managing Fidelity Bonds. | #424, #448 | KnowWhoami |
| Taker Liveness | A new message WaitingFundingConfirmation have been introduced to mainatin swap connections between Takers and Makers to handle variable block confirmation delay |
#380 | MojoX911 |
User Experience & Compatibility
| Type | Improvements | PR(s) | Contributor |
|---|---|---|---|
| Compatibility | The crate and the apps are now fully compatible with Mac! | #400 | Wukong |
| Tor | Tor operation is streamlined providing faster and more resilient tor connections. Tor addresses are now deterministically linked with the wallet seed, ensuring constant onion address across system reboots. | #400, #453 | Wukong |
| UI/UX | Improved display of various user facing structures like, balances, utxos, offer data, fidelity bonds and overall improvements in system logs. Making the apps more fun to play with. The coinswap logs now more clearly shows the swap process as it happens. | #387, #389, #366, #385, #463 | Levi0804, KnowWhoami, MojoX911 |
| API Design | Streamlined various transaction creation routines to use a single common API. Reducing technical debts and removing redundant code. | #418 | Vanshul |
| Protocol Spec Documentation | Details how CoinSwap breaks the transaction graph and improves privacy through routed swaps and amount splitting. Includes diagrams for clarity. | #17 | Rishkwal |
Contributions
The Project is under active beta development and open for contributions and beta testing. The Coinswap market place is live in testnet4. Bug fixes and feature requests are very much welcome.
Major References
- Project overview, contribution and community: Readme
- Manuals and Demo Docs: Doc Folder
- Protocol Specifications: Spec Repo
v0.1.0
🎉 Coinswap v0.1.0 - First Public Beta Release! 🎉
We’re thrilled to announce the first public beta release of Coinswap: a decentralized, Sybil-resistant protocol for trustless Bitcoin UTXO swaps.
With v0.1.0, Coinswap is now live on Testnet4.
This release marks a significant milestone, introducing a fully functional implementation of the protocol along with essential tools and documentation for developers, testers, and early adopters.
🌟 Highlights of v0.1.0
1. Complete Protocol Specification
- The full Coinswap protocol has been formalized and documented in detail.
- Explore the Coinswap Protocol Specification to understand how it ensures decentralized, private, and censorship-resistant swaps.
2. Functional Test Coverage
- A robust set of functional tests has been introduced to simulate swap scenarios and ensure protocol correctness.
- Dive into the tests and explore various swap situations: Functional Tests.
3. Modular Protocol Design
- All protocol components have been modularized for flexibility, extensibility, and easier integration into other Bitcoin applications. Check the src.
4. Command-Line Applications
- Coinswap introduces three key command-line apps:
makerd: Run as a swap service provider and earn fees. Get started with makerd.maker-cli: Manage your maker server via a command-line interface. Learn more about maker-cli.taker: Act as a client and perform swaps with multiple makers. Use the taker app.