autrace 0.0.1
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/build/src/AccountUpdateAnalyzer.d.ts +17 -0
- package/build/src/AccountUpdateAnalyzer.js +88 -0
- package/build/src/AccountUpdateAnalyzer.js.map +1 -0
- package/build/src/AccountUpdateTrace.d.ts +16 -0
- package/build/src/AccountUpdateTrace.js +232 -0
- package/build/src/AccountUpdateTrace.js.map +1 -0
- package/build/src/AsciiVisualiser.d.ts +12 -0
- package/build/src/AsciiVisualiser.js +130 -0
- package/build/src/AsciiVisualiser.js.map +1 -0
- package/build/src/ContractAnalyser.d.ts +26 -0
- package/build/src/ContractAnalyser.js +171 -0
- package/build/src/ContractAnalyser.js.map +1 -0
- package/build/src/Interface.d.ts +172 -0
- package/build/src/Interface.js +2 -0
- package/build/src/Interface.js.map +1 -0
- package/build/src/Visualiser.d.ts +26 -0
- package/build/src/Visualiser.js +450 -0
- package/build/src/Visualiser.js.map +1 -0
- package/build/src/autrace.d.ts +27 -0
- package/build/src/autrace.js +335 -0
- package/build/src/autrace.js.map +1 -0
- package/build/src/index.d.ts +3 -0
- package/build/src/index.js +4 -0
- package/build/src/index.js.map +1 -0
- package/package.json +27 -0
@@ -0,0 +1,335 @@
|
|
1
|
+
import { SmartContractAnalyzer } from './ContractAnalyser.js';
|
2
|
+
import { AccountUpdateAnalyzer } from './AccountUpdateAnalyzer.js';
|
3
|
+
export class AUTrace {
|
4
|
+
constructor() {
|
5
|
+
this.transactionSnapshots = [];
|
6
|
+
this.traverseTransaction = (transaction) => {
|
7
|
+
if (!transaction)
|
8
|
+
return;
|
9
|
+
const accountUpdates = transaction.transaction.accountUpdates || [];
|
10
|
+
this.transactionState.metadata.accountUpdates = accountUpdates.length;
|
11
|
+
accountUpdates.forEach((au) => {
|
12
|
+
this.processAccountUpdate(au);
|
13
|
+
});
|
14
|
+
};
|
15
|
+
this.processAccountUpdate = (au) => {
|
16
|
+
const auMetadata = this.extractAUMetadata(au);
|
17
|
+
if (au.authorization.proof) {
|
18
|
+
this.transactionState.metadata.totalProofs++;
|
19
|
+
}
|
20
|
+
else if (au.authorization.signature) {
|
21
|
+
this.transactionState.metadata.totalSignatures++;
|
22
|
+
}
|
23
|
+
/*if (auMetadata.type === 'proof') {
|
24
|
+
this.transactionState.metadata.totalProofs++;
|
25
|
+
} else if (auMetadata.type === 'signature') {
|
26
|
+
this.transactionState.metadata.totalSignatures++;
|
27
|
+
}*/
|
28
|
+
// Calculate fees
|
29
|
+
if (au.body.balanceChange) {
|
30
|
+
const magnitude = au.body.balanceChange.magnitude.toString();
|
31
|
+
// If balance change is negative, it's a fee
|
32
|
+
if (au.body.balanceChange.isNegative()) {
|
33
|
+
// Convert to nanomina
|
34
|
+
const feesInNanomina = BigInt(magnitude);
|
35
|
+
// Convert current total from MINA to nanomina for calculation
|
36
|
+
const currentTotalNanomina = this.transactionState.metadata.totalFees === 0
|
37
|
+
? BigInt(0)
|
38
|
+
: BigInt(this.transactionState.metadata.totalFees * 1e9);
|
39
|
+
const newTotalNanomina = currentTotalNanomina + feesInNanomina;
|
40
|
+
// Convert back to MINA and store as number
|
41
|
+
this.transactionState.metadata.totalFees = Number(newTotalNanomina) / 1e9;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
if (!this.transactionState.nodes.has(auMetadata.id)) {
|
45
|
+
const nodeType = this.determineNodeType(au);
|
46
|
+
const node = {
|
47
|
+
id: auMetadata.id,
|
48
|
+
type: nodeType,
|
49
|
+
label: auMetadata.label,
|
50
|
+
publicKey: auMetadata.publicKey,
|
51
|
+
contractType: this.extractContractType(au)
|
52
|
+
};
|
53
|
+
this.transactionState.nodes.set(auMetadata.id, node);
|
54
|
+
}
|
55
|
+
this.auAnalyzer.processAccountUpdate(au);
|
56
|
+
this.updateBalanceState(auMetadata);
|
57
|
+
};
|
58
|
+
this.extractAUMetadata = (au) => {
|
59
|
+
return {
|
60
|
+
id: au.id.toString(),
|
61
|
+
label: au.label || 'Unnamed Update',
|
62
|
+
type: this.determineAuthorizationType(au),
|
63
|
+
publicKey: au.body.publicKey.toBase58(),
|
64
|
+
balanceChange: au.body.balanceChange.toString(),
|
65
|
+
methodName: au.lazyAuthorization?.methodName,
|
66
|
+
args: au.lazyAuthorization?.args
|
67
|
+
};
|
68
|
+
};
|
69
|
+
this.extractContractType = (au) => {
|
70
|
+
if (au.label) {
|
71
|
+
return au.label;
|
72
|
+
}
|
73
|
+
/*// Look for contract type patterns in the label
|
74
|
+
if (au.label.includes('FungibleTokenAdmin')) {
|
75
|
+
return 'FungibleTokenAdmin';
|
76
|
+
}
|
77
|
+
if (au.label.includes('FungibleToken')) {
|
78
|
+
return 'FungibleToken';
|
79
|
+
}
|
80
|
+
if (au.label.includes('TokenEscrow')) {
|
81
|
+
return 'TokenEscrow';
|
82
|
+
}
|
83
|
+
if (au.label.includes('ZkApp')) {
|
84
|
+
return 'SmartContract';
|
85
|
+
}*/
|
86
|
+
return undefined;
|
87
|
+
};
|
88
|
+
this.determineNodeType = (au) => {
|
89
|
+
const isContract = this.isContractAccount(au);
|
90
|
+
if (isContract) {
|
91
|
+
return 'contract';
|
92
|
+
}
|
93
|
+
return 'account';
|
94
|
+
};
|
95
|
+
this.updateBalanceState = (auMetadata) => {
|
96
|
+
const currentBalance = this.transactionState.balanceStates.get(auMetadata.id) || [0];
|
97
|
+
// Get the last known balance
|
98
|
+
const lastBalance = currentBalance[currentBalance.length - 1] ?? 0;
|
99
|
+
const balanceChange = auMetadata.balanceChange ?
|
100
|
+
BigInt(auMetadata.balanceChange) :
|
101
|
+
BigInt(0);
|
102
|
+
const newBalance = BigInt(lastBalance?.toString()) + balanceChange;
|
103
|
+
currentBalance.push(Number(newBalance));
|
104
|
+
this.transactionState.balanceStates.set(auMetadata.id, currentBalance);
|
105
|
+
};
|
106
|
+
this.clearTransactionState = () => {
|
107
|
+
this.transactionState = {
|
108
|
+
nodes: new Map(),
|
109
|
+
edges: [],
|
110
|
+
balanceStates: new Map(),
|
111
|
+
metadata: {
|
112
|
+
totalProofs: 0,
|
113
|
+
totalSignatures: 0,
|
114
|
+
totalFees: 0,
|
115
|
+
accountUpdates: 0
|
116
|
+
},
|
117
|
+
relationships: new Map()
|
118
|
+
};
|
119
|
+
};
|
120
|
+
this.getTransactionState = (transaction) => {
|
121
|
+
if (!this.transactionState) {
|
122
|
+
this.clearTransactionState();
|
123
|
+
}
|
124
|
+
else {
|
125
|
+
this.transactionState.nodes = new Map();
|
126
|
+
this.transactionState.edges = [];
|
127
|
+
this.transactionState.relationships = new Map();
|
128
|
+
}
|
129
|
+
this.traverseTransaction(transaction);
|
130
|
+
const auRelationships = this.auAnalyzer.getRelationships();
|
131
|
+
const plainRelationships = new Map();
|
132
|
+
auRelationships.forEach((rel, key) => {
|
133
|
+
const contractName = rel.method?.contract || '';
|
134
|
+
const contractAnalysis = this.contractAnalyzer.getContract(contractName);
|
135
|
+
const stateNames = contractAnalysis
|
136
|
+
? contractAnalysis.stateFields.map(f => f.name).join(', ')
|
137
|
+
: '';
|
138
|
+
const expandedChildren = Array.isArray(rel.children) && rel.children.length > 0
|
139
|
+
? rel.children.join(', ')
|
140
|
+
: '';
|
141
|
+
const expandedMethod = rel.method
|
142
|
+
? `Contract: ${rel.method.contract ?? ''}, Method: ${rel.method.name ?? ''}`
|
143
|
+
: 'N/A';
|
144
|
+
const expandedStateChanges = Array.isArray(rel.stateChanges)
|
145
|
+
? rel.stateChanges
|
146
|
+
.map(change => `Field: ${change.field ?? ''}, IsSome: ${change.value?.isSome ?? false}, Value: ${change.value?.value ?? '0'}`)
|
147
|
+
.join(' | ')
|
148
|
+
: 'No State Changes';
|
149
|
+
plainRelationships.set(key, {
|
150
|
+
...rel,
|
151
|
+
children: expandedChildren,
|
152
|
+
method: expandedMethod,
|
153
|
+
onChainStates: stateNames,
|
154
|
+
stateChanges: expandedStateChanges
|
155
|
+
});
|
156
|
+
});
|
157
|
+
const expandedEdges = this.buildEdgesFromRelationships(auRelationships)
|
158
|
+
.map(edge => {
|
159
|
+
const operation = edge.operation;
|
160
|
+
const amountValue = (typeof operation.amount?.value === 'number' && !isNaN(operation.amount.value))
|
161
|
+
? operation.amount.value
|
162
|
+
: 0;
|
163
|
+
const denomination = operation.amount?.denomination || 'unknown';
|
164
|
+
// Build the amount string if amount exists
|
165
|
+
const amount = operation.amount
|
166
|
+
? `, Amount: ${amountValue} ${denomination}`
|
167
|
+
: '';
|
168
|
+
// Validate fee
|
169
|
+
const fee = (typeof operation.fee === 'number' || typeof operation.fee === 'string')
|
170
|
+
? `, Fee: ${operation.fee}`
|
171
|
+
: '';
|
172
|
+
const flattenedOperation = `Sequence: ${operation.sequence ?? 'N/A'}, Type: ${operation.type ?? 'N/A'}, Status: ${operation.status ?? 'N/A'}${amount}${fee}`;
|
173
|
+
return {
|
174
|
+
id: edge.id,
|
175
|
+
fromNode: edge.fromNode,
|
176
|
+
toNode: edge.toNode,
|
177
|
+
operation: flattenedOperation
|
178
|
+
};
|
179
|
+
});
|
180
|
+
/*const state = {
|
181
|
+
nodes: Object.fromEntries(this.transactionState.nodes),
|
182
|
+
edges: expandedEdges,
|
183
|
+
balanceStates: Object.fromEntries(this.transactionState.balanceStates),
|
184
|
+
metadata: this.transactionState.metadata,
|
185
|
+
relationships: Object.fromEntries(plainRelationships)
|
186
|
+
};*/
|
187
|
+
const finalState = {
|
188
|
+
nodes: this.transactionState.nodes,
|
189
|
+
edges: expandedEdges,
|
190
|
+
balanceStates: this.transactionState.balanceStates,
|
191
|
+
/*metadata: {
|
192
|
+
...this.transactionState.metadata,
|
193
|
+
totalFees: this.getTotalFeesInMina() // Add here to convert to MINA
|
194
|
+
},*/
|
195
|
+
metadata: this.transactionState.metadata,
|
196
|
+
relationships: plainRelationships
|
197
|
+
};
|
198
|
+
//this.transactionSnapshots = [...this.transactionSnapshots, state];
|
199
|
+
this.transactionSnapshots = [...this.transactionSnapshots, finalState];
|
200
|
+
return {
|
201
|
+
nodes: this.transactionState.nodes,
|
202
|
+
edges: expandedEdges,
|
203
|
+
balanceStates: this.transactionState.balanceStates,
|
204
|
+
/*metadata: {
|
205
|
+
...this.transactionState.metadata,
|
206
|
+
totalFees: this.getTotalFeesInMina() // Add here to convert to MINA
|
207
|
+
},*/
|
208
|
+
metadata: this.transactionState.metadata,
|
209
|
+
relationships: plainRelationships
|
210
|
+
};
|
211
|
+
};
|
212
|
+
this.getTransactions = (...transactionStates) => {
|
213
|
+
for (const txState of transactionStates) {
|
214
|
+
if (txState) {
|
215
|
+
this.getTransactionState(txState);
|
216
|
+
}
|
217
|
+
}
|
218
|
+
};
|
219
|
+
this.auAnalyzer = new AccountUpdateAnalyzer();
|
220
|
+
this.contractAnalyzer = new SmartContractAnalyzer();
|
221
|
+
this.contractAnalysis = new Map();
|
222
|
+
this.transactionState = {
|
223
|
+
nodes: new Map(),
|
224
|
+
edges: [],
|
225
|
+
balanceStates: new Map(),
|
226
|
+
metadata: {
|
227
|
+
totalProofs: 0,
|
228
|
+
totalSignatures: 0,
|
229
|
+
totalFees: 0,
|
230
|
+
accountUpdates: 0
|
231
|
+
},
|
232
|
+
relationships: new Map()
|
233
|
+
};
|
234
|
+
}
|
235
|
+
initializeContracts(contracts) {
|
236
|
+
contracts.forEach(contract => {
|
237
|
+
this.contractAnalyzer.analyzeContractInstance(contract);
|
238
|
+
});
|
239
|
+
this.contractAnalysis = this.contractAnalyzer.getContracts();
|
240
|
+
}
|
241
|
+
getContractAnalysis() {
|
242
|
+
return this.contractAnalysis;
|
243
|
+
}
|
244
|
+
getContractAnalysisFor(contractName) {
|
245
|
+
return this.contractAnalysis.get(contractName);
|
246
|
+
}
|
247
|
+
getTotalFeesInMina() {
|
248
|
+
const feesInNanomina = BigInt(this.transactionState.metadata.totalFees);
|
249
|
+
const feesInMina = Number(feesInNanomina) / 1e9;
|
250
|
+
return Number(feesInMina);
|
251
|
+
}
|
252
|
+
determineAuthorizationType(au) {
|
253
|
+
if (au.lazyAuthorization?.kind === 'lazy-proof')
|
254
|
+
return 'proof';
|
255
|
+
if (au.lazyAuthorization?.kind === 'lazy-signature')
|
256
|
+
return 'signature';
|
257
|
+
return 'none';
|
258
|
+
}
|
259
|
+
isContractAccount(au) {
|
260
|
+
//console.log(`Verification Key of ${au.body.publicKey.toBase58()} : ${au.body?.update?.verificationKey.value.hash}`)
|
261
|
+
//console.log(`Auth kind of ${au.body.publicKey.toBase58()} : ${au.lazyAuthorization?.kind}`)
|
262
|
+
// 1. Check the label for contract indicators
|
263
|
+
if (au.label) {
|
264
|
+
const labelLower = au.label.toLowerCase();
|
265
|
+
//console.log('Label: ', labelLower)
|
266
|
+
if (labelLower.includes('contract') ||
|
267
|
+
labelLower.includes('zkapp') ||
|
268
|
+
labelLower.includes('deploy')) {
|
269
|
+
return true;
|
270
|
+
}
|
271
|
+
}
|
272
|
+
//2. Check for verification key updates
|
273
|
+
// Contracts typically have verification keys
|
274
|
+
if (au.body?.update?.verificationKey.value.data) {
|
275
|
+
return true;
|
276
|
+
}
|
277
|
+
/*
|
278
|
+
// 3. Check for proof-based permissions
|
279
|
+
// Contracts typically use proofs for authorization
|
280
|
+
if (au.body?.update?.permissions.value) {
|
281
|
+
const permissions = au.body.update.permissions.value;
|
282
|
+
const requiresProof = (
|
283
|
+
(
|
284
|
+
permissions.editState.constant.toBoolean() === false &&
|
285
|
+
permissions.editState?.signatureNecessary?.toBoolean() === false &&
|
286
|
+
permissions.editState?.signatureSufficient?.toBoolean() === false
|
287
|
+
) || (
|
288
|
+
permissions.send?.constant?.toBoolean() === false &&
|
289
|
+
permissions.send?.signatureNecessary?.toBoolean() === false &&
|
290
|
+
permissions.send?.signatureSufficient?.toBoolean() === false
|
291
|
+
)
|
292
|
+
)
|
293
|
+
if (requiresProof) {
|
294
|
+
return true;
|
295
|
+
}
|
296
|
+
}*/
|
297
|
+
// 4. Check authorization type
|
298
|
+
// Contracts often use proof-based authorization
|
299
|
+
if (au.lazyAuthorization?.kind === 'lazy-proof') {
|
300
|
+
return true;
|
301
|
+
}
|
302
|
+
// If none of the above, it's probably a regular account
|
303
|
+
return false;
|
304
|
+
}
|
305
|
+
buildEdgesFromRelationships(relationships) {
|
306
|
+
const edges = [];
|
307
|
+
let sequence = 1;
|
308
|
+
relationships.forEach(relationship => {
|
309
|
+
if (relationship.parentId) {
|
310
|
+
const edge = {
|
311
|
+
id: `op${sequence++}`,
|
312
|
+
fromNode: relationship.parentId,
|
313
|
+
toNode: relationship.id,
|
314
|
+
operation: {
|
315
|
+
sequence,
|
316
|
+
type: relationship.method?.name || 'update',
|
317
|
+
status: 'success'
|
318
|
+
}
|
319
|
+
};
|
320
|
+
if (relationship.stateChanges?.length) {
|
321
|
+
edge.operation.amount = {
|
322
|
+
value: Number(relationship.stateChanges[0].value),
|
323
|
+
denomination: 'USD'
|
324
|
+
};
|
325
|
+
}
|
326
|
+
edges.push(edge);
|
327
|
+
}
|
328
|
+
});
|
329
|
+
return edges;
|
330
|
+
}
|
331
|
+
getStateHistory() {
|
332
|
+
return this.transactionSnapshots;
|
333
|
+
}
|
334
|
+
}
|
335
|
+
//# sourceMappingURL=autrace.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"autrace.js","sourceRoot":"","sources":["../../src/autrace.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,CAAA"}
|
package/package.json
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
{
|
2
|
+
"name": "autrace",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "Account Update analyser for MINA",
|
5
|
+
"main": "build/src/index.js",
|
6
|
+
"types": "build/src/index.d.ts",
|
7
|
+
"files": [
|
8
|
+
"build",
|
9
|
+
"README.md",
|
10
|
+
"LICENSE"
|
11
|
+
],
|
12
|
+
"type": "module",
|
13
|
+
"scripts": {
|
14
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
15
|
+
"build": "tsc"
|
16
|
+
},
|
17
|
+
"author": "krish",
|
18
|
+
"license": "ISC",
|
19
|
+
"devDependencies": {
|
20
|
+
"@types/node": "^22.13.0",
|
21
|
+
"typescript": "^5.7.3"
|
22
|
+
},
|
23
|
+
"dependencies": {
|
24
|
+
"@mermaid-js/mermaid-cli": "^11.4.2",
|
25
|
+
"o1js": "^2.2.0"
|
26
|
+
}
|
27
|
+
}
|