Skip to content

Commit 46018b7

Browse files
authored
Merge pull request #95 from matterinc/2.0
introduce a fix for invalid value in gas estimation, call and send transactions
2 parents 5708ea4 + 601d091 commit 46018b7

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

web3swift.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "web3swift"
3-
s.version = "2.0.1"
3+
s.version = "2.0.4"
44
s.summary = "Web3 implementation in vanilla Swift for iOS ans macOS"
55

66
s.description = <<-DESC

web3swift/Transaction/Classes/EthereumTransaction.swift

+2-5
Original file line numberDiff line numberDiff line change
@@ -322,13 +322,10 @@ public struct EthereumTransaction: CustomStringConvertible {
322322
static func createRequest(method: JSONRPCmethod, transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> JSONRPCrequest? {
323323
let onBlock = transactionOptions?.callOnBlock?.stringValue
324324
var request = JSONRPCrequest()
325-
var tx = transaction
325+
// var tx = transaction
326326
request.method = method
327327
let from = transactionOptions?.from
328-
if transactionOptions != nil, transactionOptions!.value != nil {
329-
tx.value = transactionOptions!.value!
330-
}
331-
guard var txParams = tx.encodeAsDictionary(from: from) else {return nil}
328+
guard var txParams = transaction.encodeAsDictionary(from: from) else {return nil}
332329
if method == .estimateGas || transactionOptions?.gasLimit == nil {
333330
txParams.gas = nil
334331
}

web3swift/Web3/Classes/Web3+MutatingTransaction.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ public class WriteTransaction: ReadTransaction {
3737
}
3838

3939
var mergedOptions = self.transactionOptions.merge(transactionOptions)
40-
40+
if mergedOptions.value != nil {
41+
assembledTransaction.value = mergedOptions.value!
42+
}
4143
var forAssemblyPipeline : (EthereumTransaction, EthereumContract, TransactionOptions) = (assembledTransaction, self.contract, mergedOptions)
4244

4345
for hook in self.web3.preAssemblyHooks {

web3swift/Web3/Classes/Web3+ReadingTransaction.swift

+8-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class ReadTransaction {
3030
}
3131

3232
public func callPromise(transactionOptions: TransactionOptions? = nil) -> Promise<[String: Any]> {
33-
let assembledTransaction : EthereumTransaction = self.transaction
33+
var assembledTransaction : EthereumTransaction = self.transaction
3434
let queue = self.web3.requestDispatcher.queue
3535
let returnPromise = Promise<[String:Any]> { seal in
3636
let mergedOptions = self.transactionOptions.merge(transactionOptions)
@@ -39,6 +39,9 @@ public class ReadTransaction {
3939
optionsForCall.to = mergedOptions.to
4040
optionsForCall.value = mergedOptions.value
4141
optionsForCall.callOnBlock = mergedOptions.callOnBlock
42+
if mergedOptions.value != nil {
43+
assembledTransaction.value = mergedOptions.value!
44+
}
4245
let callPromise : Promise<Data> = self.web3.eth.callPromise(assembledTransaction, transactionOptions: optionsForCall)
4346
callPromise.done(on: queue) {(data:Data) throws in
4447
do {
@@ -63,7 +66,7 @@ public class ReadTransaction {
6366
}
6467

6568
public func estimateGasPromise(transactionOptions: TransactionOptions? = nil) -> Promise<BigUInt>{
66-
let assembledTransaction : EthereumTransaction = self.transaction
69+
var assembledTransaction : EthereumTransaction = self.transaction
6770
let queue = self.web3.requestDispatcher.queue
6871
let returnPromise = Promise<BigUInt> { seal in
6972
let mergedOptions = self.transactionOptions.merge(transactionOptions)
@@ -72,6 +75,9 @@ public class ReadTransaction {
7275
optionsForGasEstimation.to = mergedOptions.to
7376
optionsForGasEstimation.value = mergedOptions.value
7477
optionsForGasEstimation.callOnBlock = mergedOptions.callOnBlock
78+
if mergedOptions.value != nil {
79+
assembledTransaction.value = mergedOptions.value!
80+
}
7581
let promise = self.web3.eth.estimateGasPromise(assembledTransaction, transactionOptions: optionsForGasEstimation)
7682
promise.done(on: queue) {(estimate: BigUInt) in
7783
seal.fulfill(estimate)

0 commit comments

Comments
 (0)