Skip to content
Merged

Dev #31

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
0f3fd9e
refactor `decode()` and `ElementsExtension::ALL`
topologoanatom Feb 10, 2026
f9ec8f0
sync with fork
topologoanatom Feb 10, 2026
b5aec6e
substitute lack of clone with unsafe read
topologoanatom Feb 13, 2026
8f18576
move c_jet_ptr casting to static var
topologoanatom Mar 4, 2026
bbdb7fe
delete local ref in toml
topologoanatom Mar 4, 2026
3e6e63c
Merge pull request #7 from BlockstreamResearch/refactor/squash-boiler…
ivanlele Mar 4, 2026
d45e2ff
validate arbitrary script ending with multisig
topologoanatom Mar 16, 2026
557bce3
full dynamic jet loader
topologoanatom Feb 17, 2026
ad3306c
Merge branch 'development' into feature/plugin-macro
topologoanatom Mar 16, 2026
8b9d75b
Merge pull request #13 from BlockstreamResearch/feature/plugin-macro
ivanlele Mar 16, 2026
83551d2
Merge pull request #14 from BlockstreamResearch/arbitrary-multisig
ivanlele Mar 16, 2026
8314f89
p2sh and p2tr for pset
topologoanatom Mar 18, 2026
f5af01b
derive spend type from script_pubkey
topologoanatom Mar 19, 2026
5f79b81
wip: working p2sh and p2wsh scripts
topologoanatom Mar 20, 2026
8affb5d
wip: updates for p2tr
topologoanatom Mar 23, 2026
a4c6204
requested changes
topologoanatom Mar 23, 2026
0270396
Merge remote-tracking branch 'origin/development' into script-types
topologoanatom Mar 24, 2026
667e696
satisfy linter
topologoanatom Mar 24, 2026
35cf317
p2sh and p2tr demo for bitcoin regtest
topologoanatom Mar 30, 2026
c8f8b0b
requested changes + README updates
topologoanatom Mar 30, 2026
06e0ec1
Merge pull request #15 from BlockstreamResearch/script-types
ivanlele Mar 30, 2026
6ddc787
chore: add github actions ci workflow with build, test, and clippy jobs
stringhandler May 15, 2026
7d32d1f
chore(ci): update branch triggers and relax clippy warnings
stringhandler May 15, 2026
3a804bd
Merge pull request #18 from stringhandler/ci/add-jobs
ivanlele May 15, 2026
546a263
fix clippy for all-targets
ivanlele May 15, 2026
3bca963
Merge pull request #19 from BlockstreamResearch/fix/clippy-all-targets
ivanlele May 15, 2026
a3cff0c
move to p2tr with user defined leaf design
topologoanatom May 4, 2026
2c81554
Merge branch 'development' into script-timelocks
topologoanatom May 20, 2026
875328b
Merge pull request #17 from BlockstreamResearch/script-timelocks
ivanlele May 20, 2026
57788b3
Doc updates and contribution
ivanlele May 20, 2026
499108b
Merge pull request #20 from BlockstreamResearch/contribution-guidelines
ivanlele May 20, 2026
26cb36c
Update test DLL loading to use cargo-built outputs for platform compa…
ivanlele May 20, 2026
ad29569
Merge pull request #21 from BlockstreamResearch/deps-all-platform-tests
ivanlele Jun 2, 2026
984a131
service: drop custom jet flag and unused dlopen2 dependency
topologoanatom Oct 26, 2026
78c1adb
Remove plugin_tests crates and prebuilt jet DLLs
topologoanatom Oct 26, 2026
1af59a1
Remove jet_plugins macro crate
topologoanatom Oct 26, 2026
507938b
core: remove dynamic jet loading
topologoanatom Oct 26, 2026
8e45869
docs: drop custom jet plugin references
topologoanatom Oct 26, 2026
6e3b202
Replace hal-simplicity with simplicity-lang 0.9 in workspace
topologoanatom Oct 26, 2026
4d3398c
Merge pull request #23 from BlockstreamResearch/remove-dyn-jets
ivanlele Oct 27, 2026
5fa7779
core: port to simplicity-lang 0.9 and add Program
topologoanatom Oct 26, 2026
9352368
service: port to simplicity-lang 0.9
topologoanatom Oct 26, 2026
e8adb7f
cli: port to simplicity-lang 0.9
topologoanatom Oct 26, 2026
c1d5a16
Merge pull request #24 from BlockstreamResearch/deps/simplicity-0.9
ivanlele Oct 27, 2026
50ae82f
jet_plugin_abi: add C ABI for custom jet plugins
topologoanatom Oct 27, 2026
924c9cb
core: add runtime custom jet plugin loader
topologoanatom Oct 27, 2026
f0200e1
Merge pull request #25 from BlockstreamResearch/feature/jet-plugin-abi
ivanlele Oct 27, 2026
f0ce418
include the script to the program commitment
ivanlele Nov 5, 2026
df90703
implement work permit system for request handling and execution cost …
ivanlele Nov 5, 2026
093d32a
update service configuration and improve startup instructions
ivanlele Nov 5, 2026
6c67dbe
add Bitcoin transaction approval hash command and context
ivanlele Nov 5, 2026
7d51fa1
enhance transaction finalization process and add network parameter
ivanlele Nov 5, 2026
64030ae
implement CSV recovery script validation and enhance related commands
ivanlele Nov 5, 2026
7a8853e
Merge pull request #26 from BlockstreamResearch/fix/commitment
ivanlele Nov 5, 2026
4259583
docs: record security review findings
ivanlele Nov 6, 2026
d57368a
update http client dependencies.
ivanlele Nov 6, 2026
e08e3ee
pin taproot commitment vectors.
ivanlele Nov 6, 2026
f1f1064
add policy bit value encoding.
ivanlele Nov 6, 2026
02d9973
add bitcoin policy registry.
ivanlele Nov 6, 2026
b9d5633
verify bitcoin policy transaction evidence.
ivanlele Nov 6, 2026
2da7d79
add liquid policy registry.
ivanlele Nov 6, 2026
8f603dd
verify liquid policy transaction evidence.
ivanlele Nov 6, 2026
8a421cd
add liquid policy execution.
ivanlele Nov 6, 2026
2095296
add liquid policy pset operations.
ivanlele Nov 6, 2026
241ddf2
register the portable policy crate.
ivanlele Nov 6, 2026
33029c6
test bitcoin policy kernel.
ivanlele Nov 6, 2026
a4a70a3
add liquid fixture generator.
ivanlele Nov 6, 2026
1179e60
add liquid transaction test vectors.
ivanlele Nov 6, 2026
ac598c9
test liquid policy verification.
ivanlele Nov 6, 2026
41aabdb
test bitcoin policy jet adapter.
ivanlele Nov 6, 2026
0de943c
test bitcoin policy execution adapter.
ivanlele Nov 6, 2026
bc041a0
add bitcoin policy execution adapter.
ivanlele Nov 6, 2026
b357874
expose liquid policy execution.
ivanlele Nov 6, 2026
4f38d9b
add bitcoin policy endpoints.
ivanlele Nov 6, 2026
9b2b81d
add liquid policy endpoints.
ivanlele Nov 6, 2026
3314c5b
make policy signing the service api.
ivanlele Nov 6, 2026
29ec1f1
remove legacy bitcoin signing handler.
ivanlele Nov 6, 2026
dfda3f6
remove legacy liquid signing handler.
ivanlele Nov 6, 2026
f57ed0b
remove legacy tweak handler.
ivanlele Nov 6, 2026
d35da50
add verified policy finalization.
ivanlele Nov 6, 2026
38e91a6
add bitcoin policy cli.
ivanlele Nov 6, 2026
c494f99
add liquid policy cli.
ivanlele Nov 6, 2026
f4aa579
remove legacy cli tests.
ivanlele Nov 6, 2026
7432b83
make policy commands the main cli flow.
ivanlele Nov 6, 2026
54cb691
remove legacy bitcoin transaction commands.
ivanlele Nov 6, 2026
7f8694f
remove legacy liquid transaction commands.
ivanlele Nov 6, 2026
c22e1c2
remove legacy address and demo commands.
ivanlele Nov 6, 2026
a4fd794
test bitcoin policy cli.
ivanlele Nov 6, 2026
fe25f7b
test liquid policy cli.
ivanlele Nov 6, 2026
517c53f
pin transport dependency versions.
ivanlele Nov 6, 2026
ee9fce8
add reviewed policy templates.
ivanlele Nov 6, 2026
48a196d
test compiled policy templates.
ivanlele Nov 6, 2026
a514eea
replace legacy demos with policy workflow.
ivanlele Nov 6, 2026
f0bd0b2
document bitcoin and liquid policy profiles.
ivanlele Nov 6, 2026
2b59910
document the policy workflow.
ivanlele Nov 6, 2026
f96a90d
add CI job to publish images.
ivanlele Nov 6, 2026
cd861e2
Merge pull request #27 from BlockstreamResearch/feature/policy
ivanlele Nov 6, 2026
4cd257d
update documentation to include Docker usage instructions for running…
ivanlele Nov 6, 2026
72cafe8
Merge pull request #28 from BlockstreamResearch/update/docs
ivanlele Nov 6, 2026
d1356ef
remove the disclosed key check
ivanlele Nov 9, 2026
127f0ff
Merge pull request #29 from BlockstreamResearch/fix/key
ivanlele Nov 9, 2026
ae23c27
remove unused secp256k1 import
ivanlele Nov 9, 2026
a001877
Merge pull request #30 from BlockstreamResearch/fix/clippy-unused-import
ivanlele Nov 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.git
target
**/target
**/config.toml
42 changes: 42 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
name: Bug report
about: Report a reproducible bug
title: "bug: "
labels: bug
assignees: ""
---

## Description

<!-- A clear and concise description of what the bug is. -->

## Steps to reproduce

<!-- Minimal command sequence or code snippet that triggers the bug. -->

## Expected behaviour

<!-- What you expected to happen. -->

## Actual behaviour

<!-- What actually happened. Include error output, panic messages, or unexpected responses. -->

## Environment

- **OS**: <!-- e.g. Ubuntu 24.04, macOS 15 -->
- **Rust version**: <!-- output of `rustc --version` -->
- **Commit / tag**: <!-- git rev-parse --short HEAD -->
- **Affected crate(s)**: <!-- core / service / cli -->

## Logs

<!-- Paste relevant logs here. Redact any sensitive data such as private keys. -->

```plaintext
paste here
```

## Additional context

<!-- Anything else that might help diagnose the issue. -->
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability
url: https://github.com/BlockstreamResearch/simplicity-unchained/security/advisories/new
about: Please report security issues privately via GitHub's security advisory feature rather than opening a public issue.
27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: Feature request
about: Propose a new feature or improvement
title: "feat: "
labels: enhancement
assignees: ""
---

## Problem / motivation

<!-- Describe the problem or limitation this feature would address. -->

## Proposed solution

<!-- Describe the change or addition you have in mind. -->

## Affected crate(s)

<!-- Which crate(s) would this touch? core / service / cli -->

## Alternatives considered

<!-- Have you considered any alternative approaches? Why is this one preferred? -->

## Additional context

<!-- Any relevant background, links to specs, related issues, or prior art. -->
37 changes: 37 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Summary

<!-- Describe what this PR changes and why. -->

## Type of change

- [ ] Bug fix
- [ ] New feature
- [ ] Refactor
- [ ] Documentation
- [ ] Dependency update
- [ ] Other (describe below)

## Affected crates

- [ ] `core`
- [ ] `service`
- [ ] `cli`
- [ ] CI / tooling

## Checklist

- [ ] `cargo fmt --all` passes
- [ ] `cargo clippy --workspace --all-targets -- -D warnings` passes
- [ ] `cargo test --workspace --all-targets` passes

## Breaking changes

<!-- List any breaking changes to public APIs or behaviour, or write "None". -->

## Testing

<!-- Describe how this was tested, or why no new tests were needed. -->

## Related issues

<!-- Closes #, Refs # -->
43 changes: 43 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: CI

on:
push:
branches: [master, development]
pull_request:
branches: [master, development]

jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.92.0
- uses: Swatinem/rust-cache@v2
- run: cargo build --workspace --all-targets

test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.92.0
- uses: Swatinem/rust-cache@v2
- run: cargo build --workspace --all-targets
- run: cargo test --workspace

clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.92.0
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --workspace --all-targets -- -D warnings
51 changes: 51 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Publish release image

on:
release:
types: [published]

jobs:
publish:
name: Publish service image to GHCR
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Check out release tag
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: refs/tags/${{ github.event.release.tag_name }}
persist-credentials: false

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1

- name: Log in to GHCR
uses: docker/login-action@8aa5831fb8d48d8f76594c7ddde61ae58019f550 # v4.8.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Generate image tags and labels
id: meta
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
with:
images: ghcr.io/${{ github.repository }}
flavor: latest=false
tags: |
type=raw,value=${{ github.event.release.tag_name }}
type=raw,value=latest,enable=${{ !github.event.release.prerelease }}

- name: Build and publish image
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/target
/core/target
*.dev.*
/config.toml
/service/config.toml
89 changes: 89 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Contributing to Simplicity Unchained

Contributions of all kinds are welcome — bug reports, documentation improvements, and tests.

## Project Structure

The workspace is organised into focused crates. Keep changes scoped to the appropriate crate and discuss cross-crate changes in an issue first.

- [`policy`](policy/README.md): Portable `bitcoin-policy-v1` registry and verified context.
- [`core`](core/README.md): Policy execution adapter and shared Bitcoin/Elements primitives.
- [`service`](service/README.md): Axum HTTP service exposing separate Bitcoin/Liquid policy APIs and the version endpoint.
- [`cli`](cli/README.md): Primary `policy` workflow and key generation.

## Issues

If this is just a bug report or a feature request, please open an issue first so it can be discussed. PRs for bug fixes are also welcome and can be discussed directly in the PR. However, for larger changes, it is better to open an issue first to discuss the proposed change before implementing it.

### Pull Requests

1. Fork the repository and create a branch from `development`.
2. Make your changes, including tests where applicable.
3. Ensure CI checks pass.
4. Open a PR against `development` describing what was changed and why.
5. Keep PRs focused, one logical change per PR. Split large changes into sequential PRs if needed.

## Coding Conventions

- Run `cargo fmt` before every commit.
- The project targets zero `clippy` warnings with `-D warnings`. Fix all warnings introduced by your changes.
- Use `thiserror` for library errors. Avoid `unwrap()` outside of tests and examples.
- Keep the public API surface minimal. Only `pub` what downstream crates genuinely need, and add `///` doc comments to all new public items.
- Adding a new dependency requires justification. Prefer `[workspace.dependencies]` entries and avoid floating version requirements.
- Add unit tests under a `#[cfg(test)]` module in the same file.

## Running the Service Locally

First follow the service's [key-provisioning instructions](service/README.md#starting-the-service).
The repository no longer supplies an active configuration or a usable signing key.

```bash
cd service
cargo run --quiet -- start
```

The service reads `config.toml` from the current directory by default. You can point it at a custom file with `--config`:

```bash
cargo run --quiet -- start --config path/to/your/config.toml
```

To exercise the policy CLI against a matching Testnet4 service, follow the
[demo's artifact requirements](cli/README.md#demo):

```bash
./cli/scripts/demo_btc.sh --help
# With reviewed policy artifacts configured:
./cli/scripts/demo_btc.sh review
```

## Docker

The multi-stage `Dockerfile` builds the `service` binary. To build and run:

```bash
docker build -t simplicity-unchained-service .
docker run --rm -p 30431:30431 \
--mount type=bind,src=/absolute/path/to/service-config.toml,dst=/app/config.toml,readonly \
simplicity-unchained-service
```

Provision the host configuration outside the Docker build context with a unique
signing key; see the service [Docker instructions](service/README.md#docker).
The container runs as a non-root user (`uid=1000`). Ensure the private mounted
configuration is readable by that user. An unconfigured container exits unsuccessfully.

## Reporting Bugs

Open a GitHub issue including:

1. What happened vs. what you expected.
2. A minimal command sequence or code snippet to reproduce the issue.
3. Your OS, Rust version (`rustc --version`), and commit hash.
4. Relevant error output with sensitive data redacted.

For security-sensitive issues, please follow responsible disclosure and contact the maintainers privately before opening a public issue.

## Licence

By contributing to this project you agree that your contributions are released under the [CC0 1.0 Universal](LICENCE) licence, the same licence that covers the project.
Loading
Loading