@ottochain/sdk 2.3.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 +16 -9
- package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +134 -161
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +192 -170
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
- package/dist/cjs/apps/corporate/index.js +2 -2
- package/dist/cjs/apps/corporate/state-machines/corp-board.js +500 -456
- package/dist/cjs/apps/corporate/state-machines/corp-entity.js +487 -361
- package/dist/cjs/apps/corporate/state-machines/corp-securities.js +769 -576
- package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +567 -557
- package/dist/cjs/apps/governance/index.js +21 -21
- package/dist/cjs/apps/governance/state-machines/dao-multisig.js +188 -209
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +181 -228
- package/dist/cjs/apps/governance/state-machines/dao-single.js +105 -88
- package/dist/cjs/apps/governance/state-machines/dao-token.js +199 -227
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +231 -231
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
- package/dist/cjs/apps/identity/constants.js +55 -22
- package/dist/cjs/apps/identity/index.js +28 -12
- package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +158 -173
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +262 -0
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
- package/dist/cjs/apps/identity/state-machines/index.js +3 -1
- package/dist/cjs/apps/index.js +22 -8
- package/dist/cjs/apps/lending/assets.js +247 -0
- package/dist/cjs/apps/lending/credit-scoring.js +87 -0
- package/dist/cjs/apps/lending/eligibility.js +105 -0
- package/dist/cjs/apps/lending/index.js +91 -0
- package/dist/cjs/apps/lending/state-machines/index.js +9 -0
- package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +433 -0
- package/dist/cjs/apps/markets/index.js +22 -12
- package/dist/cjs/apps/markets/state-machines/market-auction.js +116 -134
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +131 -141
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +163 -184
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +226 -233
- package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
- package/dist/cjs/apps/oracles/index.js +3 -3
- 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/errors.js +3 -3
- package/dist/cjs/generated/google/protobuf/struct.js +5 -5
- package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
- package/dist/cjs/generated/index.js +11 -7
- package/dist/cjs/generated/openapi.js +6 -0
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +51 -51
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +20 -21
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +14 -14
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +5 -5
- package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +125 -131
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +108 -108
- package/dist/cjs/generated/ottochain/v1/common.js +5 -5
- package/dist/cjs/generated/ottochain/v1/fiber.js +44 -6
- 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 +58 -7
- package/dist/cjs/openapi.js +2 -0
- package/dist/cjs/ottochain/drop-nulls.js +1 -2
- package/dist/cjs/ottochain/genesis-manifest.js +17 -11
- package/dist/cjs/ottochain/index.js +23 -13
- package/dist/cjs/ottochain/metagraph-client.js +81 -16
- package/dist/cjs/ottochain/snapshot.js +13 -16
- package/dist/cjs/ottochain/transaction.js +67 -14
- package/dist/cjs/ottochain/types.js +16 -2
- package/dist/cjs/privacy/index.js +14 -0
- package/dist/cjs/privacy/sealed-bid.js +213 -0
- package/dist/cjs/privacy/shield-app.js +131 -0
- package/dist/cjs/schema/effects.js +156 -0
- package/dist/cjs/schema/fiber-app.js +150 -15
- package/dist/cjs/schema/guard-lint.js +343 -0
- package/dist/cjs/schema/guards.js +246 -0
- package/dist/cjs/signing.js +80 -0
- 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/types.js +2 -3
- package/dist/cjs/validation.js +9 -11
- package/dist/cjs/verify.js +9 -4
- package/dist/cjs/zk/commit.js +53 -0
- package/dist/cjs/zk/guard.js +107 -0
- package/dist/cjs/zk/index.js +48 -0
- package/dist/cjs/zk/preimage.js +37 -0
- package/dist/cjs/zk/prover.js +87 -0
- package/dist/cjs/zk/registry.js +62 -0
- package/dist/cjs/zk/types.js +28 -0
- package/dist/cjs/zk/witness.js +19 -0
- 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 +9 -5
- package/dist/esm/apps/contracts/state-machines/contract-agreement.js +135 -162
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +193 -171
- 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 +501 -457
- package/dist/esm/apps/corporate/state-machines/corp-entity.js +488 -362
- package/dist/esm/apps/corporate/state-machines/corp-securities.js +770 -577
- package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +568 -558
- package/dist/esm/apps/governance/index.js +10 -10
- package/dist/esm/apps/governance/state-machines/dao-multisig.js +189 -210
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +182 -229
- package/dist/esm/apps/governance/state-machines/dao-single.js +106 -89
- package/dist/esm/apps/governance/state-machines/dao-token.js +200 -228
- package/dist/esm/apps/governance/state-machines/governance-simple.js +232 -232
- package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
- package/dist/esm/apps/identity/constants.js +52 -21
- package/dist/esm/apps/identity/index.js +14 -9
- package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +159 -174
- package/dist/esm/apps/identity/state-machines/identity-registry.js +259 -0
- package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
- package/dist/esm/apps/identity/state-machines/index.js +1 -0
- package/dist/esm/apps/index.js +9 -5
- package/dist/esm/apps/lending/assets.js +231 -0
- package/dist/esm/apps/lending/credit-scoring.js +81 -0
- package/dist/esm/apps/lending/eligibility.js +99 -0
- package/dist/esm/apps/lending/index.js +69 -0
- package/dist/esm/apps/lending/state-machines/index.js +5 -0
- package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +430 -0
- package/dist/esm/apps/markets/index.js +11 -7
- package/dist/esm/apps/markets/state-machines/market-auction.js +117 -135
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +132 -142
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +164 -185
- package/dist/esm/apps/markets/state-machines/market-prediction.js +227 -234
- 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/index.js +9 -5
- package/dist/esm/generated/openapi.js +5 -0
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +47 -47
- 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 +115 -121
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +101 -101
- 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 +28 -3
- package/dist/esm/openapi.js +1 -0
- package/dist/esm/ottochain/genesis-manifest.js +15 -9
- package/dist/esm/ottochain/index.js +2 -3
- package/dist/esm/ottochain/metagraph-client.js +81 -16
- package/dist/esm/ottochain/snapshot.js +6 -8
- package/dist/esm/ottochain/transaction.js +51 -3
- package/dist/esm/ottochain/types.js +15 -1
- package/dist/esm/privacy/index.js +6 -0
- package/dist/esm/privacy/sealed-bid.js +209 -0
- package/dist/esm/privacy/shield-app.js +127 -0
- package/dist/esm/schema/effects.js +145 -0
- package/dist/esm/schema/fiber-app.js +139 -8
- package/dist/esm/schema/guard-lint.js +337 -0
- package/dist/esm/schema/guards.js +228 -0
- package/dist/esm/signing.js +74 -0
- 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/verify.js +8 -2
- package/dist/esm/zk/commit.js +44 -0
- package/dist/esm/zk/guard.js +99 -0
- package/dist/esm/zk/index.js +19 -0
- package/dist/esm/zk/preimage.js +30 -0
- package/dist/esm/zk/prover.js +82 -0
- package/dist/esm/zk/registry.js +55 -0
- package/dist/esm/zk/types.js +25 -0
- package/dist/esm/zk/witness.js +15 -0
- 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 +81 -221
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +23 -98
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +49 -115
- package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
- package/dist/types/apps/corporate/index.d.ts +1176 -440
- package/dist/types/apps/corporate/state-machines/corp-board.d.ts +271 -135
- package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +279 -74
- package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +373 -149
- package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +252 -80
- package/dist/types/apps/governance/index.d.ts +368 -470
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -107
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +61 -85
- package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +79 -68
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +95 -125
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +6 -6
- package/dist/types/apps/identity/constants.d.ts +33 -5
- package/dist/types/apps/identity/index.d.ts +415 -131
- package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +27 -98
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
- package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
- package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
- package/dist/types/apps/index.d.ts +9 -5
- package/dist/types/apps/lending/assets.d.ts +258 -0
- package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
- package/dist/types/apps/lending/eligibility.d.ts +83 -0
- package/dist/types/apps/lending/index.d.ts +556 -0
- package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
- package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +536 -0
- package/dist/types/apps/markets/index.d.ts +181 -276
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -49
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +35 -53
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +35 -61
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +65 -86
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +12 -12
- 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/index.d.ts +5 -5
- package/dist/types/generated/openapi.d.ts +1270 -0
- package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
- package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
- package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
- package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
- package/dist/types/index.d.ts +7 -3
- package/dist/types/openapi.d.ts +24 -0
- package/dist/types/ottochain/genesis-manifest.d.ts +11 -5
- package/dist/types/ottochain/index.d.ts +5 -6
- package/dist/types/ottochain/metagraph-client.d.ts +49 -7
- package/dist/types/ottochain/snapshot.d.ts +6 -6
- package/dist/types/ottochain/transaction.d.ts +41 -1
- package/dist/types/ottochain/types.d.ts +336 -31
- package/dist/types/privacy/index.d.ts +6 -0
- package/dist/types/privacy/sealed-bid.d.ts +348 -0
- package/dist/types/privacy/shield-app.d.ts +48 -0
- package/dist/types/schema/effects.d.ts +141 -0
- package/dist/types/schema/fiber-app.d.ts +282 -2
- package/dist/types/schema/guard-lint.d.ts +111 -0
- package/dist/types/schema/guards.d.ts +146 -0
- package/dist/types/signing.d.ts +45 -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/validation.d.ts +22 -217
- package/dist/types/verify.d.ts +4 -0
- package/dist/types/zk/commit.d.ts +28 -0
- package/dist/types/zk/guard.d.ts +46 -0
- package/dist/types/zk/index.d.ts +19 -0
- package/dist/types/zk/preimage.d.ts +10 -0
- package/dist/types/zk/prover.d.ts +34 -0
- package/dist/types/zk/registry.d.ts +34 -0
- package/dist/types/zk/types.d.ts +33 -0
- package/dist/types/zk/witness.d.ts +40 -0
- package/package.json +47 -15
- package/dist/cjs/ottochain/normalize.js +0 -186
- package/dist/esm/ottochain/normalize.js +0 -179
- package/dist/types/ottochain/normalize.d.ts +0 -79
|
@@ -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; } });
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @example
|
|
8
8
|
* ```typescript
|
|
9
9
|
* import {
|
|
10
|
-
*
|
|
10
|
+
* State,
|
|
11
11
|
* Contract,
|
|
12
12
|
* getContractDefinition,
|
|
13
13
|
* CONTRACTS_DEFINITIONS
|
|
@@ -20,10 +20,14 @@
|
|
|
20
20
|
* @packageDocumentation
|
|
21
21
|
*/
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.
|
|
24
|
-
|
|
23
|
+
exports.CONTRACTS_DEFINITIONS = exports.contractEscrowDef = exports.contractAgreementDef = exports.contractUniversalDef = exports.contractStateToJSON = exports.contractStateFromJSON = exports.ContractState = exports.stateToJSON = exports.stateFromJSON = exports.ContractDefinition = exports.DisputeContractRequest = exports.RejectContractRequest = exports.CompleteContractRequest = exports.AcceptContractRequest = exports.ProposeContractRequest = exports.Contract = exports.State = void 0;
|
|
24
|
+
exports.getContractDefinition = getContractDefinition;
|
|
25
|
+
exports.getEscrowDefinition = getEscrowDefinition;
|
|
26
|
+
// Re-export generated protobuf types (source of truth).
|
|
27
|
+
// The nested lifecycle enum dropped its app prefix in the proto; under this
|
|
28
|
+
// app-scoped entrypoint it is unambiguously State.
|
|
25
29
|
var contract_js_1 = require("../../generated/ottochain/apps/contracts/v1/contract.js");
|
|
26
|
-
Object.defineProperty(exports, "
|
|
30
|
+
Object.defineProperty(exports, "State", { enumerable: true, get: function () { return contract_js_1.State; } });
|
|
27
31
|
Object.defineProperty(exports, "Contract", { enumerable: true, get: function () { return contract_js_1.Contract; } });
|
|
28
32
|
Object.defineProperty(exports, "ProposeContractRequest", { enumerable: true, get: function () { return contract_js_1.ProposeContractRequest; } });
|
|
29
33
|
Object.defineProperty(exports, "AcceptContractRequest", { enumerable: true, get: function () { return contract_js_1.AcceptContractRequest; } });
|
|
@@ -31,8 +35,13 @@ Object.defineProperty(exports, "CompleteContractRequest", { enumerable: true, ge
|
|
|
31
35
|
Object.defineProperty(exports, "RejectContractRequest", { enumerable: true, get: function () { return contract_js_1.RejectContractRequest; } });
|
|
32
36
|
Object.defineProperty(exports, "DisputeContractRequest", { enumerable: true, get: function () { return contract_js_1.DisputeContractRequest; } });
|
|
33
37
|
Object.defineProperty(exports, "ContractDefinition", { enumerable: true, get: function () { return contract_js_1.ContractDefinition; } });
|
|
34
|
-
Object.defineProperty(exports, "
|
|
35
|
-
Object.defineProperty(exports, "
|
|
38
|
+
Object.defineProperty(exports, "stateFromJSON", { enumerable: true, get: function () { return contract_js_1.stateFromJSON; } });
|
|
39
|
+
Object.defineProperty(exports, "stateToJSON", { enumerable: true, get: function () { return contract_js_1.stateToJSON; } });
|
|
40
|
+
// Deprecated app-prefixed alias (renamed to State); kept for compat.
|
|
41
|
+
var contract_js_2 = require("../../generated/ottochain/apps/contracts/v1/contract.js");
|
|
42
|
+
Object.defineProperty(exports, "ContractState", { enumerable: true, get: function () { return contract_js_2.State; } });
|
|
43
|
+
Object.defineProperty(exports, "contractStateFromJSON", { enumerable: true, get: function () { return contract_js_2.stateFromJSON; } });
|
|
44
|
+
Object.defineProperty(exports, "contractStateToJSON", { enumerable: true, get: function () { return contract_js_2.stateToJSON; } });
|
|
36
45
|
// ---------------------------------------------------------------------------
|
|
37
46
|
// State Machine Definitions (generated from JSON at build time)
|
|
38
47
|
// ---------------------------------------------------------------------------
|
|
@@ -50,12 +59,10 @@ exports.CONTRACTS_DEFINITIONS = {
|
|
|
50
59
|
* Get a contract state machine definition by type.
|
|
51
60
|
* @param type - 'universal' | 'agreement' | 'escrow' (default: 'agreement')
|
|
52
61
|
*/
|
|
53
|
-
function getContractDefinition(type =
|
|
62
|
+
function getContractDefinition(type = 'agreement') {
|
|
54
63
|
return exports.CONTRACTS_DEFINITIONS[type];
|
|
55
64
|
}
|
|
56
|
-
exports.getContractDefinition = getContractDefinition;
|
|
57
65
|
/** @deprecated Use getContractDefinition('escrow') */
|
|
58
66
|
function getEscrowDefinition() {
|
|
59
67
|
return index_js_1.contractEscrowDef;
|
|
60
68
|
}
|
|
61
|
-
exports.getEscrowDefinition = getEscrowDefinition;
|