@ottochain/sdk 2.3.0 → 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 +35 -40
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +80 -37
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +4 -4
- 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 +58 -40
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +46 -40
- package/dist/cjs/apps/governance/state-machines/dao-single.js +28 -11
- package/dist/cjs/apps/governance/state-machines/dao-token.js +67 -41
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +93 -61
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +2 -2
- 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 +3 -3
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +25 -22
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +3 -3
- 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 +14 -13
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +29 -24
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +24 -26
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +80 -53
- package/dist/cjs/apps/markets/state-machines/market-universal.js +5 -5
- 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 +4 -4
- package/dist/cjs/generated/ottochain/v1/fiber.js +4 -4
- package/dist/cjs/index.js +41 -7
- package/dist/cjs/openapi.js +2 -0
- package/dist/cjs/ottochain/drop-nulls.js +1 -2
- package/dist/cjs/ottochain/genesis-manifest.js +11 -11
- package/dist/cjs/ottochain/index.js +23 -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 +16 -2
- 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 +35 -40
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +80 -37
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +4 -4
- 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 +58 -40
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +46 -40
- package/dist/esm/apps/governance/state-machines/dao-single.js +28 -11
- package/dist/esm/apps/governance/state-machines/dao-token.js +67 -41
- package/dist/esm/apps/governance/state-machines/governance-simple.js +93 -61
- package/dist/esm/apps/governance/state-machines/governance-universal.js +2 -2
- 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 +3 -3
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +25 -22
- package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
- package/dist/esm/apps/identity/state-machines/identity-universal.js +3 -3
- 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 +14 -13
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +29 -24
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +24 -26
- package/dist/esm/apps/markets/state-machines/market-prediction.js +80 -53
- package/dist/esm/apps/markets/state-machines/market-universal.js +5 -5
- 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/index.js +21 -2
- package/dist/esm/openapi.js +1 -0
- package/dist/esm/ottochain/genesis-manifest.js +9 -9
- package/dist/esm/ottochain/index.js +2 -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 +15 -1
- 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 +69 -209
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +20 -95
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +46 -112
- 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 +296 -398
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +77 -92
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +42 -66
- package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +60 -49
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +87 -117
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +2 -2
- package/dist/types/apps/identity/constants.d.ts +32 -4
- package/dist/types/apps/identity/index.d.ts +378 -94
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +16 -87
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -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 +108 -203
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +13 -37
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +16 -34
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +17 -43
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +51 -72
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +5 -5
- 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/index.d.ts +6 -2
- package/dist/types/openapi.d.ts +22 -0
- package/dist/types/ottochain/genesis-manifest.d.ts +5 -5
- package/dist/types/ottochain/index.d.ts +5 -6
- package/dist/types/ottochain/metagraph-client.d.ts +49 -7
- package/dist/types/ottochain/snapshot.d.ts +6 -6
- package/dist/types/ottochain/transaction.d.ts +33 -1
- package/dist/types/ottochain/types.d.ts +335 -30
- 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 +1 -2
- 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 +27 -13
- 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,10 +114,8 @@ 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: {
|
|
@@ -155,7 +154,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
155
154
|
from: "ACTIVE",
|
|
156
155
|
to: "PENDING",
|
|
157
156
|
eventName: "propose",
|
|
158
|
-
guard:
|
|
157
|
+
guard: (0, guards_js_1.actorInSet)("state.signers"),
|
|
159
158
|
effect: {
|
|
160
159
|
merge: [
|
|
161
160
|
{ var: "state" },
|
|
@@ -165,13 +164,13 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
165
164
|
actionType: { var: "event.actionType" },
|
|
166
165
|
payload: { var: "event.payload" },
|
|
167
166
|
proposer: { var: "event.agent" },
|
|
168
|
-
proposedAt: { var: "$
|
|
167
|
+
proposedAt: { var: "$ordinal" },
|
|
169
168
|
expiresAt: {
|
|
170
|
-
"+": [{ var: "$
|
|
169
|
+
"+": [{ var: "$ordinal" }, { var: "state.proposalTTLMs" }],
|
|
171
170
|
},
|
|
172
171
|
},
|
|
173
172
|
signatures: {
|
|
174
|
-
|
|
173
|
+
set: [{}, { var: "event.agent" }, { var: "$ordinal" }],
|
|
175
174
|
},
|
|
176
175
|
},
|
|
177
176
|
],
|
|
@@ -185,15 +184,15 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
185
184
|
eventName: "sign",
|
|
186
185
|
guard: {
|
|
187
186
|
and: [
|
|
188
|
-
|
|
187
|
+
(0, guards_js_1.actorInSet)("state.signers"),
|
|
189
188
|
{
|
|
190
189
|
"!": [
|
|
191
|
-
{
|
|
190
|
+
{ has: [{ var: "state.signatures" }, { var: "event.agent" }] },
|
|
192
191
|
],
|
|
193
192
|
},
|
|
194
193
|
{
|
|
195
194
|
"<": [
|
|
196
|
-
{
|
|
195
|
+
{ length: [{ keys: [{ var: "state.signatures" }] }] },
|
|
197
196
|
{ var: "state.threshold" },
|
|
198
197
|
],
|
|
199
198
|
},
|
|
@@ -204,10 +203,10 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
204
203
|
{ var: "state" },
|
|
205
204
|
{
|
|
206
205
|
signatures: {
|
|
207
|
-
|
|
206
|
+
set: [
|
|
208
207
|
{ var: "state.signatures" },
|
|
209
208
|
{ var: "event.agent" },
|
|
210
|
-
{ var: "$
|
|
209
|
+
{ var: "$ordinal" },
|
|
211
210
|
],
|
|
212
211
|
},
|
|
213
212
|
},
|
|
@@ -222,7 +221,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
222
221
|
eventName: "execute",
|
|
223
222
|
guard: {
|
|
224
223
|
">=": [
|
|
225
|
-
{
|
|
224
|
+
{ length: [{ keys: [{ var: "state.signatures" }] }] },
|
|
226
225
|
{ var: "state.threshold" },
|
|
227
226
|
],
|
|
228
227
|
},
|
|
@@ -239,17 +238,25 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
239
238
|
type: { var: "state.proposal.actionType" },
|
|
240
239
|
payload: { var: "state.proposal.payload" },
|
|
241
240
|
signatures: { var: "state.signatures" },
|
|
242
|
-
executedAt: { var: "$
|
|
241
|
+
executedAt: { var: "$ordinal" },
|
|
243
242
|
},
|
|
244
243
|
],
|
|
245
244
|
],
|
|
246
245
|
},
|
|
247
246
|
proposal: null,
|
|
248
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
|
+
],
|
|
249
257
|
},
|
|
250
258
|
],
|
|
251
259
|
},
|
|
252
|
-
emits: [{ event: "multisig_executed", to: "external" }],
|
|
253
260
|
dependencies: [],
|
|
254
261
|
},
|
|
255
262
|
// PENDING → ACTIVE: cancel (expired or proposer)
|
|
@@ -259,10 +266,8 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
259
266
|
eventName: "cancel",
|
|
260
267
|
guard: {
|
|
261
268
|
or: [
|
|
262
|
-
{ ">": [{ var: "$
|
|
263
|
-
|
|
264
|
-
"===": [{ var: "event.agent" }, { var: "state.proposal.proposer" }],
|
|
265
|
-
},
|
|
269
|
+
{ ">": [{ var: "$ordinal" }, { var: "state.proposal.expiresAt" }] },
|
|
270
|
+
(0, guards_js_1.signerIsParty)("state.proposal.proposer"),
|
|
266
271
|
],
|
|
267
272
|
},
|
|
268
273
|
effect: {
|
|
@@ -276,7 +281,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
276
281
|
{
|
|
277
282
|
merge: [
|
|
278
283
|
{ var: "state.proposal" },
|
|
279
|
-
{ cancelledAt: { var: "$
|
|
284
|
+
{ cancelledAt: { var: "$ordinal" } },
|
|
280
285
|
],
|
|
281
286
|
},
|
|
282
287
|
],
|
|
@@ -294,7 +299,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
294
299
|
from: "ACTIVE",
|
|
295
300
|
to: "PENDING",
|
|
296
301
|
eventName: "propose_add_signer",
|
|
297
|
-
guard:
|
|
302
|
+
guard: (0, guards_js_1.actorInSet)("state.signers"),
|
|
298
303
|
effect: {
|
|
299
304
|
merge: [
|
|
300
305
|
{ var: "state" },
|
|
@@ -304,13 +309,13 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
304
309
|
actionType: "add_signer",
|
|
305
310
|
payload: { newSigner: { var: "event.newSigner" } },
|
|
306
311
|
proposer: { var: "event.agent" },
|
|
307
|
-
proposedAt: { var: "$
|
|
312
|
+
proposedAt: { var: "$ordinal" },
|
|
308
313
|
expiresAt: {
|
|
309
|
-
"+": [{ var: "$
|
|
314
|
+
"+": [{ var: "$ordinal" }, { var: "state.proposalTTLMs" }],
|
|
310
315
|
},
|
|
311
316
|
},
|
|
312
317
|
signatures: {
|
|
313
|
-
|
|
318
|
+
set: [{}, { var: "event.agent" }, { var: "$ordinal" }],
|
|
314
319
|
},
|
|
315
320
|
},
|
|
316
321
|
],
|
|
@@ -324,10 +329,10 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
324
329
|
eventName: "propose_remove_signer",
|
|
325
330
|
guard: {
|
|
326
331
|
and: [
|
|
327
|
-
|
|
332
|
+
(0, guards_js_1.actorInSet)("state.signers"),
|
|
328
333
|
{
|
|
329
334
|
">": [
|
|
330
|
-
{
|
|
335
|
+
{ length: [{ var: "state.signers" }] },
|
|
331
336
|
{ var: "state.threshold" },
|
|
332
337
|
],
|
|
333
338
|
},
|
|
@@ -342,13 +347,13 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
342
347
|
actionType: "remove_signer",
|
|
343
348
|
payload: { removeSigner: { var: "event.removeSigner" } },
|
|
344
349
|
proposer: { var: "event.agent" },
|
|
345
|
-
proposedAt: { var: "$
|
|
350
|
+
proposedAt: { var: "$ordinal" },
|
|
346
351
|
expiresAt: {
|
|
347
|
-
"+": [{ var: "$
|
|
352
|
+
"+": [{ var: "$ordinal" }, { var: "state.proposalTTLMs" }],
|
|
348
353
|
},
|
|
349
354
|
},
|
|
350
355
|
signatures: {
|
|
351
|
-
|
|
356
|
+
set: [{}, { var: "event.agent" }, { var: "$ordinal" }],
|
|
352
357
|
},
|
|
353
358
|
},
|
|
354
359
|
],
|
|
@@ -362,12 +367,12 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
362
367
|
eventName: "propose_change_threshold",
|
|
363
368
|
guard: {
|
|
364
369
|
and: [
|
|
365
|
-
|
|
370
|
+
(0, guards_js_1.actorInSet)("state.signers"),
|
|
366
371
|
{ ">=": [{ var: "event.newThreshold" }, 1] },
|
|
367
372
|
{
|
|
368
373
|
"<=": [
|
|
369
374
|
{ var: "event.newThreshold" },
|
|
370
|
-
{
|
|
375
|
+
{ length: [{ var: "state.signers" }] },
|
|
371
376
|
],
|
|
372
377
|
},
|
|
373
378
|
],
|
|
@@ -381,13 +386,13 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
381
386
|
actionType: "change_threshold",
|
|
382
387
|
payload: { newThreshold: { var: "event.newThreshold" } },
|
|
383
388
|
proposer: { var: "event.agent" },
|
|
384
|
-
proposedAt: { var: "$
|
|
389
|
+
proposedAt: { var: "$ordinal" },
|
|
385
390
|
expiresAt: {
|
|
386
|
-
"+": [{ var: "$
|
|
391
|
+
"+": [{ var: "$ordinal" }, { var: "state.proposalTTLMs" }],
|
|
387
392
|
},
|
|
388
393
|
},
|
|
389
394
|
signatures: {
|
|
390
|
-
|
|
395
|
+
set: [{}, { var: "event.agent" }, { var: "$ordinal" }],
|
|
391
396
|
},
|
|
392
397
|
},
|
|
393
398
|
],
|
|
@@ -403,7 +408,7 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
403
408
|
and: [
|
|
404
409
|
{
|
|
405
410
|
">=": [
|
|
406
|
-
{
|
|
411
|
+
{ length: [{ keys: [{ var: "state.signatures" }] }] },
|
|
407
412
|
{ var: "state.threshold" },
|
|
408
413
|
],
|
|
409
414
|
},
|
|
@@ -473,16 +478,29 @@ exports.daoMultisigDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
473
478
|
from: "ACTIVE",
|
|
474
479
|
to: "DISSOLVED",
|
|
475
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.
|
|
476
484
|
guard: {
|
|
477
|
-
|
|
478
|
-
{ var: "
|
|
479
|
-
{
|
|
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
|
+
},
|
|
480
498
|
],
|
|
481
499
|
},
|
|
482
500
|
effect: {
|
|
483
501
|
merge: [
|
|
484
502
|
{ var: "state" },
|
|
485
|
-
{ dissolvedAt: { var: "$
|
|
503
|
+
{ dissolvedAt: { var: "$ordinal" }, status: "DISSOLVED" },
|
|
486
504
|
],
|
|
487
505
|
},
|
|
488
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
|
*/
|
|
@@ -179,9 +180,9 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
179
180
|
actionType: { var: "event.actionType" },
|
|
180
181
|
payload: { var: "event.payload" },
|
|
181
182
|
proposer: { var: "event.agent" },
|
|
182
|
-
proposedAt: { var: "$
|
|
183
|
+
proposedAt: { var: "$ordinal" },
|
|
183
184
|
deadline: {
|
|
184
|
-
"+": [{ var: "$
|
|
185
|
+
"+": [{ var: "$ordinal" }, { var: "state.votingPeriodMs" }],
|
|
185
186
|
},
|
|
186
187
|
},
|
|
187
188
|
votes: { for: [], against: [], abstain: [] },
|
|
@@ -203,20 +204,10 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
203
204
|
{ var: "state.voteThreshold" },
|
|
204
205
|
],
|
|
205
206
|
},
|
|
206
|
-
{
|
|
207
|
-
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
"!": [
|
|
211
|
-
{ in: [{ var: "event.agent" }, { var: "state.votes.against" }] },
|
|
212
|
-
],
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"!": [
|
|
216
|
-
{ in: [{ var: "event.agent" }, { var: "state.votes.abstain" }] },
|
|
217
|
-
],
|
|
218
|
-
},
|
|
219
|
-
{ "<=": [{ 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" }] },
|
|
220
211
|
],
|
|
221
212
|
},
|
|
222
213
|
effect: {
|
|
@@ -278,21 +269,23 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
278
269
|
from: "VOTING",
|
|
279
270
|
to: "ACTIVE",
|
|
280
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).
|
|
281
274
|
guard: {
|
|
282
275
|
and: [
|
|
283
|
-
{ ">": [{ var: "$
|
|
276
|
+
{ ">": [{ var: "$ordinal" }, { var: "state.proposal.deadline" }] },
|
|
284
277
|
{
|
|
285
278
|
">": [
|
|
286
|
-
{
|
|
287
|
-
{
|
|
279
|
+
{ length: [{ var: "state.votes.for" }] },
|
|
280
|
+
{ length: [{ var: "state.votes.against" }] },
|
|
288
281
|
],
|
|
289
282
|
},
|
|
290
283
|
{
|
|
291
284
|
">=": [
|
|
292
285
|
{
|
|
293
286
|
"+": [
|
|
294
|
-
{
|
|
295
|
-
{
|
|
287
|
+
{ length: [{ var: "state.votes.for" }] },
|
|
288
|
+
{ length: [{ var: "state.votes.against" }] },
|
|
296
289
|
],
|
|
297
290
|
},
|
|
298
291
|
{ var: "state.quorum" },
|
|
@@ -312,23 +305,25 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
312
305
|
type: "executed",
|
|
313
306
|
proposal: { var: "state.proposal" },
|
|
314
307
|
votes: { var: "state.votes" },
|
|
315
|
-
at: { var: "$
|
|
308
|
+
at: { var: "$ordinal" },
|
|
316
309
|
},
|
|
317
310
|
],
|
|
318
311
|
],
|
|
319
312
|
},
|
|
320
313
|
proposal: null,
|
|
321
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
|
+
],
|
|
322
324
|
},
|
|
323
325
|
],
|
|
324
326
|
},
|
|
325
|
-
emits: [
|
|
326
|
-
{
|
|
327
|
-
event: "proposal_executed",
|
|
328
|
-
to: "Reputation",
|
|
329
|
-
payload: { action: "increase", agents: { var: "state.votes.for" } },
|
|
330
|
-
},
|
|
331
|
-
],
|
|
332
327
|
dependencies: [],
|
|
333
328
|
},
|
|
334
329
|
// VOTING → ACTIVE: reject (voting ended, for <= against or quorum not met)
|
|
@@ -336,23 +331,25 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
336
331
|
from: "VOTING",
|
|
337
332
|
to: "ACTIVE",
|
|
338
333
|
eventName: "reject",
|
|
334
|
+
// A2 fix: count the array-shaped vote tallies with `length` (size is not a JLVM
|
|
335
|
+
// opcode).
|
|
339
336
|
guard: {
|
|
340
337
|
and: [
|
|
341
|
-
{ ">": [{ var: "$
|
|
338
|
+
{ ">": [{ var: "$ordinal" }, { var: "state.proposal.deadline" }] },
|
|
342
339
|
{
|
|
343
340
|
or: [
|
|
344
341
|
{
|
|
345
342
|
"<=": [
|
|
346
|
-
{
|
|
347
|
-
{
|
|
343
|
+
{ length: [{ var: "state.votes.for" }] },
|
|
344
|
+
{ length: [{ var: "state.votes.against" }] },
|
|
348
345
|
],
|
|
349
346
|
},
|
|
350
347
|
{
|
|
351
348
|
"<": [
|
|
352
349
|
{
|
|
353
350
|
"+": [
|
|
354
|
-
{
|
|
355
|
-
{
|
|
351
|
+
{ length: [{ var: "state.votes.for" }] },
|
|
352
|
+
{ length: [{ var: "state.votes.against" }] },
|
|
356
353
|
],
|
|
357
354
|
},
|
|
358
355
|
{ var: "state.quorum" },
|
|
@@ -374,7 +371,7 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
374
371
|
type: "rejected",
|
|
375
372
|
proposal: { var: "state.proposal" },
|
|
376
373
|
votes: { var: "state.votes" },
|
|
377
|
-
at: { var: "$
|
|
374
|
+
at: { var: "$ordinal" },
|
|
378
375
|
},
|
|
379
376
|
],
|
|
380
377
|
],
|
|
@@ -391,8 +388,17 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
391
388
|
from: "ACTIVE",
|
|
392
389
|
to: "ACTIVE",
|
|
393
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).
|
|
394
399
|
guard: {
|
|
395
400
|
and: [
|
|
401
|
+
(0, guards_js_1.actorIsSigner)(),
|
|
396
402
|
{
|
|
397
403
|
">=": [
|
|
398
404
|
{ var: "event.agentReputation" },
|
|
@@ -410,10 +416,10 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
410
416
|
cat: [{ var: "state.members" }, [{ var: "event.agent" }]],
|
|
411
417
|
},
|
|
412
418
|
memberJoinedAt: {
|
|
413
|
-
|
|
419
|
+
set: [
|
|
414
420
|
{ var: "state.memberJoinedAt" },
|
|
415
421
|
{ var: "event.agent" },
|
|
416
|
-
{ var: "$
|
|
422
|
+
{ var: "$ordinal" },
|
|
417
423
|
],
|
|
418
424
|
},
|
|
419
425
|
},
|
|
@@ -426,7 +432,7 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
426
432
|
from: "ACTIVE",
|
|
427
433
|
to: "ACTIVE",
|
|
428
434
|
eventName: "leave",
|
|
429
|
-
guard:
|
|
435
|
+
guard: (0, guards_js_1.signerInSet)("state.members"),
|
|
430
436
|
effect: {
|
|
431
437
|
merge: [
|
|
432
438
|
{ var: "state" },
|
|
@@ -467,9 +473,9 @@ exports.daoReputationDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
467
473
|
proposeThreshold: { var: "event.proposeThreshold" },
|
|
468
474
|
},
|
|
469
475
|
proposer: { var: "event.agent" },
|
|
470
|
-
proposedAt: { var: "$
|
|
476
|
+
proposedAt: { var: "$ordinal" },
|
|
471
477
|
deadline: {
|
|
472
|
-
"+": [{ var: "$
|
|
478
|
+
"+": [{ var: "$ordinal" }, { var: "state.votingPeriodMs" }],
|
|
473
479
|
},
|
|
474
480
|
},
|
|
475
481
|
votes: { for: [], against: [], abstain: [] },
|
|
@@ -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
|
*/
|
|
@@ -113,7 +114,7 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
113
114
|
from: "ACTIVE",
|
|
114
115
|
to: "ACTIVE",
|
|
115
116
|
eventName: "execute",
|
|
116
|
-
guard:
|
|
117
|
+
guard: (0, guards_js_1.signerIsParty)("state.owner"),
|
|
117
118
|
effect: {
|
|
118
119
|
merge: [
|
|
119
120
|
{ var: "state" },
|
|
@@ -126,15 +127,23 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
126
127
|
id: { var: "event.actionId" },
|
|
127
128
|
type: { var: "event.actionType" },
|
|
128
129
|
payload: { var: "event.payload" },
|
|
129
|
-
executedAt: { var: "$
|
|
130
|
+
executedAt: { var: "$ordinal" },
|
|
130
131
|
},
|
|
131
132
|
],
|
|
132
133
|
],
|
|
133
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
|
+
],
|
|
134
144
|
},
|
|
135
145
|
],
|
|
136
146
|
},
|
|
137
|
-
emits: [{ event: "action_executed", to: "external" }],
|
|
138
147
|
dependencies: [],
|
|
139
148
|
},
|
|
140
149
|
// ACTIVE → TRANSFERRING: transfer_ownership (owner only)
|
|
@@ -142,13 +151,13 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
142
151
|
from: "ACTIVE",
|
|
143
152
|
to: "TRANSFERRING",
|
|
144
153
|
eventName: "transfer_ownership",
|
|
145
|
-
guard:
|
|
154
|
+
guard: (0, guards_js_1.signerIsParty)("state.owner"),
|
|
146
155
|
effect: {
|
|
147
156
|
merge: [
|
|
148
157
|
{ var: "state" },
|
|
149
158
|
{
|
|
150
159
|
pendingOwner: { var: "event.newOwner" },
|
|
151
|
-
transferInitiatedAt: { var: "$
|
|
160
|
+
transferInitiatedAt: { var: "$ordinal" },
|
|
152
161
|
},
|
|
153
162
|
],
|
|
154
163
|
},
|
|
@@ -159,7 +168,7 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
159
168
|
from: "TRANSFERRING",
|
|
160
169
|
to: "ACTIVE",
|
|
161
170
|
eventName: "accept_ownership",
|
|
162
|
-
guard:
|
|
171
|
+
guard: (0, guards_js_1.signerIsParty)("state.pendingOwner"),
|
|
163
172
|
effect: {
|
|
164
173
|
merge: [
|
|
165
174
|
{ var: "state" },
|
|
@@ -174,15 +183,23 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
174
183
|
{
|
|
175
184
|
from: { var: "state.owner" },
|
|
176
185
|
to: { var: "state.pendingOwner" },
|
|
177
|
-
at: { var: "$
|
|
186
|
+
at: { var: "$ordinal" },
|
|
178
187
|
},
|
|
179
188
|
],
|
|
180
189
|
],
|
|
181
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
|
+
],
|
|
182
200
|
},
|
|
183
201
|
],
|
|
184
202
|
},
|
|
185
|
-
emits: [{ event: "ownership_transferred", to: "Identity" }],
|
|
186
203
|
dependencies: [],
|
|
187
204
|
},
|
|
188
205
|
// TRANSFERRING → ACTIVE: cancel_transfer (owner only)
|
|
@@ -190,7 +207,7 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
190
207
|
from: "TRANSFERRING",
|
|
191
208
|
to: "ACTIVE",
|
|
192
209
|
eventName: "cancel_transfer",
|
|
193
|
-
guard:
|
|
210
|
+
guard: (0, guards_js_1.signerIsParty)("state.owner"),
|
|
194
211
|
effect: {
|
|
195
212
|
merge: [
|
|
196
213
|
{ var: "state" },
|
|
@@ -207,12 +224,12 @@ exports.daoSingleDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
207
224
|
from: "ACTIVE",
|
|
208
225
|
to: "DISSOLVED",
|
|
209
226
|
eventName: "dissolve",
|
|
210
|
-
guard:
|
|
227
|
+
guard: (0, guards_js_1.signerIsParty)("state.owner"),
|
|
211
228
|
effect: {
|
|
212
229
|
merge: [
|
|
213
230
|
{ var: "state" },
|
|
214
231
|
{
|
|
215
|
-
dissolvedAt: { var: "$
|
|
232
|
+
dissolvedAt: { var: "$ordinal" },
|
|
216
233
|
status: "DISSOLVED",
|
|
217
234
|
},
|
|
218
235
|
],
|