@verana-labs/vs-agent-sdk 1.11.0-dev.13 → 1.11.0-dev.15
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/README.md +172 -0
- package/build/blockchain/IndexerWebSocketService.d.ts +11 -2
- package/build/blockchain/IndexerWebSocketService.js +81 -30
- package/build/blockchain/IndexerWebSocketService.js.map +1 -1
- package/build/blockchain/VeranaChainService.d.ts +2 -0
- package/build/blockchain/VeranaChainService.js +7 -4
- package/build/blockchain/VeranaChainService.js.map +1 -1
- package/build/blockchain/VeranaHelpers.d.ts +1 -2
- package/build/blockchain/VeranaHelpers.js +0 -73
- package/build/blockchain/VeranaHelpers.js.map +1 -1
- package/build/blockchain/VeranaIndexerService.d.ts +4 -1
- package/build/blockchain/VeranaIndexerService.js +15 -0
- package/build/blockchain/VeranaIndexerService.js.map +1 -1
- package/build/blockchain/handlers/IndexerHandlerRegistry.d.ts +25 -0
- package/build/blockchain/handlers/IndexerHandlerRegistry.js +34 -0
- package/build/blockchain/handlers/IndexerHandlerRegistry.js.map +1 -0
- package/build/blockchain/handlers/defaultHandlers.d.ts +6 -0
- package/build/blockchain/handlers/defaultHandlers.js +126 -0
- package/build/blockchain/handlers/defaultHandlers.js.map +1 -0
- package/build/blockchain/handlers/index.d.ts +3 -0
- package/build/blockchain/handlers/index.js +20 -0
- package/build/blockchain/handlers/index.js.map +1 -0
- package/build/blockchain/handlers/stateMutations.d.ts +12 -0
- package/build/blockchain/handlers/stateMutations.js +113 -0
- package/build/blockchain/handlers/stateMutations.js.map +1 -0
- package/build/blockchain/index.d.ts +1 -0
- package/build/blockchain/index.js +1 -0
- package/build/blockchain/index.js.map +1 -1
- package/build/blockchain/types.d.ts +50 -2
- package/build/index.d.ts +2 -0
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/utils/setupSelfTr.d.ts +115 -0
- package/build/utils/setupSelfTr.js +452 -0
- package/build/utils/setupSelfTr.js.map +1 -0
- package/build/utils/trustCredentialStore.d.ts +18 -0
- package/build/utils/trustCredentialStore.js +196 -0
- package/build/utils/trustCredentialStore.js.map +1 -0
- package/package.json +5 -2
package/README.md
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# @verana-labs/vs-agent-sdk
|
|
2
|
+
|
|
3
|
+
Framework-agnostic Verifiable Service Agent SDK with DIDComm, AnonCreds, and blockchain integration.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @verana-labs/vs-agent-sdk @credo-ts/core @credo-ts/node
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic Usage
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { createVsAgent, setupBaseDidComm } from '@verana-labs/vs-agent-sdk'
|
|
15
|
+
import { getNodeHttpServer } from '@credo-ts/node'
|
|
16
|
+
|
|
17
|
+
const agent = createVsAgent({
|
|
18
|
+
plugins: [
|
|
19
|
+
setupBaseDidComm({
|
|
20
|
+
walletConfig: { dbPath: './wallet' },
|
|
21
|
+
publicApiBaseUrl: 'https://api.example.com',
|
|
22
|
+
endpoints: ['https://agent.example.com/didcomm'],
|
|
23
|
+
}),
|
|
24
|
+
],
|
|
25
|
+
label: 'My Agent',
|
|
26
|
+
publicApiBaseUrl: 'https://api.example.com',
|
|
27
|
+
dependencies: getNodeHttpServer(),
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
await agent.initialize()
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Indexer WebSocket
|
|
34
|
+
|
|
35
|
+
Stream blockchain events in real-time:
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { IndexerWebSocketService } from '@verana-labs/vs-agent-sdk'
|
|
39
|
+
|
|
40
|
+
const indexerWs = new IndexerWebSocketService({
|
|
41
|
+
indexerUrl: 'https://indexer.verana.io',
|
|
42
|
+
agent,
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
await indexerWs.start()
|
|
46
|
+
// Auto-reconnects with exponential backoff (max 5min)
|
|
47
|
+
// Persists last block height in agent storage
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Custom Handlers
|
|
51
|
+
|
|
52
|
+
Build default handlers or replace with your own:
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
import { buildDefaultIndexerHandlerRegistry } from '@verana-labs/vs-agent-sdk'
|
|
56
|
+
|
|
57
|
+
const handlerRegistry = buildDefaultIndexerHandlerRegistry()
|
|
58
|
+
|
|
59
|
+
const indexerWs = new IndexerWebSocketService({
|
|
60
|
+
indexerUrl: 'https://indexer.example.com',
|
|
61
|
+
agent,
|
|
62
|
+
handlerRegistry,
|
|
63
|
+
})
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Override a specific handler:**
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
import { buildDefaultIndexerHandlerRegistry } from '@verana-labs/vs-agent-sdk'
|
|
70
|
+
import type { IndexerActivity, IndexerDispatchContext } from '@verana-labs/vs-agent-sdk'
|
|
71
|
+
|
|
72
|
+
const registry = buildDefaultIndexerHandlerRegistry()
|
|
73
|
+
|
|
74
|
+
// Replace credential schema handler with custom logic
|
|
75
|
+
registry.register('CredentialSchema', async (activity: IndexerActivity, context: IndexerDispatchContext) => {
|
|
76
|
+
const { id, jsonSchema } = activity.changes as any
|
|
77
|
+
console.log(`Schema ${id} updated at block ${context.blockHeight}`)
|
|
78
|
+
|
|
79
|
+
// Sync to your database
|
|
80
|
+
await db.schemas.update(id, { schema: jsonSchema })
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
const indexerWs = new IndexerWebSocketService({
|
|
84
|
+
indexerUrl: 'https://indexer.example.com',
|
|
85
|
+
agent,
|
|
86
|
+
handlerRegistry: registry,
|
|
87
|
+
})
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Custom handlers from scratch:**
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
import { IndexerHandlerRegistry } from '@verana-labs/vs-agent-sdk'
|
|
94
|
+
import type { IndexerActivity, IndexerDispatchContext } from '@verana-labs/vs-agent-sdk'
|
|
95
|
+
|
|
96
|
+
const registry = new IndexerHandlerRegistry()
|
|
97
|
+
|
|
98
|
+
// Handle trust registry changes
|
|
99
|
+
registry.register('TrustRegistry', async (activity, context) => {
|
|
100
|
+
const { id, did, archived } = activity.changes as any
|
|
101
|
+
await agent.config.logger.info(`[Block ${context.blockHeight}] TR ${id} ${archived ? 'archived' : 'activated'}`)
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
// Handle permission changes with custom messages
|
|
105
|
+
registry.register('Permission', async (activity, context) => {
|
|
106
|
+
const { id, did, revoked } = activity.changes as any
|
|
107
|
+
const status = revoked ? 'revoked' : 'granted'
|
|
108
|
+
|
|
109
|
+
await agent.config.logger.info(`[Block ${context.blockHeight}] Permission ${status}: ${id}`)
|
|
110
|
+
|
|
111
|
+
// Emit to your service
|
|
112
|
+
await sendWebhookEvent('https://your-service.com/perms', {
|
|
113
|
+
type: 'permission_status_changed',
|
|
114
|
+
permissionId: id,
|
|
115
|
+
did,
|
|
116
|
+
status,
|
|
117
|
+
blockHeight: context.blockHeight,
|
|
118
|
+
timestamp: new Date().toISOString(),
|
|
119
|
+
})
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
const indexerWs = new IndexerWebSocketService({
|
|
123
|
+
indexerUrl: 'https://indexer.example.com',
|
|
124
|
+
agent,
|
|
125
|
+
handlerRegistry: registry,
|
|
126
|
+
})
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Blockchain Integration
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
import { VeranaChainService } from '@verana-labs/vs-agent-sdk'
|
|
133
|
+
|
|
134
|
+
const chain = new VeranaChainService({
|
|
135
|
+
rpcUrl: 'https://rpc.verana.io',
|
|
136
|
+
chainId: 'verana-mainnet-1',
|
|
137
|
+
mnemonic: 'your wallet seed phrase...',
|
|
138
|
+
logger: agent.config.logger,
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
const agent = createVsAgent({
|
|
142
|
+
plugins: [...],
|
|
143
|
+
veranaChain: chain,
|
|
144
|
+
label: 'My Agent',
|
|
145
|
+
publicApiBaseUrl: 'https://api.example.com',
|
|
146
|
+
dependencies: getNodeHttpServer(),
|
|
147
|
+
})
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Utilities
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
// DIDs
|
|
154
|
+
import { createInvitation, getWebDid } from '@verana-labs/vs-agent-sdk'
|
|
155
|
+
|
|
156
|
+
const did = await getWebDid(agent)
|
|
157
|
+
const invitation = await createInvitation(agent)
|
|
158
|
+
|
|
159
|
+
// Webhooks
|
|
160
|
+
import { sendWebhookEvent } from '@verana-labs/vs-agent-sdk'
|
|
161
|
+
|
|
162
|
+
await sendWebhookEvent('https://example.com/webhook', {
|
|
163
|
+
type: 'event_type',
|
|
164
|
+
data: { /* ... */ },
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
// Transports
|
|
168
|
+
import {
|
|
169
|
+
HttpInboundTransport,
|
|
170
|
+
VsAgentWsInboundTransport,
|
|
171
|
+
} from '@verana-labs/vs-agent-sdk'
|
|
172
|
+
```
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { VsAgent } from '../agent/VsAgent';
|
|
2
|
+
import { IndexerHandlerRegistry } from './handlers/IndexerHandlerRegistry';
|
|
2
3
|
export interface IndexerWebSocketServiceOptions {
|
|
3
4
|
indexerUrl: string;
|
|
4
5
|
agent: VsAgent;
|
|
6
|
+
handlerRegistry?: IndexerHandlerRegistry;
|
|
5
7
|
}
|
|
6
8
|
export declare class IndexerWebSocketService {
|
|
7
9
|
private readonly options;
|
|
@@ -9,8 +11,9 @@ export declare class IndexerWebSocketService {
|
|
|
9
11
|
private reconnectAttempt;
|
|
10
12
|
private stopped;
|
|
11
13
|
private syncing;
|
|
12
|
-
private
|
|
14
|
+
private IndexerEventRecords;
|
|
13
15
|
private readonly indexer;
|
|
16
|
+
private readonly handlerRegistry;
|
|
14
17
|
constructor(options: IndexerWebSocketServiceOptions);
|
|
15
18
|
start(): Promise<void>;
|
|
16
19
|
stop(): void;
|
|
@@ -22,8 +25,14 @@ export declare class IndexerWebSocketService {
|
|
|
22
25
|
private connect;
|
|
23
26
|
private openWebSocket;
|
|
24
27
|
private syncRest;
|
|
25
|
-
private
|
|
28
|
+
private drainIndexerEventRecords;
|
|
26
29
|
private processBlock;
|
|
30
|
+
/**
|
|
31
|
+
* TODO: Once the indexer emits consistent event_id for create events, we can remove this workaround
|
|
32
|
+
*/
|
|
33
|
+
private resolveCreateActivity;
|
|
34
|
+
private fetchActivity;
|
|
35
|
+
private fetchEntity;
|
|
27
36
|
private applyChanges;
|
|
28
37
|
private scheduleReconnect;
|
|
29
38
|
private fetchInitialEvents;
|
|
@@ -7,20 +7,24 @@ exports.IndexerWebSocketService = void 0;
|
|
|
7
7
|
const ws_1 = __importDefault(require("ws"));
|
|
8
8
|
const VeranaHelpers_1 = require("./VeranaHelpers");
|
|
9
9
|
const VeranaIndexerService_1 = require("./VeranaIndexerService");
|
|
10
|
+
const handlers_1 = require("./handlers");
|
|
10
11
|
const MAX_RECONNECT_DELAY_MS = 300000;
|
|
11
12
|
const WS_PATHNAME = 'verana/indexer/v1/events';
|
|
13
|
+
const CREATES_WITHOUT_ID = new Set(['CreateNewTrustRegistry', 'CreateNewCredentialSchema']);
|
|
12
14
|
class IndexerWebSocketService {
|
|
13
15
|
constructor(options) {
|
|
16
|
+
var _a;
|
|
14
17
|
this.options = options;
|
|
15
18
|
this.ws = null;
|
|
16
19
|
this.reconnectAttempt = 0;
|
|
17
20
|
this.stopped = false;
|
|
18
21
|
this.syncing = false;
|
|
19
|
-
this.
|
|
22
|
+
this.IndexerEventRecords = [];
|
|
20
23
|
this.indexer = new VeranaIndexerService_1.VeranaIndexerService({
|
|
21
24
|
baseUrl: options.indexerUrl,
|
|
22
25
|
logger: options.agent.config.logger,
|
|
23
26
|
});
|
|
27
|
+
this.handlerRegistry = (_a = options.handlerRegistry) !== null && _a !== void 0 ? _a : (0, handlers_1.buildDefaultIndexerHandlerRegistry)();
|
|
24
28
|
}
|
|
25
29
|
async start() {
|
|
26
30
|
this.stopped = false;
|
|
@@ -41,11 +45,11 @@ class IndexerWebSocketService {
|
|
|
41
45
|
*/
|
|
42
46
|
async connect() {
|
|
43
47
|
this.syncing = true;
|
|
44
|
-
this.
|
|
48
|
+
this.IndexerEventRecords = [];
|
|
45
49
|
this.openWebSocket();
|
|
46
50
|
await this.syncRest();
|
|
47
51
|
this.syncing = false;
|
|
48
|
-
await this.
|
|
52
|
+
await this.drainIndexerEventRecords();
|
|
49
53
|
}
|
|
50
54
|
openWebSocket() {
|
|
51
55
|
const url = new URL(this.options.indexerUrl);
|
|
@@ -64,18 +68,17 @@ class IndexerWebSocketService {
|
|
|
64
68
|
var _a;
|
|
65
69
|
try {
|
|
66
70
|
const event = JSON.parse(data.toString());
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
if (event.type !== 'indexer-event')
|
|
72
|
+
return;
|
|
73
|
+
if (event.block_height <= 0)
|
|
69
74
|
return;
|
|
70
|
-
|
|
71
|
-
if (!(payload === null || payload === void 0 ? void 0 : payload.sender))
|
|
75
|
+
if (!((_a = event.payload) === null || _a === void 0 ? void 0 : _a.sender))
|
|
72
76
|
return;
|
|
73
|
-
const sender = payload.sender;
|
|
74
77
|
if (this.syncing) {
|
|
75
|
-
this.
|
|
78
|
+
this.IndexerEventRecords.push(event);
|
|
76
79
|
}
|
|
77
80
|
else {
|
|
78
|
-
this.processBlock(
|
|
81
|
+
this.processBlock(event).catch(err => this.logger.error(`[IndexerWS] Handler error: ${err.message}`));
|
|
79
82
|
}
|
|
80
83
|
}
|
|
81
84
|
catch (_b) {
|
|
@@ -96,9 +99,7 @@ class IndexerWebSocketService {
|
|
|
96
99
|
const { lastBlockHeight } = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
|
|
97
100
|
const data = await this.fetchInitialEvents(lastBlockHeight);
|
|
98
101
|
for (const event of data.events) {
|
|
99
|
-
|
|
100
|
-
const sender = event.payload.sender;
|
|
101
|
-
await this.processBlock(blockHeight, sender, event.did);
|
|
102
|
+
await this.processBlock(event);
|
|
102
103
|
}
|
|
103
104
|
this.logger.info(`[IndexerWS] Initial sync complete: ${data.events.length} event(s)`);
|
|
104
105
|
}
|
|
@@ -106,43 +107,93 @@ class IndexerWebSocketService {
|
|
|
106
107
|
this.logger.error(`[IndexerWS] REST initial sync failed: ${error.message}`);
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
|
-
async
|
|
110
|
+
async drainIndexerEventRecords() {
|
|
110
111
|
const { lastBlockHeight } = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
|
|
111
|
-
const events = this.
|
|
112
|
+
const events = this.IndexerEventRecords.splice(0);
|
|
112
113
|
let processed = 0;
|
|
113
114
|
let skipped = 0;
|
|
114
|
-
for (const
|
|
115
|
-
if (
|
|
115
|
+
for (const event of events) {
|
|
116
|
+
if (event.block_height <= lastBlockHeight) {
|
|
116
117
|
skipped++;
|
|
117
118
|
continue;
|
|
118
119
|
}
|
|
119
|
-
await this.processBlock(
|
|
120
|
+
await this.processBlock(event);
|
|
120
121
|
processed++;
|
|
121
122
|
}
|
|
122
123
|
if (skipped + processed > 0) {
|
|
123
124
|
this.logger.info(`[IndexerWS] Drained: ${processed} processed, ${skipped} skipped`);
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
|
-
async processBlock(
|
|
127
|
+
async processBlock(event) {
|
|
127
128
|
try {
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
await this.
|
|
129
|
+
const activity = CREATES_WITHOUT_ID.has(event.event_type)
|
|
130
|
+
? await this.resolveCreateActivity(event)
|
|
131
|
+
: await this.fetchActivity(event);
|
|
132
|
+
if (activity) {
|
|
133
|
+
await this.applyChanges(event, activity);
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
136
|
catch (error) {
|
|
134
|
-
this.logger.error(`[IndexerWS] Failed to
|
|
137
|
+
this.logger.error(`[IndexerWS] Failed to process event ${event.event_type} block=${event.block_height}: ${error.message}`);
|
|
135
138
|
}
|
|
136
139
|
}
|
|
137
|
-
|
|
140
|
+
/**
|
|
141
|
+
* TODO: Once the indexer emits consistent event_id for create events, we can remove this workaround
|
|
142
|
+
*/
|
|
143
|
+
async resolveCreateActivity(event) {
|
|
144
|
+
const changes = await this.indexer.getChanges(event.block_height);
|
|
145
|
+
const expectedType = event.payload.entity_type;
|
|
146
|
+
const expectedAccount = event.payload.sender;
|
|
147
|
+
const matches = changes.activity.filter(a => a.entity_type === expectedType && a.account === expectedAccount);
|
|
148
|
+
return matches.length > 0 ? Object.assign(Object.assign({}, matches[0]), { msg: event.event_type }) : undefined;
|
|
149
|
+
}
|
|
150
|
+
async fetchActivity(event) {
|
|
151
|
+
var _a;
|
|
152
|
+
const entity_id = event.payload.entity_id;
|
|
153
|
+
if (!entity_id) {
|
|
154
|
+
this.logger.warn(`[IndexerWS] No entity_id for event ${event.event_type} — skipping`);
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
const changes = await this.fetchEntity(event.payload.entity_type, entity_id);
|
|
158
|
+
return {
|
|
159
|
+
timestamp: event.timestamp,
|
|
160
|
+
block_height: event.block_height,
|
|
161
|
+
entity_type: (_a = event.payload.entity_type) !== null && _a !== void 0 ? _a : '',
|
|
162
|
+
entity_id,
|
|
163
|
+
msg: event.event_type,
|
|
164
|
+
changes,
|
|
165
|
+
account: event.payload.sender,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
async fetchEntity(entityType, id) {
|
|
169
|
+
switch (entityType) {
|
|
170
|
+
case 'TrustRegistry':
|
|
171
|
+
return (await this.indexer.getTrustRegistry(id));
|
|
172
|
+
case 'CredentialSchema':
|
|
173
|
+
return (await this.indexer.getCredentialSchema(id));
|
|
174
|
+
case 'Permission':
|
|
175
|
+
return (await this.indexer.getPermission(id));
|
|
176
|
+
default:
|
|
177
|
+
return {};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async applyChanges(event, activity) {
|
|
138
181
|
const state = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
182
|
+
const { block_height } = event;
|
|
183
|
+
try {
|
|
184
|
+
await this.handlerRegistry.dispatch(activity, {
|
|
185
|
+
agent: this.options.agent,
|
|
186
|
+
block_height,
|
|
187
|
+
operatorAddress: event.payload.sender,
|
|
188
|
+
state,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
this.logger.error(`[IndexerWS] Handler ${event.event_type} failed at block ${event.block_height}: ${err.message}`);
|
|
193
|
+
}
|
|
194
|
+
state.lastBlockHeight = Math.max(state.lastBlockHeight, event.block_height);
|
|
144
195
|
await (0, VeranaHelpers_1.saveSyncState)(this.options.agent, state);
|
|
145
|
-
this.logger.debug(`[IndexerWS] Block ${
|
|
196
|
+
this.logger.debug(`[IndexerWS] Block ${event.block_height}: applied ${event.event_type}`);
|
|
146
197
|
}
|
|
147
198
|
scheduleReconnect() {
|
|
148
199
|
const delay = Math.min(1000 * 2 ** this.reconnectAttempt, MAX_RECONNECT_DELAY_MS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexerWebSocketService.js","sourceRoot":"","sources":["../../src/blockchain/IndexerWebSocketService.ts"],"names":[],"mappings":";;;;;;AACA,4CAA0B;AAI1B,
|
|
1
|
+
{"version":3,"file":"IndexerWebSocketService.js","sourceRoot":"","sources":["../../src/blockchain/IndexerWebSocketService.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,11 @@ export declare class VeranaChainService {
|
|
|
4
4
|
private readonly config;
|
|
5
5
|
private signingClient;
|
|
6
6
|
private operatorAddress;
|
|
7
|
+
private chainId;
|
|
7
8
|
private permQuery;
|
|
8
9
|
constructor(config: VeranaChainConfig);
|
|
9
10
|
get address(): string;
|
|
11
|
+
get getChainId(): string;
|
|
10
12
|
start(): Promise<void>;
|
|
11
13
|
getPermission(id: Long): Promise<unknown>;
|
|
12
14
|
findPermissionsWithDID(params: object): Promise<unknown[]>;
|
|
@@ -16,6 +16,9 @@ class VeranaChainService {
|
|
|
16
16
|
get address() {
|
|
17
17
|
return this.operatorAddress;
|
|
18
18
|
}
|
|
19
|
+
get getChainId() {
|
|
20
|
+
return this.chainId;
|
|
21
|
+
}
|
|
19
22
|
async start() {
|
|
20
23
|
const { rpcUrl, mnemonic, chainId, logger, gasPrice } = this.config;
|
|
21
24
|
const wallet = await proto_signing_1.DirectSecp256k1HdWallet.fromMnemonic(mnemonic, {
|
|
@@ -30,11 +33,11 @@ class VeranaChainService {
|
|
|
30
33
|
aminoTypes: (0, verana_types_1.createVeranaAminoTypes)(),
|
|
31
34
|
gasPrice: stargate_1.GasPrice.fromString(gasPrice !== null && gasPrice !== void 0 ? gasPrice : '0uvna'), // TODO: consider minium gas price
|
|
32
35
|
});
|
|
33
|
-
|
|
34
|
-
if (chainId &&
|
|
35
|
-
throw new Error(`[VeranaChain] Chain ID mismatch: expected "${chainId}", got "${
|
|
36
|
+
this.chainId = await this.signingClient.getChainId();
|
|
37
|
+
if (chainId && this.chainId !== chainId) {
|
|
38
|
+
throw new Error(`[VeranaChain] Chain ID mismatch: expected "${chainId}", got "${this.chainId}"`);
|
|
36
39
|
}
|
|
37
|
-
logger.info(`[VeranaChain] Connected to chain: ${
|
|
40
|
+
logger.info(`[VeranaChain] Connected to chain: ${this.chainId}`);
|
|
38
41
|
const queryClient = new stargate_1.QueryClient(cometClient);
|
|
39
42
|
const rpc = (0, stargate_1.createProtobufRpcClient)(queryClient);
|
|
40
43
|
this.permQuery = new PermQueryClientImpl(rpc);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VeranaChainService.js","sourceRoot":"","sources":["../../src/blockchain/VeranaChainService.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,yDAA+D;AAC/D,+CAOyB;AACzB,2DAAqD;AACrD,4DAAwG;AAGxG,mCAOgB;AAEhB,MAAM,EACJ,eAAe,EAAE,mBAAmB,GACrC,GAAG,OAAO,CAAC,sDAAsD,CAAC,CAAA;AACnE,MAAM,EACJ,oBAAoB,EACpB,oBAAoB,EACpB,6BAA6B,EAC7B,gCAAgC,EAChC,kCAAkC,GACnC,GAAG,OAAO,CAAC,mDAAmD,CAAC,CAAA;AAEhE,MAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"VeranaChainService.js","sourceRoot":"","sources":["../../src/blockchain/VeranaChainService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { VsAgent } from '../agent/VsAgent';
|
|
2
|
-
import {
|
|
3
|
-
export declare function applyActivity(state: VeranaSyncState, activity: IndexerActivity): void;
|
|
2
|
+
import { VeranaSyncState } from './types';
|
|
4
3
|
export declare function loadSyncState(agent: VsAgent): Promise<VeranaSyncState>;
|
|
5
4
|
export declare function saveSyncState(agent: VsAgent, state: VeranaSyncState): Promise<void>;
|
|
@@ -1,81 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.applyActivity = applyActivity;
|
|
4
3
|
exports.loadSyncState = loadSyncState;
|
|
5
4
|
exports.saveSyncState = saveSyncState;
|
|
6
5
|
const types_1 = require("./types");
|
|
7
|
-
function applyActivity(state, activity) {
|
|
8
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
9
|
-
const block = Number(activity.block_height) || 0;
|
|
10
|
-
const id = String(activity.entity_id);
|
|
11
|
-
const c = activity.changes;
|
|
12
|
-
switch (activity.entity_type) {
|
|
13
|
-
case 'TrustRegistry': {
|
|
14
|
-
state.trustRegistries[id] = {
|
|
15
|
-
id: Number(id),
|
|
16
|
-
did: String(c['did']),
|
|
17
|
-
controller: String(c['controller']),
|
|
18
|
-
archived: Boolean(c['archived']),
|
|
19
|
-
lastModifiedBlock: block,
|
|
20
|
-
};
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
case 'CredentialSchema': {
|
|
24
|
-
const existing = state.credentialSchemas[id];
|
|
25
|
-
state.credentialSchemas[id] = {
|
|
26
|
-
id: Number(id),
|
|
27
|
-
trId: Number(c['tr_id']),
|
|
28
|
-
jsonSchema: String((_b = (_a = c['json_schema']) !== null && _a !== void 0 ? _a : existing === null || existing === void 0 ? void 0 : existing.jsonSchema) !== null && _b !== void 0 ? _b : ''),
|
|
29
|
-
issuerMode: c['issuer_perm_management_mode']
|
|
30
|
-
? String(c['issuer_perm_management_mode'])
|
|
31
|
-
: existing === null || existing === void 0 ? void 0 : existing.issuerMode,
|
|
32
|
-
verifierMode: c['verifier_perm_management_mode']
|
|
33
|
-
? String(c['verifier_perm_management_mode'])
|
|
34
|
-
: existing === null || existing === void 0 ? void 0 : existing.verifierMode,
|
|
35
|
-
archived: activity.msg === 'ArchiveCredentialSchema'
|
|
36
|
-
? !((_c = existing === null || existing === void 0 ? void 0 : existing.archived) !== null && _c !== void 0 ? _c : false)
|
|
37
|
-
: ((_d = existing === null || existing === void 0 ? void 0 : existing.archived) !== null && _d !== void 0 ? _d : false),
|
|
38
|
-
lastModifiedBlock: block,
|
|
39
|
-
};
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
case 'Permission': {
|
|
43
|
-
const existing = state.permissions[id];
|
|
44
|
-
const isRevoked = activity.msg === 'RevokePermission' ? true : ((_e = existing === null || existing === void 0 ? void 0 : existing.revoked) !== null && _e !== void 0 ? _e : false);
|
|
45
|
-
const isSlashed = activity.msg === 'SlashPermissionTrustDeposit' ? true : ((_f = existing === null || existing === void 0 ? void 0 : existing.slashed) !== null && _f !== void 0 ? _f : false);
|
|
46
|
-
state.permissions[id] = {
|
|
47
|
-
id: Number(id),
|
|
48
|
-
schemaId: Number(c['schema_id']),
|
|
49
|
-
did: String((_g = c['did']) !== null && _g !== void 0 ? _g : ''),
|
|
50
|
-
type: Number(c['type']),
|
|
51
|
-
vpState: (() => {
|
|
52
|
-
var _a, _b;
|
|
53
|
-
switch (activity.msg) {
|
|
54
|
-
case 'SetPermissionVPToValidated':
|
|
55
|
-
return 'VALIDATED';
|
|
56
|
-
case 'StartPermissionVP':
|
|
57
|
-
case 'RenewPermissionVP':
|
|
58
|
-
return 'IN_PROGRESS';
|
|
59
|
-
case 'CancelPermissionVPLastRequest':
|
|
60
|
-
return 'CANCELLED';
|
|
61
|
-
default:
|
|
62
|
-
return String((_b = (_a = c['vp_state']) !== null && _a !== void 0 ? _a : existing === null || existing === void 0 ? void 0 : existing.vpState) !== null && _b !== void 0 ? _b : '');
|
|
63
|
-
}
|
|
64
|
-
})(),
|
|
65
|
-
effectiveUntil: activity.msg === 'AdjustPermission'
|
|
66
|
-
? String((_h = c['effective_until']) !== null && _h !== void 0 ? _h : '')
|
|
67
|
-
: ((_j = existing === null || existing === void 0 ? void 0 : existing.effectiveUntil) !== null && _j !== void 0 ? _j : ''),
|
|
68
|
-
revoked: isRevoked,
|
|
69
|
-
slashed: isSlashed,
|
|
70
|
-
lastModifiedBlock: block,
|
|
71
|
-
};
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
default:
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
state.lastBlockHeight = Math.max(state.lastBlockHeight, block);
|
|
78
|
-
}
|
|
79
6
|
const emptyState = () => ({
|
|
80
7
|
lastBlockHeight: 0,
|
|
81
8
|
trustRegistries: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VeranaHelpers.js","sourceRoot":"","sources":["../../src/blockchain/VeranaHelpers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"VeranaHelpers.js","sourceRoot":"","sources":["../../src/blockchain/VeranaHelpers.ts"],"names":[],"mappings":";;AAaA,sCAIC;AAED,sCAQC;AAvBD,mCAAoD;AAEpD,MAAM,UAAU,GAAG,GAAoB,EAAE,CAAC,CAAC;IACzC,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,EAAE;IACrB,WAAW,EAAE,EAAE;CAChB,CAAC,CAAA;AAEK,KAAK,UAAU,aAAa,CAAC,KAAc;;IAChD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAS,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM;QAAE,OAAO,UAAU,EAAE,CAAA;IAChC,OAAO,MAAC,MAAM,CAAC,OAAsC,mCAAI,UAAU,EAAE,CAAA;AACvE,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,KAAc,EAAE,KAAsB;IACxE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAS,CAAC,CAAA;IAC/D,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,KAA8B,CAAA;QACjD,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,iBAAS,EAAE,OAAO,EAAE,KAA8B,EAAE,CAAC,CAAA;IAC7F,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { IndexerChangesResponse, IndexerEventsResponse, VeranaIdxConfig } from './types';
|
|
1
|
+
import { CredentialSchemaDto, IndexerChangesResponse, IndexerEventsResponse, PermissionDto, TrustRegistryDto, VeranaIdxConfig } from './types';
|
|
2
2
|
export declare class VeranaIndexerService {
|
|
3
3
|
private readonly config;
|
|
4
4
|
private readonly baseUrl;
|
|
5
5
|
constructor(config: VeranaIdxConfig);
|
|
6
6
|
getChanges(blockHeight: number): Promise<IndexerChangesResponse>;
|
|
7
7
|
getEvents(agentDid: string, afterBlockHeight?: number, limit?: number): Promise<IndexerEventsResponse>;
|
|
8
|
+
getTrustRegistry(id: string | number): Promise<TrustRegistryDto>;
|
|
9
|
+
getCredentialSchema(id: string | number): Promise<CredentialSchemaDto>;
|
|
10
|
+
getPermission(id: string | number): Promise<PermissionDto>;
|
|
8
11
|
}
|
|
@@ -23,6 +23,21 @@ class VeranaIndexerService {
|
|
|
23
23
|
const url = `${this.baseUrl}/verana/indexer/v1/events?did=${encodeURIComponent(agentDid)}&after_block_height=${afterBlockHeight}&limit=${limit}`;
|
|
24
24
|
return (0, util_1.fetchJson)(url);
|
|
25
25
|
}
|
|
26
|
+
async getTrustRegistry(id) {
|
|
27
|
+
this.config.logger.debug(`[VeranaIndexer] getTrustRegistry id=${id}`);
|
|
28
|
+
const data = await (0, util_1.fetchJson)(`${this.baseUrl}/verana/tr/v1/get/${id}`);
|
|
29
|
+
return data.trust_registry;
|
|
30
|
+
}
|
|
31
|
+
async getCredentialSchema(id) {
|
|
32
|
+
this.config.logger.debug(`[VeranaIndexer] getCredentialSchema id=${id}`);
|
|
33
|
+
const data = await (0, util_1.fetchJson)(`${this.baseUrl}/verana/cs/v1/get/${id}`);
|
|
34
|
+
return data.schema;
|
|
35
|
+
}
|
|
36
|
+
async getPermission(id) {
|
|
37
|
+
this.config.logger.debug(`[VeranaIndexer] getPermission id=${id}`);
|
|
38
|
+
const data = await (0, util_1.fetchJson)(`${this.baseUrl}/verana/perm/v1/get/${id}`);
|
|
39
|
+
return data.permission;
|
|
40
|
+
}
|
|
26
41
|
}
|
|
27
42
|
exports.VeranaIndexerService = VeranaIndexerService;
|
|
28
43
|
//# sourceMappingURL=VeranaIndexerService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VeranaIndexerService.js","sourceRoot":"","sources":["../../src/blockchain/VeranaIndexerService.ts"],"names":[],"mappings":";;;AAAA,wCAAyC;
|
|
1
|
+
{"version":3,"file":"VeranaIndexerService.js","sourceRoot":"","sources":["../../src/blockchain/VeranaIndexerService.ts"],"names":[],"mappings":";;;AAAA,wCAAyC;AAYzC,MAAa,oBAAoB;IAG/B,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB;;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAA;QAC3E,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,8BAA8B,WAAW,EAAE,CAAA;QACtE,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAS,EAA0B,GAAG,CAAC,CAAA;QAC1D,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,MAAA,IAAI,CAAC,cAAc,CAAC,mCAAI,WAAW,CAAC;YACzD,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACtF,QAAQ,EAAE,CAAC,MAAA,IAAI,CAAC,UAAU,CAAC,mCAAI,EAAE,CAAsB;SACxD,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,gBAAgB,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG;QACjE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,gBAAgB,EAAE,CAAC,CAAA;QACrF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,iCAAiC,kBAAkB,CAAC,QAAQ,CAAC,uBAAuB,gBAAgB,UAAU,KAAK,EAAE,CAAA;QAChJ,OAAO,IAAA,gBAAS,EAAwB,GAAG,CAAC,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EAAmB;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,CAAC,CAAA;QACrE,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAS,EAC1B,GAAG,IAAI,CAAC,OAAO,qBAAqB,EAAE,EAAE,CACzC,CAAA;QACD,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAmB;QAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAA;QACxE,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAS,EAAkC,GAAG,IAAI,CAAC,OAAO,qBAAqB,EAAE,EAAE,CAAC,CAAA;QACvG,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAmB;QACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAA;QAClE,MAAM,IAAI,GAAG,MAAM,IAAA,gBAAS,EAAgC,GAAG,IAAI,CAAC,OAAO,uBAAuB,EAAE,EAAE,CAAC,CAAA;QACvG,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;CACF;AA3CD,oDA2CC"}
|