Skip to content

Commit

Permalink
signer/core/apitypes: remove dependency on internal/ethapi (ethereum#…
Browse files Browse the repository at this point in the history
  • Loading branch information
fjl authored and atif-konasl committed Oct 15, 2021
1 parent 1a91c82 commit 4c7aa34
Showing 1 changed file with 53 additions and 16 deletions.
69 changes: 53 additions & 16 deletions signer/core/apitypes/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ package apitypes
import (
"encoding/json"
"fmt"
"math/big"
"strings"

"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/hexutil"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/internal/ethapi"
)

type ValidationInfo struct {
Expand Down Expand Up @@ -97,23 +97,60 @@ func (args SendTxArgs) String() string {
return err.Error()
}

// ToTransaction converts the arguments to a transaction.
func (args *SendTxArgs) ToTransaction() *types.Transaction {
txArgs := ethapi.TransactionArgs{
Gas: &args.Gas,
GasPrice: args.GasPrice,
MaxFeePerGas: args.MaxFeePerGas,
MaxPriorityFeePerGas: args.MaxPriorityFeePerGas,
Value: &args.Value,
Nonce: &args.Nonce,
Data: args.Data,
Input: args.Input,
AccessList: args.AccessList,
ChainID: args.ChainID,
}
// Add the To-field, if specified
var to *common.Address
if args.To != nil {
to := args.To.Address()
txArgs.To = &to
dstAddr := args.To.Address()
to = &dstAddr
}

var input []byte
if args.Input != nil {
input = *args.Input
} else if args.Data != nil {
input = *args.Data
}

var data types.TxData
switch {
case args.MaxFeePerGas != nil:
al := types.AccessList{}
if args.AccessList != nil {
al = *args.AccessList
}
data = &types.DynamicFeeTx{
To: to,
ChainID: (*big.Int)(args.ChainID),
Nonce: uint64(args.Nonce),
Gas: uint64(args.Gas),
GasFeeCap: (*big.Int)(args.MaxFeePerGas),
GasTipCap: (*big.Int)(args.MaxPriorityFeePerGas),
Value: (*big.Int)(&args.Value),
Data: input,
AccessList: al,
}
case args.AccessList != nil:
data = &types.AccessListTx{
To: to,
ChainID: (*big.Int)(args.ChainID),
Nonce: uint64(args.Nonce),
Gas: uint64(args.Gas),
GasPrice: (*big.Int)(args.GasPrice),
Value: (*big.Int)(&args.Value),
Data: input,
AccessList: *args.AccessList,
}
default:
data = &types.LegacyTx{
To: to,
Nonce: uint64(args.Nonce),
Gas: uint64(args.Gas),
GasPrice: (*big.Int)(args.GasPrice),
Value: (*big.Int)(&args.Value),
Data: input,
}
}
return txArgs.ToTransaction()
return types.NewTx(data)
}

0 comments on commit 4c7aa34

Please sign in to comment.