diff --git a/packages/taiko-client/proposer/transaction_builder/blob.go b/packages/taiko-client/proposer/transaction_builder/blob.go index ba40b1285fc..adeb2a9f639 100644 --- a/packages/taiko-client/proposer/transaction_builder/blob.go +++ b/packages/taiko-client/proposer/transaction_builder/blob.go @@ -86,7 +86,7 @@ func (b *BlobTransactionBuilder) BuildOntake( blobs = append(blobs, blob) - encodedParams, err := encoding.EncodeBlockParamsOntake(&encoding.BlockParamsV2{ + params := &encoding.BlockParamsV2{ Coinbase: b.l2SuggestedFeeRecipient, ParentMetaHash: [32]byte{}, AnchorBlockId: 0, @@ -94,7 +94,22 @@ func (b *BlobTransactionBuilder) BuildOntake( BlobTxListOffset: 0, BlobTxListLength: uint32(len(txListBytesArray[i])), BlobIndex: uint8(i), - }) + } + + if i == 0 && b.revertProtectionEnabled { + state, err := b.rpc.GetProtocolStateVariables(nil) + if err != nil { + return nil, err + } + + blockInfo, err := b.rpc.GetL2BlockInfoV2(ctx, new(big.Int).SetUint64(state.B.NumBlocks-1)) + if err != nil { + return nil, err + } + + params.ParentMetaHash = blockInfo.MetaHash + } + encodedParams, err := encoding.EncodeBlockParamsOntake(params) if err != nil { return nil, err } diff --git a/packages/taiko-client/proposer/transaction_builder/calldata.go b/packages/taiko-client/proposer/transaction_builder/calldata.go index e7355eeca6b..86c71cf4ed6 100644 --- a/packages/taiko-client/proposer/transaction_builder/calldata.go +++ b/packages/taiko-client/proposer/transaction_builder/calldata.go @@ -73,13 +73,27 @@ func (b *CalldataTransactionBuilder) BuildOntake( encodedParamsArray [][]byte ) - for range txListBytesArray { - encodedParams, err := encoding.EncodeBlockParamsOntake(&encoding.BlockParamsV2{ + for i := range txListBytesArray { + params := &encoding.BlockParamsV2{ Coinbase: b.l2SuggestedFeeRecipient, ParentMetaHash: [32]byte{}, AnchorBlockId: 0, Timestamp: 0, - }) + } + if i == 0 && b.revertProtectionEnabled { + state, err := b.rpc.GetProtocolStateVariables(nil) + if err != nil { + return nil, err + } + + blockInfo, err := b.rpc.GetL2BlockInfoV2(ctx, new(big.Int).SetUint64(state.B.NumBlocks-1)) + if err != nil { + return nil, err + } + + params.ParentMetaHash = blockInfo.MetaHash + } + encodedParams, err := encoding.EncodeBlockParamsOntake(params) if err != nil { return nil, err }