@claw-network/protocol 0.1.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/contracts/events.d.ts +238 -0
- package/dist/contracts/events.d.ts.map +1 -0
- package/dist/contracts/events.js +499 -0
- package/dist/contracts/events.js.map +1 -0
- package/dist/contracts/index.d.ts +5 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +5 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/state.d.ts +16 -0
- package/dist/contracts/state.d.ts.map +1 -0
- package/dist/contracts/state.js +399 -0
- package/dist/contracts/state.js.map +1 -0
- package/dist/contracts/store.d.ts +19 -0
- package/dist/contracts/store.d.ts.map +1 -0
- package/dist/contracts/store.js +22 -0
- package/dist/contracts/store.js.map +1 -0
- package/dist/contracts/types.d.ts +81 -0
- package/dist/contracts/types.d.ts.map +1 -0
- package/dist/contracts/types.js +2 -0
- package/dist/contracts/types.js.map +1 -0
- package/dist/dao/events.d.ts +191 -0
- package/dist/dao/events.d.ts.map +1 -0
- package/dist/dao/events.js +294 -0
- package/dist/dao/events.js.map +1 -0
- package/dist/dao/index.d.ts +6 -0
- package/dist/dao/index.d.ts.map +1 -0
- package/dist/dao/index.js +6 -0
- package/dist/dao/index.js.map +1 -0
- package/dist/dao/state.d.ts +44 -0
- package/dist/dao/state.d.ts.map +1 -0
- package/dist/dao/state.js +373 -0
- package/dist/dao/state.js.map +1 -0
- package/dist/dao/store.d.ts +47 -0
- package/dist/dao/store.d.ts.map +1 -0
- package/dist/dao/store.js +52 -0
- package/dist/dao/store.js.map +1 -0
- package/dist/dao/types.d.ts +149 -0
- package/dist/dao/types.d.ts.map +1 -0
- package/dist/dao/types.js +95 -0
- package/dist/dao/types.js.map +1 -0
- package/dist/dao/voting.d.ts +56 -0
- package/dist/dao/voting.d.ts.map +1 -0
- package/dist/dao/voting.js +129 -0
- package/dist/dao/voting.js.map +1 -0
- package/dist/identity/document.d.ts +35 -0
- package/dist/identity/document.d.ts.map +1 -0
- package/dist/identity/document.js +84 -0
- package/dist/identity/document.js.map +1 -0
- package/dist/identity/events.d.ts +96 -0
- package/dist/identity/events.d.ts.map +1 -0
- package/dist/identity/events.js +165 -0
- package/dist/identity/events.js.map +1 -0
- package/dist/identity/index.d.ts +4 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +4 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/resolver.d.ts +10 -0
- package/dist/identity/resolver.d.ts.map +1 -0
- package/dist/identity/resolver.js +10 -0
- package/dist/identity/resolver.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/markets/broadcast.d.ts +5 -0
- package/dist/markets/broadcast.d.ts.map +1 -0
- package/dist/markets/broadcast.js +9 -0
- package/dist/markets/broadcast.js.map +1 -0
- package/dist/markets/capability.d.ts +129 -0
- package/dist/markets/capability.d.ts.map +1 -0
- package/dist/markets/capability.js +262 -0
- package/dist/markets/capability.js.map +1 -0
- package/dist/markets/events.d.ts +448 -0
- package/dist/markets/events.d.ts.map +1 -0
- package/dist/markets/events.js +1074 -0
- package/dist/markets/events.js.map +1 -0
- package/dist/markets/index.d.ts +12 -0
- package/dist/markets/index.d.ts.map +1 -0
- package/dist/markets/index.js +12 -0
- package/dist/markets/index.js.map +1 -0
- package/dist/markets/info-flow.d.ts +144 -0
- package/dist/markets/info-flow.d.ts.map +1 -0
- package/dist/markets/info-flow.js +257 -0
- package/dist/markets/info-flow.js.map +1 -0
- package/dist/markets/info-store.d.ts +80 -0
- package/dist/markets/info-store.d.ts.map +1 -0
- package/dist/markets/info-store.js +384 -0
- package/dist/markets/info-store.js.map +1 -0
- package/dist/markets/info.d.ts +118 -0
- package/dist/markets/info.d.ts.map +1 -0
- package/dist/markets/info.js +123 -0
- package/dist/markets/info.js.map +1 -0
- package/dist/markets/search.d.ts +70 -0
- package/dist/markets/search.d.ts.map +1 -0
- package/dist/markets/search.js +659 -0
- package/dist/markets/search.js.map +1 -0
- package/dist/markets/state.d.ts +30 -0
- package/dist/markets/state.d.ts.map +1 -0
- package/dist/markets/state.js +610 -0
- package/dist/markets/state.js.map +1 -0
- package/dist/markets/store.d.ts +43 -0
- package/dist/markets/store.d.ts.map +1 -0
- package/dist/markets/store.js +460 -0
- package/dist/markets/store.js.map +1 -0
- package/dist/markets/task.d.ts +96 -0
- package/dist/markets/task.d.ts.map +1 -0
- package/dist/markets/task.js +286 -0
- package/dist/markets/task.js.map +1 -0
- package/dist/markets/types.d.ts +340 -0
- package/dist/markets/types.d.ts.map +1 -0
- package/dist/markets/types.js +88 -0
- package/dist/markets/types.js.map +1 -0
- package/dist/p2p/codec.d.ts +42 -0
- package/dist/p2p/codec.d.ts.map +1 -0
- package/dist/p2p/codec.js +187 -0
- package/dist/p2p/codec.js.map +1 -0
- package/dist/p2p/flatbuffers.d.ts +57 -0
- package/dist/p2p/flatbuffers.d.ts.map +1 -0
- package/dist/p2p/flatbuffers.js +418 -0
- package/dist/p2p/flatbuffers.js.map +1 -0
- package/dist/p2p/index.d.ts +3 -0
- package/dist/p2p/index.d.ts.map +1 -0
- package/dist/p2p/index.js +3 -0
- package/dist/p2p/index.js.map +1 -0
- package/dist/p2p/types.d.ts +79 -0
- package/dist/p2p/types.d.ts.map +1 -0
- package/dist/p2p/types.js +15 -0
- package/dist/p2p/types.js.map +1 -0
- package/dist/reputation/anti-cheat.d.ts +24 -0
- package/dist/reputation/anti-cheat.d.ts.map +1 -0
- package/dist/reputation/anti-cheat.js +109 -0
- package/dist/reputation/anti-cheat.js.map +1 -0
- package/dist/reputation/events.d.ts +29 -0
- package/dist/reputation/events.d.ts.map +1 -0
- package/dist/reputation/events.js +122 -0
- package/dist/reputation/events.js.map +1 -0
- package/dist/reputation/index.d.ts +6 -0
- package/dist/reputation/index.d.ts.map +1 -0
- package/dist/reputation/index.js +6 -0
- package/dist/reputation/index.js.map +1 -0
- package/dist/reputation/scoring.d.ts +40 -0
- package/dist/reputation/scoring.d.ts.map +1 -0
- package/dist/reputation/scoring.js +114 -0
- package/dist/reputation/scoring.js.map +1 -0
- package/dist/reputation/state.d.ts +48 -0
- package/dist/reputation/state.d.ts.map +1 -0
- package/dist/reputation/state.js +135 -0
- package/dist/reputation/state.js.map +1 -0
- package/dist/reputation/store.d.ts +23 -0
- package/dist/reputation/store.d.ts.map +1 -0
- package/dist/reputation/store.js +33 -0
- package/dist/reputation/store.js.map +1 -0
- package/dist/wallet/events.d.ts +121 -0
- package/dist/wallet/events.d.ts.map +1 -0
- package/dist/wallet/events.js +175 -0
- package/dist/wallet/events.js.map +1 -0
- package/dist/wallet/finality.d.ts +4 -0
- package/dist/wallet/finality.d.ts.map +1 -0
- package/dist/wallet/finality.js +32 -0
- package/dist/wallet/finality.js.map +1 -0
- package/dist/wallet/index.d.ts +4 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +4 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/state.d.ts +32 -0
- package/dist/wallet/state.d.ts.map +1 -0
- package/dist/wallet/state.js +170 -0
- package/dist/wallet/state.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DAO Governance Module — Domain Types
|
|
3
|
+
*
|
|
4
|
+
* Implements token-weighted voting with sqrt, reputation multiplier,
|
|
5
|
+
* lockup multiplier, and delegation as specified in docs/DAO.md.
|
|
6
|
+
*/
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Proposal Types
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
export const PROPOSAL_TYPES = [
|
|
11
|
+
'parameter_change',
|
|
12
|
+
'treasury_spend',
|
|
13
|
+
'protocol_upgrade',
|
|
14
|
+
'emergency',
|
|
15
|
+
'signal',
|
|
16
|
+
];
|
|
17
|
+
export function isProposalType(value) {
|
|
18
|
+
return PROPOSAL_TYPES.includes(value);
|
|
19
|
+
}
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Proposal Status
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
export const PROPOSAL_STATUSES = [
|
|
24
|
+
'draft',
|
|
25
|
+
'discussion',
|
|
26
|
+
'voting',
|
|
27
|
+
'passed',
|
|
28
|
+
'rejected',
|
|
29
|
+
'queued',
|
|
30
|
+
'executed',
|
|
31
|
+
'expired',
|
|
32
|
+
'vetoed',
|
|
33
|
+
];
|
|
34
|
+
export function isProposalStatus(value) {
|
|
35
|
+
return PROPOSAL_STATUSES.includes(value);
|
|
36
|
+
}
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Vote
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
export const VOTE_OPTIONS = ['for', 'against', 'abstain'];
|
|
41
|
+
export function isVoteOption(value) {
|
|
42
|
+
return VOTE_OPTIONS.includes(value);
|
|
43
|
+
}
|
|
44
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
45
|
+
export const PROPOSAL_THRESHOLDS = {
|
|
46
|
+
parameter_change: {
|
|
47
|
+
createThreshold: 0.001,
|
|
48
|
+
passThreshold: 0.5,
|
|
49
|
+
quorum: 0.04,
|
|
50
|
+
discussionPeriod: 2 * DAY_MS,
|
|
51
|
+
votingPeriod: 3 * DAY_MS,
|
|
52
|
+
timelockDelay: 1 * DAY_MS,
|
|
53
|
+
},
|
|
54
|
+
treasury_spend: {
|
|
55
|
+
createThreshold: 0.005,
|
|
56
|
+
passThreshold: 0.5,
|
|
57
|
+
quorum: 0.04,
|
|
58
|
+
discussionPeriod: 2 * DAY_MS,
|
|
59
|
+
votingPeriod: 3 * DAY_MS,
|
|
60
|
+
timelockDelay: 1 * DAY_MS,
|
|
61
|
+
},
|
|
62
|
+
protocol_upgrade: {
|
|
63
|
+
createThreshold: 0.02,
|
|
64
|
+
passThreshold: 0.66,
|
|
65
|
+
quorum: 0.15,
|
|
66
|
+
discussionPeriod: 7 * DAY_MS,
|
|
67
|
+
votingPeriod: 7 * DAY_MS,
|
|
68
|
+
timelockDelay: 14 * DAY_MS,
|
|
69
|
+
},
|
|
70
|
+
emergency: {
|
|
71
|
+
createThreshold: 0,
|
|
72
|
+
passThreshold: 0,
|
|
73
|
+
quorum: 0,
|
|
74
|
+
discussionPeriod: 0,
|
|
75
|
+
votingPeriod: 0,
|
|
76
|
+
timelockDelay: 0,
|
|
77
|
+
},
|
|
78
|
+
signal: {
|
|
79
|
+
createThreshold: 0.0001,
|
|
80
|
+
passThreshold: 0,
|
|
81
|
+
quorum: 0.01,
|
|
82
|
+
discussionPeriod: 1 * DAY_MS,
|
|
83
|
+
votingPeriod: 3 * DAY_MS,
|
|
84
|
+
timelockDelay: 0,
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
export const DEFAULT_GOVERNANCE_PARAMS = {
|
|
88
|
+
proposalThreshold: 0.001,
|
|
89
|
+
quorum: 0.04,
|
|
90
|
+
votingDelay: 2 * DAY_MS,
|
|
91
|
+
votingPeriod: 3 * DAY_MS,
|
|
92
|
+
timelockDelay: 1 * DAY_MS,
|
|
93
|
+
passThreshold: 0.5,
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dao/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,WAAW;IACX,QAAQ;CACA,CAAC;AAIX,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAQ,cAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,UAAU;IACV,SAAS;IACT,QAAQ;CACA,CAAC;AAIX,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AA8CD,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAInE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAQ,YAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAmID,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,MAAM,mBAAmB,GAA4C;IAC1E,gBAAgB,EAAE;QAChB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,GAAG;QAClB,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,CAAC,GAAG,MAAM;QAC5B,YAAY,EAAE,CAAC,GAAG,MAAM;QACxB,aAAa,EAAE,CAAC,GAAG,MAAM;KAC1B;IACD,cAAc,EAAE;QACd,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,GAAG;QAClB,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,CAAC,GAAG,MAAM;QAC5B,YAAY,EAAE,CAAC,GAAG,MAAM;QACxB,aAAa,EAAE,CAAC,GAAG,MAAM;KAC1B;IACD,gBAAgB,EAAE;QAChB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,CAAC,GAAG,MAAM;QAC5B,YAAY,EAAE,CAAC,GAAG,MAAM;QACxB,aAAa,EAAE,EAAE,GAAG,MAAM;KAC3B;IACD,SAAS,EAAE;QACT,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC;QACT,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;KACjB;IACD,MAAM,EAAE;QACN,eAAe,EAAE,MAAM;QACvB,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,CAAC,GAAG,MAAM;QAC5B,YAAY,EAAE,CAAC,GAAG,MAAM;QACxB,aAAa,EAAE,CAAC;KACjB;CACF,CAAC;AAeF,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD,iBAAiB,EAAE,KAAK;IACxB,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,CAAC,GAAG,MAAM;IACvB,YAAY,EAAE,CAAC,GAAG,MAAM;IACxB,aAAa,EAAE,CAAC,GAAG,MAAM;IACzB,aAAa,EAAE,GAAG;CACnB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DAO Governance — Voting Power Calculation
|
|
3
|
+
*
|
|
4
|
+
* Formula: totalPower = (sqrt(tokens) + sqrt(lockedTokens) * (lockupMult-1)) * reputationMult + delegatedPower
|
|
5
|
+
*
|
|
6
|
+
* - Token power uses square root to reduce whale dominance
|
|
7
|
+
* - Reputation multiplier: 1.0 to 2.0 based on score (0..1000)
|
|
8
|
+
* - Lockup multiplier: 1.0 to 3.0 based on lock duration (0..4 years)
|
|
9
|
+
* - Delegation: delegated power is added directly
|
|
10
|
+
*/
|
|
11
|
+
import type { VotingPower, Delegation, ProposalType } from './types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Calculate the square-root-based token power.
|
|
14
|
+
* Uses integer tokens (bigint string) and returns a floating-point number.
|
|
15
|
+
*/
|
|
16
|
+
export declare function tokenVotingPower(tokenBalance: string): number;
|
|
17
|
+
/**
|
|
18
|
+
* Reputation multiplier: linearly scales from 1.0 (score 0) to 2.0 (score 1000).
|
|
19
|
+
*/
|
|
20
|
+
export declare function reputationMultiplier(reputationScore: number): number;
|
|
21
|
+
/**
|
|
22
|
+
* Lockup multiplier: linearly scales from 1.0 (no lockup) to 3.0 (4 years).
|
|
23
|
+
* @param lockupDurationMs lockup duration in milliseconds
|
|
24
|
+
*/
|
|
25
|
+
export declare function lockupMultiplier(lockupDurationMs: number): number;
|
|
26
|
+
/**
|
|
27
|
+
* Calculate full voting power for an agent.
|
|
28
|
+
*/
|
|
29
|
+
export declare function calculateVotingPower(opts: {
|
|
30
|
+
tokenBalance: string;
|
|
31
|
+
lockedTokens: string;
|
|
32
|
+
lockupDurationMs: number;
|
|
33
|
+
reputationScore: number;
|
|
34
|
+
delegatedPower: number;
|
|
35
|
+
}): VotingPower;
|
|
36
|
+
/**
|
|
37
|
+
* Whether a delegation matches a given proposal type.
|
|
38
|
+
*/
|
|
39
|
+
export declare function delegationMatchesScope(delegation: Delegation, proposalType: ProposalType): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Calculate effective voting power considering delegations.
|
|
42
|
+
*/
|
|
43
|
+
export declare function calculateEffectiveVotingPower(opts: {
|
|
44
|
+
ownPower: number;
|
|
45
|
+
outgoingDelegations: Delegation[];
|
|
46
|
+
incomingDelegations: Array<{
|
|
47
|
+
delegation: Delegation;
|
|
48
|
+
delegatorPower: number;
|
|
49
|
+
}>;
|
|
50
|
+
proposalType: ProposalType;
|
|
51
|
+
}): number;
|
|
52
|
+
/**
|
|
53
|
+
* Detect circular delegation: A→B→A.
|
|
54
|
+
*/
|
|
55
|
+
export declare function hasCircularDelegation(delegator: string, delegate: string, delegations: Delegation[]): boolean;
|
|
56
|
+
//# sourceMappingURL=voting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voting.d.ts","sourceRoot":"","sources":["../../src/dao/voting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoBxE;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAOpE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,WAAW,CAiBd;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,GACzB,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,UAAU,EAAE,CAAC;IAClC,mBAAmB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,MAAM,CAgBT;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,UAAU,EAAE,GACxB,OAAO,CAcT"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DAO Governance — Voting Power Calculation
|
|
3
|
+
*
|
|
4
|
+
* Formula: totalPower = (sqrt(tokens) + sqrt(lockedTokens) * (lockupMult-1)) * reputationMult + delegatedPower
|
|
5
|
+
*
|
|
6
|
+
* - Token power uses square root to reduce whale dominance
|
|
7
|
+
* - Reputation multiplier: 1.0 to 2.0 based on score (0..1000)
|
|
8
|
+
* - Lockup multiplier: 1.0 to 3.0 based on lock duration (0..4 years)
|
|
9
|
+
* - Delegation: delegated power is added directly
|
|
10
|
+
*/
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Constants
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
const MAX_REPUTATION_SCORE = 1000;
|
|
15
|
+
const MAX_REPUTATION_MULTIPLIER = 2.0;
|
|
16
|
+
const MIN_REPUTATION_MULTIPLIER = 1.0;
|
|
17
|
+
const MAX_LOCKUP_YEARS = 4;
|
|
18
|
+
const MAX_LOCKUP_MULTIPLIER = 3.0;
|
|
19
|
+
const MIN_LOCKUP_MULTIPLIER = 1.0;
|
|
20
|
+
const YEAR_MS = 365.25 * 24 * 60 * 60 * 1000;
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Voting Power Calculation
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
/**
|
|
25
|
+
* Calculate the square-root-based token power.
|
|
26
|
+
* Uses integer tokens (bigint string) and returns a floating-point number.
|
|
27
|
+
*/
|
|
28
|
+
export function tokenVotingPower(tokenBalance) {
|
|
29
|
+
const tokens = Number(BigInt(tokenBalance));
|
|
30
|
+
if (tokens <= 0)
|
|
31
|
+
return 0;
|
|
32
|
+
return Math.sqrt(tokens);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Reputation multiplier: linearly scales from 1.0 (score 0) to 2.0 (score 1000).
|
|
36
|
+
*/
|
|
37
|
+
export function reputationMultiplier(reputationScore) {
|
|
38
|
+
const clamped = Math.max(0, Math.min(MAX_REPUTATION_SCORE, reputationScore));
|
|
39
|
+
return (MIN_REPUTATION_MULTIPLIER +
|
|
40
|
+
(MAX_REPUTATION_MULTIPLIER - MIN_REPUTATION_MULTIPLIER) *
|
|
41
|
+
(clamped / MAX_REPUTATION_SCORE));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Lockup multiplier: linearly scales from 1.0 (no lockup) to 3.0 (4 years).
|
|
45
|
+
* @param lockupDurationMs lockup duration in milliseconds
|
|
46
|
+
*/
|
|
47
|
+
export function lockupMultiplier(lockupDurationMs) {
|
|
48
|
+
if (lockupDurationMs <= 0)
|
|
49
|
+
return MIN_LOCKUP_MULTIPLIER;
|
|
50
|
+
const years = Math.min(lockupDurationMs / YEAR_MS, MAX_LOCKUP_YEARS);
|
|
51
|
+
return (MIN_LOCKUP_MULTIPLIER +
|
|
52
|
+
(MAX_LOCKUP_MULTIPLIER - MIN_LOCKUP_MULTIPLIER) * (years / MAX_LOCKUP_YEARS));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Calculate full voting power for an agent.
|
|
56
|
+
*/
|
|
57
|
+
export function calculateVotingPower(opts) {
|
|
58
|
+
const tokenPwr = tokenVotingPower(opts.tokenBalance);
|
|
59
|
+
const lockedPwr = tokenVotingPower(opts.lockedTokens);
|
|
60
|
+
const lockMul = lockupMultiplier(opts.lockupDurationMs);
|
|
61
|
+
const repMul = reputationMultiplier(opts.reputationScore);
|
|
62
|
+
// (sqrt(tokens) + sqrt(lockedTokens) * (lockupMult - 1)) * reputationMult + delegated
|
|
63
|
+
const basePower = (tokenPwr + lockedPwr * (lockMul - 1)) * repMul;
|
|
64
|
+
const totalPower = basePower + opts.delegatedPower;
|
|
65
|
+
return {
|
|
66
|
+
tokenPower: tokenPwr,
|
|
67
|
+
lockupMultiplier: lockMul,
|
|
68
|
+
reputationMultiplier: repMul,
|
|
69
|
+
delegatedPower: opts.delegatedPower,
|
|
70
|
+
totalPower,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Delegation Helpers
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
/**
|
|
77
|
+
* Whether a delegation matches a given proposal type.
|
|
78
|
+
*/
|
|
79
|
+
export function delegationMatchesScope(delegation, proposalType) {
|
|
80
|
+
if (delegation.revokedAt !== undefined)
|
|
81
|
+
return false;
|
|
82
|
+
if (delegation.expiresAt !== undefined && Date.now() > delegation.expiresAt)
|
|
83
|
+
return false;
|
|
84
|
+
const scope = delegation.scope;
|
|
85
|
+
if (scope.all)
|
|
86
|
+
return true;
|
|
87
|
+
if (scope.proposalTypes && scope.proposalTypes.includes(proposalType))
|
|
88
|
+
return true;
|
|
89
|
+
// topics are not matched against proposal type directly
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Calculate effective voting power considering delegations.
|
|
94
|
+
*/
|
|
95
|
+
export function calculateEffectiveVotingPower(opts) {
|
|
96
|
+
let delegatedOut = 0;
|
|
97
|
+
for (const d of opts.outgoingDelegations) {
|
|
98
|
+
if (delegationMatchesScope(d, opts.proposalType)) {
|
|
99
|
+
delegatedOut += (opts.ownPower * d.percentage) / 100;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
let delegatedIn = 0;
|
|
103
|
+
for (const { delegation, delegatorPower } of opts.incomingDelegations) {
|
|
104
|
+
if (delegationMatchesScope(delegation, opts.proposalType)) {
|
|
105
|
+
delegatedIn += (delegatorPower * delegation.percentage) / 100;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return opts.ownPower - delegatedOut + delegatedIn;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Detect circular delegation: A→B→A.
|
|
112
|
+
*/
|
|
113
|
+
export function hasCircularDelegation(delegator, delegate, delegations) {
|
|
114
|
+
const visited = new Set();
|
|
115
|
+
let current = delegate;
|
|
116
|
+
while (current) {
|
|
117
|
+
if (current === delegator)
|
|
118
|
+
return true;
|
|
119
|
+
if (visited.has(current))
|
|
120
|
+
return false;
|
|
121
|
+
visited.add(current);
|
|
122
|
+
const next = delegations.find((d) => d.delegator === current && !d.revokedAt);
|
|
123
|
+
if (!next)
|
|
124
|
+
return false;
|
|
125
|
+
current = next.delegate;
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=voting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voting.js","sourceRoot":"","sources":["../../src/dao/voting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface VerificationMethod {
|
|
2
|
+
id: string;
|
|
3
|
+
type: 'Ed25519VerificationKey2020';
|
|
4
|
+
controller: string;
|
|
5
|
+
publicKeyMultibase: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ServiceEndpoint {
|
|
8
|
+
id: string;
|
|
9
|
+
type: string;
|
|
10
|
+
serviceEndpoint: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ClawDIDDocument {
|
|
13
|
+
id: string;
|
|
14
|
+
verificationMethod: VerificationMethod[];
|
|
15
|
+
authentication: string[];
|
|
16
|
+
assertionMethod: string[];
|
|
17
|
+
keyAgreement: string[];
|
|
18
|
+
service: ServiceEndpoint[];
|
|
19
|
+
alsoKnownAs: string[];
|
|
20
|
+
}
|
|
21
|
+
export interface CreateDIDDocumentOptions {
|
|
22
|
+
id?: string;
|
|
23
|
+
publicKey: Uint8Array;
|
|
24
|
+
alsoKnownAs?: string[];
|
|
25
|
+
service?: ServiceEndpoint[];
|
|
26
|
+
}
|
|
27
|
+
export declare function createDIDDocument(options: CreateDIDDocumentOptions): ClawDIDDocument;
|
|
28
|
+
export declare function getPrimaryPublicKey(document: ClawDIDDocument): Uint8Array | null;
|
|
29
|
+
export declare function validateDIDDocument(document: ClawDIDDocument): {
|
|
30
|
+
valid: boolean;
|
|
31
|
+
errors: string[];
|
|
32
|
+
};
|
|
33
|
+
export declare function didFromDocument(document: ClawDIDDocument): string;
|
|
34
|
+
export declare function publicKeyFromDocument(document: ClawDIDDocument): Uint8Array;
|
|
35
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/identity/document.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,4BAA4B,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,eAAe,CAmBpF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,UAAU,GAAG,IAAI,CAchF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmCnG;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEjE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,UAAU,CAK3E"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { didFromPublicKey, publicKeyFromDid } from '@claw-network/core/identity';
|
|
2
|
+
import { multibaseDecode, multibaseEncode } from '@claw-network/core/encoding';
|
|
3
|
+
export function createDIDDocument(options) {
|
|
4
|
+
const did = options.id ?? didFromPublicKey(options.publicKey);
|
|
5
|
+
const keyId = `${did}#key-1`;
|
|
6
|
+
const verificationMethod = {
|
|
7
|
+
id: keyId,
|
|
8
|
+
type: 'Ed25519VerificationKey2020',
|
|
9
|
+
controller: did,
|
|
10
|
+
publicKeyMultibase: multibaseEncode(options.publicKey),
|
|
11
|
+
};
|
|
12
|
+
return {
|
|
13
|
+
id: did,
|
|
14
|
+
verificationMethod: [verificationMethod],
|
|
15
|
+
authentication: [keyId],
|
|
16
|
+
assertionMethod: [keyId],
|
|
17
|
+
keyAgreement: [],
|
|
18
|
+
service: options.service ?? [],
|
|
19
|
+
alsoKnownAs: options.alsoKnownAs ?? [],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function getPrimaryPublicKey(document) {
|
|
23
|
+
const methodId = document.authentication[0] ?? document.verificationMethod[0]?.id;
|
|
24
|
+
if (!methodId) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const method = document.verificationMethod.find((entry) => entry.id === methodId);
|
|
28
|
+
if (!method) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
return multibaseDecode(method.publicKeyMultibase);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function validateDIDDocument(document) {
|
|
39
|
+
const errors = [];
|
|
40
|
+
if (!document.id || !document.id.startsWith('did:claw:')) {
|
|
41
|
+
errors.push('invalid did');
|
|
42
|
+
}
|
|
43
|
+
if (!document.verificationMethod?.length) {
|
|
44
|
+
errors.push('missing verificationMethod');
|
|
45
|
+
}
|
|
46
|
+
for (const method of document.verificationMethod ?? []) {
|
|
47
|
+
if (!method.id || !method.id.startsWith(`${document.id}#`)) {
|
|
48
|
+
errors.push('invalid verificationMethod id');
|
|
49
|
+
}
|
|
50
|
+
if (method.type !== 'Ed25519VerificationKey2020') {
|
|
51
|
+
errors.push('unsupported verificationMethod type');
|
|
52
|
+
}
|
|
53
|
+
if (method.controller !== document.id) {
|
|
54
|
+
errors.push('invalid verificationMethod controller');
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
multibaseDecode(method.publicKeyMultibase);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
errors.push('invalid verificationMethod publicKeyMultibase');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
for (const ref of document.authentication ?? []) {
|
|
64
|
+
if (!document.verificationMethod.some((entry) => entry.id === ref)) {
|
|
65
|
+
errors.push('authentication reference not found');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
for (const ref of document.assertionMethod ?? []) {
|
|
69
|
+
if (!document.verificationMethod.some((entry) => entry.id === ref)) {
|
|
70
|
+
errors.push('assertionMethod reference not found');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return { valid: errors.length === 0, errors };
|
|
74
|
+
}
|
|
75
|
+
export function didFromDocument(document) {
|
|
76
|
+
return document.id;
|
|
77
|
+
}
|
|
78
|
+
export function publicKeyFromDocument(document) {
|
|
79
|
+
if (!document.id) {
|
|
80
|
+
throw new Error('missing did');
|
|
81
|
+
}
|
|
82
|
+
return publicKeyFromDid(document.id);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/identity/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { EventEnvelope } from '@claw-network/core/protocol';
|
|
2
|
+
import { ClawDIDDocument } from './document.js';
|
|
3
|
+
export interface IdentityCreatePayload {
|
|
4
|
+
did: string;
|
|
5
|
+
publicKey: string;
|
|
6
|
+
document: ClawDIDDocument;
|
|
7
|
+
}
|
|
8
|
+
export interface IdentityUpdatePayload {
|
|
9
|
+
did: string;
|
|
10
|
+
document: ClawDIDDocument;
|
|
11
|
+
prevDocHash: string;
|
|
12
|
+
}
|
|
13
|
+
export interface VerifiableCredentialProof {
|
|
14
|
+
type: 'Ed25519Signature2020';
|
|
15
|
+
created: string;
|
|
16
|
+
verificationMethod: string;
|
|
17
|
+
proofPurpose: 'assertionMethod';
|
|
18
|
+
proofValue: string;
|
|
19
|
+
}
|
|
20
|
+
export interface VerifiableCredential<TSubject> {
|
|
21
|
+
'@context': string[];
|
|
22
|
+
type: string[];
|
|
23
|
+
issuer: string;
|
|
24
|
+
issuanceDate: string;
|
|
25
|
+
credentialSubject: TSubject;
|
|
26
|
+
proof: VerifiableCredentialProof;
|
|
27
|
+
}
|
|
28
|
+
export interface PlatformLinkCredentialSubject {
|
|
29
|
+
id: string;
|
|
30
|
+
platformId: string;
|
|
31
|
+
platformUsername: string;
|
|
32
|
+
linkedAt: string;
|
|
33
|
+
}
|
|
34
|
+
export type PlatformLinkCredential = VerifiableCredential<PlatformLinkCredentialSubject>;
|
|
35
|
+
export interface IdentityPlatformLinkPayload {
|
|
36
|
+
did: string;
|
|
37
|
+
platformId: string;
|
|
38
|
+
platformUsername: string;
|
|
39
|
+
credential: PlatformLinkCredential;
|
|
40
|
+
}
|
|
41
|
+
export interface CapabilityCredentialSubject {
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
pricing: Record<string, unknown>;
|
|
45
|
+
description?: string;
|
|
46
|
+
}
|
|
47
|
+
export type CapabilityCredential = VerifiableCredential<CapabilityCredentialSubject>;
|
|
48
|
+
export interface IdentityCapabilityRegisterPayload {
|
|
49
|
+
did: string;
|
|
50
|
+
name: string;
|
|
51
|
+
pricing: Record<string, unknown>;
|
|
52
|
+
description?: string;
|
|
53
|
+
credential: CapabilityCredential;
|
|
54
|
+
}
|
|
55
|
+
export interface IdentityCreateEventParams {
|
|
56
|
+
publicKey: Uint8Array;
|
|
57
|
+
privateKey: Uint8Array;
|
|
58
|
+
document?: ClawDIDDocument;
|
|
59
|
+
ts: number;
|
|
60
|
+
nonce: number;
|
|
61
|
+
prev?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface IdentityUpdateEventParams {
|
|
64
|
+
did: string;
|
|
65
|
+
privateKey: Uint8Array;
|
|
66
|
+
document: ClawDIDDocument;
|
|
67
|
+
prevDocHash: string;
|
|
68
|
+
ts: number;
|
|
69
|
+
nonce: number;
|
|
70
|
+
prev?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface IdentityPlatformLinkEventParams {
|
|
73
|
+
did: string;
|
|
74
|
+
privateKey: Uint8Array;
|
|
75
|
+
credential: PlatformLinkCredential;
|
|
76
|
+
ts: number;
|
|
77
|
+
nonce: number;
|
|
78
|
+
prev?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface IdentityCapabilityRegisterEventParams {
|
|
81
|
+
did: string;
|
|
82
|
+
privateKey: Uint8Array;
|
|
83
|
+
name: string;
|
|
84
|
+
pricing: Record<string, unknown>;
|
|
85
|
+
description?: string;
|
|
86
|
+
credential: CapabilityCredential;
|
|
87
|
+
ts: number;
|
|
88
|
+
nonce: number;
|
|
89
|
+
prev?: string;
|
|
90
|
+
}
|
|
91
|
+
export declare function identityDocumentHash(document: ClawDIDDocument): string;
|
|
92
|
+
export declare function createIdentityCreateEnvelope(params: IdentityCreateEventParams): Promise<EventEnvelope>;
|
|
93
|
+
export declare function createIdentityUpdateEnvelope(params: IdentityUpdateEventParams): Promise<EventEnvelope>;
|
|
94
|
+
export declare function createIdentityPlatformLinkEnvelope(params: IdentityPlatformLinkEventParams): Promise<EventEnvelope>;
|
|
95
|
+
export declare function createIdentityCapabilityRegisterEnvelope(params: IdentityCapabilityRegisterEventParams): Promise<EventEnvelope>;
|
|
96
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/identity/events.ts"],"names":[],"mappings":"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"}
|