@@ -189,14 +189,18 @@ public struct CodableTransaction {
189189 }
190190
191191 public mutating func resolve( provider: Web3Provider ) async {
192- // type cannot be changed here, and is ignored
193- // FIXME: This is resolves nothing yet.
194192 // FIXME: Delete force try
195- self . nonce = try ! await self . resolveNonce ( provider: provider)
196- self . gasPrice = try ! await self . resolveGasPrice ( provider: provider)
197193 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+ }
200204 }
201205
202206 public var noncePolicy : NoncePolicy
@@ -246,7 +250,6 @@ extension CodableTransaction: Codable {
246250 // FIXME: There's a huge mess here, please take a look here at code review if any.
247251 var containier = encoder. container ( keyedBy: CodingKeys . self)
248252 try containier. encode ( nonce. hexString, forKey: . nonce)
249- try containier. encode ( accessList, forKey: . accessList)
250253 try containier. encode ( data. toHexString ( ) . addHexPrefix ( ) , forKey: . data)
251254 try containier. encode ( value. hexString, forKey: . value)
252255
@@ -258,7 +261,10 @@ extension CodableTransaction: Codable {
258261 try containier. encode ( chainID. hexString, forKey: . chainID)
259262 }
260263 }
261-
264+ if let accessList = accessList, !accessList. isEmpty {
265+ try containier. encode ( accessList, forKey: . accessList)
266+ }
267+
262268 if !gasLimit. isZero {
263269 try containier. encode ( gasLimit. hexString, forKey: . gasLimit)
264270 }
@@ -310,7 +316,7 @@ extension CodableTransaction {
310316 switch noncePolicy {
311317 case . pending, . latest, . earliest:
312318 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)
314320 let response : APIResponse < BigUInt > = try await APIRequest . sendRequest ( with: provider, for: request)
315321 return response. result
316322 case . exact( let value) :
0 commit comments