Releases: CharmsDev/charms
v0.10.0
Charms v0.10.0 brings native coins visibility to app contracts. Combined with Scrolls this enables smart contracts on Bitcoin that can lock and unlock BTC.
This release also completes the ground work necessary for Charms being represented on Cardano as CNTs.
Also, Charms can now be securely beamed from Bitcoin to... currently only Bitcoin (but also any other chains, when we add support for them). Great news is: now adding support for Bitcoin clones is straightforward, so now Litecoin and Dogecoin can be added almost trivially.
What's Changed
- Native coin handling in spells by @imikushin in #127
- Prepare v0.10 release by @imikushin in #133
Full Changelog: v0.9.3...v0.10.0
v0.9.1 - Improve Reliability
New
- Charms protocol current version to use in spells:
version: 7
Improved
- charms-lib Wasm module for use both in browser and server JS runtimes
- Proving speed
- Improved reliability across the board
Full Changelog
v0.8.0 - Proper mocks
What's New
- Charms protocol version 6 is now the current version
- charms-lib Wasm module for use both in browser and backend runtimes like Node.js and Deno
- Find
charms_lib.wasmin this release's artifacts - Generate JS bindings for it using
wasm-bindgen --out-dir target/wasm-bindgen-nodejs --target nodejs ./charms_lib.wasm
- Find
- Proper mocks:
- Use
--mockflag in charms CLI commands to generate and verify mock proofs mock: boolparam in charms-lib'sextractAndVerifySpell(tx, mock)
- Use
Full Changelog: v0.7.0...v0.8.0
v0.7.0 - Wasm app contracts
What's New
- Charms apps compile to Wasm modules (using WASI Preview 1 spec, with
--target=wasm32-wasip1).charms app buildbuilds prints the Wasm module file name to stdout.charms app vknow simply computes SHA-256 hash of the Wasm module and thus no longer depends on the underlying zkVM.
What's Changed
charms_data::Transactionnow lists inputs asVec<(UtxoId, Charms)>(vsBTreeMap<UtxoId, Charms>before v0.7.0)
Full Changelog
v0.6.3: Improve the prover
Prover speed and reliability improvements.
v0.6.1
v0.5.3
New
- new proving API, available at
http://localhost:17784/spells/provewhen runningcharms server charms spell proveandcharms spell castnow use the new proving API hosted on our servers (by default).
Updated Dependencies
- Bump sp1 from 4.1.1 to 4.1.6
Full Changelog: v0.4.1...v0.5.3
v0.4.1
What's Changed
New
charms-clientcrate that provides a lightweight Rust API for extracting and verifying Charms' spells on transactions.
Improved
- API: Add
spell::prove_spell_tx: it proves the spell and returns 2 transactions: commit_tx, spell_tx - CLI:
charms spell prove:--txis now optional (can be generated from the provided spell)
Fixed
- Soundness issue: an attacker could create a transaction with 2 spells encoded in a Taproot tree, reveal one spell on-chain, but provide the same transaction (with the same txid! — since spells are encoded in the witness) with a different spell as a pre-requisite transaction when proving a spell, effectively double spending Charms from the first transaction. The fix is to make sure there's only one script in the Taptree by checking the length of the control block.
Dependabot Version Bumps
- Bump sp1-primitives from 4.0.1 to 4.1.1 by @dependabot in #15
- Bump sp1-verifier from 4.0.1 to 4.1.1 by @dependabot in #17
- Bump sp1-prover from 4.0.1 to 4.1.1 by @dependabot in #16
- Bump clap from 4.5.28 to 4.5.29 by @dependabot in #18
Full Changelog: v0.3.3...v0.4.1
Charms version 0.3
The best Charms release yet.
Protocol version is now 1 (was 0 for Charms v0.2). This release successfully tests upgradability of the protocol: you can safely spend charms created by spells with version: 0.
Charms software now uses SP1 v4.0.1 zkVM.
We are also introducing two CLI commands:
charms wallet list— lists all charms in your wallet.charms wallet cast— "cast" a spell: creates a draft transaction and spell, proves the spell, adds it to the transaction, signs the commit and spell transactions — all in one CLI command. This makes it the easiest to use Charms release yet.
Full Changelog: v0.2.0...v0.3.0