diff --git a/change/@apibara-starknet-79e122c4-6fa1-458b-bef9-d5a2038f8670.json b/change/@apibara-starknet-79e122c4-6fa1-458b-bef9-d5a2038f8670.json new file mode 100644 index 00000000..694cda1e --- /dev/null +++ b/change/@apibara-starknet-79e122c4-6fa1-458b-bef9-d5a2038f8670.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "starknet: add l2 gas price header prop", + "packageName": "@apibara/starknet", + "email": "francesco@ceccon.me", + "dependentChangeType": "patch" +} diff --git a/packages/starknet/proto/data.proto b/packages/starknet/proto/data.proto index 3699d95d..d37b1753 100644 --- a/packages/starknet/proto/data.proto +++ b/packages/starknet/proto/data.proto @@ -50,6 +50,8 @@ message BlockHeader { ResourcePrice l1_data_gas_price = 9; // L1 data availability mode. L1DataAvailabilityMode l1_data_availability_mode = 10; + // Price of L2 gas in the block. + ResourcePrice l2_gas_price = 11; } // A transaction. @@ -523,4 +525,4 @@ enum CallType { CALL_TYPE_LIBRARY_CALL = 1; CALL_TYPE_CALL = 2; CALL_TYPE_DELEGATE = 3; -} \ No newline at end of file +} diff --git a/packages/starknet/src/block.ts b/packages/starknet/src/block.ts index d22aadb2..58928e62 100644 --- a/packages/starknet/src/block.ts +++ b/packages/starknet/src/block.ts @@ -182,6 +182,7 @@ export type DataAvailabilityMode = CodecType; * @prop l1GasPrice Calldata gas price. * @prop l1DataGasPrice Blob gas price. * @prop l1DataAvailabilityMode How data is posted to L1. + * @prop l2GasPrice L2 gas price. */ export const BlockHeader = MessageCodec({ blockHash: OptionalCodec(FieldElement), @@ -194,6 +195,7 @@ export const BlockHeader = MessageCodec({ l1GasPrice: RequiredCodec(ResourcePrice), l1DataGasPrice: RequiredCodec(ResourcePrice), l1DataAvailabilityMode: RequiredCodec(L1DataAvailabilityMode), + l2GasPrice: OptionalCodec(ResourcePrice), }); export type BlockHeader = Readonly>; diff --git a/packages/starknet/src/proto/data.ts b/packages/starknet/src/proto/data.ts index 955a0c0b..1425a189 100644 --- a/packages/starknet/src/proto/data.ts +++ b/packages/starknet/src/proto/data.ts @@ -346,7 +346,11 @@ export interface BlockHeader { | ResourcePrice | undefined; /** L1 data availability mode. */ - readonly l1DataAvailabilityMode?: L1DataAvailabilityMode | undefined; + readonly l1DataAvailabilityMode?: + | L1DataAvailabilityMode + | undefined; + /** Price of L2 gas in the block. */ + readonly l2GasPrice?: ResourcePrice | undefined; } /** A transaction. */ @@ -1088,6 +1092,7 @@ function createBaseBlockHeader(): BlockHeader { l1GasPrice: undefined, l1DataGasPrice: undefined, l1DataAvailabilityMode: 0, + l2GasPrice: undefined, }; } @@ -1126,6 +1131,9 @@ export const BlockHeader = { if (message.l1DataAvailabilityMode !== undefined && message.l1DataAvailabilityMode !== 0) { writer.uint32(80).int32(message.l1DataAvailabilityMode); } + if (message.l2GasPrice !== undefined) { + ResourcePrice.encode(message.l2GasPrice, writer.uint32(90).fork()).ldelim(); + } return writer; }, @@ -1206,6 +1214,13 @@ export const BlockHeader = { message.l1DataAvailabilityMode = reader.int32() as any; continue; + case 11: + if (tag !== 90) { + break; + } + + message.l2GasPrice = ResourcePrice.decode(reader, reader.uint32()); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -1229,6 +1244,7 @@ export const BlockHeader = { l1DataAvailabilityMode: isSet(object.l1DataAvailabilityMode) ? l1DataAvailabilityModeFromJSON(object.l1DataAvailabilityMode) : 0, + l2GasPrice: isSet(object.l2GasPrice) ? ResourcePrice.fromJSON(object.l2GasPrice) : undefined, }; }, @@ -1264,6 +1280,9 @@ export const BlockHeader = { if (message.l1DataAvailabilityMode !== undefined && message.l1DataAvailabilityMode !== 0) { obj.l1DataAvailabilityMode = l1DataAvailabilityModeToJSON(message.l1DataAvailabilityMode); } + if (message.l2GasPrice !== undefined) { + obj.l2GasPrice = ResourcePrice.toJSON(message.l2GasPrice); + } return obj; }, @@ -1294,6 +1313,9 @@ export const BlockHeader = { ? ResourcePrice.fromPartial(object.l1DataGasPrice) : undefined; message.l1DataAvailabilityMode = object.l1DataAvailabilityMode ?? 0; + message.l2GasPrice = (object.l2GasPrice !== undefined && object.l2GasPrice !== null) + ? ResourcePrice.fromPartial(object.l2GasPrice) + : undefined; return message; }, };