@ottochain/sdk 2.2.5 → 2.4.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/contracts/index.js +15 -8
- package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +89 -46
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +152 -45
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +40 -8
- package/dist/cjs/apps/corporate/index.js +2 -2
- package/dist/cjs/apps/corporate/state-machines/corp-board.js +169 -59
- package/dist/cjs/apps/corporate/state-machines/corp-entity.js +245 -47
- package/dist/cjs/apps/corporate/state-machines/corp-securities.js +407 -99
- package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +151 -37
- package/dist/cjs/apps/governance/index.js +14 -14
- package/dist/cjs/apps/governance/state-machines/dao-multisig.js +85 -43
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +73 -43
- package/dist/cjs/apps/governance/state-machines/dao-single.js +55 -14
- package/dist/cjs/apps/governance/state-machines/dao-token.js +103 -45
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +129 -65
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +29 -5
- package/dist/cjs/apps/identity/constants.js +55 -14
- package/dist/cjs/apps/identity/index.js +27 -11
- package/dist/cjs/apps/identity/state-machines/identity-agent.js +57 -9
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +70 -27
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +30 -6
- package/dist/cjs/apps/identity/state-machines/index.js +3 -1
- package/dist/cjs/apps/index.js +19 -8
- package/dist/cjs/apps/lending/assets.js +223 -0
- package/dist/cjs/apps/lending/credit-scoring.js +87 -0
- package/dist/cjs/apps/lending/eligibility.js +121 -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 +412 -0
- package/dist/cjs/apps/markets/index.js +21 -11
- package/dist/cjs/apps/markets/state-machines/market-auction.js +44 -19
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +54 -29
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +53 -31
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +120 -61
- package/dist/cjs/apps/markets/state-machines/market-universal.js +50 -10
- package/dist/cjs/apps/oracles/index.js +2 -2
- package/dist/cjs/errors.js +3 -3
- package/dist/cjs/generated/google/protobuf/struct.js +4 -4
- 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 +50 -50
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +19 -20
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +13 -13
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +4 -4
- package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +124 -130
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +107 -107
- package/dist/cjs/generated/ottochain/v1/common.js +1722 -1
- package/dist/cjs/generated/ottochain/v1/fiber.js +355 -5
- package/dist/cjs/generated/ottochain/v1/messages.js +775 -3
- package/dist/cjs/generated/ottochain/v1/records.js +350 -3
- package/dist/cjs/index.js +45 -7
- package/dist/cjs/openapi.js +2 -0
- package/dist/cjs/ottochain/drop-nulls.js +1 -2
- package/dist/cjs/ottochain/genesis-manifest.js +193 -0
- package/dist/cjs/ottochain/index.js +27 -13
- package/dist/cjs/ottochain/metagraph-client.js +65 -8
- package/dist/cjs/ottochain/snapshot.js +11 -12
- package/dist/cjs/ottochain/transaction.js +57 -14
- package/dist/cjs/ottochain/types.js +19 -1
- package/dist/cjs/privacy/index.js +14 -0
- package/dist/cjs/privacy/sealed-bid.js +210 -0
- package/dist/cjs/privacy/shield-app.js +131 -0
- package/dist/cjs/schema/effects.js +40 -0
- package/dist/cjs/schema/fiber-app.js +19 -13
- package/dist/cjs/schema/guard-lint.js +352 -0
- package/dist/cjs/schema/guards.js +246 -0
- package/dist/cjs/signing.js +80 -0
- package/dist/cjs/types.js +2 -3
- package/dist/cjs/validation.js +8 -8
- 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/contracts/index.js +7 -3
- package/dist/esm/apps/contracts/state-machines/contract-agreement.js +89 -46
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +152 -45
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +40 -8
- package/dist/esm/apps/corporate/state-machines/corp-board.js +169 -59
- package/dist/esm/apps/corporate/state-machines/corp-entity.js +245 -47
- package/dist/esm/apps/corporate/state-machines/corp-securities.js +407 -99
- package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +151 -37
- package/dist/esm/apps/governance/state-machines/dao-multisig.js +85 -43
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +73 -43
- package/dist/esm/apps/governance/state-machines/dao-single.js +55 -14
- package/dist/esm/apps/governance/state-machines/dao-token.js +103 -45
- package/dist/esm/apps/governance/state-machines/governance-simple.js +129 -65
- package/dist/esm/apps/governance/state-machines/governance-universal.js +29 -5
- package/dist/esm/apps/identity/constants.js +51 -12
- package/dist/esm/apps/identity/index.js +12 -7
- package/dist/esm/apps/identity/state-machines/identity-agent.js +57 -9
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +70 -27
- package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
- package/dist/esm/apps/identity/state-machines/identity-universal.js +30 -6
- package/dist/esm/apps/identity/state-machines/index.js +1 -0
- package/dist/esm/apps/index.js +1 -0
- package/dist/esm/apps/lending/assets.js +207 -0
- package/dist/esm/apps/lending/credit-scoring.js +81 -0
- package/dist/esm/apps/lending/eligibility.js +115 -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 +409 -0
- package/dist/esm/apps/markets/index.js +8 -4
- package/dist/esm/apps/markets/state-machines/market-auction.js +44 -19
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +54 -29
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +53 -31
- package/dist/esm/apps/markets/state-machines/market-prediction.js +120 -61
- package/dist/esm/apps/markets/state-machines/market-universal.js +50 -10
- 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 +46 -46
- package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +114 -120
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +100 -100
- package/dist/esm/generated/ottochain/v1/common.js +1718 -0
- package/dist/esm/generated/ottochain/v1/fiber.js +351 -1
- package/dist/esm/generated/ottochain/v1/messages.js +774 -2
- package/dist/esm/generated/ottochain/v1/records.js +349 -2
- package/dist/esm/index.js +23 -2
- package/dist/esm/openapi.js +1 -0
- package/dist/esm/ottochain/genesis-manifest.js +189 -0
- package/dist/esm/ottochain/index.js +4 -3
- package/dist/esm/ottochain/metagraph-client.js +65 -8
- package/dist/esm/ottochain/snapshot.js +4 -4
- package/dist/esm/ottochain/transaction.js +43 -3
- package/dist/esm/ottochain/types.js +18 -0
- package/dist/esm/privacy/index.js +6 -0
- package/dist/esm/privacy/sealed-bid.js +206 -0
- package/dist/esm/privacy/shield-app.js +127 -0
- package/dist/esm/schema/effects.js +35 -0
- package/dist/esm/schema/fiber-app.js +13 -6
- package/dist/esm/schema/guard-lint.js +346 -0
- package/dist/esm/schema/guards.js +229 -0
- package/dist/esm/signing.js +74 -0
- 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/contracts/index.d.ts +159 -227
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +50 -101
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +86 -120
- package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +20 -4
- package/dist/types/apps/corporate/index.d.ts +1040 -304
- package/dist/types/apps/corporate/state-machines/corp-board.d.ts +188 -52
- package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +267 -62
- package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +355 -131
- package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +225 -53
- package/dist/types/apps/governance/index.d.ts +396 -417
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -95
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +57 -69
- package/dist/types/apps/governance/state-machines/dao-single.d.ts +40 -50
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +80 -53
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +107 -121
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +17 -5
- package/dist/types/apps/identity/constants.d.ts +32 -4
- package/dist/types/apps/identity/index.d.ts +449 -100
- package/dist/types/apps/identity/state-machines/identity-agent.d.ts +30 -0
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +41 -87
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
- package/dist/types/apps/identity/state-machines/identity-universal.d.ts +15 -0
- package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
- package/dist/types/apps/index.d.ts +1 -0
- 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 +548 -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 +528 -0
- package/dist/types/apps/markets/index.d.ts +184 -204
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -37
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +26 -34
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +31 -43
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +67 -72
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +30 -10
- package/dist/types/generated/index.d.ts +5 -5
- package/dist/types/generated/openapi.d.ts +1257 -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/common.d.ts +228 -0
- package/dist/types/generated/ottochain/v1/fiber.d.ts +32 -1
- package/dist/types/generated/ottochain/v1/messages.d.ts +84 -0
- package/dist/types/generated/ottochain/v1/records.d.ts +34 -0
- package/dist/types/index.d.ts +8 -2
- package/dist/types/openapi.d.ts +22 -0
- package/dist/types/ottochain/genesis-manifest.d.ts +130 -0
- package/dist/types/ottochain/index.d.ts +6 -5
- 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 +33 -1
- package/dist/types/ottochain/types.d.ts +602 -11
- 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 +34 -0
- package/dist/types/schema/fiber-app.d.ts +41 -3
- package/dist/types/schema/guard-lint.d.ts +111 -0
- package/dist/types/schema/guards.d.ts +134 -0
- package/dist/types/signing.d.ts +45 -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 +52 -35
- 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
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.daoSingleDef = void 0;
|
|
4
4
|
const fiber_app_js_1 = require("../../../schema/fiber-app.js");
|
|
5
|
+
const guards_js_1 = require("../../../schema/guards.js");
|
|
5
6
|
/**
|
|
6
7
|
* Single owner controls all actions. Simplest governance model.
|
|
7
8
|
*/
|
|
@@ -78,9 +79,33 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
78
79
|
},
|
|
79
80
|
},
|
|
80
81
|
states: {
|
|
81
|
-
ACTIVE: {
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
ACTIVE: {
|
|
83
|
+
id: "ACTIVE",
|
|
84
|
+
isFinal: false,
|
|
85
|
+
metadata: {
|
|
86
|
+
label: "Active",
|
|
87
|
+
description: "Single owner controls the DAO and may act or transfer ownership",
|
|
88
|
+
category: "initial",
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
TRANSFERRING: {
|
|
92
|
+
id: "TRANSFERRING",
|
|
93
|
+
isFinal: false,
|
|
94
|
+
metadata: {
|
|
95
|
+
label: "Transferring",
|
|
96
|
+
description: "Ownership transfer proposed; awaiting acceptance",
|
|
97
|
+
category: "pending",
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
DISSOLVED: {
|
|
101
|
+
id: "DISSOLVED",
|
|
102
|
+
isFinal: true,
|
|
103
|
+
metadata: {
|
|
104
|
+
label: "Dissolved",
|
|
105
|
+
description: "DAO dissolved by its owner (terminal)",
|
|
106
|
+
category: "terminal",
|
|
107
|
+
},
|
|
108
|
+
},
|
|
84
109
|
},
|
|
85
110
|
initialState: "ACTIVE",
|
|
86
111
|
transitions: [
|
|
@@ -89,7 +114,7 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
89
114
|
from: "ACTIVE",
|
|
90
115
|
to: "ACTIVE",
|
|
91
116
|
eventName: "execute",
|
|
92
|
-
guard:
|
|
117
|
+
guard: (0, guards_js_1.signerIsParty)("state.owner"),
|
|
93
118
|
effect: {
|
|
94
119
|
merge: [
|
|
95
120
|
{ var: "state" },
|
|
@@ -102,15 +127,23 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
102
127
|
id: { var: "event.actionId" },
|
|
103
128
|
type: { var: "event.actionType" },
|
|
104
129
|
payload: { var: "event.payload" },
|
|
105
|
-
executedAt: { var: "$
|
|
130
|
+
executedAt: { var: "$ordinal" },
|
|
106
131
|
},
|
|
107
132
|
],
|
|
108
133
|
],
|
|
109
134
|
},
|
|
135
|
+
// A3 fix: transition-level `emits` is dropped by the chain; emit from INSIDE the effect
|
|
136
|
+
// under the reserved `_emit` key (extracted as an EmittedEvent, stripped from state).
|
|
137
|
+
_emit: [
|
|
138
|
+
{
|
|
139
|
+
name: "action_executed",
|
|
140
|
+
data: { actionId: { var: "event.actionId" } },
|
|
141
|
+
destination: "external",
|
|
142
|
+
},
|
|
143
|
+
],
|
|
110
144
|
},
|
|
111
145
|
],
|
|
112
146
|
},
|
|
113
|
-
emits: [{ event: "action_executed", to: "external" }],
|
|
114
147
|
dependencies: [],
|
|
115
148
|
},
|
|
116
149
|
// ACTIVE → TRANSFERRING: transfer_ownership (owner only)
|
|
@@ -118,13 +151,13 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
118
151
|
from: "ACTIVE",
|
|
119
152
|
to: "TRANSFERRING",
|
|
120
153
|
eventName: "transfer_ownership",
|
|
121
|
-
guard:
|
|
154
|
+
guard: (0, guards_js_1.signerIsParty)("state.owner"),
|
|
122
155
|
effect: {
|
|
123
156
|
merge: [
|
|
124
157
|
{ var: "state" },
|
|
125
158
|
{
|
|
126
159
|
pendingOwner: { var: "event.newOwner" },
|
|
127
|
-
transferInitiatedAt: { var: "$
|
|
160
|
+
transferInitiatedAt: { var: "$ordinal" },
|
|
128
161
|
},
|
|
129
162
|
],
|
|
130
163
|
},
|
|
@@ -135,7 +168,7 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
135
168
|
from: "TRANSFERRING",
|
|
136
169
|
to: "ACTIVE",
|
|
137
170
|
eventName: "accept_ownership",
|
|
138
|
-
guard:
|
|
171
|
+
guard: (0, guards_js_1.signerIsParty)("state.pendingOwner"),
|
|
139
172
|
effect: {
|
|
140
173
|
merge: [
|
|
141
174
|
{ var: "state" },
|
|
@@ -150,15 +183,23 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
150
183
|
{
|
|
151
184
|
from: { var: "state.owner" },
|
|
152
185
|
to: { var: "state.pendingOwner" },
|
|
153
|
-
at: { var: "$
|
|
186
|
+
at: { var: "$ordinal" },
|
|
154
187
|
},
|
|
155
188
|
],
|
|
156
189
|
],
|
|
157
190
|
},
|
|
191
|
+
// A3 fix: transition-level `emits` is dropped by the chain; emit from INSIDE the effect
|
|
192
|
+
// under the reserved `_emit` key (extracted as an EmittedEvent, stripped from state).
|
|
193
|
+
_emit: [
|
|
194
|
+
{
|
|
195
|
+
name: "ownership_transferred",
|
|
196
|
+
data: { var: "event" },
|
|
197
|
+
destination: "Identity",
|
|
198
|
+
},
|
|
199
|
+
],
|
|
158
200
|
},
|
|
159
201
|
],
|
|
160
202
|
},
|
|
161
|
-
emits: [{ event: "ownership_transferred", to: "Identity" }],
|
|
162
203
|
dependencies: [],
|
|
163
204
|
},
|
|
164
205
|
// TRANSFERRING → ACTIVE: cancel_transfer (owner only)
|
|
@@ -166,7 +207,7 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
166
207
|
from: "TRANSFERRING",
|
|
167
208
|
to: "ACTIVE",
|
|
168
209
|
eventName: "cancel_transfer",
|
|
169
|
-
guard:
|
|
210
|
+
guard: (0, guards_js_1.signerIsParty)("state.owner"),
|
|
170
211
|
effect: {
|
|
171
212
|
merge: [
|
|
172
213
|
{ var: "state" },
|
|
@@ -183,12 +224,12 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
183
224
|
from: "ACTIVE",
|
|
184
225
|
to: "DISSOLVED",
|
|
185
226
|
eventName: "dissolve",
|
|
186
|
-
guard:
|
|
227
|
+
guard: (0, guards_js_1.signerIsParty)("state.owner"),
|
|
187
228
|
effect: {
|
|
188
229
|
merge: [
|
|
189
230
|
{ var: "state" },
|
|
190
231
|
{
|
|
191
|
-
dissolvedAt: { var: "$
|
|
232
|
+
dissolvedAt: { var: "$ordinal" },
|
|
192
233
|
status: "DISSOLVED",
|
|
193
234
|
},
|
|
194
235
|
],
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.daoTokenDef = void 0;
|
|
4
4
|
const fiber_app_js_1 = require("../../../schema/fiber-app.js");
|
|
5
|
+
const guards_js_1 = require("../../../schema/guards.js");
|
|
5
6
|
/**
|
|
6
7
|
* Token-weighted voting. Voting power proportional to token holdings.
|
|
7
8
|
*/
|
|
@@ -128,10 +129,42 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
128
129
|
},
|
|
129
130
|
},
|
|
130
131
|
states: {
|
|
131
|
-
ACTIVE: {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
ACTIVE: {
|
|
133
|
+
id: "ACTIVE",
|
|
134
|
+
isFinal: false,
|
|
135
|
+
metadata: {
|
|
136
|
+
label: "Active",
|
|
137
|
+
description: "DAO is idle and ready to accept a proposal",
|
|
138
|
+
category: "initial",
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
VOTING: {
|
|
142
|
+
id: "VOTING",
|
|
143
|
+
isFinal: false,
|
|
144
|
+
metadata: {
|
|
145
|
+
label: "Voting",
|
|
146
|
+
description: "Token holders are voting on the active proposal",
|
|
147
|
+
category: "pending",
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
QUEUED: {
|
|
151
|
+
id: "QUEUED",
|
|
152
|
+
isFinal: false,
|
|
153
|
+
metadata: {
|
|
154
|
+
label: "Queued",
|
|
155
|
+
description: "Passed proposal queued in timelock before execution",
|
|
156
|
+
category: "pending",
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
DISSOLVED: {
|
|
160
|
+
id: "DISSOLVED",
|
|
161
|
+
isFinal: true,
|
|
162
|
+
metadata: {
|
|
163
|
+
label: "Dissolved",
|
|
164
|
+
description: "Token DAO dissolved (terminal)",
|
|
165
|
+
category: "terminal",
|
|
166
|
+
},
|
|
167
|
+
},
|
|
135
168
|
},
|
|
136
169
|
initialState: "ACTIVE",
|
|
137
170
|
transitions: [
|
|
@@ -140,10 +173,18 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
140
173
|
from: "ACTIVE",
|
|
141
174
|
to: "VOTING",
|
|
142
175
|
eventName: "propose",
|
|
176
|
+
// S1/A2 coupled fix: a CHAIN-VERIFIED signer must hold >= proposalThreshold
|
|
177
|
+
// tokens. Iterate proofs[].address and read each balance via `get` (getKey is
|
|
178
|
+
// not a JLVM opcode); never trust the forgeable event.agent for the lookup.
|
|
143
179
|
guard: {
|
|
144
|
-
|
|
145
|
-
{
|
|
146
|
-
{
|
|
180
|
+
some: [
|
|
181
|
+
{ map: [{ var: "proofs" }, { var: "address" }] },
|
|
182
|
+
{
|
|
183
|
+
">=": [
|
|
184
|
+
{ get: [{ var: "state.balances" }, { var: "" }] },
|
|
185
|
+
{ var: "state.proposalThreshold" },
|
|
186
|
+
],
|
|
187
|
+
},
|
|
147
188
|
],
|
|
148
189
|
},
|
|
149
190
|
effect: {
|
|
@@ -157,9 +198,9 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
157
198
|
actionType: { var: "event.actionType" },
|
|
158
199
|
payload: { var: "event.payload" },
|
|
159
200
|
proposer: { var: "event.agent" },
|
|
160
|
-
proposedAt: { var: "$
|
|
201
|
+
proposedAt: { var: "$ordinal" },
|
|
161
202
|
votingEndsAt: {
|
|
162
|
-
"+": [{ var: "$
|
|
203
|
+
"+": [{ var: "$ordinal" }, { var: "state.votingPeriodMs" }],
|
|
163
204
|
},
|
|
164
205
|
snapshotBlock: { var: "event.snapshotBlock" },
|
|
165
206
|
},
|
|
@@ -174,26 +215,28 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
174
215
|
from: "VOTING",
|
|
175
216
|
to: "VOTING",
|
|
176
217
|
eventName: "vote",
|
|
218
|
+
// S1+A2 coupled fix: bind event.agent to a verified signer (actorIsSigner) so the
|
|
219
|
+
// balance lookup, the no-double-vote check, and the voters write below all key on the
|
|
220
|
+
// CHAIN-VERIFIED actor — never a forgeable claim. getKey→get (value), getKey→has
|
|
221
|
+
// (presence), setKey→set are the rc.5 map opcodes (getKey/setKey do not exist).
|
|
177
222
|
guard: {
|
|
178
223
|
and: [
|
|
224
|
+
(0, guards_js_1.actorIsSigner)(),
|
|
179
225
|
{
|
|
180
226
|
">": [
|
|
181
|
-
{
|
|
227
|
+
{ get: [{ var: "state.balances" }, { var: "event.agent" }] },
|
|
182
228
|
0,
|
|
183
229
|
],
|
|
184
230
|
},
|
|
185
231
|
{
|
|
186
232
|
"!": [
|
|
187
233
|
{
|
|
188
|
-
|
|
234
|
+
has: [{ var: "state.votes.voters" }, { var: "event.agent" }],
|
|
189
235
|
},
|
|
190
236
|
],
|
|
191
237
|
},
|
|
192
238
|
{
|
|
193
|
-
"<=": [
|
|
194
|
-
{ var: "$timestamp" },
|
|
195
|
-
{ var: "state.proposal.votingEndsAt" },
|
|
196
|
-
],
|
|
239
|
+
"<=": [{ var: "$ordinal" }, { var: "state.proposal.votingEndsAt" }],
|
|
197
240
|
},
|
|
198
241
|
],
|
|
199
242
|
},
|
|
@@ -212,7 +255,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
212
255
|
"+": [
|
|
213
256
|
{ var: "state.votes.for" },
|
|
214
257
|
{
|
|
215
|
-
|
|
258
|
+
get: [
|
|
216
259
|
{ var: "state.balances" },
|
|
217
260
|
{ var: "event.agent" },
|
|
218
261
|
],
|
|
@@ -226,7 +269,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
226
269
|
"+": [
|
|
227
270
|
{ var: "state.votes.against" },
|
|
228
271
|
{
|
|
229
|
-
|
|
272
|
+
get: [
|
|
230
273
|
{ var: "state.balances" },
|
|
231
274
|
{ var: "event.agent" },
|
|
232
275
|
],
|
|
@@ -239,7 +282,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
239
282
|
"+": [
|
|
240
283
|
{ var: "state.votes.abstain" },
|
|
241
284
|
{
|
|
242
|
-
|
|
285
|
+
get: [
|
|
243
286
|
{ var: "state.balances" },
|
|
244
287
|
{ var: "event.agent" },
|
|
245
288
|
],
|
|
@@ -251,18 +294,18 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
251
294
|
},
|
|
252
295
|
{
|
|
253
296
|
voters: {
|
|
254
|
-
|
|
297
|
+
set: [
|
|
255
298
|
{ var: "state.votes.voters" },
|
|
256
299
|
{ var: "event.agent" },
|
|
257
300
|
{
|
|
258
301
|
vote: { var: "event.vote" },
|
|
259
302
|
weight: {
|
|
260
|
-
|
|
303
|
+
get: [
|
|
261
304
|
{ var: "state.balances" },
|
|
262
305
|
{ var: "event.agent" },
|
|
263
306
|
],
|
|
264
307
|
},
|
|
265
|
-
votedAt: { var: "$
|
|
308
|
+
votedAt: { var: "$ordinal" },
|
|
266
309
|
},
|
|
267
310
|
],
|
|
268
311
|
},
|
|
@@ -282,10 +325,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
282
325
|
guard: {
|
|
283
326
|
and: [
|
|
284
327
|
{
|
|
285
|
-
">": [
|
|
286
|
-
{ var: "$timestamp" },
|
|
287
|
-
{ var: "state.proposal.votingEndsAt" },
|
|
288
|
-
],
|
|
328
|
+
">": [{ var: "$ordinal" }, { var: "state.proposal.votingEndsAt" }],
|
|
289
329
|
},
|
|
290
330
|
{ ">": [{ var: "state.votes.for" }, { var: "state.votes.against" }] },
|
|
291
331
|
{
|
|
@@ -310,9 +350,9 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
310
350
|
merge: [
|
|
311
351
|
{ var: "state.proposal" },
|
|
312
352
|
{
|
|
313
|
-
queuedAt: { var: "$
|
|
353
|
+
queuedAt: { var: "$ordinal" },
|
|
314
354
|
executableAt: {
|
|
315
|
-
"+": [{ var: "$
|
|
355
|
+
"+": [{ var: "$ordinal" }, { var: "state.timelockMs" }],
|
|
316
356
|
},
|
|
317
357
|
},
|
|
318
358
|
],
|
|
@@ -328,7 +368,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
328
368
|
to: "ACTIVE",
|
|
329
369
|
eventName: "execute",
|
|
330
370
|
guard: {
|
|
331
|
-
">=": [{ var: "$
|
|
371
|
+
">=": [{ var: "$ordinal" }, { var: "state.proposal.executableAt" }],
|
|
332
372
|
},
|
|
333
373
|
effect: {
|
|
334
374
|
merge: [
|
|
@@ -343,7 +383,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
343
383
|
{ var: "state.proposal" },
|
|
344
384
|
{
|
|
345
385
|
votes: { var: "state.votes" },
|
|
346
|
-
executedAt: { var: "$
|
|
386
|
+
executedAt: { var: "$ordinal" },
|
|
347
387
|
},
|
|
348
388
|
],
|
|
349
389
|
},
|
|
@@ -352,10 +392,18 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
352
392
|
},
|
|
353
393
|
proposal: null,
|
|
354
394
|
votes: null,
|
|
395
|
+
// A3 fix: transition-level `emits` is dropped by the chain; emit from INSIDE the effect
|
|
396
|
+
// under the reserved `_emit` key (extracted as an EmittedEvent, stripped from state).
|
|
397
|
+
_emit: [
|
|
398
|
+
{
|
|
399
|
+
name: "proposal_executed",
|
|
400
|
+
data: { proposalId: { var: "state.proposal.id" } },
|
|
401
|
+
destination: "external",
|
|
402
|
+
},
|
|
403
|
+
],
|
|
355
404
|
},
|
|
356
405
|
],
|
|
357
406
|
},
|
|
358
|
-
emits: [{ event: "proposal_executed", to: "external" }],
|
|
359
407
|
dependencies: [],
|
|
360
408
|
},
|
|
361
409
|
// VOTING → ACTIVE: reject (voting ended, failed quorum or for <= against)
|
|
@@ -366,10 +414,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
366
414
|
guard: {
|
|
367
415
|
and: [
|
|
368
416
|
{
|
|
369
|
-
">": [
|
|
370
|
-
{ var: "$timestamp" },
|
|
371
|
-
{ var: "state.proposal.votingEndsAt" },
|
|
372
|
-
],
|
|
417
|
+
">": [{ var: "$ordinal" }, { var: "state.proposal.votingEndsAt" }],
|
|
373
418
|
},
|
|
374
419
|
{
|
|
375
420
|
or: [
|
|
@@ -408,7 +453,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
408
453
|
{ var: "state.proposal" },
|
|
409
454
|
{
|
|
410
455
|
votes: { var: "state.votes" },
|
|
411
|
-
rejectedAt: { var: "$
|
|
456
|
+
rejectedAt: { var: "$ordinal" },
|
|
412
457
|
},
|
|
413
458
|
],
|
|
414
459
|
},
|
|
@@ -427,9 +472,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
427
472
|
from: "QUEUED",
|
|
428
473
|
to: "ACTIVE",
|
|
429
474
|
eventName: "cancel",
|
|
430
|
-
guard:
|
|
431
|
-
"===": [{ var: "event.agent" }, { var: "state.proposal.proposer" }],
|
|
432
|
-
},
|
|
475
|
+
guard: (0, guards_js_1.signerIsParty)("state.proposal.proposer"),
|
|
433
476
|
effect: {
|
|
434
477
|
merge: [
|
|
435
478
|
{ var: "state" },
|
|
@@ -441,7 +484,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
441
484
|
{
|
|
442
485
|
merge: [
|
|
443
486
|
{ var: "state.proposal" },
|
|
444
|
-
{ cancelledAt: { var: "$
|
|
487
|
+
{ cancelledAt: { var: "$ordinal" } },
|
|
445
488
|
],
|
|
446
489
|
},
|
|
447
490
|
],
|
|
@@ -459,10 +502,17 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
459
502
|
from: "ACTIVE",
|
|
460
503
|
to: "ACTIVE",
|
|
461
504
|
eventName: "delegate",
|
|
505
|
+
// S1+A2: bind event.agent to a verified signer so the delegation is written under the
|
|
506
|
+
// CHAIN-VERIFIED delegator's key (set), keyed on the same actor whose balance is checked (get).
|
|
462
507
|
guard: {
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
508
|
+
and: [
|
|
509
|
+
(0, guards_js_1.actorIsSigner)(),
|
|
510
|
+
{
|
|
511
|
+
">": [
|
|
512
|
+
{ get: [{ var: "state.balances" }, { var: "event.agent" }] },
|
|
513
|
+
0,
|
|
514
|
+
],
|
|
515
|
+
},
|
|
466
516
|
],
|
|
467
517
|
},
|
|
468
518
|
effect: {
|
|
@@ -470,7 +520,7 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
470
520
|
{ var: "state" },
|
|
471
521
|
{
|
|
472
522
|
delegations: {
|
|
473
|
-
|
|
523
|
+
set: [
|
|
474
524
|
{ var: "state.delegations" },
|
|
475
525
|
{ var: "event.agent" },
|
|
476
526
|
{ var: "event.delegateTo" },
|
|
@@ -486,13 +536,21 @@ exports.daoTokenDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
486
536
|
from: "ACTIVE",
|
|
487
537
|
to: "ACTIVE",
|
|
488
538
|
eventName: "undelegate",
|
|
489
|
-
|
|
539
|
+
// S1+A2: bind event.agent to a verified signer; presence via has, removal via unset (the rc.5
|
|
540
|
+
// map opcodes — getKey/deleteKey do not exist). Only the verified delegator can clear their own
|
|
541
|
+
// delegation.
|
|
542
|
+
guard: {
|
|
543
|
+
and: [
|
|
544
|
+
(0, guards_js_1.actorIsSigner)(),
|
|
545
|
+
{ has: [{ var: "state.delegations" }, { var: "event.agent" }] },
|
|
546
|
+
],
|
|
547
|
+
},
|
|
490
548
|
effect: {
|
|
491
549
|
merge: [
|
|
492
550
|
{ var: "state" },
|
|
493
551
|
{
|
|
494
552
|
delegations: {
|
|
495
|
-
|
|
553
|
+
unset: [{ var: "state.delegations" }, { var: "event.agent" }],
|
|
496
554
|
},
|
|
497
555
|
},
|
|
498
556
|
],
|