public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
From: Jose Storopoli <jose@storopoli•io>
To: Bitcoin Development Mailing List <bitcoindev@googlegroups.com>
Subject: [bitcoindev] Announcing Bitcoin BOSD: Standardized Withdrawal Output Specification for L2s
Date: Sat, 15 Feb 2025 03:37:24 -0800 (PST)	[thread overview]
Message-ID: <94ac8f66-1627-4526-bb34-095361a30fb4n@googlegroups.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 3199 bytes --]


Dear Bitcoin Dev Community, 

I am excited to introduce Bitcoin BOSD (Bitcoin Output Script Descriptor), 
a new specification and open source Rust implementation to simplify 
relay-safe (standardness-guarantee) on-chain withdrawals for Bitcoin Layer 
2 solutions.

Key Features:
- Standardness-by-construction for withdrawal outputs 
- Eliminates ad-hoc standardness rule implementations in L2s 
- Compact representation

Problem Solved:
L2 operators currently risk being unable to process withdrawals if users 
request non-standard transactions (e.g., oversized OP_RETURN). BOSD ensures 
outputs are correct-by-construction according to Bitcoin network's 
standardness rules, abstracting away complex validation logic.

Available on crates.io <https://crates.io/crates/bitcoin-bosd>

Get Involved:
Detailed Specification and Motivation/Rationale: SPECIFICATION.md 
<https://github.com/alpenlabs/bitcoin-bosd/blob/main/SPECIFICATION.md>
Repository: github.com/alpenlabs/bitcoin-bosd
Feedback welcome via GitHub Issues and Discussion; or the mailing list. 

This work emerged from practical challenges faced by myself and Trey Del 
Bonis (GitHub @delbonis) at Alpen Labs, while building validation logic for 
processing L2 withdrawals on-chain for Strata: a Bitcoin-native BitVM-based 
bridge to a ZK-rollup. We believe standardization in this domain will 
benefit the entire ecosystem by reducing fragmentation and improving 
interoperability.
The specification is has a CC0 public domain license, and the Rust 
implementation is MIT/Apache-2.0 double licensed.

The structure of a BOSD consists of:

- 1-byte tag representing a type ID.
- Arbitrary-length cryptographic payload (although practically bounded to 
like
  80 bytes).

Here's a table for the supported outputs. Also note that we can trivially 
extend it by adding more prefixes using the type it byte.

```
| Type | Payload Length(s) | Payload Interpretation | Spend Type    | 
Mainnet Address Prefix |
| ---- | ----------------- | ---------------------- | ------------- | 
---------------------- |
| 0    | ..=80             | `OP_RETURN` payload    | (N/A)         | (N/A) 
                 |
| 1    | 20                | pubkey hash            | P2PKH         | 
`1...`                 |
| 2    | 20                | script hash            | P2SH          | 
`3...`                 |
| 3    | 20, 32            | SegWit v0 hash         | P2WPKH, P2WSH | 
`bc1q...`              |
| 4    | 32                | SegWit v1 public key   | P2TR          | 
`bc1p...`              |
```

Since we strived for compact representation both in-memory and also 
over-the-wire, BOSD does not support checksums or any native error 
correction.

PS: Technically Strata is not a defect L2, since it is a 1-of-N 
trust-minimized bridge, and not a fully trustless bridge.

-- 
You received this message because you are subscribed to the Google Groups "Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bitcoindev+unsubscribe@googlegroups•com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/94ac8f66-1627-4526-bb34-095361a30fb4n%40googlegroups.com.

[-- Attachment #1.2: Type: text/html, Size: 3975 bytes --]

             reply	other threads:[~2025-02-15 12:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-15 11:37 Jose Storopoli [this message]
2025-02-16  8:50 ` Martin Habovštiak
2025-02-19  2:29 ` David A. Harding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=94ac8f66-1627-4526-bb34-095361a30fb4n@googlegroups.com \
    --to=jose@storopoli$(echo .)io \
    --cc=bitcoindev@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox