@ottochain/sdk 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/dist/cjs/apps/compute/index.js +33 -0
  2. package/dist/cjs/apps/compute/state-machines/compute-rule110.js +164 -0
  3. package/dist/cjs/apps/compute/state-machines/index.js +9 -0
  4. package/dist/cjs/apps/contracts/index.js +16 -9
  5. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +134 -161
  6. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +192 -170
  7. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
  8. package/dist/cjs/apps/corporate/index.js +2 -2
  9. package/dist/cjs/apps/corporate/state-machines/corp-board.js +500 -456
  10. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +487 -361
  11. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +769 -576
  12. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +567 -557
  13. package/dist/cjs/apps/governance/index.js +21 -21
  14. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +188 -209
  15. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +181 -228
  16. package/dist/cjs/apps/governance/state-machines/dao-single.js +105 -88
  17. package/dist/cjs/apps/governance/state-machines/dao-token.js +199 -227
  18. package/dist/cjs/apps/governance/state-machines/governance-simple.js +231 -231
  19. package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
  20. package/dist/cjs/apps/identity/constants.js +55 -22
  21. package/dist/cjs/apps/identity/index.js +28 -12
  22. package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
  23. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +158 -173
  24. package/dist/cjs/apps/identity/state-machines/identity-registry.js +262 -0
  25. package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
  26. package/dist/cjs/apps/identity/state-machines/index.js +3 -1
  27. package/dist/cjs/apps/index.js +22 -8
  28. package/dist/cjs/apps/lending/assets.js +247 -0
  29. package/dist/cjs/apps/lending/credit-scoring.js +87 -0
  30. package/dist/cjs/apps/lending/eligibility.js +105 -0
  31. package/dist/cjs/apps/lending/index.js +91 -0
  32. package/dist/cjs/apps/lending/state-machines/index.js +9 -0
  33. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +433 -0
  34. package/dist/cjs/apps/markets/index.js +22 -12
  35. package/dist/cjs/apps/markets/state-machines/market-auction.js +116 -134
  36. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +131 -141
  37. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +163 -184
  38. package/dist/cjs/apps/markets/state-machines/market-prediction.js +226 -233
  39. package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
  40. package/dist/cjs/apps/oracles/index.js +3 -3
  41. package/dist/cjs/apps/privacy/index.js +67 -0
  42. package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
  43. package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
  44. package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
  45. package/dist/cjs/apps/staked-pool/assets.js +103 -0
  46. package/dist/cjs/apps/staked-pool/base.js +498 -0
  47. package/dist/cjs/apps/staked-pool/consumer.js +55 -0
  48. package/dist/cjs/apps/staked-pool/index.js +83 -0
  49. package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
  50. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
  51. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
  52. package/dist/cjs/errors.js +3 -3
  53. package/dist/cjs/generated/google/protobuf/struct.js +5 -5
  54. package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
  55. package/dist/cjs/generated/index.js +11 -7
  56. package/dist/cjs/generated/openapi.js +6 -0
  57. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +51 -51
  58. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +20 -21
  59. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +14 -14
  60. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +5 -5
  61. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +125 -131
  62. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +108 -108
  63. package/dist/cjs/generated/ottochain/v1/common.js +5 -5
  64. package/dist/cjs/generated/ottochain/v1/fiber.js +44 -6
  65. package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
  66. package/dist/cjs/generated/ottochain/v1/records.js +1 -1
  67. package/dist/cjs/index.js +58 -7
  68. package/dist/cjs/openapi.js +2 -0
  69. package/dist/cjs/ottochain/drop-nulls.js +1 -2
  70. package/dist/cjs/ottochain/genesis-manifest.js +17 -11
  71. package/dist/cjs/ottochain/index.js +23 -13
  72. package/dist/cjs/ottochain/metagraph-client.js +81 -16
  73. package/dist/cjs/ottochain/snapshot.js +13 -16
  74. package/dist/cjs/ottochain/transaction.js +67 -14
  75. package/dist/cjs/ottochain/types.js +16 -2
  76. package/dist/cjs/privacy/index.js +14 -0
  77. package/dist/cjs/privacy/sealed-bid.js +213 -0
  78. package/dist/cjs/privacy/shield-app.js +131 -0
  79. package/dist/cjs/schema/effects.js +156 -0
  80. package/dist/cjs/schema/fiber-app.js +150 -15
  81. package/dist/cjs/schema/guard-lint.js +343 -0
  82. package/dist/cjs/schema/guards.js +246 -0
  83. package/dist/cjs/signing.js +80 -0
  84. package/dist/cjs/templates/asset-policy.js +190 -0
  85. package/dist/cjs/templates/index.js +86 -0
  86. package/dist/cjs/templates/machine.js +130 -0
  87. package/dist/cjs/templates/migration.js +39 -0
  88. package/dist/cjs/templates/state-shape.js +38 -0
  89. package/dist/cjs/types.js +2 -3
  90. package/dist/cjs/validation.js +9 -11
  91. package/dist/cjs/verify.js +9 -4
  92. package/dist/cjs/zk/commit.js +53 -0
  93. package/dist/cjs/zk/guard.js +107 -0
  94. package/dist/cjs/zk/index.js +48 -0
  95. package/dist/cjs/zk/preimage.js +37 -0
  96. package/dist/cjs/zk/prover.js +87 -0
  97. package/dist/cjs/zk/registry.js +62 -0
  98. package/dist/cjs/zk/types.js +28 -0
  99. package/dist/cjs/zk/witness.js +19 -0
  100. package/dist/esm/apps/compute/index.js +29 -0
  101. package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
  102. package/dist/esm/apps/compute/state-machines/index.js +5 -0
  103. package/dist/esm/apps/contracts/index.js +9 -5
  104. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +135 -162
  105. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +193 -171
  106. package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
  107. package/dist/esm/apps/corporate/index.js +2 -2
  108. package/dist/esm/apps/corporate/state-machines/corp-board.js +501 -457
  109. package/dist/esm/apps/corporate/state-machines/corp-entity.js +488 -362
  110. package/dist/esm/apps/corporate/state-machines/corp-securities.js +770 -577
  111. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +568 -558
  112. package/dist/esm/apps/governance/index.js +10 -10
  113. package/dist/esm/apps/governance/state-machines/dao-multisig.js +189 -210
  114. package/dist/esm/apps/governance/state-machines/dao-reputation.js +182 -229
  115. package/dist/esm/apps/governance/state-machines/dao-single.js +106 -89
  116. package/dist/esm/apps/governance/state-machines/dao-token.js +200 -228
  117. package/dist/esm/apps/governance/state-machines/governance-simple.js +232 -232
  118. package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
  119. package/dist/esm/apps/identity/constants.js +52 -21
  120. package/dist/esm/apps/identity/index.js +14 -9
  121. package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
  122. package/dist/esm/apps/identity/state-machines/identity-oracle.js +159 -174
  123. package/dist/esm/apps/identity/state-machines/identity-registry.js +259 -0
  124. package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
  125. package/dist/esm/apps/identity/state-machines/index.js +1 -0
  126. package/dist/esm/apps/index.js +9 -5
  127. package/dist/esm/apps/lending/assets.js +231 -0
  128. package/dist/esm/apps/lending/credit-scoring.js +81 -0
  129. package/dist/esm/apps/lending/eligibility.js +99 -0
  130. package/dist/esm/apps/lending/index.js +69 -0
  131. package/dist/esm/apps/lending/state-machines/index.js +5 -0
  132. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +430 -0
  133. package/dist/esm/apps/markets/index.js +11 -7
  134. package/dist/esm/apps/markets/state-machines/market-auction.js +117 -135
  135. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +132 -142
  136. package/dist/esm/apps/markets/state-machines/market-group-buy.js +164 -185
  137. package/dist/esm/apps/markets/state-machines/market-prediction.js +227 -234
  138. package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
  139. package/dist/esm/apps/oracles/index.js +3 -3
  140. package/dist/esm/apps/privacy/index.js +56 -0
  141. package/dist/esm/apps/privacy/state-machines/index.js +6 -0
  142. package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
  143. package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
  144. package/dist/esm/apps/staked-pool/assets.js +91 -0
  145. package/dist/esm/apps/staked-pool/base.js +493 -0
  146. package/dist/esm/apps/staked-pool/consumer.js +49 -0
  147. package/dist/esm/apps/staked-pool/index.js +60 -0
  148. package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
  149. package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
  150. package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
  151. package/dist/esm/generated/google/protobuf/struct.js +1 -1
  152. package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
  153. package/dist/esm/generated/index.js +9 -5
  154. package/dist/esm/generated/openapi.js +5 -0
  155. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +47 -47
  156. package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  157. package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
  158. package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  159. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +115 -121
  160. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +101 -101
  161. package/dist/esm/generated/ottochain/v1/common.js +1 -1
  162. package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
  163. package/dist/esm/generated/ottochain/v1/messages.js +1 -1
  164. package/dist/esm/generated/ottochain/v1/records.js +1 -1
  165. package/dist/esm/index.js +28 -3
  166. package/dist/esm/openapi.js +1 -0
  167. package/dist/esm/ottochain/genesis-manifest.js +15 -9
  168. package/dist/esm/ottochain/index.js +2 -3
  169. package/dist/esm/ottochain/metagraph-client.js +81 -16
  170. package/dist/esm/ottochain/snapshot.js +6 -8
  171. package/dist/esm/ottochain/transaction.js +51 -3
  172. package/dist/esm/ottochain/types.js +15 -1
  173. package/dist/esm/privacy/index.js +6 -0
  174. package/dist/esm/privacy/sealed-bid.js +209 -0
  175. package/dist/esm/privacy/shield-app.js +127 -0
  176. package/dist/esm/schema/effects.js +145 -0
  177. package/dist/esm/schema/fiber-app.js +139 -8
  178. package/dist/esm/schema/guard-lint.js +337 -0
  179. package/dist/esm/schema/guards.js +228 -0
  180. package/dist/esm/signing.js +74 -0
  181. package/dist/esm/templates/asset-policy.js +182 -0
  182. package/dist/esm/templates/index.js +41 -0
  183. package/dist/esm/templates/machine.js +125 -0
  184. package/dist/esm/templates/migration.js +34 -0
  185. package/dist/esm/templates/state-shape.js +34 -0
  186. package/dist/esm/validation.js +1 -3
  187. package/dist/esm/verify.js +8 -2
  188. package/dist/esm/zk/commit.js +44 -0
  189. package/dist/esm/zk/guard.js +99 -0
  190. package/dist/esm/zk/index.js +19 -0
  191. package/dist/esm/zk/preimage.js +30 -0
  192. package/dist/esm/zk/prover.js +82 -0
  193. package/dist/esm/zk/registry.js +55 -0
  194. package/dist/esm/zk/types.js +25 -0
  195. package/dist/esm/zk/witness.js +15 -0
  196. package/dist/types/apps/compute/index.d.ts +176 -0
  197. package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
  198. package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
  199. package/dist/types/apps/contracts/index.d.ts +81 -221
  200. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +23 -98
  201. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +49 -115
  202. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
  203. package/dist/types/apps/corporate/index.d.ts +1176 -440
  204. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +271 -135
  205. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +279 -74
  206. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +373 -149
  207. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +252 -80
  208. package/dist/types/apps/governance/index.d.ts +368 -470
  209. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -107
  210. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +61 -85
  211. package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
  212. package/dist/types/apps/governance/state-machines/dao-token.d.ts +79 -68
  213. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +95 -125
  214. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +6 -6
  215. package/dist/types/apps/identity/constants.d.ts +33 -5
  216. package/dist/types/apps/identity/index.d.ts +415 -131
  217. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
  218. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +27 -98
  219. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
  220. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
  221. package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
  222. package/dist/types/apps/index.d.ts +9 -5
  223. package/dist/types/apps/lending/assets.d.ts +258 -0
  224. package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
  225. package/dist/types/apps/lending/eligibility.d.ts +83 -0
  226. package/dist/types/apps/lending/index.d.ts +556 -0
  227. package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
  228. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +536 -0
  229. package/dist/types/apps/markets/index.d.ts +181 -276
  230. package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -49
  231. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +35 -53
  232. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +35 -61
  233. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +65 -86
  234. package/dist/types/apps/markets/state-machines/market-universal.d.ts +12 -12
  235. package/dist/types/apps/oracles/index.d.ts +1 -1
  236. package/dist/types/apps/privacy/index.d.ts +328 -0
  237. package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
  238. package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
  239. package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
  240. package/dist/types/apps/staked-pool/assets.d.ts +53 -0
  241. package/dist/types/apps/staked-pool/base.d.ts +80 -0
  242. package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
  243. package/dist/types/apps/staked-pool/index.d.ts +51 -0
  244. package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
  245. package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
  246. package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
  247. package/dist/types/generated/index.d.ts +5 -5
  248. package/dist/types/generated/openapi.d.ts +1270 -0
  249. package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
  250. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
  251. package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
  252. package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
  253. package/dist/types/index.d.ts +7 -3
  254. package/dist/types/openapi.d.ts +24 -0
  255. package/dist/types/ottochain/genesis-manifest.d.ts +11 -5
  256. package/dist/types/ottochain/index.d.ts +5 -6
  257. package/dist/types/ottochain/metagraph-client.d.ts +49 -7
  258. package/dist/types/ottochain/snapshot.d.ts +6 -6
  259. package/dist/types/ottochain/transaction.d.ts +41 -1
  260. package/dist/types/ottochain/types.d.ts +336 -31
  261. package/dist/types/privacy/index.d.ts +6 -0
  262. package/dist/types/privacy/sealed-bid.d.ts +348 -0
  263. package/dist/types/privacy/shield-app.d.ts +48 -0
  264. package/dist/types/schema/effects.d.ts +141 -0
  265. package/dist/types/schema/fiber-app.d.ts +282 -2
  266. package/dist/types/schema/guard-lint.d.ts +111 -0
  267. package/dist/types/schema/guards.d.ts +146 -0
  268. package/dist/types/signing.d.ts +45 -0
  269. package/dist/types/templates/asset-policy.d.ts +119 -0
  270. package/dist/types/templates/index.d.ts +26 -0
  271. package/dist/types/templates/machine.d.ts +139 -0
  272. package/dist/types/templates/migration.d.ts +34 -0
  273. package/dist/types/templates/state-shape.d.ts +30 -0
  274. package/dist/types/validation.d.ts +22 -217
  275. package/dist/types/verify.d.ts +4 -0
  276. package/dist/types/zk/commit.d.ts +28 -0
  277. package/dist/types/zk/guard.d.ts +46 -0
  278. package/dist/types/zk/index.d.ts +19 -0
  279. package/dist/types/zk/preimage.d.ts +10 -0
  280. package/dist/types/zk/prover.d.ts +34 -0
  281. package/dist/types/zk/registry.d.ts +34 -0
  282. package/dist/types/zk/types.d.ts +33 -0
  283. package/dist/types/zk/witness.d.ts +40 -0
  284. package/package.json +47 -15
  285. package/dist/cjs/ottochain/normalize.js +0 -186
  286. package/dist/esm/ottochain/normalize.js +0 -179
  287. package/dist/types/ottochain/normalize.d.ts +0 -79
@@ -1,355 +1,340 @@
1
- import { defineFiberApp } from "../../../schema/fiber-app.js";
1
+ import { defineFiberApp } from '../../../schema/fiber-app.js';
2
+ import { signerIsParty } from '../../../schema/guards.js';
2
3
  /**
3
4
  * Oracle identity with staking, attestations, reputation, and slashing mechanics.
4
5
  */
5
6
  export const identityOracleDef = defineFiberApp({
6
7
  metadata: {
7
- name: "IdentityOracle",
8
- app: "identity",
9
- type: "oracle",
10
- version: "1.0.0",
11
- description: "Oracle identity with staking, attestations, reputation, and slashing mechanics",
8
+ name: 'IdentityOracle',
9
+ app: 'identity',
10
+ type: 'oracle',
11
+ version: '1.0.0',
12
+ description: 'Oracle identity with staking, attestations, reputation, and slashing mechanics',
12
13
  },
13
14
  createSchema: {
14
- required: ["owner", "stake", "domains"],
15
+ required: ['owner', 'stake', 'domains', 'slasher'],
15
16
  properties: {
16
17
  owner: {
17
- type: "address",
18
- description: "Oracle owner DAG address",
18
+ type: 'address',
19
+ description: 'Oracle owner DAG address',
20
+ immutable: true,
21
+ },
22
+ slasher: {
23
+ type: 'address',
24
+ description: "DAG address of the slasher authorized to penalize this oracle's stake",
19
25
  immutable: true,
20
26
  },
21
27
  stake: {
22
- type: "integer",
28
+ type: 'integer',
23
29
  minimum: 0,
24
- description: "Initial stake amount",
30
+ description: 'Initial stake amount',
25
31
  },
26
32
  domains: {
27
- type: "array",
28
- items: { type: "string" },
29
- description: "Oracle specialization domains",
33
+ type: 'array',
34
+ items: { type: 'string' },
35
+ description: 'Oracle specialization domains',
30
36
  },
31
37
  minStake: {
32
- type: "integer",
38
+ type: 'integer',
33
39
  default: 1000,
34
- description: "Minimum stake required",
40
+ description: 'Minimum stake required',
35
41
  },
36
42
  },
37
43
  },
38
44
  stateSchema: {
39
45
  properties: {
40
- owner: { type: "address", immutable: true },
41
- address: { type: "address", computed: true },
42
- stake: { type: "integer", computed: true },
43
- minStake: { type: "integer" },
44
- domains: { type: "array", items: { type: "string" } },
46
+ owner: { type: 'address', immutable: true },
47
+ slasher: { type: 'address', immutable: true },
48
+ address: { type: 'address', computed: true },
49
+ stake: { type: 'integer', computed: true },
50
+ minStake: { type: 'integer' },
51
+ domains: { type: 'array', items: { type: 'string' } },
45
52
  status: {
46
- type: "string",
47
- enum: [
48
- "UNREGISTERED",
49
- "REGISTERED",
50
- "ACTIVE",
51
- "SLASHED",
52
- "WITHDRAWN",
53
- ],
53
+ type: 'string',
54
+ enum: ['UNREGISTERED', 'REGISTERED', 'ACTIVE', 'SLASHED', 'WITHDRAWN'],
54
55
  computed: true,
55
56
  },
56
57
  reputation: {
57
- type: "object",
58
+ type: 'object',
58
59
  properties: {
59
- accuracy: { type: "integer" },
60
- totalResolutions: { type: "integer" },
61
- disputesWon: { type: "integer" },
62
- disputesLost: { type: "integer" },
60
+ accuracy: { type: 'integer' },
61
+ totalResolutions: { type: 'integer' },
62
+ disputesWon: { type: 'integer' },
63
+ disputesLost: { type: 'integer' },
63
64
  },
64
65
  computed: true,
65
66
  },
66
- slashingHistory: { type: "array", computed: true },
67
- registeredAt: { type: "timestamp", computed: true },
68
- activatedAt: { type: "timestamp", computed: true },
69
- slashedAt: { type: "timestamp", computed: true },
70
- withdrawnAt: { type: "timestamp", computed: true },
67
+ slashingHistory: { type: 'array', computed: true },
68
+ registeredAt: { type: 'timestamp', computed: true },
69
+ activatedAt: { type: 'timestamp', computed: true },
70
+ slashedAt: { type: 'timestamp', computed: true },
71
+ withdrawnAt: { type: 'timestamp', computed: true },
71
72
  },
72
73
  },
73
74
  eventSchemas: {
74
75
  register: {
75
- description: "Register as an oracle with initial stake",
76
- required: ["agent", "stake", "domains"],
76
+ description: 'Register as an oracle with initial stake',
77
+ required: ['agent', 'stake', 'domains'],
77
78
  properties: {
78
- agent: { type: "address" },
79
- stake: { type: "integer", minimum: 0 },
80
- domains: { type: "array", items: { type: "string" } },
79
+ agent: { type: 'address' },
80
+ stake: { type: 'integer', minimum: 0 },
81
+ domains: { type: 'array', items: { type: 'string' } },
81
82
  },
82
83
  },
83
84
  activate: {
84
- description: "Activate a registered oracle",
85
- required: ["agent"],
85
+ description: 'Activate a registered oracle',
86
+ required: ['agent'],
86
87
  properties: {
87
- agent: { type: "address" },
88
- adminOverride: { type: "boolean", default: false },
88
+ agent: { type: 'address' },
89
89
  },
90
90
  },
91
91
  add_stake: {
92
- description: "Add stake to an active oracle",
93
- required: ["agent", "amount"],
92
+ description: 'Add stake to an active oracle',
93
+ required: ['agent', 'amount'],
94
94
  properties: {
95
- agent: { type: "address" },
96
- amount: { type: "integer", minimum: 1 },
95
+ agent: { type: 'address' },
96
+ amount: { type: 'integer', minimum: 1 },
97
97
  },
98
98
  },
99
99
  record_resolution: {
100
- description: "Record a market resolution outcome",
101
- required: ["marketId", "correct"],
100
+ description: 'Record a market resolution outcome',
101
+ required: ['marketId', 'correct'],
102
102
  properties: {
103
- marketId: { type: "uuid" },
104
- correct: { type: "boolean" },
103
+ marketId: { type: 'uuid' },
104
+ correct: { type: 'boolean' },
105
105
  },
106
106
  },
107
107
  slash: {
108
- description: "Slash oracle stake for misconduct",
109
- required: ["reason", "amount"],
108
+ description: 'Slash oracle stake for misconduct',
109
+ required: ['reason', 'amount'],
110
110
  properties: {
111
- reason: { type: "string" },
112
- amount: { type: "integer", minimum: 1 },
113
- marketId: { type: "uuid" },
111
+ reason: { type: 'string' },
112
+ amount: { type: 'integer', minimum: 1 },
113
+ marketId: { type: 'uuid' },
114
114
  },
115
115
  },
116
116
  reactivate: {
117
- description: "Reactivate a slashed oracle",
118
- required: ["agent"],
117
+ description: 'Reactivate a slashed oracle',
118
+ required: ['agent'],
119
119
  properties: {
120
- agent: { type: "address" },
120
+ agent: { type: 'address' },
121
121
  },
122
122
  },
123
123
  withdraw: {
124
- description: "Withdraw oracle and reclaim stake",
125
- required: ["agent"],
124
+ description: 'Withdraw oracle and reclaim stake',
125
+ required: ['agent'],
126
126
  properties: {
127
- agent: { type: "address" },
127
+ agent: { type: 'address' },
128
128
  },
129
129
  },
130
130
  },
131
131
  states: {
132
132
  UNREGISTERED: {
133
- id: "UNREGISTERED",
133
+ id: 'UNREGISTERED',
134
134
  isFinal: false,
135
135
  metadata: {
136
- label: "Unregistered",
137
- description: "Oracle not yet registered; awaiting stake",
138
- category: "initial",
136
+ label: 'Unregistered',
137
+ description: 'Oracle not yet registered; awaiting stake',
138
+ category: 'initial',
139
139
  },
140
140
  },
141
141
  REGISTERED: {
142
- id: "REGISTERED",
142
+ id: 'REGISTERED',
143
143
  isFinal: false,
144
144
  metadata: {
145
- label: "Registered",
146
- description: "Oracle staked and registered but not yet active",
147
- category: "pending",
145
+ label: 'Registered',
146
+ description: 'Oracle staked and registered but not yet active',
147
+ category: 'pending',
148
148
  },
149
149
  },
150
150
  ACTIVE: {
151
- id: "ACTIVE",
151
+ id: 'ACTIVE',
152
152
  isFinal: false,
153
153
  metadata: {
154
- label: "Active",
155
- description: "Oracle is active and may submit resolutions",
156
- category: "active",
154
+ label: 'Active',
155
+ description: 'Oracle is active and may submit resolutions',
156
+ category: 'active',
157
157
  },
158
158
  },
159
159
  SLASHED: {
160
- id: "SLASHED",
160
+ id: 'SLASHED',
161
161
  isFinal: false,
162
162
  metadata: {
163
- label: "Slashed",
164
- description: "Oracle penalized for a lost dispute; stake reduced",
165
- category: "pending",
163
+ label: 'Slashed',
164
+ description: 'Oracle penalized for a lost dispute; stake reduced',
165
+ category: 'pending',
166
166
  },
167
167
  },
168
168
  WITHDRAWN: {
169
- id: "WITHDRAWN",
169
+ id: 'WITHDRAWN',
170
170
  isFinal: true,
171
171
  metadata: {
172
- label: "Withdrawn",
173
- description: "Oracle withdrawn and stake reclaimed (terminal)",
174
- category: "terminal",
172
+ label: 'Withdrawn',
173
+ description: 'Oracle withdrawn and stake reclaimed (terminal)',
174
+ category: 'terminal',
175
175
  },
176
176
  },
177
177
  },
178
- initialState: "UNREGISTERED",
178
+ initialState: 'UNREGISTERED',
179
179
  transitions: [
180
180
  {
181
- from: "UNREGISTERED",
182
- to: "REGISTERED",
183
- eventName: "register",
184
- guard: { ">=": [{ var: "event.stake" }, { var: "state.minStake" }] },
181
+ from: 'UNREGISTERED',
182
+ to: 'REGISTERED',
183
+ eventName: 'register',
184
+ guard: { '>=': [{ var: 'event.stake' }, { var: 'state.minStake' }] },
185
185
  effect: {
186
186
  merge: [
187
- { var: "state" },
187
+ { var: 'state' },
188
188
  {
189
- status: "REGISTERED",
190
- address: { var: "event.agent" },
191
- stake: { var: "event.stake" },
192
- registeredAt: { var: "$timestamp" },
189
+ status: 'REGISTERED',
190
+ address: { var: 'event.agent' },
191
+ stake: { var: 'event.stake' },
192
+ registeredAt: { var: '$ordinal' },
193
193
  reputation: {
194
194
  accuracy: 100,
195
195
  totalResolutions: 0,
196
196
  disputesWon: 0,
197
197
  disputesLost: 0,
198
198
  },
199
- domains: { var: "event.domains" },
199
+ domains: { var: 'event.domains' },
200
200
  slashingHistory: [],
201
201
  },
202
202
  ],
203
203
  },
204
204
  },
205
205
  {
206
- from: "REGISTERED",
207
- to: "ACTIVE",
208
- eventName: "activate",
209
- guard: {
210
- or: [
211
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
212
- { var: "event.adminOverride" },
213
- ],
214
- },
206
+ from: 'REGISTERED',
207
+ to: 'ACTIVE',
208
+ eventName: 'activate',
209
+ // authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
210
+ guard: signerIsParty('state.address'),
215
211
  effect: {
216
- merge: [
217
- { var: "state" },
218
- { status: "ACTIVE", activatedAt: { var: "$timestamp" } },
219
- ],
212
+ merge: [{ var: 'state' }, { status: 'ACTIVE', activatedAt: { var: '$ordinal' } }],
220
213
  },
221
214
  },
222
215
  {
223
- from: "ACTIVE",
224
- to: "ACTIVE",
225
- eventName: "add_stake",
216
+ from: 'ACTIVE',
217
+ to: 'ACTIVE',
218
+ eventName: 'add_stake',
226
219
  guard: {
227
- and: [
228
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
229
- { ">": [{ var: "event.amount" }, 0] },
230
- ],
220
+ and: [signerIsParty('state.address'), { '>': [{ var: 'event.amount' }, 0] }],
231
221
  },
232
222
  effect: {
233
223
  merge: [
234
- { var: "state" },
224
+ { var: 'state' },
235
225
  {
236
- stake: { "+": [{ var: "state.stake" }, { var: "event.amount" }] },
237
- lastStakeAt: { var: "$timestamp" },
226
+ stake: { '+': [{ var: 'state.stake' }, { var: 'event.amount' }] },
227
+ lastStakeAt: { var: '$ordinal' },
238
228
  },
239
229
  ],
240
230
  },
241
231
  },
242
232
  {
243
- from: "ACTIVE",
244
- to: "ACTIVE",
245
- eventName: "record_resolution",
246
- guard: { var: "event.marketId" },
233
+ from: 'ACTIVE',
234
+ to: 'ACTIVE',
235
+ eventName: 'record_resolution',
236
+ guard: { var: 'event.marketId' },
247
237
  effect: {
248
238
  merge: [
249
- { var: "state" },
239
+ { var: 'state' },
250
240
  {
251
241
  reputation: {
252
242
  merge: [
253
- { var: "state.reputation" },
243
+ { var: 'state.reputation' },
254
244
  {
255
245
  totalResolutions: {
256
- "+": [{ var: "state.reputation.totalResolutions" }, 1],
246
+ '+': [{ var: 'state.reputation.totalResolutions' }, 1],
257
247
  },
258
248
  accuracy: {
259
249
  if: [
260
- { var: "event.correct" },
261
- { var: "state.reputation.accuracy" },
262
- { "-": [{ var: "state.reputation.accuracy" }, 5] },
250
+ { var: 'event.correct' },
251
+ { var: 'state.reputation.accuracy' },
252
+ { '-': [{ var: 'state.reputation.accuracy' }, 5] },
263
253
  ],
264
254
  },
265
255
  },
266
256
  ],
267
257
  },
268
- lastResolutionAt: { var: "$timestamp" },
258
+ lastResolutionAt: { var: '$ordinal' },
269
259
  },
270
260
  ],
271
261
  },
272
262
  },
273
263
  {
274
- from: "ACTIVE",
275
- to: "SLASHED",
276
- eventName: "slash",
264
+ from: 'ACTIVE',
265
+ to: 'SLASHED',
266
+ eventName: 'slash',
267
+ // authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
277
268
  guard: {
278
269
  and: [
279
- { var: "event.reason" },
280
- { ">": [{ var: "event.amount" }, 0] },
281
- { "<=": [{ var: "event.amount" }, { var: "state.stake" }] },
270
+ signerIsParty('state.slasher'),
271
+ { '>': [{ var: 'event.amount' }, 0] },
272
+ { '<=': [{ var: 'event.amount' }, { var: 'state.stake' }] },
282
273
  ],
283
274
  },
284
275
  effect: {
285
276
  merge: [
286
- { var: "state" },
277
+ { var: 'state' },
287
278
  {
288
- status: "SLASHED",
289
- stake: { "-": [{ var: "state.stake" }, { var: "event.amount" }] },
279
+ status: 'SLASHED',
280
+ stake: { '-': [{ var: 'state.stake' }, { var: 'event.amount' }] },
290
281
  slashingHistory: {
291
282
  cat: [
292
- { var: "state.slashingHistory" },
283
+ { var: 'state.slashingHistory' },
293
284
  [
294
285
  {
295
- reason: { var: "event.reason" },
296
- amount: { var: "event.amount" },
297
- marketId: { var: "event.marketId" },
298
- slashedAt: { var: "$timestamp" },
286
+ reason: { var: 'event.reason' },
287
+ amount: { var: 'event.amount' },
288
+ marketId: { var: 'event.marketId' },
289
+ slashedAt: { var: '$ordinal' },
299
290
  },
300
291
  ],
301
292
  ],
302
293
  },
303
- slashedAt: { var: "$timestamp" },
294
+ slashedAt: { var: '$ordinal' },
304
295
  },
305
296
  ],
306
297
  },
307
298
  },
308
299
  {
309
- from: "SLASHED",
310
- to: "ACTIVE",
311
- eventName: "reactivate",
300
+ from: 'SLASHED',
301
+ to: 'ACTIVE',
302
+ eventName: 'reactivate',
312
303
  guard: {
313
- and: [
314
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
315
- { ">=": [{ var: "state.stake" }, { var: "state.minStake" }] },
316
- ],
304
+ and: [signerIsParty('state.address'), { '>=': [{ var: 'state.stake' }, { var: 'state.minStake' }] }],
317
305
  },
318
306
  effect: {
319
- merge: [
320
- { var: "state" },
321
- { status: "ACTIVE", reactivatedAt: { var: "$timestamp" } },
322
- ],
307
+ merge: [{ var: 'state' }, { status: 'ACTIVE', reactivatedAt: { var: '$ordinal' } }],
323
308
  },
324
309
  },
325
310
  {
326
- from: "ACTIVE",
327
- to: "WITHDRAWN",
328
- eventName: "withdraw",
329
- guard: { "===": [{ var: "event.agent" }, { var: "state.address" }] },
311
+ from: 'ACTIVE',
312
+ to: 'WITHDRAWN',
313
+ eventName: 'withdraw',
314
+ guard: signerIsParty('state.address'),
330
315
  effect: {
331
316
  merge: [
332
- { var: "state" },
317
+ { var: 'state' },
333
318
  {
334
- status: "WITHDRAWN",
335
- withdrawnAt: { var: "$timestamp" },
336
- finalStake: { var: "state.stake" },
319
+ status: 'WITHDRAWN',
320
+ withdrawnAt: { var: '$ordinal' },
321
+ finalStake: { var: 'state.stake' },
337
322
  },
338
323
  ],
339
324
  },
340
325
  },
341
326
  {
342
- from: "SLASHED",
343
- to: "WITHDRAWN",
344
- eventName: "withdraw",
345
- guard: { "===": [{ var: "event.agent" }, { var: "state.address" }] },
327
+ from: 'SLASHED',
328
+ to: 'WITHDRAWN',
329
+ eventName: 'withdraw',
330
+ guard: signerIsParty('state.address'),
346
331
  effect: {
347
332
  merge: [
348
- { var: "state" },
333
+ { var: 'state' },
349
334
  {
350
- status: "WITHDRAWN",
351
- withdrawnAt: { var: "$timestamp" },
352
- finalStake: { var: "state.stake" },
335
+ status: 'WITHDRAWN',
336
+ withdrawnAt: { var: '$ordinal' },
337
+ finalStake: { var: 'state.stake' },
353
338
  },
354
339
  ],
355
340
  },