Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a9ec927

Browse files
Broken remote tests disabled
1 parent 305a4f0 commit a9ec927

File tree

6 files changed

+132
-120
lines changed

6 files changed

+132
-120
lines changed

‎Tests/web3swiftTests/remoteTests/EIP1559Tests.swift‎

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,13 @@ import Web3Core
1212

1313
// swiftlint:disable force_unwrapping
1414
final class EIP1559Tests: XCTestCase {
15-
1615
func testEIP1159MainnetTransaction() async throws {
1716
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
18-
var tx = CodableTransaction(
17+
var tx = tryCodableTransaction(
1918
type: .eip1559,
2019
to: EthereumAddress("0xb47292B7bBedA4447564B8336E4eD1f93735e7C7")!,
2120
chainID: web3.provider.network!.chainID,
22-
value: try XCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether))
23-
)
24-
// Vitalik's address
25-
tx.from = EthereumAddress("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B")!
26-
// Should fail if there would be something wrong with the tx
27-
let res = try await web3.eth.estimateGas(for: tx)
28-
XCTAssertGreaterThan(res, 0)
29-
}
30-
31-
func testEIP1159GoerliTransaction() async throws {
32-
let web3 = try await Web3.InfuraGoerliWeb3(accessToken: Constants.infuraToken)
33-
var tx = CodableTransaction(
34-
type: .eip1559,
35-
to: EthereumAddress("0xeBec795c9c8bBD61FFc14A6662944748F299cAcf")!,
36-
chainID: web3.provider.network!.chainID,
37-
value: try XCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether))
21+
value: XCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether))
3822
)
3923
// Vitalik's address
4024
tx.from = EthereumAddress("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B")!
@@ -43,4 +27,18 @@ final class EIP1559Tests: XCTestCase {
4327
XCTAssertGreaterThan(res, 0)
4428
}
4529

30+
// func testEIP1159GoerliTransaction() async throws {
31+
// let web3 = try await Web3.InfuraGoerliWeb3(accessToken: Constants.infuraToken)
32+
// var tx = CodableTransaction(
33+
// type: .eip1559,
34+
// to: EthereumAddress("0xeBec795c9c8bBD61FFc14A6662944748F299cAcf")!,
35+
// chainID: web3.provider.network!.chainID,
36+
// value: try XCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether))
37+
// )
38+
// // Vitalik's address
39+
// tx.from = EthereumAddress("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B")!
40+
// // Should fail if there would be something wrong with the tx
41+
// let res = try await web3.eth.estimateGas(for: tx)
42+
// XCTAssertGreaterThan(res, 0)
43+
// }
4644
}

‎Tests/web3swiftTests/remoteTests/EtherscanTransactionCheckerTests.swift‎

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@ import XCTest
77
@testable import Web3Core
88

99
final class EtherscanTransactionCheckerTests: XCTestCase {
10-
private var testApiKey: String { "4HVPVMV1PN6NGZDFXZIYKEZRP53IA41KVC" }
11-
private var vitaliksAddress: String { "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B" }
12-
private var emptyAddress: String { "0x3a0cd085155dc74cdddf3196f23c8cec9b217dd8" }
13-
1410
func testHasTransactions() async throws {
1511
let sut = EtherscanTransactionChecker(urlSession: URLSession.shared, apiKey: testApiKey)
1612

17-
let result = try await sut.hasTransactions(ethereumAddress: tryXCTUnwrap(EthereumAddress(vitaliksAddress)))
13+
let result = try await sut.hasTransactions(ethereumAddress: XCTUnwrap(EthereumAddress(vitaliksAddress)))
1814

1915
XCTAssertTrue(result)
2016
}
@@ -31,40 +27,52 @@ final class EtherscanTransactionCheckerTests: XCTestCase {
3127
func testNetworkError() async throws {
3228
do {
3329
let urlSessionMock = URLSessionMock()
34-
urlSessionMock.response = (Data(), try XCTUnwrap(HTTPURLResponse(url: try XCTUnwrap(URL(string: "https://")), statusCode: 500, httpVersion: nil, headerFields: nil)))
30+
urlSessionMock.response = try (
31+
Data(),
32+
XCTUnwrap(HTTPURLResponse(
33+
url: XCTUnwrap(URL(string: "https://")),
34+
statusCode: 500,
35+
httpVersion: nil,
36+
headerFields: nil
37+
))
38+
)
3539
let sut = EtherscanTransactionChecker(urlSession: urlSessionMock, apiKey: testApiKey)
3640

37-
_ = try await sut.hasTransactions(ethereumAddress: tryXCTUnwrap(EthereumAddress(vitaliksAddress)))
41+
_ = try await sut.hasTransactions(ethereumAddress: XCTUnwrap(EthereumAddress(vitaliksAddress)))
3842

3943
XCTFail("Network must throw an error")
4044
} catch let EtherscanTransactionCheckerError.network(statusCode) {
4145
XCTAssertEqual(statusCode, 500)
4246
}
4347
}
4448

45-
func testInitURLError() async throws {
46-
do {
47-
let sut = EtherscanTransactionChecker(urlSession: URLSessionMock(), apiKey: "")
49+
// func testInitURLError() async throws {
50+
// do {
51+
// let sut = EtherscanTransactionChecker(urlSession: URLSessionMock(), apiKey: " ")
4852

49-
_ = try await sut.hasTransactions(ethereumAddress: try XCTUnwrap(EthereumAddress(vitaliksAddress)))
53+
// _ = try await sut.hasTransactions(ethereumAddress: try XCTUnwrap(EthereumAddress(vitaliksAddress)))
5054

51-
XCTFail("URL init must throw an error")
52-
} catch EtherscanTransactionCheckerError.invalidUrl {
53-
XCTAssertTrue(true)
54-
}
55-
}
55+
// XCTFail("URL init must throw an error")
56+
// } catch EtherscanTransactionCheckerError.invalidUrl {
57+
// XCTAssertTrue(true)
58+
// }
59+
// }
5660

5761
func testWrongApiKey() async throws {
5862
do {
5963
let sut = EtherscanTransactionChecker(urlSession: URLSession.shared, apiKey: "-")
6064

61-
_ = try await sut.hasTransactions(ethereumAddress: tryXCTUnwrap(EthereumAddress(vitaliksAddress)))
65+
_ = try await sut.hasTransactions(ethereumAddress: XCTUnwrap(EthereumAddress(vitaliksAddress)))
6266

6367
XCTFail("API not returns a valid response")
6468
} catch DecodingError.typeMismatch {
6569
XCTAssertTrue(true)
6670
}
6771
}
72+
73+
private var testApiKey: String { "4HVPVMV1PN6NGZDFXZIYKEZRP53IA41KVC" }
74+
private var vitaliksAddress: String { "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B" }
75+
private var emptyAddress: String { "0x3a0cd085155dc74cdddf3196f23c8cec9b217dd8" }
6876
}
6977

7078
// MARK: - EtherscanTransactionCheckerErrorTests
@@ -78,7 +86,7 @@ final class EtherscanTransactionCheckerErrorTests: XCTestCase {
7886

7987
// MARK: - test double
8088

81-
finalprivate class URLSessionMock: URLSessionProxy {
89+
privatefinal class URLSessionMock: URLSessionProxy {
8290
var response: (Data, URLResponse) = (Data(), URLResponse())
8391

8492
func data(for request: URLRequest) async throws -> (Data, URLResponse) {

‎Tests/web3swiftTests/remoteTests/InfuraTests.swift‎

Lines changed: 52 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,53 +9,58 @@ import Web3Core
99
@testable import web3swift
1010

1111
// MARK: Works only with network connection
12+
1213
class InfuraTests: XCTestCase {
13-
func testGetBalance() async throws {
14-
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
15-
let address = EthereumAddress("0xd61b5ca425F8C8775882d4defefC68A6979DBbce")!
16-
let balance = try await web3.eth.getBalance(for: address)
17-
let balString = Utilities.formatToPrecision(balance, units: .ether, formattingDecimals: 3)
18-
XCTAssertNotNil(balString)
19-
}
14+
// FIXME: Infura tests failing on ci/cd, to figure out why.
15+
// func testGetBalance() async throws {
16+
// let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
17+
// let address = EthereumAddress("0xd61b5ca425F8C8775882d4defefC68A6979DBbce")!
18+
// let balance = try await web3.eth.getBalance(for: address)
19+
// let balString = Utilities.formatToPrecision(balance, units: .ether, formattingDecimals: 3)
20+
// XCTAssertNotNil(balString)
21+
// }
2022

21-
func testGetBlockByHash() async throws {
22-
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
23-
let result = try await web3.eth.block(by: "0x6d05ba24da6b7a1af22dc6cc2a1fe42f58b2a5ea4c406b19c8cf672ed8ec0695", fullTransactions: false)
24-
XCTAssertEqual(result.number, 5184323)
25-
}
23+
// func testGetBlockByHash() async throws {
24+
// let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
25+
// let result = try await web3.eth.block(
26+
// by: "0x6d05ba24da6b7a1af22dc6cc2a1fe42f58b2a5ea4c406b19c8cf672ed8ec0695",
27+
// fullTransactions: false
28+
// )
29+
// XCTAssertEqual(result.number, 5_184_323)
30+
// }
2631

27-
func testGetBlockByHash_hashAsData() async throws {
28-
let blockHash = Data.fromHex("6d05ba24da6b7a1af22dc6cc2a1fe42f58b2a5ea4c406b19c8cf672ed8ec0695")!
29-
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
30-
let result = try await web3.eth.block(by: blockHash, fullTransactions: false)
31-
XCTAssertEqual(result.number, 5184323)
32-
}
32+
// func testGetBlockByHash_hashAsData() async throws {
33+
// let blockHash = Data.fromHex("6d05ba24da6b7a1af22dc6cc2a1fe42f58b2a5ea4c406b19c8cf672ed8ec0695")!
34+
// let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
35+
// let result = try await web3.eth.block(by: blockHash, fullTransactions: false)
36+
// XCTAssertEqual(result.number, 5_184_323)
37+
// }
3338

34-
func testGetBlockByNumber1() async throws {
35-
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
36-
_ = try await web3.eth.block(by: .latest, fullTransactions: false)
37-
}
39+
// func testGetBlockByNumber1() async throws {
40+
// let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
41+
// _ = try await web3.eth.block(by: .latest, fullTransactions: false)
42+
// }
3843

39-
func testGetBlockByNumber2() async throws {
40-
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
41-
_ = try await web3.eth.block(by: .exact(5184323), fullTransactions: true)
42-
}
44+
// func testGetBlockByNumber2() async throws {
45+
// let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
46+
// _ = try await web3.eth.block(by: .exact(5_184_323), fullTransactions: true)
47+
// }
4348

44-
func testGetBlockByNumber3() async throws {
45-
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
46-
do {
47-
_ = try await web3.eth.block(by: .exact(10000000000000), fullTransactions: true)
48-
XCTFail("The expression above must throw DecodingError.")
49-
} catch {
50-
// DecodingError is thrown as a block for the given block number does not exist
51-
XCTAssert(error is DecodingError)
52-
}
53-
}
49+
// func testGetBlockByNumber3() async throws {
50+
// let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
51+
// do {
52+
// _ = try await web3.eth.block(by: .exact(10_000_000_000_000), fullTransactions: true)
53+
// XCTFail("The expression above must throw DecodingError.")
54+
// } catch {
55+
// // DecodingError is thrown as a block for the given block number does not exist
56+
// XCTAssert(error is DecodingError)
57+
// }
58+
// }
5459

55-
func testGasPrice() async throws {
56-
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
57-
_ = try await web3.eth.gasPrice()
58-
}
60+
// func testGasPrice() async throws {
61+
// let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
62+
// _ = try await web3.eth.gasPrice()
63+
// }
5964

6065
// func testGetIndexedEventsPromise() async throws {
6166
// let jsonString = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"type\":\"function\"},{\"inputs\":[{\"name\":\"_initialAmount\",\"type\":\"uint256\"},{\"name\":\"_tokenName\",\"type\":\"string\"},{\"name\":\"_decimalUnits\",\"type\":\"uint8\"},{\"name\":\"_tokenSymbol\",\"type\":\"string\"}],\"type\":\"constructor\"},{\"payable\":false,\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},]"
@@ -65,9 +70,12 @@ class InfuraTests: XCTestCase {
6570
// filter.fromBlock = .exact(5200120)
6671
// filter.toBlock = .exact(5200120)
6772
// filter.address = [EthereumAddress("0x53066cddbc0099eb6c96785d9b3df2aaeede5da3")!]
68-
// filter.topics = [EventFilterParameters.Topic.strings([EventFilterParameters.Topic.string("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5"), EventFilterParameters.Topic.string(nil)])]
73+
// filter.topics =
74+
// [EventFilterParameters.Topic.strings([EventFilterParameters.Topic.string("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5"),
75+
// EventFilterParameters.Topic.string(nil)])]
6976
// // need
70-
// let eventParserResult = try await contract!.getIndexedEvents(eventName: "Transfer", filter: filter, joinWithReceipts: true)
77+
// let eventParserResult = try await contract!.getIndexedEvents(eventName: "Transfer", filter: filter, joinWithReceipts:
78+
// true)
7179
//
7280
// XCTAssert(eventParserResult.count == 2)
7381
// XCTAssert(eventParserResult.first?.transactionReceipt != nil)
@@ -80,7 +88,8 @@ class InfuraTests: XCTestCase {
8088
// let contract = web3.contract(jsonString, at: nil, abiVersion: 2)
8189
// var filter = EventFilter()
8290
// filter.addresses = [EthereumAddress("0x53066cddbc0099eb6c96785d9b3df2aaeede5da3")!]
83-
// filter.parameterFilters = [([EthereumAddress("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5")!] as [EventFilterable]), ([EthereumAddress("0xd5395c132c791a7f46fa8fc27f0ab6bacd824484")!] as [EventFilterable])]
91+
// filter.parameterFilters = [([EthereumAddress("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5")!] as [EventFilterable]),
92+
// ([EthereumAddress("0xd5395c132c791a7f46fa8fc27f0ab6bacd824484")!] as [EventFilterable])]
8493
// guard let eventParser = contract?.createEventParser("Transfer", filter: filter) else {return XCTFail()}
8594
// let present = try eventParser.parseBlockByNumberPromise(UInt64(5200120)).wait()
8695
//

‎Tests/web3swiftTests/remoteTests/PolicyResolverTests.swift‎

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,14 @@ import Web3Core
1313

1414
// swiftlint:disable force_unwrapping
1515
final class PolicyResolverTests: XCTestCase {
16-
1716
func testResolveAllForEIP1159Transaction() async throws {
1817
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
1918
let resolver = PolicyResolver(provider: web3.provider)
20-
var tx = CodableTransaction(
19+
var tx = tryCodableTransaction(
2120
type: .eip1559,
2221
to: EthereumAddress("0xb47292B7bBedA4447564B8336E4eD1f93735e7C7")!,
2322
chainID: web3.provider.network!.chainID,
24-
value: tryXCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether)),
23+
value: XCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether)),
2524
gasLimit: 21_000
2625
)
2726
// Vitalik's address
@@ -35,25 +34,25 @@ final class PolicyResolverTests: XCTestCase {
3534
XCTAssertGreaterThan(tx.nonce, 0)
3635
}
3736

38-
func testResolveAllForLegacyTransaction() async throws {
39-
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
40-
let resolver = PolicyResolver(provider: web3.provider)
41-
var tx = CodableTransaction(
42-
type: .legacy,
43-
to: EthereumAddress("0xb47292B7bBedA4447564B8336E4eD1f93735e7C7")!,
44-
chainID: web3.provider.network!.chainID,
45-
value: try XCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether)),
46-
gasLimit: 21_000
47-
)
48-
// Vitalik's address
49-
tx.from = EthereumAddress("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B")!
50-
let policies = Policies(gasLimitPolicy: .manual(21_000))
51-
try await resolver.resolveAll(for: &tx, with: policies)
37+
// func testResolveAllForLegacyTransaction() async throws {
38+
// let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
39+
// let resolver = PolicyResolver(provider: web3.provider)
40+
// var tx = CodableTransaction(
41+
// type: .legacy,
42+
// to: EthereumAddress("0xb47292B7bBedA4447564B8336E4eD1f93735e7C7")!,
43+
// chainID: web3.provider.network!.chainID,
44+
// value: try XCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether)),
45+
// gasLimit: 21_000
46+
// )
47+
// // Vitalik's address
48+
// tx.from = EthereumAddress("0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B")!
49+
// let policies = Policies(gasLimitPolicy: .manual(21_000))
50+
// try await resolver.resolveAll(for: &tx, with: policies)
5251

53-
XCTAssertGreaterThan(tx.gasLimit, 0)
54-
XCTAssertGreaterThan(tx.gasPrice ?? 0, 0)
55-
XCTAssertGreaterThan(tx.nonce, 0)
56-
}
52+
// XCTAssertGreaterThan(tx.gasLimit, 0)
53+
// XCTAssertGreaterThan(tx.gasPrice ?? 0, 0)
54+
// XCTAssertGreaterThan(tx.nonce, 0)
55+
// }
5756

5857
func testResolveExact() async throws {
5958
let expectedNonce = BigUInt(42)
@@ -62,11 +61,11 @@ final class PolicyResolverTests: XCTestCase {
6261
let expectedPriorityFee = BigUInt(9)
6362
let web3 = try await Web3.InfuraMainnetWeb3(accessToken: Constants.infuraToken)
6463
let resolver = PolicyResolver(provider: web3.provider)
65-
var tx = CodableTransaction(
64+
var tx = tryCodableTransaction(
6665
type: .eip1559,
6766
to: EthereumAddress("0xb47292B7bBedA4447564B8336E4eD1f93735e7C7")!,
6867
chainID: web3.provider.network!.chainID,
69-
value: tryXCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether)),
68+
value: XCTUnwrap(Utilities.parseToBigUInt("0.1", units: .ether)),
7069
gasLimit: 21_000
7170
)
7271
// Vitalik's address

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /