@@ -26,6 +26,7 @@ import (
26
26
27
27
"github.com/ethereum/go-ethereum/common"
28
28
"github.com/ethereum/go-ethereum/common/hexutil"
29
+ "github.com/ethereum/go-ethereum/core"
29
30
"github.com/ethereum/go-ethereum/core/types"
30
31
"github.com/ethereum/go-ethereum/log"
31
32
"github.com/ethereum/go-ethereum/params"
@@ -123,12 +124,22 @@ func Transaction(ctx *cli.Context) error {
123
124
results = append (results , result {Error : err })
124
125
continue
125
126
}
126
- sender , err := types .Sender (signer , & tx )
127
- if err != nil {
128
- results = append (results , result {Error : err })
127
+ r := result {Hash : tx .Hash ()}
128
+ if sender , err := types .Sender (signer , & tx ); err != nil {
129
+ r .Error = err
130
+ results = append (results , r )
129
131
continue
132
+ } else {
133
+ r .Address = sender
134
+ }
135
+
136
+ if gas , err := core .IntrinsicGas (tx .Data (), tx .AccessList (), tx .To () == nil ,
137
+ chainConfig .IsHomestead (new (big.Int )), chainConfig .IsIstanbul (new (big.Int ))); err != nil {
138
+ r .Error = err
139
+ } else if tx .Gas () < gas {
140
+ r .Error = fmt .Errorf ("%w: have %d, want %d" , core .ErrIntrinsicGas , tx .Gas (), gas )
130
141
}
131
- results = append (results , result { Address : sender , Hash : tx . Hash ()} )
142
+ results = append (results , r )
132
143
}
133
144
out , err := json .MarshalIndent (results , "" , " " )
134
145
fmt .Println (string (out ))
0 commit comments