@@ -3,7 +3,6 @@ package provider
3
3
import (
4
4
"context"
5
5
"encoding/json"
6
- "errors"
7
6
"math/big"
8
7
"time"
9
8
@@ -16,6 +15,7 @@ import (
16
15
"github.com/ethereum/go-ethereum/ethclient"
17
16
"github.com/ethereum/go-ethereum/log"
18
17
"github.com/ethereum/go-ethereum/rpc"
18
+ "github.com/pkg/errors"
19
19
)
20
20
21
21
var (
@@ -47,7 +47,7 @@ type txExtraInfo struct {
47
47
48
48
func (tx * rpcTransaction ) UnmarshalJSON (msg []byte ) error {
49
49
if err := json .Unmarshal (msg , & tx .tx ); err != nil {
50
- return err
50
+ return errors . WithStack ( err )
51
51
}
52
52
return json .Unmarshal (msg , & tx .txExtraInfo )
53
53
}
@@ -77,7 +77,7 @@ func NewProvider(url string, providerType string) *Provider {
77
77
78
78
rpcClient , err := rpc .Dial (url )
79
79
if err != nil {
80
- log .Crit ("Cannot connect to rpc server" , "url" , url , "error" , err )
80
+ log .Crit ("Cannot connect to rpc server" , "url" , url , "error" , errors . WithStack ( err ) )
81
81
}
82
82
83
83
p .rpcClient = rpcClient
@@ -97,7 +97,7 @@ func (p *Provider) GetNetwork() (common.BigInt, error) {
97
97
if p .chainId == nil {
98
98
chainId , err := p .client .NetworkID (ctx )
99
99
if err != nil {
100
- return nil , err
100
+ return nil , errors . WithStack ( err )
101
101
}
102
102
p .chainId = chainId
103
103
p .signer = types .NewLondonSigner (chainId )
@@ -108,7 +108,8 @@ func (p *Provider) GetNetwork() (common.BigInt, error) {
108
108
func (p * Provider ) GetGasPrice () (common.BigInt , error ) {
109
109
ctx , cancel := p .createContext ()
110
110
defer cancel ()
111
- return p .client .SuggestGasPrice (ctx )
111
+ gasPrice , err := p .client .SuggestGasPrice (ctx )
112
+ return gasPrice , errors .WithStack (err )
112
113
}
113
114
114
115
func (p * Provider ) GetSigner () (types.Signer , error ) {
@@ -122,31 +123,36 @@ func (p *Provider) GetSigner() (types.Signer, error) {
122
123
func (p * Provider ) GetCode (addr common.Address ) ([]byte , error ) {
123
124
ctx , cancel := p .createContext ()
124
125
defer cancel ()
125
- return p .client .CodeAt (ctx , addr , nil )
126
+ code , err := p .client .CodeAt (ctx , addr , nil )
127
+ return code , errors .WithStack (err )
126
128
}
127
129
128
130
func (p * Provider ) GetBalance (addr common.Address ) (common.BigInt , error ) {
129
131
ctx , cancel := p .createContext ()
130
132
defer cancel ()
131
- return p .client .BalanceAt (ctx , addr , nil )
133
+ balance , err := p .client .BalanceAt (ctx , addr , nil )
134
+ return balance , errors .WithStack (err )
132
135
}
133
136
134
137
func (p * Provider ) GetBlockHeight () (uint64 , error ) {
135
138
ctx , cancel := p .createContext ()
136
139
defer cancel ()
137
- return p .client .BlockNumber (ctx )
140
+ height , err := p .client .BlockNumber (ctx )
141
+ return height , errors .WithStack (err )
138
142
}
139
143
140
144
func (p * Provider ) GetBlockByHash (hash common.Hash ) (* common.Block , error ) {
141
145
ctx , cancel := p .createContext ()
142
146
defer cancel ()
143
- return p .client .BlockByHash (ctx , hash )
147
+ block , err := p .client .BlockByHash (ctx , hash )
148
+ return block , errors .WithStack (err )
144
149
}
145
150
146
151
func (p * Provider ) GetBlockByNumber (number common.BigInt ) (* common.Block , error ) {
147
152
ctx , cancel := p .createContext ()
148
153
defer cancel ()
149
- return p .client .BlockByNumber (ctx , number )
154
+ block , err := p .client .BlockByNumber (ctx , number )
155
+ return block , errors .WithStack (err )
150
156
}
151
157
152
158
func (p * Provider ) BatchTransactionByHash (hashList []common.Hash ) (common.Transactions , error ) {
@@ -166,7 +172,7 @@ func (p *Provider) BatchTransactionByHash(hashList []common.Hash) (common.Transa
166
172
167
173
err := p .rpcClient .BatchCallContext (ctx , reqs )
168
174
if err != nil {
169
- return nil , err
175
+ return nil , errors . WithStack ( err )
170
176
}
171
177
172
178
result := make (common.Transactions , size )
@@ -191,7 +197,7 @@ func (p *Provider) EstimateGas(address common.Address, from common.Address, inpu
191
197
192
198
gasLimit , err := p .client .EstimateGas (ctx , msg )
193
199
if err != nil {
194
- return 0 , err
200
+ return 0 , errors . WithStack ( err )
195
201
}
196
202
197
203
return gasLimit , nil
@@ -201,7 +207,7 @@ func (p *Provider) CallContract(address common.Address, abi *abi.ABI, method str
201
207
// encode calldata
202
208
input , err := abi .Pack (method , args ... )
203
209
if err != nil {
204
- return nil , err
210
+ return nil , errors . WithStack ( err )
205
211
}
206
212
207
213
// build call message
@@ -215,12 +221,12 @@ func (p *Provider) CallContract(address common.Address, abi *abi.ABI, method str
215
221
216
222
data , err := p .client .CallContract (ctx , msg , nil )
217
223
if err != nil {
218
- return nil , err
224
+ return nil , errors . WithStack ( err )
219
225
}
220
226
221
227
vals , err := abi .Unpack (method , data )
222
228
if err != nil {
223
- return nil , err
229
+ return nil , errors . WithStack ( err )
224
230
}
225
231
226
232
return vals , nil
@@ -236,7 +242,7 @@ func (p *Provider) SendTransaction(txnReq *common.TxnRequest) (common.Hash, erro
236
242
// fetch the next nonce
237
243
nonce , err := p .client .PendingNonceAt (ctx , from )
238
244
if err != nil {
239
- return common.Hash {}, err
245
+ return common.Hash {}, errors . WithStack ( err )
240
246
}
241
247
242
248
txn := types .NewTx (& types.LegacyTx {
@@ -255,17 +261,18 @@ func (p *Provider) SendTransaction(txnReq *common.TxnRequest) (common.Hash, erro
255
261
256
262
signedTx , err := types .SignTx (txn , signer , key )
257
263
if err != nil {
258
- return common.Hash {}, err
264
+ return common.Hash {}, errors . WithStack ( err )
259
265
}
260
266
261
267
err = p .client .SendTransaction (ctx , signedTx )
262
- return signedTx .Hash (), err
268
+ return signedTx .Hash (), errors . WithStack ( err )
263
269
}
264
270
265
271
func (p * Provider ) SubscribeNewHead (ch chan <- * common.Header ) (ethereum.Subscription , error ) {
266
272
ctx , cancel := p .createContext ()
267
273
defer cancel ()
268
- return p .client .SubscribeNewHead (ctx , ch )
274
+ sub , err := p .client .SubscribeNewHead (ctx , ch )
275
+ return sub , errors .WithStack (err )
269
276
}
270
277
271
278
func (p * Provider ) createContext () (context.Context , context.CancelFunc ) {
0 commit comments