@@ -189,14 +189,18 @@ public struct CodableTransaction {
189
189
}
190
190
191
191
public mutating func resolve( provider: Web3Provider ) async {
192
- // type cannot be changed here, and is ignored
193
- // FIXME: This is resolves nothing yet.
194
192
// FIXME: Delete force try
195
- self . nonce = try ! await self . resolveNonce ( provider: provider)
196
- self . gasPrice = try ! await self . resolveGasPrice ( provider: provider)
197
193
self . gasLimit = try ! await self . resolveGasLimit ( provider: provider)
198
- self . maxFeePerGas = try ! await self . resolveMaxFeePerGas ( provider: provider)
199
- self . maxPriorityFeePerGas = try ! await self . resolveMaxPriorityFeePerGas ( provider: provider)
194
+
195
+ if from != nil || sender != nil {
196
+ self . nonce = try ! await self . resolveNonce ( provider: provider)
197
+ }
198
+ if case . eip1559 = type {
199
+ self . maxFeePerGas = try ! await self . resolveMaxFeePerGas ( provider: provider)
200
+ self . maxPriorityFeePerGas = try ! await self . resolveMaxPriorityFeePerGas ( provider: provider)
201
+ } else {
202
+ self . gasPrice = try ! await self . resolveGasPrice ( provider: provider)
203
+ }
200
204
}
201
205
202
206
public var noncePolicy : NoncePolicy
@@ -246,7 +250,6 @@ extension CodableTransaction: Codable {
246
250
// FIXME: There's a huge mess here, please take a look here at code review if any.
247
251
var containier = encoder. container ( keyedBy: CodingKeys . self)
248
252
try containier. encode ( nonce. hexString, forKey: . nonce)
249
- try containier. encode ( accessList, forKey: . accessList)
250
253
try containier. encode ( data. toHexString ( ) . addHexPrefix ( ) , forKey: . data)
251
254
try containier. encode ( value. hexString, forKey: . value)
252
255
@@ -258,7 +261,10 @@ extension CodableTransaction: Codable {
258
261
try containier. encode ( chainID. hexString, forKey: . chainID)
259
262
}
260
263
}
261
-
264
+ if let accessList = accessList, !accessList. isEmpty {
265
+ try containier. encode ( accessList, forKey: . accessList)
266
+ }
267
+
262
268
if !gasLimit. isZero {
263
269
try containier. encode ( gasLimit. hexString, forKey: . gasLimit)
264
270
}
@@ -310,7 +316,7 @@ extension CodableTransaction {
310
316
switch noncePolicy {
311
317
case . pending, . latest, . earliest:
312
318
guard let address = from ?? sender else { throw Web3Error . valueError }
313
- let request : APIRequest = . getTransactionCount( address. address , callOnBlock ?? . latest)
319
+ let request : APIRequest = . getTransactionCount( address. address, callOnBlock ?? . latest)
314
320
let response : APIResponse < BigUInt > = try await APIRequest . sendRequest ( with: provider, for: request)
315
321
return response. result
316
322
case . exact( let value) :
0 commit comments