# Hal-simplicity discussion

**URL:** <https://community.simplicity-lang.org/t/hal-simplicity-discussion/109>\
**Category:** Simplicity theory and design\
**Created:** [November 9, 2026, 1:59pm UTC](https://community.simplicity-lang.org/t/hal-simplicity-discussion/109 "2026-11-09T13:59:47Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ikripaka](https://yyz1.discourse-cdn.com/flex007/user_avatar/community.simplicity-lang.org/ikripaka/32/28_2.png) [@ikripaka](https://community.simplicity-lang.org/u/ikripaka)\
**Post date:** [November 9, 2026, 1:59pm UTC](https://community.simplicity-lang.org/t/hal-simplicity-discussion/109/1 "2026-11-09T13:59:47Z")

</div>

Hi everyone!

We’re currently exploring ways to leverage `hal-simplicity` for our [VS Code extension](https://github.com/BlockstreamResearch/simplicityhl-vscode).

`hal-simplicity` can be quite useful for:

- `Simplicity` program inspection
- program execution debugging
- calculation and verification of signatures
- preparation of transactions for spending
- local transaction finalisation

From my side, this CLI is out of the spotlight. I believe we should re-evaluate its scope and potentially expand its features.

This CLI originates from a Bitcoin `hal` tool: [GitHub - stevenroose/hal: the Bitcoin companion · GitHub](https://github.com/stevenroose/hal), but unfortunately, I haven’t found any articles or questions about use cases; even the [Bitcoin forum](https://bitcointalk.org/) has nothing to say about it.

* * *

Would you mind sharing your use cases for `hal-simplicity`?  
Maybe there is a story behind its creation?  
I’d really appreciate your feedback so we can better tailor the extension.

---

<div class="post-metadata">

**Author:** ![schoen](https://avatars.discourse-cdn.com/v4/letter/s/b3f665/32.png) [@schoen](https://community.simplicity-lang.org/u/schoen)\
**Post date:** [November 9, 2026, 9:15pm UTC](https://community.simplicity-lang.org/t/hal-simplicity-discussion/109/2 "2026-11-09T21:15:57Z")

</div>

I have a document I was working on that was going to advocate adding some of this functionality to the `simplex` CLI based on the commonly-expressed idea that `simplex` is the main tool that most developers would use for their development workflow. What I was interested in was especially a way to run (and trace) transactions without writing any Rust code. `hal-simplicity` is good for this now (it can, in turn, be useful for demos and for debugging), and I thought we could have a subcommand like `simplex quickrun`. I haven’t finished or posted this yet, though.

The original workflow for committing to and spending from SimplicityHL contracts was basically shell scripts using `simc` to do the initial compilation, then `hal-simplicity` to derive an on-chain address (via `hal-simplicity simplicity info` on the compiled program), and various commands to build up the PSET for the redeem transaction.

I particularly like `hal-simplicity simplicity pset run`, which gives an execution trace for a contract executing a specified transaction environment. It turns out there’s a nice equivalent of this in Simplex using `-vv`, although the Simplex version is currently slightly more limited in some ways.

Some of the other features are useful for more advanced debugging, like the block and transaction decoders. Interestingly, there isn’t a full PSET decoder, although that functionality can be found in `elements-cli`.

Another advantage of `hal-simplicity`’s PSET orientation is that you can use it effectively in conjunction with other tools that understand PSETs, including in a multi-signer wallet spending flow, or creating a transaction that spends simultaneously from an external wallet and a contract (and hence requires signatures from a key named in the contract and from a key held by the wallet that controls some other funds).

---

<div class="post-metadata">

**Author:** ![KyrylR](https://avatars.discourse-cdn.com/v4/letter/k/dc4da7/32.png) [@KyrylR](https://community.simplicity-lang.org/u/KyrylR)\
**Post date:** [November 10, 2026, 10:11am UTC](https://community.simplicity-lang.org/t/hal-simplicity-discussion/109/3 "2026-11-10T10:11:08Z")

</div>

At some point I have used it for decompiling contracts

In a way it quite a niche use case
