Skip to content

Releases: CharmsDev/charms

v0.10.0

10 Dec 04:53
4356359

Choose a tag to compare

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

Full Changelog: v0.9.3...v0.10.0

v0.9.1 - Improve Reliability

01 Sep 04:09
772d0ae

Choose a tag to compare

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...v0.9.1

v0.8.0 - Proper mocks

11 Aug 00:06
8508986

Choose a tag to compare

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.wasm in this release's artifacts
    • Generate JS bindings for it using wasm-bindgen --out-dir target/wasm-bindgen-nodejs --target nodejs ./charms_lib.wasm
  • Proper mocks:
    • Use --mock flag in charms CLI commands to generate and verify mock proofs
    • mock: bool param in charms-lib's extractAndVerifySpell(tx, mock)

Full Changelog: v0.7.0...v0.8.0

v0.7.0 - Wasm app contracts

29 Jul 05:18
32b5b25

Choose a tag to compare

What's New

  • Charms apps compile to Wasm modules (using WASI Preview 1 spec, with --target=wasm32-wasip1).
    • charms app build builds prints the Wasm module file name to stdout.
    • charms app vk now simply computes SHA-256 hash of the Wasm module and thus no longer depends on the underlying zkVM.

What's Changed

  • charms_data::Transaction now lists inputs as Vec<(UtxoId, Charms)> (vs BTreeMap<UtxoId, Charms> before v0.7.0)

Full Changelog

v0.6.3...v0.7.0

v0.6.3: Improve the prover

03 Jul 05:31
0df3b5e

Choose a tag to compare

Prover speed and reliability improvements.

v0.6.1

21 Jun 03:51
8e19388

Choose a tag to compare

Cardano support (as a meta-protocol) + changes to proving service.

v0.5.3

31 Mar 06:10
f16af55

Choose a tag to compare

New

  • new proving API, available at http://localhost:17784/spells/prove when running charms server
  • charms spell prove and charms spell cast now 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

24 Feb 14:03
72b914f

Choose a tag to compare

What's Changed

New

  • charms-client crate 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: --tx is 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

Full Changelog: v0.3.3...v0.4.1

Charms version 0.3

21 Jan 19:10
d38c688

Choose a tag to compare

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

v0.1.2

17 Dec 03:06
27ae452

Choose a tag to compare

v0.1.2 Pre-release
Pre-release

🤞