@ottochain/sdk 2.4.0 → 2.5.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/dist/cjs/apps/compute/index.js +33 -0
- package/dist/cjs/apps/compute/state-machines/compute-rule110.js +164 -0
- package/dist/cjs/apps/compute/state-machines/index.js +9 -0
- package/dist/cjs/apps/contracts/index.js +1 -1
- package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +126 -148
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +153 -174
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
- package/dist/cjs/apps/corporate/state-machines/corp-board.js +415 -481
- package/dist/cjs/apps/corporate/state-machines/corp-entity.js +368 -440
- package/dist/cjs/apps/corporate/state-machines/corp-securities.js +532 -647
- package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +499 -603
- package/dist/cjs/apps/governance/index.js +7 -7
- package/dist/cjs/apps/governance/state-machines/dao-multisig.js +170 -209
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +161 -214
- package/dist/cjs/apps/governance/state-machines/dao-single.js +92 -92
- package/dist/cjs/apps/governance/state-machines/dao-token.js +169 -223
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +185 -217
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
- package/dist/cjs/apps/identity/constants.js +16 -24
- package/dist/cjs/apps/identity/index.js +1 -1
- package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +151 -169
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +89 -115
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
- package/dist/cjs/apps/index.js +4 -1
- package/dist/cjs/apps/lending/assets.js +41 -17
- package/dist/cjs/apps/lending/credit-scoring.js +4 -4
- package/dist/cjs/apps/lending/eligibility.js +9 -25
- package/dist/cjs/apps/lending/index.js +1 -1
- package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +177 -156
- package/dist/cjs/apps/markets/index.js +1 -1
- package/dist/cjs/apps/markets/state-machines/market-auction.js +115 -134
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +122 -137
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +158 -177
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +193 -227
- package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
- package/dist/cjs/apps/oracles/index.js +1 -1
- package/dist/cjs/apps/privacy/index.js +67 -0
- package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
- package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
- package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
- package/dist/cjs/apps/staked-pool/assets.js +103 -0
- package/dist/cjs/apps/staked-pool/base.js +498 -0
- package/dist/cjs/apps/staked-pool/consumer.js +55 -0
- package/dist/cjs/apps/staked-pool/index.js +83 -0
- package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
- package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
- package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
- package/dist/cjs/generated/google/protobuf/struct.js +1 -1
- package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +1 -1
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +1 -1
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +1 -1
- package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +1 -1
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +1 -1
- package/dist/cjs/generated/ottochain/v1/common.js +1 -1
- package/dist/cjs/generated/ottochain/v1/fiber.js +40 -2
- package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
- package/dist/cjs/generated/ottochain/v1/records.js +1 -1
- package/dist/cjs/index.js +20 -3
- package/dist/cjs/ottochain/genesis-manifest.js +6 -0
- package/dist/cjs/ottochain/metagraph-client.js +16 -8
- package/dist/cjs/ottochain/snapshot.js +2 -4
- package/dist/cjs/ottochain/transaction.js +10 -0
- package/dist/cjs/privacy/sealed-bid.js +85 -82
- package/dist/cjs/privacy/shield-app.js +32 -32
- package/dist/cjs/schema/effects.js +117 -1
- package/dist/cjs/schema/fiber-app.js +132 -3
- package/dist/cjs/schema/guard-lint.js +3 -12
- package/dist/cjs/schema/guards.js +38 -38
- package/dist/cjs/templates/asset-policy.js +190 -0
- package/dist/cjs/templates/index.js +86 -0
- package/dist/cjs/templates/machine.js +130 -0
- package/dist/cjs/templates/migration.js +39 -0
- package/dist/cjs/templates/state-shape.js +38 -0
- package/dist/cjs/validation.js +1 -3
- package/dist/esm/apps/compute/index.js +29 -0
- package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
- package/dist/esm/apps/compute/state-machines/index.js +5 -0
- package/dist/esm/apps/contracts/index.js +4 -4
- package/dist/esm/apps/contracts/state-machines/contract-agreement.js +128 -150
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +155 -176
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
- package/dist/esm/apps/corporate/index.js +2 -2
- package/dist/esm/apps/corporate/state-machines/corp-board.js +418 -484
- package/dist/esm/apps/corporate/state-machines/corp-entity.js +371 -443
- package/dist/esm/apps/corporate/state-machines/corp-securities.js +535 -650
- package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +502 -606
- package/dist/esm/apps/governance/index.js +10 -10
- package/dist/esm/apps/governance/state-machines/dao-multisig.js +172 -211
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +163 -216
- package/dist/esm/apps/governance/state-machines/dao-single.js +94 -94
- package/dist/esm/apps/governance/state-machines/dao-token.js +171 -225
- package/dist/esm/apps/governance/state-machines/governance-simple.js +187 -219
- package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
- package/dist/esm/apps/identity/constants.js +18 -26
- package/dist/esm/apps/identity/index.js +8 -8
- package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +153 -171
- package/dist/esm/apps/identity/state-machines/identity-registry.js +91 -117
- package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
- package/dist/esm/apps/index.js +9 -6
- package/dist/esm/apps/lending/assets.js +41 -17
- package/dist/esm/apps/lending/credit-scoring.js +6 -6
- package/dist/esm/apps/lending/eligibility.js +10 -26
- package/dist/esm/apps/lending/index.js +5 -5
- package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +178 -157
- package/dist/esm/apps/markets/index.js +5 -5
- package/dist/esm/apps/markets/state-machines/market-auction.js +117 -136
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +124 -139
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +160 -179
- package/dist/esm/apps/markets/state-machines/market-prediction.js +195 -229
- package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
- package/dist/esm/apps/oracles/index.js +3 -3
- package/dist/esm/apps/privacy/index.js +56 -0
- package/dist/esm/apps/privacy/state-machines/index.js +6 -0
- package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
- package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
- package/dist/esm/apps/staked-pool/assets.js +91 -0
- package/dist/esm/apps/staked-pool/base.js +493 -0
- package/dist/esm/apps/staked-pool/consumer.js +49 -0
- package/dist/esm/apps/staked-pool/index.js +60 -0
- package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
- package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
- package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
- package/dist/esm/generated/google/protobuf/struct.js +1 -1
- package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +1 -1
- package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
- package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
- package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
- package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +1 -1
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +1 -1
- package/dist/esm/generated/ottochain/v1/common.js +1 -1
- package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
- package/dist/esm/generated/ottochain/v1/messages.js +1 -1
- package/dist/esm/generated/ottochain/v1/records.js +1 -1
- package/dist/esm/index.js +10 -4
- package/dist/esm/ottochain/genesis-manifest.js +6 -0
- package/dist/esm/ottochain/metagraph-client.js +16 -8
- package/dist/esm/ottochain/snapshot.js +2 -4
- package/dist/esm/ottochain/transaction.js +8 -0
- package/dist/esm/privacy/index.js +2 -2
- package/dist/esm/privacy/sealed-bid.js +87 -84
- package/dist/esm/privacy/shield-app.js +33 -33
- package/dist/esm/schema/effects.js +110 -0
- package/dist/esm/schema/fiber-app.js +127 -3
- package/dist/esm/schema/guard-lint.js +3 -12
- package/dist/esm/schema/guards.js +36 -37
- package/dist/esm/templates/asset-policy.js +182 -0
- package/dist/esm/templates/index.js +41 -0
- package/dist/esm/templates/machine.js +125 -0
- package/dist/esm/templates/migration.js +34 -0
- package/dist/esm/templates/state-shape.js +34 -0
- package/dist/esm/validation.js +1 -3
- package/dist/esm/zk/index.js +4 -4
- package/dist/types/apps/compute/index.d.ts +176 -0
- package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
- package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
- package/dist/types/apps/contracts/index.d.ts +14 -14
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +3 -3
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +3 -3
- package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
- package/dist/types/apps/corporate/index.d.ts +162 -162
- package/dist/types/apps/corporate/state-machines/corp-board.d.ts +88 -88
- package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +14 -14
- package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +18 -18
- package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +43 -43
- package/dist/types/apps/governance/index.d.ts +81 -81
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +16 -16
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +22 -22
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +21 -21
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +11 -11
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +4 -4
- package/dist/types/apps/identity/constants.d.ts +2 -2
- package/dist/types/apps/identity/index.d.ts +70 -70
- package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +11 -11
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +27 -27
- package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
- package/dist/types/apps/index.d.ts +9 -6
- package/dist/types/apps/lending/assets.d.ts +2 -2
- package/dist/types/apps/lending/credit-scoring.d.ts +5 -5
- package/dist/types/apps/lending/eligibility.d.ts +2 -2
- package/dist/types/apps/lending/index.d.ts +20 -12
- package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +15 -7
- package/dist/types/apps/markets/index.d.ts +76 -76
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +12 -12
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +19 -19
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +18 -18
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +15 -15
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +7 -7
- package/dist/types/apps/oracles/index.d.ts +1 -1
- package/dist/types/apps/privacy/index.d.ts +328 -0
- package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
- package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
- package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
- package/dist/types/apps/staked-pool/assets.d.ts +53 -0
- package/dist/types/apps/staked-pool/base.d.ts +80 -0
- package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
- package/dist/types/apps/staked-pool/index.d.ts +51 -0
- package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
- package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
- package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
- package/dist/types/generated/openapi.d.ts +13 -0
- package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
- package/dist/types/index.d.ts +3 -3
- package/dist/types/openapi.d.ts +4 -2
- package/dist/types/ottochain/genesis-manifest.d.ts +6 -0
- package/dist/types/ottochain/transaction.d.ts +9 -1
- package/dist/types/ottochain/types.d.ts +1 -1
- package/dist/types/privacy/index.d.ts +2 -2
- package/dist/types/privacy/sealed-bid.d.ts +9 -9
- package/dist/types/privacy/shield-app.d.ts +1 -1
- package/dist/types/schema/effects.d.ts +107 -0
- package/dist/types/schema/fiber-app.d.ts +281 -0
- package/dist/types/schema/guards.d.ts +12 -0
- package/dist/types/templates/asset-policy.d.ts +119 -0
- package/dist/types/templates/index.d.ts +26 -0
- package/dist/types/templates/machine.d.ts +139 -0
- package/dist/types/templates/migration.d.ts +34 -0
- package/dist/types/templates/state-shape.d.ts +30 -0
- package/dist/types/zk/index.d.ts +4 -4
- package/package.json +31 -13
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Compute Application — bare computation substrates.
|
|
4
|
+
*
|
|
5
|
+
* Turing-complete JLVM substrates with no parties, assets, or governance: pure
|
|
6
|
+
* in-place state evolution. The flagship is `rule110`, an in-place Rule-110
|
|
7
|
+
* cellular automaton that proves the account layer is Turing-complete.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { getComputeDefinition, COMPUTE_DEFINITIONS } from '@ottochain/sdk/apps/compute';
|
|
12
|
+
*
|
|
13
|
+
* const rule110Def = getComputeDefinition('rule110');
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @packageDocumentation
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.COMPUTE_DEFINITIONS = exports.computeRule110Def = void 0;
|
|
20
|
+
exports.getComputeDefinition = getComputeDefinition;
|
|
21
|
+
const index_js_1 = require("./state-machines/index.js");
|
|
22
|
+
Object.defineProperty(exports, "computeRule110Def", { enumerable: true, get: function () { return index_js_1.computeRule110Def; } });
|
|
23
|
+
/** All compute (bare-computation) state machine definitions. */
|
|
24
|
+
exports.COMPUTE_DEFINITIONS = {
|
|
25
|
+
rule110: index_js_1.computeRule110Def,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Get a compute state machine definition by type.
|
|
29
|
+
* @param type - 'rule110' (default).
|
|
30
|
+
*/
|
|
31
|
+
function getComputeDefinition(type = 'rule110') {
|
|
32
|
+
return exports.COMPUTE_DEFINITIONS[type];
|
|
33
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeRule110Def = void 0;
|
|
4
|
+
const fiber_app_js_1 = require("../../../schema/fiber-app.js");
|
|
5
|
+
/**
|
|
6
|
+
* Rule-110 cellular automaton — an in-place, Turing-complete JLVM substrate.
|
|
7
|
+
*
|
|
8
|
+
* Each `step` event advances ONE CA generation in place:
|
|
9
|
+
* next[i] = R110(tape[i-1], tape[i], tape[i+1])
|
|
10
|
+
* with fixed-0 boundaries, computed as a JLVM `map` over a STORED index array
|
|
11
|
+
* (`idx`) — no bitwise ops, no spawn, no zip. The fiber loops RUNNING → RUNNING;
|
|
12
|
+
* the chain of transitions IS the Turing-machine tape-head.
|
|
13
|
+
*
|
|
14
|
+
* Rule 110: out = 1 iff p ∈ {1,2,3,5,6}, where p = 4·left + 2·center + right.
|
|
15
|
+
*
|
|
16
|
+
* THE INLINED-CELL CONSTRAINT (do not "simplify" with `let`)
|
|
17
|
+
* ---------------------------------------------------------
|
|
18
|
+
* Inside `map`, a primitive element is overlaid into the eval context, so
|
|
19
|
+
* `{var:""}` coerces to the element int ONLY in arithmetic position. Opening a
|
|
20
|
+
* `let` scope over the element makes `{var:""}` resolve to the whole context
|
|
21
|
+
* object (`{"tag":"map"}`) and any `cat` on it throws `JsonLogicRuntimeError`.
|
|
22
|
+
* Therefore the per-cell predicate P is fully INLINED at each of the five `==`
|
|
23
|
+
* comparison sites (P appears 5×; each neighbour read `nb` reads the tape once
|
|
24
|
+
* per occurrence). This is the only form that works inside `map`. It is built
|
|
25
|
+
* programmatically below to avoid hand-duplicating P, but it expands to the
|
|
26
|
+
* inlined AST — NOT a `let`-form.
|
|
27
|
+
*
|
|
28
|
+
* Neighbour access uses a computed `var` PATH with a null-default boundary:
|
|
29
|
+
* nb(off) = { var: [ { cat: ["state.tape.", off] }, 0 ] }
|
|
30
|
+
* An out-of-bounds index (-1 or N) resolves to the default `0` (fixed-0
|
|
31
|
+
* boundary), so `tape`/`idx` stay exactly length N forever.
|
|
32
|
+
*
|
|
33
|
+
* Verified end-to-end against `@constellation-network/metagraph-sdk-jlvm@1.8.0-rc.5`:
|
|
34
|
+
* the effect reproduces the canonical left-growing Rule-110 fractal exactly,
|
|
35
|
+
* `idx` is byte-identical across every generation, and the unbounded/bounded
|
|
36
|
+
* guard halts at `gen == maxGen`.
|
|
37
|
+
*/
|
|
38
|
+
// nb(off): read tape at element-relative offset, fixed-0 boundary via null-default.
|
|
39
|
+
const nb = (off) => ({
|
|
40
|
+
var: [{ cat: ['state.tape.', off] }, 0],
|
|
41
|
+
});
|
|
42
|
+
// P = 4·left + 2·center + right (element {var:""} is the cell index i).
|
|
43
|
+
const P = {
|
|
44
|
+
'+': [{ '*': [4, nb({ '-': [{ var: '' }, 1] })] }, { '*': [2, nb({ var: '' })] }, nb({ '+': [{ var: '' }, 1] })],
|
|
45
|
+
};
|
|
46
|
+
// CELL: 1 iff P ∈ {1,2,3,5,6}, else 0. P is INLINED at each `==` site (B1: never
|
|
47
|
+
// `let` over the map element). Built from the rule-110 truth set programmatically.
|
|
48
|
+
const CELL = {
|
|
49
|
+
if: [{ or: [1, 2, 3, 5, 6].map((k) => ({ '==': [P, k] })) }, 1, 0],
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Rule-110 cellular-automaton fiber definition.
|
|
53
|
+
*
|
|
54
|
+
* Trust model: PUBLIC / PERMISSIONLESS / pure compute. No assets, no parties,
|
|
55
|
+
* no owner — anyone may submit `step`. The DoS surface is bounded by per-event
|
|
56
|
+
* gas/fee (~987 gas/cell) and the optional `maxGen` halt bound (absent ⇒
|
|
57
|
+
* unbounded; runs until fees stop).
|
|
58
|
+
*/
|
|
59
|
+
exports.computeRule110Def = (0, fiber_app_js_1.defineFiberApp)({
|
|
60
|
+
metadata: {
|
|
61
|
+
name: 'ComputeRule110',
|
|
62
|
+
app: 'compute',
|
|
63
|
+
type: 'rule110',
|
|
64
|
+
version: '1.0.0',
|
|
65
|
+
description: 'In-place Rule-110 cellular automaton — a Turing-complete substrate. Each ' +
|
|
66
|
+
'`step` advances one generation: next[i]=R110(tape[i-1],tape[i],tape[i+1]) ' +
|
|
67
|
+
'with fixed-0 boundaries, as a JLVM map over a stored index array (no ' +
|
|
68
|
+
'bitwise, no spawn, no zip).',
|
|
69
|
+
},
|
|
70
|
+
createSchema: {
|
|
71
|
+
// maxGen is NOT required: absent ⇒ unbounded (the step guard uses `missing`).
|
|
72
|
+
required: ['tape', 'idx'],
|
|
73
|
+
properties: {
|
|
74
|
+
tape: {
|
|
75
|
+
type: 'array',
|
|
76
|
+
items: { type: 'integer' },
|
|
77
|
+
description: '0/1 CA row (length N).',
|
|
78
|
+
},
|
|
79
|
+
idx: {
|
|
80
|
+
type: 'array',
|
|
81
|
+
items: { type: 'integer' },
|
|
82
|
+
immutable: true,
|
|
83
|
+
description: 'Monotone index array [0..N-1]; REQUIRED (no range/iota opcode). ' +
|
|
84
|
+
'Never mutated — the effect preserves it across every generation.',
|
|
85
|
+
},
|
|
86
|
+
gen: {
|
|
87
|
+
type: 'integer',
|
|
88
|
+
default: 0,
|
|
89
|
+
description: 'Generation counter (TM step count).',
|
|
90
|
+
},
|
|
91
|
+
maxGen: {
|
|
92
|
+
type: 'integer',
|
|
93
|
+
description: 'Optional halt bound; absent ⇒ unbounded.',
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
stateSchema: {
|
|
98
|
+
properties: {
|
|
99
|
+
tape: { type: 'array', items: { type: 'integer' }, computed: true },
|
|
100
|
+
idx: { type: 'array', items: { type: 'integer' }, immutable: true },
|
|
101
|
+
gen: { type: 'integer', computed: true },
|
|
102
|
+
maxGen: { type: 'integer' },
|
|
103
|
+
status: { type: 'string', computed: true },
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
eventSchemas: {
|
|
107
|
+
step: { description: 'Advance one CA generation in place.' },
|
|
108
|
+
halt: { description: 'Terminate once maxGen is reached (gated by gen >= maxGen).' },
|
|
109
|
+
},
|
|
110
|
+
states: {
|
|
111
|
+
RUNNING: {
|
|
112
|
+
id: 'RUNNING',
|
|
113
|
+
isFinal: false,
|
|
114
|
+
metadata: {
|
|
115
|
+
label: 'Running',
|
|
116
|
+
description: 'CA evolving; each step = one generation.',
|
|
117
|
+
category: 'active',
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
HALTED: {
|
|
121
|
+
id: 'HALTED',
|
|
122
|
+
isFinal: true,
|
|
123
|
+
metadata: {
|
|
124
|
+
label: 'Halted',
|
|
125
|
+
description: 'maxGen reached; terminal.',
|
|
126
|
+
category: 'terminal',
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
initialState: 'RUNNING',
|
|
131
|
+
transitions: [
|
|
132
|
+
{
|
|
133
|
+
// One `step` = one generation. Loops in place (the TM tape-head).
|
|
134
|
+
from: 'RUNNING',
|
|
135
|
+
to: 'RUNNING',
|
|
136
|
+
eventName: 'step',
|
|
137
|
+
// Unbounded when maxGen is absent (`missing` → true); else gate on gen < maxGen.
|
|
138
|
+
guard: {
|
|
139
|
+
or: [{ missing: ['state.maxGen'] }, { '<': [{ var: 'state.gen' }, { var: 'state.maxGen' }] }],
|
|
140
|
+
},
|
|
141
|
+
// Effect result IS the new stateData: merge[state, overrides] preserves
|
|
142
|
+
// idx/maxGen and overwrites tape/gen.
|
|
143
|
+
effect: {
|
|
144
|
+
merge: [
|
|
145
|
+
{ var: 'state' },
|
|
146
|
+
{
|
|
147
|
+
tape: { map: [{ var: 'state.idx' }, CELL] },
|
|
148
|
+
gen: { '+': [{ var: 'state.gen' }, 1] },
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
dependencies: [],
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
// halt is rejected until exhaustion: gen >= maxGen.
|
|
156
|
+
from: 'RUNNING',
|
|
157
|
+
to: 'HALTED',
|
|
158
|
+
eventName: 'halt',
|
|
159
|
+
guard: { '>=': [{ var: 'state.gen' }, { var: 'state.maxGen' }] },
|
|
160
|
+
effect: { merge: [{ var: 'state' }, { status: 'halted' }] },
|
|
161
|
+
dependencies: [],
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Compute (bare-computation) state machine definitions.
|
|
4
|
+
* Re-exports from TypeScript definition files.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.computeRule110Def = void 0;
|
|
8
|
+
var compute_rule110_js_1 = require("./compute-rule110.js");
|
|
9
|
+
Object.defineProperty(exports, "computeRule110Def", { enumerable: true, get: function () { return compute_rule110_js_1.computeRule110Def; } });
|
|
@@ -59,7 +59,7 @@ exports.CONTRACTS_DEFINITIONS = {
|
|
|
59
59
|
* Get a contract state machine definition by type.
|
|
60
60
|
* @param type - 'universal' | 'agreement' | 'escrow' (default: 'agreement')
|
|
61
61
|
*/
|
|
62
|
-
function getContractDefinition(type =
|
|
62
|
+
function getContractDefinition(type = 'agreement') {
|
|
63
63
|
return exports.CONTRACTS_DEFINITIONS[type];
|
|
64
64
|
}
|
|
65
65
|
/** @deprecated Use getContractDefinition('escrow') */
|
|
@@ -8,203 +8,194 @@ const guards_js_1 = require("../../../schema/guards.js");
|
|
|
8
8
|
*/
|
|
9
9
|
exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
10
10
|
metadata: {
|
|
11
|
-
name:
|
|
12
|
-
app:
|
|
13
|
-
type:
|
|
14
|
-
version:
|
|
15
|
-
description:
|
|
11
|
+
name: 'ContractAgreement',
|
|
12
|
+
app: 'contracts',
|
|
13
|
+
type: 'agreement',
|
|
14
|
+
version: '1.0.0',
|
|
15
|
+
description: 'Two-party agreement with mutual completion attestation and dispute resolution',
|
|
16
16
|
crossReferences: {
|
|
17
17
|
proposerIdentityId: {
|
|
18
|
-
machine:
|
|
19
|
-
field:
|
|
18
|
+
machine: 'identity-agent',
|
|
19
|
+
field: 'proposer',
|
|
20
20
|
description: "Links to proposer's AgentIdentity fiber",
|
|
21
21
|
},
|
|
22
22
|
counterpartyIdentityId: {
|
|
23
|
-
machine:
|
|
24
|
-
field:
|
|
23
|
+
machine: 'identity-agent',
|
|
24
|
+
field: 'counterparty',
|
|
25
25
|
description: "Links to counterparty's AgentIdentity fiber",
|
|
26
26
|
},
|
|
27
27
|
escrowId: {
|
|
28
|
-
machine:
|
|
29
|
-
field:
|
|
30
|
-
description:
|
|
28
|
+
machine: 'contract-escrow',
|
|
29
|
+
field: 'escrowId',
|
|
30
|
+
description: 'Links to Escrow if payment is escrowed',
|
|
31
31
|
},
|
|
32
32
|
arbitrationPoolId: {
|
|
33
|
-
machine:
|
|
34
|
-
field:
|
|
35
|
-
description:
|
|
33
|
+
machine: 'arbitration-pool',
|
|
34
|
+
field: 'arbitrationPoolId',
|
|
35
|
+
description: 'Links to ArbitrationPool for dispute resolution',
|
|
36
36
|
},
|
|
37
37
|
},
|
|
38
38
|
},
|
|
39
39
|
createSchema: {
|
|
40
|
-
required: [
|
|
40
|
+
required: ['proposer', 'counterparty', 'arbitrator'],
|
|
41
41
|
properties: {
|
|
42
42
|
proposer: {
|
|
43
|
-
type:
|
|
44
|
-
description:
|
|
43
|
+
type: 'address',
|
|
44
|
+
description: 'DAG address of the proposer',
|
|
45
45
|
immutable: true,
|
|
46
46
|
},
|
|
47
47
|
counterparty: {
|
|
48
|
-
type:
|
|
49
|
-
description:
|
|
48
|
+
type: 'address',
|
|
49
|
+
description: 'DAG address of the counterparty',
|
|
50
50
|
immutable: true,
|
|
51
51
|
},
|
|
52
52
|
arbitrator: {
|
|
53
|
-
type:
|
|
54
|
-
description:
|
|
53
|
+
type: 'address',
|
|
54
|
+
description: 'DAG address of the arbitrator authorized to resolve a dispute',
|
|
55
55
|
immutable: true,
|
|
56
56
|
},
|
|
57
57
|
},
|
|
58
58
|
},
|
|
59
59
|
stateSchema: {
|
|
60
60
|
properties: {
|
|
61
|
-
status: { type:
|
|
62
|
-
proposer: { type:
|
|
63
|
-
counterparty: { type:
|
|
64
|
-
arbitrator: { type:
|
|
65
|
-
completions: { type:
|
|
66
|
-
acceptedAt: { type:
|
|
67
|
-
rejectedAt: { type:
|
|
68
|
-
rejectReason: { type:
|
|
69
|
-
cancelledAt: { type:
|
|
70
|
-
completedAt: { type:
|
|
71
|
-
disputedAt: { type:
|
|
72
|
-
disputeReason: { type:
|
|
73
|
-
disputedBy: { type:
|
|
74
|
-
resolvedAt: { type:
|
|
75
|
-
resolution: { type:
|
|
76
|
-
rulingId: { type:
|
|
61
|
+
status: { type: 'string' },
|
|
62
|
+
proposer: { type: 'address' },
|
|
63
|
+
counterparty: { type: 'address' },
|
|
64
|
+
arbitrator: { type: 'address', immutable: true },
|
|
65
|
+
completions: { type: 'array' },
|
|
66
|
+
acceptedAt: { type: 'integer', nullable: true },
|
|
67
|
+
rejectedAt: { type: 'integer', nullable: true },
|
|
68
|
+
rejectReason: { type: 'string', nullable: true },
|
|
69
|
+
cancelledAt: { type: 'integer', nullable: true },
|
|
70
|
+
completedAt: { type: 'integer', nullable: true },
|
|
71
|
+
disputedAt: { type: 'integer', nullable: true },
|
|
72
|
+
disputeReason: { type: 'string', nullable: true },
|
|
73
|
+
disputedBy: { type: 'address', nullable: true },
|
|
74
|
+
resolvedAt: { type: 'integer', nullable: true },
|
|
75
|
+
resolution: { type: 'string', nullable: true },
|
|
76
|
+
rulingId: { type: 'string', nullable: true },
|
|
77
77
|
},
|
|
78
78
|
},
|
|
79
79
|
eventSchemas: {
|
|
80
80
|
accept: {},
|
|
81
|
-
reject: { properties: { reason: { type:
|
|
81
|
+
reject: { properties: { reason: { type: 'string' } } },
|
|
82
82
|
cancel: {},
|
|
83
|
-
submit_completion: { properties: { proof: { type:
|
|
83
|
+
submit_completion: { properties: { proof: { type: 'string' } } },
|
|
84
84
|
finalize: {},
|
|
85
|
-
dispute: { properties: { reason: { type:
|
|
85
|
+
dispute: { properties: { reason: { type: 'string' } } },
|
|
86
86
|
resolve: {
|
|
87
87
|
properties: {
|
|
88
|
-
resolution: { type:
|
|
89
|
-
rulingId: { type:
|
|
88
|
+
resolution: { type: 'string' },
|
|
89
|
+
rulingId: { type: 'string', nullable: true },
|
|
90
90
|
},
|
|
91
91
|
},
|
|
92
92
|
},
|
|
93
93
|
states: {
|
|
94
94
|
PROPOSED: {
|
|
95
|
-
id:
|
|
95
|
+
id: 'PROPOSED',
|
|
96
96
|
isFinal: false,
|
|
97
97
|
metadata: {
|
|
98
|
-
label:
|
|
99
|
-
description:
|
|
100
|
-
category:
|
|
98
|
+
label: 'Proposed',
|
|
99
|
+
description: 'Agreement proposed; awaiting the counterparty',
|
|
100
|
+
category: 'initial',
|
|
101
101
|
},
|
|
102
102
|
},
|
|
103
103
|
ACTIVE: {
|
|
104
|
-
id:
|
|
104
|
+
id: 'ACTIVE',
|
|
105
105
|
isFinal: false,
|
|
106
106
|
metadata: {
|
|
107
|
-
label:
|
|
108
|
-
description:
|
|
109
|
-
category:
|
|
107
|
+
label: 'Active',
|
|
108
|
+
description: 'Agreement accepted and in effect',
|
|
109
|
+
category: 'active',
|
|
110
110
|
},
|
|
111
111
|
},
|
|
112
112
|
COMPLETED: {
|
|
113
|
-
id:
|
|
113
|
+
id: 'COMPLETED',
|
|
114
114
|
isFinal: true,
|
|
115
115
|
metadata: {
|
|
116
|
-
label:
|
|
117
|
-
description:
|
|
118
|
-
category:
|
|
116
|
+
label: 'Completed',
|
|
117
|
+
description: 'Agreement completed and attested (terminal)',
|
|
118
|
+
category: 'terminal',
|
|
119
119
|
},
|
|
120
120
|
},
|
|
121
121
|
DISPUTED: {
|
|
122
|
-
id:
|
|
122
|
+
id: 'DISPUTED',
|
|
123
123
|
isFinal: false,
|
|
124
124
|
metadata: {
|
|
125
|
-
label:
|
|
126
|
-
description:
|
|
127
|
-
category:
|
|
125
|
+
label: 'Disputed',
|
|
126
|
+
description: 'A party has raised a dispute; awaiting resolution',
|
|
127
|
+
category: 'pending',
|
|
128
128
|
},
|
|
129
129
|
},
|
|
130
130
|
REJECTED: {
|
|
131
|
-
id:
|
|
131
|
+
id: 'REJECTED',
|
|
132
132
|
isFinal: true,
|
|
133
133
|
metadata: {
|
|
134
|
-
label:
|
|
135
|
-
description:
|
|
136
|
-
category:
|
|
134
|
+
label: 'Rejected',
|
|
135
|
+
description: 'Proposal rejected by the counterparty (terminal)',
|
|
136
|
+
category: 'terminal',
|
|
137
137
|
},
|
|
138
138
|
},
|
|
139
139
|
CANCELLED: {
|
|
140
|
-
id:
|
|
140
|
+
id: 'CANCELLED',
|
|
141
141
|
isFinal: true,
|
|
142
142
|
metadata: {
|
|
143
|
-
label:
|
|
144
|
-
description:
|
|
145
|
-
category:
|
|
143
|
+
label: 'Cancelled',
|
|
144
|
+
description: 'Agreement cancelled before completion (terminal)',
|
|
145
|
+
category: 'terminal',
|
|
146
146
|
},
|
|
147
147
|
},
|
|
148
148
|
},
|
|
149
|
-
initialState:
|
|
149
|
+
initialState: 'PROPOSED',
|
|
150
150
|
transitions: [
|
|
151
151
|
{
|
|
152
|
-
from:
|
|
153
|
-
to:
|
|
154
|
-
eventName:
|
|
155
|
-
guard: (0, guards_js_1.signerIsParty)(
|
|
152
|
+
from: 'PROPOSED',
|
|
153
|
+
to: 'ACTIVE',
|
|
154
|
+
eventName: 'accept',
|
|
155
|
+
guard: (0, guards_js_1.signerIsParty)('state.counterparty'),
|
|
156
156
|
effect: {
|
|
157
|
-
merge: [
|
|
158
|
-
{ var: "state" },
|
|
159
|
-
{ status: "ACTIVE", acceptedAt: { var: "$ordinal" } },
|
|
160
|
-
],
|
|
157
|
+
merge: [{ var: 'state' }, { status: 'ACTIVE', acceptedAt: { var: '$ordinal' } }],
|
|
161
158
|
},
|
|
162
159
|
dependencies: [],
|
|
163
160
|
},
|
|
164
161
|
{
|
|
165
|
-
from:
|
|
166
|
-
to:
|
|
167
|
-
eventName:
|
|
168
|
-
guard: (0, guards_js_1.signerIsParty)(
|
|
162
|
+
from: 'PROPOSED',
|
|
163
|
+
to: 'REJECTED',
|
|
164
|
+
eventName: 'reject',
|
|
165
|
+
guard: (0, guards_js_1.signerIsParty)('state.counterparty'),
|
|
169
166
|
effect: {
|
|
170
167
|
merge: [
|
|
171
|
-
{ var:
|
|
168
|
+
{ var: 'state' },
|
|
172
169
|
{
|
|
173
|
-
status:
|
|
174
|
-
rejectedAt: { var:
|
|
175
|
-
rejectReason: { var:
|
|
170
|
+
status: 'REJECTED',
|
|
171
|
+
rejectedAt: { var: '$ordinal' },
|
|
172
|
+
rejectReason: { var: 'event.reason' },
|
|
176
173
|
},
|
|
177
174
|
],
|
|
178
175
|
},
|
|
179
176
|
dependencies: [],
|
|
180
177
|
},
|
|
181
178
|
{
|
|
182
|
-
from:
|
|
183
|
-
to:
|
|
184
|
-
eventName:
|
|
185
|
-
guard: (0, guards_js_1.signerIsParty)(
|
|
179
|
+
from: 'PROPOSED',
|
|
180
|
+
to: 'CANCELLED',
|
|
181
|
+
eventName: 'cancel',
|
|
182
|
+
guard: (0, guards_js_1.signerIsParty)('state.proposer'),
|
|
186
183
|
effect: {
|
|
187
|
-
merge: [
|
|
188
|
-
{ var: "state" },
|
|
189
|
-
{ status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
|
|
190
|
-
],
|
|
184
|
+
merge: [{ var: 'state' }, { status: 'CANCELLED', cancelledAt: { var: '$ordinal' } }],
|
|
191
185
|
},
|
|
192
186
|
dependencies: [],
|
|
193
187
|
},
|
|
194
188
|
{
|
|
195
|
-
from:
|
|
196
|
-
to:
|
|
197
|
-
eventName:
|
|
189
|
+
from: 'ACTIVE',
|
|
190
|
+
to: 'ACTIVE',
|
|
191
|
+
eventName: 'submit_completion',
|
|
198
192
|
guard: {
|
|
199
193
|
and: [
|
|
200
|
-
(0, guards_js_1.signerIsAnyParty)([
|
|
194
|
+
(0, guards_js_1.signerIsAnyParty)(['state.proposer', 'state.counterparty']),
|
|
201
195
|
{
|
|
202
|
-
|
|
196
|
+
'!': [
|
|
203
197
|
{
|
|
204
|
-
in: [
|
|
205
|
-
{ var: "event.agent" },
|
|
206
|
-
{ map: [{ var: "state.completions" }, { var: "agent" }] },
|
|
207
|
-
],
|
|
198
|
+
in: [{ var: 'event.agent' }, { map: [{ var: 'state.completions' }, { var: 'agent' }] }],
|
|
208
199
|
},
|
|
209
200
|
],
|
|
210
201
|
},
|
|
@@ -212,16 +203,16 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
212
203
|
},
|
|
213
204
|
effect: {
|
|
214
205
|
merge: [
|
|
215
|
-
{ var:
|
|
206
|
+
{ var: 'state' },
|
|
216
207
|
{
|
|
217
208
|
completions: {
|
|
218
209
|
cat: [
|
|
219
|
-
{ var:
|
|
210
|
+
{ var: 'state.completions' },
|
|
220
211
|
[
|
|
221
212
|
{
|
|
222
|
-
agent: { var:
|
|
223
|
-
proof: { var:
|
|
224
|
-
submittedAt: { var:
|
|
213
|
+
agent: { var: 'event.agent' },
|
|
214
|
+
proof: { var: 'event.proof' },
|
|
215
|
+
submittedAt: { var: '$ordinal' },
|
|
225
216
|
},
|
|
226
217
|
],
|
|
227
218
|
],
|
|
@@ -232,66 +223,56 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
232
223
|
dependencies: [],
|
|
233
224
|
},
|
|
234
225
|
{
|
|
235
|
-
from:
|
|
236
|
-
to:
|
|
237
|
-
eventName:
|
|
238
|
-
guard: {
|
|
226
|
+
from: 'ACTIVE',
|
|
227
|
+
to: 'COMPLETED',
|
|
228
|
+
eventName: 'finalize',
|
|
229
|
+
guard: { '>=': [{ length: [{ var: 'state.completions' }] }, 2] },
|
|
239
230
|
effect: {
|
|
240
|
-
merge: [
|
|
241
|
-
{ var: "state" },
|
|
242
|
-
{ status: "COMPLETED", completedAt: { var: "$ordinal" } },
|
|
243
|
-
],
|
|
231
|
+
merge: [{ var: 'state' }, { status: 'COMPLETED', completedAt: { var: '$ordinal' } }],
|
|
244
232
|
},
|
|
245
233
|
dependencies: [],
|
|
246
234
|
},
|
|
247
235
|
{
|
|
248
|
-
from:
|
|
249
|
-
to:
|
|
250
|
-
eventName:
|
|
251
|
-
guard: (0, guards_js_1.signerIsAnyParty)([
|
|
236
|
+
from: 'ACTIVE',
|
|
237
|
+
to: 'DISPUTED',
|
|
238
|
+
eventName: 'dispute',
|
|
239
|
+
guard: (0, guards_js_1.signerIsAnyParty)(['state.proposer', 'state.counterparty']),
|
|
252
240
|
effect: {
|
|
253
241
|
merge: [
|
|
254
|
-
{ var:
|
|
242
|
+
{ var: 'state' },
|
|
255
243
|
{
|
|
256
|
-
status:
|
|
257
|
-
disputedAt: { var:
|
|
258
|
-
disputeReason: { var:
|
|
259
|
-
disputedBy: { var:
|
|
244
|
+
status: 'DISPUTED',
|
|
245
|
+
disputedAt: { var: '$ordinal' },
|
|
246
|
+
disputeReason: { var: 'event.reason' },
|
|
247
|
+
disputedBy: { var: 'event.agent' },
|
|
260
248
|
},
|
|
261
249
|
],
|
|
262
250
|
},
|
|
263
251
|
dependencies: [],
|
|
264
252
|
},
|
|
265
253
|
{
|
|
266
|
-
from:
|
|
267
|
-
to:
|
|
268
|
-
eventName:
|
|
254
|
+
from: 'DISPUTED',
|
|
255
|
+
to: 'COMPLETED',
|
|
256
|
+
eventName: 'resolve',
|
|
269
257
|
// authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
|
|
270
258
|
guard: {
|
|
271
259
|
or: [
|
|
272
|
-
(0, guards_js_1.signerIsParty)(
|
|
260
|
+
(0, guards_js_1.signerIsParty)('state.arbitrator'),
|
|
273
261
|
{
|
|
274
|
-
and: [
|
|
275
|
-
(0, guards_js_1.signerIsParty)("state.proposer"),
|
|
276
|
-
(0, guards_js_1.signerIsParty)("state.counterparty"),
|
|
277
|
-
],
|
|
262
|
+
and: [(0, guards_js_1.signerIsParty)('state.proposer'), (0, guards_js_1.signerIsParty)('state.counterparty')],
|
|
278
263
|
},
|
|
279
264
|
],
|
|
280
265
|
},
|
|
281
266
|
effect: {
|
|
282
267
|
merge: [
|
|
283
|
-
{ var:
|
|
268
|
+
{ var: 'state' },
|
|
284
269
|
{
|
|
285
|
-
status:
|
|
286
|
-
resolvedAt: { var:
|
|
287
|
-
resolution: { var:
|
|
270
|
+
status: 'COMPLETED',
|
|
271
|
+
resolvedAt: { var: '$ordinal' },
|
|
272
|
+
resolution: { var: 'event.resolution' },
|
|
288
273
|
// rulingId is recorded only on the arbitrator-resolved path
|
|
289
274
|
rulingId: {
|
|
290
|
-
if: [
|
|
291
|
-
(0, guards_js_1.signerIsParty)("state.arbitrator"),
|
|
292
|
-
{ var: "event.rulingId" },
|
|
293
|
-
null,
|
|
294
|
-
],
|
|
275
|
+
if: [(0, guards_js_1.signerIsParty)('state.arbitrator'), { var: 'event.rulingId' }, null],
|
|
295
276
|
},
|
|
296
277
|
},
|
|
297
278
|
],
|
|
@@ -299,15 +280,12 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
299
280
|
dependencies: [],
|
|
300
281
|
},
|
|
301
282
|
{
|
|
302
|
-
from:
|
|
303
|
-
to:
|
|
304
|
-
eventName:
|
|
305
|
-
guard: (0, guards_js_1.signerIsAnyParty)([
|
|
283
|
+
from: 'ACTIVE',
|
|
284
|
+
to: 'CANCELLED',
|
|
285
|
+
eventName: 'cancel',
|
|
286
|
+
guard: (0, guards_js_1.signerIsAnyParty)(['state.proposer', 'state.counterparty']),
|
|
306
287
|
effect: {
|
|
307
|
-
merge: [
|
|
308
|
-
{ var: "state" },
|
|
309
|
-
{ status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
|
|
310
|
-
],
|
|
288
|
+
merge: [{ var: 'state' }, { status: 'CANCELLED', cancelledAt: { var: '$ordinal' } }],
|
|
311
289
|
},
|
|
312
290
|
dependencies: [],
|
|
313
291
|
},
|