From a842ccca71f3d6b48690821ea1c1a1ab07d6d868 Mon Sep 17 00:00:00 2001 From: Mark Tyneway Date: Wed, 23 Sep 2020 21:35:58 -0700 Subject: [PATCH] ethapi: adds txmeta fields to transaction rpc responses (#35) * core: transaction meta serialization * test: txmeta queue origin set to 0 * ethapi: add queue origin to rpc txn * api: debug * api: add tx meta to rpc endpoints * api: add type, l1messagesender to rpctx * ethapi: render metadata --- internal/ethapi/api.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 44cc530d564b..7599a1afe1a3 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -1059,6 +1059,9 @@ type RPCTransaction struct { V *hexutil.Big `json:"v"` R *hexutil.Big `json:"r"` S *hexutil.Big `json:"s"` + QueueOrigin string `json:"queueOrigin"` + Type string `json:"type"` + L1MessageSender *common.Address `json:"l1MessageSender"` } // newRPCTransaction returns a transaction that will serialize to the RPC @@ -1090,6 +1093,23 @@ func newRPCTransaction(tx *types.Transaction, blockHash common.Hash, blockNumber result.BlockNumber = (*hexutil.Big)(new(big.Int).SetUint64(blockNumber)) result.TransactionIndex = (*hexutil.Uint64)(&index) } + + if meta := tx.GetMeta(); meta != nil { + result.L1MessageSender = meta.L1MessageSender + if meta.QueueOrigin != nil { + switch meta.QueueOrigin.Uint64() { + case uint64(2): + result.QueueOrigin = "sequencer" + } + } + + switch meta.SignatureHashType { + case types.SighashEthSign: + result.Type = "EthSign" + case types.SighashEIP155: + result.Type = "EIP155" + } + } return result } @@ -1508,6 +1528,8 @@ func (s *PublicTransactionPoolAPI) SendRawTransaction(ctx context.Context, encod if err := rlp.DecodeBytes(encodedTx, tx); err != nil { return common.Hash{}, err } + meta := types.NewTransactionMeta(nil, nil, types.SighashEIP155) + tx.SetTransactionMeta(meta) return SubmitTransaction(ctx, s.b, tx) } @@ -1520,8 +1542,8 @@ func (s *PublicTransactionPoolAPI) SendRawEthSignTransaction(ctx context.Context if err := rlp.DecodeBytes(encodedTx, tx); err != nil { return common.Hash{}, err } - - tx.SetSignatureHashType(types.SighashEthSign) + meta := types.NewTransactionMeta(nil, nil, types.SighashEthSign) + tx.SetTransactionMeta(meta) return SubmitTransaction(ctx, s.b, tx) }