@ottochain/sdk 2.4.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.
- package/dist/cjs/apps/compute/index.js +33 -0
- package/dist/cjs/apps/compute/state-machines/compute-rule110.js +164 -0
- package/dist/cjs/apps/compute/state-machines/index.js +9 -0
- package/dist/cjs/apps/contracts/index.js +1 -1
- package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +126 -148
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +153 -174
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
- package/dist/cjs/apps/corporate/state-machines/corp-board.js +415 -481
- package/dist/cjs/apps/corporate/state-machines/corp-entity.js +368 -440
- package/dist/cjs/apps/corporate/state-machines/corp-securities.js +532 -647
- package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +499 -603
- package/dist/cjs/apps/governance/index.js +7 -7
- package/dist/cjs/apps/governance/state-machines/dao-multisig.js +170 -209
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +161 -214
- package/dist/cjs/apps/governance/state-machines/dao-single.js +92 -92
- package/dist/cjs/apps/governance/state-machines/dao-token.js +169 -223
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +185 -217
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
- package/dist/cjs/apps/identity/constants.js +16 -24
- package/dist/cjs/apps/identity/index.js +1 -1
- package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +151 -169
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +89 -115
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
- package/dist/cjs/apps/index.js +4 -1
- package/dist/cjs/apps/lending/assets.js +41 -17
- package/dist/cjs/apps/lending/credit-scoring.js +4 -4
- package/dist/cjs/apps/lending/eligibility.js +9 -25
- package/dist/cjs/apps/lending/index.js +1 -1
- package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +177 -156
- package/dist/cjs/apps/markets/index.js +1 -1
- package/dist/cjs/apps/markets/state-machines/market-auction.js +115 -134
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +122 -137
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +158 -177
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +193 -227
- package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
- package/dist/cjs/apps/oracles/index.js +1 -1
- package/dist/cjs/apps/privacy/index.js +67 -0
- package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
- package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
- package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
- package/dist/cjs/apps/staked-pool/assets.js +103 -0
- package/dist/cjs/apps/staked-pool/base.js +498 -0
- package/dist/cjs/apps/staked-pool/consumer.js +55 -0
- package/dist/cjs/apps/staked-pool/index.js +83 -0
- package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
- package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
- package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
- package/dist/cjs/generated/google/protobuf/struct.js +1 -1
- package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +1 -1
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +1 -1
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +1 -1
- package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +1 -1
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +1 -1
- package/dist/cjs/generated/ottochain/v1/common.js +1 -1
- package/dist/cjs/generated/ottochain/v1/fiber.js +40 -2
- package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
- package/dist/cjs/generated/ottochain/v1/records.js +1 -1
- package/dist/cjs/index.js +20 -3
- package/dist/cjs/ottochain/genesis-manifest.js +6 -0
- package/dist/cjs/ottochain/metagraph-client.js +16 -8
- package/dist/cjs/ottochain/snapshot.js +2 -4
- package/dist/cjs/ottochain/transaction.js +10 -0
- package/dist/cjs/privacy/sealed-bid.js +85 -82
- package/dist/cjs/privacy/shield-app.js +32 -32
- package/dist/cjs/schema/effects.js +117 -1
- package/dist/cjs/schema/fiber-app.js +132 -3
- package/dist/cjs/schema/guard-lint.js +3 -12
- package/dist/cjs/schema/guards.js +38 -38
- package/dist/cjs/templates/asset-policy.js +190 -0
- package/dist/cjs/templates/index.js +86 -0
- package/dist/cjs/templates/machine.js +130 -0
- package/dist/cjs/templates/migration.js +39 -0
- package/dist/cjs/templates/state-shape.js +38 -0
- package/dist/cjs/validation.js +1 -3
- package/dist/esm/apps/compute/index.js +29 -0
- package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
- package/dist/esm/apps/compute/state-machines/index.js +5 -0
- package/dist/esm/apps/contracts/index.js +4 -4
- package/dist/esm/apps/contracts/state-machines/contract-agreement.js +128 -150
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +155 -176
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
- package/dist/esm/apps/corporate/index.js +2 -2
- package/dist/esm/apps/corporate/state-machines/corp-board.js +418 -484
- package/dist/esm/apps/corporate/state-machines/corp-entity.js +371 -443
- package/dist/esm/apps/corporate/state-machines/corp-securities.js +535 -650
- package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +502 -606
- package/dist/esm/apps/governance/index.js +10 -10
- package/dist/esm/apps/governance/state-machines/dao-multisig.js +172 -211
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +163 -216
- package/dist/esm/apps/governance/state-machines/dao-single.js +94 -94
- package/dist/esm/apps/governance/state-machines/dao-token.js +171 -225
- package/dist/esm/apps/governance/state-machines/governance-simple.js +187 -219
- package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
- package/dist/esm/apps/identity/constants.js +18 -26
- package/dist/esm/apps/identity/index.js +8 -8
- package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +153 -171
- package/dist/esm/apps/identity/state-machines/identity-registry.js +91 -117
- package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
- package/dist/esm/apps/index.js +9 -6
- package/dist/esm/apps/lending/assets.js +41 -17
- package/dist/esm/apps/lending/credit-scoring.js +6 -6
- package/dist/esm/apps/lending/eligibility.js +10 -26
- package/dist/esm/apps/lending/index.js +5 -5
- package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +178 -157
- package/dist/esm/apps/markets/index.js +5 -5
- package/dist/esm/apps/markets/state-machines/market-auction.js +117 -136
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +124 -139
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +160 -179
- package/dist/esm/apps/markets/state-machines/market-prediction.js +195 -229
- package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
- package/dist/esm/apps/oracles/index.js +3 -3
- package/dist/esm/apps/privacy/index.js +56 -0
- package/dist/esm/apps/privacy/state-machines/index.js +6 -0
- package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
- package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
- package/dist/esm/apps/staked-pool/assets.js +91 -0
- package/dist/esm/apps/staked-pool/base.js +493 -0
- package/dist/esm/apps/staked-pool/consumer.js +49 -0
- package/dist/esm/apps/staked-pool/index.js +60 -0
- package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
- package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
- package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
- package/dist/esm/generated/google/protobuf/struct.js +1 -1
- package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +1 -1
- package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
- package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
- package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
- package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +1 -1
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +1 -1
- package/dist/esm/generated/ottochain/v1/common.js +1 -1
- package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
- package/dist/esm/generated/ottochain/v1/messages.js +1 -1
- package/dist/esm/generated/ottochain/v1/records.js +1 -1
- package/dist/esm/index.js +10 -4
- package/dist/esm/ottochain/genesis-manifest.js +6 -0
- package/dist/esm/ottochain/metagraph-client.js +16 -8
- package/dist/esm/ottochain/snapshot.js +2 -4
- package/dist/esm/ottochain/transaction.js +8 -0
- package/dist/esm/privacy/index.js +2 -2
- package/dist/esm/privacy/sealed-bid.js +87 -84
- package/dist/esm/privacy/shield-app.js +33 -33
- package/dist/esm/schema/effects.js +110 -0
- package/dist/esm/schema/fiber-app.js +127 -3
- package/dist/esm/schema/guard-lint.js +3 -12
- package/dist/esm/schema/guards.js +36 -37
- package/dist/esm/templates/asset-policy.js +182 -0
- package/dist/esm/templates/index.js +41 -0
- package/dist/esm/templates/machine.js +125 -0
- package/dist/esm/templates/migration.js +34 -0
- package/dist/esm/templates/state-shape.js +34 -0
- package/dist/esm/validation.js +1 -3
- package/dist/esm/zk/index.js +4 -4
- package/dist/types/apps/compute/index.d.ts +176 -0
- package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
- package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
- package/dist/types/apps/contracts/index.d.ts +14 -14
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +3 -3
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +3 -3
- package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
- package/dist/types/apps/corporate/index.d.ts +162 -162
- package/dist/types/apps/corporate/state-machines/corp-board.d.ts +88 -88
- package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +14 -14
- package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +18 -18
- package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +43 -43
- package/dist/types/apps/governance/index.d.ts +81 -81
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +16 -16
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +22 -22
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +21 -21
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +11 -11
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +4 -4
- package/dist/types/apps/identity/constants.d.ts +2 -2
- package/dist/types/apps/identity/index.d.ts +70 -70
- package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +11 -11
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +27 -27
- package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
- package/dist/types/apps/index.d.ts +9 -6
- package/dist/types/apps/lending/assets.d.ts +2 -2
- package/dist/types/apps/lending/credit-scoring.d.ts +5 -5
- package/dist/types/apps/lending/eligibility.d.ts +2 -2
- package/dist/types/apps/lending/index.d.ts +20 -12
- package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +15 -7
- package/dist/types/apps/markets/index.d.ts +76 -76
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +12 -12
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +19 -19
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +18 -18
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +15 -15
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +7 -7
- package/dist/types/apps/oracles/index.d.ts +1 -1
- package/dist/types/apps/privacy/index.d.ts +328 -0
- package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
- package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
- package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
- package/dist/types/apps/staked-pool/assets.d.ts +53 -0
- package/dist/types/apps/staked-pool/base.d.ts +80 -0
- package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
- package/dist/types/apps/staked-pool/index.d.ts +51 -0
- package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
- package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
- package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
- package/dist/types/generated/openapi.d.ts +13 -0
- package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
- package/dist/types/index.d.ts +3 -3
- package/dist/types/openapi.d.ts +4 -2
- package/dist/types/ottochain/genesis-manifest.d.ts +6 -0
- package/dist/types/ottochain/transaction.d.ts +9 -1
- package/dist/types/ottochain/types.d.ts +1 -1
- package/dist/types/privacy/index.d.ts +2 -2
- package/dist/types/privacy/sealed-bid.d.ts +9 -9
- package/dist/types/privacy/shield-app.d.ts +1 -1
- package/dist/types/schema/effects.d.ts +107 -0
- package/dist/types/schema/fiber-app.d.ts +281 -0
- package/dist/types/schema/guards.d.ts +12 -0
- package/dist/types/templates/asset-policy.d.ts +119 -0
- package/dist/types/templates/index.d.ts +26 -0
- package/dist/types/templates/machine.d.ts +139 -0
- package/dist/types/templates/migration.d.ts +34 -0
- package/dist/types/templates/state-shape.d.ts +30 -0
- package/dist/types/zk/index.d.ts +4 -4
- package/package.json +31 -13
|
@@ -31,13 +31,37 @@ export function behaviorBits(b) {
|
|
|
31
31
|
/** Common behavior presets (asset-model.md §2). */
|
|
32
32
|
export const TokenBehaviors = {
|
|
33
33
|
/** Non-transferable, non-divisible (bits 0). */
|
|
34
|
-
Soulbound: {
|
|
34
|
+
Soulbound: {
|
|
35
|
+
transferable: false,
|
|
36
|
+
splittable: false,
|
|
37
|
+
combinable: false,
|
|
38
|
+
expirable: false,
|
|
39
|
+
governable: false,
|
|
40
|
+
},
|
|
35
41
|
/** Transferable only (bits 16). */
|
|
36
|
-
NFT: {
|
|
42
|
+
NFT: {
|
|
43
|
+
transferable: true,
|
|
44
|
+
splittable: false,
|
|
45
|
+
combinable: false,
|
|
46
|
+
expirable: false,
|
|
47
|
+
governable: false,
|
|
48
|
+
},
|
|
37
49
|
/** Transferable + splittable + combinable (bits 28 = TSC). */
|
|
38
|
-
Fungible: {
|
|
50
|
+
Fungible: {
|
|
51
|
+
transferable: true,
|
|
52
|
+
splittable: true,
|
|
53
|
+
combinable: true,
|
|
54
|
+
expirable: false,
|
|
55
|
+
governable: false,
|
|
56
|
+
},
|
|
39
57
|
/** Fungible + governable (bits 29 = TSCG) — the default for a gated debt token. */
|
|
40
|
-
GovernedFungible: {
|
|
58
|
+
GovernedFungible: {
|
|
59
|
+
transferable: true,
|
|
60
|
+
splittable: true,
|
|
61
|
+
combinable: true,
|
|
62
|
+
expirable: false,
|
|
63
|
+
governable: true,
|
|
64
|
+
},
|
|
41
65
|
};
|
|
42
66
|
/** Publish an asset policy package version. asset-model.md §7. */
|
|
43
67
|
export function createAssetPolicyPayload(params) {
|
|
@@ -109,19 +133,19 @@ export function createAuthorizeComposePayload(params) {
|
|
|
109
133
|
* a custody Transfer into `AssetHolder.Fiber(escrow)`; release/liquidation is a Transfer out
|
|
110
134
|
* driven by the loan fiber's REPAID / LIQUIDATED transition (`_transferAsset`).
|
|
111
135
|
*/
|
|
112
|
-
export function collateralPolicy(name =
|
|
136
|
+
export function collateralPolicy(name = 'collateral-vault-v1.asset', version = '1.0.0') {
|
|
113
137
|
return {
|
|
114
138
|
name,
|
|
115
139
|
version,
|
|
116
140
|
behavior: { transferable: true, splittable: false, combinable: false, expirable: false, governable: true },
|
|
117
141
|
supply: { maxSupply: null, mintPolicy: null, burnPolicy: null, decimals: 0 },
|
|
118
142
|
morphisms: {
|
|
119
|
-
Transfer: { visibility:
|
|
120
|
-
Burn: { visibility:
|
|
121
|
-
Compose: { visibility:
|
|
143
|
+
Transfer: { visibility: 'Governed' },
|
|
144
|
+
Burn: { visibility: 'Disabled' },
|
|
145
|
+
Compose: { visibility: 'Disabled' },
|
|
122
146
|
},
|
|
123
147
|
stateShape: {},
|
|
124
|
-
metadata: { family:
|
|
148
|
+
metadata: { family: 'lending', role: 'collateral' },
|
|
125
149
|
};
|
|
126
150
|
}
|
|
127
151
|
/**
|
|
@@ -132,7 +156,7 @@ export function collateralPolicy(name = "collateral-vault-v1.asset", version = "
|
|
|
132
156
|
* @param mintGuard the origination guard (see `buildOriginationGuard`) — a `groth16_verify`
|
|
133
157
|
* expression bound to the pinned public lending rule.
|
|
134
158
|
*/
|
|
135
|
-
export function debtPolicy(mintGuard, name =
|
|
159
|
+
export function debtPolicy(mintGuard, name = 'loan-debt-v1.asset', version = '1.0.0') {
|
|
136
160
|
return {
|
|
137
161
|
name,
|
|
138
162
|
version,
|
|
@@ -143,15 +167,15 @@ export function debtPolicy(mintGuard, name = "loan-debt-v1.asset", version = "1.
|
|
|
143
167
|
mintPolicy: mintGuard,
|
|
144
168
|
// Repayment burns the debt; only the holder (borrower) may burn theirs. The asset context has
|
|
145
169
|
// no `event` key — bind to the verified `signers` (chain-derived from the op's proofs).
|
|
146
|
-
burnPolicy: { in: [{ var:
|
|
170
|
+
burnPolicy: { in: [{ var: 'holder.Wallet.address' }, { var: 'signers' }] },
|
|
147
171
|
decimals: 2,
|
|
148
172
|
},
|
|
149
173
|
morphisms: {
|
|
150
|
-
Transfer: { visibility:
|
|
151
|
-
Burn: { visibility:
|
|
174
|
+
Transfer: { visibility: 'Public' },
|
|
175
|
+
Burn: { visibility: 'Public' },
|
|
152
176
|
},
|
|
153
177
|
stateShape: {},
|
|
154
|
-
metadata: { family:
|
|
178
|
+
metadata: { family: 'lending', role: 'debt' },
|
|
155
179
|
};
|
|
156
180
|
}
|
|
157
181
|
// ---------------------------------------------------------------------------
|
|
@@ -165,7 +189,7 @@ export function debtPolicy(mintGuard, name = "loan-debt-v1.asset", version = "1.
|
|
|
165
189
|
export function lockCollateralOp(args) {
|
|
166
190
|
return createApplyMorphismPayload({
|
|
167
191
|
assetId: args.collateralAssetId,
|
|
168
|
-
kind:
|
|
192
|
+
kind: 'Transfer',
|
|
169
193
|
recipient: fiberHolder(args.escrowFiberId),
|
|
170
194
|
targetSequenceNumber: args.targetSequenceNumber,
|
|
171
195
|
});
|
|
@@ -187,7 +211,7 @@ export function mintPrincipalOp(args) {
|
|
|
187
211
|
export function repayBurnOp(args) {
|
|
188
212
|
return createApplyMorphismPayload({
|
|
189
213
|
assetId: args.debtAssetId,
|
|
190
|
-
kind:
|
|
214
|
+
kind: 'Burn',
|
|
191
215
|
targetSequenceNumber: args.targetSequenceNumber,
|
|
192
216
|
});
|
|
193
217
|
}
|
|
@@ -200,7 +224,7 @@ export function repayBurnOp(args) {
|
|
|
200
224
|
export function settleCollateralOp(args) {
|
|
201
225
|
return createApplyMorphismPayload({
|
|
202
226
|
assetId: args.collateralAssetId,
|
|
203
|
-
kind:
|
|
227
|
+
kind: 'Transfer',
|
|
204
228
|
recipient: walletHolder(args.recipient),
|
|
205
229
|
targetSequenceNumber: args.targetSequenceNumber,
|
|
206
230
|
});
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
* (the strongest form), have the SP1 rule additionally `schnorr_verify` the reputation issuer's
|
|
21
21
|
* signature over `(subject, score)` — see {@link reputationAuthorityClause}.
|
|
22
22
|
*/
|
|
23
|
-
import { DEFAULT_REPUTATION_CONFIG
|
|
24
|
-
import { lendingRule } from
|
|
23
|
+
import { DEFAULT_REPUTATION_CONFIG } from '../identity/index.js';
|
|
24
|
+
import { lendingRule } from './eligibility.js';
|
|
25
25
|
/**
|
|
26
26
|
* Derive an agent's credit score from their identity reputation attestations:
|
|
27
27
|
* `baseReputation + Σ attestation.delta`, floored at `minReputation`. This IS the integration point —
|
|
@@ -39,8 +39,8 @@ export function reputationScore(attestations, config = DEFAULT_REPUTATION_CONFIG
|
|
|
39
39
|
*/
|
|
40
40
|
export function reputationCreditRule(params) {
|
|
41
41
|
const base = lendingRule(params); // coverage, or {and:[coverage, creditScore floor]}
|
|
42
|
-
const subjectBound = {
|
|
43
|
-
const clauses =
|
|
42
|
+
const subjectBound = { '===': [{ var: 'subject' }, params.borrowerId] };
|
|
43
|
+
const clauses = 'and' in base ? base.and : [base];
|
|
44
44
|
return { and: [...clauses, subjectBound] };
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
@@ -74,8 +74,8 @@ export function reputationAuthorityClause(authorityPubKey) {
|
|
|
74
74
|
return {
|
|
75
75
|
schnorr_verify: [
|
|
76
76
|
authorityPubKey, // the reputation authority's public key — PINNED literal, not witness-supplied
|
|
77
|
-
{ var:
|
|
78
|
-
{ var:
|
|
77
|
+
{ var: 'scoreCommit' }, // the signed message: a commitment over (subject, creditScore)
|
|
78
|
+
{ var: 'repSig' }, // the authority's signature over scoreCommit
|
|
79
79
|
],
|
|
80
80
|
};
|
|
81
81
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* `exprHash == logicHash` pins exactly WHICH rule was proven. See `src/zk` and
|
|
9
9
|
* `/home/euler/repos/ottochain/docs/proposals/asset-model.md` §8 (ZkVerify-gated morphisms).
|
|
10
10
|
*/
|
|
11
|
-
import { exprHash, KECCAK_TRUE } from
|
|
11
|
+
import { exprHash, KECCAK_TRUE } from '../../zk/index.js';
|
|
12
12
|
/**
|
|
13
13
|
* The PUBLIC lending rule, as a JSON-Logic predicate over the borrower's PRIVATE data context
|
|
14
14
|
* `{ collateralValue, creditScore }`. Evaluates to `true` iff the borrower is eligible:
|
|
@@ -23,19 +23,13 @@ import { exprHash, KECCAK_TRUE } from "../../zk/index.js";
|
|
|
23
23
|
*/
|
|
24
24
|
export function lendingRule(params) {
|
|
25
25
|
const coverage = {
|
|
26
|
-
|
|
27
|
-
{ "*": [{ var: "collateralValue" }, 100] },
|
|
28
|
-
params.loanAmount * params.collateralRatioPct,
|
|
29
|
-
],
|
|
26
|
+
'>=': [{ '*': [{ var: 'collateralValue' }, 100] }, params.loanAmount * params.collateralRatioPct],
|
|
30
27
|
};
|
|
31
28
|
if (params.minCreditScore === undefined) {
|
|
32
29
|
return coverage;
|
|
33
30
|
}
|
|
34
31
|
return {
|
|
35
|
-
and: [
|
|
36
|
-
coverage,
|
|
37
|
-
{ ">=": [{ var: "creditScore" }, params.minCreditScore] },
|
|
38
|
-
],
|
|
32
|
+
and: [coverage, { '>=': [{ var: 'creditScore' }, params.minCreditScore] }],
|
|
39
33
|
};
|
|
40
34
|
}
|
|
41
35
|
/**
|
|
@@ -70,32 +64,22 @@ export function pinLendingRule(params, vkey) {
|
|
|
70
64
|
* policy uses it directly as the proof-gated `mintPolicy`.
|
|
71
65
|
*/
|
|
72
66
|
export function buildOriginationGuard(refs = {}) {
|
|
73
|
-
const vkeyVar = refs.vkeyVar ??
|
|
74
|
-
const logicHashVar = refs.logicHashVar ??
|
|
75
|
-
const keccakTrueVar = refs.keccakTrueVar ??
|
|
67
|
+
const vkeyVar = refs.vkeyVar ?? 'state.lendingRuleVKey';
|
|
68
|
+
const logicHashVar = refs.logicHashVar ?? 'state.lendingRuleLogicHash';
|
|
69
|
+
const keccakTrueVar = refs.keccakTrueVar ?? 'state.keccakTrue';
|
|
76
70
|
return {
|
|
77
71
|
and: [
|
|
78
72
|
{
|
|
79
|
-
groth16_verify: [
|
|
80
|
-
{ var: vkeyVar },
|
|
81
|
-
{ var: "witness.publicValues" },
|
|
82
|
-
{ var: "witness.proof" },
|
|
83
|
-
],
|
|
73
|
+
groth16_verify: [{ var: vkeyVar }, { var: 'witness.publicValues' }, { var: 'witness.proof' }],
|
|
84
74
|
},
|
|
85
75
|
{
|
|
86
|
-
|
|
87
|
-
{ cat: ["0x", { substr: [{ var: "witness.publicValues" }, 2, 64] }] },
|
|
88
|
-
{ var: logicHashVar },
|
|
89
|
-
],
|
|
76
|
+
'===': [{ cat: ['0x', { substr: [{ var: 'witness.publicValues' }, 2, 64] }] }, { var: logicHashVar }],
|
|
90
77
|
},
|
|
91
78
|
{
|
|
92
|
-
|
|
93
|
-
{ cat: ["0x", { substr: [{ var: "witness.publicValues" }, 130, 64] }] },
|
|
94
|
-
{ var: keccakTrueVar },
|
|
95
|
-
],
|
|
79
|
+
'===': [{ cat: ['0x', { substr: [{ var: 'witness.publicValues' }, 130, 64] }] }, { var: keccakTrueVar }],
|
|
96
80
|
},
|
|
97
81
|
{
|
|
98
|
-
|
|
82
|
+
'===': [{ substr: [{ var: 'witness.publicValues' }, 256, 2] }, '01'],
|
|
99
83
|
},
|
|
100
84
|
],
|
|
101
85
|
};
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
*
|
|
35
35
|
* @packageDocumentation
|
|
36
36
|
*/
|
|
37
|
-
import { lendingZkLoanDef } from
|
|
37
|
+
import { lendingZkLoanDef } from './state-machines/index.js';
|
|
38
38
|
export { lendingZkLoanDef };
|
|
39
39
|
/** All lending state machine definitions. */
|
|
40
40
|
export const LENDING_DEFINITIONS = {
|
|
@@ -44,17 +44,17 @@ export const LENDING_DEFINITIONS = {
|
|
|
44
44
|
* Get a lending state machine definition by type.
|
|
45
45
|
* @param type - 'zkLoan' (default: 'zkLoan')
|
|
46
46
|
*/
|
|
47
|
-
export function getLendingDefinition(type =
|
|
47
|
+
export function getLendingDefinition(type = 'zkLoan') {
|
|
48
48
|
return LENDING_DEFINITIONS[type];
|
|
49
49
|
}
|
|
50
50
|
// ---------------------------------------------------------------------------
|
|
51
51
|
// Eligibility-proof model (the semi-private gate)
|
|
52
52
|
// ---------------------------------------------------------------------------
|
|
53
|
-
export { lendingRule, pinLendingRule, buildOriginationGuard, buildEligibilityWitness, } from
|
|
53
|
+
export { lendingRule, pinLendingRule, buildOriginationGuard, buildEligibilityWitness, } from './eligibility.js';
|
|
54
54
|
// ---------------------------------------------------------------------------
|
|
55
55
|
// Credit scoring via the identity + reputation app (the creditScore IS reputation)
|
|
56
56
|
// ---------------------------------------------------------------------------
|
|
57
|
-
export { reputationScore, reputationCreditRule, buildCreditDataContext, reputationAuthorityClause, } from
|
|
57
|
+
export { reputationScore, reputationCreditRule, buildCreditDataContext, reputationAuthorityClause, } from './credit-scoring.js';
|
|
58
58
|
// ---------------------------------------------------------------------------
|
|
59
59
|
// Asset-subsystem integration (collateral, debt/principal, repayment morphisms)
|
|
60
60
|
// ---------------------------------------------------------------------------
|
|
@@ -66,4 +66,4 @@ createAssetPolicyPayload, createMintAssetPayload, createApplyMorphismPayload, cr
|
|
|
66
66
|
// loan policy builders
|
|
67
67
|
collateralPolicy, debtPolicy,
|
|
68
68
|
// lifecycle → morphism drivers
|
|
69
|
-
lockCollateralOp, mintPrincipalOp, repayBurnOp, settleCollateralOp, } from
|
|
69
|
+
lockCollateralOp, mintPrincipalOp, repayBurnOp, settleCollateralOp, } from './assets.js';
|