@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.daoMultisigDef = 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
|
* N-of-M multisig governance. Requires threshold signatures for actions.
|
|
7
8
|
*/
|
|
@@ -113,16 +114,38 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
113
114
|
},
|
|
114
115
|
},
|
|
115
116
|
dissolve: {
|
|
116
|
-
description: "Dissolve the DAO (requires
|
|
117
|
-
properties: {
|
|
118
|
-
signatureCount: { type: "number" },
|
|
119
|
-
},
|
|
117
|
+
description: "Dissolve the DAO (requires every signer to sign this op — verified unanimity)",
|
|
118
|
+
properties: {},
|
|
120
119
|
},
|
|
121
120
|
},
|
|
122
121
|
states: {
|
|
123
|
-
ACTIVE: {
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
ACTIVE: {
|
|
123
|
+
id: "ACTIVE",
|
|
124
|
+
isFinal: false,
|
|
125
|
+
metadata: {
|
|
126
|
+
label: "Active",
|
|
127
|
+
description: "Multisig is idle and ready to propose an action",
|
|
128
|
+
category: "initial",
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
PENDING: {
|
|
132
|
+
id: "PENDING",
|
|
133
|
+
isFinal: false,
|
|
134
|
+
metadata: {
|
|
135
|
+
label: "Pending",
|
|
136
|
+
description: "An action is awaiting the required signature threshold",
|
|
137
|
+
category: "pending",
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
DISSOLVED: {
|
|
141
|
+
id: "DISSOLVED",
|
|
142
|
+
isFinal: true,
|
|
143
|
+
metadata: {
|
|
144
|
+
label: "Dissolved",
|
|
145
|
+
description: "Multisig DAO dissolved (terminal)",
|
|
146
|
+
category: "terminal",
|
|
147
|
+
},
|
|
148
|
+
},
|
|
126
149
|
},
|
|
127
150
|
initialState: "ACTIVE",
|
|
128
151
|
transitions: [
|
|
@@ -131,7 +154,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
131
154
|
from: "ACTIVE",
|
|
132
155
|
to: "PENDING",
|
|
133
156
|
eventName: "propose",
|
|
134
|
-
guard:
|
|
157
|
+
guard: (0, guards_js_1.actorInSet)("state.signers"),
|
|
135
158
|
effect: {
|
|
136
159
|
merge: [
|
|
137
160
|
{ var: "state" },
|
|
@@ -141,13 +164,13 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
141
164
|
actionType: { var: "event.actionType" },
|
|
142
165
|
payload: { var: "event.payload" },
|
|
143
166
|
proposer: { var: "event.agent" },
|
|
144
|
-
proposedAt: { var: "$
|
|
167
|
+
proposedAt: { var: "$ordinal" },
|
|
145
168
|
expiresAt: {
|
|
146
|
-
"+": [{ var: "$
|
|
169
|
+
"+": [{ var: "$ordinal" }, { var: "state.proposalTTLMs" }],
|
|
147
170
|
},
|
|
148
171
|
},
|
|
149
172
|
signatures: {
|
|
150
|
-
|
|
173
|
+
set: [{}, { var: "event.agent" }, { var: "$ordinal" }],
|
|
151
174
|
},
|
|
152
175
|
},
|
|
153
176
|
],
|
|
@@ -161,15 +184,15 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
161
184
|
eventName: "sign",
|
|
162
185
|
guard: {
|
|
163
186
|
and: [
|
|
164
|
-
|
|
187
|
+
(0, guards_js_1.actorInSet)("state.signers"),
|
|
165
188
|
{
|
|
166
189
|
"!": [
|
|
167
|
-
{
|
|
190
|
+
{ has: [{ var: "state.signatures" }, { var: "event.agent" }] },
|
|
168
191
|
],
|
|
169
192
|
},
|
|
170
193
|
{
|
|
171
194
|
"<": [
|
|
172
|
-
{
|
|
195
|
+
{ length: [{ keys: [{ var: "state.signatures" }] }] },
|
|
173
196
|
{ var: "state.threshold" },
|
|
174
197
|
],
|
|
175
198
|
},
|
|
@@ -180,10 +203,10 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
180
203
|
{ var: "state" },
|
|
181
204
|
{
|
|
182
205
|
signatures: {
|
|
183
|
-
|
|
206
|
+
set: [
|
|
184
207
|
{ var: "state.signatures" },
|
|
185
208
|
{ var: "event.agent" },
|
|
186
|
-
{ var: "$
|
|
209
|
+
{ var: "$ordinal" },
|
|
187
210
|
],
|
|
188
211
|
},
|
|
189
212
|
},
|
|
@@ -198,7 +221,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
198
221
|
eventName: "execute",
|
|
199
222
|
guard: {
|
|
200
223
|
">=": [
|
|
201
|
-
{
|
|
224
|
+
{ length: [{ keys: [{ var: "state.signatures" }] }] },
|
|
202
225
|
{ var: "state.threshold" },
|
|
203
226
|
],
|
|
204
227
|
},
|
|
@@ -215,17 +238,25 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
215
238
|
type: { var: "state.proposal.actionType" },
|
|
216
239
|
payload: { var: "state.proposal.payload" },
|
|
217
240
|
signatures: { var: "state.signatures" },
|
|
218
|
-
executedAt: { var: "$
|
|
241
|
+
executedAt: { var: "$ordinal" },
|
|
219
242
|
},
|
|
220
243
|
],
|
|
221
244
|
],
|
|
222
245
|
},
|
|
223
246
|
proposal: null,
|
|
224
247
|
signatures: {},
|
|
248
|
+
// A3 fix: transition-level `emits` is dropped by the chain; emit from INSIDE the effect
|
|
249
|
+
// under the reserved `_emit` key (extracted as an EmittedEvent, stripped from state).
|
|
250
|
+
_emit: [
|
|
251
|
+
{
|
|
252
|
+
name: "multisig_executed",
|
|
253
|
+
data: { proposalId: { var: "state.proposal.id" } },
|
|
254
|
+
destination: "external",
|
|
255
|
+
},
|
|
256
|
+
],
|
|
225
257
|
},
|
|
226
258
|
],
|
|
227
259
|
},
|
|
228
|
-
emits: [{ event: "multisig_executed", to: "external" }],
|
|
229
260
|
dependencies: [],
|
|
230
261
|
},
|
|
231
262
|
// PENDING → ACTIVE: cancel (expired or proposer)
|
|
@@ -235,10 +266,8 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
235
266
|
eventName: "cancel",
|
|
236
267
|
guard: {
|
|
237
268
|
or: [
|
|
238
|
-
{ ">": [{ var: "$
|
|
239
|
-
|
|
240
|
-
"===": [{ var: "event.agent" }, { var: "state.proposal.proposer" }],
|
|
241
|
-
},
|
|
269
|
+
{ ">": [{ var: "$ordinal" }, { var: "state.proposal.expiresAt" }] },
|
|
270
|
+
(0, guards_js_1.signerIsParty)("state.proposal.proposer"),
|
|
242
271
|
],
|
|
243
272
|
},
|
|
244
273
|
effect: {
|
|
@@ -252,7 +281,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
252
281
|
{
|
|
253
282
|
merge: [
|
|
254
283
|
{ var: "state.proposal" },
|
|
255
|
-
{ cancelledAt: { var: "$
|
|
284
|
+
{ cancelledAt: { var: "$ordinal" } },
|
|
256
285
|
],
|
|
257
286
|
},
|
|
258
287
|
],
|
|
@@ -270,7 +299,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
270
299
|
from: "ACTIVE",
|
|
271
300
|
to: "PENDING",
|
|
272
301
|
eventName: "propose_add_signer",
|
|
273
|
-
guard:
|
|
302
|
+
guard: (0, guards_js_1.actorInSet)("state.signers"),
|
|
274
303
|
effect: {
|
|
275
304
|
merge: [
|
|
276
305
|
{ var: "state" },
|
|
@@ -280,13 +309,13 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
280
309
|
actionType: "add_signer",
|
|
281
310
|
payload: { newSigner: { var: "event.newSigner" } },
|
|
282
311
|
proposer: { var: "event.agent" },
|
|
283
|
-
proposedAt: { var: "$
|
|
312
|
+
proposedAt: { var: "$ordinal" },
|
|
284
313
|
expiresAt: {
|
|
285
|
-
"+": [{ var: "$
|
|
314
|
+
"+": [{ var: "$ordinal" }, { var: "state.proposalTTLMs" }],
|
|
286
315
|
},
|
|
287
316
|
},
|
|
288
317
|
signatures: {
|
|
289
|
-
|
|
318
|
+
set: [{}, { var: "event.agent" }, { var: "$ordinal" }],
|
|
290
319
|
},
|
|
291
320
|
},
|
|
292
321
|
],
|
|
@@ -300,10 +329,10 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
300
329
|
eventName: "propose_remove_signer",
|
|
301
330
|
guard: {
|
|
302
331
|
and: [
|
|
303
|
-
|
|
332
|
+
(0, guards_js_1.actorInSet)("state.signers"),
|
|
304
333
|
{
|
|
305
334
|
">": [
|
|
306
|
-
{
|
|
335
|
+
{ length: [{ var: "state.signers" }] },
|
|
307
336
|
{ var: "state.threshold" },
|
|
308
337
|
],
|
|
309
338
|
},
|
|
@@ -318,13 +347,13 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
318
347
|
actionType: "remove_signer",
|
|
319
348
|
payload: { removeSigner: { var: "event.removeSigner" } },
|
|
320
349
|
proposer: { var: "event.agent" },
|
|
321
|
-
proposedAt: { var: "$
|
|
350
|
+
proposedAt: { var: "$ordinal" },
|
|
322
351
|
expiresAt: {
|
|
323
|
-
"+": [{ var: "$
|
|
352
|
+
"+": [{ var: "$ordinal" }, { var: "state.proposalTTLMs" }],
|
|
324
353
|
},
|
|
325
354
|
},
|
|
326
355
|
signatures: {
|
|
327
|
-
|
|
356
|
+
set: [{}, { var: "event.agent" }, { var: "$ordinal" }],
|
|
328
357
|
},
|
|
329
358
|
},
|
|
330
359
|
],
|
|
@@ -338,12 +367,12 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
338
367
|
eventName: "propose_change_threshold",
|
|
339
368
|
guard: {
|
|
340
369
|
and: [
|
|
341
|
-
|
|
370
|
+
(0, guards_js_1.actorInSet)("state.signers"),
|
|
342
371
|
{ ">=": [{ var: "event.newThreshold" }, 1] },
|
|
343
372
|
{
|
|
344
373
|
"<=": [
|
|
345
374
|
{ var: "event.newThreshold" },
|
|
346
|
-
{
|
|
375
|
+
{ length: [{ var: "state.signers" }] },
|
|
347
376
|
],
|
|
348
377
|
},
|
|
349
378
|
],
|
|
@@ -357,13 +386,13 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
357
386
|
actionType: "change_threshold",
|
|
358
387
|
payload: { newThreshold: { var: "event.newThreshold" } },
|
|
359
388
|
proposer: { var: "event.agent" },
|
|
360
|
-
proposedAt: { var: "$
|
|
389
|
+
proposedAt: { var: "$ordinal" },
|
|
361
390
|
expiresAt: {
|
|
362
|
-
"+": [{ var: "$
|
|
391
|
+
"+": [{ var: "$ordinal" }, { var: "state.proposalTTLMs" }],
|
|
363
392
|
},
|
|
364
393
|
},
|
|
365
394
|
signatures: {
|
|
366
|
-
|
|
395
|
+
set: [{}, { var: "event.agent" }, { var: "$ordinal" }],
|
|
367
396
|
},
|
|
368
397
|
},
|
|
369
398
|
],
|
|
@@ -379,7 +408,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
379
408
|
and: [
|
|
380
409
|
{
|
|
381
410
|
">=": [
|
|
382
|
-
{
|
|
411
|
+
{ length: [{ keys: [{ var: "state.signatures" }] }] },
|
|
383
412
|
{ var: "state.threshold" },
|
|
384
413
|
],
|
|
385
414
|
},
|
|
@@ -449,16 +478,29 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
449
478
|
from: "ACTIVE",
|
|
450
479
|
to: "DISSOLVED",
|
|
451
480
|
eventName: "dissolve",
|
|
481
|
+
// S2 fix: dissolution must not trust an attacker-supplied count. Derive
|
|
482
|
+
// unanimity from the CHAIN-VERIFIED signers — every signer in state.signers
|
|
483
|
+
// must be among proofs[].address (with a non-empty belt). signers is an array.
|
|
452
484
|
guard: {
|
|
453
|
-
|
|
454
|
-
{ var: "
|
|
455
|
-
{
|
|
485
|
+
and: [
|
|
486
|
+
{ ">": [{ length: [{ var: "state.signers" }] }, 0] },
|
|
487
|
+
{
|
|
488
|
+
all: [
|
|
489
|
+
{ var: "state.signers" },
|
|
490
|
+
{
|
|
491
|
+
in: [
|
|
492
|
+
{ var: "" },
|
|
493
|
+
{ map: [{ var: "proofs" }, { var: "address" }] },
|
|
494
|
+
],
|
|
495
|
+
},
|
|
496
|
+
],
|
|
497
|
+
},
|
|
456
498
|
],
|
|
457
499
|
},
|
|
458
500
|
effect: {
|
|
459
501
|
merge: [
|
|
460
502
|
{ var: "state" },
|
|
461
|
-
{ dissolvedAt: { var: "$
|
|
503
|
+
{ dissolvedAt: { var: "$ordinal" }, status: "DISSOLVED" },
|
|
462
504
|
],
|
|
463
505
|
},
|
|
464
506
|
dependencies: [],
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.daoReputationDef = 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
|
* Reputation-based governance. Minimum reputation required for participation.
|
|
7
8
|
*/
|
|
@@ -127,9 +128,33 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
127
128
|
},
|
|
128
129
|
},
|
|
129
130
|
states: {
|
|
130
|
-
ACTIVE: {
|
|
131
|
-
|
|
132
|
-
|
|
131
|
+
ACTIVE: {
|
|
132
|
+
id: "ACTIVE",
|
|
133
|
+
isFinal: false,
|
|
134
|
+
metadata: {
|
|
135
|
+
label: "Active",
|
|
136
|
+
description: "DAO is idle and ready to accept a proposal",
|
|
137
|
+
category: "initial",
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
VOTING: {
|
|
141
|
+
id: "VOTING",
|
|
142
|
+
isFinal: false,
|
|
143
|
+
metadata: {
|
|
144
|
+
label: "Voting",
|
|
145
|
+
description: "Members vote with reputation-weighted power",
|
|
146
|
+
category: "pending",
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
DISSOLVED: {
|
|
150
|
+
id: "DISSOLVED",
|
|
151
|
+
isFinal: true,
|
|
152
|
+
metadata: {
|
|
153
|
+
label: "Dissolved",
|
|
154
|
+
description: "Reputation DAO dissolved (terminal)",
|
|
155
|
+
category: "terminal",
|
|
156
|
+
},
|
|
157
|
+
},
|
|
133
158
|
},
|
|
134
159
|
initialState: "ACTIVE",
|
|
135
160
|
transitions: [
|
|
@@ -155,9 +180,9 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
155
180
|
actionType: { var: "event.actionType" },
|
|
156
181
|
payload: { var: "event.payload" },
|
|
157
182
|
proposer: { var: "event.agent" },
|
|
158
|
-
proposedAt: { var: "$
|
|
183
|
+
proposedAt: { var: "$ordinal" },
|
|
159
184
|
deadline: {
|
|
160
|
-
"+": [{ var: "$
|
|
185
|
+
"+": [{ var: "$ordinal" }, { var: "state.votingPeriodMs" }],
|
|
161
186
|
},
|
|
162
187
|
},
|
|
163
188
|
votes: { for: [], against: [], abstain: [] },
|
|
@@ -179,20 +204,10 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
179
204
|
{ var: "state.voteThreshold" },
|
|
180
205
|
],
|
|
181
206
|
},
|
|
182
|
-
{
|
|
183
|
-
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
"!": [
|
|
187
|
-
{ in: [{ var: "event.agent" }, { var: "state.votes.against" }] },
|
|
188
|
-
],
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
"!": [
|
|
192
|
-
{ in: [{ var: "event.agent" }, { var: "state.votes.abstain" }] },
|
|
193
|
-
],
|
|
194
|
-
},
|
|
195
|
-
{ "<=": [{ var: "$timestamp" }, { var: "state.proposal.deadline" }] },
|
|
207
|
+
{ "!": [(0, guards_js_1.signerInSet)("state.votes.for")] },
|
|
208
|
+
{ "!": [(0, guards_js_1.signerInSet)("state.votes.against")] },
|
|
209
|
+
{ "!": [(0, guards_js_1.signerInSet)("state.votes.abstain")] },
|
|
210
|
+
{ "<=": [{ var: "$ordinal" }, { var: "state.proposal.deadline" }] },
|
|
196
211
|
],
|
|
197
212
|
},
|
|
198
213
|
effect: {
|
|
@@ -254,21 +269,23 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
254
269
|
from: "VOTING",
|
|
255
270
|
to: "ACTIVE",
|
|
256
271
|
eventName: "execute",
|
|
272
|
+
// A2 fix: votes.for/against/abstain are arrays of voter addresses; count with
|
|
273
|
+
// `length` (size is not a JLVM opcode).
|
|
257
274
|
guard: {
|
|
258
275
|
and: [
|
|
259
|
-
{ ">": [{ var: "$
|
|
276
|
+
{ ">": [{ var: "$ordinal" }, { var: "state.proposal.deadline" }] },
|
|
260
277
|
{
|
|
261
278
|
">": [
|
|
262
|
-
{
|
|
263
|
-
{
|
|
279
|
+
{ length: [{ var: "state.votes.for" }] },
|
|
280
|
+
{ length: [{ var: "state.votes.against" }] },
|
|
264
281
|
],
|
|
265
282
|
},
|
|
266
283
|
{
|
|
267
284
|
">=": [
|
|
268
285
|
{
|
|
269
286
|
"+": [
|
|
270
|
-
{
|
|
271
|
-
{
|
|
287
|
+
{ length: [{ var: "state.votes.for" }] },
|
|
288
|
+
{ length: [{ var: "state.votes.against" }] },
|
|
272
289
|
],
|
|
273
290
|
},
|
|
274
291
|
{ var: "state.quorum" },
|
|
@@ -288,23 +305,25 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
288
305
|
type: "executed",
|
|
289
306
|
proposal: { var: "state.proposal" },
|
|
290
307
|
votes: { var: "state.votes" },
|
|
291
|
-
at: { var: "$
|
|
308
|
+
at: { var: "$ordinal" },
|
|
292
309
|
},
|
|
293
310
|
],
|
|
294
311
|
],
|
|
295
312
|
},
|
|
296
313
|
proposal: null,
|
|
297
314
|
votes: null,
|
|
315
|
+
// A3 fix: transition-level `emits` is dropped by the chain; emit from INSIDE the effect
|
|
316
|
+
// under the reserved `_emit` key (extracted as an EmittedEvent, stripped from state).
|
|
317
|
+
_emit: [
|
|
318
|
+
{
|
|
319
|
+
name: "proposal_executed",
|
|
320
|
+
data: { action: "increase", agents: { var: "state.votes.for" } },
|
|
321
|
+
destination: "Reputation",
|
|
322
|
+
},
|
|
323
|
+
],
|
|
298
324
|
},
|
|
299
325
|
],
|
|
300
326
|
},
|
|
301
|
-
emits: [
|
|
302
|
-
{
|
|
303
|
-
event: "proposal_executed",
|
|
304
|
-
to: "Reputation",
|
|
305
|
-
payload: { action: "increase", agents: { var: "state.votes.for" } },
|
|
306
|
-
},
|
|
307
|
-
],
|
|
308
327
|
dependencies: [],
|
|
309
328
|
},
|
|
310
329
|
// VOTING → ACTIVE: reject (voting ended, for <= against or quorum not met)
|
|
@@ -312,23 +331,25 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
312
331
|
from: "VOTING",
|
|
313
332
|
to: "ACTIVE",
|
|
314
333
|
eventName: "reject",
|
|
334
|
+
// A2 fix: count the array-shaped vote tallies with `length` (size is not a JLVM
|
|
335
|
+
// opcode).
|
|
315
336
|
guard: {
|
|
316
337
|
and: [
|
|
317
|
-
{ ">": [{ var: "$
|
|
338
|
+
{ ">": [{ var: "$ordinal" }, { var: "state.proposal.deadline" }] },
|
|
318
339
|
{
|
|
319
340
|
or: [
|
|
320
341
|
{
|
|
321
342
|
"<=": [
|
|
322
|
-
{
|
|
323
|
-
{
|
|
343
|
+
{ length: [{ var: "state.votes.for" }] },
|
|
344
|
+
{ length: [{ var: "state.votes.against" }] },
|
|
324
345
|
],
|
|
325
346
|
},
|
|
326
347
|
{
|
|
327
348
|
"<": [
|
|
328
349
|
{
|
|
329
350
|
"+": [
|
|
330
|
-
{
|
|
331
|
-
{
|
|
351
|
+
{ length: [{ var: "state.votes.for" }] },
|
|
352
|
+
{ length: [{ var: "state.votes.against" }] },
|
|
332
353
|
],
|
|
333
354
|
},
|
|
334
355
|
{ var: "state.quorum" },
|
|
@@ -350,7 +371,7 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
350
371
|
type: "rejected",
|
|
351
372
|
proposal: { var: "state.proposal" },
|
|
352
373
|
votes: { var: "state.votes" },
|
|
353
|
-
at: { var: "$
|
|
374
|
+
at: { var: "$ordinal" },
|
|
354
375
|
},
|
|
355
376
|
],
|
|
356
377
|
],
|
|
@@ -367,8 +388,17 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
367
388
|
from: "ACTIVE",
|
|
368
389
|
to: "ACTIVE",
|
|
369
390
|
eventName: "join",
|
|
391
|
+
// S1/A2: bind event.agent to a verified signer (actorIsSigner) so the member is appended to the
|
|
392
|
+
// array and keyed into memberJoinedAt under a CHAIN-VERIFIED address (set is the rc.5 map-write
|
|
393
|
+
// opcode), and dedup on that bound actor.
|
|
394
|
+
// TODO(#24): event.agentReputation is self-asserted. Replace the reputation clause with
|
|
395
|
+
// signerHasReputation(registryReputationPath(<registryDep>), "state.memberThreshold") once
|
|
396
|
+
// runtime-updatable dependencies (#24) let a std-app bind the identity-registry instance — the
|
|
397
|
+
// same gate as corp-board's removal-resolution. The registry foundation + read helper already
|
|
398
|
+
// exist (src/apps/identity/state-machines/identity-registry.ts, guards.signerHasReputation).
|
|
370
399
|
guard: {
|
|
371
400
|
and: [
|
|
401
|
+
(0, guards_js_1.actorIsSigner)(),
|
|
372
402
|
{
|
|
373
403
|
">=": [
|
|
374
404
|
{ var: "event.agentReputation" },
|
|
@@ -386,10 +416,10 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
386
416
|
cat: [{ var: "state.members" }, [{ var: "event.agent" }]],
|
|
387
417
|
},
|
|
388
418
|
memberJoinedAt: {
|
|
389
|
-
|
|
419
|
+
set: [
|
|
390
420
|
{ var: "state.memberJoinedAt" },
|
|
391
421
|
{ var: "event.agent" },
|
|
392
|
-
{ var: "$
|
|
422
|
+
{ var: "$ordinal" },
|
|
393
423
|
],
|
|
394
424
|
},
|
|
395
425
|
},
|
|
@@ -402,7 +432,7 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
402
432
|
from: "ACTIVE",
|
|
403
433
|
to: "ACTIVE",
|
|
404
434
|
eventName: "leave",
|
|
405
|
-
guard:
|
|
435
|
+
guard: (0, guards_js_1.signerInSet)("state.members"),
|
|
406
436
|
effect: {
|
|
407
437
|
merge: [
|
|
408
438
|
{ var: "state" },
|
|
@@ -443,9 +473,9 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
443
473
|
proposeThreshold: { var: "event.proposeThreshold" },
|
|
444
474
|
},
|
|
445
475
|
proposer: { var: "event.agent" },
|
|
446
|
-
proposedAt: { var: "$
|
|
476
|
+
proposedAt: { var: "$ordinal" },
|
|
447
477
|
deadline: {
|
|
448
|
-
"+": [{ var: "$
|
|
478
|
+
"+": [{ var: "$ordinal" }, { var: "state.votingPeriodMs" }],
|
|
449
479
|
},
|
|
450
480
|
},
|
|
451
481
|
votes: { for: [], against: [], abstain: [] },
|