Skip to content

Commit d190505

Browse files
committed
Merge #326: Depricate broken relative timelock jets
a97e57c Replace Bitcoin Relative Timelock Jets (Russell O'Connor) 44ff79f Mark depricated parts of the TxEnv as obsolete (Russell O'Connor) fc466a8 Deprecate Broken Jets (Russell O'Connor) Pull request description: Fixes #325. ACKs for top commit: apoelstra: ACK a97e57c; successfully ran local tests; checked the new logic against BIP 68 delta1: ACK a97e57c Tree-SHA512: 1f23d9bec7852b8c9577daf145c04f5700d254075474c9256f4aa7e368786d8a85f448441a1a926f84bdd680b729ac2f3a7f78298d6af1273f7c94862b4d2184
2 parents d47bfc6 + a97e57c commit d190505

23 files changed

Lines changed: 228 additions & 210 deletions

File tree

C/bitcoin/bitcoinJets.c

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,26 @@ static uint_fast32_t lockTime(const bitcoinTransaction* tx) {
4141
return !tx->isFinal && 500000000U <= tx->lockTime ? tx->lockTime : 0;
4242
}
4343

44-
static uint_fast16_t lockDistance(const bitcoinTransaction* tx) {
45-
return 2 <= tx->version ? tx->lockDistance : 0;
44+
static uint_fast16_t lockDistance(const bitcoinTransaction* tx, uint_fast32_t ix) {
45+
simplicity_assert(ix < tx->numInputs);
46+
if (2 <= tx->version &&
47+
tx->input[ix].sequence < 0x80000000 &&
48+
!(tx->input[ix].sequence & ((uint_fast32_t)1 << 22))) {
49+
return tx->input[ix].sequence & 0xffff;
50+
} else {
51+
return 0;
52+
}
4653
}
4754

48-
static uint_fast16_t lockDuration(const bitcoinTransaction* tx) {
49-
return 2 <= tx->version ? tx->lockDuration : 0;
55+
static uint_fast16_t lockDuration(const bitcoinTransaction* tx, uint_fast32_t ix) {
56+
simplicity_assert(ix < tx->numInputs);
57+
if (2 <= tx->version &&
58+
tx->input[ix].sequence < 0x80000000 &&
59+
!!(tx->input[ix].sequence & ((uint_fast32_t)1 << 22))) {
60+
return tx->input[ix].sequence & 0xffff;
61+
} else {
62+
return 0;
63+
}
5064
}
5165

5266
/* version : ONE |- TWO^32 */
@@ -312,14 +326,16 @@ bool simplicity_bitcoin_tx_lock_time(frameItem* dst, frameItem src, const txEnv*
312326
/* tx_lock_distance : ONE |- TWO^16 */
313327
bool simplicity_bitcoin_tx_lock_distance(frameItem* dst, frameItem src, const txEnv* env) {
314328
(void) src; // src is unused;
315-
simplicity_write16(dst, lockDistance(env->tx));
329+
if (env->tx->numInputs <= env->ix) return false;
330+
simplicity_write16(dst, lockDistance(env->tx, env->ix));
316331
return true;
317332
}
318333

319334
/* tx_lock_duration : ONE |- TWO^16 */
320335
bool simplicity_bitcoin_tx_lock_duration(frameItem* dst, frameItem src, const txEnv* env) {
321336
(void) src; // src is unused;
322-
simplicity_write16(dst, lockDuration(env->tx));
337+
if (env->tx->numInputs <= env->ix) return false;
338+
simplicity_write16(dst, lockDuration(env->tx, env->ix));
323339
return true;
324340
}
325341

@@ -340,15 +356,17 @@ bool simplicity_bitcoin_check_lock_time(frameItem* dst, frameItem src, const txE
340356
/* check_lock_distance : TWO^16 |- ONE */
341357
bool simplicity_bitcoin_check_lock_distance(frameItem* dst, frameItem src, const txEnv* env) {
342358
(void) dst; // dst is unused;
359+
if (env->tx->numInputs <= env->ix) return false;
343360
uint_fast16_t x = simplicity_read16(&src);
344-
return x <= lockDistance(env->tx);
361+
return x <= lockDistance(env->tx, env->ix);
345362
}
346363

347364
/* check_lock_duration : TWO^16 |- ONE */
348365
bool simplicity_bitcoin_check_lock_duration(frameItem* dst, frameItem src, const txEnv* env) {
349366
(void) dst; // dst is unused;
367+
if (env->tx->numInputs <= env->ix) return false;
350368
uint_fast16_t x = simplicity_read16(&src);
351-
return x <= lockDuration(env->tx);
369+
return x <= lockDuration(env->tx, env->ix);
352370
}
353371

354372
/* build_tapleaf_simplicity : TWO^256 |- TWO^256 */

C/bitcoin/env.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,6 @@ extern bitcoinTransaction* simplicity_bitcoin_mallocTransaction(const rawBitcoin
114114
copyInput(&input[i], &rawTx->input[i]);
115115
tx->totalInputValue += input[i].txo.value;
116116
if (input[i].sequence < 0xffffffff) { tx->isFinal = false; }
117-
if (input[i].sequence < 0x80000000) {
118-
const uint_fast16_t maskedSequence = input[i].sequence & 0xffff;
119-
if (input[i].sequence & ((uint_fast32_t)1 << 22)) {
120-
if (tx->lockDuration < maskedSequence) tx->lockDuration = maskedSequence;
121-
} else {
122-
if (tx->lockDistance < maskedSequence) tx->lockDistance = maskedSequence;
123-
}
124-
}
125117
sha256_hash(&ctx_inputOutpointsHash, &input[i].prevOutpoint.txid);
126118
sha256_u32be(&ctx_inputOutpointsHash, input[i].prevOutpoint.ix);
127119
sha256_u64be(&ctx_inputValuesHash, input[i].txo.value);

C/bitcoin/primitiveJetNode.inc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,15 @@
186186
,[CHECK_LOCK_DISTANCE] =
187187
{ .tag = JET
188188
, .jet = simplicity_bitcoin_check_lock_distance
189-
, .cmr = {{0xdbaa6fedu, 0xb73b2e31u, 0xa80ccbd1u, 0x4daaa5b8u, 0xce212cdeu, 0x0cbfd96du, 0x5db9715fu, 0xd19f8899u}}
189+
, .cmr = {{0x38fdf7ddu, 0x28538670u, 0xfb34c1bfu, 0xe72f17e2u, 0xca5784f8u, 0x7fed88eau, 0xb584792bu, 0x3974bd18u}}
190190
, .sourceIx = ty_w16
191191
, .targetIx = ty_u
192192
, .cost = 84 /* milli weight units */
193193
}
194194
,[CHECK_LOCK_DURATION] =
195195
{ .tag = JET
196196
, .jet = simplicity_bitcoin_check_lock_duration
197-
, .cmr = {{0xdde93f33u, 0xf9b9d1d3u, 0xa3f2b3e8u, 0xb90f6d8bu, 0xeffccb45u, 0x81210eeau, 0xf06bd32fu, 0x6319df6eu}}
197+
, .cmr = {{0x77503832u, 0x6eae25c7u, 0x209b2443u, 0x06eaa9f9u, 0x204c7eceu, 0x2dd63b45u, 0x2e10017fu, 0xa4ea53cfu}}
198198
, .sourceIx = ty_w16
199199
, .targetIx = ty_u
200200
, .cost = 78 /* milli weight units */
@@ -3298,15 +3298,15 @@
32983298
,[TX_LOCK_DISTANCE] =
32993299
{ .tag = JET
33003300
, .jet = simplicity_bitcoin_tx_lock_distance
3301-
, .cmr = {{0x8c0b0c44u, 0x2bc20978u, 0xfa4c2b3du, 0x52a7fe7cu, 0x3f86e3d2u, 0x1b42130eu, 0xbb8dba45u, 0xe0f5e64bu}}
3301+
, .cmr = {{0xb6fbaac2u, 0x10a306beu, 0x8b58d0d7u, 0xb1563f62u, 0x2336d2aeu, 0xb56c393du, 0x276445a9u, 0xa22cc4a7u}}
33023302
, .sourceIx = ty_u
33033303
, .targetIx = ty_w16
33043304
, .cost = 72 /* milli weight units */
33053305
}
33063306
,[TX_LOCK_DURATION] =
33073307
{ .tag = JET
33083308
, .jet = simplicity_bitcoin_tx_lock_duration
3309-
, .cmr = {{0x09b18d5cu, 0x2f08402bu, 0xbcf8c31eu, 0xa43435efu, 0xffd9ea0eu, 0xf8758f76u, 0xbb27272bu, 0x4d60dc62u}}
3309+
, .cmr = {{0x53572818u, 0xe7e5b98fu, 0x968c9da7u, 0xdf5090d9u, 0x826f9bcfu, 0x84b63639u, 0x5eea321bu, 0x6909ece9u}}
33103310
, .sourceIx = ty_u
33113311
, .targetIx = ty_w16
33123312
, .cost = 66 /* milli weight units */

C/bitcoin/txEnv.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,6 @@ typedef struct bitcoinTransaction {
6060
uint_fast32_t numOutputs;
6161
uint_fast32_t version;
6262
uint_fast32_t lockTime;
63-
/* lockDuration and lockDistance values are set even when the version is 0 or 1.
64-
* This is similar to lockTime whose value is also set, even when the transaction is final.
65-
*/
66-
uint_fast16_t lockDistance;
67-
uint_fast16_t lockDuration; /* Units of 512 seconds */
6863
bool isFinal;
6964
} bitcoinTransaction;
7065

C/elements/decodeElementsJets.inc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@
5252
switch (code) {
5353
case 1: *result = CHECK_LOCK_HEIGHT; return SIMPLICITY_NO_ERROR;
5454
case 2: *result = CHECK_LOCK_TIME; return SIMPLICITY_NO_ERROR;
55-
case 3: *result = CHECK_LOCK_DISTANCE; return SIMPLICITY_NO_ERROR;
56-
case 4: *result = CHECK_LOCK_DURATION; return SIMPLICITY_NO_ERROR;
55+
case 3: *result = BROKEN_DO_NOT_USE_CHECK_LOCK_DISTANCE; return SIMPLICITY_NO_ERROR;
56+
case 4: *result = BROKEN_DO_NOT_USE_CHECK_LOCK_DURATION; return SIMPLICITY_NO_ERROR;
5757
case 5: *result = TX_LOCK_HEIGHT; return SIMPLICITY_NO_ERROR;
5858
case 6: *result = TX_LOCK_TIME; return SIMPLICITY_NO_ERROR;
59-
case 7: *result = TX_LOCK_DISTANCE; return SIMPLICITY_NO_ERROR;
60-
case 8: *result = TX_LOCK_DURATION; return SIMPLICITY_NO_ERROR;
59+
case 7: *result = BROKEN_DO_NOT_USE_TX_LOCK_DISTANCE; return SIMPLICITY_NO_ERROR;
60+
case 8: *result = BROKEN_DO_NOT_USE_TX_LOCK_DURATION; return SIMPLICITY_NO_ERROR;
6161
case 9: *result = TX_IS_FINAL; return SIMPLICITY_NO_ERROR;
6262
}
6363
break;

C/elements/elementsJets.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,12 @@ static uint_fast32_t lockTime(const elementsTransaction* tx) {
153153
return !tx->isFinal && 500000000U <= tx->lockTime ? tx->lockTime : 0;
154154
}
155155

156-
static uint_fast16_t lockDistance(const elementsTransaction* tx) {
157-
return 2 <= tx->version ? tx->lockDistance : 0;
156+
static uint_fast16_t obsolete_lockDistance(const elementsTransaction* tx) {
157+
return 2 <= tx->version ? tx->obsolete_lockDistance : 0;
158158
}
159159

160-
static uint_fast16_t lockDuration(const elementsTransaction* tx) {
161-
return 2 <= tx->version ? tx->lockDuration : 0;
160+
static uint_fast16_t obsolete_lockDuration(const elementsTransaction* tx) {
161+
return 2 <= tx->version ? tx->obsolete_lockDuration : 0;
162162
}
163163

164164
static bool isFee(const sigOutput* output) {
@@ -733,16 +733,16 @@ bool simplicity_tx_lock_time(frameItem* dst, frameItem src, const txEnv* env) {
733733
}
734734

735735
/* tx_lock_distance : ONE |- TWO^16 */
736-
bool simplicity_tx_lock_distance(frameItem* dst, frameItem src, const txEnv* env) {
736+
bool simplicity_broken_do_not_use_tx_lock_distance(frameItem* dst, frameItem src, const txEnv* env) {
737737
(void) src; // src is unused;
738-
simplicity_write16(dst, lockDistance(env->tx));
738+
simplicity_write16(dst, obsolete_lockDistance(env->tx));
739739
return true;
740740
}
741741

742742
/* tx_lock_duration : ONE |- TWO^16 */
743-
bool simplicity_tx_lock_duration(frameItem* dst, frameItem src, const txEnv* env) {
743+
bool simplicity_broken_do_not_use_tx_lock_duration(frameItem* dst, frameItem src, const txEnv* env) {
744744
(void) src; // src is unused;
745-
simplicity_write16(dst, lockDuration(env->tx));
745+
simplicity_write16(dst, obsolete_lockDuration(env->tx));
746746
return true;
747747
}
748748

@@ -761,17 +761,17 @@ bool simplicity_check_lock_time(frameItem* dst, frameItem src, const txEnv* env)
761761
}
762762

763763
/* check_lock_distance : TWO^16 |- ONE */
764-
bool simplicity_check_lock_distance(frameItem* dst, frameItem src, const txEnv* env) {
764+
bool simplicity_broken_do_not_use_check_lock_distance(frameItem* dst, frameItem src, const txEnv* env) {
765765
(void) dst; // dst is unused;
766766
uint_fast16_t x = simplicity_read16(&src);
767-
return x <= lockDistance(env->tx);
767+
return x <= obsolete_lockDistance(env->tx);
768768
}
769769

770770
/* check_lock_duration : TWO^16 |- ONE */
771-
bool simplicity_check_lock_duration(frameItem* dst, frameItem src, const txEnv* env) {
771+
bool simplicity_broken_do_not_use_check_lock_duration(frameItem* dst, frameItem src, const txEnv* env) {
772772
(void) dst; // dst is unused;
773773
uint_fast16_t x = simplicity_read16(&src);
774-
return x <= lockDuration(env->tx);
774+
return x <= obsolete_lockDuration(env->tx);
775775
}
776776

777777
/* calculate_issuance_entropy : TWO^256 * TWO^32 * TWO^256 |- TWO^256 */

C/elements/elementsJets.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ bool simplicity_num_outputs(frameItem* dst, frameItem src, const txEnv* env);
5959
bool simplicity_tx_is_final(frameItem* dst, frameItem src, const txEnv* env);
6060
bool simplicity_tx_lock_height(frameItem* dst, frameItem src, const txEnv* env);
6161
bool simplicity_tx_lock_time(frameItem* dst, frameItem src, const txEnv* env);
62-
bool simplicity_tx_lock_distance(frameItem* dst, frameItem src, const txEnv* env);
63-
bool simplicity_tx_lock_duration(frameItem* dst, frameItem src, const txEnv* env);
62+
bool simplicity_broken_do_not_use_tx_lock_distance(frameItem* dst, frameItem src, const txEnv* env);
63+
bool simplicity_broken_do_not_use_tx_lock_duration(frameItem* dst, frameItem src, const txEnv* env);
6464
bool simplicity_check_lock_height(frameItem* dst, frameItem src, const txEnv* env);
6565
bool simplicity_check_lock_time(frameItem* dst, frameItem src, const txEnv* env);
66-
bool simplicity_check_lock_distance(frameItem* dst, frameItem src, const txEnv* env);
67-
bool simplicity_check_lock_duration(frameItem* dst, frameItem src, const txEnv* env);
66+
bool simplicity_broken_do_not_use_check_lock_distance(frameItem* dst, frameItem src, const txEnv* env);
67+
bool simplicity_broken_do_not_use_check_lock_duration(frameItem* dst, frameItem src, const txEnv* env);
6868
bool simplicity_calculate_issuance_entropy(frameItem* dst, frameItem src, const txEnv* env);
6969
bool simplicity_calculate_asset(frameItem* dst, frameItem src, const txEnv* env);
7070
bool simplicity_calculate_explicit_token(frameItem* dst, frameItem src, const txEnv* env);

C/elements/env.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -408,12 +408,12 @@ extern elementsTransaction* simplicity_elements_mallocTransaction(const rawEleme
408408
copyInput(&input[i], &rawTx->input[i]);
409409
if (input[i].sequence < 0xffffffff) { tx->isFinal = false; }
410410
if (input[i].sequence < 0x80000000) {
411-
const uint_fast16_t maskedSequence = input[i].sequence & 0xffff;
412-
if (input[i].sequence & ((uint_fast32_t)1 << 22)) {
413-
if (tx->lockDuration < maskedSequence) tx->lockDuration = maskedSequence;
414-
} else {
415-
if (tx->lockDistance < maskedSequence) tx->lockDistance = maskedSequence;
416-
}
411+
const uint_fast16_t maskedSequence = input[i].sequence & 0xffff;
412+
if (input[i].sequence & ((uint_fast32_t)1 << 22)) {
413+
if (tx->obsolete_lockDuration < maskedSequence) tx->obsolete_lockDuration = maskedSequence;
414+
} else {
415+
if (tx->obsolete_lockDistance < maskedSequence) tx->obsolete_lockDistance = maskedSequence;
416+
}
417417
}
418418
if (input[i].isPegin) {
419419
sha256_uchar(&ctx_inputOutpointsHash, 1);

C/elements/primitiveEnumJet.inc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ AND_8,
1515
ANNEX_HASH,
1616
ASSET_AMOUNT_HASH,
1717
BIP_0340_VERIFY,
18+
BROKEN_DO_NOT_USE_CHECK_LOCK_DISTANCE,
19+
BROKEN_DO_NOT_USE_CHECK_LOCK_DURATION,
20+
BROKEN_DO_NOT_USE_TX_LOCK_DISTANCE,
21+
BROKEN_DO_NOT_USE_TX_LOCK_DURATION,
1822
BUILD_TAPBRANCH,
1923
BUILD_TAPLEAF_SIMPLICITY,
2024
BUILD_TAPTWEAK,
@@ -27,8 +31,6 @@ CH_16,
2731
CH_32,
2832
CH_64,
2933
CH_8,
30-
CHECK_LOCK_DISTANCE,
31-
CHECK_LOCK_DURATION,
3234
CHECK_LOCK_HEIGHT,
3335
CHECK_LOCK_TIME,
3436
CHECK_SIG_VERIFY,
@@ -454,8 +456,6 @@ TOTAL_FEE,
454456
TRANSACTION_ID,
455457
TX_HASH,
456458
TX_IS_FINAL,
457-
TX_LOCK_DISTANCE,
458-
TX_LOCK_DURATION,
459459
TX_LOCK_HEIGHT,
460460
TX_LOCK_TIME,
461461
VERIFY,

C/elements/primitiveJetNode.inc

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,38 @@
127127
, .targetIx = ty_u
128128
, .cost = 49087 /* milli weight units */
129129
}
130+
,[BROKEN_DO_NOT_USE_CHECK_LOCK_DISTANCE] =
131+
{ .tag = JET
132+
, .jet = simplicity_broken_do_not_use_check_lock_distance
133+
, .cmr = {{0x7f78c7a7u, 0x7a25ada2u, 0x23267d23u, 0x9a5922f7u, 0x64b8ac0cu, 0x2fcef68eu, 0xb93c0d92u, 0xda4af515u}}
134+
, .sourceIx = ty_w16
135+
, .targetIx = ty_u
136+
, .cost = 105 /* milli weight units */
137+
}
138+
,[BROKEN_DO_NOT_USE_CHECK_LOCK_DURATION] =
139+
{ .tag = JET
140+
, .jet = simplicity_broken_do_not_use_check_lock_duration
141+
, .cmr = {{0x73dac8e2u, 0x5d87eaf3u, 0x82c2a772u, 0x06ad38b9u, 0x384361e7u, 0xd0dc87c0u, 0xfa7af7eau, 0x524597b7u}}
142+
, .sourceIx = ty_w16
143+
, .targetIx = ty_u
144+
, .cost = 102 /* milli weight units */
145+
}
146+
,[BROKEN_DO_NOT_USE_TX_LOCK_DISTANCE] =
147+
{ .tag = JET
148+
, .jet = simplicity_broken_do_not_use_tx_lock_distance
149+
, .cmr = {{0x4c7773b8u, 0x18cb7ee5u, 0xf54f925au, 0xad015677u, 0xa043a72fu, 0x316a187cu, 0xc28c696cu, 0xfcb90807u}}
150+
, .sourceIx = ty_u
151+
, .targetIx = ty_w16
152+
, .cost = 91 /* milli weight units */
153+
}
154+
,[BROKEN_DO_NOT_USE_TX_LOCK_DURATION] =
155+
{ .tag = JET
156+
, .jet = simplicity_broken_do_not_use_tx_lock_duration
157+
, .cmr = {{0xcc9c64c8u, 0xb6eb4bf0u, 0x9694af5au, 0x35d957a4u, 0x05e66c1bu, 0x35224ed6u, 0x75878918u, 0x452440b2u}}
158+
, .sourceIx = ty_u
159+
, .targetIx = ty_w16
160+
, .cost = 84 /* milli weight units */
161+
}
130162
,[BUILD_TAPBRANCH] =
131163
{ .tag = JET
132164
, .jet = simplicity_build_tapbranch
@@ -223,22 +255,6 @@
223255
, .targetIx = ty_w8
224256
, .cost = 77 /* milli weight units */
225257
}
226-
,[CHECK_LOCK_DISTANCE] =
227-
{ .tag = JET
228-
, .jet = simplicity_check_lock_distance
229-
, .cmr = {{0x7f78c7a7u, 0x7a25ada2u, 0x23267d23u, 0x9a5922f7u, 0x64b8ac0cu, 0x2fcef68eu, 0xb93c0d92u, 0xda4af515u}}
230-
, .sourceIx = ty_w16
231-
, .targetIx = ty_u
232-
, .cost = 105 /* milli weight units */
233-
}
234-
,[CHECK_LOCK_DURATION] =
235-
{ .tag = JET
236-
, .jet = simplicity_check_lock_duration
237-
, .cmr = {{0x73dac8e2u, 0x5d87eaf3u, 0x82c2a772u, 0x06ad38b9u, 0x384361e7u, 0xd0dc87c0u, 0xfa7af7eau, 0x524597b7u}}
238-
, .sourceIx = ty_w16
239-
, .targetIx = ty_u
240-
, .cost = 102 /* milli weight units */
241-
}
242258
,[CHECK_LOCK_HEIGHT] =
243259
{ .tag = JET
244260
, .jet = simplicity_check_lock_height
@@ -3639,22 +3655,6 @@
36393655
, .targetIx = ty_b
36403656
, .cost = 71 /* milli weight units */
36413657
}
3642-
,[TX_LOCK_DISTANCE] =
3643-
{ .tag = JET
3644-
, .jet = simplicity_tx_lock_distance
3645-
, .cmr = {{0x4c7773b8u, 0x18cb7ee5u, 0xf54f925au, 0xad015677u, 0xa043a72fu, 0x316a187cu, 0xc28c696cu, 0xfcb90807u}}
3646-
, .sourceIx = ty_u
3647-
, .targetIx = ty_w16
3648-
, .cost = 91 /* milli weight units */
3649-
}
3650-
,[TX_LOCK_DURATION] =
3651-
{ .tag = JET
3652-
, .jet = simplicity_tx_lock_duration
3653-
, .cmr = {{0xcc9c64c8u, 0xb6eb4bf0u, 0x9694af5au, 0x35d957a4u, 0x05e66c1bu, 0x35224ed6u, 0x75878918u, 0x452440b2u}}
3654-
, .sourceIx = ty_u
3655-
, .targetIx = ty_w16
3656-
, .cost = 84 /* milli weight units */
3657-
}
36583658
,[TX_LOCK_HEIGHT] =
36593659
{ .tag = JET
36603660
, .jet = simplicity_tx_lock_height

0 commit comments

Comments
 (0)