summaryrefslogtreecommitdiff
path: root/fe/81791c5159867a73965164ac552f23d76dbd5c
blob: 6008ed00c563a7d0d73539ad8fa4c91b3456f43a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
Delivery-date: Sat, 15 Feb 2025 04:02:38 -0800
Received: from mail-yb1-f186.google.com ([209.85.219.186])
	by mail.fairlystable.org with esmtps  (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
	(Exim 4.94.2)
	(envelope-from <bitcoindev+bncBDCMX3PZYEFBBU4EYK6QMGQE6Q6SYLA@googlegroups.com>)
	id 1tjGsX-00067i-7L
	for bitcoindev@gnusha.org; Sat, 15 Feb 2025 04:02:38 -0800
Received: by mail-yb1-f186.google.com with SMTP id 3f1490d57ef6-e3a0f608b88sf3639334276.0
        for <bitcoindev@gnusha.org>; Sat, 15 Feb 2025 04:02:36 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=googlegroups.com; s=20230601; t=1739620950; x=1740225750; darn=gnusha.org;
        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
         :list-id:mailing-list:precedence:x-original-sender:mime-version
         :subject:message-id:to:from:date:sender:from:to:cc:subject:date
         :message-id:reply-to;
        bh=jMejw/s6J9cS6tu39UbqtinwFVblEfp8Hhi8DLcWde0=;
        b=ig8WfXtK1QshT//irtBKRBkzfXQuWGGbAipXrCc+xzHAVAWbq6p5MRyw9y0KK2wFTz
         oIpcytJDyZbXhUQVvKvmeXmcOzvm5fy6mDYMyUNlSN9WY6zGdVsW7w2ZOUxebYNB3fTM
         hUS2x8g87r4gJ4Sw7zGbod1hAh2oWl+uLwUdHUOEO7b5KrixnB+SD3vd8hlhtTxQzQD0
         yhIICx2reJO8+VCvqImw4BPQ/5nWaNfvcP39m5bQ/KCON2zpLEZoyzDWGtbFjTMbt7tC
         sUxFSf+SqifJB/6KN1g/MmrMnio5+KB/1u/Svq5VT7HEhidxLHMS27Xn8p6/jAsgI/8Q
         cKwA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1739620950; x=1740225750;
        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
         :list-id:mailing-list:precedence:x-original-sender:mime-version
         :subject:message-id:to:from:date:x-beenthere:x-gm-message-state
         :sender:from:to:cc:subject:date:message-id:reply-to;
        bh=jMejw/s6J9cS6tu39UbqtinwFVblEfp8Hhi8DLcWde0=;
        b=V4K/q2pitGgehAaZs3nDR8bs/ezQLCutOXEi6qdqjb+AUI/iwXp2wTx/dGuaOTQKBK
         8hFyMnbqYyxfVpvoUEjUtSv+HgU4r8I8tBgI5Y23m1ChPXGk+eJH0sF34fhGdxCu/VHG
         id18QlXsmceTO6+j6Hr+wsqiKQzPocamyzhGvLbuuFrThKCjN2wETX+gS0w9cxygnRel
         +EEJcRBwnvLZ2LVrQsyDsZiLT2fO2FS0t5c9ga+SrEw8xaWGcwRm7OpsZ9HcnanRlnrq
         L0L2BEa0xvMZwVB2cBg0r1kEFTgunCe6PUnuCZ4PBYA3yQ2z21k3K5WHEMSLkDvnh5jx
         HebA==
Sender: bitcoindev@googlegroups.com
X-Forwarded-Encrypted: i=1; AJvYcCU8vVpBeT7m+E2V6wx3OXlgkCd4LEgd76WOsP5NRNTqj/iXPvtnMmDon8dpKHcG7unZYwQtGGU6CqMX@gnusha.org
X-Gm-Message-State: AOJu0YywO1U06Kzydo6wNlUJKX113wM2uo15gwEsz9UO/3zIjWLMkshb
	NFoHOB4JmT7f1pRFDrqo6zKdMj9wXa+kp6h3DrL9dIYnjKWuo75F
X-Google-Smtp-Source: AGHT+IGjxZBoBr0hm7Z2h0u+N0nljf5cQZERz33UC8E9xsZsybDlnyKlKw+EeNroh1X8X9hvqeMN8g==
X-Received: by 2002:a05:6902:3387:b0:e5d:b2c4:7cb7 with SMTP id 3f1490d57ef6-e5dc9047e37mr2299369276.12.1739620950577;
        Sat, 15 Feb 2025 04:02:30 -0800 (PST)
X-BeenThere: bitcoindev@googlegroups.com; h=Adn5yVFnem9ofiiadlE4zThClAbEP4P87Z3x70RJrnnc3SCScw==
Received: by 2002:a25:107:0:b0:e5b:269e:993d with SMTP id 3f1490d57ef6-e5da7a26919ls2430728276.2.-pod-prod-08-us;
 Sat, 15 Feb 2025 04:02:26 -0800 (PST)
X-Received: by 2002:a05:690c:3607:b0:6f5:4304:fb8 with SMTP id 00721157ae682-6fb582b8988mr29848827b3.18.1739620946728;
        Sat, 15 Feb 2025 04:02:26 -0800 (PST)
Received: by 2002:a05:690c:2c88:b0:6ef:77aa:1002 with SMTP id 00721157ae682-6fb44a417fbms7b3;
        Sat, 15 Feb 2025 03:37:26 -0800 (PST)
X-Received: by 2002:a05:690c:6f8b:b0:6f9:a33a:4bf9 with SMTP id 00721157ae682-6fb582758f1mr24758517b3.8.1739619445275;
        Sat, 15 Feb 2025 03:37:25 -0800 (PST)
Date: Sat, 15 Feb 2025 03:37:24 -0800 (PST)
From: Jose Storopoli <jose@storopoli.io>
To: Bitcoin Development Mailing List <bitcoindev@googlegroups.com>
Message-Id: <94ac8f66-1627-4526-bb34-095361a30fb4n@googlegroups.com>
Subject: [bitcoindev] Announcing Bitcoin BOSD: Standardized Withdrawal Output
 Specification for L2s
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_70548_818460131.1739619444793"
X-Original-Sender: jose@storopoli.io
Precedence: list
Mailing-list: list bitcoindev@googlegroups.com; contact bitcoindev+owners@googlegroups.com
List-ID: <bitcoindev.googlegroups.com>
X-Google-Group-Id: 786775582512
List-Post: <https://groups.google.com/group/bitcoindev/post>, <mailto:bitcoindev@googlegroups.com>
List-Help: <https://groups.google.com/support/>, <mailto:bitcoindev+help@googlegroups.com>
List-Archive: <https://groups.google.com/group/bitcoindev
List-Subscribe: <https://groups.google.com/group/bitcoindev/subscribe>, <mailto:bitcoindev+subscribe@googlegroups.com>
List-Unsubscribe: <mailto:googlegroups-manage+786775582512+unsubscribe@googlegroups.com>,
 <https://groups.google.com/group/bitcoindev/subscribe>
X-Spam-Score: -0.7 (/)

------=_Part_70548_818460131.1739619444793
Content-Type: multipart/alternative; 
	boundary="----=_Part_70549_605756269.1739619444793"

------=_Part_70549_605756269.1739619444793
Content-Type: text/plain; charset="UTF-8"


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.

------=_Part_70549_605756269.1739619444793
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<br />Dear Bitcoin Dev Community, <br /><br />I am excited to introduce Bit=
coin 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.<br /><br />Key Features=
:<div>- Standardness-by-construction for withdrawal outputs <br />- Elimina=
tes ad-hoc standardness rule implementations in L2s <br />- Compact represe=
ntation<br /><br />Problem Solved:<br />L2 operators currently risk being u=
nable 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.<br /><br />Available on <a href=3D"https://crates.io/cra=
tes/bitcoin-bosd">crates.io</a><br /><br />Get Involved:</div><div>Detailed=
 Specification and Motivation/Rationale: <a href=3D"https://github.com/alpe=
nlabs/bitcoin-bosd/blob/main/SPECIFICATION.md">SPECIFICATION.md</a><br />Re=
pository: <a href=3D"https://github.com/alpenlabs/bitcoin-bosd">github.com/=
alpenlabs/bitcoin-bosd</a><br />Feedback welcome via GitHub Issues and Disc=
ussion; or the mailing list.=C2=A0<br /><br />This work emerged from practi=
cal challenges faced by myself and Trey Del Bonis (GitHub @delbonis) at Alp=
en Labs, while building validation logic for processing L2 withdrawals on-c=
hain for Strata: a Bitcoin-native BitVM-based bridge to a ZK-rollup. We bel=
ieve standardization in this domain will benefit the entire ecosystem by re=
ducing fragmentation and improving interoperability.</div><div>The specific=
ation is has a CC0 public domain license, and the Rust implementation is MI=
T/Apache-2.0 double licensed.</div><div><br /></div><div>The structure of a=
 BOSD consists of:<br /><br />- 1-byte tag representing a type ID.<br />- A=
rbitrary-length cryptographic payload (although practically bounded to like=
<br />=C2=A0 80 bytes).<br /></div><div><br /></div><div>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.</div><div><br /></div><div>```</div>=
<div>| Type | Payload Length(s) | Payload Interpretation | Spend Type =C2=
=A0 =C2=A0| Mainnet Address Prefix |<br />| ---- | ----------------- | ----=
------------------ | ------------- | ---------------------- |<br />| 0 =C2=
=A0 =C2=A0| ..=3D80 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | `OP_RETURN`=
 payload =C2=A0 =C2=A0| (N/A) =C2=A0 =C2=A0 =C2=A0 =C2=A0 | (N/A) =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|<br />| 1 =C2=A0 =
=C2=A0| 20 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| pubkey =
hash =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| P2PKH =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 | `1...` =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |<b=
r />| 2 =C2=A0 =C2=A0| 20 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0| script hash =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| P2SH =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0| `3...` =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 |<br />| 3 =C2=A0 =C2=A0| 20, 32 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0| SegWit v0 hash =C2=A0 =C2=A0 =C2=A0 =C2=A0 | P2WPKH, P2W=
SH | `bc1q...` =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|<br />| 4 =
=C2=A0 =C2=A0| 32 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| =
SegWit v1 public key =C2=A0 | P2TR =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| `bc1=
p...` =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|<br /></div><div>```=
</div><div><br /></div><div>Since we strived for compact representation bot=
h in-memory and also over-the-wire, BOSD does not support checksums or any =
native error correction.</div><div><br /></div><div>PS: Technically Strata =
is not a defect L2, since it is a 1-of-N trust-minimized bridge, and not a =
fully trustless bridge.</div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;Bitcoin Development Mailing List&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:bitcoindev+unsubscribe@googlegroups.com">bitcoind=
ev+unsubscribe@googlegroups.com</a>.<br />
To view this discussion visit <a href=3D"https://groups.google.com/d/msgid/=
bitcoindev/94ac8f66-1627-4526-bb34-095361a30fb4n%40googlegroups.com?utm_med=
ium=3Demail&utm_source=3Dfooter">https://groups.google.com/d/msgid/bitcoind=
ev/94ac8f66-1627-4526-bb34-095361a30fb4n%40googlegroups.com</a>.<br />

------=_Part_70549_605756269.1739619444793--

------=_Part_70548_818460131.1739619444793--