@subsquid/evm-objects 0.0.2-portal-api.a8e10e
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 +76 -0
- package/lib/augment.d.ts +4 -0
- package/lib/augment.d.ts.map +1 -0
- package/lib/augment.js +11 -0
- package/lib/augment.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +23 -0
- package/lib/index.js.map +1 -0
- package/lib/items.d.ts +125 -0
- package/lib/items.d.ts.map +1 -0
- package/lib/items.js +301 -0
- package/lib/items.js.map +1 -0
- package/lib/relations.d.ts +3 -0
- package/lib/relations.d.ts.map +1 -0
- package/lib/relations.js +70 -0
- package/lib/relations.js.map +1 -0
- package/lib/types.d.ts +68 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/util.d.ts +8 -0
- package/lib/util.d.ts.map +1 -0
- package/lib/util.js +22 -0
- package/lib/util.js.map +1 -0
- package/package.json +29 -0
- package/src/augment.ts +11 -0
- package/src/index.ts +3 -0
- package/src/items.ts +400 -0
- package/src/relations.ts +74 -0
- package/src/types.ts +91 -0
- package/src/util.ts +27 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":";;AAIA,wCA6CC;AAjDD,2DAAiD;AAIjD,SAAgB,cAAc,CAAC,KAAY;IACvC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAA;IAC1E,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;IAClD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAE/B,IAAI,GAAG,GAAgC,IAAI,KAAK,CAAC,CAAC,IAAA,yBAAS,EAAC,KAAK,CAAC,YAAY,CAAC,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7G,KAAK,IAAI,EAAE,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAChC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAA;IACjC,CAAC;IAED,KAAK,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAClC,IAAI,EAAE,EAAE,CAAC;YACL,GAAG,CAAC,WAAW,GAAG,EAAE,CAAA;YACpB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC;IACL,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;QACpC,IAAI,EAAE,EAAE,CAAC;YACL,KAAK,CAAC,WAAW,GAAG,EAAE,CAAA;YACtB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACzB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;gBACvB,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAK;YACT,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;QACxC,IAAI,EAAE,EAAE,CAAC;YACL,SAAS,CAAC,WAAW,GAAG,EAAE,CAAA;YAC1B,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACjC,CAAC;IACL,CAAC;AACL,CAAC;AAGD,SAAS,YAAY,CAAC,CAAQ,EAAE,CAAQ;IACpC,OAAO,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,IAAI,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAA;AACpG,CAAC;AAGD,SAAS,cAAc,CAAC,CAAW,EAAE,CAAW;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IAC3B,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;AAC9B,CAAC;AAGD,SAAS,YAAY,CAAC,MAAa,EAAE,KAAY;IAC7C,IAAI,MAAM,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAA;IACnE,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;IACrE,CAAC;IACD,OAAO,IAAI,CAAA;AACf,CAAC"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { FieldSelection } from '@subsquid/evm-stream';
|
|
2
|
+
import * as base from '@subsquid/evm-stream';
|
|
3
|
+
export type BlockHeader<F extends FieldSelection = {}> = base.BlockHeader<F> & {
|
|
4
|
+
id: string;
|
|
5
|
+
};
|
|
6
|
+
export type Transaction<F extends FieldSelection = {}> = base.Transaction<F> & {
|
|
7
|
+
id: string;
|
|
8
|
+
block: BlockHeader<F>;
|
|
9
|
+
logs: Log<F>[];
|
|
10
|
+
traces: Trace<F>[];
|
|
11
|
+
stateDiffs: StateDiff<F>[];
|
|
12
|
+
};
|
|
13
|
+
export type Log<F extends FieldSelection = {}> = base.Log<F> & {
|
|
14
|
+
id: string;
|
|
15
|
+
block: BlockHeader<F>;
|
|
16
|
+
transaction?: Transaction<F>;
|
|
17
|
+
getTransaction(): Transaction<F>;
|
|
18
|
+
};
|
|
19
|
+
export type TraceCreate<F extends FieldSelection = {}> = base.TraceCreate<F> & {
|
|
20
|
+
id: string;
|
|
21
|
+
block: BlockHeader<F>;
|
|
22
|
+
transaction?: Transaction<F>;
|
|
23
|
+
getTransaction(): Transaction<F>;
|
|
24
|
+
parent?: Trace<F>;
|
|
25
|
+
getParent(): Trace<F>;
|
|
26
|
+
children: Trace<F>[];
|
|
27
|
+
};
|
|
28
|
+
export type TraceCall<F extends FieldSelection = {}> = base.TraceCall<F> & {
|
|
29
|
+
id: string;
|
|
30
|
+
block: BlockHeader<F>;
|
|
31
|
+
transaction?: Transaction<F>;
|
|
32
|
+
getTransaction(): Transaction<F>;
|
|
33
|
+
parent?: Trace<F>;
|
|
34
|
+
getParent(): Trace<F>;
|
|
35
|
+
children: Trace<F>[];
|
|
36
|
+
};
|
|
37
|
+
export type TraceSuicide<F extends FieldSelection = {}> = base.TraceSuicide<F> & {
|
|
38
|
+
id: string;
|
|
39
|
+
block: BlockHeader<F>;
|
|
40
|
+
transaction?: Transaction<F>;
|
|
41
|
+
getTransaction(): Transaction<F>;
|
|
42
|
+
parent?: Trace<F>;
|
|
43
|
+
getParent(): Trace<F>;
|
|
44
|
+
children: Trace<F>[];
|
|
45
|
+
};
|
|
46
|
+
export type TraceReward<F extends FieldSelection = {}> = base.TraceReward<F> & {
|
|
47
|
+
id: string;
|
|
48
|
+
block: BlockHeader<F>;
|
|
49
|
+
transaction?: Transaction<F>;
|
|
50
|
+
getTransaction(): Transaction<F>;
|
|
51
|
+
parent?: Trace<F>;
|
|
52
|
+
getParent(): Trace<F>;
|
|
53
|
+
children: Trace<F>[];
|
|
54
|
+
};
|
|
55
|
+
export type Trace<F extends FieldSelection = {}> = TraceCreate<F> | TraceCall<F> | TraceSuicide<F> | TraceReward<F>;
|
|
56
|
+
export type StateDiff<F extends FieldSelection = {}> = base.StateDiff<F> & {
|
|
57
|
+
block: BlockHeader<F>;
|
|
58
|
+
transaction?: Transaction<F>;
|
|
59
|
+
getTransaction(): Transaction<F>;
|
|
60
|
+
};
|
|
61
|
+
export interface Block<F extends FieldSelection = {}> {
|
|
62
|
+
header: BlockHeader<F>;
|
|
63
|
+
transactions: Transaction<F>[];
|
|
64
|
+
logs: Log<F>[];
|
|
65
|
+
traces: Trace<F>[];
|
|
66
|
+
stateDiffs: StateDiff<F>[];
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAC,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAA;AAG5C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;IAC3E,EAAE,EAAE,MAAM,CAAA;CACb,CAAA;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;IAC3E,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACrB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACd,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAClB,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;CAC7B,CAAA;AAGD,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;IAC3D,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAC5B,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;CACnC,CAAA;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;IAC3E,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAC5B,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;CACvB,CAAA;AAGD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;IACvE,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAC5B,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;CACvB,CAAA;AAGD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG;IAC7E,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAC5B,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;CACvB,CAAA;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;IAC3E,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAC5B,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;CACvB,CAAA;AAGD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IACzC,WAAW,CAAC,CAAC,CAAC,GACd,SAAS,CAAC,CAAC,CAAC,GACZ,YAAY,CAAC,CAAC,CAAC,GACf,WAAW,CAAC,CAAC,CAAC,CAAA;AAGpB,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;IACvE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IAC5B,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;CACnC,CAAA;AAGD,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,cAAc,GAAG,EAAE;IAChD,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACtB,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACd,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAClB,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;CAC7B"}
|
package/lib/types.js
ADDED
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/lib/util.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Bytes32 } from '@subsquid/evm-stream';
|
|
2
|
+
export interface HashAndNumber {
|
|
3
|
+
hash: Bytes32;
|
|
4
|
+
number: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function shortHash(hash: string): string;
|
|
7
|
+
export declare function formatId(block: HashAndNumber, ...address: number[]): string;
|
|
8
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAA;AAG5C,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACjB;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9C;AAGD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAQ3E"}
|
package/lib/util.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shortHash = shortHash;
|
|
4
|
+
exports.formatId = formatId;
|
|
5
|
+
function shortHash(hash) {
|
|
6
|
+
if (hash.startsWith('0x')) {
|
|
7
|
+
return hash.slice(2, 7);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return hash.slice(0, 5);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function formatId(block, ...address) {
|
|
14
|
+
let no = block.number.toString().padStart(10, '0');
|
|
15
|
+
let hash = shortHash(block.hash);
|
|
16
|
+
let id = `${no}-${hash}`;
|
|
17
|
+
for (let index of address) {
|
|
18
|
+
id += '-' + index.toString().padStart(6, '0');
|
|
19
|
+
}
|
|
20
|
+
return id;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=util.js.map
|
package/lib/util.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;AASA,8BAMC;AAGD,4BAQC;AAjBD,SAAgB,SAAS,CAAC,IAAY;IAClC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,CAAC;AACL,CAAC;AAGD,SAAgB,QAAQ,CAAC,KAAoB,EAAE,GAAG,OAAiB;IAC/D,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAClD,IAAI,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,IAAI,EAAE,CAAA;IACxB,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QACxB,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,EAAE,CAAA;AACb,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@subsquid/evm-objects",
|
|
3
|
+
"version": "0.0.2-portal-api.a8e10e",
|
|
4
|
+
"description": "Augmented EVM data model",
|
|
5
|
+
"license": "GPL-3.0-or-later",
|
|
6
|
+
"repository": "git@github.com:subsquid/squid.git",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
10
|
+
"main": "lib/index.js",
|
|
11
|
+
"files": [
|
|
12
|
+
"lib",
|
|
13
|
+
"src"
|
|
14
|
+
],
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@subsquid/util-internal": "^3.2.0"
|
|
17
|
+
},
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"@subsquid/evm-stream": "0.0.1-portal-api.a8e10e"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@subsquid/evm-stream": "0.0.1-portal-api.a8e10e",
|
|
23
|
+
"@types/node": "^18.18.14",
|
|
24
|
+
"typescript": "~5.5.4"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "rm -rf lib && tsc"
|
|
28
|
+
}
|
|
29
|
+
}
|
package/src/augment.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as base from '@subsquid/evm-stream'
|
|
2
|
+
import {setUpRelations} from './relations'
|
|
3
|
+
import * as types from './types'
|
|
4
|
+
import {Block} from './items'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export function augmentBlock<F extends base.FieldSelection>(src: base.Block<F>): types.Block<F> {
|
|
8
|
+
let block = Block.fromPartial(src)
|
|
9
|
+
setUpRelations(block)
|
|
10
|
+
return block as unknown as types.Block<F>
|
|
11
|
+
}
|
package/src/index.ts
ADDED
package/src/items.ts
ADDED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import {Bytes, Bytes20, Bytes32, Bytes8} from '@subsquid/evm-stream'
|
|
2
|
+
import {
|
|
3
|
+
PartialBlock,
|
|
4
|
+
PartialBlockHeader,
|
|
5
|
+
PartialLog,
|
|
6
|
+
PartialStateDiff,
|
|
7
|
+
PartialTrace,
|
|
8
|
+
PartialTransaction
|
|
9
|
+
} from '@subsquid/evm-stream/lib/data/partial'
|
|
10
|
+
import {
|
|
11
|
+
EIP7702Authorization,
|
|
12
|
+
EvmTraceCallAction,
|
|
13
|
+
EvmTraceCallResult,
|
|
14
|
+
EvmTraceCreateAction,
|
|
15
|
+
EvmTraceCreateResult,
|
|
16
|
+
EvmTraceRewardAction,
|
|
17
|
+
EvmTraceSuicideAction
|
|
18
|
+
} from '@subsquid/evm-stream/lib/data/evm'
|
|
19
|
+
import {formatId} from './util'
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
export class Block {
|
|
23
|
+
constructor(
|
|
24
|
+
public header: BlockHeader,
|
|
25
|
+
public transactions: Transaction[],
|
|
26
|
+
public logs: Log[],
|
|
27
|
+
public traces: Trace[],
|
|
28
|
+
public stateDiffs: StateDiff[]
|
|
29
|
+
) {}
|
|
30
|
+
|
|
31
|
+
static fromPartial(src: PartialBlock): Block {
|
|
32
|
+
let header = new BlockHeader(src.header)
|
|
33
|
+
|
|
34
|
+
return new Block(
|
|
35
|
+
header,
|
|
36
|
+
src.transactions.map(i => new Transaction(header, i)),
|
|
37
|
+
src.logs.map(i => new Log(header, i)),
|
|
38
|
+
src.traces.map(i => createTrace(header, i)),
|
|
39
|
+
src.stateDiffs.map(i => createStateDiff(header, i))
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
export class BlockHeader implements PartialBlockHeader {
|
|
46
|
+
id: string
|
|
47
|
+
number: number
|
|
48
|
+
height: number
|
|
49
|
+
hash: Bytes32
|
|
50
|
+
parentHash: Bytes32
|
|
51
|
+
|
|
52
|
+
constructor(header: PartialBlockHeader) {
|
|
53
|
+
this.id = formatId(header)
|
|
54
|
+
this.number = header.number
|
|
55
|
+
this.height = header.height
|
|
56
|
+
this.hash = header.hash
|
|
57
|
+
this.parentHash = header.parentHash
|
|
58
|
+
Object.assign(this, header)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
export class Transaction implements PartialTransaction {
|
|
64
|
+
id: string
|
|
65
|
+
transactionIndex: number
|
|
66
|
+
#block: BlockHeader
|
|
67
|
+
#logs?: Log[]
|
|
68
|
+
#traces?: Trace[]
|
|
69
|
+
#stateDiffs?: StateDiff[]
|
|
70
|
+
|
|
71
|
+
constructor(block: BlockHeader, tx: PartialTransaction) {
|
|
72
|
+
this.id = formatId(block, tx.transactionIndex)
|
|
73
|
+
this.transactionIndex = tx.transactionIndex
|
|
74
|
+
this.#block = block
|
|
75
|
+
Object.assign(this, tx)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
get block(): BlockHeader {
|
|
79
|
+
return this.#block
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
set block(value: BlockHeader) {
|
|
83
|
+
this.#block = value
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
get logs(): Log[] {
|
|
87
|
+
if (this.#logs == null) {
|
|
88
|
+
this.#logs = []
|
|
89
|
+
}
|
|
90
|
+
return this.#logs
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
set logs(value: Log[]) {
|
|
94
|
+
this.#logs = value
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
get traces(): Trace[] {
|
|
98
|
+
if (this.#traces == null) {
|
|
99
|
+
this.#traces = []
|
|
100
|
+
}
|
|
101
|
+
return this.#traces
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
set traces(value: Trace[]) {
|
|
105
|
+
this.#traces = value
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
get stateDiffs(): StateDiff[] {
|
|
109
|
+
if (this.#stateDiffs == null) {
|
|
110
|
+
this.#stateDiffs = []
|
|
111
|
+
}
|
|
112
|
+
return this.#stateDiffs
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
set stateDiffs(value: StateDiff[]) {
|
|
116
|
+
this.#stateDiffs = value
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
export class Log implements PartialLog {
|
|
122
|
+
id: string
|
|
123
|
+
logIndex: number
|
|
124
|
+
transactionIndex: number
|
|
125
|
+
#block: BlockHeader
|
|
126
|
+
#transaction?: Transaction
|
|
127
|
+
|
|
128
|
+
constructor(block: BlockHeader, log: PartialLog) {
|
|
129
|
+
this.id = formatId(block, log.logIndex)
|
|
130
|
+
this.logIndex = log.logIndex
|
|
131
|
+
this.transactionIndex = log.transactionIndex
|
|
132
|
+
this.#block = block
|
|
133
|
+
Object.assign(this, log)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
get block(): BlockHeader {
|
|
137
|
+
return this.#block
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
set block(value: BlockHeader) {
|
|
141
|
+
this.#block = value
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
get transaction(): Transaction | undefined {
|
|
145
|
+
return this.#transaction
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
set transaction(value: Transaction | undefined) {
|
|
149
|
+
this.#transaction = value
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
getTransaction(): Transaction {
|
|
153
|
+
if (this.#transaction == null) {
|
|
154
|
+
throw new Error(`Transaction is not set on log ${this.id}`)
|
|
155
|
+
} else {
|
|
156
|
+
return this.#transaction
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
class TraceBase {
|
|
163
|
+
id: string
|
|
164
|
+
transactionIndex: number
|
|
165
|
+
traceAddress: number[]
|
|
166
|
+
#block: BlockHeader
|
|
167
|
+
#transaction?: Transaction
|
|
168
|
+
#parent?: Trace
|
|
169
|
+
#children?: Trace[]
|
|
170
|
+
|
|
171
|
+
constructor(block: BlockHeader, trace: PartialTrace) {
|
|
172
|
+
this.id = formatId(block, trace.transactionIndex, ...trace.traceAddress)
|
|
173
|
+
this.transactionIndex = trace.transactionIndex
|
|
174
|
+
this.traceAddress = trace.traceAddress
|
|
175
|
+
this.#block = block
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
get block(): BlockHeader {
|
|
179
|
+
return this.#block
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
set block(value: BlockHeader) {
|
|
183
|
+
this.#block = value
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
get transaction(): Transaction | undefined {
|
|
187
|
+
return this.#transaction
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
set transaction(value: Transaction | undefined) {
|
|
191
|
+
this.#transaction = value
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
getTransaction(): Transaction {
|
|
195
|
+
if (this.#transaction == null) {
|
|
196
|
+
throw new Error(`Transaction is not set on trace ${this.id}`)
|
|
197
|
+
} else {
|
|
198
|
+
return this.#transaction
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
get parent(): Trace | undefined {
|
|
203
|
+
return this.#parent
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
set parent(value: Trace | undefined) {
|
|
207
|
+
this.#parent = value
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
getParent(): Trace {
|
|
211
|
+
if (this.#parent == null) {
|
|
212
|
+
throw new Error(`Parent is not set on trace ${this.id}`)
|
|
213
|
+
} else {
|
|
214
|
+
return this.#parent
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
get children(): Trace[] {
|
|
219
|
+
if (this.#children == null) {
|
|
220
|
+
this.#children = []
|
|
221
|
+
}
|
|
222
|
+
return this.#children
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
set children(value: Trace[]) {
|
|
226
|
+
this.#children = value
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
export class TraceCreate extends TraceBase {
|
|
232
|
+
type: 'create' = 'create'
|
|
233
|
+
action?: Partial<EvmTraceCreateAction>
|
|
234
|
+
result?: Partial<EvmTraceCreateResult>
|
|
235
|
+
|
|
236
|
+
constructor(block: BlockHeader, trace: PartialTrace) {
|
|
237
|
+
super(block, trace)
|
|
238
|
+
Object.assign(this, trace)
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
export class TraceCall extends TraceBase {
|
|
244
|
+
type: 'call' = 'call'
|
|
245
|
+
action?: Partial<EvmTraceCallAction>
|
|
246
|
+
result?: Partial<EvmTraceCallResult>
|
|
247
|
+
|
|
248
|
+
constructor(block: BlockHeader, trace: PartialTrace) {
|
|
249
|
+
super(block, trace)
|
|
250
|
+
Object.assign(this, trace)
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
export class TraceSuicide extends TraceBase {
|
|
256
|
+
type: 'suicide' = 'suicide'
|
|
257
|
+
action?: Partial<EvmTraceSuicideAction>
|
|
258
|
+
|
|
259
|
+
constructor(block: BlockHeader, trace: PartialTrace) {
|
|
260
|
+
super(block, trace)
|
|
261
|
+
Object.assign(this, trace)
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
export class TraceReward extends TraceBase {
|
|
267
|
+
type: 'reward' = 'reward'
|
|
268
|
+
action?: Partial<EvmTraceRewardAction>
|
|
269
|
+
|
|
270
|
+
constructor(block: BlockHeader, trace: PartialTrace) {
|
|
271
|
+
super(block, trace)
|
|
272
|
+
Object.assign(this, trace)
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
export type Trace = TraceCreate | TraceCall | TraceSuicide | TraceReward
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
function createTrace(block: BlockHeader, trace: PartialTrace): Trace {
|
|
281
|
+
switch (trace.type) {
|
|
282
|
+
case 'create':
|
|
283
|
+
return new TraceCreate(block, trace)
|
|
284
|
+
case 'call':
|
|
285
|
+
return new TraceCall(block, trace)
|
|
286
|
+
case 'suicide':
|
|
287
|
+
return new TraceSuicide(block, trace)
|
|
288
|
+
case 'reward':
|
|
289
|
+
return new TraceReward(block, trace)
|
|
290
|
+
default:
|
|
291
|
+
throw new Error(`Unknown trace type`)
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
class StateDiffBase {
|
|
297
|
+
transactionIndex: number
|
|
298
|
+
address: Bytes20
|
|
299
|
+
key: 'balance' | 'code' | 'nonce' | Bytes32
|
|
300
|
+
#block: BlockHeader
|
|
301
|
+
#transaction?: Transaction
|
|
302
|
+
|
|
303
|
+
constructor(block: BlockHeader, stateDiff: PartialStateDiff) {
|
|
304
|
+
this.transactionIndex = stateDiff.transactionIndex
|
|
305
|
+
this.address = stateDiff.address
|
|
306
|
+
this.key = stateDiff.key
|
|
307
|
+
this.#block = block
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
get block(): BlockHeader {
|
|
311
|
+
return this.#block
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
set block(value: BlockHeader) {
|
|
315
|
+
this.#block = value
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
get transaction(): Transaction | undefined {
|
|
319
|
+
return this.#transaction
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
set transaction(value: Transaction | undefined) {
|
|
323
|
+
this.#transaction = value
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
getTransaction(): Transaction {
|
|
327
|
+
if (this.#transaction == null) {
|
|
328
|
+
throw new Error(`Transaction is not set on state diff at ${this.block.id}-${this.transactionIndex}-${this.address}-${this.key}`)
|
|
329
|
+
} else {
|
|
330
|
+
return this.#transaction
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
export class StateDiffNoChange extends StateDiffBase {
|
|
337
|
+
kind: '=' = '='
|
|
338
|
+
prev?: null
|
|
339
|
+
next?: null
|
|
340
|
+
|
|
341
|
+
constructor(block: BlockHeader, stateDiff: PartialStateDiff) {
|
|
342
|
+
super(block, stateDiff)
|
|
343
|
+
Object.assign(this, stateDiff)
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
export class StateDiffAdd extends StateDiffBase {
|
|
349
|
+
kind: '+' = '+'
|
|
350
|
+
prev?: null
|
|
351
|
+
next?: Bytes
|
|
352
|
+
|
|
353
|
+
constructor(block: BlockHeader, stateDiff: PartialStateDiff) {
|
|
354
|
+
super(block, stateDiff)
|
|
355
|
+
Object.assign(this, stateDiff)
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
export class StateDiffChange extends StateDiffBase {
|
|
361
|
+
kind: '*' = '*'
|
|
362
|
+
prev?: Bytes
|
|
363
|
+
next?: Bytes
|
|
364
|
+
|
|
365
|
+
constructor(block: BlockHeader, stateDiff: PartialStateDiff) {
|
|
366
|
+
super(block, stateDiff)
|
|
367
|
+
Object.assign(this, stateDiff)
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
export class StateDiffDelete extends StateDiffBase {
|
|
373
|
+
kind: '-' = '-'
|
|
374
|
+
prev?: Bytes
|
|
375
|
+
next?: null
|
|
376
|
+
|
|
377
|
+
constructor(block: BlockHeader, stateDiff: PartialStateDiff) {
|
|
378
|
+
super(block, stateDiff)
|
|
379
|
+
Object.assign(this, stateDiff)
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
export type StateDiff = StateDiffNoChange | StateDiffAdd | StateDiffChange | StateDiffDelete
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
function createStateDiff(block: BlockHeader, stateDiff: PartialStateDiff): StateDiff {
|
|
388
|
+
switch (stateDiff.kind) {
|
|
389
|
+
case '=':
|
|
390
|
+
return new StateDiffNoChange(block, stateDiff)
|
|
391
|
+
case '+':
|
|
392
|
+
return new StateDiffAdd(block, stateDiff)
|
|
393
|
+
case '*':
|
|
394
|
+
return new StateDiffChange(block, stateDiff)
|
|
395
|
+
case '-':
|
|
396
|
+
return new StateDiffDelete(block, stateDiff)
|
|
397
|
+
default:
|
|
398
|
+
throw new Error(`Unknown state diff kind`)
|
|
399
|
+
}
|
|
400
|
+
}
|
package/src/relations.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {maybeLast} from '@subsquid/util-internal'
|
|
2
|
+
import {Block, Trace, Transaction} from './items'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export function setUpRelations(block: Block): void {
|
|
6
|
+
block.transactions.sort((a, b) => a.transactionIndex - b.transactionIndex)
|
|
7
|
+
block.logs.sort((a, b) => a.logIndex - b.logIndex)
|
|
8
|
+
block.traces.sort(traceCompare)
|
|
9
|
+
|
|
10
|
+
let txs: (Transaction | undefined)[] = new Array((maybeLast(block.transactions)?.transactionIndex ?? -1) + 1)
|
|
11
|
+
for (let tx of block.transactions) {
|
|
12
|
+
txs[tx.transactionIndex] = tx
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
for (let log of block.logs) {
|
|
16
|
+
let tx = txs[log.transactionIndex]
|
|
17
|
+
if (tx) {
|
|
18
|
+
log.transaction = tx
|
|
19
|
+
tx.logs.push(log)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
for (let i = 0; i < block.traces.length; i++) {
|
|
24
|
+
let trace = block.traces[i]
|
|
25
|
+
let tx = txs[trace.transactionIndex]
|
|
26
|
+
if (tx) {
|
|
27
|
+
trace.transaction = tx
|
|
28
|
+
tx.traces.push(trace)
|
|
29
|
+
}
|
|
30
|
+
for (let j = i + 1; j < block.traces.length; j++) {
|
|
31
|
+
let next = block.traces[j]
|
|
32
|
+
if (isDescendent(trace, next)) {
|
|
33
|
+
trace.children.push(next)
|
|
34
|
+
if (next.traceAddress.length == trace.traceAddress.length + 1) {
|
|
35
|
+
next.parent = trace
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
break
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
for (let stateDiff of block.stateDiffs) {
|
|
44
|
+
let tx = txs[stateDiff.transactionIndex]
|
|
45
|
+
if (tx) {
|
|
46
|
+
stateDiff.transaction = tx
|
|
47
|
+
tx.stateDiffs.push(stateDiff)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
function traceCompare(a: Trace, b: Trace): number {
|
|
54
|
+
return a.transactionIndex - b.transactionIndex || addressCompare(a.traceAddress, b.traceAddress)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
function addressCompare(a: number[], b: number[]): number {
|
|
59
|
+
for (let i = 0; i < Math.min(a.length, b.length); i++) {
|
|
60
|
+
let order = a[i] - b[i]
|
|
61
|
+
if (order) return order
|
|
62
|
+
}
|
|
63
|
+
return a.length - b.length
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
function isDescendent(parent: Trace, child: Trace): boolean {
|
|
68
|
+
if (parent.transactionIndex != child.transactionIndex) return false
|
|
69
|
+
if (parent.traceAddress.length >= child.traceAddress.length) return false
|
|
70
|
+
for (let i = 0; i < parent.traceAddress.length; i++) {
|
|
71
|
+
if (parent.traceAddress[i] != child.traceAddress[i]) return false
|
|
72
|
+
}
|
|
73
|
+
return true
|
|
74
|
+
}
|