No description
Find a file
Evgeny Zdanovich 4847b119cb
STR-1924: asm aux input resolution (#1193)
* feat(asm): Add aux resolver structure

* feat(storage): Implement MMR with proof generation

* feat(db): Implement persistent MMR with sled

* feat(db): Add MMR schemas to ASM database

* feat(storage): Integrate MMR with storage layer

* feat(asm): Add MMR operations to WorkerContext

* feat(asm): Maintain MMR after STF execution

* feat(asm): Implement aux resolver with proofs

* feat(asm): Connect aux resolver to worker

* feat(asm): Complete Bitcoin transaction resolution

* refactor(storage): Reorganize MMR with ops pattern

* feat(db): Add pop_leaf to MMR

* test: Add missing trait methods to MockWorkerContext

Add stub implementations for MMR-related methods in the mock test context.

* chore: Review fixes

* chore: Use Buf32 in MMR interface instead of bare array
2025-12-18 19:16:49 +00:00
.config ci: create workflows and do some housekeeping (#154) 2024-07-26 12:40:36 +05:45
.github ci(functional): run tests in parallel (#1205) 2025-12-17 05:30:48 -03:00
.vscode Administration Subprotocol Transactions with correct multisig verification (#1027) 2025-09-16 18:15:55 +00:00
benches chore: Reorganize db crates (#1137) 2025-11-11 16:49:50 +00:00
bin STR-1924: asm aux input resolution (#1193) 2025-12-18 19:16:49 +00:00
contrib contrib: add lint-check-style directive with With script (#1133) 2025-11-10 13:00:33 -05:00
crates STR-1924: asm aux input resolution (#1193) 2025-12-18 19:16:49 +00:00
docker (docker): Fix params generation script (#1048) 2025-09-26 05:16:43 -03:00
functional-tests ci(functional): run tests in parallel (#1205) 2025-12-17 05:30:48 -03:00
provers/sp1 STR-1815: prover tasks exposed as a separate service (via service framework) (#1149) 2025-12-03 12:30:13 +05:45
tests chore: add workspace lints (#836) 2025-06-02 12:16:25 -04:00
.codespellrc STR-1815: prover tasks exposed as a separate service (via service framework) (#1149) 2025-12-03 12:30:13 +05:45
.dockerignore Docker deployment fixes (#346) 2024-10-04 13:19:45 +05:45
.editorconfig ci: create workflows and do some housekeeping (#154) 2024-07-26 12:40:36 +05:45
.gitignore Str 1233 sled impl (#979) 2025-09-10 15:21:36 +00:00
.justfile Str 1781 impl evm ee (#1127) 2025-12-02 14:32:22 +05:45
.sample_env STR-366: Dockerize binaries (#281) 2024-09-23 16:56:27 -04:00
.taplo.toml refactor(crypto): use EvenPublicKey instead of Buf32 for operator wallet keys (#1145) 2025-11-14 11:09:54 -03:00
Cargo.lock STR-1924: asm aux input resolution (#1193) 2025-12-18 19:16:49 +00:00
Cargo.toml WriteBatch-generating and indexing state accessor layers (#1202) 2025-12-17 14:26:11 +00:00
codecov.yml ci: create workflows and do some housekeeping (#154) 2024-07-26 12:40:36 +05:45
CONTRIBUTING.md feat: initial Nixification (#982) 2025-09-08 15:08:10 -03:00
example_config.toml Update config and args (#669) 2025-02-27 11:52:26 +05:45
flake.lock Automated update to rustc (to nightly-2025-12-01) (#1181) 2025-12-01 15:55:19 -03:00
flake.nix ci: add shellcheck lints (#1043) 2025-09-22 17:41:45 -03:00
LICENSE-APACHE Create LICENSE-APACHE 2024-10-04 13:44:15 +05:45
LICENSE-MIT Create LICENSE-MIT 2024-10-04 13:42:19 +05:45
perf_ideas.md STR-1870: Move Transaction creation and parsing logic under canonical asm/txs (#1156) 2025-11-28 14:42:00 +05:45
README.md Update docs link in README (#922) 2025-07-10 12:22:05 +00:00
rust-toolchain.toml Automated update to rustc (to nightly-2025-12-01) (#1181) 2025-12-01 15:55:19 -03:00
rustfmt.toml chore: add import ordering rule 2024-08-27 10:19:48 +05:45

Alpen

License: MIT License: Apache-2.0 codecov ci docs

Alpen Labs Logo

Alpen gives developers the freedom to program nearly any locking conditions for BTC imaginable, limited only by the Alpen block size and gas limits. This enables developers to create new kinds of applications for BTC with features such as:

  • New signature types, "provide a valid P-256 signature to authorize a transfer"

  • Vaults, "transfers must wait N days after being initiated to be effectuated, and can be cancelled in the mean time"

  • Subscriptions, "address 0x123...9a can withdraw up to v BTC per month from this account"

  • Strong privacy, "transaction details are end-to-end encrypted and verified using a zero-knowledge proof"

  • Economically-secured zero-confirmation payments, "if a double-spend from this sender is reported, the reporter gets to claim the sender's full wallet balance"

  • Financial transactions, "if enough BTC is locked as collateral to maintain up to X% loan-to-value ratio, then up to Y of this other asset can be borrowed"

... and many more possibilities.

Technically speaking, Alpen is a work-in-progress EVM-compatible validity rollup on bitcoin. Let's break down what this means:

  • EVM-compatible: The Alpen block producer runs a client that is based on Reth, an Ethereum execution client. So far, no changes have been made that affect compatibility with the EVM spec. If you can deploy a smart contract to Ethereum, you can deploy it to Alpen with no changes.

  • Validity rollup: Every Alpen state transition is proven to be valid using cryptographic validity proofs, which clients can use for fast, low-cost verification.

  • On bitcoin: Alpen uses bitcoin for consensus and data availability. When an Alpen block gets confirmed on bitcoin, the only way to reorganize this block is to reorganize the bitcoin block that the Alpen block was confirmed in.

To learn more, check our documentation.

Important

Currently, Alpen is running on a private bitcoin signet, and uses signet blocks to store state commitments rather than the complete Alpen state data, making Alpen function more like a commit chain than a rollup. Support for full onchain data availability and for running Alpen on bitcoin mainnet are planned for future releases.

Repository structure

This repository is composed of:

  • bin/: binary crates for various clients and CLIs
  • crates/: library crates, provides types and functionalities
  • docker/: supporting files for our dockerized applications
  • functional-tests/: end-to-end tests for various scenarios
  • provers/: libraries and binaries related to zero-knowledge proofs
  • tests/: integration tests

Contributing

Contributions are generally welcome. If you intend to make larger changes please discuss them in an issue before opening a PR to avoid duplicate work and architectural mismatches.

For more information please see CONTRIBUTING.md.

License

This work is dual-licensed under MIT and Apache 2.0. You can choose between one of them if you use this work.