Skip to content

Commit 43e131f

Browse files
Playing with last not green test,
There's a problem, that parameters to contract deployment passes as an Array, and so swift doesn't guarantee to keeping their order in such Array, so in the end this those parameters writes in semi-random order, which makes `testERC20TokenCreation` red most of times.
1 parent 19d68cd commit 43e131f

File tree

6 files changed

+8
-5
lines changed

6 files changed

+8
-5
lines changed

Sources/Core/Contract/ContractProtocol.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@ extension DefaultContractProtocol {
225225
let parameters = parameters,
226226
!parameters.isEmpty {
227227
guard constructor.inputs.count == parameters.count,
228+
// FIXME: This should be zipped, because Arrays don't guarantee it's elements order
228229
let encodedData = constructor.encodeParameters(parameters) else {
229230
NSLog("Constructor encoding will fail as the number of input arguments doesn't match the number of given arguments.")
230231
return nil

Sources/Core/EthereumABI/ABIElements.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ extension ABI.Element {
194194
extension ABI.Element.Constructor {
195195
public func encodeParameters(_ parameters: [AnyObject]) -> Data? {
196196
guard parameters.count == inputs.count else { return nil }
197+
// FIXME: This should be zipped, because Arrays don't guarantee it's elements order
197198
return ABIEncoder.encode(types: inputs, values: parameters)
198199
}
199200
}

Sources/Core/EthereumABI/ABIEncoding.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ extension ABIEncoder {
137137
/// - values: Contract values of a given element to encode
138138
/// - Returns: Encoded data
139139
public static func encode(types: [ABI.Element.InOut], values: [AnyObject]) -> Data? {
140+
// FIXME: This should be zipped, because Arrays don't guarantee it's elements order
140141
guard types.count == values.count else {return nil}
141142
let params = types.compactMap { (el) -> ABI.Element.ParameterType in
142143
return el.type
@@ -151,6 +152,7 @@ extension ABIEncoder {
151152
/// - values: Contract values of a given element to encode
152153
/// - Returns: Encoded data
153154
public static func encode(types: [ABI.Element.ParameterType], values: [AnyObject]) -> Data? {
155+
// FIXME: This should be zipped, because Arrays don't guarantee it's elements order
154156
guard types.count == values.count else {return nil}
155157
var tails = [Data]()
156158
var heads = [Data]()

Sources/web3swift/Tokens/ERC20/Web3+ERC20.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,6 @@ extension ERC20BaseProperties {
215215
}
216216
let contract = self.contract
217217
guard contract.contract.address != nil else {return}
218-
var transactionOptionsVAR = CodableTransaction.emptyTransaction
219-
transactionOptionsVAR.callOnBlock = .latest
220-
let transactionOptions = transactionOptionsVAR
221218
async let namePromise = contract
222219
.createReadOperation("name", parameters: [AnyObject](), extraData: Data() )?
223220
.callContractMethod()
@@ -233,10 +230,12 @@ extension ERC20BaseProperties {
233230
let resolvedPromises = try await ["name":namePromise, "symbol":symbolPromise, "decimals":decimalPromise]
234231

235232
if let nameResult = resolvedPromises["name"], let name = nameResult?["0"] as? String {
233+
print(name)
236234
_name = name
237235
}
238236

239237
if let symbolResult = resolvedPromises["symbol"], let symbol = symbolResult?["0"] as? String {
238+
print(symbol)
240239
_symbol = symbol
241240
}
242241

Sources/web3swift/Web3/Web3+Contract.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ extension web3 {
5454
public func deploy(bytecode: Data,
5555
constructor: ABI.Element.Constructor? = nil,
5656
parameters: [AnyObject]? = nil,
57-
extraData: Data? = nil,
58-
transactionOptions: CodableTransaction? = nil) -> WriteOperation? {
57+
extraData: Data? = nil) -> WriteOperation? {
5958
// MARK: Writing Data flow
6059
guard let data = self.contract.deploy(bytecode: bytecode,
6160
constructor: constructor,

Tests/web3swiftTests/localTests/TestHelpers.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class TestHelpers {
2121
let allAddresses = try await web3.eth.ownedAccounts()
2222
let contract = web3.contract(abiString, at: nil, abiVersion: 2)!
2323

24+
// FIXME: This should be zipped, because Arrays don't guarantee it's elements order
2425
let parameters = [
2526
"web3swift",
2627
"w3s",

0 commit comments

Comments
 (0)