Skip to content

Commit e3cec16

Browse files
committed
Squashed 'src/simplicity/' changes from 6d503ea4f8..49b96499a6
49b96499a6 Replace Bitcoin Relative Timelock Jets 89ddb43eed Mark depricated parts of the TxEnv as obsolete ff5d6fe4f7 Deprecate Broken Jets ae008201ac Test Bitcoin jet deserialization e81b68f197 Add GenPrimitive --bitcoin option 7887d16f24 Bitcoin specific fee jets 68603073b3 Bitcoin specific environment ae3287e60f Refactor Makefile 99e3804e2d C: replace string initializations with arrays c3dd9331cd Allow building on non-intel systems git-subtree-dir: src/simplicity git-subtree-split: 49b96499a6bb93b31d2f712fc1d4524f341ae640
1 parent a98bad7 commit e3cec16

24 files changed

Lines changed: 5686 additions & 91 deletions

bitcoin/bitcoinJets.c

Lines changed: 610 additions & 0 deletions
Large diffs are not rendered by default.

bitcoin/bitcoinJets.h

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/* This module defines primitives and jets that are specific to the Bitcoin application for Simplicity.
2+
*/
3+
#ifndef SIMPLICITY_BITCOIN_BITCOINJETS_H
4+
#define SIMPLICITY_BITCOIN_BITCOINJETS_H
5+
6+
#include "../jets.h"
7+
8+
/* Jets for the Bitcoin application of Simplicity. */
9+
bool simplicity_bitcoin_version(frameItem* dst, frameItem src, const txEnv* env);
10+
bool simplicity_bitcoin_lock_time(frameItem* dst, frameItem src, const txEnv* env);
11+
bool simplicity_bitcoin_input_prev_outpoint(frameItem* dst, frameItem src, const txEnv* env);
12+
bool simplicity_bitcoin_input_value(frameItem* dst, frameItem src, const txEnv* env);
13+
bool simplicity_bitcoin_input_script_hash(frameItem* dst, frameItem src, const txEnv* env);
14+
bool simplicity_bitcoin_input_sequence(frameItem* dst, frameItem src, const txEnv* env);
15+
bool simplicity_bitcoin_input_annex_hash(frameItem* dst, frameItem src, const txEnv* env);
16+
bool simplicity_bitcoin_input_script_sig_hash(frameItem* dst, frameItem src, const txEnv* env);
17+
bool simplicity_bitcoin_output_value(frameItem* dst, frameItem src, const txEnv* env);
18+
bool simplicity_bitcoin_output_script_hash(frameItem* dst, frameItem src, const txEnv* env);
19+
bool simplicity_bitcoin_fee(frameItem* dst, frameItem src, const txEnv* env);
20+
bool simplicity_bitcoin_total_input_value(frameItem* dst, frameItem src, const txEnv* env);
21+
bool simplicity_bitcoin_total_output_value(frameItem* dst, frameItem src, const txEnv* env);
22+
bool simplicity_bitcoin_script_cmr(frameItem* dst, frameItem src, const txEnv* env);
23+
bool simplicity_bitcoin_transaction_id(frameItem* dst, frameItem src, const txEnv* env);
24+
bool simplicity_bitcoin_current_index(frameItem* dst, frameItem src, const txEnv* env);
25+
bool simplicity_bitcoin_current_prev_outpoint(frameItem* dst, frameItem src, const txEnv* env);
26+
bool simplicity_bitcoin_current_value(frameItem* dst, frameItem src, const txEnv* env);
27+
bool simplicity_bitcoin_current_script_hash(frameItem* dst, frameItem src, const txEnv* env);
28+
bool simplicity_bitcoin_current_sequence(frameItem* dst, frameItem src, const txEnv* env);
29+
bool simplicity_bitcoin_current_annex_hash(frameItem* dst, frameItem src, const txEnv* env);
30+
bool simplicity_bitcoin_current_script_sig_hash(frameItem* dst, frameItem src, const txEnv* env);
31+
bool simplicity_bitcoin_tapleaf_version(frameItem* dst, frameItem src, const txEnv* env);
32+
bool simplicity_bitcoin_tappath(frameItem* dst, frameItem src, const txEnv* env);
33+
bool simplicity_bitcoin_internal_key(frameItem* dst, frameItem src, const txEnv* env);
34+
bool simplicity_bitcoin_num_inputs(frameItem* dst, frameItem src, const txEnv* env);
35+
bool simplicity_bitcoin_num_outputs(frameItem* dst, frameItem src, const txEnv* env);
36+
bool simplicity_bitcoin_tx_is_final(frameItem* dst, frameItem src, const txEnv* env);
37+
bool simplicity_bitcoin_tx_lock_height(frameItem* dst, frameItem src, const txEnv* env);
38+
bool simplicity_bitcoin_tx_lock_time(frameItem* dst, frameItem src, const txEnv* env);
39+
bool simplicity_bitcoin_tx_lock_distance(frameItem* dst, frameItem src, const txEnv* env);
40+
bool simplicity_bitcoin_tx_lock_duration(frameItem* dst, frameItem src, const txEnv* env);
41+
bool simplicity_bitcoin_check_lock_height(frameItem* dst, frameItem src, const txEnv* env);
42+
bool simplicity_bitcoin_check_lock_time(frameItem* dst, frameItem src, const txEnv* env);
43+
bool simplicity_bitcoin_check_lock_distance(frameItem* dst, frameItem src, const txEnv* env);
44+
bool simplicity_bitcoin_check_lock_duration(frameItem* dst, frameItem src, const txEnv* env);
45+
bool simplicity_bitcoin_build_tapleaf_simplicity(frameItem* dst, frameItem src, const txEnv* env);
46+
bool simplicity_bitcoin_build_tapbranch(frameItem* dst, frameItem src, const txEnv* env);
47+
bool simplicity_bitcoin_build_taptweak(frameItem* dst, frameItem src, const txEnv* env);
48+
bool simplicity_bitcoin_outpoint_hash(frameItem* dst, frameItem src, const txEnv* env);
49+
bool simplicity_bitcoin_annex_hash(frameItem* dst, frameItem src, const txEnv* env);
50+
bool simplicity_bitcoin_output_values_hash(frameItem* dst, frameItem src, const txEnv* env);
51+
bool simplicity_bitcoin_output_scripts_hash(frameItem* dst, frameItem src, const txEnv* env);
52+
bool simplicity_bitcoin_outputs_hash(frameItem* dst, frameItem src, const txEnv* env);
53+
bool simplicity_bitcoin_output_hash(frameItem* dst, frameItem src, const txEnv* env);
54+
bool simplicity_bitcoin_input_outpoints_hash(frameItem* dst, frameItem src, const txEnv* env);
55+
bool simplicity_bitcoin_input_values_hash(frameItem* dst, frameItem src, const txEnv* env);
56+
bool simplicity_bitcoin_input_scripts_hash(frameItem* dst, frameItem src, const txEnv* env);
57+
bool simplicity_bitcoin_input_utxos_hash(frameItem* dst, frameItem src, const txEnv* env);
58+
bool simplicity_bitcoin_input_utxo_hash(frameItem* dst, frameItem src, const txEnv* env);
59+
bool simplicity_bitcoin_input_sequences_hash(frameItem* dst, frameItem src, const txEnv* env);
60+
bool simplicity_bitcoin_input_annexes_hash(frameItem* dst, frameItem src, const txEnv* env);
61+
bool simplicity_bitcoin_input_script_sigs_hash(frameItem* dst, frameItem src, const txEnv* env);
62+
bool simplicity_bitcoin_inputs_hash(frameItem* dst, frameItem src, const txEnv* env);
63+
bool simplicity_bitcoin_input_hash(frameItem* dst, frameItem src, const txEnv* env);
64+
bool simplicity_bitcoin_tx_hash(frameItem* dst, frameItem src, const txEnv* env);
65+
bool simplicity_bitcoin_tapleaf_hash(frameItem* dst, frameItem src, const txEnv* env);
66+
bool simplicity_bitcoin_tappath_hash(frameItem* dst, frameItem src, const txEnv* env);
67+
bool simplicity_bitcoin_tap_env_hash(frameItem* dst, frameItem src, const txEnv* env);
68+
bool simplicity_bitcoin_sig_all_hash(frameItem* dst, frameItem src, const txEnv* env);
69+
70+
#endif

bitcoin/decodeBitcoinJets.inc

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/* This file has been automatically generated. */
2+
3+
{
4+
int32_t code;
5+
code = simplicity_decodeUptoMaxInt(stream);
6+
if (code < 0) return (simplicity_err)code;
7+
switch (code) {
8+
case 1:
9+
code = simplicity_decodeUptoMaxInt(stream);
10+
if (code < 0) return (simplicity_err)code;
11+
switch (code) {
12+
case 1: *result = SIG_ALL_HASH; return SIMPLICITY_NO_ERROR;
13+
case 2: *result = TX_HASH; return SIMPLICITY_NO_ERROR;
14+
case 3: *result = TAP_ENV_HASH; return SIMPLICITY_NO_ERROR;
15+
case 4: *result = OUTPUTS_HASH; return SIMPLICITY_NO_ERROR;
16+
case 5: *result = INPUTS_HASH; return SIMPLICITY_NO_ERROR;
17+
case 6: *result = INPUT_UTXOS_HASH; return SIMPLICITY_NO_ERROR;
18+
case 7: *result = OUTPUT_HASH; return SIMPLICITY_NO_ERROR;
19+
case 8: *result = OUTPUT_VALUES_HASH; return SIMPLICITY_NO_ERROR;
20+
case 9: *result = OUTPUT_SCRIPTS_HASH; return SIMPLICITY_NO_ERROR;
21+
case 10: *result = INPUT_HASH; return SIMPLICITY_NO_ERROR;
22+
case 11: *result = INPUT_OUTPOINTS_HASH; return SIMPLICITY_NO_ERROR;
23+
case 12: *result = INPUT_SEQUENCES_HASH; return SIMPLICITY_NO_ERROR;
24+
case 13: *result = INPUT_ANNEXES_HASH; return SIMPLICITY_NO_ERROR;
25+
case 14: *result = INPUT_SCRIPT_SIGS_HASH; return SIMPLICITY_NO_ERROR;
26+
case 15: *result = INPUT_UTXO_HASH; return SIMPLICITY_NO_ERROR;
27+
case 16: *result = INPUT_VALUES_HASH; return SIMPLICITY_NO_ERROR;
28+
case 17: *result = INPUT_SCRIPTS_HASH; return SIMPLICITY_NO_ERROR;
29+
case 18: *result = TAPLEAF_HASH; return SIMPLICITY_NO_ERROR;
30+
case 19: *result = TAPPATH_HASH; return SIMPLICITY_NO_ERROR;
31+
case 20: *result = OUTPOINT_HASH; return SIMPLICITY_NO_ERROR;
32+
case 21: *result = ANNEX_HASH; return SIMPLICITY_NO_ERROR;
33+
case 22: *result = BUILD_TAPLEAF_SIMPLICITY; return SIMPLICITY_NO_ERROR;
34+
case 23: *result = BUILD_TAPBRANCH; return SIMPLICITY_NO_ERROR;
35+
case 24: *result = BUILD_TAPTWEAK; return SIMPLICITY_NO_ERROR;
36+
}
37+
break;
38+
case 2:
39+
code = simplicity_decodeUptoMaxInt(stream);
40+
if (code < 0) return (simplicity_err)code;
41+
switch (code) {
42+
case 1: *result = CHECK_LOCK_HEIGHT; return SIMPLICITY_NO_ERROR;
43+
case 2: *result = CHECK_LOCK_TIME; return SIMPLICITY_NO_ERROR;
44+
case 3: *result = CHECK_LOCK_DISTANCE; return SIMPLICITY_NO_ERROR;
45+
case 4: *result = CHECK_LOCK_DURATION; return SIMPLICITY_NO_ERROR;
46+
case 5: *result = TX_LOCK_HEIGHT; return SIMPLICITY_NO_ERROR;
47+
case 6: *result = TX_LOCK_TIME; return SIMPLICITY_NO_ERROR;
48+
case 7: *result = TX_LOCK_DISTANCE; return SIMPLICITY_NO_ERROR;
49+
case 8: *result = TX_LOCK_DURATION; return SIMPLICITY_NO_ERROR;
50+
case 9: *result = TX_IS_FINAL; return SIMPLICITY_NO_ERROR;
51+
}
52+
break;
53+
case 3:
54+
code = simplicity_decodeUptoMaxInt(stream);
55+
if (code < 0) return (simplicity_err)code;
56+
switch (code) {
57+
case 1: *result = SCRIPT_CMR; return SIMPLICITY_NO_ERROR;
58+
case 2: *result = INTERNAL_KEY; return SIMPLICITY_NO_ERROR;
59+
case 3: *result = CURRENT_INDEX; return SIMPLICITY_NO_ERROR;
60+
case 4: *result = NUM_INPUTS; return SIMPLICITY_NO_ERROR;
61+
case 5: *result = NUM_OUTPUTS; return SIMPLICITY_NO_ERROR;
62+
case 6: *result = LOCK_TIME; return SIMPLICITY_NO_ERROR;
63+
case 7: *result = FEE; return SIMPLICITY_NO_ERROR;
64+
case 8: *result = OUTPUT_VALUE; return SIMPLICITY_NO_ERROR;
65+
case 9: *result = OUTPUT_SCRIPT_HASH; return SIMPLICITY_NO_ERROR;
66+
case 10: *result = TOTAL_OUTPUT_VALUE; return SIMPLICITY_NO_ERROR;
67+
case 11: *result = CURRENT_PREV_OUTPOINT; return SIMPLICITY_NO_ERROR;
68+
case 12: *result = CURRENT_VALUE; return SIMPLICITY_NO_ERROR;
69+
case 13: *result = CURRENT_SCRIPT_HASH; return SIMPLICITY_NO_ERROR;
70+
case 14: *result = CURRENT_SEQUENCE; return SIMPLICITY_NO_ERROR;
71+
case 15: *result = CURRENT_ANNEX_HASH; return SIMPLICITY_NO_ERROR;
72+
case 16: *result = CURRENT_SCRIPT_SIG_HASH; return SIMPLICITY_NO_ERROR;
73+
case 17: *result = INPUT_PREV_OUTPOINT; return SIMPLICITY_NO_ERROR;
74+
case 18: *result = INPUT_VALUE; return SIMPLICITY_NO_ERROR;
75+
case 19: *result = INPUT_SCRIPT_HASH; return SIMPLICITY_NO_ERROR;
76+
case 20: *result = INPUT_SEQUENCE; return SIMPLICITY_NO_ERROR;
77+
case 21: *result = INPUT_ANNEX_HASH; return SIMPLICITY_NO_ERROR;
78+
case 22: *result = INPUT_SCRIPT_SIG_HASH; return SIMPLICITY_NO_ERROR;
79+
case 23: *result = TOTAL_INPUT_VALUE; return SIMPLICITY_NO_ERROR;
80+
case 24: *result = TAPLEAF_VERSION; return SIMPLICITY_NO_ERROR;
81+
case 25: *result = TAPPATH; return SIMPLICITY_NO_ERROR;
82+
case 26: *result = VERSION; return SIMPLICITY_NO_ERROR;
83+
case 27: *result = TRANSACTION_ID; return SIMPLICITY_NO_ERROR;
84+
}
85+
break;
86+
}
87+
}

0 commit comments

Comments
 (0)