autrace 0.0.4 → 0.0.6

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 CHANGED
@@ -102,10 +102,15 @@ const summary = asciiVisuals.visualizeChangeSummary(snapshots);
102
102
  console.log(summary);
103
103
  ```
104
104
 
105
- ### Example Output
105
+ ### Visualising onchain transactions
106
+
107
+ Visualize any zkapp transaction from the chain like so
108
+
109
+ ```bash
110
+ BLOCKBERRY_API_KEY=your_api_key npx aucli --tx 5JttgfFUzZXfYYksdbZHms7eDvqwvzvf65GuirsAcNaZpFC5BC5z
111
+ ```
112
+ This will generate a `transaction_visualization.png` with the visulaisation.
106
113
 
107
- The ASCIIVisualizer provides a colorized terminal output that looks like this:
108
- ![AU-Change-Visualiser](https://imgur.com/a/jR433Ht)
109
114
 
110
115
  ### Important Notes
111
116
 
@@ -4,14 +4,19 @@ export declare class AccountUpdateAnalyzer {
4
4
  private auRelationships;
5
5
  private currentDepth;
6
6
  private parentStack;
7
+ private tokenMap;
7
8
  constructor();
9
+ reset(): void;
8
10
  processAccountUpdate(au: AccountUpdate): void;
9
11
  private extractMethodInfo;
10
12
  private extractStateChanges;
13
+ private processTokenRelationships;
11
14
  getRelationships(): Map<string, AccountUpdateRelationship>;
12
15
  getHierarchicalView(): {
13
16
  id: string;
14
17
  label: string;
15
18
  children: any[];
19
+ tokenId?: string;
20
+ failed?: boolean;
16
21
  }[];
17
22
  }
@@ -2,11 +2,34 @@ export class AccountUpdateAnalyzer {
2
2
  constructor() {
3
3
  this.currentDepth = 0;
4
4
  this.parentStack = []; // Stack to track parent AUs
5
+ this.tokenMap = new Map();
5
6
  this.auRelationships = new Map();
7
+ this.tokenMap = new Map();
8
+ }
9
+ reset() {
10
+ this.auRelationships = new Map();
11
+ this.currentDepth = 0;
12
+ this.parentStack = [];
13
+ this.tokenMap = new Map();
6
14
  }
7
15
  processAccountUpdate(au) {
8
16
  const auId = au.id.toString();
9
- const callDepth = au.body.callDepth || 0;
17
+ //const callDepth = au.body.callDepth || 0;
18
+ let callDepth = 0;
19
+ if (au.metadata?.callDepth !== undefined) {
20
+ callDepth = au.metadata.callDepth;
21
+ }
22
+ else if (au.body.callDepth !== undefined) {
23
+ callDepth = au.body.callDepth;
24
+ }
25
+ // Extract failure information if present
26
+ const failed = au.metadata?.failed || false;
27
+ const failureReason = au.metadata?.failureReason;
28
+ const tokenId = au.metadata?.tokenId || au.body.tokenId || 'default';
29
+ if (!this.tokenMap.has(tokenId)) {
30
+ this.tokenMap.set(tokenId, []);
31
+ }
32
+ this.tokenMap.get(tokenId).push(auId);
10
33
  // Manage parent stack based on call depth
11
34
  while (this.currentDepth >= callDepth && this.parentStack.length > 0) {
12
35
  this.parentStack.pop();
@@ -14,15 +37,23 @@ export class AccountUpdateAnalyzer {
14
37
  }
15
38
  const parentId = this.parentStack.length > 0 ? this.parentStack[this.parentStack.length - 1] : undefined;
16
39
  const methodInfo = this.extractMethodInfo(au);
40
+ // Get label, handle failure info
41
+ let label = au.label || 'Unnamed Update';
42
+ if (failed) {
43
+ label = `[FAILED] ${label}`;
44
+ }
17
45
  // Create relationship entry
18
46
  const relationship = {
19
47
  id: auId,
20
- label: au.label || 'Unnamed Update',
48
+ label: label,
21
49
  parentId,
22
50
  children: [],
23
51
  depth: callDepth,
24
52
  method: this.extractMethodInfo(au),
25
- stateChanges: this.extractStateChanges(au)
53
+ stateChanges: this.extractStateChanges(au),
54
+ tokenId: tokenId,
55
+ failed: failed,
56
+ failureReason: failureReason
26
57
  };
27
58
  // Update parent's children array
28
59
  if (parentId) {
@@ -33,10 +64,19 @@ export class AccountUpdateAnalyzer {
33
64
  }
34
65
  this.auRelationships.set(auId, relationship);
35
66
  // Update stack for next iterations
36
- this.parentStack.push(auId);
37
- this.currentDepth = callDepth;
67
+ if (!failed) { // Only use non-failed operations as potential parents
68
+ this.parentStack.push(auId);
69
+ this.currentDepth = callDepth;
70
+ }
38
71
  }
39
72
  extractMethodInfo(au) {
73
+ // First check blockchain format
74
+ if (au.lazyAuthorization?.methodName) {
75
+ return {
76
+ contract: au.label || 'Unknown',
77
+ name: au.lazyAuthorization.methodName
78
+ };
79
+ }
40
80
  if (!au.label)
41
81
  return undefined;
42
82
  const parts = au.label.split('.');
@@ -49,6 +89,13 @@ export class AccountUpdateAnalyzer {
49
89
  return undefined;
50
90
  }
51
91
  extractStateChanges(au) {
92
+ // Check blockchain format first
93
+ if (au.metadata?.stateUpdates) {
94
+ return au.metadata.stateUpdates.map((update) => ({
95
+ field: update.type || 'unknown',
96
+ value: update.value
97
+ }));
98
+ }
52
99
  const changes = [];
53
100
  if (au.body?.update?.appState) {
54
101
  au.body.update.appState.forEach((state, index) => {
@@ -62,10 +109,42 @@ export class AccountUpdateAnalyzer {
62
109
  }
63
110
  return changes.length > 0 ? changes : undefined;
64
111
  }
112
+ processTokenRelationships() {
113
+ // For each token, identify operations that should be related
114
+ for (const [tokenId, operations] of this.tokenMap.entries()) {
115
+ if (operations.length <= 1)
116
+ continue;
117
+ // Find operations without parents that can be related
118
+ const orphans = operations.filter(id => {
119
+ const rel = this.auRelationships.get(id);
120
+ return rel && !rel.parentId && !rel.failed;
121
+ });
122
+ if (orphans.length <= 1)
123
+ continue;
124
+ // Use first operation as a root for others
125
+ const rootId = orphans[0];
126
+ if (!rootId)
127
+ continue;
128
+ const rootRel = this.auRelationships.get(rootId);
129
+ if (!rootRel)
130
+ continue;
131
+ // Connect other orphans to the root
132
+ for (let i = 1; i < orphans.length; i++) {
133
+ const orphanId = orphans[i];
134
+ const orphanRel = this.auRelationships.get(orphanId);
135
+ if (orphanRel && !orphanRel.parentId) {
136
+ orphanRel.parentId = rootId;
137
+ rootRel.children.push(orphanId);
138
+ }
139
+ }
140
+ }
141
+ }
65
142
  getRelationships() {
143
+ this.processTokenRelationships();
66
144
  return this.auRelationships;
67
145
  }
68
146
  getHierarchicalView() {
147
+ this.processTokenRelationships();
69
148
  // Get root level AUs (those without parents)
70
149
  const roots = Array.from(this.auRelationships.values())
71
150
  .filter(r => !r.parentId);
@@ -76,6 +155,9 @@ export class AccountUpdateAnalyzer {
76
155
  label: auRelationship.label,
77
156
  method: auRelationship.method,
78
157
  stateChanges: auRelationship.stateChanges,
158
+ tokenId: auRelationship.tokenId,
159
+ failed: auRelationship.failed,
160
+ failureReason: auRelationship.failureReason,
79
161
  children: auRelationship.children.map(childId => {
80
162
  const child = this.auRelationships.get(childId);
81
163
  return child ? buildTree(child) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"AccountUpdateAnalyzer.js","sourceRoot":"","sources":["../../src/AccountUpdateAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountUpdateAnalyzer.js","sourceRoot":"","sources":["../../src/AccountUpdateAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const adaptBlockchainTransaction: (blockchainTx: any) => any;
@@ -0,0 +1,184 @@
1
+ export const adaptBlockchainTransaction = (blockchainTx) => {
2
+ // If the transaction is already in the expected format, return it as is
3
+ if (blockchainTx?.transaction?.accountUpdates) {
4
+ return blockchainTx;
5
+ }
6
+ const accountUpdates = [];
7
+ if (blockchainTx.updatedAccounts && Array.isArray(blockchainTx.updatedAccounts)) {
8
+ blockchainTx.updatedAccounts.forEach((account, index) => {
9
+ // Create an account update object similar to what o1js would generate
10
+ const accountUpdate = createAUFromBlockchainData(account, index, blockchainTx);
11
+ accountUpdates.push(accountUpdate);
12
+ });
13
+ }
14
+ return {
15
+ transaction: {
16
+ accountUpdates,
17
+ hash: blockchainTx.txHash,
18
+ blockHeight: blockchainTx.blockHeight,
19
+ memo: blockchainTx.memo || '',
20
+ status: blockchainTx.txStatus,
21
+ failures: blockchainTx.failures || []
22
+ },
23
+ originalBlockchainData: blockchainTx // Keep the original data for reference
24
+ };
25
+ };
26
+ const createAUFromBlockchainData = (account, index, tx) => {
27
+ // Check if this update failed
28
+ const isFailedUpdate = tx.failures && tx.failures.some((f) => f.index === index);
29
+ const failureReason = isFailedUpdate
30
+ ? tx.failures.find((f) => f.index === index)?.failureReason
31
+ : undefined;
32
+ const isProof = account.update?.permissions?.editState === 'proof' ||
33
+ account.update?.permissions?.send === 'proof';
34
+ const isSignature = account.update?.permissions?.incrementNonce === 'signature' ||
35
+ account.update?.permissions?.setDelegate === 'signature';
36
+ // Generate unique ID similar to what o1js would use
37
+ const id = `${tx.txHash}-${index}`;
38
+ // Determine if this is a contract
39
+ const isContract = account.isZkappAccount ||
40
+ account.update?.verificationKey !== null ||
41
+ isProof;
42
+ // Create a label for the account update
43
+ let label = isContract ? `Contract-${account.accountAddress.substring(0, 8)}` :
44
+ `Account-${account.accountAddress.substring(0, 8)}`;
45
+ // Add status to label if failed
46
+ if (isFailedUpdate) {
47
+ label = `[FAILED] ${label}`;
48
+ }
49
+ // Create authorization based on permissions
50
+ const authorization = {};
51
+ if (isProof) {
52
+ authorization.proof = true;
53
+ }
54
+ else if (isSignature) {
55
+ authorization.signature = true;
56
+ }
57
+ // Extract and process state updates
58
+ const stateUpdates = extractStateUpdates(account.update);
59
+ // Create balance change info
60
+ const balanceChange = account.totalBalanceChange || 0;
61
+ const isNegative = balanceChange < 0;
62
+ return {
63
+ id,
64
+ label,
65
+ lazyAuthorization: {
66
+ kind: isProof ? 'lazy-proof' : isSignature ? 'lazy-signature' : 'none',
67
+ methodName: account.callData && account.callData !== '0' ? 'methodCall' : undefined,
68
+ args: account.callData && account.callData !== '0' ? [account.callData] : undefined
69
+ },
70
+ authorization,
71
+ body: {
72
+ publicKey: {
73
+ toBase58: () => account.accountAddress
74
+ },
75
+ balanceChange: {
76
+ magnitude: Math.abs(balanceChange).toString(),
77
+ isNegative: () => isNegative,
78
+ toString: () => (isNegative ? '-' : '') + Math.abs(balanceChange).toString()
79
+ },
80
+ update: {
81
+ appState: extractAppState(account.update),
82
+ verificationKey: {
83
+ value: {
84
+ hash: account.verificationKeyHash,
85
+ data: account.update?.verificationKey
86
+ }
87
+ },
88
+ permissions: {
89
+ value: mapPermissions(account.update?.permissions)
90
+ }
91
+ }
92
+ },
93
+ // Additional metadata for blockchain-specific information
94
+ metadata: {
95
+ callDepth: account.callDepth || 0,
96
+ tokenId: account.tokenId,
97
+ isZkappAccount: account.isZkappAccount,
98
+ incrementNonce: account.incrementNonce,
99
+ failed: isFailedUpdate,
100
+ failureReason: failureReason,
101
+ stateUpdates: stateUpdates
102
+ }
103
+ };
104
+ };
105
+ const extractAppState = (update) => {
106
+ if (!update || !update.appState || !Array.isArray(update.appState)) {
107
+ return [];
108
+ }
109
+ return update.appState.map((state) => state || '0');
110
+ };
111
+ const extractStateUpdates = (update) => {
112
+ if (!update)
113
+ return [];
114
+ const stateUpdates = [];
115
+ // Check appState
116
+ if (update.appState && Array.isArray(update.appState)) {
117
+ stateUpdates.push({
118
+ type: 'appState',
119
+ value: update.appState
120
+ });
121
+ }
122
+ // Check for delegate changes
123
+ if (update.delegatee) {
124
+ stateUpdates.push({
125
+ type: 'delegate',
126
+ value: update.delegatee
127
+ });
128
+ }
129
+ // Check for timing changes
130
+ if (update.timing) {
131
+ stateUpdates.push({
132
+ type: 'timing',
133
+ value: update.timing
134
+ });
135
+ }
136
+ // Check for token symbol changes
137
+ if (update.tokenSymbol) {
138
+ stateUpdates.push({
139
+ type: 'tokenSymbol',
140
+ value: update.tokenSymbol
141
+ });
142
+ }
143
+ // Check for other updates like votingFor or zkappUri
144
+ if (update.votingFor) {
145
+ stateUpdates.push({
146
+ type: 'votingFor',
147
+ value: update.votingFor
148
+ });
149
+ }
150
+ if (update.zkappUri) {
151
+ stateUpdates.push({
152
+ type: 'zkappUri',
153
+ value: update.zkappUri
154
+ });
155
+ }
156
+ return stateUpdates;
157
+ };
158
+ const mapPermissions = (permissions) => {
159
+ if (!permissions)
160
+ return {};
161
+ const createPermission = (type) => {
162
+ const isProof = permissions[type] === 'proof';
163
+ const isSignature = permissions[type] === 'signature';
164
+ return {
165
+ constant: { toBoolean: () => permissions[type] === 'none' },
166
+ signatureNecessary: { toBoolean: () => isSignature },
167
+ signatureSufficient: { toBoolean: () => isSignature },
168
+ proof: { toBoolean: () => isProof }
169
+ };
170
+ };
171
+ const permissionTypes = [
172
+ 'editState', 'send', 'receive', 'setDelegate', 'setPermissions',
173
+ 'setVerificationKey', 'setZkappUri', 'editActionState', 'setTokenSymbol',
174
+ 'incrementNonce', 'setVotingFor', 'setTiming'
175
+ ];
176
+ const mappedPermissions = {};
177
+ permissionTypes.forEach(type => {
178
+ if (permissions[type] !== undefined) {
179
+ mappedPermissions[type] = createPermission(type);
180
+ }
181
+ });
182
+ return mappedPermissions;
183
+ };
184
+ //# sourceMappingURL=BlockchainAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockchainAdapter.js","sourceRoot":"","sources":["../../src/BlockchainAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { TransactionState, TransactionFlowGraph } from './Interface.js';
2
+ export declare class BlockchainFlowAnalyzer {
3
+ analyzeTransactionFlow: (blockchainTx: any) => TransactionFlowGraph;
4
+ private processAccountUpdates;
5
+ private mapFailureInfo;
6
+ private buildCallDepthRelationships;
7
+ private buildStateDepRelationships;
8
+ private buildTokenRelationships;
9
+ private buildFeepayerRelationships;
10
+ private buildCallDataRelationships;
11
+ private buildTemporalRelationships;
12
+ private mergeRelationships;
13
+ private applyFailureStatus;
14
+ private extractTokenSymbol;
15
+ private extractStateValues;
16
+ enhanceTransactionState: (txState: TransactionState, blockchainTx: any) => TransactionState;
17
+ }