@ottochain/sdk 2.4.0 → 2.6.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 +21 -3
- package/dist/cjs/ottochain/genesis-manifest.js +6 -0
- package/dist/cjs/ottochain/metagraph-client.js +63 -11
- 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 +145 -1
- package/dist/cjs/schema/fiber-app.js +139 -5
- 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 +63 -11
- 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 +137 -0
- package/dist/esm/schema/fiber-app.js +134 -5
- 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/index.d.ts +1 -1
- package/dist/types/ottochain/metagraph-client.d.ts +69 -15
- 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 +132 -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
|
@@ -1,201 +1,201 @@
|
|
|
1
|
-
import { defineFiberApp } from
|
|
2
|
-
import { signerIsParty, signerInSet } from
|
|
1
|
+
import { defineFiberApp } from '../../../schema/fiber-app.js';
|
|
2
|
+
import { signerIsParty, signerInSet } from '../../../schema/guards.js';
|
|
3
3
|
/**
|
|
4
4
|
* Binary or multi-outcome prediction market with oracle resolution and position staking.
|
|
5
5
|
*/
|
|
6
6
|
export const marketPredictionDef = defineFiberApp({
|
|
7
7
|
metadata: {
|
|
8
|
-
name:
|
|
9
|
-
app:
|
|
10
|
-
type:
|
|
11
|
-
version:
|
|
12
|
-
description:
|
|
8
|
+
name: 'MarketPrediction',
|
|
9
|
+
app: 'markets',
|
|
10
|
+
type: 'prediction',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
description: 'Binary or multi-outcome prediction market with oracle resolution and position staking',
|
|
13
13
|
crossReferences: {
|
|
14
|
-
oracleId:
|
|
14
|
+
oracleId: 'Links to IdentityOracle that resolves the outcome',
|
|
15
15
|
creatorIdentityId: "Links to creator's IdentityAgent",
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
18
|
createSchema: {
|
|
19
|
-
required: [
|
|
19
|
+
required: ['creator', 'outcomes', 'oracles', 'quorum', 'arbiter'],
|
|
20
20
|
properties: {
|
|
21
21
|
creator: {
|
|
22
|
-
type:
|
|
23
|
-
description:
|
|
22
|
+
type: 'address',
|
|
23
|
+
description: 'DAG address of the market creator',
|
|
24
24
|
immutable: true,
|
|
25
25
|
},
|
|
26
26
|
arbiter: {
|
|
27
|
-
type:
|
|
28
|
-
description:
|
|
27
|
+
type: 'address',
|
|
28
|
+
description: 'DAG address of the arbiter authorized to rule on a disputed resolution',
|
|
29
29
|
immutable: true,
|
|
30
30
|
},
|
|
31
31
|
outcomes: {
|
|
32
|
-
type:
|
|
33
|
-
description:
|
|
32
|
+
type: 'array',
|
|
33
|
+
description: 'Valid outcome identifiers',
|
|
34
34
|
immutable: true,
|
|
35
35
|
},
|
|
36
36
|
oracles: {
|
|
37
|
-
type:
|
|
38
|
-
description:
|
|
37
|
+
type: 'array',
|
|
38
|
+
description: 'Authorized oracle addresses',
|
|
39
39
|
immutable: true,
|
|
40
40
|
},
|
|
41
41
|
quorum: {
|
|
42
|
-
type:
|
|
43
|
-
description:
|
|
42
|
+
type: 'number',
|
|
43
|
+
description: 'Minimum oracle submissions needed to resolve',
|
|
44
44
|
immutable: true,
|
|
45
45
|
},
|
|
46
|
-
deadline: { type:
|
|
46
|
+
deadline: { type: 'timestamp', description: 'Optional trading deadline' },
|
|
47
47
|
},
|
|
48
48
|
},
|
|
49
49
|
stateSchema: {
|
|
50
50
|
properties: {
|
|
51
|
-
status: { type:
|
|
52
|
-
creator: { type:
|
|
53
|
-
arbiter: { type:
|
|
54
|
-
outcomes: { type:
|
|
55
|
-
oracles: { type:
|
|
56
|
-
quorum: { type:
|
|
57
|
-
deadline: { type:
|
|
58
|
-
positions: { type:
|
|
59
|
-
totalPool: { type:
|
|
60
|
-
resolutions: { type:
|
|
61
|
-
finalOutcome: { type:
|
|
62
|
-
claims: { type:
|
|
51
|
+
status: { type: 'string', computed: true },
|
|
52
|
+
creator: { type: 'address', immutable: true },
|
|
53
|
+
arbiter: { type: 'address', immutable: true },
|
|
54
|
+
outcomes: { type: 'array', immutable: true },
|
|
55
|
+
oracles: { type: 'array', immutable: true },
|
|
56
|
+
quorum: { type: 'number', immutable: true },
|
|
57
|
+
deadline: { type: 'timestamp' },
|
|
58
|
+
positions: { type: 'object', computed: true },
|
|
59
|
+
totalPool: { type: 'number', computed: true },
|
|
60
|
+
resolutions: { type: 'array', computed: true },
|
|
61
|
+
finalOutcome: { type: 'string', computed: true },
|
|
62
|
+
claims: { type: 'array', computed: true },
|
|
63
63
|
},
|
|
64
64
|
},
|
|
65
65
|
eventSchemas: {
|
|
66
|
-
open: { description:
|
|
66
|
+
open: { description: 'Open the market for trading' },
|
|
67
67
|
cancel: {
|
|
68
|
-
description:
|
|
69
|
-
properties: { reason: { type:
|
|
68
|
+
description: 'Cancel the market before opening',
|
|
69
|
+
properties: { reason: { type: 'string' } },
|
|
70
70
|
},
|
|
71
71
|
take_position: {
|
|
72
|
-
description:
|
|
73
|
-
required: [
|
|
72
|
+
description: 'Take a position on an outcome',
|
|
73
|
+
required: ['outcome', 'amount'],
|
|
74
74
|
properties: {
|
|
75
|
-
outcome: { type:
|
|
76
|
-
amount: { type:
|
|
75
|
+
outcome: { type: 'string' },
|
|
76
|
+
amount: { type: 'number', minimum: 0 },
|
|
77
77
|
},
|
|
78
78
|
},
|
|
79
|
-
close: { description:
|
|
79
|
+
close: { description: 'Close trading' },
|
|
80
80
|
submit_resolution: {
|
|
81
|
-
description:
|
|
82
|
-
required: [
|
|
81
|
+
description: 'Submit oracle resolution',
|
|
82
|
+
required: ['outcome', 'proof'],
|
|
83
83
|
properties: {
|
|
84
|
-
outcome: { type:
|
|
85
|
-
proof: { type:
|
|
84
|
+
outcome: { type: 'string' },
|
|
85
|
+
proof: { type: 'string' },
|
|
86
86
|
},
|
|
87
87
|
},
|
|
88
88
|
finalize: {
|
|
89
|
-
description:
|
|
89
|
+
description: 'Finalize market after quorum reached',
|
|
90
90
|
},
|
|
91
91
|
dispute: {
|
|
92
|
-
description:
|
|
93
|
-
required: [
|
|
92
|
+
description: 'Dispute the resolution',
|
|
93
|
+
required: ['stake'],
|
|
94
94
|
properties: {
|
|
95
|
-
stake: { type:
|
|
96
|
-
reason: { type:
|
|
95
|
+
stake: { type: 'number', minimum: 0 },
|
|
96
|
+
reason: { type: 'string' },
|
|
97
97
|
},
|
|
98
98
|
},
|
|
99
99
|
ruling: {
|
|
100
|
-
description:
|
|
100
|
+
description: 'Judicial ruling on dispute',
|
|
101
101
|
properties: {
|
|
102
|
-
finalOutcome: { type:
|
|
103
|
-
rulingId: { type:
|
|
102
|
+
finalOutcome: { type: 'string' },
|
|
103
|
+
rulingId: { type: 'string' },
|
|
104
104
|
},
|
|
105
105
|
},
|
|
106
|
-
invalidate: { description:
|
|
106
|
+
invalidate: { description: 'Invalidate market by oracle consensus' },
|
|
107
107
|
claim: {
|
|
108
|
-
description:
|
|
109
|
-
properties: { amount: { type:
|
|
108
|
+
description: 'Claim payout after settlement',
|
|
109
|
+
properties: { amount: { type: 'number' } },
|
|
110
110
|
},
|
|
111
111
|
},
|
|
112
112
|
states: {
|
|
113
113
|
PROPOSED: {
|
|
114
|
-
id:
|
|
114
|
+
id: 'PROPOSED',
|
|
115
115
|
isFinal: false,
|
|
116
116
|
metadata: {
|
|
117
|
-
label:
|
|
118
|
-
description:
|
|
119
|
-
category:
|
|
117
|
+
label: 'Proposed',
|
|
118
|
+
description: 'Market created but not yet open for trading',
|
|
119
|
+
category: 'initial',
|
|
120
120
|
},
|
|
121
121
|
},
|
|
122
122
|
OPEN: {
|
|
123
|
-
id:
|
|
123
|
+
id: 'OPEN',
|
|
124
124
|
isFinal: false,
|
|
125
125
|
metadata: {
|
|
126
|
-
label:
|
|
127
|
-
description:
|
|
128
|
-
category:
|
|
126
|
+
label: 'Open',
|
|
127
|
+
description: 'Accepting positions on outcomes',
|
|
128
|
+
category: 'active',
|
|
129
129
|
},
|
|
130
130
|
},
|
|
131
131
|
CLOSED: {
|
|
132
|
-
id:
|
|
132
|
+
id: 'CLOSED',
|
|
133
133
|
isFinal: false,
|
|
134
134
|
metadata: {
|
|
135
|
-
label:
|
|
136
|
-
description:
|
|
137
|
-
category:
|
|
135
|
+
label: 'Closed',
|
|
136
|
+
description: 'No more positions, awaiting resolution',
|
|
137
|
+
category: 'pending',
|
|
138
138
|
},
|
|
139
139
|
},
|
|
140
140
|
RESOLVING: {
|
|
141
|
-
id:
|
|
141
|
+
id: 'RESOLVING',
|
|
142
142
|
isFinal: false,
|
|
143
143
|
metadata: {
|
|
144
|
-
label:
|
|
145
|
-
description:
|
|
146
|
-
category:
|
|
144
|
+
label: 'Resolving',
|
|
145
|
+
description: 'Oracle(s) submitting resolution',
|
|
146
|
+
category: 'pending',
|
|
147
147
|
},
|
|
148
148
|
},
|
|
149
149
|
DISPUTED: {
|
|
150
|
-
id:
|
|
150
|
+
id: 'DISPUTED',
|
|
151
151
|
isFinal: false,
|
|
152
152
|
metadata: {
|
|
153
|
-
label:
|
|
154
|
-
description:
|
|
155
|
-
category:
|
|
153
|
+
label: 'Disputed',
|
|
154
|
+
description: 'Resolution challenged, awaiting arbitration',
|
|
155
|
+
category: 'pending',
|
|
156
156
|
},
|
|
157
157
|
},
|
|
158
158
|
SETTLED: {
|
|
159
|
-
id:
|
|
159
|
+
id: 'SETTLED',
|
|
160
160
|
isFinal: true,
|
|
161
161
|
metadata: {
|
|
162
|
-
label:
|
|
163
|
-
description:
|
|
164
|
-
category:
|
|
162
|
+
label: 'Settled',
|
|
163
|
+
description: 'Outcome finalized, payouts available',
|
|
164
|
+
category: 'terminal',
|
|
165
165
|
},
|
|
166
166
|
},
|
|
167
167
|
REFUNDED: {
|
|
168
|
-
id:
|
|
168
|
+
id: 'REFUNDED',
|
|
169
169
|
isFinal: true,
|
|
170
170
|
metadata: {
|
|
171
|
-
label:
|
|
172
|
-
description:
|
|
173
|
-
category:
|
|
171
|
+
label: 'Refunded',
|
|
172
|
+
description: 'Market invalidated, all positions refunded',
|
|
173
|
+
category: 'terminal',
|
|
174
174
|
},
|
|
175
175
|
},
|
|
176
176
|
CANCELLED: {
|
|
177
|
-
id:
|
|
177
|
+
id: 'CANCELLED',
|
|
178
178
|
isFinal: true,
|
|
179
179
|
metadata: {
|
|
180
|
-
label:
|
|
181
|
-
description:
|
|
182
|
-
category:
|
|
180
|
+
label: 'Cancelled',
|
|
181
|
+
description: 'Market cancelled before opening',
|
|
182
|
+
category: 'terminal',
|
|
183
183
|
},
|
|
184
184
|
},
|
|
185
185
|
},
|
|
186
|
-
initialState:
|
|
186
|
+
initialState: 'PROPOSED',
|
|
187
187
|
transitions: [
|
|
188
188
|
{
|
|
189
|
-
from:
|
|
190
|
-
to:
|
|
191
|
-
eventName:
|
|
192
|
-
guard: signerIsParty(
|
|
189
|
+
from: 'PROPOSED',
|
|
190
|
+
to: 'OPEN',
|
|
191
|
+
eventName: 'open',
|
|
192
|
+
guard: signerIsParty('state.creator'),
|
|
193
193
|
effect: {
|
|
194
194
|
merge: [
|
|
195
|
-
{ var:
|
|
195
|
+
{ var: 'state' },
|
|
196
196
|
{
|
|
197
|
-
status:
|
|
198
|
-
openedAt: { var:
|
|
197
|
+
status: 'OPEN',
|
|
198
|
+
openedAt: { var: '$ordinal' },
|
|
199
199
|
positions: {},
|
|
200
200
|
totalPool: 0,
|
|
201
201
|
},
|
|
@@ -204,58 +204,51 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
204
204
|
dependencies: [],
|
|
205
205
|
},
|
|
206
206
|
{
|
|
207
|
-
from:
|
|
208
|
-
to:
|
|
209
|
-
eventName:
|
|
210
|
-
guard: signerIsParty(
|
|
207
|
+
from: 'PROPOSED',
|
|
208
|
+
to: 'CANCELLED',
|
|
209
|
+
eventName: 'cancel',
|
|
210
|
+
guard: signerIsParty('state.creator'),
|
|
211
211
|
effect: {
|
|
212
212
|
merge: [
|
|
213
|
-
{ var:
|
|
213
|
+
{ var: 'state' },
|
|
214
214
|
{
|
|
215
|
-
status:
|
|
216
|
-
cancelledAt: { var:
|
|
217
|
-
reason: { var:
|
|
215
|
+
status: 'CANCELLED',
|
|
216
|
+
cancelledAt: { var: '$ordinal' },
|
|
217
|
+
reason: { var: 'event.reason' },
|
|
218
218
|
},
|
|
219
219
|
],
|
|
220
220
|
},
|
|
221
221
|
dependencies: [],
|
|
222
222
|
},
|
|
223
223
|
{
|
|
224
|
-
from:
|
|
225
|
-
to:
|
|
226
|
-
eventName:
|
|
224
|
+
from: 'OPEN',
|
|
225
|
+
to: 'OPEN',
|
|
226
|
+
eventName: 'take_position',
|
|
227
227
|
guard: {
|
|
228
228
|
and: [
|
|
229
|
-
{
|
|
230
|
-
{ in: [{ var:
|
|
229
|
+
{ '>': [{ var: 'event.amount' }, 0] },
|
|
230
|
+
{ in: [{ var: 'event.outcome' }, { var: 'state.outcomes' }] },
|
|
231
231
|
{
|
|
232
|
-
or: [
|
|
233
|
-
{ "!": [{ var: "state.deadline" }] },
|
|
234
|
-
{ "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
235
|
-
],
|
|
232
|
+
or: [{ '!': [{ var: 'state.deadline' }] }, { '<=': [{ var: '$ordinal' }, { var: 'state.deadline' }] }],
|
|
236
233
|
},
|
|
237
234
|
],
|
|
238
235
|
},
|
|
239
236
|
effect: {
|
|
240
237
|
merge: [
|
|
241
|
-
{ var:
|
|
238
|
+
{ var: 'state' },
|
|
242
239
|
{
|
|
243
240
|
positions: {
|
|
244
241
|
merge: [
|
|
245
|
-
{ var:
|
|
242
|
+
{ var: 'state.positions' },
|
|
246
243
|
{
|
|
247
244
|
__computed: {
|
|
248
|
-
cat: [
|
|
249
|
-
{ var: "event.agent" },
|
|
250
|
-
"_",
|
|
251
|
-
{ var: "event.outcome" },
|
|
252
|
-
],
|
|
245
|
+
cat: [{ var: 'event.agent' }, '_', { var: 'event.outcome' }],
|
|
253
246
|
},
|
|
254
247
|
},
|
|
255
248
|
],
|
|
256
249
|
},
|
|
257
250
|
totalPool: {
|
|
258
|
-
|
|
251
|
+
'+': [{ var: 'state.totalPool' }, { var: 'event.amount' }],
|
|
259
252
|
},
|
|
260
253
|
},
|
|
261
254
|
],
|
|
@@ -263,44 +256,38 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
263
256
|
dependencies: [],
|
|
264
257
|
},
|
|
265
258
|
{
|
|
266
|
-
from:
|
|
267
|
-
to:
|
|
268
|
-
eventName:
|
|
259
|
+
from: 'OPEN',
|
|
260
|
+
to: 'CLOSED',
|
|
261
|
+
eventName: 'close',
|
|
269
262
|
guard: {
|
|
270
263
|
or: [
|
|
271
|
-
signerIsParty(
|
|
264
|
+
signerIsParty('state.creator'),
|
|
272
265
|
{
|
|
273
|
-
and: [
|
|
274
|
-
{ var: "state.deadline" },
|
|
275
|
-
{ ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
276
|
-
],
|
|
266
|
+
and: [{ var: 'state.deadline' }, { '>=': [{ var: '$ordinal' }, { var: 'state.deadline' }] }],
|
|
277
267
|
},
|
|
278
268
|
],
|
|
279
269
|
},
|
|
280
270
|
effect: {
|
|
281
|
-
merge: [
|
|
282
|
-
{ var: "state" },
|
|
283
|
-
{ status: "CLOSED", closedAt: { var: "$ordinal" } },
|
|
284
|
-
],
|
|
271
|
+
merge: [{ var: 'state' }, { status: 'CLOSED', closedAt: { var: '$ordinal' } }],
|
|
285
272
|
},
|
|
286
273
|
dependencies: [],
|
|
287
274
|
},
|
|
288
275
|
{
|
|
289
|
-
from:
|
|
290
|
-
to:
|
|
291
|
-
eventName:
|
|
292
|
-
guard: signerInSet(
|
|
276
|
+
from: 'CLOSED',
|
|
277
|
+
to: 'RESOLVING',
|
|
278
|
+
eventName: 'submit_resolution',
|
|
279
|
+
guard: signerInSet('state.oracles'),
|
|
293
280
|
effect: {
|
|
294
281
|
merge: [
|
|
295
|
-
{ var:
|
|
282
|
+
{ var: 'state' },
|
|
296
283
|
{
|
|
297
|
-
status:
|
|
284
|
+
status: 'RESOLVING',
|
|
298
285
|
resolutions: [
|
|
299
286
|
{
|
|
300
|
-
oracle: { var:
|
|
301
|
-
outcome: { var:
|
|
302
|
-
proof: { var:
|
|
303
|
-
submittedAt: { var:
|
|
287
|
+
oracle: { var: 'event.agent' },
|
|
288
|
+
outcome: { var: 'event.outcome' },
|
|
289
|
+
proof: { var: 'event.proof' },
|
|
290
|
+
submittedAt: { var: '$ordinal' },
|
|
304
291
|
},
|
|
305
292
|
],
|
|
306
293
|
},
|
|
@@ -309,19 +296,16 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
309
296
|
dependencies: [],
|
|
310
297
|
},
|
|
311
298
|
{
|
|
312
|
-
from:
|
|
313
|
-
to:
|
|
314
|
-
eventName:
|
|
299
|
+
from: 'RESOLVING',
|
|
300
|
+
to: 'RESOLVING',
|
|
301
|
+
eventName: 'submit_resolution',
|
|
315
302
|
guard: {
|
|
316
303
|
and: [
|
|
317
|
-
signerInSet(
|
|
304
|
+
signerInSet('state.oracles'),
|
|
318
305
|
{
|
|
319
|
-
|
|
306
|
+
'!': [
|
|
320
307
|
{
|
|
321
|
-
in: [
|
|
322
|
-
{ var: "event.agent" },
|
|
323
|
-
{ map: [{ var: "state.resolutions" }, { var: "oracle" }] },
|
|
324
|
-
],
|
|
308
|
+
in: [{ var: 'event.agent' }, { map: [{ var: 'state.resolutions' }, { var: 'oracle' }] }],
|
|
325
309
|
},
|
|
326
310
|
],
|
|
327
311
|
},
|
|
@@ -329,17 +313,17 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
329
313
|
},
|
|
330
314
|
effect: {
|
|
331
315
|
merge: [
|
|
332
|
-
{ var:
|
|
316
|
+
{ var: 'state' },
|
|
333
317
|
{
|
|
334
318
|
resolutions: {
|
|
335
319
|
cat: [
|
|
336
|
-
{ var:
|
|
320
|
+
{ var: 'state.resolutions' },
|
|
337
321
|
[
|
|
338
322
|
{
|
|
339
|
-
oracle: { var:
|
|
340
|
-
outcome: { var:
|
|
341
|
-
proof: { var:
|
|
342
|
-
submittedAt: { var:
|
|
323
|
+
oracle: { var: 'event.agent' },
|
|
324
|
+
outcome: { var: 'event.outcome' },
|
|
325
|
+
proof: { var: 'event.proof' },
|
|
326
|
+
submittedAt: { var: '$ordinal' },
|
|
343
327
|
},
|
|
344
328
|
],
|
|
345
329
|
],
|
|
@@ -350,29 +334,26 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
350
334
|
dependencies: [],
|
|
351
335
|
},
|
|
352
336
|
{
|
|
353
|
-
from:
|
|
354
|
-
to:
|
|
355
|
-
eventName:
|
|
337
|
+
from: 'RESOLVING',
|
|
338
|
+
to: 'SETTLED',
|
|
339
|
+
eventName: 'finalize',
|
|
356
340
|
// 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)
|
|
357
341
|
guard: {
|
|
358
342
|
and: [
|
|
359
|
-
signerInSet(
|
|
343
|
+
signerInSet('state.oracles'),
|
|
360
344
|
{
|
|
361
|
-
|
|
362
|
-
{ count: { var: "state.resolutions" } },
|
|
363
|
-
{ var: "state.quorum" },
|
|
364
|
-
],
|
|
345
|
+
'>=': [{ count: { var: 'state.resolutions' } }, { var: 'state.quorum' }],
|
|
365
346
|
},
|
|
366
347
|
],
|
|
367
348
|
},
|
|
368
349
|
effect: {
|
|
369
350
|
merge: [
|
|
370
|
-
{ var:
|
|
351
|
+
{ var: 'state' },
|
|
371
352
|
{
|
|
372
|
-
status:
|
|
373
|
-
settledAt: { var:
|
|
353
|
+
status: 'SETTLED',
|
|
354
|
+
settledAt: { var: '$ordinal' },
|
|
374
355
|
// finalOutcome derives from the quorum-agreed resolution, not a raw event field
|
|
375
|
-
finalOutcome: { var:
|
|
356
|
+
finalOutcome: { var: 'state.resolutions.0.outcome' },
|
|
376
357
|
claims: [],
|
|
377
358
|
},
|
|
378
359
|
],
|
|
@@ -380,62 +361,56 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
380
361
|
dependencies: [],
|
|
381
362
|
},
|
|
382
363
|
{
|
|
383
|
-
from:
|
|
384
|
-
to:
|
|
385
|
-
eventName:
|
|
364
|
+
from: 'RESOLVING',
|
|
365
|
+
to: 'DISPUTED',
|
|
366
|
+
eventName: 'dispute',
|
|
386
367
|
guard: {
|
|
387
368
|
and: [
|
|
388
369
|
{
|
|
389
|
-
|
|
370
|
+
'>': [
|
|
390
371
|
{
|
|
391
372
|
length: [
|
|
392
373
|
{
|
|
393
|
-
filter: [
|
|
394
|
-
{ var: "state.positions" },
|
|
395
|
-
{ "===": [{ var: "agent" }, { var: "event.agent" }] },
|
|
396
|
-
],
|
|
374
|
+
filter: [{ var: 'state.positions' }, { '===': [{ var: 'agent' }, { var: 'event.agent' }] }],
|
|
397
375
|
},
|
|
398
376
|
],
|
|
399
377
|
},
|
|
400
378
|
0,
|
|
401
379
|
],
|
|
402
380
|
},
|
|
403
|
-
{ var:
|
|
381
|
+
{ var: 'event.stake' },
|
|
404
382
|
],
|
|
405
383
|
},
|
|
406
384
|
effect: {
|
|
407
385
|
merge: [
|
|
408
|
-
{ var:
|
|
386
|
+
{ var: 'state' },
|
|
409
387
|
{
|
|
410
|
-
status:
|
|
411
|
-
disputedAt: { var:
|
|
412
|
-
disputedBy: { var:
|
|
413
|
-
disputeStake: { var:
|
|
414
|
-
disputeReason: { var:
|
|
388
|
+
status: 'DISPUTED',
|
|
389
|
+
disputedAt: { var: '$ordinal' },
|
|
390
|
+
disputedBy: { var: 'event.agent' },
|
|
391
|
+
disputeStake: { var: 'event.stake' },
|
|
392
|
+
disputeReason: { var: 'event.reason' },
|
|
415
393
|
},
|
|
416
394
|
],
|
|
417
395
|
},
|
|
418
396
|
dependencies: [],
|
|
419
397
|
},
|
|
420
398
|
{
|
|
421
|
-
from:
|
|
422
|
-
to:
|
|
423
|
-
eventName:
|
|
399
|
+
from: 'DISPUTED',
|
|
400
|
+
to: 'SETTLED',
|
|
401
|
+
eventName: 'ruling',
|
|
424
402
|
// 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)
|
|
425
403
|
guard: {
|
|
426
|
-
and: [
|
|
427
|
-
signerIsParty("state.arbiter"),
|
|
428
|
-
{ in: [{ var: "event.finalOutcome" }, { var: "state.outcomes" }] },
|
|
429
|
-
],
|
|
404
|
+
and: [signerIsParty('state.arbiter'), { in: [{ var: 'event.finalOutcome' }, { var: 'state.outcomes' }] }],
|
|
430
405
|
},
|
|
431
406
|
effect: {
|
|
432
407
|
merge: [
|
|
433
|
-
{ var:
|
|
408
|
+
{ var: 'state' },
|
|
434
409
|
{
|
|
435
|
-
status:
|
|
436
|
-
settledAt: { var:
|
|
437
|
-
finalOutcome: { var:
|
|
438
|
-
rulingId: { var:
|
|
410
|
+
status: 'SETTLED',
|
|
411
|
+
settledAt: { var: '$ordinal' },
|
|
412
|
+
finalOutcome: { var: 'event.finalOutcome' },
|
|
413
|
+
rulingId: { var: 'event.rulingId' },
|
|
439
414
|
claims: [],
|
|
440
415
|
},
|
|
441
416
|
],
|
|
@@ -443,57 +418,51 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
443
418
|
dependencies: [],
|
|
444
419
|
},
|
|
445
420
|
{
|
|
446
|
-
from:
|
|
447
|
-
to:
|
|
448
|
-
eventName:
|
|
421
|
+
from: 'RESOLVING',
|
|
422
|
+
to: 'REFUNDED',
|
|
423
|
+
eventName: 'invalidate',
|
|
449
424
|
guard: {
|
|
450
|
-
|
|
425
|
+
'>=': [
|
|
451
426
|
{
|
|
452
427
|
length: [
|
|
453
428
|
{
|
|
454
|
-
filter: [
|
|
455
|
-
{ var: "state.resolutions" },
|
|
456
|
-
{ "===": [{ var: "outcome" }, "INVALID"] },
|
|
457
|
-
],
|
|
429
|
+
filter: [{ var: 'state.resolutions' }, { '===': [{ var: 'outcome' }, 'INVALID'] }],
|
|
458
430
|
},
|
|
459
431
|
],
|
|
460
432
|
},
|
|
461
|
-
{ var:
|
|
433
|
+
{ var: 'state.quorum' },
|
|
462
434
|
],
|
|
463
435
|
},
|
|
464
436
|
effect: {
|
|
465
437
|
merge: [
|
|
466
|
-
{ var:
|
|
438
|
+
{ var: 'state' },
|
|
467
439
|
{
|
|
468
|
-
status:
|
|
469
|
-
refundedAt: { var:
|
|
470
|
-
reason:
|
|
440
|
+
status: 'REFUNDED',
|
|
441
|
+
refundedAt: { var: '$ordinal' },
|
|
442
|
+
reason: 'oracle_invalidation',
|
|
471
443
|
},
|
|
472
444
|
],
|
|
473
445
|
},
|
|
474
446
|
dependencies: [],
|
|
475
447
|
},
|
|
476
448
|
{
|
|
477
|
-
from:
|
|
478
|
-
to:
|
|
479
|
-
eventName:
|
|
449
|
+
from: 'SETTLED',
|
|
450
|
+
to: 'SETTLED',
|
|
451
|
+
eventName: 'claim',
|
|
480
452
|
guard: {
|
|
481
453
|
and: [
|
|
482
454
|
{
|
|
483
|
-
|
|
455
|
+
'>': [
|
|
484
456
|
{
|
|
485
457
|
length: [
|
|
486
458
|
{
|
|
487
459
|
filter: [
|
|
488
|
-
{ var:
|
|
460
|
+
{ var: 'state.positions' },
|
|
489
461
|
{
|
|
490
462
|
and: [
|
|
491
|
-
{
|
|
463
|
+
{ '===': [{ var: 'agent' }, { var: 'event.agent' }] },
|
|
492
464
|
{
|
|
493
|
-
|
|
494
|
-
{ var: "outcome" },
|
|
495
|
-
{ var: "state.finalOutcome" },
|
|
496
|
-
],
|
|
465
|
+
'===': [{ var: 'outcome' }, { var: 'state.finalOutcome' }],
|
|
497
466
|
},
|
|
498
467
|
],
|
|
499
468
|
},
|
|
@@ -505,12 +474,9 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
505
474
|
],
|
|
506
475
|
},
|
|
507
476
|
{
|
|
508
|
-
|
|
477
|
+
'!': [
|
|
509
478
|
{
|
|
510
|
-
in: [
|
|
511
|
-
{ var: "event.agent" },
|
|
512
|
-
{ map: [{ var: "state.claims" }, { var: "agent" }] },
|
|
513
|
-
],
|
|
479
|
+
in: [{ var: 'event.agent' }, { map: [{ var: 'state.claims' }, { var: 'agent' }] }],
|
|
514
480
|
},
|
|
515
481
|
],
|
|
516
482
|
},
|
|
@@ -518,16 +484,16 @@ export const marketPredictionDef = defineFiberApp({
|
|
|
518
484
|
},
|
|
519
485
|
effect: {
|
|
520
486
|
merge: [
|
|
521
|
-
{ var:
|
|
487
|
+
{ var: 'state' },
|
|
522
488
|
{
|
|
523
489
|
claims: {
|
|
524
490
|
cat: [
|
|
525
|
-
{ var:
|
|
491
|
+
{ var: 'state.claims' },
|
|
526
492
|
[
|
|
527
493
|
{
|
|
528
|
-
agent: { var:
|
|
529
|
-
amount: { var:
|
|
530
|
-
claimedAt: { var:
|
|
494
|
+
agent: { var: 'event.agent' },
|
|
495
|
+
amount: { var: 'event.amount' },
|
|
496
|
+
claimedAt: { var: '$ordinal' },
|
|
531
497
|
},
|
|
532
498
|
],
|
|
533
499
|
],
|