@apibara/evm 2.1.0-beta.22 → 2.1.0-beta.24
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/index.cjs +403 -476
- package/dist/index.d.cts +1073 -2035
- package/dist/index.d.mts +1073 -2035
- package/dist/index.d.ts +1073 -2035
- package/dist/index.mjs +405 -467
- package/package.json +2 -4
- package/src/block.ts +312 -307
- package/src/common.ts +64 -101
- package/src/filter.ts +128 -138
- package/src/proto/data.ts +26 -1
- package/src/common.test.ts +0 -79
- package/src/filter.test.ts +0 -187
- package/src/helpers.ts +0 -8
package/src/common.ts
CHANGED
|
@@ -1,123 +1,86 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import type { Codec, CodecType } from "@apibara/protocol/codec";
|
|
2
|
+
import type * as proto from "./proto";
|
|
3
3
|
|
|
4
4
|
const MAX_U64 = 0xffffffffffffffffn;
|
|
5
|
-
|
|
6
|
-
const _Address = Schema.TemplateLiteral(Schema.Literal("0x"), Schema.String);
|
|
7
|
-
|
|
8
|
-
/** Wire representation of `Address`. */
|
|
9
|
-
const AddressProto = Schema.Struct({
|
|
10
|
-
x0: Schema.BigIntFromSelf,
|
|
11
|
-
x1: Schema.BigIntFromSelf,
|
|
12
|
-
x2: Schema.Number,
|
|
13
|
-
});
|
|
5
|
+
const MAX_U32 = 0xffffffffn;
|
|
14
6
|
|
|
15
7
|
/** An Ethereum address. */
|
|
16
|
-
export const Address
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
8
|
+
export const Address: Codec<`0x${string}`, proto.common.Address> = {
|
|
9
|
+
encode(x) {
|
|
10
|
+
const bn = BigInt(x);
|
|
11
|
+
// Ethereum address is 20 bytes (160 bits)
|
|
12
|
+
// Splitting into two 64-bit chunks and one 32-bit chunk
|
|
13
|
+
const x2 = bn & MAX_U32;
|
|
14
|
+
const x1 = (bn >> 32n) & MAX_U64;
|
|
15
|
+
const x0 = (bn >> 96n) & MAX_U64;
|
|
16
|
+
return { x0, x1, x2: Number(x2) };
|
|
22
17
|
},
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
return { x0, x1, x2 };
|
|
18
|
+
decode(p) {
|
|
19
|
+
const x0 = p.x0 ?? 0n;
|
|
20
|
+
const x1 = p.x1 ?? 0n;
|
|
21
|
+
const x2 = BigInt(p.x2 ?? 0);
|
|
22
|
+
const bn = x2 + (x1 << 32n) + (x0 << 96n);
|
|
23
|
+
return `0x${bn.toString(16).padStart(40, "0")}` as `0x${string}`;
|
|
30
24
|
},
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export type Address = typeof Address.Type;
|
|
34
|
-
|
|
35
|
-
const _B256 = Schema.TemplateLiteral(Schema.Literal("0x"), Schema.String);
|
|
25
|
+
};
|
|
36
26
|
|
|
37
|
-
|
|
38
|
-
export const B256Proto = Schema.Struct({
|
|
39
|
-
x0: Schema.BigIntFromSelf,
|
|
40
|
-
x1: Schema.BigIntFromSelf,
|
|
41
|
-
x2: Schema.BigIntFromSelf,
|
|
42
|
-
x3: Schema.BigIntFromSelf,
|
|
43
|
-
});
|
|
27
|
+
export type Address = CodecType<typeof Address>;
|
|
44
28
|
|
|
45
29
|
/** Data with length 256 bits. */
|
|
46
|
-
export const B256
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
const x2 =
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
},
|
|
54
|
-
encode(value) {
|
|
55
|
-
const bytes = hexToBytes(pad(value, { size: 32, dir: "left" }));
|
|
56
|
-
const dv = new DataView(bytes.buffer);
|
|
57
|
-
const x0 = dv.getBigUint64(0);
|
|
58
|
-
const x1 = dv.getBigUint64(8);
|
|
59
|
-
const x2 = dv.getBigUint64(16);
|
|
60
|
-
const x3 = dv.getBigUint64(24);
|
|
30
|
+
export const B256: Codec<`0x${string}`, proto.common.B256> = {
|
|
31
|
+
encode(x) {
|
|
32
|
+
const bn = BigInt(x);
|
|
33
|
+
const x3 = bn & MAX_U64;
|
|
34
|
+
const x2 = (bn >> 64n) & MAX_U64;
|
|
35
|
+
const x1 = (bn >> 128n) & MAX_U64;
|
|
36
|
+
const x0 = (bn >> 192n) & MAX_U64;
|
|
61
37
|
return { x0, x1, x2, x3 };
|
|
62
38
|
},
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
39
|
+
decode(p) {
|
|
40
|
+
const x0 = p.x0 ?? 0n;
|
|
41
|
+
const x1 = p.x1 ?? 0n;
|
|
42
|
+
const x2 = p.x2 ?? 0n;
|
|
43
|
+
const x3 = p.x3 ?? 0n;
|
|
44
|
+
const bn = x3 + (x2 << 64n) + (x1 << 128n) + (x0 << 192n);
|
|
45
|
+
return `0x${bn.toString(16).padStart(64, "0")}` as `0x${string}`;
|
|
46
|
+
},
|
|
47
|
+
};
|
|
69
48
|
|
|
70
|
-
|
|
71
|
-
const U256Proto = Schema.Struct({
|
|
72
|
-
x0: Schema.BigIntFromSelf,
|
|
73
|
-
x1: Schema.BigIntFromSelf,
|
|
74
|
-
x2: Schema.BigIntFromSelf,
|
|
75
|
-
x3: Schema.BigIntFromSelf,
|
|
76
|
-
});
|
|
49
|
+
export type B256 = CodecType<typeof B256>;
|
|
77
50
|
|
|
78
51
|
/** Data with length 256 bits. */
|
|
79
|
-
export const U256
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
);
|
|
87
|
-
},
|
|
88
|
-
encode(value) {
|
|
89
|
-
const x0 = (value >> (8n * 24n)) & MAX_U64;
|
|
90
|
-
const x1 = (value >> (8n * 16n)) & MAX_U64;
|
|
91
|
-
const x2 = (value >> (8n * 8n)) & MAX_U64;
|
|
92
|
-
const x3 = value & MAX_U64;
|
|
52
|
+
export const U256: Codec<bigint, proto.common.U256> = {
|
|
53
|
+
encode(x) {
|
|
54
|
+
const bn = BigInt(x);
|
|
55
|
+
const x3 = bn & MAX_U64;
|
|
56
|
+
const x2 = (bn >> 64n) & MAX_U64;
|
|
57
|
+
const x1 = (bn >> 128n) & MAX_U64;
|
|
58
|
+
const x0 = (bn >> 192n) & MAX_U64;
|
|
93
59
|
return { x0, x1, x2, x3 };
|
|
94
60
|
},
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
61
|
+
decode(p) {
|
|
62
|
+
const x0 = p.x0 ?? 0n;
|
|
63
|
+
const x1 = p.x1 ?? 0n;
|
|
64
|
+
const x2 = p.x2 ?? 0n;
|
|
65
|
+
const x3 = p.x3 ?? 0n;
|
|
66
|
+
return x3 + (x2 << 64n) + (x1 << 128n) + (x0 << 192n);
|
|
67
|
+
},
|
|
68
|
+
};
|
|
101
69
|
|
|
102
|
-
|
|
103
|
-
const U128Proto = Schema.Struct({
|
|
104
|
-
x0: Schema.BigIntFromSelf,
|
|
105
|
-
x1: Schema.BigIntFromSelf,
|
|
106
|
-
});
|
|
70
|
+
export type U256 = CodecType<typeof U256>;
|
|
107
71
|
|
|
108
72
|
/** Data with length 128 bits. */
|
|
109
|
-
export const U128
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
encode(value) {
|
|
114
|
-
const x0 = (value >> (8n * 8n)) & MAX_U64;
|
|
115
|
-
const x1 = value & MAX_U64;
|
|
73
|
+
export const U128: Codec<bigint, proto.common.U128> = {
|
|
74
|
+
encode(x) {
|
|
75
|
+
const x1 = x & MAX_U64;
|
|
76
|
+
const x0 = (x >> 64n) & MAX_U64;
|
|
116
77
|
return { x0, x1 };
|
|
117
78
|
},
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
79
|
+
decode(p) {
|
|
80
|
+
const x0 = p.x0 ?? 0n;
|
|
81
|
+
const x1 = p.x1 ?? 0n;
|
|
82
|
+
return x1 + (x0 << 64n);
|
|
83
|
+
},
|
|
84
|
+
};
|
|
121
85
|
|
|
122
|
-
export
|
|
123
|
-
export const u128FromProto = Schema.decodeSync(U128);
|
|
86
|
+
export type U128 = CodecType<typeof U128>;
|
package/src/filter.ts
CHANGED
|
@@ -1,164 +1,154 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { Address, B256 } from "./common";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
ArrayCodec,
|
|
5
|
+
BooleanCodec,
|
|
6
|
+
type Codec,
|
|
7
|
+
type CodecType,
|
|
8
|
+
MessageCodec,
|
|
9
|
+
NumberCodec,
|
|
10
|
+
OptionalCodec,
|
|
11
|
+
} from "@apibara/protocol/codec";
|
|
5
12
|
import * as proto from "./proto";
|
|
6
13
|
|
|
7
|
-
const OptionalArray = <TSchema extends Schema.Schema.Any>(schema: TSchema) =>
|
|
8
|
-
Schema.optional(Schema.Array(schema));
|
|
9
|
-
|
|
10
14
|
/** Header options.
|
|
11
15
|
*
|
|
12
16
|
* - `always`: receive all block headers.
|
|
13
17
|
* - `on_data`: receive headers only if any other filter matches.
|
|
14
18
|
* - `on_data_or_on_new_block`: receive headers only if any other filter matches and for "live" blocks.
|
|
15
19
|
*/
|
|
16
|
-
export const HeaderFilter
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
encode(value) {
|
|
32
|
-
switch (value) {
|
|
33
|
-
case "always":
|
|
34
|
-
return proto.filter.HeaderFilter.ALWAYS;
|
|
35
|
-
case "on_data":
|
|
36
|
-
return proto.filter.HeaderFilter.ON_DATA;
|
|
37
|
-
case "on_data_or_on_new_block":
|
|
38
|
-
return proto.filter.HeaderFilter.ON_DATA_OR_ON_NEW_BLOCK;
|
|
39
|
-
default:
|
|
40
|
-
return proto.filter.HeaderFilter.UNSPECIFIED;
|
|
41
|
-
}
|
|
42
|
-
},
|
|
20
|
+
export const HeaderFilter: Codec<
|
|
21
|
+
"always" | "on_data" | "on_data_or_on_new_block" | "unknown",
|
|
22
|
+
proto.filter.HeaderFilter
|
|
23
|
+
> = {
|
|
24
|
+
encode(x) {
|
|
25
|
+
switch (x) {
|
|
26
|
+
case "always":
|
|
27
|
+
return proto.filter.HeaderFilter.ALWAYS;
|
|
28
|
+
case "on_data":
|
|
29
|
+
return proto.filter.HeaderFilter.ON_DATA;
|
|
30
|
+
case "on_data_or_on_new_block":
|
|
31
|
+
return proto.filter.HeaderFilter.ON_DATA_OR_ON_NEW_BLOCK;
|
|
32
|
+
default:
|
|
33
|
+
return proto.filter.HeaderFilter.UNSPECIFIED;
|
|
34
|
+
}
|
|
43
35
|
},
|
|
44
|
-
)
|
|
36
|
+
decode(p) {
|
|
37
|
+
const enumMap = {
|
|
38
|
+
[proto.filter.HeaderFilter.ALWAYS]: "always",
|
|
39
|
+
[proto.filter.HeaderFilter.ON_DATA]: "on_data",
|
|
40
|
+
[proto.filter.HeaderFilter.ON_DATA_OR_ON_NEW_BLOCK]:
|
|
41
|
+
"on_data_or_on_new_block",
|
|
42
|
+
[proto.filter.HeaderFilter.UNSPECIFIED]: "unknown",
|
|
43
|
+
[proto.filter.HeaderFilter.UNRECOGNIZED]: "unknown",
|
|
44
|
+
} as const;
|
|
45
|
+
return enumMap[p] ?? "unknown";
|
|
46
|
+
},
|
|
47
|
+
};
|
|
45
48
|
|
|
46
|
-
export type HeaderFilter = typeof HeaderFilter
|
|
49
|
+
export type HeaderFilter = CodecType<typeof HeaderFilter>;
|
|
47
50
|
|
|
48
|
-
export const WithdrawalFilter =
|
|
49
|
-
id:
|
|
50
|
-
validatorIndex:
|
|
51
|
-
address:
|
|
51
|
+
export const WithdrawalFilter = MessageCodec({
|
|
52
|
+
id: OptionalCodec(NumberCodec),
|
|
53
|
+
validatorIndex: OptionalCodec(NumberCodec),
|
|
54
|
+
address: OptionalCodec(Address),
|
|
52
55
|
});
|
|
53
56
|
|
|
54
|
-
export type WithdrawalFilter = typeof WithdrawalFilter
|
|
55
|
-
|
|
56
|
-
export const TransactionStatusFilter
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
},
|
|
57
|
+
export type WithdrawalFilter = CodecType<typeof WithdrawalFilter>;
|
|
58
|
+
|
|
59
|
+
export const TransactionStatusFilter: Codec<
|
|
60
|
+
"succeeded" | "reverted" | "all" | "unknown",
|
|
61
|
+
proto.filter.TransactionStatusFilter
|
|
62
|
+
> = {
|
|
63
|
+
decode(value) {
|
|
64
|
+
const enumMap = {
|
|
65
|
+
[proto.filter.TransactionStatusFilter.SUCCEEDED]: "succeeded",
|
|
66
|
+
[proto.filter.TransactionStatusFilter.REVERTED]: "reverted",
|
|
67
|
+
[proto.filter.TransactionStatusFilter.ALL]: "all",
|
|
68
|
+
[proto.filter.TransactionStatusFilter.UNSPECIFIED]: "unknown",
|
|
69
|
+
[proto.filter.TransactionStatusFilter.UNRECOGNIZED]: "unknown",
|
|
70
|
+
} as const;
|
|
71
|
+
return enumMap[value] ?? "unknown";
|
|
72
|
+
},
|
|
73
|
+
encode(value) {
|
|
74
|
+
switch (value) {
|
|
75
|
+
case "succeeded":
|
|
76
|
+
return proto.filter.TransactionStatusFilter.SUCCEEDED;
|
|
77
|
+
case "reverted":
|
|
78
|
+
return proto.filter.TransactionStatusFilter.REVERTED;
|
|
79
|
+
case "all":
|
|
80
|
+
return proto.filter.TransactionStatusFilter.ALL;
|
|
81
|
+
default:
|
|
82
|
+
return proto.filter.TransactionStatusFilter.UNSPECIFIED;
|
|
83
|
+
}
|
|
82
84
|
},
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
export type TransactionStatusFilter = typeof TransactionStatusFilter
|
|
86
|
-
|
|
87
|
-
export const Topic
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
},
|
|
97
|
-
encode(value) {
|
|
98
|
-
if (value === null) {
|
|
99
|
-
return { value: undefined };
|
|
100
|
-
}
|
|
101
|
-
return { value };
|
|
102
|
-
},
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export type TransactionStatusFilter = CodecType<typeof TransactionStatusFilter>;
|
|
88
|
+
|
|
89
|
+
export const Topic: Codec<
|
|
90
|
+
B256 | null,
|
|
91
|
+
{ value?: proto.common.B256 | undefined }
|
|
92
|
+
> = {
|
|
93
|
+
encode(x) {
|
|
94
|
+
if (x === null) {
|
|
95
|
+
return { value: undefined };
|
|
96
|
+
}
|
|
97
|
+
return { value: B256.encode(x) };
|
|
103
98
|
},
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
99
|
+
decode({ value }) {
|
|
100
|
+
if (value === undefined) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return B256.decode(value);
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export type Topic = CodecType<typeof Topic>;
|
|
108
|
+
|
|
109
|
+
export const LogFilter = MessageCodec({
|
|
110
|
+
id: OptionalCodec(NumberCodec),
|
|
111
|
+
address: OptionalCodec(Address),
|
|
112
|
+
topics: OptionalCodec(ArrayCodec(Topic)),
|
|
113
|
+
strict: OptionalCodec(BooleanCodec),
|
|
114
|
+
transactionStatus: OptionalCodec(TransactionStatusFilter),
|
|
115
|
+
includeTransaction: OptionalCodec(BooleanCodec),
|
|
116
|
+
includeReceipt: OptionalCodec(BooleanCodec),
|
|
117
|
+
includeTransactionTrace: OptionalCodec(BooleanCodec),
|
|
117
118
|
});
|
|
118
119
|
|
|
119
|
-
export type LogFilter = typeof LogFilter
|
|
120
|
-
|
|
121
|
-
export const TransactionFilter =
|
|
122
|
-
id:
|
|
123
|
-
from:
|
|
124
|
-
to:
|
|
125
|
-
create:
|
|
126
|
-
transactionStatus:
|
|
127
|
-
includeReceipt:
|
|
128
|
-
includeLogs:
|
|
129
|
-
includeTransactionTrace:
|
|
120
|
+
export type LogFilter = Readonly<CodecType<typeof LogFilter>>;
|
|
121
|
+
|
|
122
|
+
export const TransactionFilter = MessageCodec({
|
|
123
|
+
id: OptionalCodec(NumberCodec),
|
|
124
|
+
from: OptionalCodec(Address),
|
|
125
|
+
to: OptionalCodec(Address),
|
|
126
|
+
create: OptionalCodec(BooleanCodec),
|
|
127
|
+
transactionStatus: OptionalCodec(TransactionStatusFilter),
|
|
128
|
+
includeReceipt: OptionalCodec(BooleanCodec),
|
|
129
|
+
includeLogs: OptionalCodec(BooleanCodec),
|
|
130
|
+
includeTransactionTrace: OptionalCodec(BooleanCodec),
|
|
130
131
|
});
|
|
131
132
|
|
|
132
|
-
export type TransactionFilter = typeof TransactionFilter
|
|
133
|
+
export type TransactionFilter = Readonly<CodecType<typeof TransactionFilter>>;
|
|
133
134
|
|
|
134
|
-
export const Filter =
|
|
135
|
-
header:
|
|
136
|
-
withdrawals:
|
|
137
|
-
transactions:
|
|
138
|
-
logs:
|
|
135
|
+
export const Filter = MessageCodec({
|
|
136
|
+
header: OptionalCodec(HeaderFilter),
|
|
137
|
+
withdrawals: OptionalCodec(ArrayCodec(WithdrawalFilter)),
|
|
138
|
+
transactions: OptionalCodec(ArrayCodec(TransactionFilter)),
|
|
139
|
+
logs: OptionalCodec(ArrayCodec(LogFilter)),
|
|
139
140
|
});
|
|
140
141
|
|
|
141
|
-
export type Filter = typeof Filter
|
|
142
|
-
|
|
143
|
-
export const filterToProto = Schema.encodeSync(Filter);
|
|
144
|
-
export const filterFromProto = Schema.decodeSync(Filter);
|
|
145
|
-
|
|
146
|
-
export const FilterFromBytes = Schema.transform(
|
|
147
|
-
Schema.Uint8ArrayFromSelf,
|
|
148
|
-
Filter,
|
|
149
|
-
{
|
|
150
|
-
strict: false,
|
|
151
|
-
decode(value) {
|
|
152
|
-
return proto.filter.Filter.decode(value);
|
|
153
|
-
},
|
|
154
|
-
encode(value) {
|
|
155
|
-
return proto.filter.Filter.encode(value).finish();
|
|
156
|
-
},
|
|
157
|
-
},
|
|
158
|
-
);
|
|
142
|
+
export type Filter = Readonly<CodecType<typeof Filter>>;
|
|
159
143
|
|
|
160
|
-
export const
|
|
161
|
-
|
|
144
|
+
export const FilterFromBytes: Codec<Filter, Uint8Array> = {
|
|
145
|
+
encode(x) {
|
|
146
|
+
return proto.filter.Filter.encode(Filter.encode(x)).finish();
|
|
147
|
+
},
|
|
148
|
+
decode(p) {
|
|
149
|
+
return Filter.decode(proto.filter.Filter.decode(p));
|
|
150
|
+
},
|
|
151
|
+
};
|
|
162
152
|
|
|
163
153
|
export function mergeFilter(a: Filter, b: Filter): Filter {
|
|
164
154
|
const header = mergeHeaderFilter(a.header, b.header);
|
package/src/proto/data.ts
CHANGED
|
@@ -307,7 +307,14 @@ export interface BlockHeader {
|
|
|
307
307
|
| U128
|
|
308
308
|
| undefined;
|
|
309
309
|
/** Parent beacon block root. */
|
|
310
|
-
readonly parentBeaconBlockRoot?:
|
|
310
|
+
readonly parentBeaconBlockRoot?:
|
|
311
|
+
| B256
|
|
312
|
+
| undefined;
|
|
313
|
+
/**
|
|
314
|
+
* The Keccak 256-bit hash of the an RLP encoded list with each EIP-7685
|
|
315
|
+
* request in the block body.
|
|
316
|
+
*/
|
|
317
|
+
readonly requestsHash?: B256 | undefined;
|
|
311
318
|
}
|
|
312
319
|
|
|
313
320
|
/** A validator's withdrawal from the consensus layer. */
|
|
@@ -838,6 +845,7 @@ function createBaseBlockHeader(): BlockHeader {
|
|
|
838
845
|
blobGasUsed: undefined,
|
|
839
846
|
excessBlobGas: undefined,
|
|
840
847
|
parentBeaconBlockRoot: undefined,
|
|
848
|
+
requestsHash: undefined,
|
|
841
849
|
};
|
|
842
850
|
}
|
|
843
851
|
|
|
@@ -915,6 +923,9 @@ export const BlockHeader = {
|
|
|
915
923
|
if (message.parentBeaconBlockRoot !== undefined) {
|
|
916
924
|
B256.encode(message.parentBeaconBlockRoot, writer.uint32(178).fork()).ldelim();
|
|
917
925
|
}
|
|
926
|
+
if (message.requestsHash !== undefined) {
|
|
927
|
+
B256.encode(message.requestsHash, writer.uint32(186).fork()).ldelim();
|
|
928
|
+
}
|
|
918
929
|
return writer;
|
|
919
930
|
},
|
|
920
931
|
|
|
@@ -1079,6 +1090,13 @@ export const BlockHeader = {
|
|
|
1079
1090
|
|
|
1080
1091
|
message.parentBeaconBlockRoot = B256.decode(reader, reader.uint32());
|
|
1081
1092
|
continue;
|
|
1093
|
+
case 23:
|
|
1094
|
+
if (tag !== 186) {
|
|
1095
|
+
break;
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
message.requestsHash = B256.decode(reader, reader.uint32());
|
|
1099
|
+
continue;
|
|
1082
1100
|
}
|
|
1083
1101
|
if ((tag & 7) === 4 || tag === 0) {
|
|
1084
1102
|
break;
|
|
@@ -1114,6 +1132,7 @@ export const BlockHeader = {
|
|
|
1114
1132
|
parentBeaconBlockRoot: isSet(object.parentBeaconBlockRoot)
|
|
1115
1133
|
? B256.fromJSON(object.parentBeaconBlockRoot)
|
|
1116
1134
|
: undefined,
|
|
1135
|
+
requestsHash: isSet(object.requestsHash) ? B256.fromJSON(object.requestsHash) : undefined,
|
|
1117
1136
|
};
|
|
1118
1137
|
},
|
|
1119
1138
|
|
|
@@ -1185,6 +1204,9 @@ export const BlockHeader = {
|
|
|
1185
1204
|
if (message.parentBeaconBlockRoot !== undefined) {
|
|
1186
1205
|
obj.parentBeaconBlockRoot = B256.toJSON(message.parentBeaconBlockRoot);
|
|
1187
1206
|
}
|
|
1207
|
+
if (message.requestsHash !== undefined) {
|
|
1208
|
+
obj.requestsHash = B256.toJSON(message.requestsHash);
|
|
1209
|
+
}
|
|
1188
1210
|
return obj;
|
|
1189
1211
|
},
|
|
1190
1212
|
|
|
@@ -1252,6 +1274,9 @@ export const BlockHeader = {
|
|
|
1252
1274
|
(object.parentBeaconBlockRoot !== undefined && object.parentBeaconBlockRoot !== null)
|
|
1253
1275
|
? B256.fromPartial(object.parentBeaconBlockRoot)
|
|
1254
1276
|
: undefined;
|
|
1277
|
+
message.requestsHash = (object.requestsHash !== undefined && object.requestsHash !== null)
|
|
1278
|
+
? B256.fromPartial(object.requestsHash)
|
|
1279
|
+
: undefined;
|
|
1255
1280
|
return message;
|
|
1256
1281
|
},
|
|
1257
1282
|
};
|
package/src/common.test.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
|
|
3
|
-
import { Schema } from "@effect/schema";
|
|
4
|
-
import { pad } from "viem";
|
|
5
|
-
|
|
6
|
-
import { Address, B256, U128, U256 } from "./common";
|
|
7
|
-
|
|
8
|
-
describe("Address", () => {
|
|
9
|
-
const encode = Schema.encodeSync(Address);
|
|
10
|
-
const decode = Schema.decodeSync(Address);
|
|
11
|
-
|
|
12
|
-
it("should convert to and from proto", () => {
|
|
13
|
-
const address = "0x27504265a9bc4330e3fe82061a60cd8b6369b4dc";
|
|
14
|
-
|
|
15
|
-
const message = encode(address);
|
|
16
|
-
|
|
17
|
-
expect(message.x0).toBeDefined();
|
|
18
|
-
expect(message.x1).toBeDefined();
|
|
19
|
-
expect(message.x2).toBeDefined();
|
|
20
|
-
|
|
21
|
-
const back = decode(message);
|
|
22
|
-
expect(back).toEqual(pad(address, { size: 20 }));
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe("B256", () => {
|
|
27
|
-
const encode = Schema.encodeSync(B256);
|
|
28
|
-
const decode = Schema.decodeSync(B256);
|
|
29
|
-
|
|
30
|
-
it("should convert to and from proto", () => {
|
|
31
|
-
const value =
|
|
32
|
-
"0x9df92d765b5aa041fd4bbe8d5878eb89290efa78e444c1a603eecfae2ea05fa4";
|
|
33
|
-
const message = encode(value);
|
|
34
|
-
|
|
35
|
-
expect(message.x0).toBeDefined();
|
|
36
|
-
expect(message.x1).toBeDefined();
|
|
37
|
-
expect(message.x2).toBeDefined();
|
|
38
|
-
expect(message.x3).toBeDefined();
|
|
39
|
-
|
|
40
|
-
const back = decode(message);
|
|
41
|
-
expect(back).toEqual(pad(value, { size: 32 }));
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
describe("U256", () => {
|
|
46
|
-
const encode = Schema.encodeSync(U256);
|
|
47
|
-
const decode = Schema.decodeSync(U256);
|
|
48
|
-
|
|
49
|
-
it("should convert to and from proto", () => {
|
|
50
|
-
const value = BigInt(
|
|
51
|
-
"0x9df92d765b5aa041fd4bbe8d5878eb89290efa78e444c1a603eecfae2ea05fa4",
|
|
52
|
-
);
|
|
53
|
-
const message = encode(value);
|
|
54
|
-
|
|
55
|
-
expect(message.x0).toBeDefined();
|
|
56
|
-
expect(message.x1).toBeDefined();
|
|
57
|
-
expect(message.x2).toBeDefined();
|
|
58
|
-
expect(message.x3).toBeDefined();
|
|
59
|
-
|
|
60
|
-
const back = decode(message);
|
|
61
|
-
expect(back).toEqual(value);
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
describe("U128", () => {
|
|
66
|
-
const encode = Schema.encodeSync(U128);
|
|
67
|
-
const decode = Schema.decodeSync(U128);
|
|
68
|
-
|
|
69
|
-
it("should convert to and from proto", () => {
|
|
70
|
-
const value = BigInt("0x090efa78e444c1a603eecfae2ea05fa4");
|
|
71
|
-
const message = encode(value);
|
|
72
|
-
|
|
73
|
-
expect(message.x0).toBeDefined();
|
|
74
|
-
expect(message.x1).toBeDefined();
|
|
75
|
-
|
|
76
|
-
const back = decode(message);
|
|
77
|
-
expect(back).toEqual(value);
|
|
78
|
-
});
|
|
79
|
-
});
|