@hazbase/simplicity 0.0.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +140 -1038
- package/dist/cli.js +3341 -269
- package/dist/client/SimplicityClient.d.ts +91 -290
- package/dist/client/SimplicityClient.js +93 -23
- package/dist/core/executor.js +67 -92
- package/dist/core/lineage.d.ts +18 -0
- package/dist/core/lineage.js +30 -0
- package/dist/core/outputBinding.d.ts +61 -0
- package/dist/core/outputBinding.js +552 -0
- package/dist/core/reporting.d.ts +22 -0
- package/dist/core/reporting.js +40 -0
- package/dist/core/schnorr.d.ts +5 -0
- package/dist/core/schnorr.js +46 -0
- package/dist/core/types.d.ts +799 -1
- package/dist/docs/definitions/bond-anchor.simf +19 -0
- package/dist/docs/definitions/bond-definition.json +10 -0
- package/dist/docs/definitions/bond-descriptor-bound-settlement-machine.simf +144 -0
- package/dist/docs/definitions/bond-issuance-anchor.simf +26 -0
- package/dist/docs/definitions/bond-issuance-state-partial-redemption.json +18 -0
- package/dist/docs/definitions/bond-issuance-state-redeemed.json +18 -0
- package/dist/docs/definitions/bond-issuance-state.json +12 -0
- package/dist/docs/definitions/bond-redemption-state-machine.simf +118 -0
- package/dist/docs/definitions/bond-redemption-transition.simf +41 -0
- package/dist/docs/definitions/bond-script-bound-settlement-machine.simf +142 -0
- package/dist/docs/definitions/fund-capital-call-open.simf +82 -0
- package/dist/docs/definitions/fund-capital-call-refund-only.simf +67 -0
- package/dist/docs/definitions/fund-capital-call-state.json +11 -0
- package/dist/docs/definitions/fund-definition.json +8 -0
- package/dist/docs/definitions/fund-distribution-claim.simf +57 -0
- package/dist/docs/definitions/receivable-definition.json +9 -0
- package/dist/docs/definitions/receivable-funding-claim.json +13 -0
- package/dist/docs/definitions/receivable-funding-claim.simf +58 -0
- package/dist/docs/definitions/receivable-repayment-claim.json +13 -0
- package/dist/docs/definitions/receivable-repayment-claim.simf +59 -0
- package/dist/docs/definitions/receivable-state-funded.json +20 -0
- package/dist/docs/definitions/receivable-state-originated.json +19 -0
- package/dist/docs/definitions/receivable-state-repaid.json +20 -0
- package/dist/docs/definitions/recursive-delay-direct-next.simf +60 -0
- package/dist/docs/definitions/recursive-delay-optional.simf +88 -0
- package/dist/docs/definitions/recursive-delay-required.simf +72 -0
- package/dist/docs/definitions/recursive-delay.simf +83 -0
- package/dist/docs/definitions/recursive-policy-transfer-machine.simf +65 -0
- package/dist/domain/bond.d.ts +8649 -720
- package/dist/domain/bond.js +1398 -8
- package/dist/domain/bondSettlementValidation.d.ts +2 -0
- package/dist/domain/bondSettlementValidation.js +28 -0
- package/dist/domain/bondValidation.d.ts +37 -1
- package/dist/domain/bondValidation.js +137 -11
- package/dist/domain/fund.d.ts +2452 -0
- package/dist/domain/fund.js +1756 -0
- package/dist/domain/fundValidation.d.ts +152 -0
- package/dist/domain/fundValidation.js +767 -0
- package/dist/domain/policies.d.ts +1064 -0
- package/dist/domain/policies.js +1625 -0
- package/dist/domain/receivable.d.ts +824 -0
- package/dist/domain/receivable.js +1375 -0
- package/dist/domain/receivableValidation.d.ts +147 -0
- package/dist/domain/receivableValidation.js +831 -0
- package/dist/index.d.ts +8 -2
- package/dist/index.js +137 -21
- package/package.json +20 -2
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Recursive policy transfer machine.
|
|
3
|
+
*
|
|
4
|
+
* This machine is generic for a given current policy state. The next policy hash
|
|
5
|
+
* and output descriptor commitments are supplied at execution time through witness
|
|
6
|
+
* values, while the current state still commits the router machine as the only
|
|
7
|
+
* allowed first hop in required propagation mode.
|
|
8
|
+
*/
|
|
9
|
+
fn not(bit: bool) -> bool {
|
|
10
|
+
<u1>::into(jet::complement_1(<bool>::into(bit)))
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
fn require_definition_anchor() {
|
|
14
|
+
let anchored_definition_hash: u256 = 0x{{DEFINITION_HASH}};
|
|
15
|
+
let zero_hash: u256 = 0x0000000000000000000000000000000000000000000000000000000000000000;
|
|
16
|
+
assert!(not(jet::eq_256(anchored_definition_hash, zero_hash)));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
fn require_state_anchor() {
|
|
20
|
+
let anchored_state_hash: u256 = 0x{{STATE_HASH}};
|
|
21
|
+
let zero_hash: u256 = 0x0000000000000000000000000000000000000000000000000000000000000000;
|
|
22
|
+
assert!(not(jet::eq_256(anchored_state_hash, zero_hash)));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
fn require_policy_hash_anchor() {
|
|
26
|
+
let anchored_policy_hash: u256 = 0x{{POLICY_HASH}};
|
|
27
|
+
let zero_hash: u256 = 0x0000000000000000000000000000000000000000000000000000000000000000;
|
|
28
|
+
assert!(not(jet::eq_256(anchored_policy_hash, zero_hash)));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fn require_next_transition_witness(next_policy_hash: u256, next_output_descriptor_hash: u256) {
|
|
32
|
+
let zero_hash: u256 = 0x0000000000000000000000000000000000000000000000000000000000000000;
|
|
33
|
+
assert!(not(jet::eq_256(next_policy_hash, zero_hash)));
|
|
34
|
+
assert!(not(jet::eq_256(next_output_descriptor_hash, zero_hash)));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
fn require_output_shape(expected_next_output_hash: u256, expected_next_output_script_hash: u256, binding_mode: u8) {
|
|
38
|
+
assert!(jet::eq_32(jet::num_outputs(), 2));
|
|
39
|
+
assert!(unwrap(jet::output_is_fee(1)));
|
|
40
|
+
let actual_next_output_hash: u256 = match jet::output_hash(0) {
|
|
41
|
+
Some(output_hash : u256) => output_hash,
|
|
42
|
+
None => panic!(),
|
|
43
|
+
};
|
|
44
|
+
let actual_next_output_script_hash: u256 = unwrap(jet::output_script_hash(0));
|
|
45
|
+
|
|
46
|
+
match jet::eq_8(binding_mode, 0x01) {
|
|
47
|
+
true => assert!(jet::eq_256(actual_next_output_hash, expected_next_output_hash)),
|
|
48
|
+
false => assert!(jet::eq_256(actual_next_output_script_hash, expected_next_output_script_hash)),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
fn main() {
|
|
53
|
+
require_definition_anchor();
|
|
54
|
+
require_state_anchor();
|
|
55
|
+
require_policy_hash_anchor();
|
|
56
|
+
let next_policy_hash: u256 = witness::NEXT_POLICY_HASH;
|
|
57
|
+
let next_output_descriptor_hash: u256 = witness::NEXT_OUTPUT_DESCRIPTOR_HASH;
|
|
58
|
+
let expected_next_output_hash: u256 = witness::EXPECTED_NEXT_OUTPUT_HASH;
|
|
59
|
+
let expected_next_output_script_hash: u256 = witness::EXPECTED_NEXT_OUTPUT_SCRIPT_HASH;
|
|
60
|
+
let binding_mode: u8 = witness::OUTPUT_BINDING_MODE;
|
|
61
|
+
require_next_transition_witness(next_policy_hash, next_output_descriptor_hash);
|
|
62
|
+
require_output_shape(expected_next_output_hash, expected_next_output_script_hash, binding_mode);
|
|
63
|
+
let signer: Pubkey = 0x{{SIGNER_XONLY}};
|
|
64
|
+
jet::bip_0340_verify((signer, jet::sig_all_hash()), witness::SIGNER_SIGNATURE)
|
|
65
|
+
}
|