From 3e90f67273ccb630fd0166364e451b410471ab9d Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Mon, 29 Oct 2018 20:59:14 +0300 Subject: [PATCH 01/16] - Remove "Result" - Switch from Web3Options to more native structure - Change from "TransactionIntermediate" to "ReadTransaction" and "WriteTransaction" --- Podfile | 3 +- Podfile.lock | 13 +- .../EthereumABI/EthereumABI/Classes/ABI.swift | 28 + .../EthereumABI/Classes/ABIDecoding.swift | 37 +- .../EthereumABI/Classes/ABIElements.swift | 152 +- .../EthereumABI/Classes/ABIEncoding.swift | 19 +- .../EthereumABI/Classes/ABIExtensions.swift | 271 + .../Classes/ABIParameterTypes.swift | 27 +- .../EthereumABI/Classes/ABIParsing.swift | 105 +- .../EthereumABI/Classes/ABITypeParser.swift | 33 +- Pods/EthereumABI/EthereumABI/EthereumABI.h | 23 + Pods/EthereumABI/LICENSE | 13 + Pods/EthereumABI/README.md | 3 + .../Headers/Private/EthereumABI/EthereumABI.h | 1 + .../Public/BigInt/BigInt-iOS-umbrella.h | 2 +- .../Public/BigInt/BigInt-iOS.modulemap | 2 +- .../Public/BigInt/BigInt-macOS-umbrella.h | 2 +- .../Public/BigInt/BigInt-macOS.modulemap | 2 +- .../CryptoSwift/CryptoSwift-iOS-umbrella.h | 2 +- .../CryptoSwift/CryptoSwift-iOS.modulemap | 2 +- .../CryptoSwift/CryptoSwift-macOS-umbrella.h | 2 +- .../CryptoSwift/CryptoSwift-macOS.modulemap | 2 +- .../EthereumABI/EthereumABI-iOS-umbrella.h | 1 + .../EthereumABI/EthereumABI-iOS.modulemap | 1 + .../EthereumABI/EthereumABI-macOS-umbrella.h | 1 + .../EthereumABI/EthereumABI-macOS.modulemap | 1 + Pods/Headers/Public/EthereumABI/EthereumABI.h | 1 + .../EthereumAddress-iOS-umbrella.h | 2 +- .../EthereumAddress-iOS.modulemap | 2 +- .../EthereumAddress-macOS-umbrella.h | 2 +- .../EthereumAddress-macOS.modulemap | 2 +- .../Public/PromiseKit/PromiseKit-umbrella.h | 2 +- .../Public/PromiseKit/PromiseKit.modulemap | 2 +- ...Kit.root-CorePromise-Foundation-umbrella.h | 2 +- ...eKit.root-CorePromise-Foundation.modulemap | 2 +- .../Public/Result/Result-iOS-umbrella.h | 2 +- .../Public/Result/Result-iOS.modulemap | 2 +- .../Public/Result/Result-macOS-umbrella.h | 2 +- .../Public/Result/Result-macOS.modulemap | 2 +- .../Public/SipHash/SipHash-iOS-umbrella.h | 2 +- .../Public/SipHash/SipHash-iOS.modulemap | 2 +- .../Public/SipHash/SipHash-macOS-umbrella.h | 2 +- .../Public/SipHash/SipHash-macOS.modulemap | 2 +- .../Public/SwiftRLP/SwiftRLP-iOS-umbrella.h | 2 +- .../Public/SwiftRLP/SwiftRLP-iOS.modulemap | 2 +- .../Public/SwiftRLP/SwiftRLP-macOS-umbrella.h | 2 +- .../Public/SwiftRLP/SwiftRLP-macOS.modulemap | 2 +- .../Public/scrypt/scrypt-iOS-umbrella.h | 2 +- .../Public/scrypt/scrypt-iOS.modulemap | 2 +- .../Public/scrypt/scrypt-macOS-umbrella.h | 2 +- .../Public/scrypt/scrypt-macOS.modulemap | 2 +- .../secp256k1_swift-iOS-umbrella.h | 2 +- .../secp256k1_swift-iOS.modulemap | 2 +- .../secp256k1_swift-macOS-umbrella.h | 2 +- .../secp256k1_swift-macOS.modulemap | 2 +- Pods/Manifest.lock | 13 +- Pods/Pods.xcodeproj/project.pbxproj | 5502 +++++++++-------- .../EthereumABI-iOS/EthereumABI-iOS-dummy.m | 5 + .../EthereumABI-iOS-prefix.pch | 12 + .../EthereumABI-iOS-umbrella.h | 17 + .../EthereumABI-iOS/EthereumABI-iOS.modulemap | 7 + .../EthereumABI-iOS/EthereumABI-iOS.xcconfig | 13 + .../EthereumABI-macOS-dummy.m | 5 + .../EthereumABI-macOS-prefix.pch | 12 + .../EthereumABI-macOS-umbrella.h | 17 + .../EthereumABI-macOS.modulemap | 7 + .../EthereumABI-macOS.xcconfig | 13 + ...ds-web3swift-iOS-acknowledgements.markdown | 17 + .../Pods-web3swift-iOS-acknowledgements.plist | 282 +- .../Pods-web3swift-iOS.debug.xcconfig | 12 +- .../Pods-web3swift-iOS.release.xcconfig | 12 +- ...web3swift-iOS_Tests-acknowledgements.plist | 26 +- .../Pods-web3swift-iOS_Tests.debug.xcconfig | 8 +- .../Pods-web3swift-iOS_Tests.release.xcconfig | 8 +- ...-web3swift-macOS-acknowledgements.markdown | 17 + ...ods-web3swift-macOS-acknowledgements.plist | 282 +- .../Pods-web3swift-macOS.debug.xcconfig | 12 +- .../Pods-web3swift-macOS.release.xcconfig | 12 +- ...b3swift-macOS_Tests-acknowledgements.plist | 26 +- .../Pods-web3swift-macOS_Tests.debug.xcconfig | 8 +- ...ods-web3swift-macOS_Tests.release.xcconfig | 8 +- web3swift.podspec | 9 +- web3swift.xcodeproj/project.pbxproj | 156 +- web3swift/ABIv2/Classes/ABIv2.swift | 31 - .../Contract/Classes/ContractProtocol.swift | 8 +- ...ractABIv2.swift => EthereumContract.swift} | 193 +- .../Contract/Classes/EventFiltering.swift | 7 +- .../Classes/Web3+BrowserFunctions.swift | 9 +- .../Classes/AbstractKeystore.swift | 3 - .../Classes/Promise+Web3+Eth+Call.swift | 4 +- .../Promise+Web3+Eth+EstimateGas.swift | 4 +- .../Promise+Web3+Eth+SendTransaction.swift | 31 +- .../Classes/Promise+Web3+TxPool.swift | 1 - .../Classes/EthereumTransaction.swift | 8 +- .../Classes/TransactionSigner.swift | 10 +- web3swift/Utils/Classes/EIP67Code.swift | 3 +- web3swift/Utils/Classes/EIP681.swift | 36 +- web3swift/Web3/Classes/Web3+Contract.swift | 50 +- web3swift/Web3/Classes/Web3+Eth.swift | 492 +- web3swift/Web3/Classes/Web3+EventParser.swift | 13 +- web3swift/Web3/Classes/Web3+Eventloop.swift | 11 + .../Web3/Classes/Web3+HttpProvider.swift | 6 +- web3swift/Web3/Classes/Web3+Infura.swift | 6 +- web3swift/Web3/Classes/Web3+Instance.swift | 51 +- web3swift/Web3/Classes/Web3+JSONRPC.swift | 6 +- web3swift/Web3/Classes/Web3+Methods.swift | 6 +- .../Classes/Web3+MutatingTransaction.swift | 142 + web3swift/Web3/Classes/Web3+Options.swift | 199 +- web3swift/Web3/Classes/Web3+Personal.swift | 6 +- web3swift/Web3/Classes/Web3+Protocols.swift | 8 +- .../Classes/Web3+ReadingTransaction.swift | 84 + web3swift/Web3/Classes/Web3+Structures.swift | 7 +- .../Web3+TransactionIntermediate.swift | 60 +- web3swift/Web3/Classes/Web3+TxPool.swift | 9 +- web3swift/Web3/Classes/Web3+Utils.swift | 6 +- web3swift/Web3/Classes/Web3.swift | 6 +- web3swiftTests/web3swift_ABI_Tests.swift | 368 -- 117 files changed, 5276 insertions(+), 3931 deletions(-) create mode 100755 Pods/EthereumABI/EthereumABI/Classes/ABI.swift rename web3swift/ABIv2/Classes/ABIv2Decoding.swift => Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift (90%) rename web3swift/ABIv2/Classes/ABIv2Elements.swift => Pods/EthereumABI/EthereumABI/Classes/ABIElements.swift (54%) rename web3swift/ABIv2/Classes/ABIv2Encoding.swift => Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift (96%) create mode 100644 Pods/EthereumABI/EthereumABI/Classes/ABIExtensions.swift rename web3swift/ABIv2/Classes/ABIv2ParameterTypes.swift => Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift (90%) rename web3swift/ABIv2/Classes/ABIv2Parsing.swift => Pods/EthereumABI/EthereumABI/Classes/ABIParsing.swift (50%) rename web3swift/ABIv2/Classes/ABIv2TypeParser.swift => Pods/EthereumABI/EthereumABI/Classes/ABITypeParser.swift (72%) create mode 100644 Pods/EthereumABI/EthereumABI/EthereumABI.h create mode 100644 Pods/EthereumABI/LICENSE create mode 100644 Pods/EthereumABI/README.md create mode 120000 Pods/Headers/Private/EthereumABI/EthereumABI.h create mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h create mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap create mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h create mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap create mode 120000 Pods/Headers/Public/EthereumABI/EthereumABI.h create mode 100644 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-dummy.m create mode 100644 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch create mode 100644 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h create mode 100644 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap create mode 100644 Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.xcconfig create mode 100644 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-dummy.m create mode 100644 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch create mode 100644 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h create mode 100644 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap create mode 100644 Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.xcconfig delete mode 100755 web3swift/ABIv2/Classes/ABIv2.swift rename web3swift/Contract/Classes/{ContractABIv2.swift => EthereumContract.swift} (51%) create mode 100644 web3swift/Web3/Classes/Web3+Eventloop.swift create mode 100644 web3swift/Web3/Classes/Web3+MutatingTransaction.swift create mode 100644 web3swift/Web3/Classes/Web3+ReadingTransaction.swift delete mode 100755 web3swiftTests/web3swift_ABI_Tests.swift diff --git a/Podfile b/Podfile index 55a134971..0fe39d88b 100755 --- a/Podfile +++ b/Podfile @@ -2,11 +2,12 @@ def import_pods pod 'scrypt', '~> 2.0' pod "PromiseKit", "~> 6.4.1" pod 'BigInt', '~> 3.1' - pod 'CryptoSwift', '~> 0.12' + pod 'CryptoSwift', '~> 0.13' pod 'Result', '~> 4.0' pod 'secp256k1_swift', '~> 1.0.3', :modular_headers => true pod 'SwiftRLP', '~> 1.1' pod 'EthereumAddress', '~> 1.0.0' + pod 'EthereumABI', '~>1.1.1' end target 'web3swift-macOS' do diff --git a/Podfile.lock b/Podfile.lock index bd8f6bf62..c66bc7947 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -2,6 +2,10 @@ PODS: - BigInt (3.1.0): - SipHash (~> 1.2) - CryptoSwift (0.13.0) + - EthereumABI (1.1.1): + - BigInt (~> 3.1) + - CryptoSwift (~> 0.13) + - EthereumAddress (~> 1.0.0) - EthereumAddress (1.0.0): - CryptoSwift (~> 0.13) - PromiseKit (6.4.1): @@ -23,7 +27,8 @@ PODS: DEPENDENCIES: - BigInt (~> 3.1) - - CryptoSwift (~> 0.12) + - CryptoSwift (~> 0.13) + - EthereumABI (~> 1.1.1) - EthereumAddress (~> 1.0.0) - PromiseKit (~> 6.4.1) - Result (~> 4.0) @@ -35,6 +40,7 @@ SPEC REPOS: https://github.com/cocoapods/specs.git: - BigInt - CryptoSwift + - EthereumABI - EthereumAddress - PromiseKit - Result @@ -46,6 +52,7 @@ SPEC REPOS: SPEC CHECKSUMS: BigInt: 76b5dfdfa3e2e478d4ffdf161aeede5502e2742f CryptoSwift: 16e78bebf567bad1c87b2d58f6547f25b74c31aa + EthereumABI: f040f5429e5a4366d028c88b88d9441e137593af EthereumAddress: f476e1320dca3a0024431e713ede7a09c7eb7796 PromiseKit: 4c76a6506638034e3d7bede97b2ff7743f7bd2dc Result: 7645bb3f50c2ce726dd0ff2fa7b6f42bbe6c3713 @@ -54,6 +61,6 @@ SPEC CHECKSUMS: SipHash: fad90a4683e420c52ef28063063dbbce248ea6d4 SwiftRLP: 5512899925f1a9e1c78c902ed3bf857880e814a0 -PODFILE CHECKSUM: 9f923f3cffffde022aaef140f9cd311a152e9c49 +PODFILE CHECKSUM: 72534436a5f24d6d07a676642432e134a85ff3e5 -COCOAPODS: 1.6.0.beta.1 +COCOAPODS: 1.6.0.beta.2 diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABI.swift b/Pods/EthereumABI/EthereumABI/Classes/ABI.swift new file mode 100755 index 000000000..1bcca4d84 --- /dev/null +++ b/Pods/EthereumABI/EthereumABI/Classes/ABI.swift @@ -0,0 +1,28 @@ +// +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation + +public struct ABI { + +} + +protocol ABIElementPropertiesProtocol { + var isStatic: Bool {get} + var isArray: Bool {get} + var isTuple: Bool {get} + var arraySize: ABI.Element.ArraySize {get} + var subtype: ABI.Element.ParameterType? {get} + var memoryUsage: UInt64 {get} + var emptyValue: Any {get} +} + +protocol ABIEncoding { + var abiRepresentation: String {get} +} + +protocol ABIValidation { + var isValid: Bool {get} +} diff --git a/web3swift/ABIv2/Classes/ABIv2Decoding.swift b/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift similarity index 90% rename from web3swift/ABIv2/Classes/ABIv2Decoding.swift rename to Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift index 2b451cb24..1ef76c1d9 100755 --- a/web3swift/ABIv2/Classes/ABIv2Decoding.swift +++ b/Pods/EthereumABI/EthereumABI/Classes/ABIDecoding.swift @@ -1,28 +1,25 @@ // -// ABIv2Decoding.swift -// web3swift -// -// Created by Alexander Vlasov on 04.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation import BigInt import EthereumAddress -public struct ABIv2Decoder { +public struct ABIDecoder { } -extension ABIv2Decoder { - public static func decode(types: [ABIv2.Element.InOut], data: Data) -> [AnyObject]? { - let params = types.compactMap { (el) -> ABIv2.Element.ParameterType in +extension ABIDecoder { + public static func decode(types: [ABI.Element.InOut], data: Data) -> [AnyObject]? { + let params = types.compactMap { (el) -> ABI.Element.ParameterType in return el.type } return decode(types: params, data: data) } - public static func decode(types: [ABIv2.Element.ParameterType], data: Data) -> [AnyObject]? { + public static func decode(types: [ABI.Element.ParameterType], data: Data) -> [AnyObject]? { // print("Full data: \n" + data.toHexString()) var toReturn = [AnyObject]() var consumed: UInt64 = 0 @@ -36,7 +33,7 @@ extension ABIv2Decoder { return toReturn } - public static func decodeSignleType(type: ABIv2.Element.ParameterType, data: Data, pointer: UInt64 = 0) -> (value: AnyObject?, bytesConsumed: UInt64?) { + public static func decodeSignleType(type: ABI.Element.ParameterType, data: Data, pointer: UInt64 = 0) -> (value: AnyObject?, bytesConsumed: UInt64?) { let (elData, nextPtr) = followTheData(type: type, data: data, pointer: pointer) guard let elementItself = elData, let nextElementPointer = nextPtr else { return (nil, nil) @@ -184,7 +181,7 @@ extension ABIv2Decoder { return (nil, nil) } - fileprivate static func followTheData(type: ABIv2.Element.ParameterType, data: Data, pointer: UInt64 = 0) -> (elementEncoding: Data?, nextElementPointer: UInt64?) { + fileprivate static func followTheData(type: ABI.Element.ParameterType, data: Data, pointer: UInt64 = 0) -> (elementEncoding: Data?, nextElementPointer: UInt64?) { // print("Follow the data: \n" + data.toHexString()) // print("At pointer: \n" + String(pointer)) if type.isStatic { @@ -220,14 +217,14 @@ extension ABIv2Decoder { } } - public static func decodeLog(event: ABIv2.Element.Event, eventLog: EventLog) -> [String:Any]? { - if event.topic != eventLog.topics[0] && !event.anonymous { + public static func decodeLog(event: ABI.Element.Event, eventLogTopics: [Data], eventLogData: Data) -> [String:Any]? { + if event.topic != eventLogTopics[0] && !event.anonymous { return nil } var eventContent = [String: Any]() eventContent["name"]=event.name - let logs = eventLog.topics - let dataForProcessing = eventLog.data + let logs = eventLogTopics + let dataForProcessing = eventLogData let indexedInputs = event.inputs.filter { (inp) -> Bool in return inp.indexed } @@ -237,7 +234,7 @@ extension ABIv2Decoder { let nonIndexedInputs = event.inputs.filter { (inp) -> Bool in return !inp.indexed } - let nonIndexedTypes = nonIndexedInputs.compactMap { (inp) -> ABIv2.Element.ParameterType in + let nonIndexedTypes = nonIndexedInputs.compactMap { (inp) -> ABI.Element.ParameterType in return inp.type } guard logs.count == indexedInputs.count + 1 else {return nil} @@ -246,16 +243,16 @@ extension ABIv2Decoder { let data = logs[i+1] let input = indexedInputs[i] if !input.type.isStatic || input.type.isArray || input.type.memoryUsage != 32 { - let (v, _) = ABIv2Decoder.decodeSignleType(type: .bytes(length: 32), data: data) + let (v, _) = ABIDecoder.decodeSignleType(type: .bytes(length: 32), data: data) guard let valueUnwrapped = v else {return nil} indexedValues.append(valueUnwrapped) } else { - let (v, _) = ABIv2Decoder.decodeSignleType(type: input.type, data: data) + let (v, _) = ABIDecoder.decodeSignleType(type: input.type, data: data) guard let valueUnwrapped = v else {return nil} indexedValues.append(valueUnwrapped) } } - let v = ABIv2Decoder.decode(types: nonIndexedTypes, data: dataForProcessing) + let v = ABIDecoder.decode(types: nonIndexedTypes, data: dataForProcessing) guard let nonIndexedValues = v else {return nil} var indexedInputCounter = 0 var nonIndexedInputCounter = 0 diff --git a/web3swift/ABIv2/Classes/ABIv2Elements.swift b/Pods/EthereumABI/EthereumABI/Classes/ABIElements.swift similarity index 54% rename from web3swift/ABIv2/Classes/ABIv2Elements.swift rename to Pods/EthereumABI/EthereumABI/Classes/ABIElements.swift index ec6e455b3..523f68741 100755 --- a/web3swift/ABIv2/Classes/ABIv2Elements.swift +++ b/Pods/EthereumABI/EthereumABI/Classes/ABIElements.swift @@ -1,38 +1,35 @@ // -// ABIElements.swift -// web3swift -// -// Created by Alexander Vlasov on 06.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation import BigInt -public extension ABIv2 { +public extension ABI { // JSON Decoding public struct Input: Decodable { - var name: String? - var type: String - var indexed: Bool? - var components: [Input]? + public var name: String? + public var type: String + public var indexed: Bool? + public var components: [Input]? } public struct Output: Decodable { - var name: String? - var type: String - var components: [Output]? + public var name: String? + public var type: String + public var components: [Output]? } public struct Record: Decodable { - var name: String? - var type: String? - var payable: Bool? - var constant: Bool? - var stateMutability: String? - var inputs: [ABIv2.Input]? - var outputs: [ABIv2.Output]? - var anonymous: Bool? + public var name: String? + public var type: String? + public var payable: Bool? + public var constant: Bool? + public var stateMutability: String? + public var inputs: [ABI.Input]? + public var outputs: [ABI.Output]? + public var anonymous: Bool? } public enum Element { @@ -47,50 +44,113 @@ public extension ABIv2 { case fallback(Fallback) case event(Event) + public enum StateMutability { + case payable + case mutating + case view + case pure + + var isConstant: Bool { + switch self { + case .payable: + return false + case .mutating: + return false + default: + return true + } + } + + var isPayable: Bool { + switch self { + case .payable: + return true + default: + return false + } + } + } + public struct InOut { public let name: String public let type: ParameterType + + public init(name: String, type: ParameterType) { + self.name = name + self.type = type + } } public struct Function { public let name: String? public let inputs: [InOut] public let outputs: [InOut] + public let stateMutability: StateMutability? = nil public let constant: Bool public let payable: Bool + + public init(name: String?, inputs: [InOut], outputs: [InOut], constant: Bool, payable: Bool) { + self.name = name + self.inputs = inputs + self.outputs = outputs + self.constant = constant + self.payable = payable + } } public struct Constructor { - let inputs: [InOut] - let constant: Bool - let payable: Bool + public let inputs: [InOut] + public let constant: Bool + public let payable: Bool + public init(inputs: [InOut], constant: Bool, payable: Bool) { + self.inputs = inputs + self.constant = constant + self.payable = payable + } } public struct Fallback { - let constant: Bool - let payable: Bool + public let constant: Bool + public let payable: Bool + + public init(constant: Bool, payable: Bool) { + self.constant = constant + self.payable = payable + } } public struct Event { - let name: String - let inputs: [Input] - let anonymous: Bool + public let name: String + public let inputs: [Input] + public let anonymous: Bool - struct Input { - let name: String - let type: ParameterType - let indexed: Bool + public init(name: String, inputs: [Input], anonymous: Bool) { + self.name = name + self.inputs = inputs + self.anonymous = anonymous + } + + public struct Input { + public let name: String + public let type: ParameterType + public let indexed: Bool + + public init(name: String, type: ParameterType, indexed: Bool) { + self.name = name + self.type = type + self.indexed = indexed + } } } } } -extension ABIv2.Element { - func encodeParameters(_ parameters: [AnyObject]) -> Data? { +extension ABI.Element { + public func encodeParameters(_ parameters: [AnyObject]) -> Data? { switch self { case .constructor(let constructor): guard parameters.count == constructor.inputs.count else {return nil} - guard let data = ABIv2Encoder.encode(types: constructor.inputs, values: parameters) else {return nil} + guard let data = ABIEncoder.encode(types: constructor.inputs, values: parameters) else {return nil} return data case .event(_): return nil @@ -99,14 +159,14 @@ extension ABIv2.Element { case .function(let function): guard parameters.count == function.inputs.count else {return nil} let signature = function.methodEncoding - guard let data = ABIv2Encoder.encode(types: function.inputs, values: parameters) else {return nil} + guard let data = ABIEncoder.encode(types: function.inputs, values: parameters) else {return nil} return signature + data } } } -extension ABIv2.Element { - func decodeReturnData(_ data: Data) -> [String:Any]? { +extension ABI.Element { + public func decodeReturnData(_ data: Data) -> [String:Any]? { switch self { case .constructor(_): return nil @@ -129,7 +189,7 @@ extension ABIv2.Element { guard function.outputs.count*32 <= data.count else {return nil} var returnArray = [String:Any]() var i = 0; - guard let values = ABIv2Decoder.decode(types: function.outputs, data: data) else {return nil} + guard let values = ABIDecoder.decode(types: function.outputs, data: data) else {return nil} for output in function.outputs { let name = "\(i)" returnArray[name] = values[i] @@ -142,7 +202,7 @@ extension ABIv2.Element { } } - func decodeInputData(_ rawData: Data) -> [String: Any]? { + public func decodeInputData(_ rawData: Data) -> [String: Any]? { var data = rawData var sig: Data? = nil switch rawData.count % 32 { @@ -170,7 +230,7 @@ extension ABIv2.Element { guard function.inputs.count*32 <= data.count else {return nil} var returnArray = [String:Any]() var i = 0; - guard let values = ABIv2Decoder.decode(types: function.inputs, data: data) else {return nil} + guard let values = ABIDecoder.decode(types: function.inputs, data: data) else {return nil} for input in function.inputs { let name = "\(i)" returnArray[name] = values[i] @@ -202,7 +262,7 @@ extension ABIv2.Element { guard function.inputs.count*32 <= data.count else {return nil} var returnArray = [String:Any]() var i = 0; - guard let values = ABIv2Decoder.decode(types: function.inputs, data: data) else {return nil} + guard let values = ABIDecoder.decode(types: function.inputs, data: data) else {return nil} for input in function.inputs { let name = "\(i)" returnArray[name] = values[i] @@ -216,9 +276,9 @@ extension ABIv2.Element { } } -extension ABIv2.Element.Event { - func decodeReturnedLogs(_ eventLog: EventLog) -> [String:Any]? { - guard let eventContent = ABIv2Decoder.decodeLog(event: self, eventLog: eventLog) else {return nil} +extension ABI.Element.Event { + public func decodeReturnedLogs(eventLogTopics: [Data], eventLogData: Data) -> [String:Any]? { + guard let eventContent = ABIDecoder.decodeLog(event: self, eventLogTopics: eventLogTopics, eventLogData: eventLogData) else {return nil} return eventContent } } diff --git a/web3swift/ABIv2/Classes/ABIv2Encoding.swift b/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift similarity index 96% rename from web3swift/ABIv2/Classes/ABIv2Encoding.swift rename to Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift index a8feaff54..e163dc0a2 100755 --- a/web3swift/ABIv2/Classes/ABIv2Encoding.swift +++ b/Pods/EthereumABI/EthereumABI/Classes/ABIEncoding.swift @@ -1,20 +1,17 @@ // -// ABIv2Encoding.swift -// web3swift -// -// Created by Alexander Vlasov on 03.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation import BigInt import EthereumAddress -public struct ABIv2Encoder { +public struct ABIEncoder { } -extension ABIv2Encoder { +extension ABIEncoder { public static func convertToBigUInt(_ value: AnyObject) -> BigUInt? { switch value { case let v as BigUInt: @@ -137,15 +134,15 @@ extension ABIv2Encoder { } - public static func encode(types: [ABIv2.Element.InOut], values: [AnyObject]) -> Data? { + public static func encode(types: [ABI.Element.InOut], values: [AnyObject]) -> Data? { guard types.count == values.count else {return nil} - let params = types.compactMap { (el) -> ABIv2.Element.ParameterType in + let params = types.compactMap { (el) -> ABI.Element.ParameterType in return el.type } return encode(types: params, values: values) } - public static func encode(types: [ABIv2.Element.ParameterType], values: [AnyObject]) -> Data? { + public static func encode(types: [ABI.Element.ParameterType], values: [AnyObject]) -> Data? { guard types.count == values.count else {return nil} var tails = [Data]() var heads = [Data]() @@ -183,7 +180,7 @@ extension ABIv2Encoder { return headsConcatenated + tailsConcatenated } - public static func encodeSingleType(type: ABIv2.Element.ParameterType, value: AnyObject) -> Data? { + public static func encodeSingleType(type: ABI.Element.ParameterType, value: AnyObject) -> Data? { switch type { case .uint(_): if let biguint = convertToBigUInt(value) { diff --git a/Pods/EthereumABI/EthereumABI/Classes/ABIExtensions.swift b/Pods/EthereumABI/EthereumABI/Classes/ABIExtensions.swift new file mode 100644 index 000000000..f006e44e9 --- /dev/null +++ b/Pods/EthereumABI/EthereumABI/Classes/ABIExtensions.swift @@ -0,0 +1,271 @@ +// +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation +import BigInt + +extension Data { + func setLengthLeft(_ toBytes: UInt64, isNegative:Bool = false ) -> Data? { + let existingLength = UInt64(self.count) + if (existingLength == toBytes) { + return Data(self) + } else if (existingLength > toBytes) { + return nil + } + var data:Data + if (isNegative) { + data = Data(repeating: UInt8(255), count: Int(toBytes - existingLength)) + } else { + data = Data(repeating: UInt8(0), count: Int(toBytes - existingLength)) + } + data.append(self) + return data + } + + func setLengthRight(_ toBytes: UInt64, isNegative:Bool = false ) -> Data? { + let existingLength = UInt64(self.count) + if (existingLength == toBytes) { + return Data(self) + } else if (existingLength > toBytes) { + return nil + } + var data:Data = Data() + data.append(self) + if (isNegative) { + data.append(Data(repeating: UInt8(255), count: Int(toBytes - existingLength))) + } else { + data.append(Data(repeating: UInt8(0), count:Int(toBytes - existingLength))) + } + return data + } + + static func fromHex(_ hex: String) -> Data? { + let string = hex.lowercased().stripHexPrefix() + let array = Array(hex: string) + if (array.count == 0) { + if (hex == "0x" || hex == "") { + return Data() + } else { + return nil + } + } + return Data(array) + } +} + +extension BigInt { + func toTwosComplement() -> Data { + if (self.sign == BigInt.Sign.plus) { + return self.magnitude.serialize() + } else { + let serializedLength = self.magnitude.serialize().count + let MAX = BigUInt(1) << (serializedLength*8) + let twoComplement = MAX - self.magnitude + return twoComplement.serialize() + } + } +} + +extension BigUInt { + func abiEncode(bits: UInt64) -> Data? { + let data = self.serialize() + let paddedLength = UInt64((bits + 7) / 8) + let padded = data.setLengthLeft(paddedLength) + return padded + } +} + +extension BigInt { + func abiEncode(bits: UInt64) -> Data? { + let isNegative = self < (BigInt(0)) + let data = self.toTwosComplement() + let paddedLength = UInt64((bits + 7) / 8) + let padded = data.setLengthLeft(paddedLength, isNegative: isNegative) + return padded + } +} + +extension BigInt { + static func fromTwosComplement(data: Data) -> BigInt { + let isPositive = ((data[0] & 128) >> 7) == 0 + if (isPositive) { + let magnitude = BigUInt(data) + return BigInt(magnitude) + } else { + let MAX = (BigUInt(1) << (data.count*8)) + let magnitude = MAX - BigUInt(data) + let bigint = BigInt(0) - BigInt(magnitude) + return bigint + } + } +} + +extension String { + var fullRange: Range { + return startIndex.. Index? { + guard let range = range(of: String(char)) else { + return nil + } + return range.lowerBound + } + +// func split(intoChunksOf chunkSize: Int) -> [String] { +// var output = [String]() +// let splittedString = self +// .map { $0 } +// .split(intoChunksOf: chunkSize) +// splittedString.forEach { +// output.append($0.map { String($0) }.joined(separator: "")) +// } +// return output +// } + + subscript (bounds: CountableClosedRange) -> String { + let start = index(self.startIndex, offsetBy: bounds.lowerBound) + let end = index(self.startIndex, offsetBy: bounds.upperBound) + return String(self[start...end]) + } + + subscript (bounds: CountableRange) -> String { + let start = index(self.startIndex, offsetBy: bounds.lowerBound) + let end = index(self.startIndex, offsetBy: bounds.upperBound) + return String(self[start..) -> String { + let start = index(self.startIndex, offsetBy: bounds.lowerBound) + let end = self.endIndex + return String(self[start.. String { + let stringLength = self.count + if stringLength < toLength { + return String(repeatElement(character, count: toLength - stringLength)) + self + } else { + return String(self.suffix(toLength)) + } + } + +// func interpretAsBinaryData() -> Data? { +// let padded = self.padding(toLength: ((self.count + 7) / 8) * 8, withPad: "0", startingAt: 0) +// let byteArray = padded.split(intoChunksOf: 8).map { UInt8(strtoul($0, nil, 2)) } +// return Data(byteArray) +// } + + func hasHexPrefix() -> Bool { + return self.hasPrefix("0x") + } + + func stripHexPrefix() -> String { + if self.hasPrefix("0x") { + let indexStart = self.index(self.startIndex, offsetBy: 2) + return String(self[indexStart...]) + } + return self + } + + func addHexPrefix() -> String { + if !self.hasPrefix("0x") { + return "0x" + self + } + return self + } + + func matchingStrings(regex: String) -> [[String]] { + guard let regex = try? NSRegularExpression(pattern: regex, options: []) else { return [] } + let nsString = self as NSString + let results = regex.matches(in: self, options: [], range: NSMakeRange(0, nsString.length)) + return results.map { result in + (0.. Range? { + guard + let from16 = utf16.index(utf16.startIndex, offsetBy: nsRange.location, limitedBy: utf16.endIndex), + let to16 = utf16.index(utf16.startIndex, offsetBy: nsRange.location + nsRange.length, limitedBy: utf16.endIndex), + let from = from16.samePosition(in: self), + let to = to16.samePosition(in: self) + else { return nil } + return from ..< to + } + + var asciiValue: Int { + get { + let s = self.unicodeScalars + return Int(s[s.startIndex].value) + } + } +} + +extension Character { + var asciiValue: Int { + get { + let s = String(self).unicodeScalars + return Int(s[s.startIndex].value) + } + } +} + +extension Array where Element == UInt8 { + init(hex: String) { + self.init(reserveCapacity: hex.unicodeScalars.lazy.underestimatedCount) + var buffer: UInt8? + var skip = hex.hasPrefix("0x") ? 2 : 0 + for char in hex.unicodeScalars.lazy { + guard skip == 0 else { + skip -= 1 + continue + } + guard char.value >= 48 && char.value <= 102 else { + removeAll() + return + } + let v: UInt8 + let c: UInt8 = UInt8(char.value) + switch c { + case let c where c <= 57: + v = c - 48 + case let c where c >= 65 && c <= 70: + v = c - 55 + case let c where c >= 97: + v = c - 87 + default: + removeAll() + return + } + if let b = buffer { + append(b << 4 | v) + buffer = nil + } else { + buffer = v + } + } + if let b = buffer { + append(b) + } + } + + func toHexString() -> String { + return `lazy`.reduce("") { + var s = String($1, radix: 16) + if s.count == 1 { + s = "0" + s + } + return $0 + s + } + } +} diff --git a/web3swift/ABIv2/Classes/ABIv2ParameterTypes.swift b/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift similarity index 90% rename from web3swift/ABIv2/Classes/ABIv2ParameterTypes.swift rename to Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift index 21248cca6..469c155fd 100755 --- a/web3swift/ABIv2/Classes/ABIv2ParameterTypes.swift +++ b/Pods/EthereumABI/EthereumABI/Classes/ABIParameterTypes.swift @@ -1,19 +1,16 @@ // -// ABIv2ParameterTypes.swift -// web3swift -// -// Created by Alexander Vlasov on 02.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation import BigInt import EthereumAddress -extension ABIv2.Element { +extension ABI.Element { /// Specifies the type that parameters in a contract have. - public enum ParameterType: ABIv2ElementPropertiesProtocol { + public enum ParameterType: ABIElementPropertiesProtocol { case uint(bits: UInt64) case int(bits: UInt64) case address @@ -71,7 +68,7 @@ extension ABIv2.Element { } } - var subtype: ABIv2.Element.ParameterType? { + var subtype: ABI.Element.ParameterType? { switch self { case .array(type: let type, length: _): return type @@ -130,7 +127,7 @@ extension ABIv2.Element { } } - var arraySize: ABIv2.Element.ArraySize { + var arraySize: ABI.Element.ArraySize { switch self { case .array(type: _, length: let length): if (length == 0) { @@ -146,8 +143,8 @@ extension ABIv2.Element { } -extension ABIv2.Element.ParameterType: Equatable { - public static func ==(lhs: ABIv2.Element.ParameterType, rhs: ABIv2.Element.ParameterType) -> Bool { +extension ABI.Element.ParameterType: Equatable { + public static func ==(lhs: ABI.Element.ParameterType, rhs: ABI.Element.ParameterType) -> Bool { switch (lhs, rhs) { case let (.uint(length1), .uint(length2)): return length1 == length2 @@ -173,7 +170,7 @@ extension ABIv2.Element.ParameterType: Equatable { } } -extension ABIv2.Element.Function { +extension ABI.Element.Function { public var signature: String { return "\(name ?? "")(\(inputs.map { $0.type.abiRepresentation }.joined(separator: ",")))" } @@ -188,7 +185,7 @@ extension ABIv2.Element.Function { } // MARK: - Event topic -extension ABIv2.Element.Event { +extension ABI.Element.Event { public var signature: String { return "\(name)(\(inputs.map { $0.type.abiRepresentation }.joined(separator: ",")))" } @@ -199,7 +196,7 @@ extension ABIv2.Element.Event { } -extension ABIv2.Element.ParameterType: ABIv2Encoding { +extension ABI.Element.ParameterType: ABIEncoding { public var abiRepresentation: String { switch self { case .uint(let bits): @@ -231,7 +228,7 @@ extension ABIv2.Element.ParameterType: ABIv2Encoding { } } -extension ABIv2.Element.ParameterType: ABIv2Validation { +extension ABI.Element.ParameterType: ABIValidation { public var isValid: Bool { switch self { case .uint(let bits), .int(let bits): diff --git a/web3swift/ABIv2/Classes/ABIv2Parsing.swift b/Pods/EthereumABI/EthereumABI/Classes/ABIParsing.swift similarity index 50% rename from web3swift/ABIv2/Classes/ABIv2Parsing.swift rename to Pods/EthereumABI/EthereumABI/Classes/ABIParsing.swift index 5ae447ca4..f99c13295 100755 --- a/web3swift/ABIv2/Classes/ABIv2Parsing.swift +++ b/Pods/EthereumABI/EthereumABI/Classes/ABIParsing.swift @@ -1,16 +1,13 @@ // -// ABIParser.swift -// web3swift -// -// Created by Alexander Vlasov on 06.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation -extension ABIv2 { +extension ABI { - public enum ParsingError: Error { + public enum ParsingError: Swift.Error { case invalidJsonFile case elementTypeInvalid case elementNameInvalid @@ -37,69 +34,69 @@ extension ABIv2 { } -extension ABIv2.Record { - public func parse() throws -> ABIv2.Element { +extension ABI.Record { + public func parse() throws -> ABI.Element { let typeString = self.type != nil ? self.type! : "function" - guard let type = ABIv2.ElementType(rawValue: typeString) else { - throw ABIv2.ParsingError.elementTypeInvalid + guard let type = ABI.ElementType(rawValue: typeString) else { + throw ABI.ParsingError.elementTypeInvalid } return try parseToElement(from: self, type: type) } } -fileprivate func parseToElement(from abiRecord: ABIv2.Record, type: ABIv2.ElementType) throws -> ABIv2.Element { +fileprivate func parseToElement(from abiRecord: ABI.Record, type: ABI.ElementType) throws -> ABI.Element { switch type { case .function: let function = try parseFunction(abiRecord: abiRecord) - return ABIv2.Element.function(function) + return ABI.Element.function(function) case .constructor: let constructor = try parseConstructor(abiRecord: abiRecord) - return ABIv2.Element.constructor(constructor) + return ABI.Element.constructor(constructor) case .fallback: let fallback = try parseFallback(abiRecord: abiRecord) - return ABIv2.Element.fallback(fallback) + return ABI.Element.fallback(fallback) case .event: let event = try parseEvent(abiRecord: abiRecord) - return ABIv2.Element.event(event) + return ABI.Element.event(event) } } -fileprivate func parseFunction(abiRecord:ABIv2.Record) throws -> ABIv2.Element.Function { - let inputs = try abiRecord.inputs?.map({ (input:ABIv2.Input) throws -> ABIv2.Element.InOut in +fileprivate func parseFunction(abiRecord:ABI.Record) throws -> ABI.Element.Function { + let inputs = try abiRecord.inputs?.map({ (input:ABI.Input) throws -> ABI.Element.InOut in let nativeInput = try input.parse() return nativeInput }) - let abiInputs = inputs != nil ? inputs! : [ABIv2.Element.InOut]() - let outputs = try abiRecord.outputs?.map({ (output:ABIv2.Output) throws -> ABIv2.Element.InOut in + let abiInputs = inputs != nil ? inputs! : [ABI.Element.InOut]() + let outputs = try abiRecord.outputs?.map({ (output:ABI.Output) throws -> ABI.Element.InOut in let nativeOutput = try output.parse() return nativeOutput }) - let abiOutputs = outputs != nil ? outputs! : [ABIv2.Element.InOut]() + let abiOutputs = outputs != nil ? outputs! : [ABI.Element.InOut]() let name = abiRecord.name != nil ? abiRecord.name! : "" let payable = abiRecord.stateMutability != nil ? (abiRecord.stateMutability == "payable" || abiRecord.payable!) : false let constant = (abiRecord.constant == true || abiRecord.stateMutability == "view" || abiRecord.stateMutability == "pure") - let functionElement = ABIv2.Element.Function(name: name, inputs: abiInputs, outputs: abiOutputs, constant: constant, payable: payable) + let functionElement = ABI.Element.Function(name: name, inputs: abiInputs, outputs: abiOutputs, constant: constant, payable: payable) return functionElement } -fileprivate func parseFallback(abiRecord:ABIv2.Record) throws -> ABIv2.Element.Fallback { +fileprivate func parseFallback(abiRecord:ABI.Record) throws -> ABI.Element.Fallback { let payable = (abiRecord.stateMutability == "payable" || abiRecord.payable!) var constant = abiRecord.constant == true if (abiRecord.stateMutability == "view" || abiRecord.stateMutability == "pure") { constant = true } - let functionElement = ABIv2.Element.Fallback(constant: constant, payable: payable) + let functionElement = ABI.Element.Fallback(constant: constant, payable: payable) return functionElement } -fileprivate func parseConstructor(abiRecord:ABIv2.Record) throws -> ABIv2.Element.Constructor { - let inputs = try abiRecord.inputs?.map({ (input:ABIv2.Input) throws -> ABIv2.Element.InOut in +fileprivate func parseConstructor(abiRecord:ABI.Record) throws -> ABI.Element.Constructor { + let inputs = try abiRecord.inputs?.map({ (input:ABI.Input) throws -> ABI.Element.InOut in let nativeInput = try input.parse() return nativeInput }) - let abiInputs = inputs != nil ? inputs! : [ABIv2.Element.InOut]() + let abiInputs = inputs != nil ? inputs! : [ABI.Element.InOut]() var payable = false if (abiRecord.payable != nil) { payable = abiRecord.payable! @@ -108,79 +105,79 @@ fileprivate func parseConstructor(abiRecord:ABIv2.Record) throws -> ABIv2.Elemen payable = true } let constant = false - let functionElement = ABIv2.Element.Constructor(inputs: abiInputs, constant: constant, payable: payable) + let functionElement = ABI.Element.Constructor(inputs: abiInputs, constant: constant, payable: payable) return functionElement } -fileprivate func parseEvent(abiRecord:ABIv2.Record) throws -> ABIv2.Element.Event { - let inputs = try abiRecord.inputs?.map({ (input:ABIv2.Input) throws -> ABIv2.Element.Event.Input in +fileprivate func parseEvent(abiRecord:ABI.Record) throws -> ABI.Element.Event { + let inputs = try abiRecord.inputs?.map({ (input:ABI.Input) throws -> ABI.Element.Event.Input in let nativeInput = try input.parseForEvent() return nativeInput }) - let abiInputs = inputs != nil ? inputs! : [ABIv2.Element.Event.Input]() + let abiInputs = inputs != nil ? inputs! : [ABI.Element.Event.Input]() let name = abiRecord.name != nil ? abiRecord.name! : "" let anonymous = abiRecord.anonymous != nil ? abiRecord.anonymous! : false - let functionElement = ABIv2.Element.Event(name: name, inputs: abiInputs, anonymous: anonymous) + let functionElement = ABI.Element.Event(name: name, inputs: abiInputs, anonymous: anonymous) return functionElement } -extension ABIv2.Input { - func parse() throws -> ABIv2.Element.InOut { +extension ABI.Input { + func parse() throws -> ABI.Element.InOut { let name = self.name != nil ? self.name! : "" - let parameterType = try ABIv2TypeParser.parseTypeString(self.type) + let parameterType = try ABITypeParser.parseTypeString(self.type) if case .tuple(types: _) = parameterType { - let components = try self.components?.compactMap({ (inp: ABIv2.Input) throws -> ABIv2.Element.ParameterType in + let components = try self.components?.compactMap({ (inp: ABI.Input) throws -> ABI.Element.ParameterType in let input = try inp.parse() return input.type }) - let type = ABIv2.Element.ParameterType.tuple(types: components!) - let nativeInput = ABIv2.Element.InOut(name: name, type: type) + let type = ABI.Element.ParameterType.tuple(types: components!) + let nativeInput = ABI.Element.InOut(name: name, type: type) return nativeInput } else { - let nativeInput = ABIv2.Element.InOut(name: name, type: parameterType) + let nativeInput = ABI.Element.InOut(name: name, type: parameterType) return nativeInput } } - func parseForEvent() throws -> ABIv2.Element.Event.Input{ + func parseForEvent() throws -> ABI.Element.Event.Input{ let name = self.name != nil ? self.name! : "" - let parameterType = try ABIv2TypeParser.parseTypeString(self.type) + let parameterType = try ABITypeParser.parseTypeString(self.type) let indexed = self.indexed == true - return ABIv2.Element.Event.Input(name:name, type: parameterType, indexed: indexed) + return ABI.Element.Event.Input(name:name, type: parameterType, indexed: indexed) } } -extension ABIv2.Output { - func parse() throws -> ABIv2.Element.InOut { +extension ABI.Output { + func parse() throws -> ABI.Element.InOut { let name = self.name != nil ? self.name! : "" - let parameterType = try ABIv2TypeParser.parseTypeString(self.type) + let parameterType = try ABITypeParser.parseTypeString(self.type) switch parameterType { case .tuple(types: _): - let components = try self.components?.compactMap({ (inp: ABIv2.Output) throws -> ABIv2.Element.ParameterType in + let components = try self.components?.compactMap({ (inp: ABI.Output) throws -> ABI.Element.ParameterType in let input = try inp.parse() return input.type }) - let type = ABIv2.Element.ParameterType.tuple(types: components!) - let nativeInput = ABIv2.Element.InOut(name: name, type: type) + let type = ABI.Element.ParameterType.tuple(types: components!) + let nativeInput = ABI.Element.InOut(name: name, type: type) return nativeInput case .array(type: let subtype, length: let length): switch subtype { case .tuple(types: _): - let components = try self.components?.compactMap({ (inp: ABIv2.Output) throws -> ABIv2.Element.ParameterType in + let components = try self.components?.compactMap({ (inp: ABI.Output) throws -> ABI.Element.ParameterType in let input = try inp.parse() return input.type }) - let nestedSubtype = ABIv2.Element.ParameterType.tuple(types: components!) - let properType = ABIv2.Element.ParameterType.array(type: nestedSubtype, length: length) - let nativeInput = ABIv2.Element.InOut(name: name, type: properType) + let nestedSubtype = ABI.Element.ParameterType.tuple(types: components!) + let properType = ABI.Element.ParameterType.array(type: nestedSubtype, length: length) + let nativeInput = ABI.Element.InOut(name: name, type: properType) return nativeInput default: - let nativeInput = ABIv2.Element.InOut(name: name, type: parameterType) + let nativeInput = ABI.Element.InOut(name: name, type: parameterType) return nativeInput } default: - let nativeInput = ABIv2.Element.InOut(name: name, type: parameterType) + let nativeInput = ABI.Element.InOut(name: name, type: parameterType) return nativeInput } } diff --git a/web3swift/ABIv2/Classes/ABIv2TypeParser.swift b/Pods/EthereumABI/EthereumABI/Classes/ABITypeParser.swift similarity index 72% rename from web3swift/ABIv2/Classes/ABIv2TypeParser.swift rename to Pods/EthereumABI/EthereumABI/Classes/ABITypeParser.swift index 370dc26fe..274712471 100755 --- a/web3swift/ABIv2/Classes/ABIv2TypeParser.swift +++ b/Pods/EthereumABI/EthereumABI/Classes/ABITypeParser.swift @@ -1,14 +1,11 @@ // -// ABIv2TypeParser.swift -// web3swift -// -// Created by Alexander Vlasov on 03.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation -public struct ABIv2TypeParser { +public struct ABITypeParser { private enum BaseParameterType: String { case address @@ -21,7 +18,7 @@ public struct ABIv2TypeParser { case tuple } - private static func baseTypeMatch(from string: String, length: UInt64 = 0) -> ABIv2.Element.ParameterType? { + static func baseTypeMatch(from string: String, length: UInt64 = 0) -> ABI.Element.ParameterType? { switch BaseParameterType(rawValue: string) { case .address?: return .address @@ -41,26 +38,26 @@ public struct ABIv2TypeParser { case .string?: return .string case .tuple?: - return .tuple(types: [ABIv2.Element.ParameterType]()) + return .tuple(types: [ABI.Element.ParameterType]()) default: return nil } } - public static func parseTypeString(_ string:String) throws -> ABIv2.Element.ParameterType { + public static func parseTypeString(_ string:String) throws -> ABI.Element.ParameterType { let (type, tail) = recursiveParseType(string) - guard let t = type, tail == nil else {throw Web3Error.inputError(desc: "Failed to parse ABI element " + string)} + guard let t = type, tail == nil else {throw ABI.ParsingError.elementTypeInvalid} return t } - public static func recursiveParseType(_ string: String) -> (type: ABIv2.Element.ParameterType?, tail: String?) { - let matcher = try! NSRegularExpression(pattern: ABIv2.TypeParsingExpressions.typeEatingRegex, options: NSRegularExpression.Options.dotMatchesLineSeparators) + static func recursiveParseType(_ string: String) -> (type: ABI.Element.ParameterType?, tail: String?) { + let matcher = try! NSRegularExpression(pattern: ABI.TypeParsingExpressions.typeEatingRegex, options: NSRegularExpression.Options.dotMatchesLineSeparators) let match = matcher.matches(in: string, options: NSRegularExpression.MatchingOptions.anchored, range: string.fullNSRange) guard match.count == 1 else { return (nil, nil) } var tail: String = "" - var type: ABIv2.Element.ParameterType? + var type: ABI.Element.ParameterType? guard match[0].numberOfRanges >= 1 else {return (nil, nil)} guard let baseTypeRange = Range(match[0].range(at: 1), in: string) else {return (nil, nil)} let baseTypeString = String(string[baseTypeRange]) @@ -86,22 +83,22 @@ public struct ABIv2TypeParser { return recursiveParseArray(baseType: type!, string: tail) } - public static func recursiveParseArray(baseType: ABIv2.Element.ParameterType, string: String) -> (type: ABIv2.Element.ParameterType?, tail: String?) { - let matcher = try! NSRegularExpression(pattern: ABIv2.TypeParsingExpressions.arrayEatingRegex, options: NSRegularExpression.Options.dotMatchesLineSeparators) + static func recursiveParseArray(baseType: ABI.Element.ParameterType, string: String) -> (type: ABI.Element.ParameterType?, tail: String?) { + let matcher = try! NSRegularExpression(pattern: ABI.TypeParsingExpressions.arrayEatingRegex, options: NSRegularExpression.Options.dotMatchesLineSeparators) let match = matcher.matches(in: string, options: NSRegularExpression.MatchingOptions.anchored, range: string.fullNSRange) guard match.count == 1 else {return (nil, nil)} var tail: String = "" - var type: ABIv2.Element.ParameterType? + var type: ABI.Element.ParameterType? guard match[0].numberOfRanges >= 1 else {return (nil, nil)} guard let baseArrayRange = Range(match[0].range(at: 1), in: string) else {return (nil, nil)} let baseArrayString = String(string[baseArrayRange]) if match[0].numberOfRanges >= 2, let exactArrayRange = Range(match[0].range(at: 2), in: string) { let lengthString = String(string[exactArrayRange]) guard let arrayLength = UInt64(lengthString) else {return (nil, nil)} - let baseType = ABIv2.Element.ParameterType.array(type: baseType, length: arrayLength) + let baseType = ABI.Element.ParameterType.array(type: baseType, length: arrayLength) type = baseType } else { - let baseType = ABIv2.Element.ParameterType.array(type: baseType, length: 0) + let baseType = ABI.Element.ParameterType.array(type: baseType, length: 0) type = baseType } tail = string.replacingCharacters(in: string.range(of: baseArrayString)!, with: "") diff --git a/Pods/EthereumABI/EthereumABI/EthereumABI.h b/Pods/EthereumABI/EthereumABI/EthereumABI.h new file mode 100644 index 000000000..f2d5c0b75 --- /dev/null +++ b/Pods/EthereumABI/EthereumABI/EthereumABI.h @@ -0,0 +1,23 @@ +// +// EthereumABI.h +// EthereumABI +// +// Created by Alex Vlasov on 25/10/2018. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +#if TARGET_OS_IPHONE +#import +#else +#import +#endif + +//! Project version number for EthereumABI. +FOUNDATION_EXPORT double EthereumABIVersionNumber; + +//! Project version string for EthereumABI. +FOUNDATION_EXPORT const unsigned char EthereumABIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Pods/EthereumABI/LICENSE b/Pods/EthereumABI/LICENSE new file mode 100644 index 000000000..d49e6aa41 --- /dev/null +++ b/Pods/EthereumABI/LICENSE @@ -0,0 +1,13 @@ +Copyright 2018 Alex Vlasov + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/Pods/EthereumABI/README.md b/Pods/EthereumABI/README.md new file mode 100644 index 000000000..0e96dc82f --- /dev/null +++ b/Pods/EthereumABI/README.md @@ -0,0 +1,3 @@ +# Description + +Ethereum ABI parsing, decoding and encoding module for other projects diff --git a/Pods/Headers/Private/EthereumABI/EthereumABI.h b/Pods/Headers/Private/EthereumABI/EthereumABI.h new file mode 120000 index 000000000..6b3bc1af1 --- /dev/null +++ b/Pods/Headers/Private/EthereumABI/EthereumABI.h @@ -0,0 +1 @@ +../../../EthereumABI/EthereumABI/EthereumABI.h \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h b/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h index 54c439564..d04d0f479 120000 --- a/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h +++ b/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap b/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap index 5827ffd6f..5e3ba93be 120000 --- a/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap +++ b/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h b/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h index 15cd9101e..7c100fb6e 120000 --- a/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h +++ b/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap b/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap index db0458375..309999e26 120000 --- a/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap +++ b/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h index 38ee2e270..53d6c211e 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap index d3c8afa43..c3e3c3a34 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h index 4f6598359..1bf7d4d73 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap index 13bb9bda2..19cb03653 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h new file mode 120000 index 000000000..82745e647 --- /dev/null +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h @@ -0,0 +1 @@ +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap new file mode 120000 index 000000000..bff509710 --- /dev/null +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap @@ -0,0 +1 @@ +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h new file mode 120000 index 000000000..c4a703b51 --- /dev/null +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h @@ -0,0 +1 @@ +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap new file mode 120000 index 000000000..c270ce50e --- /dev/null +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap @@ -0,0 +1 @@ +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI.h b/Pods/Headers/Public/EthereumABI/EthereumABI.h new file mode 120000 index 000000000..6b3bc1af1 --- /dev/null +++ b/Pods/Headers/Public/EthereumABI/EthereumABI.h @@ -0,0 +1 @@ +../../../EthereumABI/EthereumABI/EthereumABI.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h index 505dcdba1..48a0c2378 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap index 2e8de9c1b..5daa54791 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h index 45c29b7ea..ec4284bbd 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap index 1814f3891..71f266362 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h b/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h index 384f088cd..54a39550a 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h +++ b/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap b/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap index 5b105d963..03e17826b 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h index 6026bec84..2202ae821 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap index 515bc96ce..377be965b 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-iOS-umbrella.h b/Pods/Headers/Public/Result/Result-iOS-umbrella.h index 5017bcc62..a7f847b9e 120000 --- a/Pods/Headers/Public/Result/Result-iOS-umbrella.h +++ b/Pods/Headers/Public/Result/Result-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-iOS.modulemap b/Pods/Headers/Public/Result/Result-iOS.modulemap index a9cb518ea..bc4f23ca4 120000 --- a/Pods/Headers/Public/Result/Result-iOS.modulemap +++ b/Pods/Headers/Public/Result/Result-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-macOS-umbrella.h b/Pods/Headers/Public/Result/Result-macOS-umbrella.h index d933679ed..5c92b47bc 120000 --- a/Pods/Headers/Public/Result/Result-macOS-umbrella.h +++ b/Pods/Headers/Public/Result/Result-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-macOS.modulemap b/Pods/Headers/Public/Result/Result-macOS.modulemap index 6ff87c94a..a1725381e 120000 --- a/Pods/Headers/Public/Result/Result-macOS.modulemap +++ b/Pods/Headers/Public/Result/Result-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h b/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h index 736829e4f..909a01c80 120000 --- a/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h +++ b/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap b/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap index 363bde1c4..60dbe3748 120000 --- a/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap +++ b/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h b/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h index c56e6a45b..b1f95e224 120000 --- a/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h +++ b/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap b/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap index 835353525..5ea25fc9c 120000 --- a/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap +++ b/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h index b77347325..b1b552e68 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap index ae407f989..0842d08e1 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h index 4740a4f84..b77715c02 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap index d1421e204..c5cebdd37 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h b/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h index 1c81cd5a7..e82a48440 120000 --- a/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h +++ b/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap b/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap index 02bd8338d..082fbbbba 120000 --- a/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap +++ b/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h b/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h index 75f99866d..7a0dabd86 120000 --- a/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h +++ b/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap b/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap index 2e33aed25..9ec4c6ed1 120000 --- a/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap +++ b/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h index 70cc63a67..554c654f1 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap index c5b6fa265..44829fb84 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h index d75b444d6..56967ab47 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap index c0e372d55..0ec25a913 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap \ No newline at end of file diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index bd8f6bf62..c66bc7947 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -2,6 +2,10 @@ PODS: - BigInt (3.1.0): - SipHash (~> 1.2) - CryptoSwift (0.13.0) + - EthereumABI (1.1.1): + - BigInt (~> 3.1) + - CryptoSwift (~> 0.13) + - EthereumAddress (~> 1.0.0) - EthereumAddress (1.0.0): - CryptoSwift (~> 0.13) - PromiseKit (6.4.1): @@ -23,7 +27,8 @@ PODS: DEPENDENCIES: - BigInt (~> 3.1) - - CryptoSwift (~> 0.12) + - CryptoSwift (~> 0.13) + - EthereumABI (~> 1.1.1) - EthereumAddress (~> 1.0.0) - PromiseKit (~> 6.4.1) - Result (~> 4.0) @@ -35,6 +40,7 @@ SPEC REPOS: https://github.com/cocoapods/specs.git: - BigInt - CryptoSwift + - EthereumABI - EthereumAddress - PromiseKit - Result @@ -46,6 +52,7 @@ SPEC REPOS: SPEC CHECKSUMS: BigInt: 76b5dfdfa3e2e478d4ffdf161aeede5502e2742f CryptoSwift: 16e78bebf567bad1c87b2d58f6547f25b74c31aa + EthereumABI: f040f5429e5a4366d028c88b88d9441e137593af EthereumAddress: f476e1320dca3a0024431e713ede7a09c7eb7796 PromiseKit: 4c76a6506638034e3d7bede97b2ff7743f7bd2dc Result: 7645bb3f50c2ce726dd0ff2fa7b6f42bbe6c3713 @@ -54,6 +61,6 @@ SPEC CHECKSUMS: SipHash: fad90a4683e420c52ef28063063dbbce248ea6d4 SwiftRLP: 5512899925f1a9e1c78c902ed3bf857880e814a0 -PODFILE CHECKSUM: 9f923f3cffffde022aaef140f9cd311a152e9c49 +PODFILE CHECKSUM: 72534436a5f24d6d07a676642432e134a85ff3e5 -COCOAPODS: 1.6.0.beta.1 +COCOAPODS: 1.6.0.beta.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index bf4ee6f4f..70a06ecce 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,485 +7,542 @@ objects = { /* Begin PBXBuildFile section */ - 006C73869D28CFC3C08992F0723EE0C6 /* Pods-web3swift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E91F337EA3979DB5DD84C325A340270 /* Pods-web3swift-macOS-dummy.m */; }; - 00CE1E56028E70F6A410464BB8266F28 /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C57A83FBD44C769166BCCC5CD45BD3F /* firstly.swift */; }; - 01349159EBEDEB29A5C35BA3B387F596 /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C8DD41F37C777526C9EA621C9213C9 /* Poly1305.swift */; }; - 014401F351E5C79C50E62052E8AD671C /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 1D7B42933B2D81EED52706C7200A9732 /* lax_der_privatekey_parsing.c */; }; - 01E1753617A93639EEA9E9A55B0315BA /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA0E0A67D5738512E4618E1AEDA5E3E /* CustomStringConvertible.swift */; }; - 0315EE301733CF0DE349A0C9B65C177F /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C8DD41F37C777526C9EA621C9213C9 /* Poly1305.swift */; }; - 031B3FFCD45AD7672462A575142008AF /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = AEA94352D4A3D0793D359A8C1CB50E4A /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0416379BA218FFDEAF901B16AD09831F /* CryptoSwift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8D1F94E4F2A45EC9F2154127E14D416 /* CryptoSwift-macOS-dummy.m */; }; - 0676D57F5CE425CA83CAA976ED4030D7 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = C21956F497DCFA1D883CAC00AF330784 /* race.swift */; }; - 068E167EF11A07C17D688B3BBC218D34 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC7202C545EAC46F224EE9AB6B1F0F7 /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0800D78442F1F493C69F6F6C51A6A7A4 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3A44C98D1E93465803241C08887CDD /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 088ADDDC247990129868BE86AAFDD65F /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C57A83FBD44C769166BCCC5CD45BD3F /* firstly.swift */; }; - 08F8D3D166021760B18C796EF207413F /* EthereumAddress-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BF61EAD9C9EC96163CECACFBF3504C3 /* EthereumAddress-macOS-dummy.m */; }; - 098D227D8DAE7643ACDF1DBCE8AA4264 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB290FC3F5ACF0789F4078C376E6ADED /* Array+Extension.swift */; }; - 09BAF87C5E1AF9E3EE4DEA24FF666E43 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47CE1FE3AEC19CC322E3E03530D21CD /* PCBC.swift */; }; - 09BF24BCE4F4A393B8E2A8FF610FA924 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A1004ABA6FF6BBB692884F59131E13 /* Utils.swift */; }; - 09F1AC7E0FE7F27B9029F4B3D06DD73E /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74111ED4B5372D2EE9A218621A18699C /* afterlife.swift */; }; - 0A396743B4ADF0FA7C12FDF1BA2C5F14 /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4D45B809574B97A749EADBA2EFAB02 /* CBCMAC.swift */; }; - 0AB147133F796C59B1000495EDE8F694 /* scrypt-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F60B61CB7F6EF778CD12A3622F779434 /* scrypt-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B442DCD3296A492C9C58C8AE14BA0A8 /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B177F4FEBB7F565C10EB6AABDF0CFB6C /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B8DCF4FC4B4CC3F687AC9FB1E97504C /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 612CB1FE4A4EF26D20DC64543E17C82A /* when.m */; }; - 0C031445C897BFE6D124AD54FA1B39E4 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = EE8A73B5FBE9F82E34238AC840FC7331 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C3EF791FBE499977F647EE7635CC4C9 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CC384B5F6C90CB968D0AB32162249B6 /* Updatable.swift */; }; - 0C8C916943E653184B644A98632DDC47 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 681146D3345FF5156D09E271666D5EA1 /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D668C0B0CBE5C06AE7AE80EC0F20207 /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = C21956F497DCFA1D883CAC00AF330784 /* race.swift */; }; - 0E7F3356235A21C8DEE7CFC67A802552 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01271B2BB62FE2D72466A630AC9D1BE8 /* Configuration.swift */; }; - 0EDEC46E0BC997FB64753A1C709A4AE7 /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5540F42E4F8BF99A1C7F95349EA8707D /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0EF95CCD3EF4EC40F109D9D364B6504D /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 40ABB4750B401A88B273D3B180C1FEC9 /* fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0F4C148C5393004D090DC7218E39BB39 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1422C640D1B145BC997D3E0A3FF10339 /* Extensions.swift */; }; - 0FFEBD2D6ACAE3AC711E0208FCEACC40 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = 5297103B37D2E5083D67ABE2C60CA382 /* after.m */; }; - 1026302AD9FDCB8A55CB7EBB06DA0D7F /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 635C328C2CAB4B34DEF69D8CFABA3AC1 /* AnyPromise.m */; }; - 11235690EFCBB5F0EBC4A56A7E3AB2DA /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25E9E042655265AEB9322FB01DD7A702 /* Resolver.swift */; }; - 11461F81975B779BC100E7345CE2D793 /* EthereumAddress-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2766B8B12BFE63523151BC3F80CDF4 /* EthereumAddress-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1158B8A68E881A4243A310CB039AA866 /* Result-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C30494B6003825A7F5E0AE152495E590 /* Result-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11D236D734F12042B70BB21010A7BB31 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77FB79008E5E4C52EE48B984D12A652E /* AES.swift */; }; - 127EFEFCE576E0CDD1DF3708F20C10BC /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1AB32F0AE7B734159BB1FBAF7F5078 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12E1E9691B7286282223CB20A574F364 /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B177F4FEBB7F565C10EB6AABDF0CFB6C /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 13D45CC6E83EFEB9467158ECB394D367 /* EthereumAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 48BBE301C7AC93BA32B43FDCAB55FF55 /* EthereumAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 158F6BC9635AF0C4F8FCAD1FB913BB45 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A86CAF979F3E970071A5FC47D9D7EAC /* Division.swift */; }; - 16430D1306BA11693EFE55BE2052FBEB /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EA6F524218763DB7E76A6E13387EAC /* Padding.swift */; }; - 1726CE463B9A337870F28E208B8F268E /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 639957AA1B177687176168DC8D443490 /* BlockModeOptions.swift */; }; - 1736288FC9BC2391AF96F9CCBA1A27D2 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BFCCF45D62D69A50F9ED16BCE93C54A /* SHA2.swift */; }; - 17B2699526C79E4F6A7F890EF0C62A1D /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ED371C14676A66BA35BCF542FF8B548 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 187B191D2E4399E1567DB24BD93F0486 /* SipHash-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E34CB7E7EAC6A9C0F75649FD43EC23F2 /* SipHash-macOS-dummy.m */; }; - 1904E18F6CE01618BBBC1B31E43B64EA /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6633CE6E0F4DA082E8A3374A723A4844 /* BigUInt.swift */; }; - 193CE1B123F216F0140298A506854F9D /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9787E8C8BA8DAE16D659DA569EECED22 /* Random.swift */; }; - 1A8FE1E286DA1769792CED41CA55E329 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20BE3E8F811475C9F3E6350A16EF3D56 /* UInt16+Extension.swift */; }; - 1AAC341916DC64CD28D08BDFED57AC9C /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7953EE95375573E978E0FAC7F88260CF /* Shifts.swift */; }; - 1B2C98EB955D193734DA944CDBAF4CBB /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9C39AD388A82A531C338B26EE00DB9C /* NSNotificationCenter+Promise.swift */; }; - 1B7BD089E927617EA26BDF05EAA765A2 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 982B03AB9D403479BF865D7C3A5B2D4F /* Thenable.swift */; }; - 1B9FF780BC13D12AA66605DC702CE662 /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5595E1873CFBC6061E8C6D86BFF12807 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1DC075FE4097BF0E29641EDD65D31E86 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D8151AFF003D8A45F3E0F171019ED33 /* OFB.swift */; }; - 1EAE65FB4A140803FE03F605B5B9AA82 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D13D2441410EEFA35EFB1823E238648A /* Cryptor.swift */; }; - 1EE960C5AF0D4947CD23926FF20C2134 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D6CFCC98052B542B8BD8050E0204993 /* Box.swift */; }; - 209C8981858102B13060DA6A94BE0170 /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 08390C702E93A122CAC37BDF6A07A98C /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2177A7B4F26FBB839E1C3F07A82887E4 /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BE63C0E40FA294F6C512967711E56D9 /* AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 219282246EF9A166FC2BD24AC6997C06 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D0947D47B9CECD59BC73EAC48D4ED27 /* HKDF.swift */; }; - 21B1C23EA3CD320C60DE1B2C4F849A2C /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = FD3D00DC2D85B010C2EB60CA78D22508 /* hang.m */; }; - 21DE72843C7B514A5D846FB52A8976C0 /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 310A618141B833B61214988468629C13 /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 226FF2D2465A03E4EDF572BE5AF88E19 /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 860EF39282D8941084557A3DCC1D7DF3 /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 228339669ABE224EA8C7AE49DC9EE0F8 /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5116359962EA1905AC0EB7121E634D9F /* ResultProtocol.swift */; }; - 22FF16F6223F01F3AA966B2E701CBF89 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = D286B6A0694F7E16078B8E7642CAE6FD /* Generics.swift */; }; - 24D38DE85704AB93DCA1AA003FBD6729 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86800F1D45016DC59C9BE8B9ABF5B50F /* Bit.swift */; }; - 251FC364DD9D317AB3F31F99BA809724 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D903E031FC7FD31DA94E1EC68778019 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 25ADF91F59CF38DA37B5155F3E4D28B8 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68CD2728F142362B577571D597A953D0 /* Promise.swift */; }; - 25DB619FFE4DED74D902A70CD2642ED4 /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B152212D05CB08C4E0B61D8CDFF12C9 /* Guarantee.swift */; }; - 27068BF23AE89103AC017DCE533A0B84 /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = AFD5882A04E0E27679FE6AAC8D9CA935 /* UIView+AnyPromise.m */; }; - 272DA3B8E6A36A340F174862DDF47CFA /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC86A3FC56A1BAE1CA3490D081E47F3 /* Checksum.swift */; }; - 274467E80B57985D276837BC38F63C9C /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68CD2728F142362B577571D597A953D0 /* Promise.swift */; }; - 279EAE9173342F41D610247C9B8788DE /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F8B31678A829B043331C94E279F1FD9 /* CompactMap.swift */; }; - 27CC89021B6035E3D3077405BF7D0518 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEA9421290E9294FEA25D9F6D3DDD24C /* Error.swift */; }; - 27DF4C9F60541A50E1E4C29080D83278 /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9C39AD388A82A531C338B26EE00DB9C /* NSNotificationCenter+Promise.swift */; }; - 2A1509546A4F640E1538711DAC7F3FFD /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A9A6187028CC6AD623334BA2899FDE /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2AC384703D326D9D63AC130A9FFAF78E /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 506B39E37C9D076FA278322A078D548D /* UIViewController+AnyPromise.m */; }; - 2AE019C6FBE28F14BBCF9011859E76C2 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ABE33C91D6B128E8B104ED3630B6ABB /* CBC.swift */; }; - 2AFFA6CFA6FD4C6C4CF3FE7F256F8B04 /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19725B1F6B394E3B97BB387C7E4E4874 /* NoError.swift */; }; - 2B3F7B28D29AE55CF915EC13A381D462 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 07CB743A805B99BE84DD49F8D999BF5C /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2EDCE4A3A80772C88E0B4031FE4D86C6 /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73043D2C83B1F1E5EC8F0E15C2CFE5A5 /* Words and Bits.swift */; }; - 2F6E8156D02A841E2616F0996781F15F /* Result-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 28AB30A05C0D17ABF7D0DBC475F93C23 /* Result-macOS-dummy.m */; }; - 318456407793AD399D02863A812ED6DE /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF137216E20AA1BF3FA0B1A647DB89AC /* Operators.swift */; }; - 318CA76F82F67216CF65AABA4466272E /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = F5AA52D2E5DC0134CBA0CB3219327A53 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 319DAAEE886E1752C38A946984071408 /* scrypt-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F0866AEDD788E4D8B51A31A2FB8C294F /* scrypt-iOS-dummy.m */; }; - 31A75721375ECAB73790FEB75766D87A /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = AEB5F00EFE918C35C091FD2FA7EACBF5 /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 31D346420CE39369D66215B21F8A3337 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1BDC161E1A001A666E01A22455E14B5 /* AES.Cryptors.swift */; }; - 320D4C619C3083F47C00012810B2EAC4 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 37B67C2B42A2EC2E689AE41636261351 /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 324A108EF1509B26512277B3C3BE7D2D /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C9CD6920241610BE46DBB9D591849AD /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3379FA9A4DA05C88936306809AC0EADA /* Result-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 74F90CB37B5FF688D45EE372C6FE875C /* Result-iOS-dummy.m */; }; - 337EA355DE058979DB126870227A42DF /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D5F98CA61161B592980B259143F48F5 /* Floating Point Conversion.swift */; }; - 33FA2A0C3B7394329B6B9B32D5EE53A2 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DE92E2A606B96369F79D742DFACB7C9 /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 354D68B8C8B6D4C003BDB91E8A1D680A /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 682CE9677672C1F944AA2896D3BD36FF /* String Conversion.swift */; }; - 359269757B7FED4424DD9489F42BBB49 /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D6357617301A15F1861ECE0B2D728E /* SipHashable.swift */; }; - 35D45B19269F07EA96E6F003C6A1F04D /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE7F6BB14F19AC57CB96B2D06603E845 /* ChaCha20.swift */; }; - 35E543DC36F19E32B3EC8F6652420EEF /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 062A95E74B96944BC0E3A674E72AE85E /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3607BA990F6961ED7E0401406A565C07 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C148A221559836C278AFFB2F0C6D3D /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 376C09B5EF8BAEF6D7450FDD24DA2530 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = D7009940ED0BFC1AA385433559754C27 /* join.m */; }; - 377C6046F93E7409F3996D06ADAD4CC7 /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D6357617301A15F1861ECE0B2D728E /* SipHashable.swift */; }; - 37B89B7042E76DF933791631E40CB4AB /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7739AC49E92EA0677899D077C015CE05 /* NSURLSession+Promise.swift */; }; - 3819CB7BE87DC385D208FF40C7199DEA /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC0E5DF49745E221D708C75FC2B03DC7 /* AES+Foundation.swift */; }; - 3867CF007FF0AC14F07271D9E60154CF /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20BE3E8F811475C9F3E6350A16EF3D56 /* UInt16+Extension.swift */; }; - 38D8B82703E87B790A4D8C9B749644DF /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 809F44457475B204EE242D251FDF9E8E /* Comparable.swift */; }; + 0020B3469BA74AE230A3980EAE138C7A /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DCAB923DFB091E9F4A71F5FD29FEB40 /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01349159EBEDEB29A5C35BA3B387F596 /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = C174EE4F0CE9A869F2E898CFF8A36484 /* Poly1305.swift */; }; + 0194087258D01A6AAD57DD0DCF7F9971 /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F20EF6148A6A9322390DD71721B5343D /* NoError.swift */; }; + 030B22879409F834B4FD21C5F8DFDDCD /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DCAB923DFB091E9F4A71F5FD29FEB40 /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0315EE301733CF0DE349A0C9B65C177F /* Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = C174EE4F0CE9A869F2E898CFF8A36484 /* Poly1305.swift */; }; + 0416379BA218FFDEAF901B16AD09831F /* CryptoSwift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B9103BCEE6F57F21DC2CDA536BA8D0F /* CryptoSwift-macOS-dummy.m */; }; + 0698C088B99DA6A050F31AABA173ED61 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = DF72EE1FD04A0B49CB495E9980F6B8A9 /* AnyPromise.m */; }; + 06AFCBEE04085CA117D6CEA63CF64C27 /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E664638E84199C40F931B3593272F8D /* NSObject+Promise.swift */; }; + 06E5B8C23C8BCD1E8F04C48C360B615E /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BF71F803FD375964F60D0271834711E /* AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0803200FCF34AD13D541A796839CFD8C /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C93F4B7E331943729BE3CFC4F439C2A /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 098D227D8DAE7643ACDF1DBCE8AA4264 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5430F65435F42C41489D6A5D36494E0B /* Array+Extension.swift */; }; + 09BAF87C5E1AF9E3EE4DEA24FF666E43 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E0CB4379D0092F51F5C1232B3CD03D3 /* PCBC.swift */; }; + 09BF24BCE4F4A393B8E2A8FF610FA924 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A15DC755B12D8CCABB5B073B63856F /* Utils.swift */; }; + 0A396743B4ADF0FA7C12FDF1BA2C5F14 /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9883FCDA0DBDA6DCA8C5923AB1B3F45A /* CBCMAC.swift */; }; + 0ADC230F620426946507547899D899B6 /* SwiftRLP.h in Headers */ = {isa = PBXBuildFile; fileRef = B8EBC720E3207E6F08965D7549AAFEC6 /* SwiftRLP.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B3D630F66F9E1B3BC7A654E42366967 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F7ED977AF2E31DEA78D850BDE6C9F601 /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B987FF04FAAC3E2C96DBE0C52BDBD62 /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FB6255E4560252B9DC0BE760F34C261 /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0BE78CEAD41114017D74519E3B67A0A2 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A9A0105BAE9E5BEE9ADD4B17A58DD8 /* Deprecations.swift */; }; + 0C3EF791FBE499977F647EE7635CC4C9 /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27DE68FEECDD098908A9003BDA40307F /* Updatable.swift */; }; + 0C67CB16C374D9368E38EB149B7CEEF8 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 582D7324492EFDB22783F0B7B2FA6859 /* Thenable.swift */; }; + 0D05ABBC7CC7C8489D2A4282581CA5E2 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C96A2C2C3B9F8977AD08B6FBEDE552 /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0E5539016575272AA3BFC2BEC1D7EB53 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FFFD5E940B31BAEC3CCFD05B093B6F8 /* NSTask+AnyPromise.m */; }; + 0EE3C6323A8EDEAB638639DD05932581 /* ABIEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6314619E8FCD5D07FBD2BA0BA5C58C15 /* ABIEncoding.swift */; }; + 0EF9D11A3631D7F8BE44552285F4A63F /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E13ACAF5A7893C3C300B8B880422662 /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F4BC161113C9EBF41626D66606EB70E /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C43D53E5A934E216CB1B7DD01DE877B /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0FA9B674BE83227DB456D1E8CDBD426A /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = E94EF5B041036E702BC404B7118A8F9E /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 103C1056FCEF16B87FAC9DC37BADA0AF /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = F7E0FE543A2A814147E52BD4424892FD /* fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 11B9993FADEB6211B59663345DE5E978 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 4624EFF8C97C1CBAF2910297112CF9E8 /* lax_der_parsing.c */; }; + 11D236D734F12042B70BB21010A7BB31 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32E6FCC003B1158AFE68C8101E9DC9B0 /* AES.swift */; }; + 11F368D67F8A1E7E97B1DBD198C94069 /* UIView+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9322C93C8E91E65E7CE9C01CB02F70 /* UIView+AnyPromise.m */; }; + 12E9BA35700BF9E489BC75ABC6088E61 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 874DB4C8A2FF4D5197C42063F7939C9A /* Result.swift */; }; + 13F006A331F4F7D1E7A9C31C925C8434 /* EthereumABI-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 98229C7D8E3906BD4C8DCD833704588C /* EthereumABI-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 149D4B201B632E438223FBA71B4394D3 /* Result-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0536186C77B05CB18765BFD4670AC3D1 /* Result-macOS-dummy.m */; }; + 153311AB46ACF9C1960DF5E52EF0E7B9 /* Result-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 279857EBC2D837FCAB656991E73C8C39 /* Result-iOS-dummy.m */; }; + 158F6BC9635AF0C4F8FCAD1FB913BB45 /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDB10140BE59AEE481C7E08EDC79971D /* Division.swift */; }; + 162C34742BB8CDD3E2987A46C854F282 /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F20EF6148A6A9322390DD71721B5343D /* NoError.swift */; }; + 16430D1306BA11693EFE55BE2052FBEB /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3654C41FDB74088592DA713158476E5B /* Padding.swift */; }; + 16DEF17C280AFAD959ECEED27F7FDCD6 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71C4ACD478692712EEF2FF8BB7F4A160 /* AnyPromise.swift */; }; + 1726CE463B9A337870F28E208B8F268E /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CBF6B2F887499D9631619E0D53008D /* BlockModeOptions.swift */; }; + 1736288FC9BC2391AF96F9CCBA1A27D2 /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840549A6DE0F91C91EE1712E3C57D6ED /* SHA2.swift */; }; + 187B191D2E4399E1567DB24BD93F0486 /* SipHash-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BF0D275DC3AF207D0A444A28CB773AA5 /* SipHash-macOS-dummy.m */; }; + 1904E18F6CE01618BBBC1B31E43B64EA /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2AB0FA3FFAC3EBB0D9CACE786196AC1 /* BigUInt.swift */; }; + 193CE1B123F216F0140298A506854F9D /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = C04C575F1277CF14F506F691F9C669FC /* Random.swift */; }; + 1974CBE5CBA7E90AF2951744F9F700DA /* Cimpl.h in Headers */ = {isa = PBXBuildFile; fileRef = F106BE3FED3F7D139A061124A9FF0251 /* Cimpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A05748E830513D5B126B463DC61CA60 /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 12EC94EA370709920BAE52B23A048E1A /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A8FE1E286DA1769792CED41CA55E329 /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E5CE0F5663064C7672E5299F1B3B7DF /* UInt16+Extension.swift */; }; + 1AAC341916DC64CD28D08BDFED57AC9C /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4B350BCCE6D995C937B1D56E4F9022 /* Shifts.swift */; }; + 1ACFA20B8643D974578D0B37E658A0A9 /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 12EC94EA370709920BAE52B23A048E1A /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1BEB60D584CDD65F08A874EC1961CE4C /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A051E774D4D49F8D0B94D9E529E3A524 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1C4DEFB88F8A0938532DA2184D2402AC /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49C5823B0C264F4AC2DF38C68F097FEA /* NSURLSession+Promise.swift */; }; + 1D68B343368ADE35129C5CDCCDCCD468 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F74127A936A7C34D38E84140D1EFAC /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1D9EE21994BB9C1FDCBA47554188C89B /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = F265D345562C600DE93E2D4EA31ED76D /* Resolver.swift */; }; + 1DC075FE4097BF0E29641EDD65D31E86 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 258EB69CA13649BFEBC389916A418DAD /* OFB.swift */; }; + 1EAE65FB4A140803FE03F605B5B9AA82 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2F682F960F536C585085773DF5BBA1 /* Cryptor.swift */; }; + 1F193DAAE1079FC10178E752783B032F /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E9C2CC8E90A38FD011723EB814A5A52 /* scratch_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 201B3540FF03FB8315A0024F4467C68F /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = C799FC61BB50110B0EF9812635A7CF8F /* race.swift */; }; + 213DE58F64F93C8508CCDEBE7CBD97D4 /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = E9FDE304B6122EEAE8A1FC91742A69E6 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2143F6BFBCB27696AC66E1E88312361D /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80ACF3AED1948ECBBAF9BEFFC3482423 /* Extensions.swift */; }; + 219282246EF9A166FC2BD24AC6997C06 /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFAEDF6DDF0B48C4B8E16F6F9C59A5F /* HKDF.swift */; }; + 21B3C21C7A16A522F0F463F9FB046A5E /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ADB4E2DA064200DDCD42C634CBC39977 /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 21EB006D3FD9C27B88742E512E7B227D /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D1B636300E29159DFA920C5BA2E5F7C /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 22D545D72C019120381A23F2008D216E /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C93F4B7E331943729BE3CFC4F439C2A /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 22FF16F6223F01F3AA966B2E701CBF89 /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF69CEB8B2C8F6223E5A84FF9855D71 /* Generics.swift */; }; + 2369A748CC5CAD0D29225D30090B0131 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 582D7324492EFDB22783F0B7B2FA6859 /* Thenable.swift */; }; + 2469775BF29544EFC833E726E761A6D5 /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F90DB66AA0BD6E09A8253873368008F /* AnyError.swift */; }; + 2477779866B98A08454D05619FA403DC /* ABITypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F1681CFA49EA17D6A73339A9C1A44A /* ABITypeParser.swift */; }; + 24D38DE85704AB93DCA1AA003FBD6729 /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92C1E2F71DB75395E28DC3213425381D /* Bit.swift */; }; + 24ED5E0F58443FB2E91C07D5B453E591 /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E13ACAF5A7893C3C300B8B880422662 /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 25851E22505E49BED0DF4DAE6C033724 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = F265D345562C600DE93E2D4EA31ED76D /* Resolver.swift */; }; + 25B3A19A863EF1BC095B228C6CC55239 /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EB87A244E5248ADD8D124225B21323F /* PromiseKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 25F9AEA143C2B354BBD7BEEEDECF6116 /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F4EAABE2F37A5C4CBF734D74EA94EBB /* UIView+Promise.swift */; }; + 2688E6C9E4E219F10E1154D94A3353B5 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = DD5583797A4DF2B5636D036CDD472CD0 /* hang.m */; }; + 272DA3B8E6A36A340F174862DDF47CFA /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C25934B3D3377624DF16153BF76578 /* Checksum.swift */; }; + 279EAE9173342F41D610247C9B8788DE /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C619FA5855429D15B556163471403E5 /* CompactMap.swift */; }; + 28228E86E8A57346F45744E805645CC7 /* PromiseKit.root-CorePromise-Foundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DA0CDB938B1F875D679C20362C887E17 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2A7E41504F95438DB79E852FB720F8B8 /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D8573A6F8E2A67DD73406C5B3ECBB5 /* join.m */; }; + 2AB0EAF55461D364004CD6F3DAF5585B /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BCAAFEDF865BD7F6D1C36246EEE02A /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2AE019C6FBE28F14BBCF9011859E76C2 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224F4E958C4909EF47CB0A9F43F48030 /* CBC.swift */; }; + 2C47366FB3A3D0F2A380489DC0AB4EC6 /* scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 07853D5BF50E26B878B7B1D18CF18F06 /* scrypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C573766EEF17A6CCBC46524208BCA4D /* EthereumAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = C4AD5698CEACE94C1CAD1C0317E14905 /* EthereumAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2D6C2BF004933839288FE0AD05169574 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 516F61020B364118837B9099CD918F5F /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2EDCE4A3A80772C88E0B4031FE4D86C6 /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6E2E2ED41464CEB00832B492D67ECB /* Words and Bits.swift */; }; + 31280DB99D63393FE7EBF701C18A7151 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 516F61020B364118837B9099CD918F5F /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31648EA9AB41381E4C683FCFD69B5B97 /* ABIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AA08906784FF9AA2B198938456276 /* ABIExtensions.swift */; }; + 318456407793AD399D02863A812ED6DE /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = B468DE556C27A7C396C7B5ECC7DCF12E /* Operators.swift */; }; + 31D346420CE39369D66215B21F8A3337 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = B453F34A70203AF07F27C5AE1B2A0518 /* AES.Cryptors.swift */; }; + 32DAD7BC31D1813B10BB3069A4E8A563 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = F3BCAAFEDF865BD7F6D1C36246EEE02A /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 337EA355DE058979DB126870227A42DF /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0930D7CD22CBEC2C752C14A123807624 /* Floating Point Conversion.swift */; }; + 33E0957D577926FA5916FE4D0A9A431A /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 247DF1F9FE8902AA1A74867E7854662F /* dispatch_promise.m */; }; + 341353A9C8AA2DF577CD96527EE2225D /* ABIDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7A2D1D0062F350907B747E2A192E438 /* ABIDecoding.swift */; }; + 3415B2D18705344A178286314A9C0038 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 874DB4C8A2FF4D5197C42063F7939C9A /* Result.swift */; }; + 354D68B8C8B6D4C003BDB91E8A1D680A /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D5DF1B1384D6392013199F71BACD06 /* String Conversion.swift */; }; + 359269757B7FED4424DD9489F42BBB49 /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B99B34DE805578131F4C0D5BFE276614 /* SipHashable.swift */; }; + 35D45B19269F07EA96E6F003C6A1F04D /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = F62C08D51F07D8799AD6CB646A710F41 /* ChaCha20.swift */; }; + 377C6046F93E7409F3996D06ADAD4CC7 /* SipHashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B99B34DE805578131F4C0D5BFE276614 /* SipHashable.swift */; }; + 3819CB7BE87DC385D208FF40C7199DEA /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9883A143C0F77B2C2AF7E05BF805F25 /* AES+Foundation.swift */; }; + 38261BBD61EB4CE9C0D8D02EFD788CC4 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A05629BB0205300B694B527AD16E56 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 384CC535308CA645694E4C8ABAAF97F5 /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A1687163A14D55D2EF896A97CD937491 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3851107FB3FA5A4E70BE628AF438BC19 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96C4685C831E862AD0F75DC78A3A5B61 /* Catchable.swift */; }; + 3867CF007FF0AC14F07271D9E60154CF /* UInt16+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E5CE0F5663064C7672E5299F1B3B7DF /* UInt16+Extension.swift */; }; + 3873EA28EA1C34A735654F3652FE1237 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 58FEC74B279A9D31ADE339DE27E86FA9 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 387F8491EE0600C1B119837221A22252 /* ABIParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B3D040637E19F37C0D7EB3C1A6A991 /* ABIParsing.swift */; }; + 38D8B82703E87B790A4D8C9B749644DF /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DE5DD5643C155A18A460273094ACDA1 /* Comparable.swift */; }; + 39681148F2D32BE962A511F427CD42ED /* secp256k1_swift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CC444A933C805567A3F012F3CEE72D08 /* secp256k1_swift-macOS-dummy.m */; }; 3A611A77C4E834E1E7F375E6362DB0D7 /* Pods-web3swift-iOS_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B56F6A20A0CF698ECA0EDF6CF4CDD74 /* Pods-web3swift-iOS_Tests-dummy.m */; }; - 3AA32C95FECA68AA3FF571E0F0AF83BC /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A5B46AC7CC995589CAA3D991DC1B29 /* scratch_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3AC07C0FB85EDC81532D78FAB99C85B1 /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6633CE6E0F4DA082E8A3374A723A4844 /* BigUInt.swift */; }; - 3B0D18B9FCA958796CDACD6710637030 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB290FC3F5ACF0789F4078C376E6ADED /* Array+Extension.swift */; }; - 3B3E08848BF8EBA88438CCF84389B07F /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = E7E7786C2EC1054AF047E2571B12205F /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3BC2BF6E6B27BFABAEE1C5B8AD2838D7 /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7D5FD5536C89792D33769E9EDFA2DE8 /* CFB.swift */; }; - 3C698382149E46B98B05858131950249 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43941A9CA2F209289C333306CBC5961F /* Process+Promise.swift */; }; - 3D6F8B4564F5BAF43F01ADCFBA720658 /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CB204BDB01A5747B116731490529E2B /* EthereumAddress.swift */; }; - 3D71156680EC3D94A6E1441546C57E6B /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ED02D5B7EB6BD54C515B4B06599DA5F /* scratch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3D80464CEDFAD819CD4BCB5190A469E9 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F76B715633F358CA7525D8C17738C9 /* GCM.swift */; }; - 3DEC2D219AA42627099A9C723B66AB97 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = DF39D90FCE7EA42EF346003BA8EF96AF /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F474D94A325AFDB74206B0CD0790920 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBD8BA7DCEF1E0FF9602E3F7BE941878 /* SipHasher.swift */; }; - 3FA010055B3BC4813A4245727D6E2AE7 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD790D4294FB459BB05017C05CA1F1E /* UInt64+Extension.swift */; }; - 408DA994AB51EFFDD47DA8B29108EB0D /* SwiftRLP-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D4294CA40AB575970217A19CAA320DC0 /* SwiftRLP-iOS-dummy.m */; }; - 41E4BB16EA30C7552FF1E3CA6BC0491D /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98A9FC519C49C693637C4BC5D0DD6EB7 /* PKCS5.swift */; }; - 42FF2C1D3648C354550AC88EE5E64B80 /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755E0B91B0984ADEF77E48E32C147276 /* Data Conversion.swift */; }; - 431FDC470CFD299BE8D98F92F1B01B60 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EDD6BBAF4F23E405AA0CA5AA2837BD9 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 441F98C26072F42F773DDF5C14AC249E /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC0E5DF49745E221D708C75FC2B03DC7 /* AES+Foundation.swift */; }; - 447C407907733320787E8F23946656EE /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7D5FD5536C89792D33769E9EDFA2DE8 /* CFB.swift */; }; - 44ACCC6BC3804034F682166BCB280D6C /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF94FCFAAA2F4216A2F89F43E2CDA4DA /* Catchable.swift */; }; - 44AEE69C5AA31A84CCEB7534C0855D78 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D292A1945503B3A000AC47BB73889903 /* String+Extension.swift */; }; - 44F4771652CF7E4CD82AFFF61B0ED567 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D8151AFF003D8A45F3E0F171019ED33 /* OFB.swift */; }; - 45482DED636330B9BCE4493225B66813 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 809F44457475B204EE242D251FDF9E8E /* Comparable.swift */; }; - 459BB256132E1224D00C02FA4678450E /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145A69383BF153D7728F4793AB68C3C4 /* hang.swift */; }; - 465C38010042DF8DAEFA492DCE294A36 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFCBEFE9DA6D7F361DBB180EB84492D2 /* BlockCipher.swift */; }; - 479CE094426E3868726526A833D58F21 /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 255F9BD02565315A20D36910794D0C10 /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 480D4F1A6DBDF15BDEE2611663CB3BED /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ED02D5B7EB6BD54C515B4B06599DA5F /* scratch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4876BE2384F8243077AD5F55AB07AC4B /* secp256k1_swift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FB320DD9FD83A5F3BAADF33818736C30 /* secp256k1_swift-macOS-dummy.m */; }; - 48B50CFAD0E4088080A109DCA7B8688F /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E942712A2D0087AAF697A0E031459FE /* CMAC.swift */; }; - 48D821F48A258CA9FCC0524545AF23B3 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FF1BE57EBE989B2B7EDD166127B5FCD9 /* PromiseKit-dummy.m */; }; - 48EE55837C3546B46DFCD59737CEDC3C /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAC966A4293FF7689DD8A3B2877731F3 /* Blowfish.swift */; }; - 494A8C06290340CA7C968264669CD5C0 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44F8F4C5F0D588B00DF17BC6518E5E0 /* Rabbit+Foundation.swift */; }; - 4971308DFA5E58345B78AA42538C65DA /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9821B82F2A2D9E9E0A740B6B4B38A6AB /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4A9382D54AFF6BA0D34C2BE46245192E /* SwiftRLP-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F03C5346C1BA44E2325916DC9CE7B67B /* SwiftRLP-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C20F5836E09BEAF0175C7F5D2D45F89 /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19725B1F6B394E3B97BB387C7E4E4874 /* NoError.swift */; }; - 4C82B6EF64C041919BD1BDFB613CA7AF /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE7F6BB14F19AC57CB96B2D06603E845 /* ChaCha20.swift */; }; - 4CC995FC29A8A8E8C8C0B0B97A8C5486 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3F64F8D233B557ADBCBAB5F8D81F1E /* dispatch_promise.m */; }; - 4CDD68A843BFBB60D9186F29785293F9 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 1D7B42933B2D81EED52706C7200A9732 /* lax_der_privatekey_parsing.c */; }; - 4D47DC986746CEF8703D74068A8201C3 /* BufferStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93264D7DC7DF888A41AF35694C9CBF60 /* BufferStorage.swift */; }; - 4D7DEDC820A1EF913455BC0FBE72FBD6 /* BigInt-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A516C73CD574B0D6BA84C38BB55FBD2D /* BigInt-iOS-dummy.m */; }; - 4E0086DE48C75B11B8E2D08041EEA2A5 /* BufferStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93264D7DC7DF888A41AF35694C9CBF60 /* BufferStorage.swift */; }; - 4EB23EA6CB130E3291B0776D3862D748 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D44F8F4C5F0D588B00DF17BC6518E5E0 /* Rabbit+Foundation.swift */; }; - 4F70068CDD913C18026C4A968EA92E9A /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31ABCFEE7AE67562C4CEBB66C7ED4D6 /* ZeroPadding.swift */; }; - 506BDA80E1D1FADE6D2EAE8FE6533C13 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = F1899C74540C37F7D84214CF9F8AD010 /* NSNotificationCenter+AnyPromise.m */; }; - 5085168C5F297AE562EBC81151EAB02B /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 423E241FA5BBF42BFDDA5E6C6AD2DEB9 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50DE88114B7BD18A98F0F45A972079E3 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE3D7030BC429403BBE50F40445229DE /* SecureBytes.swift */; }; - 5145AAE99352DBF420419223083C6C25 /* CryptoSwift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F310D1B89DD81708BBBAED0DDF1B1168 /* CryptoSwift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 515FA154B65878E6DEB79E513C7F7FE3 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 55F115779D04B6641A1DB99D05887E03 /* NSURLSession+AnyPromise.m */; }; - 51B79A81BE02C232299A5DA47E988277 /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D57256C33A9C97F888F53A4FB7226146 /* UInt32+Extension.swift */; }; - 51DADAE211CE77CDDD762DF1F5FAA236 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89B539CEC7927EBE7BBF7262580A0E18 /* Exponentiation.swift */; }; - 526530B8F45F2C42F4B731C1BC05C532 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 678FC45FCDC1237D6344CFADDB22F228 /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 527E46A66487D9D5B3FF54359A3951EB /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D98916544A0C622EDB88411AE57 /* CipherModeWorker.swift */; }; - 52D04CA795889A574DE97357217965BE /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF08003360A2A59E3E059CBC5496E71 /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54275399FAE4959C9EEAC7C7E8EA2031 /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840434A830881CF07FBDE172A20CDDDC /* NSObject+Promise.swift */; }; - 5493B45FC1BD542111A20AC6A58EA0B1 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3E0EFDBB92A100EDE06E9D563ACF26E /* PKCS7Padding.swift */; }; - 54B975339087EB52B33FD2013118BD0A /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ED371C14676A66BA35BCF542FF8B548 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54CD3C94770F9985D0EDD8AD2D880EEF /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71D09134607D15AB2D81F0CB08D3F055 /* AEADChaCha20Poly1305.swift */; }; - 55368A922AD4C49FF4D8A4042ECBB7F3 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = C66DD520FECE2C1EE69FD6A9E23EA032 /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55620C107463741AB202D7B93B8AC47A /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFD1168E711269E444E38FCAE0B8E5D9 /* UInt128.swift */; }; - 55714E2CA2C818B9BB609FE4303A7AE3 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F6102F002EDC216C49666462EF952CA /* DigestType.swift */; }; - 557151A9F797E462E701215A27F7DC21 /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ED58E829B835009D9DCD1D8B959FBBD /* Digest.swift */; }; - 557E070EDC1D983960128B12A77AA293 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB4E43C9EB1F78AD84B2314039898608 /* GCD.swift */; }; - 5638014E129B104ED47134518667CC68 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 282DD884F817856F0FD3D38F8A4447B1 /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 563C641A5D7264103E44BCDCC6C6C887 /* CryptoSwift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 26BEF092AF19B017CCEAC5BD6EDFADBC /* CryptoSwift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 56996A02B3DC920077AB801E4E8A0A15 /* Pods-web3swift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E8C19543EF3AA4D9801DBE55E22E211 /* Pods-web3swift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 582EE7A8797F29AD814C0F877E811808 /* Pods-web3swift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 25F72E78DF48560F5D210E57844ACDED /* Pods-web3swift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 599CEF91B917F7C8758E1E13C50B2A90 /* Salsa.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03321ECEB201CDE70DA4F88EE48E2044 /* Salsa.swift */; }; - 59E8068AD7D81375CF6BD6C079A6CD52 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 17856FB7A41BDDB75285F531B03882F4 /* PMKFoundation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A7A8C39583FF9303788AA4DAFD6FB1F /* libsecp256k1-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 255F9BD02565315A20D36910794D0C10 /* libsecp256k1-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5B4044B103053232D6A987856C610367 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 441A9CACC96EB9A41D4ABF90FDFFD2C8 /* ChaCha20+Foundation.swift */; }; - 5BFB61E4B72C16BDD714663095E1E602 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 55F115779D04B6641A1DB99D05887E03 /* NSURLSession+AnyPromise.m */; }; - 5C07AF157556B42E17E1E32A4AEB573B /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 062A95E74B96944BC0E3A674E72AE85E /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C34CEC8C567D8A533F9FA1327868C96 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = FD3D00DC2D85B010C2EB60CA78D22508 /* hang.m */; }; - 5D3C0267F1EB78B6038FF2898C20A737 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 0554DC016A3872F60738FE5C366CAF31 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D6A8FBA67FCA90E5B02979DDE6FFF43 /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 681146D3345FF5156D09E271666D5EA1 /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E141CAFCF233DCA8F297AA169BA6AE7 /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = E022DA9B1DCAC9A88B18D90457826545 /* after.swift */; }; - 5E1BA68C47D734105DD418DE2C795B71 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 86B004B7F6AC62E27D75D02978601A76 /* NSTask+AnyPromise.m */; }; - 5F569BB3EF9E99550253E3309677BFD7 /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8262D72960A17572931F11EC9520938 /* secp256k1.swift */; }; - 6121E601434E10D5CC3A01A2C815B0D0 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EFDF78EEBE9836CDC5AE2FEEC50C17B /* Utils+Foundation.swift */; }; - 618CFC75E3108B18C4DD15C12EC58626 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3A44C98D1E93465803241C08887CDD /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 61C9BCD007508C2CB8959FA50BF0F53F /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3487EA794F9422FD28689C37156DD9FE /* Addition.swift */; }; - 62A5DF1DFBEC0FD06FC3C895F4447790 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D8241FAE07EC659EA8EE9D035AB05377 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 655C7AAC2D964E8A317BD69CA59F54DE /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D1D500C8CF88FC87FF7FA43DBC53611 /* AnyError.swift */; }; - 65D0354F4B4E32CBA63ECDF84AFAD283 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71D09134607D15AB2D81F0CB08D3F055 /* AEADChaCha20Poly1305.swift */; }; - 66260581693FDC3DB887738136636C8F /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1AB32F0AE7B734159BB1FBAF7F5078 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6663694C763AF2F46E6A548540FADB3C /* Cimpl.c in Sources */ = {isa = PBXBuildFile; fileRef = E65308F679CCAADBBF14F5DB4971CD21 /* Cimpl.c */; }; - 6817327279945D8425268EF14CDDAC21 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03FE099622DA426E4CBDFEB30B374591 /* Primitive Types.swift */; }; - 68CE1BEB5DEB9671E24DE87773BA920C /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D8241FAE07EC659EA8EE9D035AB05377 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 698DB1FA7FF3234946A86E51AF828F39 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC89259204E1C6A18BCD0B7D08C104B /* RandomUInt64.swift */; }; - 6AD72DAC1AE026743E0DFDE9E6854763 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 944A08F05724AD8D1EC4F7FF0D09BFE6 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B71498DEADD20033325A53D27E6191A /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BFCCF45D62D69A50F9ED16BCE93C54A /* SHA2.swift */; }; - 6CED57BC415DF0F388D893405FE3DC3A /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41B019A1B56440DDAB3267B96FDBD576 /* UInt8+Extension.swift */; }; - 6D0468F188D17EFAC5C4655473D99D74 /* UIViewPropertyAnimator+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D4F789F0354155D07BB3A1463344281 /* UIViewPropertyAnimator+Promise.swift */; }; - 6D4618F519FFEDB9117FC4341C7F3F4A /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A1004ABA6FF6BBB692884F59131E13 /* Utils.swift */; }; - 6DC3B988093A7855E6880FFE8AE3D3B4 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42F14C976AD41B0817186FB67B3B349B /* Data+Extension.swift */; }; - 6E1A1FD632248BF8EA8C08628B1DD44A /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = D286B6A0694F7E16078B8E7642CAE6FD /* Generics.swift */; }; - 6F5B521B508C0230EF8488842DE2C905 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBD8BA7DCEF1E0FF9602E3F7BE941878 /* SipHasher.swift */; }; - 70331820D199129F5DD2EF9609699F32 /* PromiseKit.root-CorePromise-Foundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 08CA1065DA6D886DAD8978D531C6C531 /* PromiseKit.root-CorePromise-Foundation-dummy.m */; }; - 70C08283C27C54420E80CCFB8C2CEB18 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42F14C976AD41B0817186FB67B3B349B /* Data+Extension.swift */; }; - 717B05FECD48B3ED8481296EF0CCF350 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC89259204E1C6A18BCD0B7D08C104B /* RandomUInt64.swift */; }; - 723881423457C16AFC563593E5F5B7E1 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B7B36B7C3689A1ED9FBF4095AF74840 /* RandomBytesSequence.swift */; }; - 73ADC70790A1F8DFBCB7B7F2D1A2264E /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1422C640D1B145BC997D3E0A3FF10339 /* Extensions.swift */; }; - 75F745A947766D56938C0215E2A54C9E /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BA200D6941B69ACC080DFB132BEFF422 /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76A9DE7C8BC7B646D1A0508BF1A38A22 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8AF5512E4598482BBFB4AD1BBF8064 /* PKCS7.swift */; }; - 76E0382DDD9E348354DE5C5F8120D2B8 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC4C922D64767063B8D1A270D793373B /* BlockEncryptor.swift */; }; - 773013B84E21E3867773BCAB6E171CBC /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7953EE95375573E978E0FAC7F88260CF /* Shifts.swift */; }; - 78638EB4FF9E1219EC7E04E8B97EB448 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14176496814CB0D56F198301D279FE65 /* CCM.swift */; }; - 78DCC64E4BB4C69177C5391DF4BA6119 /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85BEAAA1888D13FCFC9F1C2AB3A7ABBD /* when.swift */; }; - 79571D2CAB88DA790160FD0CDD3AEFF9 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = DF39D90FCE7EA42EF346003BA8EF96AF /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79C2298346A483DD086B4A9AC7223820 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1576E0C86B6BE13F5FB685E1357E71C3 /* Result.swift */; }; - 7A0702EE936C773C38F5E4B7F21AB26C /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58F3E29F9DFEE63DA2847094AA590666 /* Multiplication.swift */; }; - 7AE2FD363C4422762B7BC5E2005F7C2F /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3D1883E9BD064F4B9299B5825061E7 /* String+FoundationExtension.swift */; }; - 7B5BE028C02660F6A97F1D470C96F05D /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3E0EFDBB92A100EDE06E9D563ACF26E /* PKCS7Padding.swift */; }; - 7BFB63A076CB21871132CA1C68FA934B /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C48C6F1DCE55E9EE6040D50626EF16 /* ECB.swift */; }; - 7C414865BEC16506132F9910DBD62F3B /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A86CAF979F3E970071A5FC47D9D7EAC /* Division.swift */; }; - 7C4A904DCA206E41A88861F990CDE0BC /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41FAB135DE09D3F9136D834CBE3A558A /* Scrypt.swift */; }; - 7DB10EF26A0A2F6768F695BE03C0AB86 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58F3E29F9DFEE63DA2847094AA590666 /* Multiplication.swift */; }; - 7F754A09D7EA3165D9758A80F307227E /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D5F98CA61161B592980B259143F48F5 /* Floating Point Conversion.swift */; }; - 7FE0C78E1D6CF35FD66403216909410B /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF5980AB239F34C8CB958F30A518A0B /* BigInt.swift */; }; - 804014B054A6AF38DF4D8859000D64D4 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7695A9A41BFEEAD40C0235B913A07672 /* AnyPromise.swift */; }; - 81F2542193E3187EF95CC783A290D239 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E8F4C6770C979220F90AD2CBA4EA3CE /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8206DF8B40704C8CFE78662D412A422E /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 612CB1FE4A4EF26D20DC64543E17C82A /* when.m */; }; - 8283888B261F0702178960767D664712 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EDD6BBAF4F23E405AA0CA5AA2837BD9 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 835E647599AD20789B5A10F1E3BEF888 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D3FAB581FA1884038308CAAD092260 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 83C9B6E62BE2665CCF9078D50C66331E /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 682A1BA8289C74E7B26FAAFA80540F57 /* BatchedCollection.swift */; }; - 848EFB4F6CDA94AAAD25CCB2283E9EAA /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78AC661E237EC28BD38872134D7F7E2B /* Integer Conversion.swift */; }; - 84AD91997553D782969A046B9146044A /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F576E04543F9CA8FD11EFA190633C0F /* StreamDecryptor.swift */; }; - 857F892AC414752BEECA9829E4EA6322 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF137216E20AA1BF3FA0B1A647DB89AC /* Operators.swift */; }; - 8593AEFA684E7B84208518E6FC380FB7 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E81CDB6F58099035E4B22900B2E0740D /* Int+Extension.swift */; }; - 85FB5B7FC1D897B946EBAE4BEAC9CE4D /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD790D4294FB459BB05017C05CA1F1E /* UInt64+Extension.swift */; }; - 8601AFFE38D08BA40B4AED33D04654E4 /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32BA5AE4C0BE79090A24F00A3F35AFF /* Strideable.swift */; }; - 862C49A4047D7B32FA8ED4644AAF3DE2 /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F576E04543F9CA8FD11EFA190633C0F /* StreamDecryptor.swift */; }; - 8645C073FDA17B6DF8E4AADCE0808C3C /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8AF8868130C525C8921A94220CFA6D /* HMAC+Foundation.swift */; }; - 8756026DE126ACD98A35A20C2F344F1D /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E8F4C6770C979220F90AD2CBA4EA3CE /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 87C3D298B9E9216D388BA5B0D015EE50 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED4A3438C4739D717703BAE1F7020595 /* Deprecations.swift */; }; - 87C8D1C1A44E68BA3761B2915728AA1D /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 441A9CACC96EB9A41D4ABF90FDFFD2C8 /* ChaCha20+Foundation.swift */; }; - 8972ED44B8E31FAE3C248BBCCB8E7CC4 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = CA97BDA6DF1DE11A96470DBF6FBD7C62 /* lax_der_parsing.c */; }; - 899F8A018D26D3A321EB0481C091847F /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85BEAAA1888D13FCFC9F1C2AB3A7ABBD /* when.swift */; }; - 89AD1BFCA3B307CD78AFB34118AC031D /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3487EA794F9422FD28689C37156DD9FE /* Addition.swift */; }; - 8B4AC0EBDAD7A87FF683938E057D5338 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3391B8242DCA2A16EB9DBB3FF0740ABC /* Cryptors.swift */; }; - 8CBF1AE067B860433B0A4BE710FFA9BD /* CryptoSwift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 09536C3B22879E31B5C0B3426E2FEBCA /* CryptoSwift-iOS-dummy.m */; }; - 8CF0A92E555F6A19FD269B16235D3128 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = AEA94352D4A3D0793D359A8C1CB50E4A /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8CFC200142682965D7D13983526BEC97 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B67DD6B4751EC541A3D153113AFB1B1 /* HMAC.swift */; }; - 8DCA7529640903D6984416665D803C1D /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4D45B809574B97A749EADBA2EFAB02 /* CBCMAC.swift */; }; - 8DCC706DCFDBCC907AAB009F5C505F8F /* secp256k1_swift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BBCD0009252A5C66FFA6A2EDAE25173 /* secp256k1_swift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8EAEFFBCB259C139AE42E4967BFCD638 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9F882189D9E2CE8D7B7DC60BA0D5AF6 /* PBKDF2.swift */; }; - 8F1107E28340C0612A6D8340F38A267D /* secp256k1_swift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D08241C8DB918E40A54A24828275D1C5 /* secp256k1_swift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FA68F40AE3928B497DDA7C8B828FE74 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 37B67C2B42A2EC2E689AE41636261351 /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 906F0233096CF30AA2ADD2032085E9EA /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B67DD6B4751EC541A3D153113AFB1B1 /* HMAC.swift */; }; - 911E85408B3D802D7981B85D7192128F /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 682A1BA8289C74E7B26FAAFA80540F57 /* BatchedCollection.swift */; }; - 91D6972A579E54069CA6674EF1AFDD62 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = C66DD520FECE2C1EE69FD6A9E23EA032 /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9307E26E1B1DD066C1B71C66EF7B5B99 /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E75AF68728F33A9AC112BE223CA6718 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 93BF74723D8898DC3E8DC67317C1B0EB /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC0DBFB306B96AAE65A02CB825C4F0B /* SHA1.swift */; }; - 9426948AD7CCB3A21DB5169851D17835 /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = B9737D99B060F85A0A42A3A30335B14F /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 946EE4F3900E73B0823B57F1AE8C47BD /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 80353B76ABA10ED9D59C18FDA6A16285 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9786160112EBD1D91A7AB61E7E585A09 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 7DF576FC1DAC9EC11DA44099F4F50AFE /* secp256k1.c */; }; - 97962E30EE5B5298443D563B897E4308 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 358F7A798EA72C8BFA7C4AA5D7A22723 /* race.m */; }; - 97AF9F3B17A049614F158AFF9AA5C3FA /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = AEB5F00EFE918C35C091FD2FA7EACBF5 /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 97D8F4B9B56316BD37A2EBCC5A2B7E51 /* secp256k1_ecdh.h in Headers */ = {isa = PBXBuildFile; fileRef = 07CB743A805B99BE84DD49F8D999BF5C /* secp256k1_ecdh.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9850A4E789CCD838DE17E0E7A5DCCCCD /* scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 9411AC5861B33542BF71A1EED7E49FC4 /* scrypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 987DCF48843E8B83BE9F0B5788175D53 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ABE33C91D6B128E8B104ED3630B6ABB /* CBC.swift */; }; - 99365E9205AEA46510A70B0092872710 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B7B36B7C3689A1ED9FBF4095AF74840 /* RandomBytesSequence.swift */; }; - 9970A7335034C125C75BF4CC2B9F3AC5 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 282DD884F817856F0FD3D38F8A4447B1 /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9A899EFE19622CA6723D08C0F8FBB187 /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5116359962EA1905AC0EB7121E634D9F /* ResultProtocol.swift */; }; - 9BB2691E8EC04617309A1B905F5A652B /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 906199A857C08F740EA182609488E191 /* Rabbit.swift */; }; - 9DAE14B88EE655354CACE65717FA211E /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD14A2D2C9467CDF73E9EC39F2B97E62 /* Hashable.swift */; }; - 9E9ABC19900EB9A2F58E05DEDE4C9C6A /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB0B1B247B08E4A2259D6D21ABAB0304 /* MD5.swift */; }; - 9EF0841FD75468EF3543A5C6A25A9398 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 671394A1108646E9E210CF54FA2C814C /* CTR.swift */; }; - 9F386CB50D39A65571DCFD394C23D8E2 /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 632F66F6756738B3DBCD9FE0F29FD51D /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F7BA0F07BB50D1DE1036928BF70C2D3 /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E67F7B0700CACBB7DFD27A88EFF75C2 /* PromiseKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F975F5CF4816CD3A6CA2282F5F4E3F2 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F0D95EE88A2B8D781795DF20E0568F6 /* BlockMode.swift */; }; - 9FA8CF326DCA266C358B26FC42191498 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25882CAD0730D8C76F023B8C6FA287C /* Blowfish+Foundation.swift */; }; - A1636315A5B3017312CFC781DF83901E /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8354A9A75879DFCE10CDFCD8B4B76EF5 /* AEAD.swift */; }; - A1ABA5F58D2757A7C96844AE893C12D1 /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = 423E241FA5BBF42BFDDA5E6C6AD2DEB9 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1E8398E1FC2566D94EE4D94B48E909A /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 639957AA1B177687176168DC8D443490 /* BlockModeOptions.swift */; }; - A26E92B79121B74FDE94799BF2A92C91 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB4C3483E321FFBD045AB8FDC37CF8FA /* Array+Foundation.swift */; }; - A2913E511FD4FA1AAEB9256360C0AE51 /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 614D3F652018D0D4BB869BAEEC3BFA5D /* PMKUIKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A2A378FB0E28CFD130DD02F25B9420EF /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D57256C33A9C97F888F53A4FB7226146 /* UInt32+Extension.swift */; }; - A373AD2926D810C1056D9FECF17DD66D /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8262D72960A17572931F11EC9520938 /* secp256k1.swift */; }; - A419E91722005FB59C7DC3BEA7AC0733 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EFE8BF6504756C13783E7D477894264 /* PBKDF1.swift */; }; - A4F8D815D07249B30E393C63694BF3D7 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EA80C3235171417958F658E327CCF8E /* Codable.swift */; }; - A59CBD16B65C3C7ACC4C7D8945875F82 /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = 40ABB4750B401A88B273D3B180C1FEC9 /* fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A65A2E325268ED551F8A5D89FB7E75FD /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D0947D47B9CECD59BC73EAC48D4ED27 /* HKDF.swift */; }; - A72461C8573DCDB8310FA557C3BA1DDA /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F6102F002EDC216C49666462EF952CA /* DigestType.swift */; }; - A829DDB57163254C51DF6C9896A1666E /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E81CDB6F58099035E4B22900B2E0740D /* Int+Extension.swift */; }; - A88812CCF543A4485A540AE2567B4B88 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 358F7A798EA72C8BFA7C4AA5D7A22723 /* race.m */; }; - A8995C0B368AF79026265F486D640985 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03FE099622DA426E4CBDFEB30B374591 /* Primitive Types.swift */; }; - A91379A538F389B10BAB2CE9D406BDCE /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F8B31678A829B043331C94E279F1FD9 /* CompactMap.swift */; }; - A9B8D34EAFEA874B2B3937B7F53B5D9B /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D903E031FC7FD31DA94E1EC68778019 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A9F50ED8E406BC5AB5C9E327233D70A5 /* field.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC7202C545EAC46F224EE9AB6B1F0F7 /* field.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A9FA53CE467640689F8095D7B4FC85E1 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = F1899C74540C37F7D84214CF9F8AD010 /* NSNotificationCenter+AnyPromise.m */; }; - AA08FA2EB9DB4E98494BFDDE5D4B4936 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FC3BBD92A37B6D1B9844791FDD7F86 /* Bitwise Ops.swift */; }; - AA4AE37CE61DB029CDA7A78DF0E65A30 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB0B1B247B08E4A2259D6D21ABAB0304 /* MD5.swift */; }; - AA93CBB28A057A39E3A55586997114BD /* SwiftRLP-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 41F99637E28F2B9DC1A86CD6B490CE52 /* SwiftRLP-macOS-dummy.m */; }; - AB02DBB24DBB4F98005C0C14C342F8FF /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = F218E50D513522160983106C90B34FBE /* Prime Test.swift */; }; - AB80E1E9C65B4EA954F01811007ADE6D /* ecmult.h in Headers */ = {isa = PBXBuildFile; fileRef = 310A618141B833B61214988468629C13 /* ecmult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AB9036DA4C5904627604A28671470C5A /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49FA7F82B54CC7168B96069F53D66A28 /* RLP.swift */; }; - AB9E1F4EDDB1BFD7F4359B0E1AEF9C78 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B35D82CEB3E05DB842B7FA66505116 /* Cipher.swift */; }; - AC755B14D97E2077CB8911758996D6CC /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A5B46AC7CC995589CAA3D991DC1B29 /* scratch_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADE49554E5BC26D0FC3CB250EC153F83 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE3D7030BC429403BBE50F40445229DE /* SecureBytes.swift */; }; - AEF51F69F68DDFB4BD984ACD87DA0517 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E942712A2D0087AAF697A0E031459FE /* CMAC.swift */; }; - AFDA9E12CC7195153491C8CD1C0AAD8B /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78AC661E237EC28BD38872134D7F7E2B /* Integer Conversion.swift */; }; - AFEBE1E855779D74D26F05919F5001AA /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFD1168E711269E444E38FCAE0B8E5D9 /* UInt128.swift */; }; - AFF838D30AE798EA2B0FE11A1ED0729E /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EFE8BF6504756C13783E7D477894264 /* PBKDF1.swift */; }; - B075220C6A1ACDF3E6ECA9447125C827 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D13D2441410EEFA35EFB1823E238648A /* Cryptor.swift */; }; - B0968028804FC340046D3FDD23551189 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D3FAB581FA1884038308CAAD092260 /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0EFDD2E40787B3A3359CF16DF3815C3 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C148A221559836C278AFFB2F0C6D3D /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B1B07B21B7667DE9A83B36AC03BE6175 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C9CD6920241610BE46DBB9D591849AD /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B1CE9BDAFCAEDA7D99F7545490D1D518 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D292A1945503B3A000AC47BB73889903 /* String+Extension.swift */; }; - B39F6A07D19D7B5044E37E98E6C28320 /* Cimpl.h in Headers */ = {isa = PBXBuildFile; fileRef = F935D7D51C3BD0EEA31106E0BF9C3D13 /* Cimpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B43A930051FDC74CE6667856407BD5CF /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89B539CEC7927EBE7BBF7262580A0E18 /* Exponentiation.swift */; }; - B495BF9BD41F0DA630E6BCEF9E48D707 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E36C3B29C59A6C972DBF40C0EF93D5 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B52E20B7BAF9DFF4ACF992979FAA904D /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41B019A1B56440DDAB3267B96FDBD576 /* UInt8+Extension.swift */; }; - B640565E1593B250390597C2651078A4 /* BigInt-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 234968A9A443A0E2CC4FBFBADB4CC6AB /* BigInt-macOS-dummy.m */; }; + 3AC07C0FB85EDC81532D78FAB99C85B1 /* BigUInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2AB0FA3FFAC3EBB0D9CACE786196AC1 /* BigUInt.swift */; }; + 3B0D18B9FCA958796CDACD6710637030 /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5430F65435F42C41489D6A5D36494E0B /* Array+Extension.swift */; }; + 3BC2BF6E6B27BFABAEE1C5B8AD2838D7 /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3649CFBA1E54D6AD5C50879B03ED6866 /* CFB.swift */; }; + 3C1A5CA548BBD6346EA3C326AF0E1044 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 2716312EADA930757B04015685EFD479 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D104A9C54922EADF90311DDFF2CB44A /* EthereumABI.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F068DD5C61D68DFAF437EAAC56F1139 /* EthereumABI.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3D80464CEDFAD819CD4BCB5190A469E9 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B830B448B480E1AE7466CE0AB7565D1 /* GCM.swift */; }; + 3E5C1C698DFB2439892653C0F04DF498 /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 052A5D977253AD46619C79759D031E6B /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3F474D94A325AFDB74206B0CD0790920 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4638850DD91EB5F2EFCF18E99D4D87FA /* SipHasher.swift */; }; + 3FA010055B3BC4813A4245727D6E2AE7 /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA94DDC1F5525609A6FBA3EB53F09037 /* UInt64+Extension.swift */; }; + 4062448019AF90DB11E3860898E8EAEB /* secp256k1_swift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D1EDEFFF233BE2D7F100C45B95D49336 /* secp256k1_swift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 407A49373ABBE880240E941F98D7F117 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FB5F00D821CDC9BDA7F7709F07DD0F3 /* after.m */; }; + 41E4BB16EA30C7552FF1E3CA6BC0491D /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = F964C89C691E6FE6350F48A4A3E1DD52 /* PKCS5.swift */; }; + 42920ECBDE0A9803B1C7380ADD62A568 /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C43D53E5A934E216CB1B7DD01DE877B /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42FF2C1D3648C354550AC88EE5E64B80 /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B8BA477868467E169FF27E9193A10DA /* Data Conversion.swift */; }; + 441F98C26072F42F773DDF5C14AC249E /* AES+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9883A143C0F77B2C2AF7E05BF805F25 /* AES+Foundation.swift */; }; + 447C407907733320787E8F23946656EE /* CFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3649CFBA1E54D6AD5C50879B03ED6866 /* CFB.swift */; }; + 44AEE69C5AA31A84CCEB7534C0855D78 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A59FDACCE16F10DF39EA55249CA72D /* String+Extension.swift */; }; + 44C09B849F87D5EC7B9C8348E301AB1B /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EFC88D3858F1B2D4952BAA697C360D3 /* Guarantee.swift */; }; + 44F4771652CF7E4CD82AFFF61B0ED567 /* OFB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 258EB69CA13649BFEBC389916A418DAD /* OFB.swift */; }; + 45482DED636330B9BCE4493225B66813 /* Comparable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DE5DD5643C155A18A460273094ACDA1 /* Comparable.swift */; }; + 46374BB7EC19111A4297CFE9832387F6 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = DF72EE1FD04A0B49CB495E9980F6B8A9 /* AnyPromise.m */; }; + 465C38010042DF8DAEFA492DCE294A36 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4992855757033544670BD38D4484C08 /* BlockCipher.swift */; }; + 46930C6A0C648E4A7A0830282F53E996 /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE7344E86789EA2ACF6B000EE6E0275 /* firstly.swift */; }; + 47C119777E312AE6602A93BA0027D876 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = D318DFC773B02CFC92B543471C937BA7 /* secp256k1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 47CD85DFCA1848F901AAB6D6F6F1DC78 /* EthereumAddress-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B4F5205894DF6FD73EF8CFA7609DA7D9 /* EthereumAddress-macOS-dummy.m */; }; + 4882343A2039DD16BE3AE92E332AD44C /* ecmult_const_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 052A5D977253AD46619C79759D031E6B /* ecmult_const_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48B50CFAD0E4088080A109DCA7B8688F /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89EE579B1A3A156C9DE84CC0E9CC7F51 /* CMAC.swift */; }; + 48EE55837C3546B46DFCD59737CEDC3C /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = F063BD5FB8772F058E36A1292962E899 /* Blowfish.swift */; }; + 48FD7843C2FD1E7F947576CB4F364A22 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = F269536FCE8F92893C1DF08F94904EBD /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4908E7728A0935FCB6EF210407119794 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 81ECE7FE7C889AF9F1B739830D9A59B0 /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 494A8C06290340CA7C968264669CD5C0 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCC7CDEAA23666C0D7F819861149F89 /* Rabbit+Foundation.swift */; }; + 4A46B113C4612B07CA848FC63240296D /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFAA80681A91BDC50EFC4294353BC5BA /* EthereumAddress.swift */; }; + 4ABF0E379FBEF92B4F0B8B68CBE09230 /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D8491537B933BEB0BB26FA5415C295 /* afterlife.swift */; }; + 4AFCC9EC62D8433A0A0083506BFA0830 /* PromiseKit.root-CorePromise-Foundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 452B760316F8326FC21782A105163581 /* PromiseKit.root-CorePromise-Foundation-dummy.m */; }; + 4B0E14BAB8E59688BEDD2B5C94E261FA /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D8491537B933BEB0BB26FA5415C295 /* afterlife.swift */; }; + 4B79D71DD2FC55BCBB35E1F397441057 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E05424B44F6AFD35E237815F926FEEEB /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4C418DDDF37352D82DC8A316EB35D643 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 76F047FAB60C9A09C857EC109DAC9FC4 /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4C82B6EF64C041919BD1BDFB613CA7AF /* ChaCha20.swift in Sources */ = {isa = PBXBuildFile; fileRef = F62C08D51F07D8799AD6CB646A710F41 /* ChaCha20.swift */; }; + 4D65A0EA2474E1ACE27EB99A8C868A09 /* num_gmp.h in Headers */ = {isa = PBXBuildFile; fileRef = 76F047FAB60C9A09C857EC109DAC9FC4 /* num_gmp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4D7DEDC820A1EF913455BC0FBE72FBD6 /* BigInt-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E74F31CDCAA43E3665CAB99746882DD /* BigInt-iOS-dummy.m */; }; + 4D7F63CA708D40E84A6C8968CDB4D223 /* ABIElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2B4899E422658B96ADF84B5239C418D /* ABIElements.swift */; }; + 4EB23EA6CB130E3291B0776D3862D748 /* Rabbit+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCC7CDEAA23666C0D7F819861149F89 /* Rabbit+Foundation.swift */; }; + 4F70068CDD913C18026C4A968EA92E9A /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E02047F0F6A6150C26B56EEF63F55B /* ZeroPadding.swift */; }; + 509748BEA3EC752BC3A2AC9B055DE91C /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70E24C26EF4EF9C8244E7F94F175FD51 /* Configuration.swift */; }; + 50DE88114B7BD18A98F0F45A972079E3 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16973E34A2E1AB31C96F6ECF88E284D7 /* SecureBytes.swift */; }; + 5145AAE99352DBF420419223083C6C25 /* CryptoSwift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 303781526174E2DFA273950F9C1AEDBC /* CryptoSwift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 51B79A81BE02C232299A5DA47E988277 /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857BD06ABAFBE1C5C176886E254BE8E6 /* UInt32+Extension.swift */; }; + 51DADAE211CE77CDDD762DF1F5FAA236 /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4289C87C5EC42792CDDDCFC5592AADF7 /* Exponentiation.swift */; }; + 527E46A66487D9D5B3FF54359A3951EB /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D1692A2F154E2828E569943ED540D4 /* CipherModeWorker.swift */; }; + 52E178194B9296D51D79BF2B7A4F7BA5 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71C4ACD478692712EEF2FF8BB7F4A160 /* AnyPromise.swift */; }; + 5342EFAEB9363EEF4AA9D23C58E28589 /* Cimpl.c in Sources */ = {isa = PBXBuildFile; fileRef = 442D6200CC1781151499F7FAF44C0366 /* Cimpl.c */; }; + 5493B45FC1BD542111A20AC6A58EA0B1 /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F5F772F0EEFC0C3E42DAF65DB4121F /* PKCS7Padding.swift */; }; + 54CC4EB0BFBA6950C9FF3ACBAF3E871D /* SwiftRLP-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E1A2664214C7FF4C93A67058FDACDE9 /* SwiftRLP-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54CD3C94770F9985D0EDD8AD2D880EEF /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8C27B7CBA5225481973EDA23AF49981 /* AEADChaCha20Poly1305.swift */; }; + 54EC85190D1C1948AEC85A67298BDBFD /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = EA5B0A3B538B56303C1A061E2514BF07 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 551E69D2CA91185ACDFCBFDE5505A63F /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE9BBD4AE4B529B25E9E4FE7C8493181 /* after.swift */; }; + 553AD1CA02592C774AFF2659115B4DB1 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 982E6E4B839762B67F92588D34990052 /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 55620C107463741AB202D7B93B8AC47A /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = F60D6D403033B0F37C22533C4A05A1E4 /* UInt128.swift */; }; + 55714E2CA2C818B9BB609FE4303A7AE3 /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14CAC03510776AA4E99EA944110DFD9 /* DigestType.swift */; }; + 557151A9F797E462E701215A27F7DC21 /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 721ECA637BED3AE2394AA1573B89D998 /* Digest.swift */; }; + 557E070EDC1D983960128B12A77AA293 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB02248C062005D2F2620C9F81EC5ED4 /* GCD.swift */; }; + 563C641A5D7264103E44BCDCC6C6C887 /* CryptoSwift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D8EC3860FD1A1DA54C00A1498D1F1D9E /* CryptoSwift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 564FD746E26C5BFC311765163F88EF1E /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BF71F803FD375964F60D0271834711E /* AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 56959B7098D09A061F7F7721E757E1E2 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D010E670FE8C5A9AAC9A8464ED42B3A /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 57BEB3200D2E2AA64E34C9960AC0A503 /* EthereumABI-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 48DE6A16D72E33E779AE2257CA5D34BC /* EthereumABI-iOS-dummy.m */; }; + 582D36FB6BBE4D4259CBFC9B837E7F79 /* num.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D1B636300E29159DFA920C5BA2E5F7C /* num.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5916092AA6D7F2AABFCF33B48F68672B /* Pods-web3swift-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 25F72E78DF48560F5D210E57844ACDED /* Pods-web3swift-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 591B707CCE5C69B79289D27F93215603 /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 15BED946B8A96EDBF82439D38353B748 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A176FB29F73DA5B94E9257DE93AD928 /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A69680CF78C97C6DA250B325FFD04251 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5B4044B103053232D6A987856C610367 /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA93B396CDC9BA5785D41386B95B4AE2 /* ChaCha20+Foundation.swift */; }; + 5B842BF7DAD152B00F2629737F22DF42 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3077E6B0E7210AC2CB18E0691714F0 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5BFC536A9D0ED05F329623FFFE9B9C6C /* ABIEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6314619E8FCD5D07FBD2BA0BA5C58C15 /* ABIEncoding.swift */; }; + 5E0D7EA7DC572DB4F63B87D4243AA73E /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 2716312EADA930757B04015685EFD479 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 60398D9C8DCDC7FEDC52DC8AF907D1D9 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CE3A28090BEEF1B09E865F4962D871 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 60D4DE7DC97871E36FBF75DC91E7A248 /* EthereumABI.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F068DD5C61D68DFAF437EAAC56F1139 /* EthereumABI.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6121E601434E10D5CC3A01A2C815B0D0 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F98F9737D714C11C13F01403ECACC354 /* Utils+Foundation.swift */; }; + 61C9BCD007508C2CB8959FA50BF0F53F /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C5B3B2079547713108CA0A75C2D683 /* Addition.swift */; }; + 64B09F51D747BE80ACF3869000E89585 /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE85F786503354B347C059417EBAD2 /* CustomStringConvertible.swift */; }; + 64B44E304433C6993AB07F47614BBC5E /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = B2AE7121F5348D2FDCD4FD763A42FB0C /* NSURLSession+AnyPromise.m */; }; + 65D0354F4B4E32CBA63ECDF84AFAD283 /* AEADChaCha20Poly1305.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8C27B7CBA5225481973EDA23AF49981 /* AEADChaCha20Poly1305.swift */; }; + 67EA838CFD7F6CF89A7A056B09B63C06 /* scalar_8x32.h in Headers */ = {isa = PBXBuildFile; fileRef = E9FDE304B6122EEAE8A1FC91742A69E6 /* scalar_8x32.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6817327279945D8425268EF14CDDAC21 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E446483743D975168011448637ED65 /* Primitive Types.swift */; }; + 69527E264B7CB8895C3299409B518A2F /* scratch_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E9C2CC8E90A38FD011723EB814A5A52 /* scratch_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6970C806A3C7873A22DA26802EE63912 /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49C5823B0C264F4AC2DF38C68F097FEA /* NSURLSession+Promise.swift */; }; + 698DB1FA7FF3234946A86E51AF828F39 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86A87591096A3CD9071AD2D94874973C /* RandomUInt64.swift */; }; + 69A4B05BCEDEACD5C3C10D2B2913F919 /* UIViewPropertyAnimator+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = C279D46376D66FBA43CD88224B12208B /* UIViewPropertyAnimator+Promise.swift */; }; + 6A484692AA6F59EEA3EC6137FB6AFFCF /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4C0B3D9EC3E926E106CA2DE8CDEAF9 /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A6F08C9310263A607DD61DF9EC1EA5F /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE9BBD4AE4B529B25E9E4FE7C8493181 /* after.swift */; }; + 6AAD33E6E1945969931C25BAD27B42BA /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFAA80681A91BDC50EFC4294353BC5BA /* EthereumAddress.swift */; }; + 6B2DC610BB5ACC7953553D5C4FA39033 /* hang.m in Sources */ = {isa = PBXBuildFile; fileRef = DD5583797A4DF2B5636D036CDD472CD0 /* hang.m */; }; + 6B71498DEADD20033325A53D27E6191A /* SHA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840549A6DE0F91C91EE1712E3C57D6ED /* SHA2.swift */; }; + 6C983FCC57A9424B92E0AD5F05317431 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6B67028CCAE6818C78DBC12D8329550 /* RLP.swift */; }; + 6CED57BC415DF0F388D893405FE3DC3A /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD5252D2AAE2CE2F1FFDA208DD0EFB4C /* UInt8+Extension.swift */; }; + 6D4618F519FFEDB9117FC4341C7F3F4A /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A15DC755B12D8CCABB5B073B63856F /* Utils.swift */; }; + 6DC3B988093A7855E6880FFE8AE3D3B4 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD6E2BFD8131F124DFD131BA3C6D90E /* Data+Extension.swift */; }; + 6E1A1FD632248BF8EA8C08628B1DD44A /* Generics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF69CEB8B2C8F6223E5A84FF9855D71 /* Generics.swift */; }; + 6F5B521B508C0230EF8488842DE2C905 /* SipHasher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4638850DD91EB5F2EFCF18E99D4D87FA /* SipHasher.swift */; }; + 70C08283C27C54420E80CCFB8C2CEB18 /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD6E2BFD8131F124DFD131BA3C6D90E /* Data+Extension.swift */; }; + 71567D015EC37FC03AE550A23ED89908 /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 04464806E7EED788DFE4F8D62793DD29 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 717B05FECD48B3ED8481296EF0CCF350 /* RandomUInt64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86A87591096A3CD9071AD2D94874973C /* RandomUInt64.swift */; }; + 723881423457C16AFC563593E5F5B7E1 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = F42AC215BDD4E22070E88E9837549CD1 /* RandomBytesSequence.swift */; }; + 726D7B79EE2D9BE951DB54D2130E9BCA /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5300C71B6A3AB50A1D7ED70A41FAAD6B /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 73197ACF23C4CCEC651FB50DA6AF71A9 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = AD85FC46DA6BEAA980010B0C5F2BEED3 /* secp256k1.c */; }; + 734152CA029292005DD1062B744B320A /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = D895276EEA2D99E4EBF5B7FE4596872B /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 74931156BC39F4870C2DE0792BE32405 /* ecmult_gen_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A05629BB0205300B694B527AD16E56 /* ecmult_gen_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76A9DE7C8BC7B646D1A0508BF1A38A22 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C5181B2E5F94EAFEF5F04D83E0FFD13 /* PKCS7.swift */; }; + 76E0382DDD9E348354DE5C5F8120D2B8 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F9EE37EACAF96F7344C1F0AEA46F02C /* BlockEncryptor.swift */; }; + 773013B84E21E3867773BCAB6E171CBC /* Shifts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4B350BCCE6D995C937B1D56E4F9022 /* Shifts.swift */; }; + 78638EB4FF9E1219EC7E04E8B97EB448 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BA61BBC2E9A900CDFD9106099E71AF /* CCM.swift */; }; + 7866E902E917458E48CDFA6D0513288C /* secp256k1_swift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EDD86700A4552C712FAC348BB69DACD9 /* secp256k1_swift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A0702EE936C773C38F5E4B7F21AB26C /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A57E22BE5970C0F858EB10A32A3019D /* Multiplication.swift */; }; + 7AE2FD363C4422762B7BC5E2005F7C2F /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2742B99A93E16E813DA0B71800AAA56 /* String+FoundationExtension.swift */; }; + 7AFF4F6002793DD750318A9334D3BB0F /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4426237EBEE47CAC169D6291F77423 /* when.swift */; }; + 7B5BE028C02660F6A97F1D470C96F05D /* PKCS7Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F5F772F0EEFC0C3E42DAF65DB4121F /* PKCS7Padding.swift */; }; + 7BE64ADC0FA2EBA004233D25BA3BA004 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F31FF3FC3A98D10214EF6C7199FCB5 /* race.m */; }; + 7BFB63A076CB21871132CA1C68FA934B /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F1D20DF17340D045A1FDC2D1D64449D /* ECB.swift */; }; + 7C414865BEC16506132F9910DBD62F3B /* Division.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDB10140BE59AEE481C7E08EDC79971D /* Division.swift */; }; + 7DB10EF26A0A2F6768F695BE03C0AB86 /* Multiplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A57E22BE5970C0F858EB10A32A3019D /* Multiplication.swift */; }; + 7E19F8D4DDBF7633E4FB267CBD766735 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 003EF4269A56F0C44E64E737009329A6 /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7F754A09D7EA3165D9758A80F307227E /* Floating Point Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0930D7CD22CBEC2C752C14A123807624 /* Floating Point Conversion.swift */; }; + 7FE0C78E1D6CF35FD66403216909410B /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1782185CE59A4E4F74A5C0258C3B5F61 /* BigInt.swift */; }; + 803429C07CB9F5378967751502E38A45 /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85CA122AC057DBDA1FC65BCB8FC33684 /* ResultProtocol.swift */; }; + 8104031319BC96F60BFD0F501909D797 /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F90DB66AA0BD6E09A8253873368008F /* AnyError.swift */; }; + 81AEF5216BF27FF1FAF23471914CFB03 /* NSURLSession+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = B2AE7121F5348D2FDCD4FD763A42FB0C /* NSURLSession+AnyPromise.m */; }; + 82AF1E6C9907EE09A09AB83C5B1818ED /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = F6575BB4E0B2AD0E5B88C62A5EDA6FCB /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82C94A26B21102E331D831274DF3E5F3 /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79B85C952F225CDFB5B272237402E77E /* hang.swift */; }; + 83270E867F5862F72F0F925937F1668A /* group.h in Headers */ = {isa = PBXBuildFile; fileRef = F6575BB4E0B2AD0E5B88C62A5EDA6FCB /* group.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83C9B6E62BE2665CCF9078D50C66331E /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36F3DF43B9422FD5916A6C75F9C68568 /* BatchedCollection.swift */; }; + 842761D17768C84E2B62EECED7A7A656 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C42ABDF3D43E8CFBE45DFA6DF97E084 /* Process+Promise.swift */; }; + 848EFB4F6CDA94AAAD25CCB2283E9EAA /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA46482A8E14BD7641E6F29ED4F0A6B4 /* Integer Conversion.swift */; }; + 848F627E8EC89D8060C4A7DC5C0B8CE2 /* field_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5300C71B6A3AB50A1D7ED70A41FAAD6B /* field_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 84921E76FF03F22869F7FD1C2CC044B0 /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E664638E84199C40F931B3593272F8D /* NSObject+Promise.swift */; }; + 84AD91997553D782969A046B9146044A /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C5AAAD0BEA7AB575EE1203992B86F82 /* StreamDecryptor.swift */; }; + 856C7A8C7D4956726A7299BEFBC01C49 /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85CA122AC057DBDA1FC65BCB8FC33684 /* ResultProtocol.swift */; }; + 857A105811C550ED97B48E423769E135 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE693F0F5E15CCA4AE9D51B9A369B70 /* Box.swift */; }; + 857F892AC414752BEECA9829E4EA6322 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = B468DE556C27A7C396C7B5ECC7DCF12E /* Operators.swift */; }; + 8593AEFA684E7B84208518E6FC380FB7 /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BBA6411A89BD966DF62BE90EE478C /* Int+Extension.swift */; }; + 85FB5B7FC1D897B946EBAE4BEAC9CE4D /* UInt64+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA94DDC1F5525609A6FBA3EB53F09037 /* UInt64+Extension.swift */; }; + 8601AFFE38D08BA40B4AED33D04654E4 /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34A205CA261F59DB1AC7C1BE4E2ABE19 /* Strideable.swift */; }; + 862C49A4047D7B32FA8ED4644AAF3DE2 /* StreamDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C5AAAD0BEA7AB575EE1203992B86F82 /* StreamDecryptor.swift */; }; + 8645C073FDA17B6DF8E4AADCE0808C3C /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAF14DF7DD65D242909C4D06F8C00DEF /* HMAC+Foundation.swift */; }; + 8645FDCFA460D7F9AC3436355339C3B0 /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = B88C2E2D4B6E99B918E6E13EDA4AA4A0 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 87C8D1C1A44E68BA3761B2915728AA1D /* ChaCha20+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA93B396CDC9BA5785D41386B95B4AE2 /* ChaCha20+Foundation.swift */; }; + 89AD1BFCA3B307CD78AFB34118AC031D /* Addition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03C5B3B2079547713108CA0A75C2D683 /* Addition.swift */; }; + 8B3520FF1C6F9AE9FC4CB782022EBDB8 /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 4624EFF8C97C1CBAF2910297112CF9E8 /* lax_der_parsing.c */; }; + 8B4AC0EBDAD7A87FF683938E057D5338 /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89BECCA6149031B2659A0EECDCC2E4A5 /* Cryptors.swift */; }; + 8BA4D38F41C7AD0545B23BB7671C2114 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C42ABDF3D43E8CFBE45DFA6DF97E084 /* Process+Promise.swift */; }; + 8C7DC341CF6C0D742059C180AF4D3AE6 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AA60D2034DC22F7C907855DDB5ADAD9 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C8D2A38239F1CDA6CB302EFEA1E18B4 /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6B67028CCAE6818C78DBC12D8329550 /* RLP.swift */; }; + 8CBF1AE067B860433B0A4BE710FFA9BD /* CryptoSwift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6907C77858F6612BF4232E34D8D30C3F /* CryptoSwift-iOS-dummy.m */; }; + 8CFC200142682965D7D13983526BEC97 /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEDDAEEE4BC31C06BAE2232AFCA5468E /* HMAC.swift */; }; + 8DC20C4A7C1E28D752BFEBF35B5D9759 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D37539C41BE79893FEDECCB70FC25B /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8DCA7529640903D6984416665D803C1D /* CBCMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9883FCDA0DBDA6DCA8C5923AB1B3F45A /* CBCMAC.swift */; }; + 8E6ADE71160E4C617ABA4C32C87D16F3 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E3077E6B0E7210AC2CB18E0691714F0 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8EAEFFBCB259C139AE42E4967BFCD638 /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBEB708E926639930327B2FC6F3759D /* PBKDF2.swift */; }; + 906F0233096CF30AA2ADD2032085E9EA /* HMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEDDAEEE4BC31C06BAE2232AFCA5468E /* HMAC.swift */; }; + 911E85408B3D802D7981B85D7192128F /* BatchedCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36F3DF43B9422FD5916A6C75F9C68568 /* BatchedCollection.swift */; }; + 92A31273837467750DA0525B8243B737 /* field_5x52_asm_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C96A2C2C3B9F8977AD08B6FBEDE552 /* field_5x52_asm_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 930121B3B6F0689685FCAB817B2A2588 /* PMKUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 92641023C5257B4110F73449FAC652E7 /* PMKUIKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 937080F5624E366ADA825757B45DEE90 /* race.m in Sources */ = {isa = PBXBuildFile; fileRef = 20F31FF3FC3A98D10214EF6C7199FCB5 /* race.m */; }; + 93922A572F18D47B58770CE032C624A9 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = E05424B44F6AFD35E237815F926FEEEB /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 93BF74723D8898DC3E8DC67317C1B0EB /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFC58447BAB63CE30E97C059F8345F5 /* SHA1.swift */; }; + 969296ED15F25F2DBDFA4E8DE7A3F15C /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 59463535BD4D6DAD08D36EAF4421D11D /* NSNotificationCenter+AnyPromise.m */; }; + 970EE041FB9D079419CED46228DC3969 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 449887D7F7932CFAA2B3FAE0BEE1594B /* scratch.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97A3961670D0D6C11A7E18B5DB3FF739 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A3B7939D27D85A4C92DE2CD6D6C8E4EB /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 987DCF48843E8B83BE9F0B5788175D53 /* CBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 224F4E958C4909EF47CB0A9F43F48030 /* CBC.swift */; }; + 99365E9205AEA46510A70B0092872710 /* RandomBytesSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = F42AC215BDD4E22070E88E9837549CD1 /* RandomBytesSequence.swift */; }; + 99FB3C1EC398E469062856C9355D98D7 /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB40084682C161CD573420C8CCBFD4F /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9ACFA841BF6C5686EDDB92A29B36FF7F /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = EA5B0A3B538B56303C1A061E2514BF07 /* hash.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9B45BA7080C2248A03F5AF03837C74C8 /* EthereumAddress-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 76C5F543BD9B25774CA35CF7FA0546B3 /* EthereumAddress-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9BB2691E8EC04617309A1B905F5A652B /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 129427E2D354B71D619F0DAC197039BD /* Rabbit.swift */; }; + 9C1D45EE7F4C75C150166F58C0C5827F /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D5996479C4CB892D1B062406C8C08F6 /* secp256k1.swift */; }; + 9DAE14B88EE655354CACE65717FA211E /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA975F09047F404D3183C92FCA1AD829 /* Hashable.swift */; }; + 9DF5F943F4396F48FA8C2562B7E90323 /* Cimpl.h in Headers */ = {isa = PBXBuildFile; fileRef = F106BE3FED3F7D139A061124A9FF0251 /* Cimpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9E042ECCFC8FB435B85BF9193486A67C /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB40084682C161CD573420C8CCBFD4F /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9E9ABC19900EB9A2F58E05DEDE4C9C6A /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFDE509786CC72B0B5EBBB87F54C14 /* MD5.swift */; }; + 9EF0841FD75468EF3543A5C6A25A9398 /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3D345B7D38F0B4BAB39F24505D5E5E /* CTR.swift */; }; + 9F89998FC4A9BDB1EB5C0FBC61596D64 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F7ED977AF2E31DEA78D850BDE6C9F601 /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9F8C5B0AB545F419AF2F97CCD7224BB8 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81392F0749049A8C999337DDA716A157 /* Error.swift */; }; + 9F975F5CF4816CD3A6CA2282F5F4E3F2 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E773D6D25B2A450D593D189B85B7DA /* BlockMode.swift */; }; + 9FA8CF326DCA266C358B26FC42191498 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB31CE10E8BEEBFC7B50C9F8A97E10A8 /* Blowfish+Foundation.swift */; }; + 9FE815CCD081FD51B3853C75F363A89B /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AA60D2034DC22F7C907855DDB5ADAD9 /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A153DCFCF463D9DE2D043665961D775B /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EB87A244E5248ADD8D124225B21323F /* PromiseKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1636315A5B3017312CFC781DF83901E /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05DB571F7562C6E5DAC821BF33DF2ACE /* AEAD.swift */; }; + A1B3C6A88101C2163062485C2B45F1E0 /* EthereumAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = C4AD5698CEACE94C1CAD1C0317E14905 /* EthereumAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1E8398E1FC2566D94EE4D94B48E909A /* BlockModeOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5CBF6B2F887499D9631619E0D53008D /* BlockModeOptions.swift */; }; + A22F18E450653F384132E5C621BE7B73 /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = E1999CB16AEF90FFCC762EC5BA3C538B /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A2677F84AB8234C395BD53A67AF18EF3 /* UIView+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E3F5E519E5ED0A4BAF423C7DBB12042 /* UIView+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A26E92B79121B74FDE94799BF2A92C91 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FC232D3CEB1791A116CFCB46BCCE606 /* Array+Foundation.swift */; }; + A2A378FB0E28CFD130DD02F25B9420EF /* UInt32+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 857BD06ABAFBE1C5C176886E254BE8E6 /* UInt32+Extension.swift */; }; + A419E91722005FB59C7DC3BEA7AC0733 /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = A31357292CDC03F5F3AEA4C1065BCDBF /* PBKDF1.swift */; }; + A4F8D815D07249B30E393C63694BF3D7 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85342594A31BFFC584D4660A9041CF48 /* Codable.swift */; }; + A65A2E325268ED551F8A5D89FB7E75FD /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FFAEDF6DDF0B48C4B8E16F6F9C59A5F /* HKDF.swift */; }; + A72461C8573DCDB8310FA557C3BA1DDA /* DigestType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C14CAC03510776AA4E99EA944110DFD9 /* DigestType.swift */; }; + A780CA204C48EC1DEEA8B2C0F59FA6AB /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = B88C2E2D4B6E99B918E6E13EDA4AA4A0 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A7D96D76C3CF2A958DEDBFD4524D7526 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 247DF1F9FE8902AA1A74867E7854662F /* dispatch_promise.m */; }; + A829DDB57163254C51DF6C9896A1666E /* Int+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6BBA6411A89BD966DF62BE90EE478C /* Int+Extension.swift */; }; + A8995C0B368AF79026265F486D640985 /* Primitive Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E446483743D975168011448637ED65 /* Primitive Types.swift */; }; + A91379A538F389B10BAB2CE9D406BDCE /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C619FA5855429D15B556163471403E5 /* CompactMap.swift */; }; + A94EC8DF49968D812DEDDAD218DDAE1E /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF31935E8E71BE039924EA648A315B8D /* NSNotificationCenter+Promise.swift */; }; + A9A3DCED2AEB2118A087FDC125D5D8A8 /* ABIParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC6627D0179A3BE1D7BB58F2DBF51E7 /* ABIParameterTypes.swift */; }; + AA08FA2EB9DB4E98494BFDDE5D4B4936 /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2631D55D12027D3935D7B85C6A624F09 /* Bitwise Ops.swift */; }; + AA4AE37CE61DB029CDA7A78DF0E65A30 /* MD5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BDFDE509786CC72B0B5EBBB87F54C14 /* MD5.swift */; }; + AA77E4FCA1931096078FD288C72D7690 /* NSURLSession+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = F269536FCE8F92893C1DF08F94904EBD /* NSURLSession+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB02DBB24DBB4F98005C0C14C342F8FF /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A85805FE098BD65AFD79ABDC5A9DDF7 /* Prime Test.swift */; }; + AB0CBD60909A704D3D9158BC5D661B16 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C5F41A51FDAEBAF8F849026A9B09E2A /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AB9E1F4EDDB1BFD7F4359B0E1AEF9C78 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D62515D5BE9A59FE5C9041B4EBE9CA58 /* Cipher.swift */; }; + AC932B736284B35ECAD3DB196C2C4533 /* BufferStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63FD1428729C05C5A88BE98C12254ADA /* BufferStorage.swift */; }; + ACAFB6B368809FFE646FC6CE60BC1165 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D010E670FE8C5A9AAC9A8464ED42B3A /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ACC598D7BAEB964F6A2E8BA38307C4F6 /* ABIDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7A2D1D0062F350907B747E2A192E438 /* ABIDecoding.swift */; }; + ADE49554E5BC26D0FC3CB250EC153F83 /* SecureBytes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16973E34A2E1AB31C96F6ECF88E284D7 /* SecureBytes.swift */; }; + AE317D2940830F9B289A00565CE59FE6 /* ABIParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6EC6627D0179A3BE1D7BB58F2DBF51E7 /* ABIParameterTypes.swift */; }; + AEC703672CF0251F4AE1B807443AA2DF /* firstly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FE7344E86789EA2ACF6B000EE6E0275 /* firstly.swift */; }; + AEE97FC60DDB4995F16A1796F5B56C1B /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D8573A6F8E2A67DD73406C5B3ECBB5 /* join.m */; }; + AEF51F69F68DDFB4BD984ACD87DA0517 /* CMAC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89EE579B1A3A156C9DE84CC0E9CC7F51 /* CMAC.swift */; }; + AFDA9E12CC7195153491C8CD1C0AAD8B /* Integer Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA46482A8E14BD7641E6F29ED4F0A6B4 /* Integer Conversion.swift */; }; + AFDE5FB41EA9B22F9F7D1845806B8436 /* Cimpl.c in Sources */ = {isa = PBXBuildFile; fileRef = 442D6200CC1781151499F7FAF44C0366 /* Cimpl.c */; }; + AFEBE1E855779D74D26F05919F5001AA /* UInt128.swift in Sources */ = {isa = PBXBuildFile; fileRef = F60D6D403033B0F37C22533C4A05A1E4 /* UInt128.swift */; }; + AFF838D30AE798EA2B0FE11A1ED0729E /* PBKDF1.swift in Sources */ = {isa = PBXBuildFile; fileRef = A31357292CDC03F5F3AEA4C1065BCDBF /* PBKDF1.swift */; }; + B075220C6A1ACDF3E6ECA9447125C827 /* Cryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2F682F960F536C585085773DF5BBA1 /* Cryptor.swift */; }; + B1CE9BDAFCAEDA7D99F7545490D1D518 /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0A59FDACCE16F10DF39EA55249CA72D /* String+Extension.swift */; }; + B30C88B383282F3BA5CEFF72ADCD6975 /* ABIExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4AA08906784FF9AA2B198938456276 /* ABIExtensions.swift */; }; + B3978E88BD6400B77CF85D9788D4F094 /* main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A3B7939D27D85A4C92DE2CD6D6C8E4EB /* main_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B43A930051FDC74CE6667856407BD5CF /* Exponentiation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4289C87C5EC42792CDDDCFC5592AADF7 /* Exponentiation.swift */; }; + B4471EDA97A5344990BA50D90F24AF31 /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21FCC5A27F315ACD9DBDF025F826D31F /* ABI.swift */; }; + B4551C11886444FD0ECFCE0F05367412 /* PromiseKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 48BA6005A2D0AC9C0B7C4A47958A6F80 /* PromiseKit-dummy.m */; }; + B50565BC4DBFAF865B10BA46420F7625 /* scrypt-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB3CD9F51BF3B4399B8EFC798B3F215 /* scrypt-macOS-dummy.m */; }; + B52E20B7BAF9DFF4ACF992979FAA904D /* UInt8+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD5252D2AAE2CE2F1FFDA208DD0EFB4C /* UInt8+Extension.swift */; }; + B591BC023D1E6A16FCA94930AABFD4E3 /* scrypt-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2533EAF35B54AB44227FBC0A9BA7D19E /* scrypt-iOS-dummy.m */; }; + B640565E1593B250390597C2651078A4 /* BigInt-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CF8798C22F31053E2D6EAF35C011146D /* BigInt-macOS-dummy.m */; }; B6699C206D4772B76BEAF1722CB04572 /* Pods-web3swift-macOS_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 522015696E45158812DD4C5CF37CD544 /* Pods-web3swift-macOS_Tests-dummy.m */; }; - B6E2A49CAA2332035A4163610834553C /* secp256k1_recovery.h in Headers */ = {isa = PBXBuildFile; fileRef = F5AA52D2E5DC0134CBA0CB3219327A53 /* secp256k1_recovery.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B716300FB849152C5C4C3DC9C14C8E8D /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 736C0CC7DF9261F7C240BF88F7D310AD /* Authenticator.swift */; }; - B725B5E58DF7010A5CED552276526B66 /* Process+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43941A9CA2F209289C333306CBC5961F /* Process+Promise.swift */; }; - B8B0732D6BD64650E99A7C362E617FA8 /* Salsa.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03321ECEB201CDE70DA4F88EE48E2044 /* Salsa.swift */; }; - BA33E96D5FF50CFFA5727208AC91DF2B /* SipHash-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E85EB665265A065E5D96BCE2B87008D /* SipHash-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BAD670F268A8F2AB9BB2BD41BA18BEFA /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EA6F524218763DB7E76A6E13387EAC /* Padding.swift */; }; - BB71E3B83F7833D6D6D7FDEAEA0BD96B /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D98916544A0C622EDB88411AE57 /* CipherModeWorker.swift */; }; - BB8929C86AEF5AE8E8A10D8061185D47 /* EthereumAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = 48BBE301C7AC93BA32B43FDCAB55FF55 /* EthereumAddress.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBA677442B33921B63BE5CD78F273813 /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DE92E2A606B96369F79D742DFACB7C9 /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD0E70C62B7FC0BF874D98D6C855FE1D /* UIViewController+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 8787D00BE428B5C383E25BF2ABB38CC4 /* UIViewController+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD755CD92BD7C02AF8A0A289DC9E8446 /* secp256k1_swift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9D80D5C595654C7E23670359CB76D99 /* secp256k1_swift-iOS-dummy.m */; }; - BF65BC24F142604C88A03D61E2C91A0D /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5540F42E4F8BF99A1C7F95349EA8707D /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C003185B61E62CF4BD4690EDBD0719A3 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25882CAD0730D8C76F023B8C6FA287C /* Blowfish+Foundation.swift */; }; - C0101FD19738FB97383D1C0CF5EEBF77 /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 682CE9677672C1F944AA2896D3BD36FF /* String Conversion.swift */; }; - C0951D3A5CDA6E27EDC2A65A700C8D8D /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3391B8242DCA2A16EB9DBB3FF0740ABC /* Cryptors.swift */; }; - C0DD16176212D3F5222CE6886B2A660B /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E75AF68728F33A9AC112BE223CA6718 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0F8B164DDA6157937A300C207D56E4E /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DFE72A11A0AF97FFCEBDF19EC395F74 /* Subtraction.swift */; }; - C1276BB9865BF0BA0D8F4229A5202D3A /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = 08390C702E93A122CAC37BDF6A07A98C /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C35AFE3E2575CF308C100F43FC2B60CB /* after.swift in Sources */ = {isa = PBXBuildFile; fileRef = E022DA9B1DCAC9A88B18D90457826545 /* after.swift */; }; - C462144190FE4E9F45F82292FF1A629A /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E8DAE988F4403CE8B047E936F2B4AE1 /* secp256k1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C462A569CC9699DC1C14CB401D63CF5E /* join.m in Sources */ = {isa = PBXBuildFile; fileRef = D7009940ED0BFC1AA385433559754C27 /* join.m */; }; - C510E3B26A4F4876F89A59D5D2F22006 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C717226571D60D3C7D8E15B4EDCC2E0F /* Collection+Extension.swift */; }; - C56FB1B1104E7EEA26631D9EA9A9D9DD /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 7388674CDE22815644490821F0CB757B /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C6896E99AC63CF7E9506A6E8CA124CD5 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98A9FC519C49C693637C4BC5D0DD6EB7 /* PKCS5.swift */; }; - C6C9C202FFBD58F21443C1F5CEDFB291 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = D9A9A6187028CC6AD623334BA2899FDE /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C70A86EC15752B0731CD015CEF45CAAF /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9F882189D9E2CE8D7B7DC60BA0D5AF6 /* PBKDF2.swift */; }; - C804D008E78513D7097A478AE1BDE395 /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 531B65B7CD936ABCBE9D4C182A88CDF0 /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C83FF7FC178BF33DD5052001F05A83BF /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CC384B5F6C90CB968D0AB32162249B6 /* Updatable.swift */; }; - C880E86722BF8C8B420186E5FCAA564D /* field_10x26.h in Headers */ = {isa = PBXBuildFile; fileRef = 531B65B7CD936ABCBE9D4C182A88CDF0 /* field_10x26.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8C18B3FE4D4FD1B2D0467F31FA6D113 /* SwiftRLP.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F02A89B4F4807025E1CB0C26D63CD65 /* SwiftRLP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C934E91003F09F0E5C50BD3FAA858A6A /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED4A3438C4739D717703BAE1F7020595 /* Deprecations.swift */; }; - C969C4CB640BF795B01F3648075A446D /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86800F1D45016DC59C9BE8B9ABF5B50F /* Bit.swift */; }; - CA0DC69F0F366577F4021A1FB04730B2 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEA9421290E9294FEA25D9F6D3DDD24C /* Error.swift */; }; - CAF3800A1D4B45C61035F3A330991F20 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 736C0CC7DF9261F7C240BF88F7D310AD /* Authenticator.swift */; }; - CB57B994F6A2E96E2508F7845D1F97C3 /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = BA200D6941B69ACC080DFB132BEFF422 /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBAB02308405D4C1CB4271EC4AB971F6 /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73043D2C83B1F1E5EC8F0E15C2CFE5A5 /* Words and Bits.swift */; }; - CBD35C9BC44BFC266C2B4E310F1EB6F9 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25E9E042655265AEB9322FB01DD7A702 /* Resolver.swift */; }; - CC44CC395434DAA9F2F7DA1D8E1C341A /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7340338CDF774E91E0F647AB7EB91924 /* StreamEncryptor.swift */; }; - CD1400BD40761FCBE46B17F6B8AA0AE9 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8AF8868130C525C8921A94220CFA6D /* HMAC+Foundation.swift */; }; - CD433301876DFD79558B30167DD81DED /* NSURLSession+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7739AC49E92EA0677899D077C015CE05 /* NSURLSession+Promise.swift */; }; - CE2BCA099CEA37688059295108D416AD /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9787E8C8BA8DAE16D659DA569EECED22 /* Random.swift */; }; - CF67AD864C4CE27EECF87985CF9B287E /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = B9737D99B060F85A0A42A3A30335B14F /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CFCAF13F717E0088FD8C51EE4460EBBE /* NSTask+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 860EF39282D8941084557A3DCC1D7DF3 /* NSTask+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D04010B8C8B3844F185CA1437FFF5118 /* Cimpl.c in Sources */ = {isa = PBXBuildFile; fileRef = E65308F679CCAADBBF14F5DB4971CD21 /* Cimpl.c */; }; - D1F0182968E66E044F80A9822BE772F0 /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD14A2D2C9467CDF73E9EC39F2B97E62 /* Hashable.swift */; }; - D1F87BF791595C2F5B4A86F445081ED5 /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41FAB135DE09D3F9136D834CBE3A558A /* Scrypt.swift */; }; - D29E48A6FDC719FD2FF024625C37CA22 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFCBEFE9DA6D7F361DBB180EB84492D2 /* BlockCipher.swift */; }; - D2C9540655CD82F8A12305D2B953BD71 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 915D7A030D48CB0FE8360421BAB29B5B /* NoPadding.swift */; }; - D33063EEBD209F32520B754AD30B31A8 /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01271B2BB62FE2D72466A630AC9D1BE8 /* Configuration.swift */; }; - D38BBC7C8903B9EB7803ECA68167DE20 /* EthereumAddress-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 23299E01AF2849576AF87D2A3EB8D494 /* EthereumAddress-iOS-dummy.m */; }; - D4043F69152803AF7B450C9062CFC688 /* scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 9411AC5861B33542BF71A1EED7E49FC4 /* scrypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D44A10DC0AFCD862345B9A0F97E95ED2 /* scalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 944A08F05724AD8D1EC4F7FF0D09BFE6 /* scalar.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D4C0E6966E5FED70544A97ACC237CF3A /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ED58E829B835009D9DCD1D8B959FBBD /* Digest.swift */; }; - D4F42FD2DC81233AD6F6C96B6D8C8D38 /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 80353B76ABA10ED9D59C18FDA6A16285 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D4FBEF46E2616F942B65FF779B374513 /* BigInt-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B2300EAF13A4BCCC04BBD2896E58716D /* BigInt-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D575885715CF6B41AEA644EAE2513FE8 /* AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 635C328C2CAB4B34DEF69D8CFABA3AC1 /* AnyPromise.m */; }; - D57E19C3E86448FD0CA3B9742DB49497 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7340338CDF774E91E0F647AB7EB91924 /* StreamEncryptor.swift */; }; - D5C95DA680B56760C10228B520F7499D /* PromiseKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E67F7B0700CACBB7DFD27A88EFF75C2 /* PromiseKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D655D7A0F64343C818BC21A985DA8C5C /* scrypt-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F84F141F7B6CD4974D2BDD888FE19496 /* scrypt-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D6B5F7FA348E6697E489142154B85107 /* AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BE63C0E40FA294F6C512967711E56D9 /* AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D6BDAA0C8CA8843CE436AA3573C378F9 /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 491E82F8B7D6BC0F752EEA10F629435A /* Square Root.swift */; }; - D6BEC5D8B88A2BF435ADEDDA2505900A /* UIView+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90C5426B3E9CBBCF9A8B6731836D354 /* UIView+Promise.swift */; }; - D7875CD7BA041CED180D37E0448C09A8 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAC966A4293FF7689DD8A3B2877731F3 /* Blowfish.swift */; }; - D78C9EA6787B721D75665039BD726BF9 /* Thenable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 982B03AB9D403479BF865D7C3A5B2D4F /* Thenable.swift */; }; - D79B4B114921134D9311CA5A71062C10 /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E5F93B0E61748A9D9906D3305A41EA8 /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D7AA60A9860ED2E7DD7440AC9D799A04 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 915D7A030D48CB0FE8360421BAB29B5B /* NoPadding.swift */; }; - D81D753CE65D4B1E0F26F57606BD0F6C /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1FC3BBD92A37B6D1B9844791FDD7F86 /* Bitwise Ops.swift */; }; - D937FEA1E574089DEF1B2FF475B3F2B7 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF94FCFAAA2F4216A2F89F43E2CDA4DA /* Catchable.swift */; }; - DA1588018CD8315CFCBB2E0806B753E5 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB4C3483E321FFBD045AB8FDC37CF8FA /* Array+Foundation.swift */; }; - DA1E098DCF3DEE1C5D699424486C1D64 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4BAF829379DA2971A7051C2EFAE15E8 /* SHA3.swift */; }; - DA74E106DB2F609C8C444565678896BB /* ecdsa_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E36C3B29C59A6C972DBF40C0EF93D5 /* ecdsa_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DAA014164E03E57A7D043C270B6C9B84 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8AF5512E4598482BBFB4AD1BBF8064 /* PKCS7.swift */; }; - DB8210FAA307129469E336205657F092 /* ecmult_gen.h in Headers */ = {isa = PBXBuildFile; fileRef = 0554DC016A3872F60738FE5C366CAF31 /* ecmult_gen.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DBB230040D2BE00D2D5726E70957B1BE /* EthereumAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CB204BDB01A5747B116731490529E2B /* EthereumAddress.swift */; }; - DC3FC4BC15FF43709E43B8FAA2B6FD3B /* PromiseKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 52059A76F9DA89149396ABB84A8A5780 /* PromiseKit-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DD7964B2315BCC4C1FEF9A2300164025 /* SwiftRLP-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5447D2654ABD868EB73A2BF12AD74DE8 /* SwiftRLP-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DD79FE3BB4C3C7D3A923E6CC1B66064A /* RLP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49FA7F82B54CC7168B96069F53D66A28 /* RLP.swift */; }; - DD7EF0CDE3C0223DD3933632CDB2AB01 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EFDF78EEBE9836CDC5AE2FEEC50C17B /* Utils+Foundation.swift */; }; - DE31538BAB4D0DB5B8063517B853894F /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = E7E7786C2EC1054AF047E2571B12205F /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DE86F4DBFBAE2D9EADB44907B3B7FC1D /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4BAF829379DA2971A7051C2EFAE15E8 /* SHA3.swift */; }; - DED6A3731F280B7A5C4BA0088245421D /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA3D1883E9BD064F4B9299B5825061E7 /* String+FoundationExtension.swift */; }; - DF3C881F6AA58663EA27A37DDC93CBD1 /* SipHash-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7692AAEAD8E8FFF8D2E46B60CBA56CDA /* SipHash-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF4ECF7A425192C1C45C4AB1E9BAE553 /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA0E0A67D5738512E4618E1AEDA5E3E /* CustomStringConvertible.swift */; }; - E15BFF7A7883A5BFB699464499718E52 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC4C922D64767063B8D1A270D793373B /* BlockEncryptor.swift */; }; - E1B91043188FBFD92BA078E1EF2912E0 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E8DAE988F4403CE8B047E936F2B4AE1 /* secp256k1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E1BD1671D6E0A0FDAC9298373486DA9F /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 491E82F8B7D6BC0F752EEA10F629435A /* Square Root.swift */; }; - E254A91C69969B33ED1BF9BDE5B19AED /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755E0B91B0984ADEF77E48E32C147276 /* Data Conversion.swift */; }; - E254CF34D5F821DC8EAA61755F39ECF3 /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5595E1873CFBC6061E8C6D86BFF12807 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E262F38BE8D55B54CB886EAC66214BFD /* lax_der_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = CA97BDA6DF1DE11A96470DBF6FBD7C62 /* lax_der_parsing.c */; }; - E26B96712A33AB8CE72BA17C152736E8 /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D1D500C8CF88FC87FF7FA43DBC53611 /* AnyError.swift */; }; - E2F52C65710FEE56EBABD1C599E031E2 /* scrypt-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 51FC3239F6613D1D7AE1AAD0F3204A0F /* scrypt-macOS-dummy.m */; }; - E350B1B350751D65ED5A630756C5DDAF /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C48C6F1DCE55E9EE6040D50626EF16 /* ECB.swift */; }; - E38ACED69C24647A7A07B2B72C7580BD /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D2BE96DBE00949D2B047DC83A759B4C /* BlockDecryptor.swift */; }; - E4831746A0E266E025EE80BCA4EF3BFD /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1576E0C86B6BE13F5FB685E1357E71C3 /* Result.swift */; }; - E4FB02298751B056940AB39261020DAB /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 671394A1108646E9E210CF54FA2C814C /* CTR.swift */; }; - E6950B7C92641175616A7FE09FA2574F /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC86A3FC56A1BAE1CA3490D081E47F3 /* Checksum.swift */; }; - E75EA18FC026B0FE0E943667D597D909 /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145A69383BF153D7728F4793AB68C3C4 /* hang.swift */; }; - E7A8CA29F94135EBCA9E6187C222A42A /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B152212D05CB08C4E0B61D8CDFF12C9 /* Guarantee.swift */; }; - E85D4BCF4C4214A3340D014F0CB27440 /* AnyPromise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7695A9A41BFEEAD40C0235B913A07672 /* AnyPromise.swift */; }; - E96D904E355EFA92932B4B71E59472E4 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F0D95EE88A2B8D781795DF20E0568F6 /* BlockMode.swift */; }; - EB0DEA3194A067ADEF216B5AEB36E957 /* Pods-web3swift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F688145BCFE1FB8B76299CC261A05E /* Pods-web3swift-iOS-dummy.m */; }; - EB52C8F7723FCC94649C4768B67E2E3A /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC0DBFB306B96AAE65A02CB825C4F0B /* SHA1.swift */; }; - EB5F9E86F880F7DADBC989EAE79A9162 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 7388674CDE22815644490821F0CB757B /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB61FACF6827E43E518AF99AFE8ADD09 /* ecdsa.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF08003360A2A59E3E059CBC5496E71 /* ecdsa.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB9345AB32E8C1BCE5C88C239CFAF2B9 /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8354A9A75879DFCE10CDFCD8B4B76EF5 /* AEAD.swift */; }; - EBC1181767AADF30189982641F9B9648 /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = F218E50D513522160983106C90B34FBE /* Prime Test.swift */; }; - EBD3735323AB89C906B5E1C536976080 /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D2BE96DBE00949D2B047DC83A759B4C /* BlockDecryptor.swift */; }; - EC9F551C20254A1AEC7679ED83D28713 /* Cimpl.h in Headers */ = {isa = PBXBuildFile; fileRef = F935D7D51C3BD0EEA31106E0BF9C3D13 /* Cimpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ECA8F009F06F08BDB92C351F47995210 /* eckey.h in Headers */ = {isa = PBXBuildFile; fileRef = EE8A73B5FBE9F82E34238AC840FC7331 /* eckey.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EDEB77EE161E91BE126DB5BECD0D2F88 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1BDC161E1A001A666E01A22455E14B5 /* AES.Cryptors.swift */; }; - EEB835EB989FDE954E0253B6BED77F43 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = 5297103B37D2E5083D67ABE2C60CA382 /* after.m */; }; - EEBBD653ACE1E18F44D391EC926D1EF9 /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = 7DF576FC1DAC9EC11DA44099F4F50AFE /* secp256k1.c */; }; - EF2912DE621D3B57FB6A277CBF39B316 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F76B715633F358CA7525D8C17738C9 /* GCM.swift */; }; - EF2D6E9667E3DC5852A6F092A4BAC763 /* PromiseKit.root-CorePromise-Foundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1C0BFC1A022B5AD3BDFC8920FCFD74 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF56A1A9A97666C4D03AA9AAF5A37918 /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32BA5AE4C0BE79090A24F00A3F35AFF /* Strideable.swift */; }; - EFDC04F64EB4766D33AC8058E12B4561 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB4E43C9EB1F78AD84B2314039898608 /* GCD.swift */; }; - F1566684B5EC4250C3F2D3F422CFD689 /* EthereumAddress-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A734506E75FE208AFB8DA726262FFEC /* EthereumAddress-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F16E441BDD1CCA79E64DCDA49CA4CC50 /* Result-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 67F6E91C8B57C5F8E945603C7F3DB0F2 /* Result-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F1DD83612B8154D1465CF398FCFA9596 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14176496814CB0D56F198301D279FE65 /* CCM.swift */; }; - F2CEA0F86BECA15D8730D3D53D9EAF69 /* SipHash-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C57F4AE68BD0AD2EE5867A1CA2A12FCC /* SipHash-iOS-dummy.m */; }; - F48FDD8548C612FB765A5F4D3F2AAEB2 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47CE1FE3AEC19CC322E3E03530D21CD /* PCBC.swift */; }; - F4F971E86909084B5DE98EB247D30EAF /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 86B004B7F6AC62E27D75D02978601A76 /* NSTask+AnyPromise.m */; }; - F59F8D1792721D4062D9597FF2370D53 /* NSObject+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840434A830881CF07FBDE172A20CDDDC /* NSObject+Promise.swift */; }; - F6C04F880164DA1647FDF6654CD65CBE /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EA80C3235171417958F658E327CCF8E /* Codable.swift */; }; - F6E2A19F261D93BB5E130674AEF90198 /* afterlife.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74111ED4B5372D2EE9A218621A18699C /* afterlife.swift */; }; - F6EEBE907D9BF3B0332ED86D67236441 /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF5980AB239F34C8CB958F30A518A0B /* BigInt.swift */; }; - F7A2DF1C44544C5300298F18DF2CB870 /* field_10x26_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9821B82F2A2D9E9E0A740B6B4B38A6AB /* field_10x26_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F854EACBF11549213B26B4748FBB94A0 /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DFE72A11A0AF97FFCEBDF19EC395F74 /* Subtraction.swift */; }; - F8DD96EC7610D4FCB6C8045D400E5701 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 17856FB7A41BDDB75285F531B03882F4 /* PMKFoundation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9451AAFCEDF04CB35C64C98192AC819 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D6CFCC98052B542B8BD8050E0204993 /* Box.swift */; }; - F95445AB786CF29CEA99E52C88BFE706 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77FB79008E5E4C52EE48B984D12A652E /* AES.swift */; }; - F9A83224C63AF5F18AED311461D71668 /* BigInt-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B90CC3B80037E1B917D44513A07D0F6C /* BigInt-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9D3A99DCE33C06801BDC5EBADEDFDA9 /* dispatch_promise.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C3F64F8D233B557ADBCBAB5F8D81F1E /* dispatch_promise.m */; }; - FA47C2FD4BE0AEE4BBB8F078CEDED890 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B35D82CEB3E05DB842B7FA66505116 /* Cipher.swift */; }; - FB9507F4BB8DEF640A6E3C3BE2A4E619 /* eckey_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 678FC45FCDC1237D6344CFADDB22F228 /* eckey_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FD6E4E6D2515323B98F8499CAF7D8486 /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31ABCFEE7AE67562C4CEBB66C7ED4D6 /* ZeroPadding.swift */; }; - FE95B067321486A5998C5DD4DF31862A /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E5F93B0E61748A9D9906D3305A41EA8 /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF83256DE909E2F86AEBBF4E51F42EF0 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = C717226571D60D3C7D8E15B4EDCC2E0F /* Collection+Extension.swift */; }; - FFA521581788213B12468D8AA8D2ADBB /* SwiftRLP.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F02A89B4F4807025E1CB0C26D63CD65 /* SwiftRLP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FFD1323B3E415476F73D432694CC4D35 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 906199A857C08F740EA182609488E191 /* Rabbit.swift */; }; + B716300FB849152C5C4C3DC9C14C8E8D /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E53BAD514C4F4E022EEBCEB1ABC3943 /* Authenticator.swift */; }; + B73725553EA7209B295AFAAF5F1641C9 /* scalar_8x32_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 81ECE7FE7C889AF9F1B739830D9A59B0 /* scalar_8x32_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B747E0DC81EB6CFCD9751A67CC0C6D17 /* ABIParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B3D040637E19F37C0D7EB3C1A6A991 /* ABIParsing.swift */; }; + B8F37FA0A973FDDC27C6425371AEEAD6 /* ecmult_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4C0B3D9EC3E926E106CA2DE8CDEAF9 /* ecmult_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B9273317460CC1FE679BEB887B22502C /* ecmult_const.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D37539C41BE79893FEDECCB70FC25B /* ecmult_const.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B95242B48A9EBE0FD2ED1CBD13BCF4E7 /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = B621DCE8D325B673C6F300B7C2CD478B /* Promise.swift */; }; + BA33E96D5FF50CFFA5727208AC91DF2B /* SipHash-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A44AEA30AD48DB0294CA791DF2D0996B /* SipHash-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BAD670F268A8F2AB9BB2BD41BA18BEFA /* Padding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3654C41FDB74088592DA713158476E5B /* Padding.swift */; }; + BB71E3B83F7833D6D6D7FDEAEA0BD96B /* CipherModeWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D1692A2F154E2828E569943ED540D4 /* CipherModeWorker.swift */; }; + BC9A423C1774D10E28F894E40D5AE2A3 /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C65F271D54976AEAF5B1CB4522A471 /* Scrypt.swift */; }; + BCE563F1B7FA756C138FC28179851EC7 /* NSTask+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FFFD5E940B31BAEC3CCFD05B093B6F8 /* NSTask+AnyPromise.m */; }; + BE1CE42FE75F14BC5B71AED3DC543BCF /* NSNotificationCenter+AnyPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = D895276EEA2D99E4EBF5B7FE4596872B /* NSNotificationCenter+AnyPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF3AD846ADBFAF021EE70996A7ED071A /* secp256k1.c in Sources */ = {isa = PBXBuildFile; fileRef = AD85FC46DA6BEAA980010B0C5F2BEED3 /* secp256k1.c */; }; + BF3DECFBE86EB35CFAC5BAE1C0268391 /* UIViewController+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 05CC03039B7AACA3DE3D601125B19CC6 /* UIViewController+AnyPromise.m */; }; + C003185B61E62CF4BD4690EDBD0719A3 /* Blowfish+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB31CE10E8BEEBFC7B50C9F8A97E10A8 /* Blowfish+Foundation.swift */; }; + C0101FD19738FB97383D1C0CF5EEBF77 /* String Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D5DF1B1384D6392013199F71BACD06 /* String Conversion.swift */; }; + C02A520237A6EEC101F93FD5E741C295 /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4D3EFB3ECDE366218A9D0848F3C58B /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0951D3A5CDA6E27EDC2A65A700C8D8D /* Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89BECCA6149031B2659A0EECDCC2E4A5 /* Cryptors.swift */; }; + C0F8B164DDA6157937A300C207D56E4E /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B1DC98FA2ABF0645707ED4C6FF5D77 /* Subtraction.swift */; }; + C13DF5C0C3793C734EF3847DE3DFE9A0 /* BufferStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63FD1428729C05C5A88BE98C12254ADA /* BufferStorage.swift */; }; + C1D9D7ECEE62A04544DFA4A2889BCC7D /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70E24C26EF4EF9C8244E7F94F175FD51 /* Configuration.swift */; }; + C510E3B26A4F4876F89A59D5D2F22006 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F74D8CA41DCC5236159301ED92764C /* Collection+Extension.swift */; }; + C540A907CA97EA4FB79818D21D2E7CD0 /* Salsa.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB74063F2F7DC76E97D34EC40D093C52 /* Salsa.swift */; }; + C6896E99AC63CF7E9506A6E8CA124CD5 /* PKCS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = F964C89C691E6FE6350F48A4A3E1DD52 /* PKCS5.swift */; }; + C70A86EC15752B0731CD015CEF45CAAF /* PBKDF2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBEB708E926639930327B2FC6F3759D /* PBKDF2.swift */; }; + C83FF7FC178BF33DD5052001F05A83BF /* Updatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27DE68FEECDD098908A9003BDA40307F /* Updatable.swift */; }; + C89964A06EC88B3B556310F199344D68 /* Pods-web3swift-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E91F337EA3979DB5DD84C325A340270 /* Pods-web3swift-macOS-dummy.m */; }; + C969C4CB640BF795B01F3648075A446D /* Bit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92C1E2F71DB75395E28DC3213425381D /* Bit.swift */; }; + C9B648C3CD7850DC94E49F5F5329CA81 /* Salsa.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB74063F2F7DC76E97D34EC40D093C52 /* Salsa.swift */; }; + CA9B0594A947364945D728CD48CE2675 /* SwiftRLP.h in Headers */ = {isa = PBXBuildFile; fileRef = B8EBC720E3207E6F08965D7549AAFEC6 /* SwiftRLP.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CAF3800A1D4B45C61035F3A330991F20 /* Authenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E53BAD514C4F4E022EEBCEB1ABC3943 /* Authenticator.swift */; }; + CBAB02308405D4C1CB4271EC4AB971F6 /* Words and Bits.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6E2E2ED41464CEB00832B492D67ECB /* Words and Bits.swift */; }; + CC44CC395434DAA9F2F7DA1D8E1C341A /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 575A44CBD254AB2012072A25C3D25D19 /* StreamEncryptor.swift */; }; + CD1400BD40761FCBE46B17F6B8AA0AE9 /* HMAC+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAF14DF7DD65D242909C4D06F8C00DEF /* HMAC+Foundation.swift */; }; + CD6EC5B134FE5E926C6F6BC0BCAA6826 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 948894E3D7054F9BEAA31B5D6061F696 /* PMKFoundation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CE2BCA099CEA37688059295108D416AD /* Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = C04C575F1277CF14F506F691F9C669FC /* Random.swift */; }; + CE6059517A03418C389CF50D78287474 /* EthereumABI-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2EE2AAFC0C186078B992C06F762E8D /* EthereumABI-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CF08F59B4689BEF43A5B7F883C330BBB /* ABITypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4F1681CFA49EA17D6A73339A9C1A44A /* ABITypeParser.swift */; }; + CFBF7084F0841CB8777A37BC16092662 /* after.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FB5F00D821CDC9BDA7F7709F07DD0F3 /* after.m */; }; + D10BCDD795487B1471ADAF3F0D4485CA /* lax_der_privatekey_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 15BED946B8A96EDBF82439D38353B748 /* lax_der_privatekey_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D1F0182968E66E044F80A9822BE772F0 /* Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA975F09047F404D3183C92FCA1AD829 /* Hashable.swift */; }; + D29E48A6FDC719FD2FF024625C37CA22 /* BlockCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4992855757033544670BD38D4484C08 /* BlockCipher.swift */; }; + D2C9540655CD82F8A12305D2B953BD71 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8172257020A0ACF61B9FA6264236BB6 /* NoPadding.swift */; }; + D32E984FBE218628DC804D3F92B394BF /* EthereumAddress-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C29EC87775E098CCEE6CEB4ABA65AA /* EthereumAddress-iOS-dummy.m */; }; + D3B166774A35F98D4C599A9B4DCBDC82 /* SwiftRLP-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 73A68F048F801AD8527F07F7706E57CE /* SwiftRLP-iOS-dummy.m */; }; + D42A1D2FC1FD4BC6485683430F314F8D /* Pods-web3swift-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E8C19543EF3AA4D9801DBE55E22E211 /* Pods-web3swift-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D486D63B958DFDD8C755799433969946 /* hang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79B85C952F225CDFB5B272237402E77E /* hang.swift */; }; + D4C0E6966E5FED70544A97ACC237CF3A /* Digest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 721ECA637BED3AE2394AA1573B89D998 /* Digest.swift */; }; + D4FBEF46E2616F942B65FF779B374513 /* BigInt-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F0A15233EFEAA840C94D98DFD9C1F14 /* BigInt-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D528114C056635E14284458D9163DE3A /* group_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 49F74127A936A7C34D38E84140D1EFAC /* group_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D57E19C3E86448FD0CA3B9742DB49497 /* StreamEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 575A44CBD254AB2012072A25C3D25D19 /* StreamEncryptor.swift */; }; + D5F3CB86000211CEE2280DE68F875D8B /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 1592E519056BA4CA85F67406D0EC2ED4 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D6BDAA0C8CA8843CE436AA3573C378F9 /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93EB1CF4FDC03241B81C3C3B6F58B9E0 /* Square Root.swift */; }; + D6DCA066BC93D939AC99A4E197574317 /* secp256k1_swift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E3FCE1E29EDFA06494CDD00767685E3 /* secp256k1_swift-iOS-dummy.m */; }; + D7346C912787D714E05528CDDB4A75F8 /* SwiftRLP-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1250F72B02037FC0CC2220F528B17381 /* SwiftRLP-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7705513171AE49C798D5A002BEC0737 /* scratch.h in Headers */ = {isa = PBXBuildFile; fileRef = 449887D7F7932CFAA2B3FAE0BEE1594B /* scratch.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7875CD7BA041CED180D37E0448C09A8 /* Blowfish.swift in Sources */ = {isa = PBXBuildFile; fileRef = F063BD5FB8772F058E36A1292962E899 /* Blowfish.swift */; }; + D7AA60A9860ED2E7DD7440AC9D799A04 /* NoPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8172257020A0ACF61B9FA6264236BB6 /* NoPadding.swift */; }; + D7EC50261154FE1C386EDF60B128A90F /* NSNotificationCenter+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF31935E8E71BE039924EA648A315B8D /* NSNotificationCenter+Promise.swift */; }; + D81D753CE65D4B1E0F26F57606BD0F6C /* Bitwise Ops.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2631D55D12027D3935D7B85C6A624F09 /* Bitwise Ops.swift */; }; + D9BA126F50DCB7B25D32447C2E8931CC /* field_5x52_int128_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FB6255E4560252B9DC0BE760F34C261 /* field_5x52_int128_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DA1588018CD8315CFCBB2E0806B753E5 /* Array+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FC232D3CEB1791A116CFCB46BCCE606 /* Array+Foundation.swift */; }; + DA1E098DCF3DEE1C5D699424486C1D64 /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C1637249D7E9C69FBC55792F4BFF580 /* SHA3.swift */; }; + DAA014164E03E57A7D043C270B6C9B84 /* PKCS7.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C5181B2E5F94EAFEF5F04D83E0FFD13 /* PKCS7.swift */; }; + DCA7BBA544AC372B023678542AB72A6D /* scrypt-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 55609C780EA603377D9F33E7661A79BB /* scrypt-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DD67FFA8EE4F3833E14B823CEE55424B /* Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = B621DCE8D325B673C6F300B7C2CD478B /* Promise.swift */; }; + DD7EF0CDE3C0223DD3933632CDB2AB01 /* Utils+Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F98F9737D714C11C13F01403ECACC354 /* Utils+Foundation.swift */; }; + DDAAEE587CECD365E4372D6AEF67D713 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 60243E0B2E1CDFC9B6DF789487982447 /* lax_der_privatekey_parsing.c */; }; + DE020DA46E23F23DCCFAE08D581C1210 /* CustomStringConvertible.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0EE85F786503354B347C059417EBAD2 /* CustomStringConvertible.swift */; }; + DE0C833855F30BFD02D7F624009AFCE5 /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A9A0105BAE9E5BEE9ADD4B17A58DD8 /* Deprecations.swift */; }; + DE86F4DBFBAE2D9EADB44907B3B7FC1D /* SHA3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C1637249D7E9C69FBC55792F4BFF580 /* SHA3.swift */; }; + DE9F01F9CE4B8C74DB084D584C1F4DF7 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81392F0749049A8C999337DDA716A157 /* Error.swift */; }; + DED6A3731F280B7A5C4BA0088245421D /* String+FoundationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2742B99A93E16E813DA0B71800AAA56 /* String+FoundationExtension.swift */; }; + DF3C881F6AA58663EA27A37DDC93CBD1 /* SipHash-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 48FCAFD34D22FB4A18FEF12007E2FAB3 /* SipHash-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DFB15CA333EE077FC25900A712E89DB7 /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 003EF4269A56F0C44E64E737009329A6 /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E15BFF7A7883A5BFB699464499718E52 /* BlockEncryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F9EE37EACAF96F7344C1F0AEA46F02C /* BlockEncryptor.swift */; }; + E1BD1671D6E0A0FDAC9298373486DA9F /* Square Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93EB1CF4FDC03241B81C3C3B6F58B9E0 /* Square Root.swift */; }; + E1DA6C9BC2295C7CF04AD192B8FE26FF /* scalar_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4D3EFB3ECDE366218A9D0848F3C58B /* scalar_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E211E262D4BD3E0165706646B9DBAD9C /* Scrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1C65F271D54976AEAF5B1CB4522A471 /* Scrypt.swift */; }; + E2304F8E1E94478D68A8EC526EDCCBAD /* scalar_4x64.h in Headers */ = {isa = PBXBuildFile; fileRef = E1999CB16AEF90FFCC762EC5BA3C538B /* scalar_4x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E254A91C69969B33ED1BF9BDE5B19AED /* Data Conversion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B8BA477868467E169FF27E9193A10DA /* Data Conversion.swift */; }; + E316F68C4FD62BB0A294D29DB03DCB5D /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = ABA2CC618DEF4A5E27ADED64FC6F96A5 /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E350B1B350751D65ED5A630756C5DDAF /* ECB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F1D20DF17340D045A1FDC2D1D64449D /* ECB.swift */; }; + E38ACED69C24647A7A07B2B72C7580BD /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E248D955FFD067941A82DF6B7B3C4F /* BlockDecryptor.swift */; }; + E3D91DEF848307121405F35618B723BA /* ABIElements.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2B4899E422658B96ADF84B5239C418D /* ABIElements.swift */; }; + E4FB02298751B056940AB39261020DAB /* CTR.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A3D345B7D38F0B4BAB39F24505D5E5E /* CTR.swift */; }; + E59A5E45ED8B25E70C9C6A6E89C566D4 /* scalar_low.h in Headers */ = {isa = PBXBuildFile; fileRef = ABA2CC618DEF4A5E27ADED64FC6F96A5 /* scalar_low.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E5EFEA69608F27C359D3B7989D25F0B1 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80ACF3AED1948ECBBAF9BEFFC3482423 /* Extensions.swift */; }; + E667D403FE161578DA4BD7A748C01FE0 /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E0D3EDB8E94AA59C54E4808C60A2744 /* when.m */; }; + E6950B7C92641175616A7FE09FA2574F /* Checksum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C25934B3D3377624DF16153BF76578 /* Checksum.swift */; }; + E6E4C025FE5F1391E96A65CF5F594591 /* Catchable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96C4685C831E862AD0F75DC78A3A5B61 /* Catchable.swift */; }; + E70AA4690673CA6F6D246FD4F786AE99 /* scrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 07853D5BF50E26B878B7B1D18CF18F06 /* scrypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7DEA0B8E0F9EAF68841EDC4B8AC3396 /* field_5x52_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = ADB4E2DA064200DDCD42C634CBC39977 /* field_5x52_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E96D904E355EFA92932B4B71E59472E4 /* BlockMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E773D6D25B2A450D593D189B85B7DA /* BlockMode.swift */; }; + EB4F4E8A7A76E8F00B6B6B9D5D93C6BE /* EthereumABI-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C742D7E4D064B53F3E8BD2061CEB4650 /* EthereumABI-macOS-dummy.m */; }; + EB52C8F7723FCC94649C4768B67E2E3A /* SHA1.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDFC58447BAB63CE30E97C059F8345F5 /* SHA1.swift */; }; + EB9345AB32E8C1BCE5C88C239CFAF2B9 /* AEAD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05DB571F7562C6E5DAC821BF33DF2ACE /* AEAD.swift */; }; + EBC1181767AADF30189982641F9B9648 /* Prime Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A85805FE098BD65AFD79ABDC5A9DDF7 /* Prime Test.swift */; }; + EBD3735323AB89C906B5E1C536976080 /* BlockDecryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E248D955FFD067941A82DF6B7B3C4F /* BlockDecryptor.swift */; }; + EC0634AA758562515F6A6C370F9C7102 /* lax_der_parsing.h in Headers */ = {isa = PBXBuildFile; fileRef = 58FEC74B279A9D31ADE339DE27E86FA9 /* lax_der_parsing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EC534D19303041971EDE9C1C79A0F5FF /* ABI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21FCC5A27F315ACD9DBDF025F826D31F /* ABI.swift */; }; + ECAAA1869ED698C502004DE2B539728F /* basic-config.h in Headers */ = {isa = PBXBuildFile; fileRef = 1592E519056BA4CA85F67406D0EC2ED4 /* basic-config.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ECF940C778D08964A4CC5F1090E5B694 /* num_gmp_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A69680CF78C97C6DA250B325FFD04251 /* num_gmp_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EDEB77EE161E91BE126DB5BECD0D2F88 /* AES.Cryptors.swift in Sources */ = {isa = PBXBuildFile; fileRef = B453F34A70203AF07F27C5AE1B2A0518 /* AES.Cryptors.swift */; }; + EE783493F1B7530C3742E03C554493DA /* num_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 982E6E4B839762B67F92588D34990052 /* num_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EEDA1D167622551D8F61394C9E16FDC5 /* Result-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 37A3BB2B9627AD42F4EC73AE040C9A18 /* Result-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF2912DE621D3B57FB6A277CBF39B316 /* GCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B830B448B480E1AE7466CE0AB7565D1 /* GCM.swift */; }; + EF56A1A9A97666C4D03AA9AAF5A37918 /* Strideable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34A205CA261F59DB1AC7C1BE4E2ABE19 /* Strideable.swift */; }; + EFDC04F64EB4766D33AC8058E12B4561 /* GCD.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB02248C062005D2F2620C9F81EC5ED4 /* GCD.swift */; }; + F0444E1F4E7C762ECC68CF056B05412E /* when.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E0D3EDB8E94AA59C54E4808C60A2744 /* when.m */; }; + F1DD83612B8154D1465CF398FCFA9596 /* CCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BA61BBC2E9A900CDFD9106099E71AF /* CCM.swift */; }; + F281004328C1EE7335B9F8B4DF6D8F0B /* race.swift in Sources */ = {isa = PBXBuildFile; fileRef = C799FC61BB50110B0EF9812635A7CF8F /* race.swift */; }; + F2976AA313F35FAE9B9112630BAEF66D /* fwd.h in Headers */ = {isa = PBXBuildFile; fileRef = F7E0FE543A2A814147E52BD4424892FD /* fwd.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F2CEA0F86BECA15D8730D3D53D9EAF69 /* SipHash-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 20C577019086BC2EE2D24C2E5BF910AF /* SipHash-iOS-dummy.m */; }; + F3B4A2958AB11045072673A69A78A808 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBE693F0F5E15CCA4AE9D51B9A369B70 /* Box.swift */; }; + F48FDD8548C612FB765A5F4D3F2AAEB2 /* PCBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E0CB4379D0092F51F5C1232B3CD03D3 /* PCBC.swift */; }; + F58374064F4B7EFE824BF746EABBEE37 /* secp256k1.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D5996479C4CB892D1B062406C8C08F6 /* secp256k1.swift */; }; + F5AE13A73A33CAF4BA119DDEBCAC5809 /* SwiftRLP-macOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ED9E675BBBC75B01E6961483170B6E7F /* SwiftRLP-macOS-dummy.m */; }; + F6B78FA78EDE2C42ECDEE022019AB812 /* lax_der_privatekey_parsing.c in Sources */ = {isa = PBXBuildFile; fileRef = 60243E0B2E1CDFC9B6DF789487982447 /* lax_der_privatekey_parsing.c */; }; + F6C04F880164DA1647FDF6654CD65CBE /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85342594A31BFFC584D4660A9041CF48 /* Codable.swift */; }; + F6D7738BDDDF311DBDB1B103A5A1F6E6 /* scalar_4x64_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CE3A28090BEEF1B09E865F4962D871 /* scalar_4x64_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6DB885F4AA84A99F9B5778AA1E2D3DA /* hash_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A1687163A14D55D2EF896A97CD937491 /* hash_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6EEBE907D9BF3B0332ED86D67236441 /* BigInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1782185CE59A4E4F74A5C0258C3B5F61 /* BigInt.swift */; }; + F78A144D256C3A6F8F6CCB64E35E869F /* scrypt-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 417BA17C9527B36A6953928718163ACE /* scrypt-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F854EACBF11549213B26B4748FBB94A0 /* Subtraction.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9B1DC98FA2ABF0645707ED4C6FF5D77 /* Subtraction.swift */; }; + F8977F910FD88CA3560E0435ACA41270 /* field_5x52.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C5F41A51FDAEBAF8F849026A9B09E2A /* field_5x52.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F95445AB786CF29CEA99E52C88BFE706 /* AES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32E6FCC003B1158AFE68C8101E9DC9B0 /* AES.swift */; }; + F9A83224C63AF5F18AED311461D71668 /* BigInt-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A105001ACFD1F5004F2225CB06D4CCA /* BigInt-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FA47C2FD4BE0AEE4BBB8F078CEDED890 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = D62515D5BE9A59FE5C9041B4EBE9CA58 /* Cipher.swift */; }; + FB3B4D902E0078517C1A8D1A64E0D405 /* PMKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 948894E3D7054F9BEAA31B5D6061F696 /* PMKFoundation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB5385DF7643AC5570E694BBA6406E0B /* scalar_low_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = A051E774D4D49F8D0B94D9E529E3A524 /* scalar_low_impl.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB5F656078445F49C1D464089236D551 /* NSNotificationCenter+AnyPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 59463535BD4D6DAD08D36EAF4421D11D /* NSNotificationCenter+AnyPromise.m */; }; + FC4AD96F8C8D695E021F598BEAB3A13D /* EthereumAddress-macOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AB171D72BF347C5F7A067C2AAB5384 /* EthereumAddress-macOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FC76FBD9E6420F2FD85F7F5EC55B9A31 /* secp256k1.h in Headers */ = {isa = PBXBuildFile; fileRef = D318DFC773B02CFC92B543471C937BA7 /* secp256k1.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FCA65EE46FA16DBEA0AD94E3C1C2FD03 /* Guarantee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EFC88D3858F1B2D4952BAA697C360D3 /* Guarantee.swift */; }; + FD6E4E6D2515323B98F8499CAF7D8486 /* ZeroPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E02047F0F6A6150C26B56EEF63F55B /* ZeroPadding.swift */; }; + FE52A2BA42E76A122211A8115915233D /* Pods-web3swift-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F688145BCFE1FB8B76299CC261A05E /* Pods-web3swift-iOS-dummy.m */; }; + FEBCBEDE2597673C7D802896774CDCBD /* Result-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A844BDD60081AA12674BC4FC33E5560 /* Result-iOS-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF7A4D23C449D4BB4A93095BB9F4ECA5 /* when.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4426237EBEE47CAC169D6291F77423 /* when.swift */; }; + FF83256DE909E2F86AEBBF4E51F42EF0 /* Collection+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67F74D8CA41DCC5236159301ED92764C /* Collection+Extension.swift */; }; + FFD1323B3E415476F73D432694CC4D35 /* Rabbit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 129427E2D354B71D619F0DAC197039BD /* Rabbit.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 13C00F95FF864E5C7AAC5B0A5CB8498F /* PBXContainerItemProxy */ = { + 06FAFF995DCDF3CCF5C19865E9FCA57F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E615C0628D54019CCEE5C0CC80B55529; - remoteInfo = "CryptoSwift-iOS"; + remoteGlobalIDString = AF9F48E6961507C0E2FD7A3CDBC652DA; + remoteInfo = "BigInt-iOS"; }; - 1D311CE48C7A73E73FD12595C75A78C9 /* PBXContainerItemProxy */ = { + 099BB689D5DBD5D5DEBA336FBD217742 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = C87C2E6C438181FF7B92161BFC2DFBEB; + remoteGlobalIDString = 60BB8021A6290DE4F66E9D4A96906F3C; remoteInfo = "Result-macOS"; }; + 1074B809BD71CC2DC821BC5E173A4740 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = F8C504FC3CE2FB81EF2C3E4175B28B3D; + remoteInfo = "EthereumAddress-iOS"; + }; + 12BDC3CC8385F7A17B4C9A4084570897 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = FFBF3D20256EEEEE218C227988266104; + remoteInfo = "EthereumABI-iOS"; + }; 1E5017C3A1512E67B0318DD1DACDE515 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 82C35D316B5E8115E43ACCFE4E50137C; + remoteGlobalIDString = 023FD8884DE6975FECF83E672E5A51B6; remoteInfo = "Pods-web3swift-macOS"; }; + 20A317B02DEAB0C5E12252BAD3678AC3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = E615C0628D54019CCEE5C0CC80B55529; + remoteInfo = "CryptoSwift-iOS"; + }; + 23B4CA009D06E1EB2F03415680002335 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9646F4C6B5DB5298F5EEE5871120A244; + remoteInfo = "BigInt-macOS"; + }; + 283B81AF6A42B35D635E192D621E2B56 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3B79F6DB09B597AAE9D3EB939DA463D8; + remoteInfo = "SipHash-iOS"; + }; 284C9AFC38A225A506CB24973AEFB321 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; @@ -493,675 +550,731 @@ remoteGlobalIDString = 4FCBE56BC5E931FDC43C642250037C1F; remoteInfo = "SipHash-macOS"; }; - 2A170694DEDAF59456D7141DB9F7FACC /* PBXContainerItemProxy */ = { + 2D8C658A18F2B96B45403A04ECD943E9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 1168313AEC7524AEDFC1224C6D3C6E44; - remoteInfo = "EthereumAddress-iOS"; + remoteGlobalIDString = 1084E340C76D167B42F96381D5AC59FB; + remoteInfo = "EthereumAddress-macOS"; }; 366CCE30759EB3C0FF8E45BE9572B007 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BAA7945626BCC2CCA0CD2C7A0AC13E79; + remoteGlobalIDString = 56C190CBC3444CE65376067572B13693; remoteInfo = "Pods-web3swift-iOS"; }; - 38BDFC13BA428BD451594A459B74A302 /* PBXContainerItemProxy */ = { + 36A6BC9A8529E6996209859ED7E7041A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 12455571B54E567146873FF705359CFE; - remoteInfo = "Result-iOS"; + remoteGlobalIDString = AF9F48E6961507C0E2FD7A3CDBC652DA; + remoteInfo = "BigInt-iOS"; }; - 78E3F5567AAF195D28B5DA37D51C8623 /* PBXContainerItemProxy */ = { + 381F95DA9E2FDB23DE4AB413195C40C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 94906F0C68B58FB4B40554812C3BBFD8; - remoteInfo = PromiseKit; + remoteGlobalIDString = 4FCBE56BC5E931FDC43C642250037C1F; + remoteInfo = "SipHash-macOS"; }; - 8022E9AB3C92BAD10B2AEFCE42C6EDA5 /* PBXContainerItemProxy */ = { + 42C05260B28DAAAD5E44B471A57BDE2A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 7BF3C926294C92422AFB78600D576975; - remoteInfo = "scrypt-macOS"; + remoteGlobalIDString = 78DC154308FD9CFC54ADA13FD1897A6B; + remoteInfo = "CryptoSwift-macOS"; }; - 819958A4438F4712BB2395ECD30B2C4D /* PBXContainerItemProxy */ = { + 48C230599D2897ADA99AF94AE1966B79 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 73527F6F8B0A792EA5FD7085DADC6B93; - remoteInfo = "SwiftRLP-macOS"; + remoteGlobalIDString = 064630A81A32C3F755213FAB5B3FAAAB; + remoteInfo = "SwiftRLP-iOS"; }; - 881B896164342E47B02F93B29ADA3355 /* PBXContainerItemProxy */ = { + 4BC1B5C55B9E19379BFD1419C6475244 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 4FCBE56BC5E931FDC43C642250037C1F; - remoteInfo = "SipHash-macOS"; + remoteGlobalIDString = 1084E340C76D167B42F96381D5AC59FB; + remoteInfo = "EthereumAddress-macOS"; }; - 97F0040393FC590BA7564498436EC95D /* PBXContainerItemProxy */ = { + 59F60AFE805CEBB2EDEC5D68F84B1576 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 1F803FF778771424C8085D9971D3840F; - remoteInfo = "SwiftRLP-iOS"; + remoteGlobalIDString = 78DC154308FD9CFC54ADA13FD1897A6B; + remoteInfo = "CryptoSwift-macOS"; }; - 995B8D8F764EF523079B88A06313F11D /* PBXContainerItemProxy */ = { + 5E5A5367425FAE2AC8C07569D7CBE881 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 9646F4C6B5DB5298F5EEE5871120A244; - remoteInfo = "BigInt-macOS"; + remoteGlobalIDString = E615C0628D54019CCEE5C0CC80B55529; + remoteInfo = "CryptoSwift-iOS"; }; - AC378E3E20AF5D424B6D68F67641CFC3 /* PBXContainerItemProxy */ = { + 61558A075BFFFBA7882CAEE8C5732ECE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 3B79F6DB09B597AAE9D3EB939DA463D8; - remoteInfo = "SipHash-iOS"; + remoteGlobalIDString = 75EC00B8FD54D720BB772CA16EEAE742; + remoteInfo = "EthereumABI-macOS"; }; - BB90BB48F65D5795C75190C5B68C55DA /* PBXContainerItemProxy */ = { + 629DA96E2410B6F480F103C731020B15 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 4C59270F810F2B1FEC2F3D5A77188907; + remoteGlobalIDString = F25097D79C7232475816DB85533AC607; remoteInfo = "secp256k1_swift-macOS"; }; - BE0F4DBA374559F8940C0B70384476BD /* PBXContainerItemProxy */ = { + 6AE3006AF993F15800127DD3F057F155 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 558049EB555978BC8947ECF2498E78D9; - remoteInfo = "PromiseKit.root-CorePromise-Foundation"; + remoteGlobalIDString = E615C0628D54019CCEE5C0CC80B55529; + remoteInfo = "CryptoSwift-iOS"; }; - C0F3CE7136EDD63588CA49A936A5759F /* PBXContainerItemProxy */ = { + 70F9AB5B3A118321E51F635B2BEE3CED /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 3B79F6DB09B597AAE9D3EB939DA463D8; - remoteInfo = "SipHash-iOS"; + remoteGlobalIDString = E615C0628D54019CCEE5C0CC80B55529; + remoteInfo = "CryptoSwift-iOS"; }; - CF619704DBA07523055F8D5648DDBAC5 /* PBXContainerItemProxy */ = { + 714B2335333EF3361207DF61B815EABB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = BB37143ACC20FC450C45EFD6C5660906; - remoteInfo = "scrypt-iOS"; + remoteGlobalIDString = 9646F4C6B5DB5298F5EEE5871120A244; + remoteInfo = "BigInt-macOS"; }; - D3EE8712BA96FE8983FC958E6574EDD5 /* PBXContainerItemProxy */ = { + 9619E33BB76CA82AF5BCFD855D8DE72E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 78DC154308FD9CFC54ADA13FD1897A6B; - remoteInfo = "CryptoSwift-macOS"; + remoteGlobalIDString = EE65EFBDF686C56EA74D41CCE0304FCC; + remoteInfo = "scrypt-macOS"; }; - E2571A8251835112EFDDA05DFB2E5DB7 /* PBXContainerItemProxy */ = { + A782764E5DFF6FDC6717BF4453214525 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = AF9F48E6961507C0E2FD7A3CDBC652DA; - remoteInfo = "BigInt-iOS"; + remoteGlobalIDString = 9646F4C6B5DB5298F5EEE5871120A244; + remoteInfo = "BigInt-macOS"; }; - E34A7F6994A6A82EB46702FB69724C37 /* PBXContainerItemProxy */ = { + AC378E3E20AF5D424B6D68F67641CFC3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 96225BBE1203595F4D0672A487BB9861; - remoteInfo = "secp256k1_swift-iOS"; + remoteGlobalIDString = 3B79F6DB09B597AAE9D3EB939DA463D8; + remoteInfo = "SipHash-iOS"; }; - E3B6F092EBFA691E0A430BD173868EE2 /* PBXContainerItemProxy */ = { + AD688405EBF3846C3A14C36C7F7467F8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 9646F4C6B5DB5298F5EEE5871120A244; - remoteInfo = "BigInt-macOS"; + remoteGlobalIDString = 8B46DCE922AD4DB52AB389148AB898AB; + remoteInfo = "scrypt-iOS"; }; - E4535F8068DAE0F786E0E402D0C94ABE /* PBXContainerItemProxy */ = { + B26EAE97BDAB5AF01C604365CB5F406C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = AF9F48E6961507C0E2FD7A3CDBC652DA; remoteInfo = "BigInt-iOS"; }; - E8B4498958DB7A8D6B92BD5B3EC5929C /* PBXContainerItemProxy */ = { + BBE7A89B2AC6FEAE944585350A21A6F6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 78DC154308FD9CFC54ADA13FD1897A6B; - remoteInfo = "CryptoSwift-macOS"; + remoteGlobalIDString = 16689698E943DBC08E5169468314C018; + remoteInfo = "Result-iOS"; }; - ED9EA08A437EDE511FD5DFDA715E57C7 /* PBXContainerItemProxy */ = { + C2A6BB71B66A804F107BDE387EED9DFB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E615C0628D54019CCEE5C0CC80B55529; - remoteInfo = "CryptoSwift-iOS"; + remoteGlobalIDString = E03BC878947EE75B154F4C52126FA465; + remoteInfo = "SwiftRLP-macOS"; }; - F6D2E7AC0942F82635983E5CBB33D700 /* PBXContainerItemProxy */ = { + D23A20FA7224632C3A5FE8EA34DEF1D4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E615C0628D54019CCEE5C0CC80B55529; - remoteInfo = "CryptoSwift-iOS"; + remoteGlobalIDString = EC4FD142A8187DC97F5C77E345493DC4; + remoteInfo = PromiseKit; + }; + DCA19D3862551FBDC00AAF6455703513 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = F8C504FC3CE2FB81EF2C3E4175B28B3D; + remoteInfo = "EthereumAddress-iOS"; }; - FA5D6DF00D850BA03F64F8B7F8E88175 /* PBXContainerItemProxy */ = { + E0E74766A66548F2C349A91FC003EF0A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; remoteGlobalIDString = 78DC154308FD9CFC54ADA13FD1897A6B; remoteInfo = "CryptoSwift-macOS"; }; - FC1CF70CADD772EA1F635C39F8E9A792 /* PBXContainerItemProxy */ = { + E3D60F25AD4AFCD3E199C418A6BEC4CB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = F5120265F2BDEB78BE6300C2AF965614; - remoteInfo = "EthereumAddress-macOS"; + remoteGlobalIDString = 39C6DF22D4F83A78CB7F52D86381D937; + remoteInfo = "secp256k1_swift-iOS"; + }; + EDCBD08F51F8B9B91035148948A48489 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 78DC154308FD9CFC54ADA13FD1897A6B; + remoteInfo = "CryptoSwift-macOS"; + }; + FE86C0598E860121877FB385FC2747CE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 02DC76A9AFBA2BA6CA9EBA39CCD34BCC; + remoteInfo = "PromiseKit.root-CorePromise-Foundation"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 01271B2BB62FE2D72466A630AC9D1BE8 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; - 02516902C16D7E925BA5D0CD9531308D /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; - 0295AAB9A4AEF4BACC811B917B2F75DE /* Result-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-iOS-prefix.pch"; sourceTree = ""; }; - 03321ECEB201CDE70DA4F88EE48E2044 /* Salsa.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Salsa.swift; path = scrypt/scrypt/Salsa.swift; sourceTree = ""; }; - 03FE099622DA426E4CBDFEB30B374591 /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; + 003EF4269A56F0C44E64E737009329A6 /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = Classes/secp256k1/src/util.h; sourceTree = ""; }; + 00E773D6D25B2A450D593D189B85B7DA /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; + 01B9E8C5A331C30CF0ACEF7187948418 /* SipHash-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-iOS-prefix.pch"; sourceTree = ""; }; + 03C5B3B2079547713108CA0A75C2D683 /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; 042CC2D185140E7D725D22562A3E307F /* Pods-web3swift-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-iOS.debug.xcconfig"; sourceTree = ""; }; - 049ABCA847872C85F1B4A543A069DB7F /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; - 0554DC016A3872F60738FE5C366CAF31 /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; - 062A95E74B96944BC0E3A674E72AE85E /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; - 07CB743A805B99BE84DD49F8D999BF5C /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; - 08390C702E93A122CAC37BDF6A07A98C /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; - 08CA1065DA6D886DAD8978D531C6C531 /* PromiseKit.root-CorePromise-Foundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PromiseKit.root-CorePromise-Foundation-dummy.m"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-dummy.m"; sourceTree = ""; }; - 09536C3B22879E31B5C0B3426E2FEBCA /* CryptoSwift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-iOS-dummy.m"; sourceTree = ""; }; - 09601767E682E0D86F15EF42B2DCAD46 /* CryptoSwift-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-iOS-prefix.pch"; sourceTree = ""; }; - 0A734506E75FE208AFB8DA726262FFEC /* EthereumAddress-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumAddress-macOS-umbrella.h"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h"; sourceTree = ""; }; - 0B152212D05CB08C4E0B61D8CDFF12C9 /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; - 0C57A83FBD44C769166BCCC5CD45BD3F /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; - 0D0947D47B9CECD59BC73EAC48D4ED27 /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; - 0D2BE96DBE00949D2B047DC83A759B4C /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; + 04464806E7EED788DFE4F8D62793DD29 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; + 04B39BEAD1520A1D6783A85DE2C51340 /* BigInt-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BigInt-macOS-prefix.pch"; path = "../BigInt-macOS/BigInt-macOS-prefix.pch"; sourceTree = ""; }; + 052A5D977253AD46619C79759D031E6B /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; + 0536186C77B05CB18765BFD4670AC3D1 /* Result-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Result-macOS-dummy.m"; path = "../Result-macOS/Result-macOS-dummy.m"; sourceTree = ""; }; + 05CC03039B7AACA3DE3D601125B19CC6 /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; + 05D37539C41BE79893FEDECCB70FC25B /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; + 05DB571F7562C6E5DAC821BF33DF2ACE /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; + 07853D5BF50E26B878B7B1D18CF18F06 /* scrypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scrypt.h; path = scrypt/scrypt.h; sourceTree = ""; }; + 0875934C7BD4393C0A91DFA3CF1FBBED /* libResult-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libResult-iOS.a"; path = "libResult-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 08A99F6D5C3E452229D15E3E8C1660F3 /* BigInt-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "BigInt-macOS.xcconfig"; path = "../BigInt-macOS/BigInt-macOS.xcconfig"; sourceTree = ""; }; + 0930D7CD22CBEC2C752C14A123807624 /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; + 0A518C6FBE9C3B3FBF40D4CDCE3BA5A7 /* PromiseKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-prefix.pch"; sourceTree = ""; }; + 0A85805FE098BD65AFD79ABDC5A9DDF7 /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; + 0C79BC89B6EB9504D07FA8AC80365541 /* Result-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-iOS-prefix.pch"; sourceTree = ""; }; 0D88C9D56C3885598E20D9718F3B8F16 /* Pods-web3swift-macOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-macOS_Tests.release.xcconfig"; sourceTree = ""; }; - 0DE0997E93980E728205BE4BF37B5FBC /* scrypt-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "scrypt-iOS.xcconfig"; sourceTree = ""; }; - 0E67F7B0700CACBB7DFD27A88EFF75C2 /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; - 0EA0E0A67D5738512E4618E1AEDA5E3E /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; - 0EC0DBFB306B96AAE65A02CB825C4F0B /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; - 0F02A89B4F4807025E1CB0C26D63CD65 /* SwiftRLP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftRLP.h; path = SwiftRLP/SwiftRLP.h; sourceTree = ""; }; - 10E2FD109C104BBFF96C8BEAE5D93A6E /* libPromiseKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPromiseKit.a; path = libPromiseKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 121546801BC1F73B1E78D3BA38876A8C /* EthereumAddress-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumAddress-macOS-prefix.pch"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; sourceTree = ""; }; - 12838912E9C17379AEEDB5CEF54ED779 /* Result-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Result-iOS.modulemap"; sourceTree = ""; }; - 1412597E34EB8268006B0BCFF20BB89A /* secp256k1_swift-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "secp256k1_swift-iOS.xcconfig"; sourceTree = ""; }; - 14176496814CB0D56F198301D279FE65 /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; - 1422C640D1B145BC997D3E0A3FF10339 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = EthereumAddress/Classes/Extensions.swift; sourceTree = ""; }; - 145A69383BF153D7728F4793AB68C3C4 /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; - 15206D43EDA63AD479C638B175342338 /* Result-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Result-macOS.xcconfig"; path = "../Result-macOS/Result-macOS.xcconfig"; sourceTree = ""; }; - 1576E0C86B6BE13F5FB685E1357E71C3 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; - 17856FB7A41BDDB75285F531B03882F4 /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; - 17F353B4B162974207D9F48A62765D99 /* libscrypt-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libscrypt-iOS.a"; path = "libscrypt-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 19725B1F6B394E3B97BB387C7E4E4874 /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; - 1A86CAF979F3E970071A5FC47D9D7EAC /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; - 1BBCD0009252A5C66FFA6A2EDAE25173 /* secp256k1_swift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1_swift-macOS-umbrella.h"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h"; sourceTree = ""; }; + 0DA70B96E002212A3A39FC0943499DF6 /* Result-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Result-macOS-prefix.pch"; path = "../Result-macOS/Result-macOS-prefix.pch"; sourceTree = ""; }; + 0DCAB923DFB091E9F4A71F5FD29FEB40 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; + 0E7AC8F7B30BB74533D51C9515BE9258 /* SwiftRLP-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "SwiftRLP-macOS.modulemap"; path = "../SwiftRLP-macOS/SwiftRLP-macOS.modulemap"; sourceTree = ""; }; + 0FC232D3CEB1791A116CFCB46BCCE606 /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; + 0FFAEDF6DDF0B48C4B8E16F6F9C59A5F /* HKDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HKDF.swift; path = Sources/CryptoSwift/HKDF.swift; sourceTree = ""; }; + 11C198E371333D0B4E1F4A5B168C23C7 /* libPods-web3swift-macOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-macOS_Tests.a"; path = "libPods-web3swift-macOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1250F72B02037FC0CC2220F528B17381 /* SwiftRLP-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-iOS-umbrella.h"; sourceTree = ""; }; + 129427E2D354B71D619F0DAC197039BD /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; + 12EC94EA370709920BAE52B23A048E1A /* libsecp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "libsecp256k1-config.h"; path = "Classes/libsecp256k1-config.h"; sourceTree = ""; }; + 1341B693AC58D9D488B5E6F8B568097B /* CryptoSwift-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-iOS-prefix.pch"; sourceTree = ""; }; + 1592E519056BA4CA85F67406D0EC2ED4 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; + 15BED946B8A96EDBF82439D38353B748 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; + 16973E34A2E1AB31C96F6ECF88E284D7 /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; + 1782185CE59A4E4F74A5C0258C3B5F61 /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; + 1A0E65E61932B728FD97FB08D42B3EF6 /* libBigInt-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libBigInt-macOS.a"; path = "libBigInt-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1B8BA477868467E169FF27E9193A10DA /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; + 1C43D53E5A934E216CB1B7DD01DE877B /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; 1C8F00AC871FE0EC2FBD9A40F62753CD /* Pods-web3swift-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-macOS.debug.xcconfig"; sourceTree = ""; }; - 1D7B42933B2D81EED52706C7200A9732 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; - 1D8151AFF003D8A45F3E0F171019ED33 /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; - 1DF1726C7221A0B7805EF3E180CE8007 /* libPods-web3swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-macOS.a"; path = "libPods-web3swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 1EDD6BBAF4F23E405AA0CA5AA2837BD9 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; - 1F0D95EE88A2B8D781795DF20E0568F6 /* BlockMode.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockMode.swift; path = Sources/CryptoSwift/BlockMode/BlockMode.swift; sourceTree = ""; }; - 20BE3E8F811475C9F3E6350A16EF3D56 /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; - 20D278014F2D90DDD7C703E49B6727B7 /* libsecp256k1_swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libsecp256k1_swift-iOS.a"; path = "libsecp256k1_swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 23299E01AF2849576AF87D2A3EB8D494 /* EthereumAddress-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumAddress-iOS-dummy.m"; sourceTree = ""; }; - 234968A9A443A0E2CC4FBFBADB4CC6AB /* BigInt-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BigInt-macOS-dummy.m"; path = "../BigInt-macOS/BigInt-macOS-dummy.m"; sourceTree = ""; }; - 23EA6F524218763DB7E76A6E13387EAC /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; + 1E0CB4379D0092F51F5C1232B3CD03D3 /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; + 1E4426237EBEE47CAC169D6291F77423 /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; + 1F2F682F960F536C585085773DF5BBA1 /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; + 20C577019086BC2EE2D24C2E5BF910AF /* SipHash-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-iOS-dummy.m"; sourceTree = ""; }; + 20F31FF3FC3A98D10214EF6C7199FCB5 /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; + 21BC35B1C593381A32229DF8C9804F62 /* EthereumAddress-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "EthereumAddress-macOS.modulemap"; path = "../EthereumAddress-macOS/EthereumAddress-macOS.modulemap"; sourceTree = ""; }; + 21FCC5A27F315ACD9DBDF025F826D31F /* ABI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABI.swift; path = EthereumABI/Classes/ABI.swift; sourceTree = ""; }; + 224F4E958C4909EF47CB0A9F43F48030 /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; + 22C3F518991BE51FC595F8F3EF89345B /* EthereumABI-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumABI-macOS-prefix.pch"; path = "../EthereumABI-macOS/EthereumABI-macOS-prefix.pch"; sourceTree = ""; }; + 247DF1F9FE8902AA1A74867E7854662F /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; 24B5C2F89100EAE084E4AF83DDE6303D /* Pods-web3swift-iOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-iOS_Tests.debug.xcconfig"; sourceTree = ""; }; - 255F9BD02565315A20D36910794D0C10 /* libsecp256k1-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "libsecp256k1-config.h"; path = "Classes/libsecp256k1-config.h"; sourceTree = ""; }; - 25E9E042655265AEB9322FB01DD7A702 /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; + 2533EAF35B54AB44227FBC0A9BA7D19E /* scrypt-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "scrypt-iOS-dummy.m"; sourceTree = ""; }; + 258EB69CA13649BFEBC389916A418DAD /* OFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OFB.swift; path = Sources/CryptoSwift/BlockMode/OFB.swift; sourceTree = ""; }; 25F72E78DF48560F5D210E57844ACDED /* Pods-web3swift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swift-macOS-umbrella.h"; sourceTree = ""; }; - 26BEF092AF19B017CCEAC5BD6EDFADBC /* CryptoSwift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CryptoSwift-macOS-umbrella.h"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h"; sourceTree = ""; }; - 282DD884F817856F0FD3D38F8A4447B1 /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; - 28AB30A05C0D17ABF7D0DBC475F93C23 /* Result-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Result-macOS-dummy.m"; path = "../Result-macOS/Result-macOS-dummy.m"; sourceTree = ""; }; - 28D6357617301A15F1861ECE0B2D728E /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; - 28F6D61D90FB438C4CB2856FA258E35B /* EthereumAddress-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-iOS-prefix.pch"; sourceTree = ""; }; - 2AF08003360A2A59E3E059CBC5496E71 /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; - 2BC7202C545EAC46F224EE9AB6B1F0F7 /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = Classes/secp256k1/src/field.h; sourceTree = ""; }; - 2BE63C0E40FA294F6C512967711E56D9 /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; - 2D1D500C8CF88FC87FF7FA43DBC53611 /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; - 2D4F789F0354155D07BB3A1463344281 /* UIViewPropertyAnimator+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewPropertyAnimator+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift"; sourceTree = ""; }; - 310A618141B833B61214988468629C13 /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; - 3391B8242DCA2A16EB9DBB3FF0740ABC /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; - 3487EA794F9422FD28689C37156DD9FE /* Addition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Addition.swift; path = sources/Addition.swift; sourceTree = ""; }; - 358F7A798EA72C8BFA7C4AA5D7A22723 /* race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = race.m; path = Sources/race.m; sourceTree = ""; }; - 37B67C2B42A2EC2E689AE41636261351 /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; - 39A04A76F1A947E73DA6CC6FE271B82D /* CryptoSwift-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CryptoSwift-macOS-prefix.pch"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; sourceTree = ""; }; - 3ABE33C91D6B128E8B104ED3630B6ABB /* CBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBC.swift; path = Sources/CryptoSwift/BlockMode/CBC.swift; sourceTree = ""; }; - 3C9CD6920241610BE46DBB9D591849AD /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; - 3D2AD51705C652FD9094CEDC59DFB4FC /* SwiftRLP-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SwiftRLP-macOS.xcconfig"; path = "../SwiftRLP-macOS/SwiftRLP-macOS.xcconfig"; sourceTree = ""; }; - 3D6CFCC98052B542B8BD8050E0204993 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; - 3E5F93B0E61748A9D9906D3305A41EA8 /* ecmult_const.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const.h; path = Classes/secp256k1/src/ecmult_const.h; sourceTree = ""; }; - 3E75AF68728F33A9AC112BE223CA6718 /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; - 3E8DAE988F4403CE8B047E936F2B4AE1 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; - 3E8F4C6770C979220F90AD2CBA4EA3CE /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; + 2631D55D12027D3935D7B85C6A624F09 /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; + 2716312EADA930757B04015685EFD479 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = Classes/secp256k1/src/scalar.h; sourceTree = ""; }; + 279857EBC2D837FCAB656991E73C8C39 /* Result-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-iOS-dummy.m"; sourceTree = ""; }; + 27D0F7DCFEE54028674461B7456DB4EB /* libEthereumAddress-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumAddress-iOS.a"; path = "libEthereumAddress-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 27DE68FEECDD098908A9003BDA40307F /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; + 2A23509A1B4B9BA0141EB958C32816D4 /* libPods-web3swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-iOS.a"; path = "libPods-web3swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2A57E22BE5970C0F858EB10A32A3019D /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; + 2A844BDD60081AA12674BC4FC33E5560 /* Result-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-iOS-umbrella.h"; sourceTree = ""; }; + 2AD338DD23B43013308A65379BAEC16C /* BigInt-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "BigInt-iOS.xcconfig"; sourceTree = ""; }; + 2C1E2451F697C193D067734C4AF47482 /* EthereumABI-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "EthereumABI-iOS.modulemap"; sourceTree = ""; }; + 2C5F41A51FDAEBAF8F849026A9B09E2A /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; + 2D6E2E2ED41464CEB00832B492D67ECB /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; + 2F751DF027B3EC6771E69D0DF744E2F1 /* libSipHash-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSipHash-iOS.a"; path = "libSipHash-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 303781526174E2DFA273950F9C1AEDBC /* CryptoSwift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-iOS-umbrella.h"; sourceTree = ""; }; + 31BA61BBC2E9A900CDFD9106099E71AF /* CCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CCM.swift; path = Sources/CryptoSwift/BlockMode/CCM.swift; sourceTree = ""; }; + 32E6FCC003B1158AFE68C8101E9DC9B0 /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; + 330B8D8B0B8ACFFDF2B9292154D71642 /* secp256k1_swift-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "secp256k1_swift-macOS.xcconfig"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS.xcconfig"; sourceTree = ""; }; + 34A205CA261F59DB1AC7C1BE4E2ABE19 /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; + 3649CFBA1E54D6AD5C50879B03ED6866 /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; + 3654C41FDB74088592DA713158476E5B /* Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Padding.swift; path = Sources/CryptoSwift/Padding.swift; sourceTree = ""; }; + 36F3DF43B9422FD5916A6C75F9C68568 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; + 37A3BB2B9627AD42F4EC73AE040C9A18 /* Result-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Result-macOS-umbrella.h"; path = "../Result-macOS/Result-macOS-umbrella.h"; sourceTree = ""; }; + 37A42E23E411D520ADBF58299104A5E4 /* libSwiftRLP-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSwiftRLP-macOS.a"; path = "libSwiftRLP-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 38C29EC87775E098CCEE6CEB4ABA65AA /* EthereumAddress-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumAddress-iOS-dummy.m"; sourceTree = ""; }; + 38E248D955FFD067941A82DF6B7B3C4F /* BlockDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockDecryptor.swift; path = Sources/CryptoSwift/BlockDecryptor.swift; sourceTree = ""; }; + 398E3F38AA4E4F1F69F6BFA75A49E0C1 /* SipHash-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "SipHash-iOS.modulemap"; sourceTree = ""; }; + 3B9103BCEE6F57F21DC2CDA536BA8D0F /* CryptoSwift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CryptoSwift-macOS-dummy.m"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-dummy.m"; sourceTree = ""; }; + 3BA0B14650AEA1E6C77147E96770CB09 /* scrypt-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "scrypt-macOS.modulemap"; path = "../scrypt-macOS/scrypt-macOS.modulemap"; sourceTree = ""; }; + 3BDFDE509786CC72B0B5EBBB87F54C14 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; + 3C93F4B7E331943729BE3CFC4F439C2A /* ecmult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult.h; path = Classes/secp256k1/src/ecmult.h; sourceTree = ""; }; + 3DBE2043CF545B45F21A7018D7A70CBD /* PromiseKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = PromiseKit.modulemap; sourceTree = ""; }; + 3E1A2664214C7FF4C93A67058FDACDE9 /* SwiftRLP-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SwiftRLP-macOS-umbrella.h"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h"; sourceTree = ""; }; 3E91F337EA3979DB5DD84C325A340270 /* Pods-web3swift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-macOS-dummy.m"; sourceTree = ""; }; - 3ED02D5B7EB6BD54C515B4B06599DA5F /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = Classes/secp256k1/src/scratch.h; sourceTree = ""; }; - 3ED371C14676A66BA35BCF542FF8B548 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; - 40ABB4750B401A88B273D3B180C1FEC9 /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; - 41B019A1B56440DDAB3267B96FDBD576 /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; - 41F99637E28F2B9DC1A86CD6B490CE52 /* SwiftRLP-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SwiftRLP-macOS-dummy.m"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-dummy.m"; sourceTree = ""; }; - 41FAB135DE09D3F9136D834CBE3A558A /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = scrypt/scrypt/Scrypt.swift; sourceTree = ""; }; - 423E241FA5BBF42BFDDA5E6C6AD2DEB9 /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; - 42F14C976AD41B0817186FB67B3B349B /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; - 42F561AD37AE0579CA9921A14A3A0943 /* Result-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Result-macOS-prefix.pch"; path = "../Result-macOS/Result-macOS-prefix.pch"; sourceTree = ""; }; - 435339C16A1550DDCDCD1B4731E89DBD /* Result-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Result-iOS.xcconfig"; sourceTree = ""; }; - 43941A9CA2F209289C333306CBC5961F /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; - 441A9CACC96EB9A41D4ABF90FDFFD2C8 /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; - 453B783DD499D624880A972C2DC8C94A /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; - 48BBE301C7AC93BA32B43FDCAB55FF55 /* EthereumAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumAddress.h; path = EthereumAddress/EthereumAddress.h; sourceTree = ""; }; - 491E82F8B7D6BC0F752EEA10F629435A /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; - 49A1004ABA6FF6BBB692884F59131E13 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; - 49FA7F82B54CC7168B96069F53D66A28 /* RLP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RLP.swift; path = Classes/RLP.swift; sourceTree = ""; }; - 4A2766B8B12BFE63523151BC3F80CDF4 /* EthereumAddress-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-iOS-umbrella.h"; sourceTree = ""; }; + 3EB87A244E5248ADD8D124225B21323F /* PromiseKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PromiseKit.h; path = Sources/PromiseKit.h; sourceTree = ""; }; + 3EF69CEB8B2C8F6223E5A84FF9855D71 /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; + 3F1CF8D01D9020575F785235F3DA02E3 /* PromiseKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromiseKit.xcconfig; sourceTree = ""; }; + 3F4EAABE2F37A5C4CBF734D74EA94EBB /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; + 3F90DB66AA0BD6E09A8253873368008F /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; + 3F9EE37EACAF96F7344C1F0AEA46F02C /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; + 417BA17C9527B36A6953928718163ACE /* scrypt-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "scrypt-iOS-umbrella.h"; sourceTree = ""; }; + 420A1793DC6527296BC586472865C8C0 /* scrypt-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "scrypt-iOS.xcconfig"; sourceTree = ""; }; + 4249BBDEF2DD259919D48F146E985928 /* libBigInt-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libBigInt-iOS.a"; path = "libBigInt-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4289C87C5EC42792CDDDCFC5592AADF7 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; + 43C25934B3D3377624DF16153BF76578 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; + 44157DE064955C1C2DF424094F971C2C /* libPods-web3swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-macOS.a"; path = "libPods-web3swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 442D6200CC1781151499F7FAF44C0366 /* Cimpl.c */ = {isa = PBXFileReference; includeInIndex = 1; name = Cimpl.c; path = scrypt/Cimpl.c; sourceTree = ""; }; + 449887D7F7932CFAA2B3FAE0BEE1594B /* scratch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch.h; path = Classes/secp256k1/src/scratch.h; sourceTree = ""; }; + 452B760316F8326FC21782A105163581 /* PromiseKit.root-CorePromise-Foundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "PromiseKit.root-CorePromise-Foundation-dummy.m"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-dummy.m"; sourceTree = ""; }; + 45F5F772F0EEFC0C3E42DAF65DB4121F /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; + 4624EFF8C97C1CBAF2910297112CF9E8 /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; + 4638850DD91EB5F2EFCF18E99D4D87FA /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; + 4813C1A0F259481060973E85D757C6F8 /* libEthereumAddress-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumAddress-macOS.a"; path = "libEthereumAddress-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 48BA6005A2D0AC9C0B7C4A47958A6F80 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; + 48DE6A16D72E33E779AE2257CA5D34BC /* EthereumABI-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EthereumABI-iOS-dummy.m"; sourceTree = ""; }; + 48FCAFD34D22FB4A18FEF12007E2FAB3 /* SipHash-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-iOS-umbrella.h"; sourceTree = ""; }; + 49C5823B0C264F4AC2DF38C68F097FEA /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; + 49F74127A936A7C34D38E84140D1EFAC /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; 4A2E0AD738D348DDA03396C623D814CD /* Pods-web3swift-macOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-macOS-acknowledgements.plist"; sourceTree = ""; }; - 4BD790D4294FB459BB05017C05CA1F1E /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; - 4BF61EAD9C9EC96163CECACFBF3504C3 /* EthereumAddress-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EthereumAddress-macOS-dummy.m"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-dummy.m"; sourceTree = ""; }; - 4C332617281C7BEB03040C92EF610543 /* libsecp256k1_swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libsecp256k1_swift-macOS.a"; path = "libsecp256k1_swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4D5B77EB47B2435BCBF83C39D0D576F5 /* libCryptoSwift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCryptoSwift-macOS.a"; path = "libCryptoSwift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4E85EB665265A065E5D96BCE2B87008D /* SipHash-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SipHash-macOS-umbrella.h"; path = "../SipHash-macOS/SipHash-macOS-umbrella.h"; sourceTree = ""; }; - 4F8B31678A829B043331C94E279F1FD9 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; - 506B39E37C9D076FA278322A078D548D /* UIViewController+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.m"; sourceTree = ""; }; - 5116359962EA1905AC0EB7121E634D9F /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; - 51FC3239F6613D1D7AE1AAD0F3204A0F /* scrypt-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "scrypt-macOS-dummy.m"; path = "../scrypt-macOS/scrypt-macOS-dummy.m"; sourceTree = ""; }; - 52059A76F9DA89149396ABB84A8A5780 /* PromiseKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "PromiseKit-umbrella.h"; sourceTree = ""; }; + 4AA4C4E3B71B38DD9AC53FDE78CAE9EA /* PromiseKit.root-CorePromise-Foundation.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "PromiseKit.root-CorePromise-Foundation.xcconfig"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.xcconfig"; sourceTree = ""; }; + 4B737AB9139E0187239D966FFC143FB3 /* secp256k1_swift-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1_swift-macOS-prefix.pch"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; sourceTree = ""; }; + 4C1637249D7E9C69FBC55792F4BFF580 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; + 4D5996479C4CB892D1B062406C8C08F6 /* secp256k1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = secp256k1.swift; path = Classes/secp256k1.swift; sourceTree = ""; }; + 4FFFD5E940B31BAEC3CCFD05B093B6F8 /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; + 516F61020B364118837B9099CD918F5F /* secp256k1_ecdh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_ecdh.h; path = Classes/secp256k1/include/secp256k1_ecdh.h; sourceTree = ""; }; 522015696E45158812DD4C5CF37CD544 /* Pods-web3swift-macOS_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-macOS_Tests-dummy.m"; sourceTree = ""; }; - 5297103B37D2E5083D67ABE2C60CA382 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; - 52B35D82CEB3E05DB842B7FA66505116 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; - 531B65B7CD936ABCBE9D4C182A88CDF0 /* field_10x26.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26.h; path = Classes/secp256k1/src/field_10x26.h; sourceTree = ""; }; - 53C768170DFB632A3ADBD2A703116B8E /* libEthereumAddress-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumAddress-macOS.a"; path = "libEthereumAddress-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5447D2654ABD868EB73A2BF12AD74DE8 /* SwiftRLP-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SwiftRLP-macOS-umbrella.h"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h"; sourceTree = ""; }; + 522579B02AF58D183F2AC531E3F33572 /* EthereumABI-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "EthereumABI-iOS.xcconfig"; sourceTree = ""; }; + 5300C71B6A3AB50A1D7ED70A41FAAD6B /* field_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_impl.h; path = Classes/secp256k1/src/field_impl.h; sourceTree = ""; }; + 53A9CE7F7031C40517F85796D6BDEB9C /* Result-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "Result-macOS.modulemap"; path = "../Result-macOS/Result-macOS.modulemap"; sourceTree = ""; }; + 5430F65435F42C41489D6A5D36494E0B /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; 54DEB815C6A515714B4A838D414C3241 /* Pods-web3swift-macOS_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-macOS_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 5540F42E4F8BF99A1C7F95349EA8707D /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; - 5595E1873CFBC6061E8C6D86BFF12807 /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; - 55F115779D04B6641A1DB99D05887E03 /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; - 58D4D38A480BA09A08C8523AF72783C5 /* libSipHash-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSipHash-macOS.a"; path = "libSipHash-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 58F3E29F9DFEE63DA2847094AA590666 /* Multiplication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Multiplication.swift; path = sources/Multiplication.swift; sourceTree = ""; }; - 5C3CED0A47AF7E341A3EBD1849B12F6F /* EthereumAddress-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "EthereumAddress-macOS.modulemap"; path = "../EthereumAddress-macOS/EthereumAddress-macOS.modulemap"; sourceTree = ""; }; - 5CAF8471B488702419FE2C532D4D11EA /* secp256k1_swift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "secp256k1_swift-iOS.modulemap"; sourceTree = ""; }; - 5DFE72A11A0AF97FFCEBDF19EC395F74 /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; - 5ED58E829B835009D9DCD1D8B959FBBD /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; - 5EFE8BF6504756C13783E7D477894264 /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; - 6007139C44683BCB89A01696BBBD497F /* BigInt-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BigInt-macOS-prefix.pch"; path = "../BigInt-macOS/BigInt-macOS-prefix.pch"; sourceTree = ""; }; - 612CB1FE4A4EF26D20DC64543E17C82A /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; - 614D3F652018D0D4BB869BAEEC3BFA5D /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; - 632F66F6756738B3DBCD9FE0F29FD51D /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; - 635C328C2CAB4B34DEF69D8CFABA3AC1 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; - 639957AA1B177687176168DC8D443490 /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; - 63C148A221559836C278AFFB2F0C6D3D /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; - 656AF5A70C93A14D7EF9E1E97A73DA9F /* scrypt-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "scrypt-iOS-prefix.pch"; sourceTree = ""; }; - 6633CE6E0F4DA082E8A3374A723A4844 /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; - 666BE65938A502C928B35D6EB5CA9FDA /* libResult-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libResult-iOS.a"; path = "libResult-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 671394A1108646E9E210CF54FA2C814C /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; + 55609C780EA603377D9F33E7661A79BB /* scrypt-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "scrypt-macOS-umbrella.h"; path = "../scrypt-macOS/scrypt-macOS-umbrella.h"; sourceTree = ""; }; + 55D3724AA7B8C2CF221E72306FBDCBB5 /* libSwiftRLP-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSwiftRLP-iOS.a"; path = "libSwiftRLP-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 55D66ED5651595B335B313C540A13D8E /* SwiftRLP-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "SwiftRLP-iOS.modulemap"; sourceTree = ""; }; + 575A44CBD254AB2012072A25C3D25D19 /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; + 582D7324492EFDB22783F0B7B2FA6859 /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; + 58FEC74B279A9D31ADE339DE27E86FA9 /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; + 59463535BD4D6DAD08D36EAF4421D11D /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; + 5992F89681D6639D6E83FBDCE269A688 /* SipHash-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SipHash-macOS.xcconfig"; path = "../SipHash-macOS/SipHash-macOS.xcconfig"; sourceTree = ""; }; + 59AB171D72BF347C5F7A067C2AAB5384 /* EthereumAddress-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumAddress-macOS-umbrella.h"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h"; sourceTree = ""; }; + 5AEA4495CD1CD23847803E6F2009266F /* libResult-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libResult-macOS.a"; path = "libResult-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5B830B448B480E1AE7466CE0AB7565D1 /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; + 5BBEB708E926639930327B2FC6F3759D /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; + 5DC3FD3167A8763A6C85B62EFDA429D2 /* secp256k1_swift-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-iOS-prefix.pch"; sourceTree = ""; }; + 5E9C2CC8E90A38FD011723EB814A5A52 /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; + 60243E0B2E1CDFC9B6DF789487982447 /* lax_der_privatekey_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_privatekey_parsing.c; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.c; sourceTree = ""; }; + 61858AD8F2BC3FA5B6CE10752824FA45 /* libEthereumABI-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumABI-macOS.a"; path = "libEthereumABI-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6314619E8FCD5D07FBD2BA0BA5C58C15 /* ABIEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIEncoding.swift; path = EthereumABI/Classes/ABIEncoding.swift; sourceTree = ""; }; + 6351DFCD3C033CA154E8C9D3D8D38EFE /* CryptoSwift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "CryptoSwift-iOS.modulemap"; sourceTree = ""; }; + 63FD1428729C05C5A88BE98C12254ADA /* BufferStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BufferStorage.swift; path = scrypt/scrypt/BufferStorage.swift; sourceTree = ""; }; + 640D7C6CD155FDD858979BF3184F5A49 /* libPromiseKit.root-CorePromise-Foundation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPromiseKit.root-CorePromise-Foundation.a"; path = "libPromiseKit.root-CorePromise-Foundation.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 64748EC305E00E02356EB0F312458ADE /* CryptoSwift-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CryptoSwift-macOS-prefix.pch"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; sourceTree = ""; }; + 64CF8CD6E98A2DF32A9CBCF71E6AEFAB /* libsecp256k1_swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libsecp256k1_swift-iOS.a"; path = "libsecp256k1_swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 673FFC4D2B959AB8AEC35D646A85CDCD /* Pods-web3swift-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-iOS.release.xcconfig"; sourceTree = ""; }; - 678FC45FCDC1237D6344CFADDB22F228 /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; - 67F6E91C8B57C5F8E945603C7F3DB0F2 /* Result-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Result-macOS-umbrella.h"; path = "../Result-macOS/Result-macOS-umbrella.h"; sourceTree = ""; }; - 681146D3345FF5156D09E271666D5EA1 /* group_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group_impl.h; path = Classes/secp256k1/src/group_impl.h; sourceTree = ""; }; - 682A1BA8289C74E7B26FAAFA80540F57 /* BatchedCollection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BatchedCollection.swift; path = Sources/CryptoSwift/BatchedCollection.swift; sourceTree = ""; }; - 682CE9677672C1F944AA2896D3BD36FF /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; - 68CD2728F142362B577571D597A953D0 /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; - 6A0F097AEAD44F8F983B8D4F884FDE42 /* libSwiftRLP-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSwiftRLP-macOS.a"; path = "libSwiftRLP-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 67F74D8CA41DCC5236159301ED92764C /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; + 68D5DF1B1384D6392013199F71BACD06 /* String Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String Conversion.swift"; path = "sources/String Conversion.swift"; sourceTree = ""; }; + 6907C77858F6612BF4232E34D8D30C3F /* CryptoSwift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "CryptoSwift-iOS-dummy.m"; sourceTree = ""; }; + 6A105001ACFD1F5004F2225CB06D4CCA /* BigInt-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-iOS-umbrella.h"; sourceTree = ""; }; + 6BB6440618D1B0E87AE5AA65F64B69DD /* Result-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Result-iOS.modulemap"; sourceTree = ""; }; + 6C619FA5855429D15B556163471403E5 /* CompactMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CompactMap.swift; path = Sources/CryptoSwift/CompactMap.swift; sourceTree = ""; }; + 6D010E670FE8C5A9AAC9A8464ED42B3A /* ecmult_gen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen.h; path = Classes/secp256k1/src/ecmult_gen.h; sourceTree = ""; }; + 6D1B636300E29159DFA920C5BA2E5F7C /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = Classes/secp256k1/src/num.h; sourceTree = ""; }; 6D4A716592C208D7429CE19B82094FA8 /* Pods-web3swift-iOS_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-iOS_Tests-acknowledgements.plist"; sourceTree = ""; }; - 6E942712A2D0087AAF697A0E031459FE /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; - 71D09134607D15AB2D81F0CB08D3F055 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; - 73043D2C83B1F1E5EC8F0E15C2CFE5A5 /* Words and Bits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Words and Bits.swift"; path = "sources/Words and Bits.swift"; sourceTree = ""; }; - 7340338CDF774E91E0F647AB7EB91924 /* StreamEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamEncryptor.swift; path = Sources/CryptoSwift/StreamEncryptor.swift; sourceTree = ""; }; - 736C0CC7DF9261F7C240BF88F7D310AD /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; - 7388674CDE22815644490821F0CB757B /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; - 74111ED4B5372D2EE9A218621A18699C /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; - 74F90CB37B5FF688D45EE372C6FE875C /* Result-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-iOS-dummy.m"; sourceTree = ""; }; - 750CBC755AD04183E9D574E073F02223 /* SwiftRLP-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SwiftRLP-macOS-prefix.pch"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch"; sourceTree = ""; }; + 6DE5DD5643C155A18A460273094ACDA1 /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; + 6E13ACAF5A7893C3C300B8B880422662 /* ecdsa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa.h; path = Classes/secp256k1/src/ecdsa.h; sourceTree = ""; }; + 6E3077E6B0E7210AC2CB18E0691714F0 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = Classes/secp256k1/src/eckey.h; sourceTree = ""; }; + 6E4AA08906784FF9AA2B198938456276 /* ABIExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIExtensions.swift; path = EthereumABI/Classes/ABIExtensions.swift; sourceTree = ""; }; + 6E53BAD514C4F4E022EEBCEB1ABC3943 /* Authenticator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Authenticator.swift; path = Sources/CryptoSwift/Authenticator.swift; sourceTree = ""; }; + 6E6BBA6411A89BD966DF62BE90EE478C /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; + 6EABC2B68783D8B14904AB78123DF869 /* EthereumAddress-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumAddress-macOS-prefix.pch"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; sourceTree = ""; }; + 6EC6627D0179A3BE1D7BB58F2DBF51E7 /* ABIParameterTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIParameterTypes.swift; path = EthereumABI/Classes/ABIParameterTypes.swift; sourceTree = ""; }; + 6F068DD5C61D68DFAF437EAAC56F1139 /* EthereumABI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumABI.h; path = EthereumABI/EthereumABI.h; sourceTree = ""; }; + 6F0A15233EFEAA840C94D98DFD9C1F14 /* BigInt-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BigInt-macOS-umbrella.h"; path = "../BigInt-macOS/BigInt-macOS-umbrella.h"; sourceTree = ""; }; + 6F1D20DF17340D045A1FDC2D1D64449D /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; + 6F4B350BCCE6D995C937B1D56E4F9022 /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; + 6FE7344E86789EA2ACF6B000EE6E0275 /* firstly.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = firstly.swift; path = Sources/firstly.swift; sourceTree = ""; }; + 70E24C26EF4EF9C8244E7F94F175FD51 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Sources/Configuration.swift; sourceTree = ""; }; + 71C4ACD478692712EEF2FF8BB7F4A160 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; + 721ECA637BED3AE2394AA1573B89D998 /* Digest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Digest.swift; path = Sources/CryptoSwift/Digest.swift; sourceTree = ""; }; + 73A68F048F801AD8527F07F7706E57CE /* SwiftRLP-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftRLP-iOS-dummy.m"; sourceTree = ""; }; 753E3CD3CF2AA32CDB11305D429F3C96 /* Pods-web3swift-iOS_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-iOS_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 755E0B91B0984ADEF77E48E32C147276 /* Data Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data Conversion.swift"; path = "sources/Data Conversion.swift"; sourceTree = ""; }; - 7573EC5C506627456A38A22DC6C134BA /* libPods-web3swift-macOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-macOS_Tests.a"; path = "libPods-web3swift-macOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 75DE42DDF2D327BA352CD0F8C0DA4B0F /* libResult-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libResult-macOS.a"; path = "libResult-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7692AAEAD8E8FFF8D2E46B60CBA56CDA /* SipHash-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-iOS-umbrella.h"; sourceTree = ""; }; - 7695A9A41BFEEAD40C0235B913A07672 /* AnyPromise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyPromise.swift; path = Sources/AnyPromise.swift; sourceTree = ""; }; - 7739AC49E92EA0677899D077C015CE05 /* NSURLSession+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSURLSession+Promise.swift"; path = "Extensions/Foundation/Sources/NSURLSession+Promise.swift"; sourceTree = ""; }; - 77FB79008E5E4C52EE48B984D12A652E /* AES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.swift; path = Sources/CryptoSwift/AES.swift; sourceTree = ""; }; - 78AC661E237EC28BD38872134D7F7E2B /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; - 7953EE95375573E978E0FAC7F88260CF /* Shifts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Shifts.swift; path = sources/Shifts.swift; sourceTree = ""; }; + 7579B6CD74CBC80D0509F34F78A83B1D /* CryptoSwift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "CryptoSwift-macOS.modulemap"; path = "../CryptoSwift-macOS/CryptoSwift-macOS.modulemap"; sourceTree = ""; }; + 75D8491537B933BEB0BB26FA5415C295 /* afterlife.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = afterlife.swift; path = Extensions/Foundation/Sources/afterlife.swift; sourceTree = ""; }; + 76C5F543BD9B25774CA35CF7FA0546B3 /* EthereumAddress-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-iOS-umbrella.h"; sourceTree = ""; }; + 76F047FAB60C9A09C857EC109DAC9FC4 /* num_gmp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp.h; path = Classes/secp256k1/src/num_gmp.h; sourceTree = ""; }; + 79B85C952F225CDFB5B272237402E77E /* hang.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = hang.swift; path = Sources/hang.swift; sourceTree = ""; }; 79E925BEAA0533C58B6D9871B886DD8A /* Pods-web3swift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-web3swift-iOS.modulemap"; sourceTree = ""; }; - 7B67DD6B4751EC541A3D153113AFB1B1 /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; - 7CB204BDB01A5747B116731490529E2B /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumAddress.swift; path = EthereumAddress/Classes/EthereumAddress.swift; sourceTree = ""; }; - 7CC384B5F6C90CB968D0AB32162249B6 /* Updatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Updatable.swift; path = Sources/CryptoSwift/Updatable.swift; sourceTree = ""; }; - 7D903E031FC7FD31DA94E1EC68778019 /* lax_der_privatekey_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_privatekey_parsing.h; path = Classes/secp256k1/contrib/lax_der_privatekey_parsing.h; sourceTree = ""; }; - 7DE92E2A606B96369F79D742DFACB7C9 /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; - 7DF576FC1DAC9EC11DA44099F4F50AFE /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; + 7C5AAAD0BEA7AB575EE1203992B86F82 /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; + 7C70A16BA860E5B4A9A806F25EE3F472 /* CryptoSwift-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "CryptoSwift-macOS.xcconfig"; path = "../CryptoSwift-macOS/CryptoSwift-macOS.xcconfig"; sourceTree = ""; }; + 7DCC7CDEAA23666C0D7F819861149F89 /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; + 7E5CE0F5663064C7672E5299F1B3B7DF /* UInt16+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt16+Extension.swift"; path = "Sources/CryptoSwift/UInt16+Extension.swift"; sourceTree = ""; }; + 7E74F31CDCAA43E3665CAB99746882DD /* BigInt-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-iOS-dummy.m"; sourceTree = ""; }; 7E8C19543EF3AA4D9801DBE55E22E211 /* Pods-web3swift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-web3swift-iOS-umbrella.h"; sourceTree = ""; }; - 7EFDF78EEBE9836CDC5AE2FEEC50C17B /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; - 80353B76ABA10ED9D59C18FDA6A16285 /* basic-config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "basic-config.h"; path = "Classes/secp256k1/src/basic-config.h"; sourceTree = ""; }; - 809F44457475B204EE242D251FDF9E8E /* Comparable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Comparable.swift; path = sources/Comparable.swift; sourceTree = ""; }; - 80E74674EB94CDFBB8B77B11BACD6046 /* scrypt-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "scrypt-macOS.xcconfig"; path = "../scrypt-macOS/scrypt-macOS.xcconfig"; sourceTree = ""; }; - 81909D98916544A0C622EDB88411AE57 /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; - 82E0889BDE7E61BD4767DCF66AB18FF7 /* CryptoSwift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "CryptoSwift-iOS.modulemap"; sourceTree = ""; }; - 8354A9A75879DFCE10CDFCD8B4B76EF5 /* AEAD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEAD.swift; path = Sources/CryptoSwift/AEAD/AEAD.swift; sourceTree = ""; }; - 83818CBF92E26919EE29AD92612A44AF /* SwiftRLP-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "SwiftRLP-macOS.modulemap"; path = "../SwiftRLP-macOS/SwiftRLP-macOS.modulemap"; sourceTree = ""; }; - 840434A830881CF07FBDE172A20CDDDC /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; - 85BEAAA1888D13FCFC9F1C2AB3A7ABBD /* when.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = when.swift; path = Sources/when.swift; sourceTree = ""; }; - 860EF39282D8941084557A3DCC1D7DF3 /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; - 86800F1D45016DC59C9BE8B9ABF5B50F /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; - 86B004B7F6AC62E27D75D02978601A76 /* NSTask+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSTask+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.m"; sourceTree = ""; }; - 86B372DE536C71560B5E85E340F3F6C9 /* PromiseKit.root-CorePromise-Foundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PromiseKit.root-CorePromise-Foundation-prefix.pch"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch"; sourceTree = ""; }; - 8787D00BE428B5C383E25BF2ABB38CC4 /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; - 8823C42C614B0067E2C89A5AE71DA77D /* BigInt-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "BigInt-macOS.xcconfig"; path = "../BigInt-macOS/BigInt-macOS.xcconfig"; sourceTree = ""; }; - 89B539CEC7927EBE7BBF7262580A0E18 /* Exponentiation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Exponentiation.swift; path = sources/Exponentiation.swift; sourceTree = ""; }; - 8AF5980AB239F34C8CB958F30A518A0B /* BigInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigInt.swift; path = sources/BigInt.swift; sourceTree = ""; }; + 7FB5F00D821CDC9BDA7F7709F07DD0F3 /* after.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = after.m; path = Sources/after.m; sourceTree = ""; }; + 80ACF3AED1948ECBBAF9BEFFC3482423 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = EthereumAddress/Classes/Extensions.swift; sourceTree = ""; }; + 81392F0749049A8C999337DDA716A157 /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; + 81ECE7FE7C889AF9F1B739830D9A59B0 /* scalar_8x32_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32_impl.h; path = Classes/secp256k1/src/scalar_8x32_impl.h; sourceTree = ""; }; + 82CF9E45F65C5A3FF604607C66EAC29D /* EthereumAddress-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "EthereumAddress-macOS.xcconfig"; path = "../EthereumAddress-macOS/EthereumAddress-macOS.xcconfig"; sourceTree = ""; }; + 840549A6DE0F91C91EE1712E3C57D6ED /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; + 85342594A31BFFC584D4660A9041CF48 /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; + 857BD06ABAFBE1C5C176886E254BE8E6 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; + 85CA122AC057DBDA1FC65BCB8FC33684 /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; + 8600E5A6A0625E96185A2CB9DE5C8AF8 /* PromiseKit.root-CorePromise-Foundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "PromiseKit.root-CorePromise-Foundation.modulemap"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap"; sourceTree = ""; }; + 86A87591096A3CD9071AD2D94874973C /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; + 86CE3A28090BEEF1B09E865F4962D871 /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; + 874DB4C8A2FF4D5197C42063F7939C9A /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; + 89525730C7E22C66FB7ADAB11E2073A0 /* CryptoSwift-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CryptoSwift-iOS.xcconfig"; sourceTree = ""; }; + 89BECCA6149031B2659A0EECDCC2E4A5 /* Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptors.swift; path = Sources/CryptoSwift/Cryptors.swift; sourceTree = ""; }; + 89EE579B1A3A156C9DE84CC0E9CC7F51 /* CMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CMAC.swift; path = Sources/CryptoSwift/CMAC.swift; sourceTree = ""; }; + 8A3D345B7D38F0B4BAB39F24505D5E5E /* CTR.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CTR.swift; path = Sources/CryptoSwift/BlockMode/CTR.swift; sourceTree = ""; }; + 8AA60D2034DC22F7C907855DDB5ADAD9 /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/ecdh/main_impl.h; sourceTree = ""; }; 8B56F6A20A0CF698ECA0EDF6CF4CDD74 /* Pods-web3swift-iOS_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-iOS_Tests-dummy.m"; sourceTree = ""; }; - 8C3F64F8D233B557ADBCBAB5F8D81F1E /* dispatch_promise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = dispatch_promise.m; path = Sources/dispatch_promise.m; sourceTree = ""; }; - 8CC8A14105420D222F37BBB95BFBF1A3 /* secp256k1_swift-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "secp256k1_swift-macOS.xcconfig"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS.xcconfig"; sourceTree = ""; }; - 8EA80C3235171417958F658E327CCF8E /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = sources/Codable.swift; sourceTree = ""; }; - 8ED7C1CFBF67F4C0CD5645DF35F608F7 /* scrypt-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "scrypt-iOS.modulemap"; sourceTree = ""; }; - 8F6102F002EDC216C49666462EF952CA /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; - 906199A857C08F740EA182609488E191 /* Rabbit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Rabbit.swift; path = Sources/CryptoSwift/Rabbit.swift; sourceTree = ""; }; - 907E15C94AE5E8DC2C60CE2BFA69AB19 /* BigInt-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-iOS-prefix.pch"; sourceTree = ""; }; + 8C42ABDF3D43E8CFBE45DFA6DF97E084 /* Process+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Process+Promise.swift"; path = "Extensions/Foundation/Sources/Process+Promise.swift"; sourceTree = ""; }; + 8C5181B2E5F94EAFEF5F04D83E0FFD13 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; + 8E0D3EDB8E94AA59C54E4808C60A2744 /* when.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = when.m; path = Sources/when.m; sourceTree = ""; }; + 8E3F5E519E5ED0A4BAF423C7DBB12042 /* UIView+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.h"; sourceTree = ""; }; + 8E664638E84199C40F931B3593272F8D /* NSObject+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSObject+Promise.swift"; path = "Extensions/Foundation/Sources/NSObject+Promise.swift"; sourceTree = ""; }; 90B410829D6E70A45A22CC62F187A11B /* Pods-web3swift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-web3swift-macOS.modulemap"; sourceTree = ""; }; - 915D7A030D48CB0FE8360421BAB29B5B /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; - 919A091F1E72F11C9C10844CC5454B2F /* SipHash-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "SipHash-macOS.modulemap"; path = "../SipHash-macOS/SipHash-macOS.modulemap"; sourceTree = ""; }; - 93264D7DC7DF888A41AF35694C9CBF60 /* BufferStorage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BufferStorage.swift; path = scrypt/scrypt/BufferStorage.swift; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 93A5B46AC7CC995589CAA3D991DC1B29 /* scratch_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scratch_impl.h; path = Classes/secp256k1/src/scratch_impl.h; sourceTree = ""; }; - 9411AC5861B33542BF71A1EED7E49FC4 /* scrypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scrypt.h; path = scrypt/scrypt.h; sourceTree = ""; }; - 944A08F05724AD8D1EC4F7FF0D09BFE6 /* scalar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar.h; path = Classes/secp256k1/src/scalar.h; sourceTree = ""; }; + 91BAFA9B3EE9063DDE5057E56DC627DC /* BigInt-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "BigInt-iOS.modulemap"; sourceTree = ""; }; + 92641023C5257B4110F73449FAC652E7 /* PMKUIKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKUIKit.h; path = Extensions/UIKit/Sources/PMKUIKit.h; sourceTree = ""; }; + 92C1E2F71DB75395E28DC3213425381D /* Bit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Bit.swift; path = Sources/CryptoSwift/Bit.swift; sourceTree = ""; }; + 92CB38F782D33EF495F861851E047FA9 /* SipHash-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SipHash-iOS.xcconfig"; sourceTree = ""; }; + 93EB1CF4FDC03241B81C3C3B6F58B9E0 /* Square Root.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Square Root.swift"; path = "sources/Square Root.swift"; sourceTree = ""; }; + 948894E3D7054F9BEAA31B5D6061F696 /* PMKFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PMKFoundation.h; path = Extensions/Foundation/Sources/PMKFoundation.h; sourceTree = ""; }; 95C397E16B314F921F7784F00C8F183B /* Pods-web3swift-iOS-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-iOS-acknowledgements.plist"; sourceTree = ""; }; - 95C8DD41F37C777526C9EA621C9213C9 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; - 95F76B715633F358CA7525D8C17738C9 /* GCM.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCM.swift; path = Sources/CryptoSwift/BlockMode/GCM.swift; sourceTree = ""; }; - 97504B2FA23741AEEDD649E58BF39870 /* libEthereumAddress-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumAddress-iOS.a"; path = "libEthereumAddress-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 9787E8C8BA8DAE16D659DA569EECED22 /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; - 9821B82F2A2D9E9E0A740B6B4B38A6AB /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; - 982B03AB9D403479BF865D7C3A5B2D4F /* Thenable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Thenable.swift; path = Sources/Thenable.swift; sourceTree = ""; }; - 98A9FC519C49C693637C4BC5D0DD6EB7 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; - 98C48C6F1DCE55E9EE6040D50626EF16 /* ECB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ECB.swift; path = Sources/CryptoSwift/BlockMode/ECB.swift; sourceTree = ""; }; - 9B7B36B7C3689A1ED9FBF4095AF74840 /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; - 9BFCCF45D62D69A50F9ED16BCE93C54A /* SHA2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA2.swift; path = Sources/CryptoSwift/SHA2.swift; sourceTree = ""; }; - 9D1AB32F0AE7B734159BB1FBAF7F5078 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = Classes/secp256k1/src/hash.h; sourceTree = ""; }; - 9D5F98CA61161B592980B259143F48F5 /* Floating Point Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Floating Point Conversion.swift"; path = "sources/Floating Point Conversion.swift"; sourceTree = ""; }; - 9E8B25F37CB474A2BE03252DDC5BA0BE /* CryptoSwift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "CryptoSwift-macOS.modulemap"; path = "../CryptoSwift-macOS/CryptoSwift-macOS.modulemap"; sourceTree = ""; }; - 9F576E04543F9CA8FD11EFA190633C0F /* StreamDecryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StreamDecryptor.swift; path = Sources/CryptoSwift/StreamDecryptor.swift; sourceTree = ""; }; - A0347CA8676D7E491A4DA559FB78007F /* SipHash-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SipHash-iOS.xcconfig"; sourceTree = ""; }; - A09088A41F90C0893A27DEF1C26D11AB /* libPromiseKit.root-CorePromise-Foundation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPromiseKit.root-CorePromise-Foundation.a"; path = "libPromiseKit.root-CorePromise-Foundation.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - A0CE29B48517362C21FF1B3F9DCB7619 /* scrypt-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "scrypt-macOS.modulemap"; path = "../scrypt-macOS/scrypt-macOS.modulemap"; sourceTree = ""; }; - A2A0CFEEC4EEE7DD9F58B6A45DE63C89 /* BigInt-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "BigInt-iOS.xcconfig"; sourceTree = ""; }; - A516C73CD574B0D6BA84C38BB55FBD2D /* BigInt-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BigInt-iOS-dummy.m"; sourceTree = ""; }; + 96C4685C831E862AD0F75DC78A3A5B61 /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; + 972E60F406627ED35849A8F617B3ECBD /* BigInt-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-iOS-prefix.pch"; sourceTree = ""; }; + 9760F737EE5BDAD80F6E6DDA26EE421C /* secp256k1_swift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "secp256k1_swift-macOS.modulemap"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap"; sourceTree = ""; }; + 98229C7D8E3906BD4C8DCD833704588C /* EthereumABI-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumABI-iOS-umbrella.h"; sourceTree = ""; }; + 982E6E4B839762B67F92588D34990052 /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; + 9883FCDA0DBDA6DCA8C5923AB1B3F45A /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; + 9B0A389595178AEDBFBB0B44514CEBD3 /* SipHash-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "SipHash-macOS.modulemap"; path = "../SipHash-macOS/SipHash-macOS.modulemap"; sourceTree = ""; }; + 9BF71F803FD375964F60D0271834711E /* AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AnyPromise.h; path = Sources/AnyPromise.h; sourceTree = ""; }; + 9C056AE54C5A5C44A47093DCBA233F46 /* EthereumABI-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumABI-iOS-prefix.pch"; sourceTree = ""; }; + 9D6306B3BC57BAEB50815C5FBBFC8CB4 /* SwiftRLP-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SwiftRLP-iOS.xcconfig"; sourceTree = ""; }; + 9E3FCE1E29EDFA06494CDD00767685E3 /* secp256k1_swift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_swift-iOS-dummy.m"; sourceTree = ""; }; + 9E7C36E885EBC6AB812D67E4B28A9CE4 /* libPromiseKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPromiseKit.a; path = libPromiseKit.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9EFC88D3858F1B2D4952BAA697C360D3 /* Guarantee.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Guarantee.swift; path = Sources/Guarantee.swift; sourceTree = ""; }; + 9FB6255E4560252B9DC0BE760F34C261 /* field_5x52_int128_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_int128_impl.h; path = Classes/secp256k1/src/field_5x52_int128_impl.h; sourceTree = ""; }; + A051E774D4D49F8D0B94D9E529E3A524 /* scalar_low_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low_impl.h; path = Classes/secp256k1/src/scalar_low_impl.h; sourceTree = ""; }; + A1687163A14D55D2EF896A97CD937491 /* hash_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash_impl.h; path = Classes/secp256k1/src/hash_impl.h; sourceTree = ""; }; + A1C101B8D6CF3BE7D5E588469BA4647B /* libscrypt-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libscrypt-macOS.a"; path = "libscrypt-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A31357292CDC03F5F3AEA4C1065BCDBF /* PBKDF1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF1.swift; path = Sources/CryptoSwift/PKCS/PBKDF1.swift; sourceTree = ""; }; + A330934D98A54C2602C42AF53B6E728E /* secp256k1_swift-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "secp256k1_swift-iOS.modulemap"; sourceTree = ""; }; + A3B7939D27D85A4C92DE2CD6D6C8E4EB /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; + A44AEA30AD48DB0294CA791DF2D0996B /* SipHash-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SipHash-macOS-umbrella.h"; path = "../SipHash-macOS/SipHash-macOS-umbrella.h"; sourceTree = ""; }; A5D9B32B104EA0A137D78B89D4D19D40 /* Pods-web3swift-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-macOS.release.xcconfig"; sourceTree = ""; }; - A7C42C91EB3AFB8674EB313560E4D9A8 /* EthereumAddress-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "EthereumAddress-iOS.modulemap"; sourceTree = ""; }; - A8865640371B98CE908E1A9A63C4B984 /* libCryptoSwift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCryptoSwift-iOS.a"; path = "libCryptoSwift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - AA1E87AB6BC235D2BF0B5287F5ADD105 /* EthereumAddress-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "EthereumAddress-macOS.xcconfig"; path = "../EthereumAddress-macOS/EthereumAddress-macOS.xcconfig"; sourceTree = ""; }; - AB4C3483E321FFBD045AB8FDC37CF8FA /* Array+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Array+Foundation.swift"; sourceTree = ""; }; - AC8ED311289866CD8ED870EF0C3C5CF3 /* libBigInt-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libBigInt-iOS.a"; path = "libBigInt-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - AD76DBA7730870FE66D77B1FC33E49E0 /* EthereumAddress-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "EthereumAddress-iOS.xcconfig"; sourceTree = ""; }; - ADC86A3FC56A1BAE1CA3490D081E47F3 /* Checksum.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Checksum.swift; path = Sources/CryptoSwift/Checksum.swift; sourceTree = ""; }; - AEA94352D4A3D0793D359A8C1CB50E4A /* main_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = main_impl.h; path = Classes/secp256k1/src/modules/recovery/main_impl.h; sourceTree = ""; }; - AEB5F00EFE918C35C091FD2FA7EACBF5 /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = Classes/secp256k1/src/group.h; sourceTree = ""; }; - AFD1168E711269E444E38FCAE0B8E5D9 /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; - AFD5882A04E0E27679FE6AAC8D9CA935 /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; - B177F4FEBB7F565C10EB6AABDF0CFB6C /* ecmult_const_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_const_impl.h; path = Classes/secp256k1/src/ecmult_const_impl.h; sourceTree = ""; }; - B2300EAF13A4BCCC04BBD2896E58716D /* BigInt-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "BigInt-macOS-umbrella.h"; path = "../BigInt-macOS/BigInt-macOS-umbrella.h"; sourceTree = ""; }; - B2E36C3B29C59A6C972DBF40C0EF93D5 /* ecdsa_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecdsa_impl.h; path = Classes/secp256k1/src/ecdsa_impl.h; sourceTree = ""; }; - B41DB7D6043E138E3CA32DF5B5194D9B /* Result-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "Result-macOS.modulemap"; path = "../Result-macOS/Result-macOS.modulemap"; sourceTree = ""; }; - B42A16A3F62043A99FFE8BDB6DB55ACB /* BigInt-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "BigInt-macOS.modulemap"; path = "../BigInt-macOS/BigInt-macOS.modulemap"; sourceTree = ""; }; - B5874904C32DED94E05CFD33023E2A19 /* SwiftRLP-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "SwiftRLP-iOS.modulemap"; sourceTree = ""; }; - B6112FCF75FBFC58E314A40652665F06 /* CryptoSwift-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "CryptoSwift-iOS.xcconfig"; sourceTree = ""; }; + A66575F75BF4F824ED46DE58E80DBCF7 /* PromiseKit.root-CorePromise-Foundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PromiseKit.root-CorePromise-Foundation-prefix.pch"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch"; sourceTree = ""; }; + A69680CF78C97C6DA250B325FFD04251 /* num_gmp_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_gmp_impl.h; path = Classes/secp256k1/src/num_gmp_impl.h; sourceTree = ""; }; + A6F7930650FD31ED4C95EAB12B5DA36F /* libCryptoSwift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCryptoSwift-iOS.a"; path = "libCryptoSwift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A7E446483743D975168011448637ED65 /* Primitive Types.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Primitive Types.swift"; path = "SipHash/Primitive Types.swift"; sourceTree = ""; }; + AB81B5AF636ED4D537F9A819FC7EB086 /* libSipHash-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSipHash-macOS.a"; path = "libSipHash-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + AB8B8D38C22598577C2C6551CEC1D7D0 /* EthereumAddress-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EthereumAddress-iOS-prefix.pch"; sourceTree = ""; }; + ABA2CC618DEF4A5E27ADED64FC6F96A5 /* scalar_low.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_low.h; path = Classes/secp256k1/src/scalar_low.h; sourceTree = ""; }; + AC8ABBCB10448DB88C79398E3A2D4417 /* libPods-web3swift-iOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-iOS_Tests.a"; path = "libPods-web3swift-iOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + AD5252D2AAE2CE2F1FFDA208DD0EFB4C /* UInt8+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt8+Extension.swift"; path = "Sources/CryptoSwift/UInt8+Extension.swift"; sourceTree = ""; }; + AD85FC46DA6BEAA980010B0C5F2BEED3 /* secp256k1.c */ = {isa = PBXFileReference; includeInIndex = 1; name = secp256k1.c; path = Classes/secp256k1/src/secp256k1.c; sourceTree = ""; }; + ADB4E2DA064200DDCD42C634CBC39977 /* field_5x52_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_impl.h; path = Classes/secp256k1/src/field_5x52_impl.h; sourceTree = ""; }; + AFAA80681A91BDC50EFC4294353BC5BA /* EthereumAddress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EthereumAddress.swift; path = EthereumAddress/Classes/EthereumAddress.swift; sourceTree = ""; }; + B2AE7121F5348D2FDCD4FD763A42FB0C /* NSURLSession+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURLSession+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.m"; sourceTree = ""; }; + B2B4899E422658B96ADF84B5239C418D /* ABIElements.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIElements.swift; path = EthereumABI/Classes/ABIElements.swift; sourceTree = ""; }; + B36AB396275697EEE1A5B13BA8A38FE3 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + B43B308FB300789356930844D6B81CF8 /* libsecp256k1_swift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libsecp256k1_swift-macOS.a"; path = "libsecp256k1_swift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B453F34A70203AF07F27C5AE1B2A0518 /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; + B468DE556C27A7C396C7B5ECC7DCF12E /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; + B48543DD38BB8E1AB0953C926DBA6C3F /* EthereumABI-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "EthereumABI-macOS.xcconfig"; path = "../EthereumABI-macOS/EthereumABI-macOS.xcconfig"; sourceTree = ""; }; + B4F5205894DF6FD73EF8CFA7609DA7D9 /* EthereumAddress-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EthereumAddress-macOS-dummy.m"; path = "../EthereumAddress-macOS/EthereumAddress-macOS-dummy.m"; sourceTree = ""; }; + B581065FDD5347ECD262D51E19274EB6 /* SipHash-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SipHash-macOS-prefix.pch"; path = "../SipHash-macOS/SipHash-macOS-prefix.pch"; sourceTree = ""; }; + B5A15DC755B12D8CCABB5B073B63856F /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Sources/CryptoSwift/Utils.swift; sourceTree = ""; }; + B5CBF6B2F887499D9631619E0D53008D /* BlockModeOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockModeOptions.swift; path = Sources/CryptoSwift/BlockMode/BlockModeOptions.swift; sourceTree = ""; }; + B621DCE8D325B673C6F300B7C2CD478B /* Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Promise.swift; path = Sources/Promise.swift; sourceTree = ""; }; + B6A0DADFE9809AB925F51CF651528B31 /* secp256k1_swift-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "secp256k1_swift-iOS.xcconfig"; sourceTree = ""; }; B7762E4245191B27674EB7EB82DCFFF1 /* Pods-web3swift-macOS_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-macOS_Tests.debug.xcconfig"; sourceTree = ""; }; - B7D5FD5536C89792D33769E9EDFA2DE8 /* CFB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CFB.swift; path = Sources/CryptoSwift/BlockMode/CFB.swift; sourceTree = ""; }; - B90CC3B80037E1B917D44513A07D0F6C /* BigInt-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BigInt-iOS-umbrella.h"; sourceTree = ""; }; - B9737D99B060F85A0A42A3A30335B14F /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; - BA200D6941B69ACC080DFB132BEFF422 /* num_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num_impl.h; path = Classes/secp256k1/src/num_impl.h; sourceTree = ""; }; - BC0E5DF49745E221D708C75FC2B03DC7 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; - BD14A2D2C9467CDF73E9EC39F2B97E62 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; - C05A424003F07748E6FAD6C9A57EEC23 /* BigInt-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "BigInt-iOS.modulemap"; sourceTree = ""; }; - C06A130503E666429FAF2F0101641EE7 /* secp256k1_swift-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1_swift-macOS-prefix.pch"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; sourceTree = ""; }; - C1BDC161E1A001A666E01A22455E14B5 /* AES.Cryptors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AES.Cryptors.swift; path = Sources/CryptoSwift/AES.Cryptors.swift; sourceTree = ""; }; - C21956F497DCFA1D883CAC00AF330784 /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; - C30494B6003825A7F5E0AE152495E590 /* Result-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-iOS-umbrella.h"; sourceTree = ""; }; - C31ABCFEE7AE67562C4CEBB66C7ED4D6 /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; - C47CE1FE3AEC19CC322E3E03530D21CD /* PCBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PCBC.swift; path = Sources/CryptoSwift/BlockMode/PCBC.swift; sourceTree = ""; }; - C4D487F201A77E03F9ADC03703A1A897 /* scrypt-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "scrypt-macOS-prefix.pch"; path = "../scrypt-macOS/scrypt-macOS-prefix.pch"; sourceTree = ""; }; - C57F4AE68BD0AD2EE5867A1CA2A12FCC /* SipHash-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SipHash-iOS-dummy.m"; sourceTree = ""; }; - C66DD520FECE2C1EE69FD6A9E23EA032 /* field_5x52.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52.h; path = Classes/secp256k1/src/field_5x52.h; sourceTree = ""; }; - C6D3FAB581FA1884038308CAAD092260 /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; - C717226571D60D3C7D8E15B4EDCC2E0F /* Collection+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Collection+Extension.swift"; path = "Sources/CryptoSwift/Collection+Extension.swift"; sourceTree = ""; }; - CA8015AE976B6601CC46035D043423E4 /* PromiseKit.root-CorePromise-Foundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "PromiseKit.root-CorePromise-Foundation.modulemap"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap"; sourceTree = ""; }; - CA97BDA6DF1DE11A96470DBF6FBD7C62 /* lax_der_parsing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lax_der_parsing.c; path = Classes/secp256k1/contrib/lax_der_parsing.c; sourceTree = ""; }; - CAC966A4293FF7689DD8A3B2877731F3 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; - CB0B1B247B08E4A2259D6D21ABAB0304 /* MD5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MD5.swift; path = Sources/CryptoSwift/MD5.swift; sourceTree = ""; }; - CB4E43C9EB1F78AD84B2314039898608 /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; - CC4C922D64767063B8D1A270D793373B /* BlockEncryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockEncryptor.swift; path = Sources/CryptoSwift/BlockEncryptor.swift; sourceTree = ""; }; - CD8AF5512E4598482BBFB4AD1BBF8064 /* PKCS7.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7.swift; path = Sources/CryptoSwift/PKCS/PKCS7.swift; sourceTree = ""; }; - CEA9421290E9294FEA25D9F6D3DDD24C /* Error.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Error.swift; path = Sources/Error.swift; sourceTree = ""; }; - D08241C8DB918E40A54A24828275D1C5 /* secp256k1_swift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-iOS-umbrella.h"; sourceTree = ""; }; - D13D2441410EEFA35EFB1823E238648A /* Cryptor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cryptor.swift; path = Sources/CryptoSwift/Cryptor.swift; sourceTree = ""; }; - D1FC3BBD92A37B6D1B9844791FDD7F86 /* Bitwise Ops.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Bitwise Ops.swift"; path = "sources/Bitwise Ops.swift"; sourceTree = ""; }; - D275AC61F658F73CFA8823434BCA3406 /* libPods-web3swift-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-iOS.a"; path = "libPods-web3swift-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - D286B6A0694F7E16078B8E7642CAE6FD /* Generics.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Generics.swift; path = Sources/CryptoSwift/Generics.swift; sourceTree = ""; }; - D292A1945503B3A000AC47BB73889903 /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; - D3E0EFDBB92A100EDE06E9D563ACF26E /* PKCS7Padding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS7Padding.swift; path = Sources/CryptoSwift/PKCS/PKCS7Padding.swift; sourceTree = ""; }; - D4294CA40AB575970217A19CAA320DC0 /* SwiftRLP-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftRLP-iOS-dummy.m"; sourceTree = ""; }; - D44F8F4C5F0D588B00DF17BC6518E5E0 /* Rabbit+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Rabbit+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Rabbit+Foundation.swift"; sourceTree = ""; }; - D57256C33A9C97F888F53A4FB7226146 /* UInt32+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt32+Extension.swift"; path = "Sources/CryptoSwift/UInt32+Extension.swift"; sourceTree = ""; }; - D6AB002E9D0C7DDC501F8673C4419E81 /* SipHash-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SipHash-macOS-prefix.pch"; path = "../SipHash-macOS/SipHash-macOS-prefix.pch"; sourceTree = ""; }; - D7009940ED0BFC1AA385433559754C27 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; - D8241FAE07EC659EA8EE9D035AB05377 /* scalar_4x64_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64_impl.h; path = Classes/secp256k1/src/scalar_4x64_impl.h; sourceTree = ""; }; - D8D1F94E4F2A45EC9F2154127E14D416 /* CryptoSwift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CryptoSwift-macOS-dummy.m"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-dummy.m"; sourceTree = ""; }; + B8172257020A0ACF61B9FA6264236BB6 /* NoPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoPadding.swift; path = Sources/CryptoSwift/NoPadding.swift; sourceTree = ""; }; + B88C2E2D4B6E99B918E6E13EDA4AA4A0 /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; + B8EBC720E3207E6F08965D7549AAFEC6 /* SwiftRLP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftRLP.h; path = SwiftRLP/SwiftRLP.h; sourceTree = ""; }; + B99B34DE805578131F4C0D5BFE276614 /* SipHashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHashable.swift; path = SipHash/SipHashable.swift; sourceTree = ""; }; + B9A05629BB0205300B694B527AD16E56 /* ecmult_gen_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_gen_impl.h; path = Classes/secp256k1/src/ecmult_gen_impl.h; sourceTree = ""; }; + B9D41263F9CA47F4367384A4B93B0DDA /* SwiftRLP-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SwiftRLP-macOS-prefix.pch"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch"; sourceTree = ""; }; + BA94DDC1F5525609A6FBA3EB53F09037 /* UInt64+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UInt64+Extension.swift"; path = "Sources/CryptoSwift/UInt64+Extension.swift"; sourceTree = ""; }; + BBE693F0F5E15CCA4AE9D51B9A369B70 /* Box.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Box.swift; path = Sources/Box.swift; sourceTree = ""; }; + BC2EE2AAFC0C186078B992C06F762E8D /* EthereumABI-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EthereumABI-macOS-umbrella.h"; path = "../EthereumABI-macOS/EthereumABI-macOS-umbrella.h"; sourceTree = ""; }; + BDD6E2BFD8131F124DFD131BA3C6D90E /* Data+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Extension.swift"; path = "Sources/CryptoSwift/Foundation/Data+Extension.swift"; sourceTree = ""; }; + BF0D275DC3AF207D0A444A28CB773AA5 /* SipHash-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SipHash-macOS-dummy.m"; path = "../SipHash-macOS/SipHash-macOS-dummy.m"; sourceTree = ""; }; + BF7E9A738647C81A92D68BCF6E734C6B /* libscrypt-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libscrypt-iOS.a"; path = "libscrypt-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + C04A3FB24C874F21628C4E7EA8B9693B /* scrypt-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "scrypt-macOS.xcconfig"; path = "../scrypt-macOS/scrypt-macOS.xcconfig"; sourceTree = ""; }; + C04C575F1277CF14F506F691F9C669FC /* Random.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Random.swift; path = sources/Random.swift; sourceTree = ""; }; + C0A59FDACCE16F10DF39EA55249CA72D /* String+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Extension.swift"; path = "Sources/CryptoSwift/String+Extension.swift"; sourceTree = ""; }; + C0E00E27FCA499ADCF69CE2096BEF87F /* EthereumAddress-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "EthereumAddress-iOS.xcconfig"; sourceTree = ""; }; + C14CAC03510776AA4E99EA944110DFD9 /* DigestType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DigestType.swift; path = Sources/CryptoSwift/DigestType.swift; sourceTree = ""; }; + C174EE4F0CE9A869F2E898CFF8A36484 /* Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Poly1305.swift; path = Sources/CryptoSwift/Poly1305.swift; sourceTree = ""; }; + C279D46376D66FBA43CD88224B12208B /* UIViewPropertyAnimator+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIViewPropertyAnimator+Promise.swift"; path = "Extensions/UIKit/Sources/UIViewPropertyAnimator+Promise.swift"; sourceTree = ""; }; + C2AB0FA3FFAC3EBB0D9CACE786196AC1 /* BigUInt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BigUInt.swift; path = sources/BigUInt.swift; sourceTree = ""; }; + C4AD5698CEACE94C1CAD1C0317E14905 /* EthereumAddress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EthereumAddress.h; path = EthereumAddress/EthereumAddress.h; sourceTree = ""; }; + C4D8573A6F8E2A67DD73406C5B3ECBB5 /* join.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = join.m; path = Sources/join.m; sourceTree = ""; }; + C4F1681CFA49EA17D6A73339A9C1A44A /* ABITypeParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABITypeParser.swift; path = EthereumABI/Classes/ABITypeParser.swift; sourceTree = ""; }; + C742D7E4D064B53F3E8BD2061CEB4650 /* EthereumABI-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EthereumABI-macOS-dummy.m"; path = "../EthereumABI-macOS/EthereumABI-macOS-dummy.m"; sourceTree = ""; }; + C799FC61BB50110B0EF9812635A7CF8F /* race.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = race.swift; path = Sources/race.swift; sourceTree = ""; }; + C9A9A0105BAE9E5BEE9ADD4B17A58DD8 /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; + CC444A933C805567A3F012F3CEE72D08 /* secp256k1_swift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "secp256k1_swift-macOS-dummy.m"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-dummy.m"; sourceTree = ""; }; + CDFC58447BAB63CE30E97C059F8345F5 /* SHA1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA1.swift; path = Sources/CryptoSwift/SHA1.swift; sourceTree = ""; }; + CF31935E8E71BE039924EA648A315B8D /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; + CF8798C22F31053E2D6EAF35C011146D /* BigInt-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "BigInt-macOS-dummy.m"; path = "../BigInt-macOS/BigInt-macOS-dummy.m"; sourceTree = ""; }; + CFAF7D663AA6B1D79BC3ED1927EEE23C /* EthereumABI-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "EthereumABI-macOS.modulemap"; path = "../EthereumABI-macOS/EthereumABI-macOS.modulemap"; sourceTree = ""; }; + D1EDEFFF233BE2D7F100C45B95D49336 /* secp256k1_swift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "secp256k1_swift-macOS-umbrella.h"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h"; sourceTree = ""; }; + D1FD34D2C5C93A170139E5994B7F5D8D /* Result-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Result-macOS.xcconfig"; path = "../Result-macOS/Result-macOS.xcconfig"; sourceTree = ""; }; + D2742B99A93E16E813DA0B71800AAA56 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; + D318DFC773B02CFC92B543471C937BA7 /* secp256k1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1.h; path = Classes/secp256k1/include/secp256k1.h; sourceTree = ""; }; + D357F7F273D21A9292686CC024C470A2 /* EthereumAddress-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "EthereumAddress-iOS.modulemap"; sourceTree = ""; }; + D4C96A2C2C3B9F8977AD08B6FBEDE552 /* field_5x52_asm_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_5x52_asm_impl.h; path = Classes/secp256k1/src/field_5x52_asm_impl.h; sourceTree = ""; }; + D62515D5BE9A59FE5C9041B4EBE9CA58 /* Cipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cipher.swift; path = Sources/CryptoSwift/Cipher.swift; sourceTree = ""; }; + D6E02047F0F6A6150C26B56EEF63F55B /* ZeroPadding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ZeroPadding.swift; path = Sources/CryptoSwift/ZeroPadding.swift; sourceTree = ""; }; + D895276EEA2D99E4EBF5B7FE4596872B /* NSNotificationCenter+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNotificationCenter+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.h"; sourceTree = ""; }; + D8EC3860FD1A1DA54C00A1498D1F1D9E /* CryptoSwift-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CryptoSwift-macOS-umbrella.h"; path = "../CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h"; sourceTree = ""; }; D8F688145BCFE1FB8B76299CC261A05E /* Pods-web3swift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-web3swift-iOS-dummy.m"; sourceTree = ""; }; - D9A9A6187028CC6AD623334BA2899FDE /* lax_der_parsing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lax_der_parsing.h; path = Classes/secp256k1/contrib/lax_der_parsing.h; sourceTree = ""; }; - D9C39AD388A82A531C338B26EE00DB9C /* NSNotificationCenter+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSNotificationCenter+Promise.swift"; path = "Extensions/Foundation/Sources/NSNotificationCenter+Promise.swift"; sourceTree = ""; }; - D9F882189D9E2CE8D7B7DC60BA0D5AF6 /* PBKDF2.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PBKDF2.swift; path = Sources/CryptoSwift/PKCS/PBKDF2.swift; sourceTree = ""; }; + D9883A143C0F77B2C2AF7E05BF805F25 /* AES+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "AES+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/AES+Foundation.swift"; sourceTree = ""; }; + D9B1DC98FA2ABF0645707ED4C6FF5D77 /* Subtraction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Subtraction.swift; path = sources/Subtraction.swift; sourceTree = ""; }; + D9B3D040637E19F37C0D7EB3C1A6A991 /* ABIParsing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIParsing.swift; path = EthereumABI/Classes/ABIParsing.swift; sourceTree = ""; }; + DA0CDB938B1F875D679C20362C887E17 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PromiseKit.root-CorePromise-Foundation-umbrella.h"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h"; sourceTree = ""; }; DA900039B5D199745C785144030E7BF9 /* Pods-web3swift-macOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-macOS-acknowledgements.markdown"; sourceTree = ""; }; - DAC89259204E1C6A18BCD0B7D08C104B /* RandomUInt64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomUInt64.swift; path = SipHash/RandomUInt64.swift; sourceTree = ""; }; + DAB3CD9F51BF3B4399B8EFC798B3F215 /* scrypt-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "scrypt-macOS-dummy.m"; path = "../scrypt-macOS/scrypt-macOS-dummy.m"; sourceTree = ""; }; + DAB40084682C161CD573420C8CCBFD4F /* NSTask+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSTask+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSTask+AnyPromise.h"; sourceTree = ""; }; DCCD9B75F811575B41254E2EACE6F115 /* Pods-web3swift-macOS_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-web3swift-macOS_Tests-acknowledgements.plist"; sourceTree = ""; }; - DF39D90FCE7EA42EF346003BA8EF96AF /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; - DF4D45B809574B97A749EADBA2EFAB02 /* CBCMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CBCMAC.swift; path = Sources/CryptoSwift/CBCMAC.swift; sourceTree = ""; }; - E022DA9B1DCAC9A88B18D90457826545 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; - E26835835263C5B5310353A54E6AA37E /* secp256k1_swift-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-iOS-prefix.pch"; sourceTree = ""; }; - E34CB7E7EAC6A9C0F75649FD43EC23F2 /* SipHash-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SipHash-macOS-dummy.m"; path = "../SipHash-macOS/SipHash-macOS-dummy.m"; sourceTree = ""; }; - E34EBA5D815562B6AEF202EEF42D4456 /* SwiftRLP-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "SwiftRLP-iOS.xcconfig"; sourceTree = ""; }; + DD5583797A4DF2B5636D036CDD472CD0 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; + DE9BBD4AE4B529B25E9E4FE7C8493181 /* after.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = after.swift; path = Sources/after.swift; sourceTree = ""; }; + DF72EE1FD04A0B49CB495E9980F6B8A9 /* AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AnyPromise.m; path = Sources/AnyPromise.m; sourceTree = ""; }; + E05424B44F6AFD35E237815F926FEEEB /* eckey_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey_impl.h; path = Classes/secp256k1/src/eckey_impl.h; sourceTree = ""; }; + E1999CB16AEF90FFCC762EC5BA3C538B /* scalar_4x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_4x64.h; path = Classes/secp256k1/src/scalar_4x64.h; sourceTree = ""; }; + E1D1692A2F154E2828E569943ED540D4 /* CipherModeWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CipherModeWorker.swift; path = Sources/CryptoSwift/BlockMode/CipherModeWorker.swift; sourceTree = ""; }; + E301EA386C90D10BDC9671660BE64E94 /* libCryptoSwift-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libCryptoSwift-macOS.a"; path = "libCryptoSwift-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; E3ADB0156604A4FD7CD47B25248088C2 /* Pods-web3swift-iOS_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-web3swift-iOS_Tests.release.xcconfig"; sourceTree = ""; }; - E65308F679CCAADBBF14F5DB4971CD21 /* Cimpl.c */ = {isa = PBXFileReference; includeInIndex = 1; name = Cimpl.c; path = scrypt/Cimpl.c; sourceTree = ""; }; - E79185DFEB64004C5523F725F3DC89B0 /* CryptoSwift-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "CryptoSwift-macOS.xcconfig"; path = "../CryptoSwift-macOS/CryptoSwift-macOS.xcconfig"; sourceTree = ""; }; - E7E7786C2EC1054AF047E2571B12205F /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = util.h; path = Classes/secp256k1/src/util.h; sourceTree = ""; }; - E81CDB6F58099035E4B22900B2E0740D /* Int+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Int+Extension.swift"; path = "Sources/CryptoSwift/Int+Extension.swift"; sourceTree = ""; }; - E8554570D5B7F10CEE0823FEB5B80B8D /* PromiseKit.root-CorePromise-Foundation.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "PromiseKit.root-CorePromise-Foundation.xcconfig"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.xcconfig"; sourceTree = ""; }; - E90C5426B3E9CBBCF9A8B6731836D354 /* UIView+Promise.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Promise.swift"; path = "Extensions/UIKit/Sources/UIView+Promise.swift"; sourceTree = ""; }; - EA3D1883E9BD064F4B9299B5825061E7 /* String+FoundationExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+FoundationExtension.swift"; path = "Sources/CryptoSwift/Foundation/String+FoundationExtension.swift"; sourceTree = ""; }; - EA5498F48A9D57F5578FB70B8544C14C /* secp256k1_swift-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "secp256k1_swift-macOS.modulemap"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap"; sourceTree = ""; }; - EB0E2A41F4665970E5124BB49E1B4D55 /* SipHash-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SipHash-iOS-prefix.pch"; sourceTree = ""; }; - EB3A44C98D1E93465803241C08887CDD /* num.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = num.h; path = Classes/secp256k1/src/num.h; sourceTree = ""; }; - EBD8BA7DCEF1E0FF9602E3F7BE941878 /* SipHasher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SipHasher.swift; path = SipHash/SipHasher.swift; sourceTree = ""; }; - EBF499BFE8AA65F3D4DF5B33BA57DC88 /* SwiftRLP-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-iOS-prefix.pch"; sourceTree = ""; }; - ED4A3438C4739D717703BAE1F7020595 /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; - EE67CD504E9DAC9DEA10C48C45C9E86B /* SipHash-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "SipHash-iOS.modulemap"; sourceTree = ""; }; - EE7F6BB14F19AC57CB96B2D06603E845 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; - EE8A73B5FBE9F82E34238AC840FC7331 /* eckey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = eckey.h; path = Classes/secp256k1/src/eckey.h; sourceTree = ""; }; - EF13999388904A7883CEA9B745018AAF /* libBigInt-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libBigInt-macOS.a"; path = "libBigInt-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - EFCBEFE9DA6D7F361DBB180EB84492D2 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; - F03C5346C1BA44E2325916DC9CE7B67B /* SwiftRLP-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-iOS-umbrella.h"; sourceTree = ""; }; - F0866AEDD788E4D8B51A31A2FB8C294F /* scrypt-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "scrypt-iOS-dummy.m"; sourceTree = ""; }; - F1899C74540C37F7D84214CF9F8AD010 /* NSNotificationCenter+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNotificationCenter+AnyPromise.m"; path = "Extensions/Foundation/Sources/NSNotificationCenter+AnyPromise.m"; sourceTree = ""; }; - F218E50D513522160983106C90B34FBE /* Prime Test.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Prime Test.swift"; path = "sources/Prime Test.swift"; sourceTree = ""; }; - F25882CAD0730D8C76F023B8C6FA287C /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; - F310D1B89DD81708BBBAED0DDF1B1168 /* CryptoSwift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "CryptoSwift-iOS-umbrella.h"; sourceTree = ""; }; - F32BA5AE4C0BE79090A24F00A3F35AFF /* Strideable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Strideable.swift; path = sources/Strideable.swift; sourceTree = ""; }; + E4992855757033544670BD38D4484C08 /* BlockCipher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BlockCipher.swift; path = Sources/CryptoSwift/BlockCipher.swift; sourceTree = ""; }; + E4D925299799CBB413016810B41EB65C /* SwiftRLP-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftRLP-iOS-prefix.pch"; sourceTree = ""; }; + E692601913F2AB7B6FE40D658E90C7B5 /* libEthereumABI-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libEthereumABI-iOS.a"; path = "libEthereumABI-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + E7A2D1D0062F350907B747E2A192E438 /* ABIDecoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ABIDecoding.swift; path = EthereumABI/Classes/ABIDecoding.swift; sourceTree = ""; }; + E94EF5B041036E702BC404B7118A8F9E /* UIViewController+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+AnyPromise.h"; path = "Extensions/UIKit/Sources/UIViewController+AnyPromise.h"; sourceTree = ""; }; + E9FDE304B6122EEAE8A1FC91742A69E6 /* scalar_8x32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_8x32.h; path = Classes/secp256k1/src/scalar_8x32.h; sourceTree = ""; }; + EA46482A8E14BD7641E6F29ED4F0A6B4 /* Integer Conversion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Integer Conversion.swift"; path = "sources/Integer Conversion.swift"; sourceTree = ""; }; + EA5B0A3B538B56303C1A061E2514BF07 /* hash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = hash.h; path = Classes/secp256k1/src/hash.h; sourceTree = ""; }; + EA975F09047F404D3183C92FCA1AD829 /* Hashable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Hashable.swift; path = sources/Hashable.swift; sourceTree = ""; }; + EABECB99AFE1BF549F3CEE90FBD45E98 /* BigInt-macOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; name = "BigInt-macOS.modulemap"; path = "../BigInt-macOS/BigInt-macOS.modulemap"; sourceTree = ""; }; + EB02248C062005D2F2620C9F81EC5ED4 /* GCD.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GCD.swift; path = sources/GCD.swift; sourceTree = ""; }; + EB74063F2F7DC76E97D34EC40D093C52 /* Salsa.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Salsa.swift; path = scrypt/scrypt/Salsa.swift; sourceTree = ""; }; + EB9D182FF8C8E692497E5FB1362B72E9 /* scrypt-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "scrypt-iOS.modulemap"; sourceTree = ""; }; + ED9E675BBBC75B01E6961483170B6E7F /* SwiftRLP-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SwiftRLP-macOS-dummy.m"; path = "../SwiftRLP-macOS/SwiftRLP-macOS-dummy.m"; sourceTree = ""; }; + EDB10140BE59AEE481C7E08EDC79971D /* Division.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Division.swift; path = sources/Division.swift; sourceTree = ""; }; + EDD86700A4552C712FAC348BB69DACD9 /* secp256k1_swift-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "secp256k1_swift-iOS-umbrella.h"; sourceTree = ""; }; + EE9322C93C8E91E65E7CE9C01CB02F70 /* UIView+AnyPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnyPromise.m"; path = "Extensions/UIKit/Sources/UIView+AnyPromise.m"; sourceTree = ""; }; + EF8327584F2BDEC27C9163F51CDEFB9E /* SwiftRLP-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SwiftRLP-macOS.xcconfig"; path = "../SwiftRLP-macOS/SwiftRLP-macOS.xcconfig"; sourceTree = ""; }; + F063BD5FB8772F058E36A1292962E899 /* Blowfish.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blowfish.swift; path = Sources/CryptoSwift/Blowfish.swift; sourceTree = ""; }; + F0EE85F786503354B347C059417EBAD2 /* CustomStringConvertible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomStringConvertible.swift; path = Sources/CustomStringConvertible.swift; sourceTree = ""; }; + F106BE3FED3F7D139A061124A9FF0251 /* Cimpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Cimpl.h; path = scrypt/Cimpl.h; sourceTree = ""; }; + F1C65F271D54976AEAF5B1CB4522A471 /* Scrypt.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Scrypt.swift; path = scrypt/scrypt/Scrypt.swift; sourceTree = ""; }; + F20EF6148A6A9322390DD71721B5343D /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; + F265D345562C600DE93E2D4EA31ED76D /* Resolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Resolver.swift; path = Sources/Resolver.swift; sourceTree = ""; }; + F269536FCE8F92893C1DF08F94904EBD /* NSURLSession+AnyPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURLSession+AnyPromise.h"; path = "Extensions/Foundation/Sources/NSURLSession+AnyPromise.h"; sourceTree = ""; }; + F3BCAAFEDF865BD7F6D1C36246EEE02A /* field.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field.h; path = Classes/secp256k1/src/field.h; sourceTree = ""; }; + F42AC215BDD4E22070E88E9837549CD1 /* RandomBytesSequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RandomBytesSequence.swift; path = Sources/CryptoSwift/RandomBytesSequence.swift; sourceTree = ""; }; F45D1FF9B0F3BEACB34D069C6F3561F8 /* Pods-web3swift-iOS-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-web3swift-iOS-acknowledgements.markdown"; sourceTree = ""; }; - F4BAF829379DA2971A7051C2EFAE15E8 /* SHA3.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SHA3.swift; path = Sources/CryptoSwift/SHA3.swift; sourceTree = ""; }; - F4F0BCD366AE2D51D6C35C2192996DBD /* libscrypt-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libscrypt-macOS.a"; path = "libscrypt-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - F5AA52D2E5DC0134CBA0CB3219327A53 /* secp256k1_recovery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = secp256k1_recovery.h; path = Classes/secp256k1/include/secp256k1_recovery.h; sourceTree = ""; }; - F60B61CB7F6EF778CD12A3622F779434 /* scrypt-macOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "scrypt-macOS-umbrella.h"; path = "../scrypt-macOS/scrypt-macOS-umbrella.h"; sourceTree = ""; }; - F8262D72960A17572931F11EC9520938 /* secp256k1.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = secp256k1.swift; path = Classes/secp256k1.swift; sourceTree = ""; }; - F84F141F7B6CD4974D2BDD888FE19496 /* scrypt-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "scrypt-iOS-umbrella.h"; sourceTree = ""; }; - F935D7D51C3BD0EEA31106E0BF9C3D13 /* Cimpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Cimpl.h; path = scrypt/Cimpl.h; sourceTree = ""; }; - F99CCF5FD903883FB3C524CA2FB43E2C /* libSipHash-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSipHash-iOS.a"; path = "libSipHash-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - F9C126B6106FA68D54B74E0DD65E0F8E /* SipHash-macOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "SipHash-macOS.xcconfig"; path = "../SipHash-macOS/SipHash-macOS.xcconfig"; sourceTree = ""; }; - F9D80D5C595654C7E23670359CB76D99 /* secp256k1_swift-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "secp256k1_swift-iOS-dummy.m"; sourceTree = ""; }; - FA1C0BFC1A022B5AD3BDFC8920FCFD74 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PromiseKit.root-CorePromise-Foundation-umbrella.h"; path = "../PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h"; sourceTree = ""; }; - FB290FC3F5ACF0789F4078C376E6ADED /* Array+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Array+Extension.swift"; path = "Sources/CryptoSwift/Array+Extension.swift"; sourceTree = ""; }; - FB320DD9FD83A5F3BAADF33818736C30 /* secp256k1_swift-macOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "secp256k1_swift-macOS-dummy.m"; path = "../secp256k1_swift-macOS/secp256k1_swift-macOS-dummy.m"; sourceTree = ""; }; - FD3D00DC2D85B010C2EB60CA78D22508 /* hang.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = hang.m; path = Sources/hang.m; sourceTree = ""; }; - FDADCB9A8CD9274EA3AC09BE3B7E0F66 /* libSwiftRLP-iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSwiftRLP-iOS.a"; path = "libSwiftRLP-iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - FE3D7030BC429403BBE50F40445229DE /* SecureBytes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SecureBytes.swift; path = Sources/CryptoSwift/SecureBytes.swift; sourceTree = ""; }; - FF137216E20AA1BF3FA0B1A647DB89AC /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/CryptoSwift/Operators.swift; sourceTree = ""; }; - FF1BE57EBE989B2B7EDD166127B5FCD9 /* PromiseKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromiseKit-dummy.m"; sourceTree = ""; }; - FF66C3EFCA475A91734C76A5D546BE1A /* libPods-web3swift-iOS_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-web3swift-iOS_Tests.a"; path = "libPods-web3swift-iOS_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - FF8AF8868130C525C8921A94220CFA6D /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; - FF94FCFAAA2F4216A2F89F43E2CDA4DA /* Catchable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Catchable.swift; path = Sources/Catchable.swift; sourceTree = ""; }; + F4E5D057A0E9ADAC720AAE1F3B6FD669 /* scrypt-macOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "scrypt-macOS-prefix.pch"; path = "../scrypt-macOS/scrypt-macOS-prefix.pch"; sourceTree = ""; }; + F60D6D403033B0F37C22533C4A05A1E4 /* UInt128.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UInt128.swift; path = Sources/CryptoSwift/UInt128.swift; sourceTree = ""; }; + F62C08D51F07D8799AD6CB646A710F41 /* ChaCha20.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ChaCha20.swift; path = Sources/CryptoSwift/ChaCha20.swift; sourceTree = ""; }; + F6575BB4E0B2AD0E5B88C62A5EDA6FCB /* group.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = group.h; path = Classes/secp256k1/src/group.h; sourceTree = ""; }; + F6B67028CCAE6818C78DBC12D8329550 /* RLP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RLP.swift; path = Classes/RLP.swift; sourceTree = ""; }; + F7E0FE543A2A814147E52BD4424892FD /* fwd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fwd.h; path = Sources/fwd.h; sourceTree = ""; }; + F7ED977AF2E31DEA78D850BDE6C9F601 /* field_10x26_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = field_10x26_impl.h; path = Classes/secp256k1/src/field_10x26_impl.h; sourceTree = ""; }; + F7F56C5F9833A0AB26CC47460A928E34 /* Result-iOS.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Result-iOS.xcconfig"; sourceTree = ""; }; + F8C27B7CBA5225481973EDA23AF49981 /* AEADChaCha20Poly1305.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AEADChaCha20Poly1305.swift; path = Sources/CryptoSwift/AEAD/AEADChaCha20Poly1305.swift; sourceTree = ""; }; + F964C89C691E6FE6350F48A4A3E1DD52 /* PKCS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PKCS5.swift; path = Sources/CryptoSwift/PKCS/PKCS5.swift; sourceTree = ""; }; + F98943C5BB435ED0A98F417086E89DFE /* scrypt-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "scrypt-iOS-prefix.pch"; sourceTree = ""; }; + F98F9737D714C11C13F01403ECACC354 /* Utils+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Utils+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Utils+Foundation.swift"; sourceTree = ""; }; + FA4C0B3D9EC3E926E106CA2DE8CDEAF9 /* ecmult_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ecmult_impl.h; path = Classes/secp256k1/src/ecmult_impl.h; sourceTree = ""; }; + FA4D3EFB3ECDE366218A9D0848F3C58B /* scalar_impl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = scalar_impl.h; path = Classes/secp256k1/src/scalar_impl.h; sourceTree = ""; }; + FA93B396CDC9BA5785D41386B95B4AE2 /* ChaCha20+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ChaCha20+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/ChaCha20+Foundation.swift"; sourceTree = ""; }; + FAF14DF7DD65D242909C4D06F8C00DEF /* HMAC+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "HMAC+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/HMAC+Foundation.swift"; sourceTree = ""; }; + FB31CE10E8BEEBFC7B50C9F8A97E10A8 /* Blowfish+Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Blowfish+Foundation.swift"; path = "Sources/CryptoSwift/Foundation/Blowfish+Foundation.swift"; sourceTree = ""; }; + FEDDAEEE4BC31C06BAE2232AFCA5468E /* HMAC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HMAC.swift; path = Sources/CryptoSwift/HMAC.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 03011555EFED1D5408D878A307E7F27B /* Frameworks */ = { + 08725796DB76F7D6AE648E2FE6C6F219 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 05577BA791C80220E64423A3DA803314 /* Frameworks */ = { + 0CB8E604AAFC039274BE7F9019820464 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 2714EC0418F441D39321DBFD3CFC5BF3 /* Frameworks */ = { + 1600C6BC8C1AD78A95A84E5114873FBD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 2E1C020D358710A3E399DC2793603432 /* Frameworks */ = { + 201C2E8B1BBF4EA2C2E855CAD443F07A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 3AAC28C160F50900EE61CA27D4E2EF5D /* Frameworks */ = { + 215FF64BB8F688F84B3231B77569E5C2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 3AE77EFED90447A6B1DAC12064BA51E9 /* Frameworks */ = { + 224FCBB2C53DEF01AF13F9CFC741739D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 49DDA0C2610D394C727D7031E3440CCF /* Frameworks */ = { + 23806D0BC0F52E8AC5EE2B81034FD7D3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 5266E30913229719A172673D2CC2CC9B /* Frameworks */ = { + 25FCBA5B2FFAFF4A3E1CB4180AA265B0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 6EC658BB78F973B687A770E4EC1E8853 /* Frameworks */ = { + 30C84D375526C86BF24F081A4EF0CA55 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 6F6453F76274AE713CC0D3CD28EB9C36 /* Frameworks */ = { + 3B7AC4EF9C63E5F22954D8AF93D04330 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 803328A4C9D919A350F04AB5D9FBBC0A /* Frameworks */ = { + 435144EBFB416082687F21AE9FE91D96 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 8A852453AAC819ADB163A9F4FA02ABF9 /* Frameworks */ = { + 49DDA0C2610D394C727D7031E3440CCF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 9D409A2942E61980145880BF513A7F7D /* Frameworks */ = { + 5740D976E52AA2EB97C2A9F753E1C740 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 9FA0F642AE177D3FA07814A41F264B1A /* Frameworks */ = { + 6F6453F76274AE713CC0D3CD28EB9C36 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B244EFB510B7723225BAE6675E63CE10 /* Frameworks */ = { + 739BFA7B674F25403C43C426637796E0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - CDD5EEE59EED703D7D057105BF3320CA /* Frameworks */ = { + 803328A4C9D919A350F04AB5D9FBBC0A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D2A4B152651F01134ED378054CE50C8D /* Frameworks */ = { + 872D6A3DAA3AC36B6C52474F6BF4CA6D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D45B18240A0BA70F5BD174A232F95C45 /* Frameworks */ = { + 8A852453AAC819ADB163A9F4FA02ABF9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - F3D19D58AA787766BBBD7801570222E2 /* Frameworks */ = { + 9FA0F642AE177D3FA07814A41F264B1A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - F8DE994896B53C78B2E78A42E3193FFC /* Frameworks */ = { + AC5A4F42824C1F9DC39C2D962FA6E967 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - FA42B5B3447A1D1A233689BB1B366630 /* Frameworks */ = { + C057B63C1468DF9D9FB55C472186B940 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D2A4B152651F01134ED378054CE50C8D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - FC3AA5C1EA87DD47338B9100FB46F5DD /* Frameworks */ = { + F3D19D58AA787766BBBD7801570222E2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FA42B5B3447A1D1A233689BB1B366630 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1182,19 +1295,15 @@ name = "Targets Support Files"; sourceTree = ""; }; - 05B4DA0C32E1BAA8E12B2E57FB88CCC7 /* scrypt */ = { + 04D344FA994D64D74F3957A5E07D7003 /* SwiftRLP */ = { isa = PBXGroup; children = ( - 93264D7DC7DF888A41AF35694C9CBF60 /* BufferStorage.swift */, - E65308F679CCAADBBF14F5DB4971CD21 /* Cimpl.c */, - F935D7D51C3BD0EEA31106E0BF9C3D13 /* Cimpl.h */, - 03321ECEB201CDE70DA4F88EE48E2044 /* Salsa.swift */, - 9411AC5861B33542BF71A1EED7E49FC4 /* scrypt.h */, - 41FAB135DE09D3F9136D834CBE3A558A /* Scrypt.swift */, - C983EA1AC8F89B7B13410C24C8F9C35D /* Support Files */, + F6B67028CCAE6818C78DBC12D8329550 /* RLP.swift */, + B8EBC720E3207E6F08965D7549AAFEC6 /* SwiftRLP.h */, + 9F0ACAD8B1C23047839392A42456AF61 /* Support Files */, ); - name = scrypt; - path = scrypt; + name = SwiftRLP; + path = SwiftRLP; sourceTree = ""; }; 074B5AF920A574FC168DA49C8D334690 /* Pods-web3swift-macOS_Tests */ = { @@ -1223,22 +1332,22 @@ path = "Target Support Files/Pods-web3swift-iOS_Tests"; sourceTree = ""; }; - 0E22312CDA1302633680E34AA7319FE8 /* Support Files */ = { + 0BFEFDA3C060A520AC31181B2B963F58 /* Support Files */ = { isa = PBXGroup; children = ( - EE67CD504E9DAC9DEA10C48C45C9E86B /* SipHash-iOS.modulemap */, - A0347CA8676D7E491A4DA559FB78007F /* SipHash-iOS.xcconfig */, - C57F4AE68BD0AD2EE5867A1CA2A12FCC /* SipHash-iOS-dummy.m */, - EB0E2A41F4665970E5124BB49E1B4D55 /* SipHash-iOS-prefix.pch */, - 7692AAEAD8E8FFF8D2E46B60CBA56CDA /* SipHash-iOS-umbrella.h */, - 919A091F1E72F11C9C10844CC5454B2F /* SipHash-macOS.modulemap */, - F9C126B6106FA68D54B74E0DD65E0F8E /* SipHash-macOS.xcconfig */, - E34CB7E7EAC6A9C0F75649FD43EC23F2 /* SipHash-macOS-dummy.m */, - D6AB002E9D0C7DDC501F8673C4419E81 /* SipHash-macOS-prefix.pch */, - 4E85EB665265A065E5D96BCE2B87008D /* SipHash-macOS-umbrella.h */, + 6BB6440618D1B0E87AE5AA65F64B69DD /* Result-iOS.modulemap */, + F7F56C5F9833A0AB26CC47460A928E34 /* Result-iOS.xcconfig */, + 279857EBC2D837FCAB656991E73C8C39 /* Result-iOS-dummy.m */, + 0C79BC89B6EB9504D07FA8AC80365541 /* Result-iOS-prefix.pch */, + 2A844BDD60081AA12674BC4FC33E5560 /* Result-iOS-umbrella.h */, + 53A9CE7F7031C40517F85796D6BDEB9C /* Result-macOS.modulemap */, + D1FD34D2C5C93A170139E5994B7F5D8D /* Result-macOS.xcconfig */, + 0536186C77B05CB18765BFD4670AC3D1 /* Result-macOS-dummy.m */, + 0DA70B96E002212A3A39FC0943499DF6 /* Result-macOS-prefix.pch */, + 37A3BB2B9627AD42F4EC73AE040C9A18 /* Result-macOS-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/SipHash-iOS"; + path = "../Target Support Files/Result-iOS"; sourceTree = ""; }; 0F8D2E47FE03D3B91B51069F7C273AF4 /* Frameworks */ = { @@ -1248,201 +1357,172 @@ name = Frameworks; sourceTree = ""; }; - 1AC78478C51907110096C348221D88EC /* Pods */ = { + 34FAF2B4032D60B58F23F807B4871923 /* SipHash */ = { isa = PBXGroup; children = ( - D744BED64DE3B64CE5A12B74A22D228D /* BigInt */, - 56BBFF8639CCDA4A35DED29BDD33D528 /* CryptoSwift */, - 361AF2F3A6AA13AA5E964E778F7E85BD /* EthereumAddress */, - 54B37D075BCFF2BF04A3CC7CB9D1C6F9 /* PromiseKit */, - 541E7AD1499C6B8095A27B0F22098CE0 /* Result */, - 05B4DA0C32E1BAA8E12B2E57FB88CCC7 /* scrypt */, - F60B65C0BEC31AA822288722889BD576 /* secp256k1_swift */, - 652884AA38DA09A2444762C072AAE0FE /* SipHash */, - 2FD28755727C4877D11F1FACC2821028 /* SwiftRLP */, + A7E446483743D975168011448637ED65 /* Primitive Types.swift */, + 86A87591096A3CD9071AD2D94874973C /* RandomUInt64.swift */, + B99B34DE805578131F4C0D5BFE276614 /* SipHashable.swift */, + 4638850DD91EB5F2EFCF18E99D4D87FA /* SipHasher.swift */, + AEAD5D9B473E4A71E8CFAE0F15721DB9 /* Support Files */, ); - name = Pods; + name = SipHash; + path = SipHash; sourceTree = ""; }; - 1C95D05EA1244C1219298719A0647D65 /* Foundation */ = { + 3827F60DF0B6BE43D84C824208816056 /* Support Files */ = { isa = PBXGroup; children = ( - 74111ED4B5372D2EE9A218621A18699C /* afterlife.swift */, - 7DE92E2A606B96369F79D742DFACB7C9 /* NSNotificationCenter+AnyPromise.h */, - F1899C74540C37F7D84214CF9F8AD010 /* NSNotificationCenter+AnyPromise.m */, - D9C39AD388A82A531C338B26EE00DB9C /* NSNotificationCenter+Promise.swift */, - 840434A830881CF07FBDE172A20CDDDC /* NSObject+Promise.swift */, - 860EF39282D8941084557A3DCC1D7DF3 /* NSTask+AnyPromise.h */, - 86B004B7F6AC62E27D75D02978601A76 /* NSTask+AnyPromise.m */, - C6D3FAB581FA1884038308CAAD092260 /* NSURLSession+AnyPromise.h */, - 55F115779D04B6641A1DB99D05887E03 /* NSURLSession+AnyPromise.m */, - 7739AC49E92EA0677899D077C015CE05 /* NSURLSession+Promise.swift */, - 17856FB7A41BDDB75285F531B03882F4 /* PMKFoundation.h */, - 43941A9CA2F209289C333306CBC5961F /* Process+Promise.swift */, + EB9D182FF8C8E692497E5FB1362B72E9 /* scrypt-iOS.modulemap */, + 420A1793DC6527296BC586472865C8C0 /* scrypt-iOS.xcconfig */, + 2533EAF35B54AB44227FBC0A9BA7D19E /* scrypt-iOS-dummy.m */, + F98943C5BB435ED0A98F417086E89DFE /* scrypt-iOS-prefix.pch */, + 417BA17C9527B36A6953928718163ACE /* scrypt-iOS-umbrella.h */, + 3BA0B14650AEA1E6C77147E96770CB09 /* scrypt-macOS.modulemap */, + C04A3FB24C874F21628C4E7EA8B9693B /* scrypt-macOS.xcconfig */, + DAB3CD9F51BF3B4399B8EFC798B3F215 /* scrypt-macOS-dummy.m */, + F4E5D057A0E9ADAC720AAE1F3B6FD669 /* scrypt-macOS-prefix.pch */, + 55609C780EA603377D9F33E7661A79BB /* scrypt-macOS-umbrella.h */, ); - name = Foundation; + name = "Support Files"; + path = "../Target Support Files/scrypt-iOS"; sourceTree = ""; }; - 2FD28755727C4877D11F1FACC2821028 /* SwiftRLP */ = { + 3EC5D1EA5568F6BB631C6A9AD5B40F86 /* Products */ = { isa = PBXGroup; children = ( - 49FA7F82B54CC7168B96069F53D66A28 /* RLP.swift */, - 0F02A89B4F4807025E1CB0C26D63CD65 /* SwiftRLP.h */, - A33DC2AD3BADDA5A006F792ED154E7A5 /* Support Files */, + 4249BBDEF2DD259919D48F146E985928 /* libBigInt-iOS.a */, + 1A0E65E61932B728FD97FB08D42B3EF6 /* libBigInt-macOS.a */, + A6F7930650FD31ED4C95EAB12B5DA36F /* libCryptoSwift-iOS.a */, + E301EA386C90D10BDC9671660BE64E94 /* libCryptoSwift-macOS.a */, + E692601913F2AB7B6FE40D658E90C7B5 /* libEthereumABI-iOS.a */, + 61858AD8F2BC3FA5B6CE10752824FA45 /* libEthereumABI-macOS.a */, + 27D0F7DCFEE54028674461B7456DB4EB /* libEthereumAddress-iOS.a */, + 4813C1A0F259481060973E85D757C6F8 /* libEthereumAddress-macOS.a */, + 2A23509A1B4B9BA0141EB958C32816D4 /* libPods-web3swift-iOS.a */, + AC8ABBCB10448DB88C79398E3A2D4417 /* libPods-web3swift-iOS_Tests.a */, + 44157DE064955C1C2DF424094F971C2C /* libPods-web3swift-macOS.a */, + 11C198E371333D0B4E1F4A5B168C23C7 /* libPods-web3swift-macOS_Tests.a */, + 9E7C36E885EBC6AB812D67E4B28A9CE4 /* libPromiseKit.a */, + 640D7C6CD155FDD858979BF3184F5A49 /* libPromiseKit.root-CorePromise-Foundation.a */, + 0875934C7BD4393C0A91DFA3CF1FBBED /* libResult-iOS.a */, + 5AEA4495CD1CD23847803E6F2009266F /* libResult-macOS.a */, + BF7E9A738647C81A92D68BCF6E734C6B /* libscrypt-iOS.a */, + A1C101B8D6CF3BE7D5E588469BA4647B /* libscrypt-macOS.a */, + 64CF8CD6E98A2DF32A9CBCF71E6AEFAB /* libsecp256k1_swift-iOS.a */, + B43B308FB300789356930844D6B81CF8 /* libsecp256k1_swift-macOS.a */, + 2F751DF027B3EC6771E69D0DF744E2F1 /* libSipHash-iOS.a */, + AB81B5AF636ED4D537F9A819FC7EB086 /* libSipHash-macOS.a */, + 55D3724AA7B8C2CF221E72306FBDCBB5 /* libSwiftRLP-iOS.a */, + 37A42E23E411D520ADBF58299104A5E4 /* libSwiftRLP-macOS.a */, ); - name = SwiftRLP; - path = SwiftRLP; + name = Products; sourceTree = ""; }; - 361AF2F3A6AA13AA5E964E778F7E85BD /* EthereumAddress */ = { + 455CF9C0C54FD8B35634D81F5E38ED46 /* PromiseKit */ = { isa = PBXGroup; children = ( - 48BBE301C7AC93BA32B43FDCAB55FF55 /* EthereumAddress.h */, - 7CB204BDB01A5747B116731490529E2B /* EthereumAddress.swift */, - 1422C640D1B145BC997D3E0A3FF10339 /* Extensions.swift */, - A8CB084B7ACB8AC7C10C0B25D0347442 /* Support Files */, + B028E45757F11470855CBBF5A23509C8 /* CorePromise */, + C584BCF64FE7C44F77E0DC8BBCA5046B /* Foundation */, + 8D7C724EEC47F84DA9BED20E20279645 /* Support Files */, + C9D721D47F8E2604C59F3C672BD6200D /* UIKit */, ); - name = EthereumAddress; - path = EthereumAddress; + name = PromiseKit; + path = PromiseKit; sourceTree = ""; }; - 541E7AD1499C6B8095A27B0F22098CE0 /* Result */ = { + 467AC48A0B5ED526FE4CBC40660B4813 /* Support Files */ = { isa = PBXGroup; children = ( - 2D1D500C8CF88FC87FF7FA43DBC53611 /* AnyError.swift */, - 19725B1F6B394E3B97BB387C7E4E4874 /* NoError.swift */, - 1576E0C86B6BE13F5FB685E1357E71C3 /* Result.swift */, - 5116359962EA1905AC0EB7121E634D9F /* ResultProtocol.swift */, - 6CC6E9D88684D92EB1CEF51FF7B16C04 /* Support Files */, + 2C1E2451F697C193D067734C4AF47482 /* EthereumABI-iOS.modulemap */, + 522579B02AF58D183F2AC531E3F33572 /* EthereumABI-iOS.xcconfig */, + 48DE6A16D72E33E779AE2257CA5D34BC /* EthereumABI-iOS-dummy.m */, + 9C056AE54C5A5C44A47093DCBA233F46 /* EthereumABI-iOS-prefix.pch */, + 98229C7D8E3906BD4C8DCD833704588C /* EthereumABI-iOS-umbrella.h */, + CFAF7D663AA6B1D79BC3ED1927EEE23C /* EthereumABI-macOS.modulemap */, + B48543DD38BB8E1AB0953C926DBA6C3F /* EthereumABI-macOS.xcconfig */, + C742D7E4D064B53F3E8BD2061CEB4650 /* EthereumABI-macOS-dummy.m */, + 22C3F518991BE51FC595F8F3EF89345B /* EthereumABI-macOS-prefix.pch */, + BC2EE2AAFC0C186078B992C06F762E8D /* EthereumABI-macOS-umbrella.h */, ); - name = Result; - path = Result; + name = "Support Files"; + path = "../Target Support Files/EthereumABI-iOS"; sourceTree = ""; }; - 54B37D075BCFF2BF04A3CC7CB9D1C6F9 /* PromiseKit */ = { + 4952837D3F6017272786DEA472A72078 /* scrypt */ = { isa = PBXGroup; children = ( - F026F54B353351B219A0C4BE3E0C2871 /* CorePromise */, - 1C95D05EA1244C1219298719A0647D65 /* Foundation */, - 9B38CA57FC54E4DA492DC4C23904561E /* Support Files */, - D62BC46C0C93C11AECF63AC21156635E /* UIKit */, + 63FD1428729C05C5A88BE98C12254ADA /* BufferStorage.swift */, + 442D6200CC1781151499F7FAF44C0366 /* Cimpl.c */, + F106BE3FED3F7D139A061124A9FF0251 /* Cimpl.h */, + EB74063F2F7DC76E97D34EC40D093C52 /* Salsa.swift */, + 07853D5BF50E26B878B7B1D18CF18F06 /* scrypt.h */, + F1C65F271D54976AEAF5B1CB4522A471 /* Scrypt.swift */, + 3827F60DF0B6BE43D84C824208816056 /* Support Files */, ); - name = PromiseKit; - path = PromiseKit; + name = scrypt; + path = scrypt; sourceTree = ""; }; - 56BBFF8639CCDA4A35DED29BDD33D528 /* CryptoSwift */ = { + 4DECEA9BC9FC9324DD3E2337452CD61B /* EthereumAddress */ = { isa = PBXGroup; children = ( - 8354A9A75879DFCE10CDFCD8B4B76EF5 /* AEAD.swift */, - 71D09134607D15AB2D81F0CB08D3F055 /* AEADChaCha20Poly1305.swift */, - 77FB79008E5E4C52EE48B984D12A652E /* AES.swift */, - BC0E5DF49745E221D708C75FC2B03DC7 /* AES+Foundation.swift */, - C1BDC161E1A001A666E01A22455E14B5 /* AES.Cryptors.swift */, - FB290FC3F5ACF0789F4078C376E6ADED /* Array+Extension.swift */, - AB4C3483E321FFBD045AB8FDC37CF8FA /* Array+Foundation.swift */, - 736C0CC7DF9261F7C240BF88F7D310AD /* Authenticator.swift */, - 682A1BA8289C74E7B26FAAFA80540F57 /* BatchedCollection.swift */, - 86800F1D45016DC59C9BE8B9ABF5B50F /* Bit.swift */, - EFCBEFE9DA6D7F361DBB180EB84492D2 /* BlockCipher.swift */, - 0D2BE96DBE00949D2B047DC83A759B4C /* BlockDecryptor.swift */, - CC4C922D64767063B8D1A270D793373B /* BlockEncryptor.swift */, - 1F0D95EE88A2B8D781795DF20E0568F6 /* BlockMode.swift */, - 639957AA1B177687176168DC8D443490 /* BlockModeOptions.swift */, - CAC966A4293FF7689DD8A3B2877731F3 /* Blowfish.swift */, - F25882CAD0730D8C76F023B8C6FA287C /* Blowfish+Foundation.swift */, - 3ABE33C91D6B128E8B104ED3630B6ABB /* CBC.swift */, - DF4D45B809574B97A749EADBA2EFAB02 /* CBCMAC.swift */, - 14176496814CB0D56F198301D279FE65 /* CCM.swift */, - B7D5FD5536C89792D33769E9EDFA2DE8 /* CFB.swift */, - EE7F6BB14F19AC57CB96B2D06603E845 /* ChaCha20.swift */, - 441A9CACC96EB9A41D4ABF90FDFFD2C8 /* ChaCha20+Foundation.swift */, - ADC86A3FC56A1BAE1CA3490D081E47F3 /* Checksum.swift */, - 52B35D82CEB3E05DB842B7FA66505116 /* Cipher.swift */, - 81909D98916544A0C622EDB88411AE57 /* CipherModeWorker.swift */, - 6E942712A2D0087AAF697A0E031459FE /* CMAC.swift */, - C717226571D60D3C7D8E15B4EDCC2E0F /* Collection+Extension.swift */, - 4F8B31678A829B043331C94E279F1FD9 /* CompactMap.swift */, - D13D2441410EEFA35EFB1823E238648A /* Cryptor.swift */, - 3391B8242DCA2A16EB9DBB3FF0740ABC /* Cryptors.swift */, - 671394A1108646E9E210CF54FA2C814C /* CTR.swift */, - 42F14C976AD41B0817186FB67B3B349B /* Data+Extension.swift */, - 5ED58E829B835009D9DCD1D8B959FBBD /* Digest.swift */, - 8F6102F002EDC216C49666462EF952CA /* DigestType.swift */, - 98C48C6F1DCE55E9EE6040D50626EF16 /* ECB.swift */, - 95F76B715633F358CA7525D8C17738C9 /* GCM.swift */, - D286B6A0694F7E16078B8E7642CAE6FD /* Generics.swift */, - 0D0947D47B9CECD59BC73EAC48D4ED27 /* HKDF.swift */, - 7B67DD6B4751EC541A3D153113AFB1B1 /* HMAC.swift */, - FF8AF8868130C525C8921A94220CFA6D /* HMAC+Foundation.swift */, - E81CDB6F58099035E4B22900B2E0740D /* Int+Extension.swift */, - CB0B1B247B08E4A2259D6D21ABAB0304 /* MD5.swift */, - 915D7A030D48CB0FE8360421BAB29B5B /* NoPadding.swift */, - 1D8151AFF003D8A45F3E0F171019ED33 /* OFB.swift */, - FF137216E20AA1BF3FA0B1A647DB89AC /* Operators.swift */, - 23EA6F524218763DB7E76A6E13387EAC /* Padding.swift */, - 5EFE8BF6504756C13783E7D477894264 /* PBKDF1.swift */, - D9F882189D9E2CE8D7B7DC60BA0D5AF6 /* PBKDF2.swift */, - C47CE1FE3AEC19CC322E3E03530D21CD /* PCBC.swift */, - 98A9FC519C49C693637C4BC5D0DD6EB7 /* PKCS5.swift */, - CD8AF5512E4598482BBFB4AD1BBF8064 /* PKCS7.swift */, - D3E0EFDBB92A100EDE06E9D563ACF26E /* PKCS7Padding.swift */, - 95C8DD41F37C777526C9EA621C9213C9 /* Poly1305.swift */, - 906199A857C08F740EA182609488E191 /* Rabbit.swift */, - D44F8F4C5F0D588B00DF17BC6518E5E0 /* Rabbit+Foundation.swift */, - 9B7B36B7C3689A1ED9FBF4095AF74840 /* RandomBytesSequence.swift */, - FE3D7030BC429403BBE50F40445229DE /* SecureBytes.swift */, - 0EC0DBFB306B96AAE65A02CB825C4F0B /* SHA1.swift */, - 9BFCCF45D62D69A50F9ED16BCE93C54A /* SHA2.swift */, - F4BAF829379DA2971A7051C2EFAE15E8 /* SHA3.swift */, - 9F576E04543F9CA8FD11EFA190633C0F /* StreamDecryptor.swift */, - 7340338CDF774E91E0F647AB7EB91924 /* StreamEncryptor.swift */, - D292A1945503B3A000AC47BB73889903 /* String+Extension.swift */, - EA3D1883E9BD064F4B9299B5825061E7 /* String+FoundationExtension.swift */, - AFD1168E711269E444E38FCAE0B8E5D9 /* UInt128.swift */, - 20BE3E8F811475C9F3E6350A16EF3D56 /* UInt16+Extension.swift */, - D57256C33A9C97F888F53A4FB7226146 /* UInt32+Extension.swift */, - 4BD790D4294FB459BB05017C05CA1F1E /* UInt64+Extension.swift */, - 41B019A1B56440DDAB3267B96FDBD576 /* UInt8+Extension.swift */, - 7CC384B5F6C90CB968D0AB32162249B6 /* Updatable.swift */, - 49A1004ABA6FF6BBB692884F59131E13 /* Utils.swift */, - 7EFDF78EEBE9836CDC5AE2FEEC50C17B /* Utils+Foundation.swift */, - C31ABCFEE7AE67562C4CEBB66C7ED4D6 /* ZeroPadding.swift */, - A5E4D51B8435BEA960C87E86236F1E08 /* Support Files */, + C4AD5698CEACE94C1CAD1C0317E14905 /* EthereumAddress.h */, + AFAA80681A91BDC50EFC4294353BC5BA /* EthereumAddress.swift */, + 80ACF3AED1948ECBBAF9BEFFC3482423 /* Extensions.swift */, + 922AFC21F176C35CEE509B534B859943 /* Support Files */, ); - name = CryptoSwift; - path = CryptoSwift; + name = EthereumAddress; + path = EthereumAddress; sourceTree = ""; }; - 652884AA38DA09A2444762C072AAE0FE /* SipHash */ = { + 563C4EF4DEB4F8DA641EF40144826E4B /* Support Files */ = { isa = PBXGroup; children = ( - 03FE099622DA426E4CBDFEB30B374591 /* Primitive Types.swift */, - DAC89259204E1C6A18BCD0B7D08C104B /* RandomUInt64.swift */, - 28D6357617301A15F1861ECE0B2D728E /* SipHashable.swift */, - EBD8BA7DCEF1E0FF9602E3F7BE941878 /* SipHasher.swift */, - 0E22312CDA1302633680E34AA7319FE8 /* Support Files */, + A330934D98A54C2602C42AF53B6E728E /* secp256k1_swift-iOS.modulemap */, + B6A0DADFE9809AB925F51CF651528B31 /* secp256k1_swift-iOS.xcconfig */, + 9E3FCE1E29EDFA06494CDD00767685E3 /* secp256k1_swift-iOS-dummy.m */, + 5DC3FD3167A8763A6C85B62EFDA429D2 /* secp256k1_swift-iOS-prefix.pch */, + EDD86700A4552C712FAC348BB69DACD9 /* secp256k1_swift-iOS-umbrella.h */, + 9760F737EE5BDAD80F6E6DDA26EE421C /* secp256k1_swift-macOS.modulemap */, + 330B8D8B0B8ACFFDF2B9292154D71642 /* secp256k1_swift-macOS.xcconfig */, + CC444A933C805567A3F012F3CEE72D08 /* secp256k1_swift-macOS-dummy.m */, + 4B737AB9139E0187239D966FFC143FB3 /* secp256k1_swift-macOS-prefix.pch */, + D1EDEFFF233BE2D7F100C45B95D49336 /* secp256k1_swift-macOS-umbrella.h */, ); - name = SipHash; - path = SipHash; + name = "Support Files"; + path = "../Target Support Files/secp256k1_swift-iOS"; sourceTree = ""; }; - 6CC6E9D88684D92EB1CEF51FF7B16C04 /* Support Files */ = { + 667472FEE28006D1990700DD108F738A /* BigInt */ = { isa = PBXGroup; children = ( - 12838912E9C17379AEEDB5CEF54ED779 /* Result-iOS.modulemap */, - 435339C16A1550DDCDCD1B4731E89DBD /* Result-iOS.xcconfig */, - 74F90CB37B5FF688D45EE372C6FE875C /* Result-iOS-dummy.m */, - 0295AAB9A4AEF4BACC811B917B2F75DE /* Result-iOS-prefix.pch */, - C30494B6003825A7F5E0AE152495E590 /* Result-iOS-umbrella.h */, - B41DB7D6043E138E3CA32DF5B5194D9B /* Result-macOS.modulemap */, - 15206D43EDA63AD479C638B175342338 /* Result-macOS.xcconfig */, - 28AB30A05C0D17ABF7D0DBC475F93C23 /* Result-macOS-dummy.m */, - 42F561AD37AE0579CA9921A14A3A0943 /* Result-macOS-prefix.pch */, - 67F6E91C8B57C5F8E945603C7F3DB0F2 /* Result-macOS-umbrella.h */, + 03C5B3B2079547713108CA0A75C2D683 /* Addition.swift */, + 1782185CE59A4E4F74A5C0258C3B5F61 /* BigInt.swift */, + C2AB0FA3FFAC3EBB0D9CACE786196AC1 /* BigUInt.swift */, + 2631D55D12027D3935D7B85C6A624F09 /* Bitwise Ops.swift */, + 85342594A31BFFC584D4660A9041CF48 /* Codable.swift */, + 6DE5DD5643C155A18A460273094ACDA1 /* Comparable.swift */, + 1B8BA477868467E169FF27E9193A10DA /* Data Conversion.swift */, + EDB10140BE59AEE481C7E08EDC79971D /* Division.swift */, + 4289C87C5EC42792CDDDCFC5592AADF7 /* Exponentiation.swift */, + 0930D7CD22CBEC2C752C14A123807624 /* Floating Point Conversion.swift */, + EB02248C062005D2F2620C9F81EC5ED4 /* GCD.swift */, + EA975F09047F404D3183C92FCA1AD829 /* Hashable.swift */, + EA46482A8E14BD7641E6F29ED4F0A6B4 /* Integer Conversion.swift */, + 2A57E22BE5970C0F858EB10A32A3019D /* Multiplication.swift */, + 0A85805FE098BD65AFD79ABDC5A9DDF7 /* Prime Test.swift */, + C04C575F1277CF14F506F691F9C669FC /* Random.swift */, + 6F4B350BCCE6D995C937B1D56E4F9022 /* Shifts.swift */, + 93EB1CF4FDC03241B81C3C3B6F58B9E0 /* Square Root.swift */, + 34A205CA261F59DB1AC7C1BE4E2ABE19 /* Strideable.swift */, + 68D5DF1B1384D6392013199F71BACD06 /* String Conversion.swift */, + D9B1DC98FA2ABF0645707ED4C6FF5D77 /* Subtraction.swift */, + 2D6E2E2ED41464CEB00832B492D67ECB /* Words and Bits.swift */, + E36023E8575313B31CF8B6B497F4FFBA /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Result-iOS"; + name = BigInt; + path = BigInt; sourceTree = ""; }; 6FE5839A998F9D581E5060F0675BF53C /* Pods-web3swift-macOS */ = { @@ -1460,123 +1540,159 @@ path = "Target Support Files/Pods-web3swift-macOS"; sourceTree = ""; }; - 717DC5E859A757E25C926AA3C8443397 /* Support Files */ = { + 7DB346D0F39D3F0E887471402A8071AB = { isa = PBXGroup; children = ( - C05A424003F07748E6FAD6C9A57EEC23 /* BigInt-iOS.modulemap */, - A2A0CFEEC4EEE7DD9F58B6A45DE63C89 /* BigInt-iOS.xcconfig */, - A516C73CD574B0D6BA84C38BB55FBD2D /* BigInt-iOS-dummy.m */, - 907E15C94AE5E8DC2C60CE2BFA69AB19 /* BigInt-iOS-prefix.pch */, - B90CC3B80037E1B917D44513A07D0F6C /* BigInt-iOS-umbrella.h */, - B42A16A3F62043A99FFE8BDB6DB55ACB /* BigInt-macOS.modulemap */, - 8823C42C614B0067E2C89A5AE71DA77D /* BigInt-macOS.xcconfig */, - 234968A9A443A0E2CC4FBFBADB4CC6AB /* BigInt-macOS-dummy.m */, - 6007139C44683BCB89A01696BBBD497F /* BigInt-macOS-prefix.pch */, - B2300EAF13A4BCCC04BBD2896E58716D /* BigInt-macOS-umbrella.h */, + B36AB396275697EEE1A5B13BA8A38FE3 /* Podfile */, + 0F8D2E47FE03D3B91B51069F7C273AF4 /* Frameworks */, + B385790646FED40DF16835CC304DB065 /* Pods */, + 3EC5D1EA5568F6BB631C6A9AD5B40F86 /* Products */, + 0016905C45F8F01C6D080425028330F0 /* Targets Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/BigInt-iOS"; sourceTree = ""; }; - 7DB346D0F39D3F0E887471402A8071AB = { + 8278DAD857B26B2BCCF14D6CB39B7481 /* EthereumABI */ = { isa = PBXGroup; children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 0F8D2E47FE03D3B91B51069F7C273AF4 /* Frameworks */, - 1AC78478C51907110096C348221D88EC /* Pods */, - BC988C585F01918CDC758DA84387BAF3 /* Products */, - 0016905C45F8F01C6D080425028330F0 /* Targets Support Files */, - ); + 21FCC5A27F315ACD9DBDF025F826D31F /* ABI.swift */, + E7A2D1D0062F350907B747E2A192E438 /* ABIDecoding.swift */, + B2B4899E422658B96ADF84B5239C418D /* ABIElements.swift */, + 6314619E8FCD5D07FBD2BA0BA5C58C15 /* ABIEncoding.swift */, + 6E4AA08906784FF9AA2B198938456276 /* ABIExtensions.swift */, + 6EC6627D0179A3BE1D7BB58F2DBF51E7 /* ABIParameterTypes.swift */, + D9B3D040637E19F37C0D7EB3C1A6A991 /* ABIParsing.swift */, + C4F1681CFA49EA17D6A73339A9C1A44A /* ABITypeParser.swift */, + 6F068DD5C61D68DFAF437EAAC56F1139 /* EthereumABI.h */, + 467AC48A0B5ED526FE4CBC40660B4813 /* Support Files */, + ); + name = EthereumABI; + path = EthereumABI; sourceTree = ""; }; - 9B38CA57FC54E4DA492DC4C23904561E /* Support Files */ = { + 8B205D5F3CE3499689DA8259838002E7 /* secp256k1_swift */ = { isa = PBXGroup; children = ( - 049ABCA847872C85F1B4A543A069DB7F /* PromiseKit.modulemap */, - 453B783DD499D624880A972C2DC8C94A /* PromiseKit.xcconfig */, - FF1BE57EBE989B2B7EDD166127B5FCD9 /* PromiseKit-dummy.m */, - 02516902C16D7E925BA5D0CD9531308D /* PromiseKit-prefix.pch */, - 52059A76F9DA89149396ABB84A8A5780 /* PromiseKit-umbrella.h */, - CA8015AE976B6601CC46035D043423E4 /* PromiseKit.root-CorePromise-Foundation.modulemap */, - E8554570D5B7F10CEE0823FEB5B80B8D /* PromiseKit.root-CorePromise-Foundation.xcconfig */, - 08CA1065DA6D886DAD8978D531C6C531 /* PromiseKit.root-CorePromise-Foundation-dummy.m */, - 86B372DE536C71560B5E85E340F3F6C9 /* PromiseKit.root-CorePromise-Foundation-prefix.pch */, - FA1C0BFC1A022B5AD3BDFC8920FCFD74 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */, + 1592E519056BA4CA85F67406D0EC2ED4 /* basic-config.h */, + 6E13ACAF5A7893C3C300B8B880422662 /* ecdsa.h */, + 1C43D53E5A934E216CB1B7DD01DE877B /* ecdsa_impl.h */, + 6E3077E6B0E7210AC2CB18E0691714F0 /* eckey.h */, + E05424B44F6AFD35E237815F926FEEEB /* eckey_impl.h */, + 3C93F4B7E331943729BE3CFC4F439C2A /* ecmult.h */, + 05D37539C41BE79893FEDECCB70FC25B /* ecmult_const.h */, + 052A5D977253AD46619C79759D031E6B /* ecmult_const_impl.h */, + 6D010E670FE8C5A9AAC9A8464ED42B3A /* ecmult_gen.h */, + B9A05629BB0205300B694B527AD16E56 /* ecmult_gen_impl.h */, + FA4C0B3D9EC3E926E106CA2DE8CDEAF9 /* ecmult_impl.h */, + F3BCAAFEDF865BD7F6D1C36246EEE02A /* field.h */, + 0DCAB923DFB091E9F4A71F5FD29FEB40 /* field_10x26.h */, + F7ED977AF2E31DEA78D850BDE6C9F601 /* field_10x26_impl.h */, + 2C5F41A51FDAEBAF8F849026A9B09E2A /* field_5x52.h */, + D4C96A2C2C3B9F8977AD08B6FBEDE552 /* field_5x52_asm_impl.h */, + ADB4E2DA064200DDCD42C634CBC39977 /* field_5x52_impl.h */, + 9FB6255E4560252B9DC0BE760F34C261 /* field_5x52_int128_impl.h */, + 5300C71B6A3AB50A1D7ED70A41FAAD6B /* field_impl.h */, + F6575BB4E0B2AD0E5B88C62A5EDA6FCB /* group.h */, + 49F74127A936A7C34D38E84140D1EFAC /* group_impl.h */, + EA5B0A3B538B56303C1A061E2514BF07 /* hash.h */, + A1687163A14D55D2EF896A97CD937491 /* hash_impl.h */, + 4624EFF8C97C1CBAF2910297112CF9E8 /* lax_der_parsing.c */, + 58FEC74B279A9D31ADE339DE27E86FA9 /* lax_der_parsing.h */, + 60243E0B2E1CDFC9B6DF789487982447 /* lax_der_privatekey_parsing.c */, + 15BED946B8A96EDBF82439D38353B748 /* lax_der_privatekey_parsing.h */, + 12EC94EA370709920BAE52B23A048E1A /* libsecp256k1-config.h */, + A3B7939D27D85A4C92DE2CD6D6C8E4EB /* main_impl.h */, + 8AA60D2034DC22F7C907855DDB5ADAD9 /* main_impl.h */, + 6D1B636300E29159DFA920C5BA2E5F7C /* num.h */, + 76F047FAB60C9A09C857EC109DAC9FC4 /* num_gmp.h */, + A69680CF78C97C6DA250B325FFD04251 /* num_gmp_impl.h */, + 982E6E4B839762B67F92588D34990052 /* num_impl.h */, + 2716312EADA930757B04015685EFD479 /* scalar.h */, + E1999CB16AEF90FFCC762EC5BA3C538B /* scalar_4x64.h */, + 86CE3A28090BEEF1B09E865F4962D871 /* scalar_4x64_impl.h */, + E9FDE304B6122EEAE8A1FC91742A69E6 /* scalar_8x32.h */, + 81ECE7FE7C889AF9F1B739830D9A59B0 /* scalar_8x32_impl.h */, + FA4D3EFB3ECDE366218A9D0848F3C58B /* scalar_impl.h */, + ABA2CC618DEF4A5E27ADED64FC6F96A5 /* scalar_low.h */, + A051E774D4D49F8D0B94D9E529E3A524 /* scalar_low_impl.h */, + 449887D7F7932CFAA2B3FAE0BEE1594B /* scratch.h */, + 5E9C2CC8E90A38FD011723EB814A5A52 /* scratch_impl.h */, + AD85FC46DA6BEAA980010B0C5F2BEED3 /* secp256k1.c */, + D318DFC773B02CFC92B543471C937BA7 /* secp256k1.h */, + 4D5996479C4CB892D1B062406C8C08F6 /* secp256k1.swift */, + 516F61020B364118837B9099CD918F5F /* secp256k1_ecdh.h */, + B88C2E2D4B6E99B918E6E13EDA4AA4A0 /* secp256k1_recovery.h */, + 003EF4269A56F0C44E64E737009329A6 /* util.h */, + 563C4EF4DEB4F8DA641EF40144826E4B /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/PromiseKit"; + name = secp256k1_swift; + path = secp256k1_swift; sourceTree = ""; }; - 9F433791C3C200F7BC10E40694405F12 /* Support Files */ = { + 8D7C724EEC47F84DA9BED20E20279645 /* Support Files */ = { isa = PBXGroup; children = ( - 5CAF8471B488702419FE2C532D4D11EA /* secp256k1_swift-iOS.modulemap */, - 1412597E34EB8268006B0BCFF20BB89A /* secp256k1_swift-iOS.xcconfig */, - F9D80D5C595654C7E23670359CB76D99 /* secp256k1_swift-iOS-dummy.m */, - E26835835263C5B5310353A54E6AA37E /* secp256k1_swift-iOS-prefix.pch */, - D08241C8DB918E40A54A24828275D1C5 /* secp256k1_swift-iOS-umbrella.h */, - EA5498F48A9D57F5578FB70B8544C14C /* secp256k1_swift-macOS.modulemap */, - 8CC8A14105420D222F37BBB95BFBF1A3 /* secp256k1_swift-macOS.xcconfig */, - FB320DD9FD83A5F3BAADF33818736C30 /* secp256k1_swift-macOS-dummy.m */, - C06A130503E666429FAF2F0101641EE7 /* secp256k1_swift-macOS-prefix.pch */, - 1BBCD0009252A5C66FFA6A2EDAE25173 /* secp256k1_swift-macOS-umbrella.h */, + 3DBE2043CF545B45F21A7018D7A70CBD /* PromiseKit.modulemap */, + 3F1CF8D01D9020575F785235F3DA02E3 /* PromiseKit.xcconfig */, + 48BA6005A2D0AC9C0B7C4A47958A6F80 /* PromiseKit-dummy.m */, + 0A518C6FBE9C3B3FBF40D4CDCE3BA5A7 /* PromiseKit-prefix.pch */, + 04464806E7EED788DFE4F8D62793DD29 /* PromiseKit-umbrella.h */, + 8600E5A6A0625E96185A2CB9DE5C8AF8 /* PromiseKit.root-CorePromise-Foundation.modulemap */, + 4AA4C4E3B71B38DD9AC53FDE78CAE9EA /* PromiseKit.root-CorePromise-Foundation.xcconfig */, + 452B760316F8326FC21782A105163581 /* PromiseKit.root-CorePromise-Foundation-dummy.m */, + A66575F75BF4F824ED46DE58E80DBCF7 /* PromiseKit.root-CorePromise-Foundation-prefix.pch */, + DA0CDB938B1F875D679C20362C887E17 /* PromiseKit.root-CorePromise-Foundation-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/secp256k1_swift-iOS"; + path = "../Target Support Files/PromiseKit"; sourceTree = ""; }; - A33DC2AD3BADDA5A006F792ED154E7A5 /* Support Files */ = { + 90EB5AB3714019B65122FF61FCF31803 /* Result */ = { isa = PBXGroup; children = ( - B5874904C32DED94E05CFD33023E2A19 /* SwiftRLP-iOS.modulemap */, - E34EBA5D815562B6AEF202EEF42D4456 /* SwiftRLP-iOS.xcconfig */, - D4294CA40AB575970217A19CAA320DC0 /* SwiftRLP-iOS-dummy.m */, - EBF499BFE8AA65F3D4DF5B33BA57DC88 /* SwiftRLP-iOS-prefix.pch */, - F03C5346C1BA44E2325916DC9CE7B67B /* SwiftRLP-iOS-umbrella.h */, - 83818CBF92E26919EE29AD92612A44AF /* SwiftRLP-macOS.modulemap */, - 3D2AD51705C652FD9094CEDC59DFB4FC /* SwiftRLP-macOS.xcconfig */, - 41F99637E28F2B9DC1A86CD6B490CE52 /* SwiftRLP-macOS-dummy.m */, - 750CBC755AD04183E9D574E073F02223 /* SwiftRLP-macOS-prefix.pch */, - 5447D2654ABD868EB73A2BF12AD74DE8 /* SwiftRLP-macOS-umbrella.h */, + 3F90DB66AA0BD6E09A8253873368008F /* AnyError.swift */, + F20EF6148A6A9322390DD71721B5343D /* NoError.swift */, + 874DB4C8A2FF4D5197C42063F7939C9A /* Result.swift */, + 85CA122AC057DBDA1FC65BCB8FC33684 /* ResultProtocol.swift */, + 0BFEFDA3C060A520AC31181B2B963F58 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftRLP-iOS"; + name = Result; + path = Result; sourceTree = ""; }; - A5E4D51B8435BEA960C87E86236F1E08 /* Support Files */ = { + 922AFC21F176C35CEE509B534B859943 /* Support Files */ = { isa = PBXGroup; children = ( - 82E0889BDE7E61BD4767DCF66AB18FF7 /* CryptoSwift-iOS.modulemap */, - B6112FCF75FBFC58E314A40652665F06 /* CryptoSwift-iOS.xcconfig */, - 09536C3B22879E31B5C0B3426E2FEBCA /* CryptoSwift-iOS-dummy.m */, - 09601767E682E0D86F15EF42B2DCAD46 /* CryptoSwift-iOS-prefix.pch */, - F310D1B89DD81708BBBAED0DDF1B1168 /* CryptoSwift-iOS-umbrella.h */, - 9E8B25F37CB474A2BE03252DDC5BA0BE /* CryptoSwift-macOS.modulemap */, - E79185DFEB64004C5523F725F3DC89B0 /* CryptoSwift-macOS.xcconfig */, - D8D1F94E4F2A45EC9F2154127E14D416 /* CryptoSwift-macOS-dummy.m */, - 39A04A76F1A947E73DA6CC6FE271B82D /* CryptoSwift-macOS-prefix.pch */, - 26BEF092AF19B017CCEAC5BD6EDFADBC /* CryptoSwift-macOS-umbrella.h */, + D357F7F273D21A9292686CC024C470A2 /* EthereumAddress-iOS.modulemap */, + C0E00E27FCA499ADCF69CE2096BEF87F /* EthereumAddress-iOS.xcconfig */, + 38C29EC87775E098CCEE6CEB4ABA65AA /* EthereumAddress-iOS-dummy.m */, + AB8B8D38C22598577C2C6551CEC1D7D0 /* EthereumAddress-iOS-prefix.pch */, + 76C5F543BD9B25774CA35CF7FA0546B3 /* EthereumAddress-iOS-umbrella.h */, + 21BC35B1C593381A32229DF8C9804F62 /* EthereumAddress-macOS.modulemap */, + 82CF9E45F65C5A3FF604607C66EAC29D /* EthereumAddress-macOS.xcconfig */, + B4F5205894DF6FD73EF8CFA7609DA7D9 /* EthereumAddress-macOS-dummy.m */, + 6EABC2B68783D8B14904AB78123DF869 /* EthereumAddress-macOS-prefix.pch */, + 59AB171D72BF347C5F7A067C2AAB5384 /* EthereumAddress-macOS-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/CryptoSwift-iOS"; + path = "../Target Support Files/EthereumAddress-iOS"; sourceTree = ""; }; - A8CB084B7ACB8AC7C10C0B25D0347442 /* Support Files */ = { + 9F0ACAD8B1C23047839392A42456AF61 /* Support Files */ = { isa = PBXGroup; children = ( - A7C42C91EB3AFB8674EB313560E4D9A8 /* EthereumAddress-iOS.modulemap */, - AD76DBA7730870FE66D77B1FC33E49E0 /* EthereumAddress-iOS.xcconfig */, - 23299E01AF2849576AF87D2A3EB8D494 /* EthereumAddress-iOS-dummy.m */, - 28F6D61D90FB438C4CB2856FA258E35B /* EthereumAddress-iOS-prefix.pch */, - 4A2766B8B12BFE63523151BC3F80CDF4 /* EthereumAddress-iOS-umbrella.h */, - 5C3CED0A47AF7E341A3EBD1849B12F6F /* EthereumAddress-macOS.modulemap */, - AA1E87AB6BC235D2BF0B5287F5ADD105 /* EthereumAddress-macOS.xcconfig */, - 4BF61EAD9C9EC96163CECACFBF3504C3 /* EthereumAddress-macOS-dummy.m */, - 121546801BC1F73B1E78D3BA38876A8C /* EthereumAddress-macOS-prefix.pch */, - 0A734506E75FE208AFB8DA726262FFEC /* EthereumAddress-macOS-umbrella.h */, + 55D66ED5651595B335B313C540A13D8E /* SwiftRLP-iOS.modulemap */, + 9D6306B3BC57BAEB50815C5FBBFC8CB4 /* SwiftRLP-iOS.xcconfig */, + 73A68F048F801AD8527F07F7706E57CE /* SwiftRLP-iOS-dummy.m */, + E4D925299799CBB413016810B41EB65C /* SwiftRLP-iOS-prefix.pch */, + 1250F72B02037FC0CC2220F528B17381 /* SwiftRLP-iOS-umbrella.h */, + 0E7AC8F7B30BB74533D51C9515BE9258 /* SwiftRLP-macOS.modulemap */, + EF8327584F2BDEC27C9163F51CDEFB9E /* SwiftRLP-macOS.xcconfig */, + ED9E675BBBC75B01E6961483170B6E7F /* SwiftRLP-macOS-dummy.m */, + B9D41263F9CA47F4367384A4B93B0DDA /* SwiftRLP-macOS-prefix.pch */, + 3E1A2664214C7FF4C93A67058FDACDE9 /* SwiftRLP-macOS-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/EthereumAddress-iOS"; + path = "../Target Support Files/SwiftRLP-iOS"; sourceTree = ""; }; AAB417525B4AA28CC55EECA7CFDAB251 /* Pods-web3swift-iOS */ = { @@ -1594,240 +1710,267 @@ path = "Target Support Files/Pods-web3swift-iOS"; sourceTree = ""; }; - BC988C585F01918CDC758DA84387BAF3 /* Products */ = { + AEAD5D9B473E4A71E8CFAE0F15721DB9 /* Support Files */ = { isa = PBXGroup; children = ( - AC8ED311289866CD8ED870EF0C3C5CF3 /* libBigInt-iOS.a */, - EF13999388904A7883CEA9B745018AAF /* libBigInt-macOS.a */, - A8865640371B98CE908E1A9A63C4B984 /* libCryptoSwift-iOS.a */, - 4D5B77EB47B2435BCBF83C39D0D576F5 /* libCryptoSwift-macOS.a */, - 97504B2FA23741AEEDD649E58BF39870 /* libEthereumAddress-iOS.a */, - 53C768170DFB632A3ADBD2A703116B8E /* libEthereumAddress-macOS.a */, - D275AC61F658F73CFA8823434BCA3406 /* libPods-web3swift-iOS.a */, - FF66C3EFCA475A91734C76A5D546BE1A /* libPods-web3swift-iOS_Tests.a */, - 1DF1726C7221A0B7805EF3E180CE8007 /* libPods-web3swift-macOS.a */, - 7573EC5C506627456A38A22DC6C134BA /* libPods-web3swift-macOS_Tests.a */, - 10E2FD109C104BBFF96C8BEAE5D93A6E /* libPromiseKit.a */, - A09088A41F90C0893A27DEF1C26D11AB /* libPromiseKit.root-CorePromise-Foundation.a */, - 666BE65938A502C928B35D6EB5CA9FDA /* libResult-iOS.a */, - 75DE42DDF2D327BA352CD0F8C0DA4B0F /* libResult-macOS.a */, - 17F353B4B162974207D9F48A62765D99 /* libscrypt-iOS.a */, - F4F0BCD366AE2D51D6C35C2192996DBD /* libscrypt-macOS.a */, - 20D278014F2D90DDD7C703E49B6727B7 /* libsecp256k1_swift-iOS.a */, - 4C332617281C7BEB03040C92EF610543 /* libsecp256k1_swift-macOS.a */, - F99CCF5FD903883FB3C524CA2FB43E2C /* libSipHash-iOS.a */, - 58D4D38A480BA09A08C8523AF72783C5 /* libSipHash-macOS.a */, - FDADCB9A8CD9274EA3AC09BE3B7E0F66 /* libSwiftRLP-iOS.a */, - 6A0F097AEAD44F8F983B8D4F884FDE42 /* libSwiftRLP-macOS.a */, + 398E3F38AA4E4F1F69F6BFA75A49E0C1 /* SipHash-iOS.modulemap */, + 92CB38F782D33EF495F861851E047FA9 /* SipHash-iOS.xcconfig */, + 20C577019086BC2EE2D24C2E5BF910AF /* SipHash-iOS-dummy.m */, + 01B9E8C5A331C30CF0ACEF7187948418 /* SipHash-iOS-prefix.pch */, + 48FCAFD34D22FB4A18FEF12007E2FAB3 /* SipHash-iOS-umbrella.h */, + 9B0A389595178AEDBFBB0B44514CEBD3 /* SipHash-macOS.modulemap */, + 5992F89681D6639D6E83FBDCE269A688 /* SipHash-macOS.xcconfig */, + BF0D275DC3AF207D0A444A28CB773AA5 /* SipHash-macOS-dummy.m */, + B581065FDD5347ECD262D51E19274EB6 /* SipHash-macOS-prefix.pch */, + A44AEA30AD48DB0294CA791DF2D0996B /* SipHash-macOS-umbrella.h */, ); - name = Products; + name = "Support Files"; + path = "../Target Support Files/SipHash-iOS"; sourceTree = ""; }; - C983EA1AC8F89B7B13410C24C8F9C35D /* Support Files */ = { + B028E45757F11470855CBBF5A23509C8 /* CorePromise */ = { isa = PBXGroup; children = ( - 8ED7C1CFBF67F4C0CD5645DF35F608F7 /* scrypt-iOS.modulemap */, - 0DE0997E93980E728205BE4BF37B5FBC /* scrypt-iOS.xcconfig */, - F0866AEDD788E4D8B51A31A2FB8C294F /* scrypt-iOS-dummy.m */, - 656AF5A70C93A14D7EF9E1E97A73DA9F /* scrypt-iOS-prefix.pch */, - F84F141F7B6CD4974D2BDD888FE19496 /* scrypt-iOS-umbrella.h */, - A0CE29B48517362C21FF1B3F9DCB7619 /* scrypt-macOS.modulemap */, - 80E74674EB94CDFBB8B77B11BACD6046 /* scrypt-macOS.xcconfig */, - 51FC3239F6613D1D7AE1AAD0F3204A0F /* scrypt-macOS-dummy.m */, - C4D487F201A77E03F9ADC03703A1A897 /* scrypt-macOS-prefix.pch */, - F60B61CB7F6EF778CD12A3622F779434 /* scrypt-macOS-umbrella.h */, + 7FB5F00D821CDC9BDA7F7709F07DD0F3 /* after.m */, + DE9BBD4AE4B529B25E9E4FE7C8493181 /* after.swift */, + 9BF71F803FD375964F60D0271834711E /* AnyPromise.h */, + DF72EE1FD04A0B49CB495E9980F6B8A9 /* AnyPromise.m */, + 71C4ACD478692712EEF2FF8BB7F4A160 /* AnyPromise.swift */, + BBE693F0F5E15CCA4AE9D51B9A369B70 /* Box.swift */, + 96C4685C831E862AD0F75DC78A3A5B61 /* Catchable.swift */, + 70E24C26EF4EF9C8244E7F94F175FD51 /* Configuration.swift */, + F0EE85F786503354B347C059417EBAD2 /* CustomStringConvertible.swift */, + C9A9A0105BAE9E5BEE9ADD4B17A58DD8 /* Deprecations.swift */, + 247DF1F9FE8902AA1A74867E7854662F /* dispatch_promise.m */, + 81392F0749049A8C999337DDA716A157 /* Error.swift */, + 6FE7344E86789EA2ACF6B000EE6E0275 /* firstly.swift */, + F7E0FE543A2A814147E52BD4424892FD /* fwd.h */, + 9EFC88D3858F1B2D4952BAA697C360D3 /* Guarantee.swift */, + DD5583797A4DF2B5636D036CDD472CD0 /* hang.m */, + 79B85C952F225CDFB5B272237402E77E /* hang.swift */, + C4D8573A6F8E2A67DD73406C5B3ECBB5 /* join.m */, + B621DCE8D325B673C6F300B7C2CD478B /* Promise.swift */, + 3EB87A244E5248ADD8D124225B21323F /* PromiseKit.h */, + 20F31FF3FC3A98D10214EF6C7199FCB5 /* race.m */, + C799FC61BB50110B0EF9812635A7CF8F /* race.swift */, + F265D345562C600DE93E2D4EA31ED76D /* Resolver.swift */, + 582D7324492EFDB22783F0B7B2FA6859 /* Thenable.swift */, + 8E0D3EDB8E94AA59C54E4808C60A2744 /* when.m */, + 1E4426237EBEE47CAC169D6291F77423 /* when.swift */, ); - name = "Support Files"; - path = "../Target Support Files/scrypt-iOS"; + name = CorePromise; + sourceTree = ""; + }; + B385790646FED40DF16835CC304DB065 /* Pods */ = { + isa = PBXGroup; + children = ( + 667472FEE28006D1990700DD108F738A /* BigInt */, + E615489C131A7CB2245346A21FB09B1A /* CryptoSwift */, + 8278DAD857B26B2BCCF14D6CB39B7481 /* EthereumABI */, + 4DECEA9BC9FC9324DD3E2337452CD61B /* EthereumAddress */, + 455CF9C0C54FD8B35634D81F5E38ED46 /* PromiseKit */, + 90EB5AB3714019B65122FF61FCF31803 /* Result */, + 4952837D3F6017272786DEA472A72078 /* scrypt */, + 8B205D5F3CE3499689DA8259838002E7 /* secp256k1_swift */, + 34FAF2B4032D60B58F23F807B4871923 /* SipHash */, + 04D344FA994D64D74F3957A5E07D7003 /* SwiftRLP */, + ); + name = Pods; + sourceTree = ""; + }; + C584BCF64FE7C44F77E0DC8BBCA5046B /* Foundation */ = { + isa = PBXGroup; + children = ( + 75D8491537B933BEB0BB26FA5415C295 /* afterlife.swift */, + D895276EEA2D99E4EBF5B7FE4596872B /* NSNotificationCenter+AnyPromise.h */, + 59463535BD4D6DAD08D36EAF4421D11D /* NSNotificationCenter+AnyPromise.m */, + CF31935E8E71BE039924EA648A315B8D /* NSNotificationCenter+Promise.swift */, + 8E664638E84199C40F931B3593272F8D /* NSObject+Promise.swift */, + DAB40084682C161CD573420C8CCBFD4F /* NSTask+AnyPromise.h */, + 4FFFD5E940B31BAEC3CCFD05B093B6F8 /* NSTask+AnyPromise.m */, + F269536FCE8F92893C1DF08F94904EBD /* NSURLSession+AnyPromise.h */, + B2AE7121F5348D2FDCD4FD763A42FB0C /* NSURLSession+AnyPromise.m */, + 49C5823B0C264F4AC2DF38C68F097FEA /* NSURLSession+Promise.swift */, + 948894E3D7054F9BEAA31B5D6061F696 /* PMKFoundation.h */, + 8C42ABDF3D43E8CFBE45DFA6DF97E084 /* Process+Promise.swift */, + ); + name = Foundation; sourceTree = ""; }; - D62BC46C0C93C11AECF63AC21156635E /* UIKit */ = { + C9D721D47F8E2604C59F3C672BD6200D /* UIKit */ = { isa = PBXGroup; children = ( - 614D3F652018D0D4BB869BAEEC3BFA5D /* PMKUIKit.h */, - 632F66F6756738B3DBCD9FE0F29FD51D /* UIView+AnyPromise.h */, - AFD5882A04E0E27679FE6AAC8D9CA935 /* UIView+AnyPromise.m */, - E90C5426B3E9CBBCF9A8B6731836D354 /* UIView+Promise.swift */, - 8787D00BE428B5C383E25BF2ABB38CC4 /* UIViewController+AnyPromise.h */, - 506B39E37C9D076FA278322A078D548D /* UIViewController+AnyPromise.m */, - 2D4F789F0354155D07BB3A1463344281 /* UIViewPropertyAnimator+Promise.swift */, + 92641023C5257B4110F73449FAC652E7 /* PMKUIKit.h */, + 8E3F5E519E5ED0A4BAF423C7DBB12042 /* UIView+AnyPromise.h */, + EE9322C93C8E91E65E7CE9C01CB02F70 /* UIView+AnyPromise.m */, + 3F4EAABE2F37A5C4CBF734D74EA94EBB /* UIView+Promise.swift */, + E94EF5B041036E702BC404B7118A8F9E /* UIViewController+AnyPromise.h */, + 05CC03039B7AACA3DE3D601125B19CC6 /* UIViewController+AnyPromise.m */, + C279D46376D66FBA43CD88224B12208B /* UIViewPropertyAnimator+Promise.swift */, ); name = UIKit; sourceTree = ""; }; - D744BED64DE3B64CE5A12B74A22D228D /* BigInt */ = { + D7921E3D8BD461440A67CF8BAEB281B9 /* Support Files */ = { isa = PBXGroup; children = ( - 3487EA794F9422FD28689C37156DD9FE /* Addition.swift */, - 8AF5980AB239F34C8CB958F30A518A0B /* BigInt.swift */, - 6633CE6E0F4DA082E8A3374A723A4844 /* BigUInt.swift */, - D1FC3BBD92A37B6D1B9844791FDD7F86 /* Bitwise Ops.swift */, - 8EA80C3235171417958F658E327CCF8E /* Codable.swift */, - 809F44457475B204EE242D251FDF9E8E /* Comparable.swift */, - 755E0B91B0984ADEF77E48E32C147276 /* Data Conversion.swift */, - 1A86CAF979F3E970071A5FC47D9D7EAC /* Division.swift */, - 89B539CEC7927EBE7BBF7262580A0E18 /* Exponentiation.swift */, - 9D5F98CA61161B592980B259143F48F5 /* Floating Point Conversion.swift */, - CB4E43C9EB1F78AD84B2314039898608 /* GCD.swift */, - BD14A2D2C9467CDF73E9EC39F2B97E62 /* Hashable.swift */, - 78AC661E237EC28BD38872134D7F7E2B /* Integer Conversion.swift */, - 58F3E29F9DFEE63DA2847094AA590666 /* Multiplication.swift */, - F218E50D513522160983106C90B34FBE /* Prime Test.swift */, - 9787E8C8BA8DAE16D659DA569EECED22 /* Random.swift */, - 7953EE95375573E978E0FAC7F88260CF /* Shifts.swift */, - 491E82F8B7D6BC0F752EEA10F629435A /* Square Root.swift */, - F32BA5AE4C0BE79090A24F00A3F35AFF /* Strideable.swift */, - 682CE9677672C1F944AA2896D3BD36FF /* String Conversion.swift */, - 5DFE72A11A0AF97FFCEBDF19EC395F74 /* Subtraction.swift */, - 73043D2C83B1F1E5EC8F0E15C2CFE5A5 /* Words and Bits.swift */, - 717DC5E859A757E25C926AA3C8443397 /* Support Files */, + 6351DFCD3C033CA154E8C9D3D8D38EFE /* CryptoSwift-iOS.modulemap */, + 89525730C7E22C66FB7ADAB11E2073A0 /* CryptoSwift-iOS.xcconfig */, + 6907C77858F6612BF4232E34D8D30C3F /* CryptoSwift-iOS-dummy.m */, + 1341B693AC58D9D488B5E6F8B568097B /* CryptoSwift-iOS-prefix.pch */, + 303781526174E2DFA273950F9C1AEDBC /* CryptoSwift-iOS-umbrella.h */, + 7579B6CD74CBC80D0509F34F78A83B1D /* CryptoSwift-macOS.modulemap */, + 7C70A16BA860E5B4A9A806F25EE3F472 /* CryptoSwift-macOS.xcconfig */, + 3B9103BCEE6F57F21DC2CDA536BA8D0F /* CryptoSwift-macOS-dummy.m */, + 64748EC305E00E02356EB0F312458ADE /* CryptoSwift-macOS-prefix.pch */, + D8EC3860FD1A1DA54C00A1498D1F1D9E /* CryptoSwift-macOS-umbrella.h */, ); - name = BigInt; - path = BigInt; + name = "Support Files"; + path = "../Target Support Files/CryptoSwift-iOS"; sourceTree = ""; }; - F026F54B353351B219A0C4BE3E0C2871 /* CorePromise */ = { + E36023E8575313B31CF8B6B497F4FFBA /* Support Files */ = { isa = PBXGroup; children = ( - 5297103B37D2E5083D67ABE2C60CA382 /* after.m */, - E022DA9B1DCAC9A88B18D90457826545 /* after.swift */, - 2BE63C0E40FA294F6C512967711E56D9 /* AnyPromise.h */, - 635C328C2CAB4B34DEF69D8CFABA3AC1 /* AnyPromise.m */, - 7695A9A41BFEEAD40C0235B913A07672 /* AnyPromise.swift */, - 3D6CFCC98052B542B8BD8050E0204993 /* Box.swift */, - FF94FCFAAA2F4216A2F89F43E2CDA4DA /* Catchable.swift */, - 01271B2BB62FE2D72466A630AC9D1BE8 /* Configuration.swift */, - 0EA0E0A67D5738512E4618E1AEDA5E3E /* CustomStringConvertible.swift */, - ED4A3438C4739D717703BAE1F7020595 /* Deprecations.swift */, - 8C3F64F8D233B557ADBCBAB5F8D81F1E /* dispatch_promise.m */, - CEA9421290E9294FEA25D9F6D3DDD24C /* Error.swift */, - 0C57A83FBD44C769166BCCC5CD45BD3F /* firstly.swift */, - 40ABB4750B401A88B273D3B180C1FEC9 /* fwd.h */, - 0B152212D05CB08C4E0B61D8CDFF12C9 /* Guarantee.swift */, - FD3D00DC2D85B010C2EB60CA78D22508 /* hang.m */, - 145A69383BF153D7728F4793AB68C3C4 /* hang.swift */, - D7009940ED0BFC1AA385433559754C27 /* join.m */, - 68CD2728F142362B577571D597A953D0 /* Promise.swift */, - 0E67F7B0700CACBB7DFD27A88EFF75C2 /* PromiseKit.h */, - 358F7A798EA72C8BFA7C4AA5D7A22723 /* race.m */, - C21956F497DCFA1D883CAC00AF330784 /* race.swift */, - 25E9E042655265AEB9322FB01DD7A702 /* Resolver.swift */, - 982B03AB9D403479BF865D7C3A5B2D4F /* Thenable.swift */, - 612CB1FE4A4EF26D20DC64543E17C82A /* when.m */, - 85BEAAA1888D13FCFC9F1C2AB3A7ABBD /* when.swift */, + 91BAFA9B3EE9063DDE5057E56DC627DC /* BigInt-iOS.modulemap */, + 2AD338DD23B43013308A65379BAEC16C /* BigInt-iOS.xcconfig */, + 7E74F31CDCAA43E3665CAB99746882DD /* BigInt-iOS-dummy.m */, + 972E60F406627ED35849A8F617B3ECBD /* BigInt-iOS-prefix.pch */, + 6A105001ACFD1F5004F2225CB06D4CCA /* BigInt-iOS-umbrella.h */, + EABECB99AFE1BF549F3CEE90FBD45E98 /* BigInt-macOS.modulemap */, + 08A99F6D5C3E452229D15E3E8C1660F3 /* BigInt-macOS.xcconfig */, + CF8798C22F31053E2D6EAF35C011146D /* BigInt-macOS-dummy.m */, + 04B39BEAD1520A1D6783A85DE2C51340 /* BigInt-macOS-prefix.pch */, + 6F0A15233EFEAA840C94D98DFD9C1F14 /* BigInt-macOS-umbrella.h */, ); - name = CorePromise; + name = "Support Files"; + path = "../Target Support Files/BigInt-iOS"; sourceTree = ""; }; - F60B65C0BEC31AA822288722889BD576 /* secp256k1_swift */ = { + E615489C131A7CB2245346A21FB09B1A /* CryptoSwift */ = { isa = PBXGroup; children = ( - 80353B76ABA10ED9D59C18FDA6A16285 /* basic-config.h */, - 2AF08003360A2A59E3E059CBC5496E71 /* ecdsa.h */, - B2E36C3B29C59A6C972DBF40C0EF93D5 /* ecdsa_impl.h */, - EE8A73B5FBE9F82E34238AC840FC7331 /* eckey.h */, - 678FC45FCDC1237D6344CFADDB22F228 /* eckey_impl.h */, - 310A618141B833B61214988468629C13 /* ecmult.h */, - 3E5F93B0E61748A9D9906D3305A41EA8 /* ecmult_const.h */, - B177F4FEBB7F565C10EB6AABDF0CFB6C /* ecmult_const_impl.h */, - 0554DC016A3872F60738FE5C366CAF31 /* ecmult_gen.h */, - 062A95E74B96944BC0E3A674E72AE85E /* ecmult_gen_impl.h */, - DF39D90FCE7EA42EF346003BA8EF96AF /* ecmult_impl.h */, - 2BC7202C545EAC46F224EE9AB6B1F0F7 /* field.h */, - 531B65B7CD936ABCBE9D4C182A88CDF0 /* field_10x26.h */, - 9821B82F2A2D9E9E0A740B6B4B38A6AB /* field_10x26_impl.h */, - C66DD520FECE2C1EE69FD6A9E23EA032 /* field_5x52.h */, - 282DD884F817856F0FD3D38F8A4447B1 /* field_5x52_asm_impl.h */, - 3E8F4C6770C979220F90AD2CBA4EA3CE /* field_5x52_impl.h */, - 5540F42E4F8BF99A1C7F95349EA8707D /* field_5x52_int128_impl.h */, - 3C9CD6920241610BE46DBB9D591849AD /* field_impl.h */, - AEB5F00EFE918C35C091FD2FA7EACBF5 /* group.h */, - 681146D3345FF5156D09E271666D5EA1 /* group_impl.h */, - 9D1AB32F0AE7B734159BB1FBAF7F5078 /* hash.h */, - 3ED371C14676A66BA35BCF542FF8B548 /* hash_impl.h */, - CA97BDA6DF1DE11A96470DBF6FBD7C62 /* lax_der_parsing.c */, - D9A9A6187028CC6AD623334BA2899FDE /* lax_der_parsing.h */, - 1D7B42933B2D81EED52706C7200A9732 /* lax_der_privatekey_parsing.c */, - 7D903E031FC7FD31DA94E1EC68778019 /* lax_der_privatekey_parsing.h */, - 255F9BD02565315A20D36910794D0C10 /* libsecp256k1-config.h */, - AEA94352D4A3D0793D359A8C1CB50E4A /* main_impl.h */, - 1EDD6BBAF4F23E405AA0CA5AA2837BD9 /* main_impl.h */, - EB3A44C98D1E93465803241C08887CDD /* num.h */, - 63C148A221559836C278AFFB2F0C6D3D /* num_gmp.h */, - 3E75AF68728F33A9AC112BE223CA6718 /* num_gmp_impl.h */, - BA200D6941B69ACC080DFB132BEFF422 /* num_impl.h */, - 944A08F05724AD8D1EC4F7FF0D09BFE6 /* scalar.h */, - B9737D99B060F85A0A42A3A30335B14F /* scalar_4x64.h */, - D8241FAE07EC659EA8EE9D035AB05377 /* scalar_4x64_impl.h */, - 423E241FA5BBF42BFDDA5E6C6AD2DEB9 /* scalar_8x32.h */, - 7388674CDE22815644490821F0CB757B /* scalar_8x32_impl.h */, - 37B67C2B42A2EC2E689AE41636261351 /* scalar_impl.h */, - 08390C702E93A122CAC37BDF6A07A98C /* scalar_low.h */, - 5595E1873CFBC6061E8C6D86BFF12807 /* scalar_low_impl.h */, - 3ED02D5B7EB6BD54C515B4B06599DA5F /* scratch.h */, - 93A5B46AC7CC995589CAA3D991DC1B29 /* scratch_impl.h */, - 7DF576FC1DAC9EC11DA44099F4F50AFE /* secp256k1.c */, - 3E8DAE988F4403CE8B047E936F2B4AE1 /* secp256k1.h */, - F8262D72960A17572931F11EC9520938 /* secp256k1.swift */, - 07CB743A805B99BE84DD49F8D999BF5C /* secp256k1_ecdh.h */, - F5AA52D2E5DC0134CBA0CB3219327A53 /* secp256k1_recovery.h */, - E7E7786C2EC1054AF047E2571B12205F /* util.h */, - 9F433791C3C200F7BC10E40694405F12 /* Support Files */, + 05DB571F7562C6E5DAC821BF33DF2ACE /* AEAD.swift */, + F8C27B7CBA5225481973EDA23AF49981 /* AEADChaCha20Poly1305.swift */, + 32E6FCC003B1158AFE68C8101E9DC9B0 /* AES.swift */, + D9883A143C0F77B2C2AF7E05BF805F25 /* AES+Foundation.swift */, + B453F34A70203AF07F27C5AE1B2A0518 /* AES.Cryptors.swift */, + 5430F65435F42C41489D6A5D36494E0B /* Array+Extension.swift */, + 0FC232D3CEB1791A116CFCB46BCCE606 /* Array+Foundation.swift */, + 6E53BAD514C4F4E022EEBCEB1ABC3943 /* Authenticator.swift */, + 36F3DF43B9422FD5916A6C75F9C68568 /* BatchedCollection.swift */, + 92C1E2F71DB75395E28DC3213425381D /* Bit.swift */, + E4992855757033544670BD38D4484C08 /* BlockCipher.swift */, + 38E248D955FFD067941A82DF6B7B3C4F /* BlockDecryptor.swift */, + 3F9EE37EACAF96F7344C1F0AEA46F02C /* BlockEncryptor.swift */, + 00E773D6D25B2A450D593D189B85B7DA /* BlockMode.swift */, + B5CBF6B2F887499D9631619E0D53008D /* BlockModeOptions.swift */, + F063BD5FB8772F058E36A1292962E899 /* Blowfish.swift */, + FB31CE10E8BEEBFC7B50C9F8A97E10A8 /* Blowfish+Foundation.swift */, + 224F4E958C4909EF47CB0A9F43F48030 /* CBC.swift */, + 9883FCDA0DBDA6DCA8C5923AB1B3F45A /* CBCMAC.swift */, + 31BA61BBC2E9A900CDFD9106099E71AF /* CCM.swift */, + 3649CFBA1E54D6AD5C50879B03ED6866 /* CFB.swift */, + F62C08D51F07D8799AD6CB646A710F41 /* ChaCha20.swift */, + FA93B396CDC9BA5785D41386B95B4AE2 /* ChaCha20+Foundation.swift */, + 43C25934B3D3377624DF16153BF76578 /* Checksum.swift */, + D62515D5BE9A59FE5C9041B4EBE9CA58 /* Cipher.swift */, + E1D1692A2F154E2828E569943ED540D4 /* CipherModeWorker.swift */, + 89EE579B1A3A156C9DE84CC0E9CC7F51 /* CMAC.swift */, + 67F74D8CA41DCC5236159301ED92764C /* Collection+Extension.swift */, + 6C619FA5855429D15B556163471403E5 /* CompactMap.swift */, + 1F2F682F960F536C585085773DF5BBA1 /* Cryptor.swift */, + 89BECCA6149031B2659A0EECDCC2E4A5 /* Cryptors.swift */, + 8A3D345B7D38F0B4BAB39F24505D5E5E /* CTR.swift */, + BDD6E2BFD8131F124DFD131BA3C6D90E /* Data+Extension.swift */, + 721ECA637BED3AE2394AA1573B89D998 /* Digest.swift */, + C14CAC03510776AA4E99EA944110DFD9 /* DigestType.swift */, + 6F1D20DF17340D045A1FDC2D1D64449D /* ECB.swift */, + 5B830B448B480E1AE7466CE0AB7565D1 /* GCM.swift */, + 3EF69CEB8B2C8F6223E5A84FF9855D71 /* Generics.swift */, + 0FFAEDF6DDF0B48C4B8E16F6F9C59A5F /* HKDF.swift */, + FEDDAEEE4BC31C06BAE2232AFCA5468E /* HMAC.swift */, + FAF14DF7DD65D242909C4D06F8C00DEF /* HMAC+Foundation.swift */, + 6E6BBA6411A89BD966DF62BE90EE478C /* Int+Extension.swift */, + 3BDFDE509786CC72B0B5EBBB87F54C14 /* MD5.swift */, + B8172257020A0ACF61B9FA6264236BB6 /* NoPadding.swift */, + 258EB69CA13649BFEBC389916A418DAD /* OFB.swift */, + B468DE556C27A7C396C7B5ECC7DCF12E /* Operators.swift */, + 3654C41FDB74088592DA713158476E5B /* Padding.swift */, + A31357292CDC03F5F3AEA4C1065BCDBF /* PBKDF1.swift */, + 5BBEB708E926639930327B2FC6F3759D /* PBKDF2.swift */, + 1E0CB4379D0092F51F5C1232B3CD03D3 /* PCBC.swift */, + F964C89C691E6FE6350F48A4A3E1DD52 /* PKCS5.swift */, + 8C5181B2E5F94EAFEF5F04D83E0FFD13 /* PKCS7.swift */, + 45F5F772F0EEFC0C3E42DAF65DB4121F /* PKCS7Padding.swift */, + C174EE4F0CE9A869F2E898CFF8A36484 /* Poly1305.swift */, + 129427E2D354B71D619F0DAC197039BD /* Rabbit.swift */, + 7DCC7CDEAA23666C0D7F819861149F89 /* Rabbit+Foundation.swift */, + F42AC215BDD4E22070E88E9837549CD1 /* RandomBytesSequence.swift */, + 16973E34A2E1AB31C96F6ECF88E284D7 /* SecureBytes.swift */, + CDFC58447BAB63CE30E97C059F8345F5 /* SHA1.swift */, + 840549A6DE0F91C91EE1712E3C57D6ED /* SHA2.swift */, + 4C1637249D7E9C69FBC55792F4BFF580 /* SHA3.swift */, + 7C5AAAD0BEA7AB575EE1203992B86F82 /* StreamDecryptor.swift */, + 575A44CBD254AB2012072A25C3D25D19 /* StreamEncryptor.swift */, + C0A59FDACCE16F10DF39EA55249CA72D /* String+Extension.swift */, + D2742B99A93E16E813DA0B71800AAA56 /* String+FoundationExtension.swift */, + F60D6D403033B0F37C22533C4A05A1E4 /* UInt128.swift */, + 7E5CE0F5663064C7672E5299F1B3B7DF /* UInt16+Extension.swift */, + 857BD06ABAFBE1C5C176886E254BE8E6 /* UInt32+Extension.swift */, + BA94DDC1F5525609A6FBA3EB53F09037 /* UInt64+Extension.swift */, + AD5252D2AAE2CE2F1FFDA208DD0EFB4C /* UInt8+Extension.swift */, + 27DE68FEECDD098908A9003BDA40307F /* Updatable.swift */, + B5A15DC755B12D8CCABB5B073B63856F /* Utils.swift */, + F98F9737D714C11C13F01403ECACC354 /* Utils+Foundation.swift */, + D6E02047F0F6A6150C26B56EEF63F55B /* ZeroPadding.swift */, + D7921E3D8BD461440A67CF8BAEB281B9 /* Support Files */, ); - name = secp256k1_swift; - path = secp256k1_swift; + name = CryptoSwift; + path = CryptoSwift; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 0A517913ECA631FD90F898E1AC9F73FA /* Headers */ = { + 2F08BE2476997220D34CF9A4B9F6835B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F1566684B5EC4250C3F2D3F422CFD689 /* EthereumAddress-macOS-umbrella.h in Headers */, - 13D45CC6E83EFEB9467158ECB394D367 /* EthereumAddress.h in Headers */, + 54CC4EB0BFBA6950C9FF3ACBAF3E871D /* SwiftRLP-macOS-umbrella.h in Headers */, + CA9B0594A947364945D728CD48CE2675 /* SwiftRLP.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 1D082DF5FB317A292B865320EA4330E8 /* Headers */ = { + 2F394AD2ED0A538D456609456DB15F4B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 582EE7A8797F29AD814C0F877E811808 /* Pods-web3swift-macOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 263A6BE4E6989F362AA0E5FEC75D6EB8 /* Headers */ = { + 341869387793A606802DA2B2E9DC999C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 2177A7B4F26FBB839E1C3F07A82887E4 /* AnyPromise.h in Headers */, - 0EF95CCD3EF4EC40F109D9D364B6504D /* fwd.h in Headers */, - 33FA2A0C3B7394329B6B9B32D5EE53A2 /* NSNotificationCenter+AnyPromise.h in Headers */, - CFCAF13F717E0088FD8C51EE4460EBBE /* NSTask+AnyPromise.h in Headers */, - B0968028804FC340046D3FDD23551189 /* NSURLSession+AnyPromise.h in Headers */, - 59E8068AD7D81375CF6BD6C079A6CD52 /* PMKFoundation.h in Headers */, - A2913E511FD4FA1AAEB9256360C0AE51 /* PMKUIKit.h in Headers */, - DC3FC4BC15FF43709E43B8FAA2B6FD3B /* PromiseKit-umbrella.h in Headers */, - 9F7BA0F07BB50D1DE1036928BF70C2D3 /* PromiseKit.h in Headers */, - 9F386CB50D39A65571DCFD394C23D8E2 /* UIView+AnyPromise.h in Headers */, - BD0E70C62B7FC0BF874D98D6C855FE1D /* UIViewController+AnyPromise.h in Headers */, + 5916092AA6D7F2AABFCF33B48F68672B /* Pods-web3swift-macOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2F394AD2ED0A538D456609456DB15F4B /* Headers */ = { + 3A62C11C69001C7BF554031AE5C3194C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + F9A83224C63AF5F18AED311461D71668 /* BigInt-iOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3A62C11C69001C7BF554031AE5C3194C /* Headers */ = { + 3CCEBEDFD58277AE688D11C78A90CD24 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F9A83224C63AF5F18AED311461D71668 /* BigInt-iOS-umbrella.h in Headers */, + FC4AD96F8C8D695E021F598BEAB3A13D /* EthereumAddress-macOS-umbrella.h in Headers */, + 2C573766EEF17A6CCBC46524208BCA4D /* EthereumAddress.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1839,522 +1982,561 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 54DF3F44A9C01544510F7FA211E2D61A /* Headers */ = { + 41A5FC68414B08862DA3AC70C6F990E1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 11461F81975B779BC100E7345CE2D793 /* EthereumAddress-iOS-umbrella.h in Headers */, - BB8929C86AEF5AE8E8A10D8061185D47 /* EthereumAddress.h in Headers */, + 06E5B8C23C8BCD1E8F04C48C360B615E /* AnyPromise.h in Headers */, + F2976AA313F35FAE9B9112630BAEF66D /* fwd.h in Headers */, + 734152CA029292005DD1062B744B320A /* NSNotificationCenter+AnyPromise.h in Headers */, + 9E042ECCFC8FB435B85BF9193486A67C /* NSTask+AnyPromise.h in Headers */, + AA77E4FCA1931096078FD288C72D7690 /* NSURLSession+AnyPromise.h in Headers */, + FB3B4D902E0078517C1A8D1A64E0D405 /* PMKFoundation.h in Headers */, + 25B3A19A863EF1BC095B228C6CC55239 /* PromiseKit.h in Headers */, + 28228E86E8A57346F45744E805645CC7 /* PromiseKit.root-CorePromise-Foundation-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7473267694EB25007FA3A05AD22C3D27 /* Headers */ = { + 583E829B095CF5D84CEA55FCC985C749 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 946EE4F3900E73B0823B57F1AE8C47BD /* basic-config.h in Headers */, - EB61FACF6827E43E518AF99AFE8ADD09 /* ecdsa.h in Headers */, - DA74E106DB2F609C8C444565678896BB /* ecdsa_impl.h in Headers */, - 0C031445C897BFE6D124AD54FA1B39E4 /* eckey.h in Headers */, - 526530B8F45F2C42F4B731C1BC05C532 /* eckey_impl.h in Headers */, - 21DE72843C7B514A5D846FB52A8976C0 /* ecmult.h in Headers */, - FE95B067321486A5998C5DD4DF31862A /* ecmult_const.h in Headers */, - 12E1E9691B7286282223CB20A574F364 /* ecmult_const_impl.h in Headers */, - 5D3C0267F1EB78B6038FF2898C20A737 /* ecmult_gen.h in Headers */, - 35E543DC36F19E32B3EC8F6652420EEF /* ecmult_gen_impl.h in Headers */, - 3DEC2D219AA42627099A9C723B66AB97 /* ecmult_impl.h in Headers */, - 068E167EF11A07C17D688B3BBC218D34 /* field.h in Headers */, - C804D008E78513D7097A478AE1BDE395 /* field_10x26.h in Headers */, - 4971308DFA5E58345B78AA42538C65DA /* field_10x26_impl.h in Headers */, - 55368A922AD4C49FF4D8A4042ECBB7F3 /* field_5x52.h in Headers */, - 9970A7335034C125C75BF4CC2B9F3AC5 /* field_5x52_asm_impl.h in Headers */, - 81F2542193E3187EF95CC783A290D239 /* field_5x52_impl.h in Headers */, - 0EDEC46E0BC997FB64753A1C709A4AE7 /* field_5x52_int128_impl.h in Headers */, - B1B07B21B7667DE9A83B36AC03BE6175 /* field_impl.h in Headers */, - 97AF9F3B17A049614F158AFF9AA5C3FA /* group.h in Headers */, - 5D6A8FBA67FCA90E5B02979DDE6FFF43 /* group_impl.h in Headers */, - 66260581693FDC3DB887738136636C8F /* hash.h in Headers */, - 54B975339087EB52B33FD2013118BD0A /* hash_impl.h in Headers */, - 2A1509546A4F640E1538711DAC7F3FFD /* lax_der_parsing.h in Headers */, - A9B8D34EAFEA874B2B3937B7F53B5D9B /* lax_der_privatekey_parsing.h in Headers */, - 479CE094426E3868726526A833D58F21 /* libsecp256k1-config.h in Headers */, - 031B3FFCD45AD7672462A575142008AF /* main_impl.h in Headers */, - 431FDC470CFD299BE8D98F92F1B01B60 /* main_impl.h in Headers */, - 0800D78442F1F493C69F6F6C51A6A7A4 /* num.h in Headers */, - 3607BA990F6961ED7E0401406A565C07 /* num_gmp.h in Headers */, - C0DD16176212D3F5222CE6886B2A660B /* num_gmp_impl.h in Headers */, - CB57B994F6A2E96E2508F7845D1F97C3 /* num_impl.h in Headers */, - 6AD72DAC1AE026743E0DFDE9E6854763 /* scalar.h in Headers */, - CF67AD864C4CE27EECF87985CF9B287E /* scalar_4x64.h in Headers */, - 68CE1BEB5DEB9671E24DE87773BA920C /* scalar_4x64_impl.h in Headers */, - 5085168C5F297AE562EBC81151EAB02B /* scalar_8x32.h in Headers */, - EB5F9E86F880F7DADBC989EAE79A9162 /* scalar_8x32_impl.h in Headers */, - 320D4C619C3083F47C00012810B2EAC4 /* scalar_impl.h in Headers */, - C1276BB9865BF0BA0D8F4229A5202D3A /* scalar_low.h in Headers */, - 1B9FF780BC13D12AA66605DC702CE662 /* scalar_low_impl.h in Headers */, - 480D4F1A6DBDF15BDEE2611663CB3BED /* scratch.h in Headers */, - AC755B14D97E2077CB8911758996D6CC /* scratch_impl.h in Headers */, - C462144190FE4E9F45F82292FF1A629A /* secp256k1.h in Headers */, - 97D8F4B9B56316BD37A2EBCC5A2B7E51 /* secp256k1_ecdh.h in Headers */, - 318CA76F82F67216CF65AABA4466272E /* secp256k1_recovery.h in Headers */, - 8F1107E28340C0612A6D8340F38A267D /* secp256k1_swift-iOS-umbrella.h in Headers */, - 3B3E08848BF8EBA88438CCF84389B07F /* util.h in Headers */, + 13F006A331F4F7D1E7A9C31C925C8434 /* EthereumABI-iOS-umbrella.h in Headers */, + 60D4DE7DC97871E36FBF75DC91E7A248 /* EthereumABI.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7477F92785CFE4A257605FF325BEDCA8 /* Headers */ = { + 5B106CA9B70073DB5FBE37B959133AF3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DF3C881F6AA58663EA27A37DDC93CBD1 /* SipHash-iOS-umbrella.h in Headers */, + 9B45BA7080C2248A03F5AF03837C74C8 /* EthereumAddress-iOS-umbrella.h in Headers */, + A1B3C6A88101C2163062485C2B45F1E0 /* EthereumAddress.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7782F816841C0EB71FD1F1F31BE73647 /* Headers */ = { + 672DA6ADECF9F10F1DB3A0E8F143BDB6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D6B5F7FA348E6697E489142154B85107 /* AnyPromise.h in Headers */, - A59CBD16B65C3C7ACC4C7D8945875F82 /* fwd.h in Headers */, - BBA677442B33921B63BE5CD78F273813 /* NSNotificationCenter+AnyPromise.h in Headers */, - 226FF2D2465A03E4EDF572BE5AF88E19 /* NSTask+AnyPromise.h in Headers */, - 835E647599AD20789B5A10F1E3BEF888 /* NSURLSession+AnyPromise.h in Headers */, - F8DD96EC7610D4FCB6C8045D400E5701 /* PMKFoundation.h in Headers */, - D5C95DA680B56760C10228B520F7499D /* PromiseKit.h in Headers */, - EF2D6E9667E3DC5852A6F092A4BAC763 /* PromiseKit.root-CorePromise-Foundation-umbrella.h in Headers */, + FEBCBEDE2597673C7D802896774CDCBD /* Result-iOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 96B2181F13A512676DE43FB3511AFDDA /* Headers */ = { + 6A22A95F9A809B370E0AAE627021502C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 56996A02B3DC920077AB801E4E8A0A15 /* Pods-web3swift-iOS-umbrella.h in Headers */, + D7346C912787D714E05528CDDB4A75F8 /* SwiftRLP-iOS-umbrella.h in Headers */, + 0ADC230F620426946507547899D899B6 /* SwiftRLP.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A84BA0453988997BEFD8DEA9765B62E6 /* Headers */ = { + 735E4C913DD0A46A1F72F4F1C62052E9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + ECAAA1869ED698C502004DE2B539728F /* basic-config.h in Headers */, + 0EF9D11A3631D7F8BE44552285F4A63F /* ecdsa.h in Headers */, + 0F4BC161113C9EBF41626D66606EB70E /* ecdsa_impl.h in Headers */, + 8E6ADE71160E4C617ABA4C32C87D16F3 /* eckey.h in Headers */, + 4B79D71DD2FC55BCBB35E1F397441057 /* eckey_impl.h in Headers */, + 22D545D72C019120381A23F2008D216E /* ecmult.h in Headers */, + 8DC20C4A7C1E28D752BFEBF35B5D9759 /* ecmult_const.h in Headers */, + 4882343A2039DD16BE3AE92E332AD44C /* ecmult_const_impl.h in Headers */, + 56959B7098D09A061F7F7721E757E1E2 /* ecmult_gen.h in Headers */, + 38261BBD61EB4CE9C0D8D02EFD788CC4 /* ecmult_gen_impl.h in Headers */, + 6A484692AA6F59EEA3EC6137FB6AFFCF /* ecmult_impl.h in Headers */, + 2AB0EAF55461D364004CD6F3DAF5585B /* field.h in Headers */, + 030B22879409F834B4FD21C5F8DFDDCD /* field_10x26.h in Headers */, + 9F89998FC4A9BDB1EB5C0FBC61596D64 /* field_10x26_impl.h in Headers */, + F8977F910FD88CA3560E0435ACA41270 /* field_5x52.h in Headers */, + 92A31273837467750DA0525B8243B737 /* field_5x52_asm_impl.h in Headers */, + E7DEA0B8E0F9EAF68841EDC4B8AC3396 /* field_5x52_impl.h in Headers */, + 0B987FF04FAAC3E2C96DBE0C52BDBD62 /* field_5x52_int128_impl.h in Headers */, + 848F627E8EC89D8060C4A7DC5C0B8CE2 /* field_impl.h in Headers */, + 83270E867F5862F72F0F925937F1668A /* group.h in Headers */, + D528114C056635E14284458D9163DE3A /* group_impl.h in Headers */, + 9ACFA841BF6C5686EDDB92A29B36FF7F /* hash.h in Headers */, + F6DB885F4AA84A99F9B5778AA1E2D3DA /* hash_impl.h in Headers */, + 3873EA28EA1C34A735654F3652FE1237 /* lax_der_parsing.h in Headers */, + 591B707CCE5C69B79289D27F93215603 /* lax_der_privatekey_parsing.h in Headers */, + 1ACFA20B8643D974578D0B37E658A0A9 /* libsecp256k1-config.h in Headers */, + B3978E88BD6400B77CF85D9788D4F094 /* main_impl.h in Headers */, + 9FE815CCD081FD51B3853C75F363A89B /* main_impl.h in Headers */, + 21EB006D3FD9C27B88742E512E7B227D /* num.h in Headers */, + 4D65A0EA2474E1ACE27EB99A8C868A09 /* num_gmp.h in Headers */, + 5A176FB29F73DA5B94E9257DE93AD928 /* num_gmp_impl.h in Headers */, + 553AD1CA02592C774AFF2659115B4DB1 /* num_impl.h in Headers */, + 3C1A5CA548BBD6346EA3C326AF0E1044 /* scalar.h in Headers */, + A22F18E450653F384132E5C621BE7B73 /* scalar_4x64.h in Headers */, + F6D7738BDDDF311DBDB1B103A5A1F6E6 /* scalar_4x64_impl.h in Headers */, + 213DE58F64F93C8508CCDEBE7CBD97D4 /* scalar_8x32.h in Headers */, + 4908E7728A0935FCB6EF210407119794 /* scalar_8x32_impl.h in Headers */, + E1DA6C9BC2295C7CF04AD192B8FE26FF /* scalar_impl.h in Headers */, + E316F68C4FD62BB0A294D29DB03DCB5D /* scalar_low.h in Headers */, + FB5385DF7643AC5570E694BBA6406E0B /* scalar_low_impl.h in Headers */, + 970EE041FB9D079419CED46228DC3969 /* scratch.h in Headers */, + 69527E264B7CB8895C3299409B518A2F /* scratch_impl.h in Headers */, + 47C119777E312AE6602A93BA0027D876 /* secp256k1.h in Headers */, + 31280DB99D63393FE7EBF701C18A7151 /* secp256k1_ecdh.h in Headers */, + A780CA204C48EC1DEEA8B2C0F59FA6AB /* secp256k1_recovery.h in Headers */, + 7866E902E917458E48CDFA6D0513288C /* secp256k1_swift-iOS-umbrella.h in Headers */, + DFB15CA333EE077FC25900A712E89DB7 /* util.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - A8FE7F6CDE2FD821EC0D93ADE70A49E2 /* Headers */ = { + 7477F92785CFE4A257605FF325BEDCA8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - EC9F551C20254A1AEC7679ED83D28713 /* Cimpl.h in Headers */, - D655D7A0F64343C818BC21A985DA8C5C /* scrypt-iOS-umbrella.h in Headers */, - D4043F69152803AF7B450C9062CFC688 /* scrypt.h in Headers */, + DF3C881F6AA58663EA27A37DDC93CBD1 /* SipHash-iOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - CB3C81D7E2AD5293B63D12B9684C0961 /* Headers */ = { + 88D55B53E0998EAFAEDC2982B9331828 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D4F42FD2DC81233AD6F6C96B6D8C8D38 /* basic-config.h in Headers */, - 52D04CA795889A574DE97357217965BE /* ecdsa.h in Headers */, - B495BF9BD41F0DA630E6BCEF9E48D707 /* ecdsa_impl.h in Headers */, - ECA8F009F06F08BDB92C351F47995210 /* eckey.h in Headers */, - FB9507F4BB8DEF640A6E3C3BE2A4E619 /* eckey_impl.h in Headers */, - AB80E1E9C65B4EA954F01811007ADE6D /* ecmult.h in Headers */, - D79B4B114921134D9311CA5A71062C10 /* ecmult_const.h in Headers */, - 0B442DCD3296A492C9C58C8AE14BA0A8 /* ecmult_const_impl.h in Headers */, - DB8210FAA307129469E336205657F092 /* ecmult_gen.h in Headers */, - 5C07AF157556B42E17E1E32A4AEB573B /* ecmult_gen_impl.h in Headers */, - 79571D2CAB88DA790160FD0CDD3AEFF9 /* ecmult_impl.h in Headers */, - A9F50ED8E406BC5AB5C9E327233D70A5 /* field.h in Headers */, - C880E86722BF8C8B420186E5FCAA564D /* field_10x26.h in Headers */, - F7A2DF1C44544C5300298F18DF2CB870 /* field_10x26_impl.h in Headers */, - 91D6972A579E54069CA6674EF1AFDD62 /* field_5x52.h in Headers */, - 5638014E129B104ED47134518667CC68 /* field_5x52_asm_impl.h in Headers */, - 8756026DE126ACD98A35A20C2F344F1D /* field_5x52_impl.h in Headers */, - BF65BC24F142604C88A03D61E2C91A0D /* field_5x52_int128_impl.h in Headers */, - 324A108EF1509B26512277B3C3BE7D2D /* field_impl.h in Headers */, - 31A75721375ECAB73790FEB75766D87A /* group.h in Headers */, - 0C8C916943E653184B644A98632DDC47 /* group_impl.h in Headers */, - 127EFEFCE576E0CDD1DF3708F20C10BC /* hash.h in Headers */, - 17B2699526C79E4F6A7F890EF0C62A1D /* hash_impl.h in Headers */, - C6C9C202FFBD58F21443C1F5CEDFB291 /* lax_der_parsing.h in Headers */, - 251FC364DD9D317AB3F31F99BA809724 /* lax_der_privatekey_parsing.h in Headers */, - 5A7A8C39583FF9303788AA4DAFD6FB1F /* libsecp256k1-config.h in Headers */, - 8CF0A92E555F6A19FD269B16235D3128 /* main_impl.h in Headers */, - 8283888B261F0702178960767D664712 /* main_impl.h in Headers */, - 618CFC75E3108B18C4DD15C12EC58626 /* num.h in Headers */, - B0EFDD2E40787B3A3359CF16DF3815C3 /* num_gmp.h in Headers */, - 9307E26E1B1DD066C1B71C66EF7B5B99 /* num_gmp_impl.h in Headers */, - 75F745A947766D56938C0215E2A54C9E /* num_impl.h in Headers */, - D44A10DC0AFCD862345B9A0F97E95ED2 /* scalar.h in Headers */, - 9426948AD7CCB3A21DB5169851D17835 /* scalar_4x64.h in Headers */, - 62A5DF1DFBEC0FD06FC3C895F4447790 /* scalar_4x64_impl.h in Headers */, - A1ABA5F58D2757A7C96844AE893C12D1 /* scalar_8x32.h in Headers */, - C56FB1B1104E7EEA26631D9EA9A9D9DD /* scalar_8x32_impl.h in Headers */, - 8FA68F40AE3928B497DDA7C8B828FE74 /* scalar_impl.h in Headers */, - 209C8981858102B13060DA6A94BE0170 /* scalar_low.h in Headers */, - E254CF34D5F821DC8EAA61755F39ECF3 /* scalar_low_impl.h in Headers */, - 3D71156680EC3D94A6E1441546C57E6B /* scratch.h in Headers */, - 3AA32C95FECA68AA3FF571E0F0AF83BC /* scratch_impl.h in Headers */, - E1B91043188FBFD92BA078E1EF2912E0 /* secp256k1.h in Headers */, - 2B3F7B28D29AE55CF915EC13A381D462 /* secp256k1_ecdh.h in Headers */, - B6E2A49CAA2332035A4163610834553C /* secp256k1_recovery.h in Headers */, - 8DCC706DCFDBCC907AAB009F5C505F8F /* secp256k1_swift-macOS-umbrella.h in Headers */, - DE31538BAB4D0DB5B8063517B853894F /* util.h in Headers */, + D42A1D2FC1FD4BC6485683430F314F8D /* Pods-web3swift-iOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - CC4236511CD7C868D12303BE91525247 /* Headers */ = { + 928D76306ECD6416741AC2FC86980F0C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - DD7964B2315BCC4C1FEF9A2300164025 /* SwiftRLP-macOS-umbrella.h in Headers */, - FFA521581788213B12468D8AA8D2ADBB /* SwiftRLP.h in Headers */, + D5F3CB86000211CEE2280DE68F875D8B /* basic-config.h in Headers */, + 24ED5E0F58443FB2E91C07D5B453E591 /* ecdsa.h in Headers */, + 42920ECBDE0A9803B1C7380ADD62A568 /* ecdsa_impl.h in Headers */, + 5B842BF7DAD152B00F2629737F22DF42 /* eckey.h in Headers */, + 93922A572F18D47B58770CE032C624A9 /* eckey_impl.h in Headers */, + 0803200FCF34AD13D541A796839CFD8C /* ecmult.h in Headers */, + B9273317460CC1FE679BEB887B22502C /* ecmult_const.h in Headers */, + 3E5C1C698DFB2439892653C0F04DF498 /* ecmult_const_impl.h in Headers */, + ACAFB6B368809FFE646FC6CE60BC1165 /* ecmult_gen.h in Headers */, + 74931156BC39F4870C2DE0792BE32405 /* ecmult_gen_impl.h in Headers */, + B8F37FA0A973FDDC27C6425371AEEAD6 /* ecmult_impl.h in Headers */, + 32DAD7BC31D1813B10BB3069A4E8A563 /* field.h in Headers */, + 0020B3469BA74AE230A3980EAE138C7A /* field_10x26.h in Headers */, + 0B3D630F66F9E1B3BC7A654E42366967 /* field_10x26_impl.h in Headers */, + AB0CBD60909A704D3D9158BC5D661B16 /* field_5x52.h in Headers */, + 0D05ABBC7CC7C8489D2A4282581CA5E2 /* field_5x52_asm_impl.h in Headers */, + 21B3C21C7A16A522F0F463F9FB046A5E /* field_5x52_impl.h in Headers */, + D9BA126F50DCB7B25D32447C2E8931CC /* field_5x52_int128_impl.h in Headers */, + 726D7B79EE2D9BE951DB54D2130E9BCA /* field_impl.h in Headers */, + 82AF1E6C9907EE09A09AB83C5B1818ED /* group.h in Headers */, + 1D68B343368ADE35129C5CDCCDCCD468 /* group_impl.h in Headers */, + 54EC85190D1C1948AEC85A67298BDBFD /* hash.h in Headers */, + 384CC535308CA645694E4C8ABAAF97F5 /* hash_impl.h in Headers */, + EC0634AA758562515F6A6C370F9C7102 /* lax_der_parsing.h in Headers */, + D10BCDD795487B1471ADAF3F0D4485CA /* lax_der_privatekey_parsing.h in Headers */, + 1A05748E830513D5B126B463DC61CA60 /* libsecp256k1-config.h in Headers */, + 97A3961670D0D6C11A7E18B5DB3FF739 /* main_impl.h in Headers */, + 8C7DC341CF6C0D742059C180AF4D3AE6 /* main_impl.h in Headers */, + 582D36FB6BBE4D4259CBFC9B837E7F79 /* num.h in Headers */, + 4C418DDDF37352D82DC8A316EB35D643 /* num_gmp.h in Headers */, + ECF940C778D08964A4CC5F1090E5B694 /* num_gmp_impl.h in Headers */, + EE783493F1B7530C3742E03C554493DA /* num_impl.h in Headers */, + 5E0D7EA7DC572DB4F63B87D4243AA73E /* scalar.h in Headers */, + E2304F8E1E94478D68A8EC526EDCCBAD /* scalar_4x64.h in Headers */, + 60398D9C8DCDC7FEDC52DC8AF907D1D9 /* scalar_4x64_impl.h in Headers */, + 67EA838CFD7F6CF89A7A056B09B63C06 /* scalar_8x32.h in Headers */, + B73725553EA7209B295AFAAF5F1641C9 /* scalar_8x32_impl.h in Headers */, + C02A520237A6EEC101F93FD5E741C295 /* scalar_impl.h in Headers */, + E59A5E45ED8B25E70C9C6A6E89C566D4 /* scalar_low.h in Headers */, + 1BEB60D584CDD65F08A874EC1961CE4C /* scalar_low_impl.h in Headers */, + D7705513171AE49C798D5A002BEC0737 /* scratch.h in Headers */, + 1F193DAAE1079FC10178E752783B032F /* scratch_impl.h in Headers */, + FC76FBD9E6420F2FD85F7F5EC55B9A31 /* secp256k1.h in Headers */, + 2D6C2BF004933839288FE0AD05169574 /* secp256k1_ecdh.h in Headers */, + 8645FDCFA460D7F9AC3436355339C3B0 /* secp256k1_recovery.h in Headers */, + 4062448019AF90DB11E3860898E8EAEB /* secp256k1_swift-macOS-umbrella.h in Headers */, + 7E19F8D4DDBF7633E4FB267CBD766735 /* util.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - D7B2C3E499A784C0C701CFCC848DD377 /* Headers */ = { + A84BA0453988997BEFD8DEA9765B62E6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 563C641A5D7264103E44BCDCC6C6C887 /* CryptoSwift-macOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - D91516EF5FCA28AFEFF8D262E5ECD885 /* Headers */ = { + AFEA92F9B8E4F23FDE84709BDC1E70DC /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B39F6A07D19D7B5044E37E98E6C28320 /* Cimpl.h in Headers */, - 0AB147133F796C59B1000495EDE8F694 /* scrypt-macOS-umbrella.h in Headers */, - 9850A4E789CCD838DE17E0E7A5DCCCCD /* scrypt.h in Headers */, + CE6059517A03418C389CF50D78287474 /* EthereumABI-macOS-umbrella.h in Headers */, + 3D104A9C54922EADF90311DDFF2CB44A /* EthereumABI.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - D9438E55E725BF04D83CC7EC3D4AF915 /* Headers */ = { + B71970618A9DDD30CCF100C64EDA8C8C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 5145AAE99352DBF420419223083C6C25 /* CryptoSwift-iOS-umbrella.h in Headers */, + 1974CBE5CBA7E90AF2951744F9F700DA /* Cimpl.h in Headers */, + DCA7BBA544AC372B023678542AB72A6D /* scrypt-macOS-umbrella.h in Headers */, + 2C47366FB3A3D0F2A380489DC0AB4EC6 /* scrypt.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - DEE5DA4E58FF6A20FDACF29BD5C03C3C /* Headers */ = { + BEB0EDBDBADA7FA289A4B00AA8E7EE0C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1158B8A68E881A4243A310CB039AA866 /* Result-iOS-umbrella.h in Headers */, + 564FD746E26C5BFC311765163F88EF1E /* AnyPromise.h in Headers */, + 103C1056FCEF16B87FAC9DC37BADA0AF /* fwd.h in Headers */, + BE1CE42FE75F14BC5B71AED3DC543BCF /* NSNotificationCenter+AnyPromise.h in Headers */, + 99FB3C1EC398E469062856C9355D98D7 /* NSTask+AnyPromise.h in Headers */, + 48FD7843C2FD1E7F947576CB4F364A22 /* NSURLSession+AnyPromise.h in Headers */, + CD6EC5B134FE5E926C6F6BC0BCAA6826 /* PMKFoundation.h in Headers */, + 930121B3B6F0689685FCAB817B2A2588 /* PMKUIKit.h in Headers */, + 71567D015EC37FC03AE550A23ED89908 /* PromiseKit-umbrella.h in Headers */, + A153DCFCF463D9DE2D043665961D775B /* PromiseKit.h in Headers */, + A2677F84AB8234C395BD53A67AF18EF3 /* UIView+AnyPromise.h in Headers */, + 0FA9B674BE83227DB456D1E8CDBD426A /* UIViewController+AnyPromise.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EC1E56131ACB90EB216C276F366EFECD /* Headers */ = { + D09211D764D9C5DC439A185C8E1551D8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - BA33E96D5FF50CFFA5727208AC91DF2B /* SipHash-macOS-umbrella.h in Headers */, + EEDA1D167622551D8F61394C9E16FDC5 /* Result-macOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EF326D981A695869EEB5F69BCE9A78B8 /* Headers */ = { + D7B2C3E499A784C0C701CFCC848DD377 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F16E441BDD1CCA79E64DCDA49CA4CC50 /* Result-macOS-umbrella.h in Headers */, + 563C641A5D7264103E44BCDCC6C6C887 /* CryptoSwift-macOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - F314FD63C0A0062B8F1A89675ED05324 /* Headers */ = { + D9438E55E725BF04D83CC7EC3D4AF915 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4A9382D54AFF6BA0D34C2BE46245192E /* SwiftRLP-iOS-umbrella.h in Headers */, - C8C18B3FE4D4FD1B2D0467F31FA6D113 /* SwiftRLP.h in Headers */, + 5145AAE99352DBF420419223083C6C25 /* CryptoSwift-iOS-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 1168313AEC7524AEDFC1224C6D3C6E44 /* EthereumAddress-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = EFED2FA879D330888BF8C00E65240ADA /* Build configuration list for PBXNativeTarget "EthereumAddress-iOS" */; - buildPhases = ( - 54DF3F44A9C01544510F7FA211E2D61A /* Headers */, - 4F126988CBC888A0714AF1DA260B78DD /* Sources */, - 03011555EFED1D5408D878A307E7F27B /* Frameworks */, - 18E6AE424D462D0BB6055CFFEA61E572 /* Copy generated compatibility header */, - ); - buildRules = ( - ); + EC1E56131ACB90EB216C276F366EFECD /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + BA33E96D5FF50CFFA5727208AC91DF2B /* SipHash-macOS-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F861629ACD553268DF434F0F56959DF5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9DF5F943F4396F48FA8C2562B7E90323 /* Cimpl.h in Headers */, + F78A144D256C3A6F8F6CCB64E35E869F /* scrypt-iOS-umbrella.h in Headers */, + E70AA4690673CA6F6D246FD4F786AE99 /* scrypt.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 023FD8884DE6975FECF83E672E5A51B6 /* Pods-web3swift-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 886328E93BEAC18F43717EDABA0C12BF /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS" */; + buildPhases = ( + 341869387793A606802DA2B2E9DC999C /* Headers */, + D2D23DE9E3DD97F661D39734C713DFCD /* Sources */, + AC5A4F42824C1F9DC39C2D962FA6E967 /* Frameworks */, + ); + buildRules = ( + ); dependencies = ( - 41F78C658B3F9F5219DDE2ECF3E07F6D /* PBXTargetDependency */, + F99596A36A7D743925C51FA2EAC6A926 /* PBXTargetDependency */, + 1E9BAABB9A2D27A10CA18AA0AB29D19A /* PBXTargetDependency */, + C269DDA1242D2E3E298B6F655C4A167D /* PBXTargetDependency */, + 02659AE1B67C7B1511ABF2C7A04E2B4E /* PBXTargetDependency */, + 0D545F5A0BAC11E9ED61D880B15A786E /* PBXTargetDependency */, + 9C5DDB2602B091154A843E950D482712 /* PBXTargetDependency */, + 727A2BB019C3EBC7776A2D069690F4A6 /* PBXTargetDependency */, + 64216B85F5A267A4A8A29E2853348D52 /* PBXTargetDependency */, + 71225E4B8AE60381FB07D307E4B6D4D6 /* PBXTargetDependency */, + 8B85536E7A2A3FC702D31FFB0CE7E18A /* PBXTargetDependency */, ); - name = "EthereumAddress-iOS"; - productName = "EthereumAddress-iOS"; - productReference = 97504B2FA23741AEEDD649E58BF39870 /* libEthereumAddress-iOS.a */; + name = "Pods-web3swift-macOS"; + productName = "Pods-web3swift-macOS"; + productReference = 44157DE064955C1C2DF424094F971C2C /* libPods-web3swift-macOS.a */; productType = "com.apple.product-type.library.static"; }; - 12455571B54E567146873FF705359CFE /* Result-iOS */ = { + 02DC76A9AFBA2BA6CA9EBA39CCD34BCC /* PromiseKit.root-CorePromise-Foundation */ = { isa = PBXNativeTarget; - buildConfigurationList = 284AECDC661FAF7860EC1BEC7692301D /* Build configuration list for PBXNativeTarget "Result-iOS" */; + buildConfigurationList = 985657F07458E31EEED8115F732C90EA /* Build configuration list for PBXNativeTarget "PromiseKit.root-CorePromise-Foundation" */; buildPhases = ( - DEE5DA4E58FF6A20FDACF29BD5C03C3C /* Headers */, - 9C8F84D70CD3951B1660E208CB29441B /* Sources */, - 9D409A2942E61980145880BF513A7F7D /* Frameworks */, - AE8C8A4E08BFF14A2F1693B22AA97C5B /* Copy generated compatibility header */, + 41A5FC68414B08862DA3AC70C6F990E1 /* Headers */, + 6C32DF8E3D984792A311C4A5FD4645C7 /* Sources */, + 23806D0BC0F52E8AC5EE2B81034FD7D3 /* Frameworks */, + 23E99947867445CF8C69CEFFAFFC0227 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( ); - name = "Result-iOS"; - productName = "Result-iOS"; - productReference = 666BE65938A502C928B35D6EB5CA9FDA /* libResult-iOS.a */; + name = "PromiseKit.root-CorePromise-Foundation"; + productName = "PromiseKit.root-CorePromise-Foundation"; + productReference = 640D7C6CD155FDD858979BF3184F5A49 /* libPromiseKit.root-CorePromise-Foundation.a */; productType = "com.apple.product-type.library.static"; }; - 1F803FF778771424C8085D9971D3840F /* SwiftRLP-iOS */ = { + 064630A81A32C3F755213FAB5B3FAAAB /* SwiftRLP-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = E4CD22EC0D9A9A7E229C67906906F7A4 /* Build configuration list for PBXNativeTarget "SwiftRLP-iOS" */; + buildConfigurationList = E5D6FA6799A44BF6B2EA944785695731 /* Build configuration list for PBXNativeTarget "SwiftRLP-iOS" */; buildPhases = ( - F314FD63C0A0062B8F1A89675ED05324 /* Headers */, - 7554990BF3A60368D06DE120F92AFA9D /* Sources */, - 3AAC28C160F50900EE61CA27D4E2EF5D /* Frameworks */, - B1CDA63AFDA7BE620B34E4FDC752C9EB /* Copy generated compatibility header */, + 6A22A95F9A809B370E0AAE627021502C /* Headers */, + 9CB22439A4403B91380A6D0FF75767DD /* Sources */, + 1600C6BC8C1AD78A95A84E5114873FBD /* Frameworks */, + 43735E5C22EB2EABE184E24809108452 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - 02BA5612135F3D656000F3174E527D10 /* PBXTargetDependency */, + 91A8EB95CC5E24DE78FF51AF4F9F9591 /* PBXTargetDependency */, ); name = "SwiftRLP-iOS"; productName = "SwiftRLP-iOS"; - productReference = FDADCB9A8CD9274EA3AC09BE3B7E0F66 /* libSwiftRLP-iOS.a */; + productReference = 55D3724AA7B8C2CF221E72306FBDCBB5 /* libSwiftRLP-iOS.a */; productType = "com.apple.product-type.library.static"; }; - 3B79F6DB09B597AAE9D3EB939DA463D8 /* SipHash-iOS */ = { + 1084E340C76D167B42F96381D5AC59FB /* EthereumAddress-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = F8A195F0CD637B21B4FABEA84B502663 /* Build configuration list for PBXNativeTarget "SipHash-iOS" */; + buildConfigurationList = 0D0EE0E6A1FF9BACF87641ECD817E450 /* Build configuration list for PBXNativeTarget "EthereumAddress-macOS" */; buildPhases = ( - 7477F92785CFE4A257605FF325BEDCA8 /* Headers */, - 6950A9AD0D066BC48BB15390EA10BE78 /* Sources */, - D2A4B152651F01134ED378054CE50C8D /* Frameworks */, - EDC821DB128FBEFA92BC6BC351D2709A /* Copy generated compatibility header */, + 3CCEBEDFD58277AE688D11C78A90CD24 /* Headers */, + D3545085D966F9E71031F5551A836F21 /* Sources */, + 224FCBB2C53DEF01AF13F9CFC741739D /* Frameworks */, + 506F24A206D803133DAA923324224506 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( + C0C1466C80B5B9098C4ADE3D8D0FF848 /* PBXTargetDependency */, ); - name = "SipHash-iOS"; - productName = "SipHash-iOS"; - productReference = F99CCF5FD903883FB3C524CA2FB43E2C /* libSipHash-iOS.a */; + name = "EthereumAddress-macOS"; + productName = "EthereumAddress-macOS"; + productReference = 4813C1A0F259481060973E85D757C6F8 /* libEthereumAddress-macOS.a */; productType = "com.apple.product-type.library.static"; }; - 4C59270F810F2B1FEC2F3D5A77188907 /* secp256k1_swift-macOS */ = { + 16689698E943DBC08E5169468314C018 /* Result-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 65490D7667F9A157CAE31446FC797991 /* Build configuration list for PBXNativeTarget "secp256k1_swift-macOS" */; + buildConfigurationList = 53B1B04B77AC43178C9F3E8EB7B13F0A /* Build configuration list for PBXNativeTarget "Result-iOS" */; buildPhases = ( - CB3C81D7E2AD5293B63D12B9684C0961 /* Headers */, - F4783445DE7F29598185898BF1D1FA23 /* Sources */, - 05577BA791C80220E64423A3DA803314 /* Frameworks */, - 5EA346A1CAF71500DC1ACEDD14097686 /* Copy generated compatibility header */, + 672DA6ADECF9F10F1DB3A0E8F143BDB6 /* Headers */, + F202AF892C75A508DD88D70F474FBA77 /* Sources */, + 08725796DB76F7D6AE648E2FE6C6F219 /* Frameworks */, + 3D42772EFBD89263E293714128E4BB20 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( ); - name = "secp256k1_swift-macOS"; - productName = "secp256k1_swift-macOS"; - productReference = 4C332617281C7BEB03040C92EF610543 /* libsecp256k1_swift-macOS.a */; + name = "Result-iOS"; + productName = "Result-iOS"; + productReference = 0875934C7BD4393C0A91DFA3CF1FBBED /* libResult-iOS.a */; productType = "com.apple.product-type.library.static"; }; - 4FCBE56BC5E931FDC43C642250037C1F /* SipHash-macOS */ = { + 39C6DF22D4F83A78CB7F52D86381D937 /* secp256k1_swift-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 249649C0D306826B8AEC43AC3D978C98 /* Build configuration list for PBXNativeTarget "SipHash-macOS" */; + buildConfigurationList = A17FF6AB1386D63A1421DD6C0C2217F4 /* Build configuration list for PBXNativeTarget "secp256k1_swift-iOS" */; buildPhases = ( - EC1E56131ACB90EB216C276F366EFECD /* Headers */, - 7BA75396367E53FB54211DB664B4547E /* Sources */, - FA42B5B3447A1D1A233689BB1B366630 /* Frameworks */, - 1B2679AE7A95EBF0FDDB427B7725D76B /* Copy generated compatibility header */, + 735E4C913DD0A46A1F72F4F1C62052E9 /* Headers */, + B849DE3B3663A6CBF97D754340337E57 /* Sources */, + 872D6A3DAA3AC36B6C52474F6BF4CA6D /* Frameworks */, + 8B19A86C041EB3572BC6954373DA0F4C /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( ); - name = "SipHash-macOS"; - productName = "SipHash-macOS"; - productReference = 58D4D38A480BA09A08C8523AF72783C5 /* libSipHash-macOS.a */; + name = "secp256k1_swift-iOS"; + productName = "secp256k1_swift-iOS"; + productReference = 64CF8CD6E98A2DF32A9CBCF71E6AEFAB /* libsecp256k1_swift-iOS.a */; productType = "com.apple.product-type.library.static"; }; - 558049EB555978BC8947ECF2498E78D9 /* PromiseKit.root-CorePromise-Foundation */ = { + 3B79F6DB09B597AAE9D3EB939DA463D8 /* SipHash-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 9CB97BD184404FE5F62F017C3CF306D5 /* Build configuration list for PBXNativeTarget "PromiseKit.root-CorePromise-Foundation" */; + buildConfigurationList = F8A195F0CD637B21B4FABEA84B502663 /* Build configuration list for PBXNativeTarget "SipHash-iOS" */; buildPhases = ( - 7782F816841C0EB71FD1F1F31BE73647 /* Headers */, - 5EF30E27818FB63FE5D68283E679752C /* Sources */, - 3AE77EFED90447A6B1DAC12064BA51E9 /* Frameworks */, - 4F32BCC17F8E7CDDD337CE7D1F53727A /* Copy generated compatibility header */, + 7477F92785CFE4A257605FF325BEDCA8 /* Headers */, + 6950A9AD0D066BC48BB15390EA10BE78 /* Sources */, + D2A4B152651F01134ED378054CE50C8D /* Frameworks */, + EDC821DB128FBEFA92BC6BC351D2709A /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( ); - name = "PromiseKit.root-CorePromise-Foundation"; - productName = "PromiseKit.root-CorePromise-Foundation"; - productReference = A09088A41F90C0893A27DEF1C26D11AB /* libPromiseKit.root-CorePromise-Foundation.a */; + name = "SipHash-iOS"; + productName = "SipHash-iOS"; + productReference = 2F751DF027B3EC6771E69D0DF744E2F1 /* libSipHash-iOS.a */; productType = "com.apple.product-type.library.static"; }; - 566C98B9528CB1527582959B19D87238 /* Pods-web3swift-iOS_Tests */ = { + 4FCBE56BC5E931FDC43C642250037C1F /* SipHash-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 62550B15363844675EDB2F185CB619A8 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS_Tests" */; + buildConfigurationList = 249649C0D306826B8AEC43AC3D978C98 /* Build configuration list for PBXNativeTarget "SipHash-macOS" */; buildPhases = ( - A84BA0453988997BEFD8DEA9765B62E6 /* Headers */, - A27CC87411918F0608EA9F4339733D80 /* Sources */, - 9FA0F642AE177D3FA07814A41F264B1A /* Frameworks */, + EC1E56131ACB90EB216C276F366EFECD /* Headers */, + 7BA75396367E53FB54211DB664B4547E /* Sources */, + FA42B5B3447A1D1A233689BB1B366630 /* Frameworks */, + 1B2679AE7A95EBF0FDDB427B7725D76B /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - F3DDE7BB170DA1519FDDE4BA03AB73FA /* PBXTargetDependency */, ); - name = "Pods-web3swift-iOS_Tests"; - productName = "Pods-web3swift-iOS_Tests"; - productReference = FF66C3EFCA475A91734C76A5D546BE1A /* libPods-web3swift-iOS_Tests.a */; + name = "SipHash-macOS"; + productName = "SipHash-macOS"; + productReference = AB81B5AF636ED4D537F9A819FC7EB086 /* libSipHash-macOS.a */; productType = "com.apple.product-type.library.static"; }; - 73527F6F8B0A792EA5FD7085DADC6B93 /* SwiftRLP-macOS */ = { + 566C98B9528CB1527582959B19D87238 /* Pods-web3swift-iOS_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = D2A09E63159C968138E6CBA9147D559A /* Build configuration list for PBXNativeTarget "SwiftRLP-macOS" */; + buildConfigurationList = 62550B15363844675EDB2F185CB619A8 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS_Tests" */; buildPhases = ( - CC4236511CD7C868D12303BE91525247 /* Headers */, - AC55CD23CEB47B0B14D8B2BE25385074 /* Sources */, - 2E1C020D358710A3E399DC2793603432 /* Frameworks */, - DCFDAE6889A2F2AA8B57D01D168586DA /* Copy generated compatibility header */, + A84BA0453988997BEFD8DEA9765B62E6 /* Headers */, + A27CC87411918F0608EA9F4339733D80 /* Sources */, + 9FA0F642AE177D3FA07814A41F264B1A /* Frameworks */, ); buildRules = ( ); dependencies = ( - CD84CCD9860362B77E623B72E64A8990 /* PBXTargetDependency */, + F3DDE7BB170DA1519FDDE4BA03AB73FA /* PBXTargetDependency */, ); - name = "SwiftRLP-macOS"; - productName = "SwiftRLP-macOS"; - productReference = 6A0F097AEAD44F8F983B8D4F884FDE42 /* libSwiftRLP-macOS.a */; + name = "Pods-web3swift-iOS_Tests"; + productName = "Pods-web3swift-iOS_Tests"; + productReference = AC8ABBCB10448DB88C79398E3A2D4417 /* libPods-web3swift-iOS_Tests.a */; productType = "com.apple.product-type.library.static"; }; - 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */ = { + 56C190CBC3444CE65376067572B13693 /* Pods-web3swift-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = F03040809733F3691A82F4D1E80B6BA3 /* Build configuration list for PBXNativeTarget "CryptoSwift-macOS" */; + buildConfigurationList = 1A702128138D84E5AE38854422DA92F2 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS" */; buildPhases = ( - D7B2C3E499A784C0C701CFCC848DD377 /* Headers */, - A5A45EF12B04C5C92A3AEF6FB3A93BC5 /* Sources */, - 6F6453F76274AE713CC0D3CD28EB9C36 /* Frameworks */, - 06ED1736EBFFBA57E2FEB73C8DE23910 /* Copy generated compatibility header */, + 88D55B53E0998EAFAEDC2982B9331828 /* Headers */, + 192B436BFD5C2D881B0BF7EEB76DBDEA /* Sources */, + 5740D976E52AA2EB97C2A9F753E1C740 /* Frameworks */, ); buildRules = ( ); dependencies = ( + AECE3A83555371FEE0C000441EA7F746 /* PBXTargetDependency */, + A3C977A971A55D81A3EDB024FEF6F3B7 /* PBXTargetDependency */, + 18AE85A800367509ACE31E973FB46584 /* PBXTargetDependency */, + 0967375AB22B66ADBB9D19EA723B7DA1 /* PBXTargetDependency */, + 1E105E4F2A6BEB962894ADC68D751F0D /* PBXTargetDependency */, + E5418EBD52BE4001ACF1E9B736E61DB4 /* PBXTargetDependency */, + BAD76E8361F4D9801FAF4CAEE1E33A93 /* PBXTargetDependency */, + 7D99355E255D3CAB43E880FCAD7810DB /* PBXTargetDependency */, + A26C0CA8CFB4FEF8510603291FA6567D /* PBXTargetDependency */, + 571654461CE17E7F4576D91D3D7A7721 /* PBXTargetDependency */, ); - name = "CryptoSwift-macOS"; - productName = "CryptoSwift-macOS"; - productReference = 4D5B77EB47B2435BCBF83C39D0D576F5 /* libCryptoSwift-macOS.a */; + name = "Pods-web3swift-iOS"; + productName = "Pods-web3swift-iOS"; + productReference = 2A23509A1B4B9BA0141EB958C32816D4 /* libPods-web3swift-iOS.a */; productType = "com.apple.product-type.library.static"; }; - 7BF3C926294C92422AFB78600D576975 /* scrypt-macOS */ = { + 60BB8021A6290DE4F66E9D4A96906F3C /* Result-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = EC990DC713F41C8185113CC18FD8B395 /* Build configuration list for PBXNativeTarget "scrypt-macOS" */; + buildConfigurationList = 0E6082C161AE699CD11AFE38C72A8ECD /* Build configuration list for PBXNativeTarget "Result-macOS" */; buildPhases = ( - D91516EF5FCA28AFEFF8D262E5ECD885 /* Headers */, - F26428FB9A70DF978834F0A0F8B50B0F /* Sources */, - D45B18240A0BA70F5BD174A232F95C45 /* Frameworks */, - A419CDD858739CE2F6F3DD9DA2F2853A /* Copy generated compatibility header */, + D09211D764D9C5DC439A185C8E1551D8 /* Headers */, + 981295A50198CC22BC99FB891D53C23C /* Sources */, + 25FCBA5B2FFAFF4A3E1CB4180AA265B0 /* Frameworks */, + 98E00FEDAA686C9CD8CF43BECA6FE814 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - D25FD61F0F8712699C186B8B64A1A47B /* PBXTargetDependency */, ); - name = "scrypt-macOS"; - productName = "scrypt-macOS"; - productReference = F4F0BCD366AE2D51D6C35C2192996DBD /* libscrypt-macOS.a */; + name = "Result-macOS"; + productName = "Result-macOS"; + productReference = 5AEA4495CD1CD23847803E6F2009266F /* libResult-macOS.a */; productType = "com.apple.product-type.library.static"; }; - 7ED7E08B2BE4D50AC5F7E73B32DD2203 /* Pods-web3swift-macOS_Tests */ = { + 75EC00B8FD54D720BB772CA16EEAE742 /* EthereumABI-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 91E81CC04B48CAA0AA6D1FB891F14331 /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS_Tests" */; + buildConfigurationList = 41A0D4C0C65EE651AE692E52EC485A28 /* Build configuration list for PBXNativeTarget "EthereumABI-macOS" */; buildPhases = ( - 2F394AD2ED0A538D456609456DB15F4B /* Headers */, - 6F5CC9B499993EA733C785A3803C553D /* Sources */, - 803328A4C9D919A350F04AB5D9FBBC0A /* Frameworks */, + AFEA92F9B8E4F23FDE84709BDC1E70DC /* Headers */, + F24FCB33D2CE51D2A03491918BF5B8F7 /* Sources */, + C057B63C1468DF9D9FB55C472186B940 /* Frameworks */, + BBE72A55EB66D7E4A940F279D9F63711 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - DA81B8EC030393B0ADEBDB02050FCFCB /* PBXTargetDependency */, + C5E73C2BC7125A028DD21893CBB2FEBA /* PBXTargetDependency */, + 894ED1800495B1A047AF49B5D576542E /* PBXTargetDependency */, + 71C496B0EA254126C05B904C7F1E90A1 /* PBXTargetDependency */, ); - name = "Pods-web3swift-macOS_Tests"; - productName = "Pods-web3swift-macOS_Tests"; - productReference = 7573EC5C506627456A38A22DC6C134BA /* libPods-web3swift-macOS_Tests.a */; + name = "EthereumABI-macOS"; + productName = "EthereumABI-macOS"; + productReference = 61858AD8F2BC3FA5B6CE10752824FA45 /* libEthereumABI-macOS.a */; productType = "com.apple.product-type.library.static"; }; - 82C35D316B5E8115E43ACCFE4E50137C /* Pods-web3swift-macOS */ = { + 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 0039F2F377814CD2485BC36E354F85D8 /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS" */; + buildConfigurationList = F03040809733F3691A82F4D1E80B6BA3 /* Build configuration list for PBXNativeTarget "CryptoSwift-macOS" */; buildPhases = ( - 1D082DF5FB317A292B865320EA4330E8 /* Headers */, - 74A501CE727E95B4C6687723037D9862 /* Sources */, - 6EC658BB78F973B687A770E4EC1E8853 /* Frameworks */, + D7B2C3E499A784C0C701CFCC848DD377 /* Headers */, + A5A45EF12B04C5C92A3AEF6FB3A93BC5 /* Sources */, + 6F6453F76274AE713CC0D3CD28EB9C36 /* Frameworks */, + 06ED1736EBFFBA57E2FEB73C8DE23910 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - 9E296E6501EBD5FDE5817558B2BF7E2A /* PBXTargetDependency */, - DCCED206D4BBB569EEFCBD6A2C1BAC88 /* PBXTargetDependency */, - 2055448327DB15BA03467F050E753FB0 /* PBXTargetDependency */, - 9F20C8D399DE8D34DCEEE1FDF42CFCAA /* PBXTargetDependency */, - 985A809AF607C0CA13161FCFE50F4C36 /* PBXTargetDependency */, - 82AAC9DD7930B8C6339DED045709C87D /* PBXTargetDependency */, - FE4F7F2A1F792D695B3070E073F67F11 /* PBXTargetDependency */, - C6510E8CFAB977BE7B6241436DAC4841 /* PBXTargetDependency */, - 1E5CC3B070AA071ADEB9D014A865CC6C /* PBXTargetDependency */, ); - name = "Pods-web3swift-macOS"; - productName = "Pods-web3swift-macOS"; - productReference = 1DF1726C7221A0B7805EF3E180CE8007 /* libPods-web3swift-macOS.a */; + name = "CryptoSwift-macOS"; + productName = "CryptoSwift-macOS"; + productReference = E301EA386C90D10BDC9671660BE64E94 /* libCryptoSwift-macOS.a */; productType = "com.apple.product-type.library.static"; }; - 94906F0C68B58FB4B40554812C3BBFD8 /* PromiseKit */ = { + 7ED7E08B2BE4D50AC5F7E73B32DD2203 /* Pods-web3swift-macOS_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 303C8E6272AD70A3BDE63EE51C697D17 /* Build configuration list for PBXNativeTarget "PromiseKit" */; + buildConfigurationList = 91E81CC04B48CAA0AA6D1FB891F14331 /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS_Tests" */; buildPhases = ( - 263A6BE4E6989F362AA0E5FEC75D6EB8 /* Headers */, - D0BD425EF1B48E5B0B78F0ED11C0ECB2 /* Sources */, - 2714EC0418F441D39321DBFD3CFC5BF3 /* Frameworks */, - 129DD7E5FF17BAF38DCB561CC264C271 /* Copy generated compatibility header */, + 2F394AD2ED0A538D456609456DB15F4B /* Headers */, + 6F5CC9B499993EA733C785A3803C553D /* Sources */, + 803328A4C9D919A350F04AB5D9FBBC0A /* Frameworks */, ); buildRules = ( ); dependencies = ( + DA81B8EC030393B0ADEBDB02050FCFCB /* PBXTargetDependency */, ); - name = PromiseKit; - productName = PromiseKit; - productReference = 10E2FD109C104BBFF96C8BEAE5D93A6E /* libPromiseKit.a */; + name = "Pods-web3swift-macOS_Tests"; + productName = "Pods-web3swift-macOS_Tests"; + productReference = 11C198E371333D0B4E1F4A5B168C23C7 /* libPods-web3swift-macOS_Tests.a */; productType = "com.apple.product-type.library.static"; }; - 96225BBE1203595F4D0672A487BB9861 /* secp256k1_swift-iOS */ = { + 8B46DCE922AD4DB52AB389148AB898AB /* scrypt-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 09CA449448E7309DBC21A6BD3E319838 /* Build configuration list for PBXNativeTarget "secp256k1_swift-iOS" */; + buildConfigurationList = 6172FF314CF6FDD0EE7BEB014649095A /* Build configuration list for PBXNativeTarget "scrypt-iOS" */; buildPhases = ( - 7473267694EB25007FA3A05AD22C3D27 /* Headers */, - BBEEDB9A5DAE6E4AB8C4F6B6B2EF4BB2 /* Sources */, - FC3AA5C1EA87DD47338B9100FB46F5DD /* Frameworks */, - 0FC126F948C80B2A20574CD7FEE827AC /* Copy generated compatibility header */, + F861629ACD553268DF434F0F56959DF5 /* Headers */, + 1DBC5B75CBA97552EF84D50D6F053E3F /* Sources */, + 30C84D375526C86BF24F081A4EF0CA55 /* Frameworks */, + CEDD87EC0BBAB26DCC718B994238180F /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( + 6B25264F7EED61228F38A533A55ADB9A /* PBXTargetDependency */, ); - name = "secp256k1_swift-iOS"; - productName = "secp256k1_swift-iOS"; - productReference = 20D278014F2D90DDD7C703E49B6727B7 /* libsecp256k1_swift-iOS.a */; + name = "scrypt-iOS"; + productName = "scrypt-iOS"; + productReference = BF7E9A738647C81A92D68BCF6E734C6B /* libscrypt-iOS.a */; productType = "com.apple.product-type.library.static"; }; 9646F4C6B5DB5298F5EEE5871120A244 /* BigInt-macOS */ = { @@ -2373,7 +2555,7 @@ ); name = "BigInt-macOS"; productName = "BigInt-macOS"; - productReference = EF13999388904A7883CEA9B745018AAF /* libBigInt-macOS.a */; + productReference = 1A0E65E61932B728FD97FB08D42B3EF6 /* libBigInt-macOS.a */; productType = "com.apple.product-type.library.static"; }; AF9F48E6961507C0E2FD7A3CDBC652DA /* BigInt-iOS */ = { @@ -2392,107 +2574,139 @@ ); name = "BigInt-iOS"; productName = "BigInt-iOS"; - productReference = AC8ED311289866CD8ED870EF0C3C5CF3 /* libBigInt-iOS.a */; + productReference = 4249BBDEF2DD259919D48F146E985928 /* libBigInt-iOS.a */; productType = "com.apple.product-type.library.static"; }; - BAA7945626BCC2CCA0CD2C7A0AC13E79 /* Pods-web3swift-iOS */ = { + E03BC878947EE75B154F4C52126FA465 /* SwiftRLP-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 3EF9AD5BB38D4B8D81F2E10D31B8FC16 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS" */; + buildConfigurationList = 34C02A2A41180F1C49A12F3C94BB6D39 /* Build configuration list for PBXNativeTarget "SwiftRLP-macOS" */; buildPhases = ( - 96B2181F13A512676DE43FB3511AFDDA /* Headers */, - A2ACE7E19845A64A7A861D0789B5556A /* Sources */, - 5266E30913229719A172673D2CC2CC9B /* Frameworks */, + 2F08BE2476997220D34CF9A4B9F6835B /* Headers */, + 7C8DB5921448D3C2CD42DF825BA68B7B /* Sources */, + 215FF64BB8F688F84B3231B77569E5C2 /* Frameworks */, + 3EB91FC9852F50FCD55BE7858C4F2E56 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - 38A31696BE8B09855448DB541DAF6CAF /* PBXTargetDependency */, - 2269634CF395C023BD0DE456EDC0E905 /* PBXTargetDependency */, - 695E61EC945DAB26310EFF15776F8416 /* PBXTargetDependency */, - FCBCE9AAE7712F633822A4305BA498B6 /* PBXTargetDependency */, - 755A1B5E06A6BE022C3FC0DD1BEEE56D /* PBXTargetDependency */, - 2C8BE55B42F306995084EBB384828202 /* PBXTargetDependency */, - 3608CB885D6B6B4B853ECBAC44A93F46 /* PBXTargetDependency */, - 4DC8DD86030434C6B1D0B5A99DEFAD48 /* PBXTargetDependency */, - 6380C782AA285DFB888C8E8249285814 /* PBXTargetDependency */, + 887F9C1C650417E1CBE7406FEDC48DFF /* PBXTargetDependency */, ); - name = "Pods-web3swift-iOS"; - productName = "Pods-web3swift-iOS"; - productReference = D275AC61F658F73CFA8823434BCA3406 /* libPods-web3swift-iOS.a */; + name = "SwiftRLP-macOS"; + productName = "SwiftRLP-macOS"; + productReference = 37A42E23E411D520ADBF58299104A5E4 /* libSwiftRLP-macOS.a */; productType = "com.apple.product-type.library.static"; }; - BB37143ACC20FC450C45EFD6C5660906 /* scrypt-iOS */ = { + E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = D9AC1A700A507419692FC870E90C8799 /* Build configuration list for PBXNativeTarget "scrypt-iOS" */; + buildConfigurationList = 19CA2EF2646C88FC1D5F4864827AF9A9 /* Build configuration list for PBXNativeTarget "CryptoSwift-iOS" */; buildPhases = ( - A8FE7F6CDE2FD821EC0D93ADE70A49E2 /* Headers */, - ADC13DDD5F0DDA1F9E13741ADBA5EB90 /* Sources */, - F8DE994896B53C78B2E78A42E3193FFC /* Frameworks */, - 8ACF3921958AA4E38424E2A472946D83 /* Copy generated compatibility header */, + D9438E55E725BF04D83CC7EC3D4AF915 /* Headers */, + 8FA32F9F48C4C6C1BA1B020B1EACED3A /* Sources */, + 49DDA0C2610D394C727D7031E3440CCF /* Frameworks */, + 1F7D245DDE5F17177A665A72104C9D4D /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - 419DB448EDECEAD154DB39A4EFDB540A /* PBXTargetDependency */, ); - name = "scrypt-iOS"; - productName = "scrypt-iOS"; - productReference = 17F353B4B162974207D9F48A62765D99 /* libscrypt-iOS.a */; + name = "CryptoSwift-iOS"; + productName = "CryptoSwift-iOS"; + productReference = A6F7930650FD31ED4C95EAB12B5DA36F /* libCryptoSwift-iOS.a */; productType = "com.apple.product-type.library.static"; }; - C87C2E6C438181FF7B92161BFC2DFBEB /* Result-macOS */ = { + EC4FD142A8187DC97F5C77E345493DC4 /* PromiseKit */ = { isa = PBXNativeTarget; - buildConfigurationList = 8B657CEEE4B76901522B282FFC7FE8DA /* Build configuration list for PBXNativeTarget "Result-macOS" */; + buildConfigurationList = C3E4E8C71E1F2FC6C63CC4862E81AA7A /* Build configuration list for PBXNativeTarget "PromiseKit" */; buildPhases = ( - EF326D981A695869EEB5F69BCE9A78B8 /* Headers */, - 1C3EF99237B7E5AF16765F5F4EBE5BE1 /* Sources */, - B244EFB510B7723225BAE6675E63CE10 /* Frameworks */, - 1C1219009207B65EA3F5EDD5F43FEA59 /* Copy generated compatibility header */, + BEB0EDBDBADA7FA289A4B00AA8E7EE0C /* Headers */, + B2D0D69A20610EAC9B54E4B5D6B33246 /* Sources */, + 201C2E8B1BBF4EA2C2E855CAD443F07A /* Frameworks */, + 1664729AD7926C68CEAB9CA1D7D7E258 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( ); - name = "Result-macOS"; - productName = "Result-macOS"; - productReference = 75DE42DDF2D327BA352CD0F8C0DA4B0F /* libResult-macOS.a */; + name = PromiseKit; + productName = PromiseKit; + productReference = 9E7C36E885EBC6AB812D67E4B28A9CE4 /* libPromiseKit.a */; productType = "com.apple.product-type.library.static"; }; - E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */ = { + EE65EFBDF686C56EA74D41CCE0304FCC /* scrypt-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 19CA2EF2646C88FC1D5F4864827AF9A9 /* Build configuration list for PBXNativeTarget "CryptoSwift-iOS" */; + buildConfigurationList = 214041070FF7013C5D3B1D956DD404CF /* Build configuration list for PBXNativeTarget "scrypt-macOS" */; buildPhases = ( - D9438E55E725BF04D83CC7EC3D4AF915 /* Headers */, - 8FA32F9F48C4C6C1BA1B020B1EACED3A /* Sources */, - 49DDA0C2610D394C727D7031E3440CCF /* Frameworks */, - 1F7D245DDE5F17177A665A72104C9D4D /* Copy generated compatibility header */, + B71970618A9DDD30CCF100C64EDA8C8C /* Headers */, + 57B025A6EC142DE7E77982E7488CF39E /* Sources */, + 435144EBFB416082687F21AE9FE91D96 /* Frameworks */, + 88F5681CA66294272E1F1C3DCE300CAE /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( + 5FA722F52DC7060EC2D68CC1867BA0B8 /* PBXTargetDependency */, ); - name = "CryptoSwift-iOS"; - productName = "CryptoSwift-iOS"; - productReference = A8865640371B98CE908E1A9A63C4B984 /* libCryptoSwift-iOS.a */; + name = "scrypt-macOS"; + productName = "scrypt-macOS"; + productReference = A1C101B8D6CF3BE7D5E588469BA4647B /* libscrypt-macOS.a */; productType = "com.apple.product-type.library.static"; }; - F5120265F2BDEB78BE6300C2AF965614 /* EthereumAddress-macOS */ = { + F25097D79C7232475816DB85533AC607 /* secp256k1_swift-macOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 88E198CDBBB0CAA2D5B912F48E5A8119 /* Build configuration list for PBXNativeTarget "EthereumAddress-macOS" */; + buildConfigurationList = 7F2C38356A69928AE969993F66D26974 /* Build configuration list for PBXNativeTarget "secp256k1_swift-macOS" */; buildPhases = ( - 0A517913ECA631FD90F898E1AC9F73FA /* Headers */, - 5C6F1730FAE5A8F910B63E28BED3C00B /* Sources */, - CDD5EEE59EED703D7D057105BF3320CA /* Frameworks */, - 64018E648C861544061787069E1652CF /* Copy generated compatibility header */, + 928D76306ECD6416741AC2FC86980F0C /* Headers */, + D4C45FCB33C5CC67AF6C20176655B09B /* Sources */, + 3B7AC4EF9C63E5F22954D8AF93D04330 /* Frameworks */, + D14E31813C666F7A19A593F9E5E8D029 /* Copy generated compatibility header */, ); buildRules = ( ); dependencies = ( - A22F26BA9F6F020F5AA933DCCC6209D2 /* PBXTargetDependency */, ); - name = "EthereumAddress-macOS"; - productName = "EthereumAddress-macOS"; - productReference = 53C768170DFB632A3ADBD2A703116B8E /* libEthereumAddress-macOS.a */; + name = "secp256k1_swift-macOS"; + productName = "secp256k1_swift-macOS"; + productReference = B43B308FB300789356930844D6B81CF8 /* libsecp256k1_swift-macOS.a */; + productType = "com.apple.product-type.library.static"; + }; + F8C504FC3CE2FB81EF2C3E4175B28B3D /* EthereumAddress-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = F43F6591A165353F2FE927771835E799 /* Build configuration list for PBXNativeTarget "EthereumAddress-iOS" */; + buildPhases = ( + 5B106CA9B70073DB5FBE37B959133AF3 /* Headers */, + B19CBA1C50E1B009CA741061002F3A8F /* Sources */, + 0CB8E604AAFC039274BE7F9019820464 /* Frameworks */, + 84D15A766EDF77627835C50AF2F46647 /* Copy generated compatibility header */, + ); + buildRules = ( + ); + dependencies = ( + 350D0EA4123E54B176975206BE3381A6 /* PBXTargetDependency */, + ); + name = "EthereumAddress-iOS"; + productName = "EthereumAddress-iOS"; + productReference = 27D0F7DCFEE54028674461B7456DB4EB /* libEthereumAddress-iOS.a */; + productType = "com.apple.product-type.library.static"; + }; + FFBF3D20256EEEEE218C227988266104 /* EthereumABI-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 485FEBD24BA1178535E81D093E91F648 /* Build configuration list for PBXNativeTarget "EthereumABI-iOS" */; + buildPhases = ( + 583E829B095CF5D84CEA55FCC985C749 /* Headers */, + 2090AC1FA361DDB648C75BB9E2DC4AA0 /* Sources */, + 739BFA7B674F25403C43C426637796E0 /* Frameworks */, + 179C24707C85FAF28343D6C5F58120DD /* Copy generated compatibility header */, + ); + buildRules = ( + ); + dependencies = ( + CECF16F2B83D3A302BFE3AD4E630E4AE /* PBXTargetDependency */, + 4A46F1E40806DBFA5F1546A658BFCCF4 /* PBXTargetDependency */, + 9278A7C03F26BA1E138F7AF44272A463 /* PBXTargetDependency */, + ); + name = "EthereumABI-iOS"; + productName = "EthereumABI-iOS"; + productReference = E692601913F2AB7B6FE40D658E90C7B5 /* libEthereumABI-iOS.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -2512,7 +2726,7 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = BC988C585F01918CDC758DA84387BAF3 /* Products */; + productRefGroup = 3EC5D1EA5568F6BB631C6A9AD5B40F86 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -2520,24 +2734,26 @@ 9646F4C6B5DB5298F5EEE5871120A244 /* BigInt-macOS */, E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */, 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */, - 1168313AEC7524AEDFC1224C6D3C6E44 /* EthereumAddress-iOS */, - F5120265F2BDEB78BE6300C2AF965614 /* EthereumAddress-macOS */, - BAA7945626BCC2CCA0CD2C7A0AC13E79 /* Pods-web3swift-iOS */, + FFBF3D20256EEEEE218C227988266104 /* EthereumABI-iOS */, + 75EC00B8FD54D720BB772CA16EEAE742 /* EthereumABI-macOS */, + F8C504FC3CE2FB81EF2C3E4175B28B3D /* EthereumAddress-iOS */, + 1084E340C76D167B42F96381D5AC59FB /* EthereumAddress-macOS */, + 56C190CBC3444CE65376067572B13693 /* Pods-web3swift-iOS */, 566C98B9528CB1527582959B19D87238 /* Pods-web3swift-iOS_Tests */, - 82C35D316B5E8115E43ACCFE4E50137C /* Pods-web3swift-macOS */, + 023FD8884DE6975FECF83E672E5A51B6 /* Pods-web3swift-macOS */, 7ED7E08B2BE4D50AC5F7E73B32DD2203 /* Pods-web3swift-macOS_Tests */, - 94906F0C68B58FB4B40554812C3BBFD8 /* PromiseKit */, - 558049EB555978BC8947ECF2498E78D9 /* PromiseKit.root-CorePromise-Foundation */, - 12455571B54E567146873FF705359CFE /* Result-iOS */, - C87C2E6C438181FF7B92161BFC2DFBEB /* Result-macOS */, - BB37143ACC20FC450C45EFD6C5660906 /* scrypt-iOS */, - 7BF3C926294C92422AFB78600D576975 /* scrypt-macOS */, - 96225BBE1203595F4D0672A487BB9861 /* secp256k1_swift-iOS */, - 4C59270F810F2B1FEC2F3D5A77188907 /* secp256k1_swift-macOS */, + EC4FD142A8187DC97F5C77E345493DC4 /* PromiseKit */, + 02DC76A9AFBA2BA6CA9EBA39CCD34BCC /* PromiseKit.root-CorePromise-Foundation */, + 16689698E943DBC08E5169468314C018 /* Result-iOS */, + 60BB8021A6290DE4F66E9D4A96906F3C /* Result-macOS */, + 8B46DCE922AD4DB52AB389148AB898AB /* scrypt-iOS */, + EE65EFBDF686C56EA74D41CCE0304FCC /* scrypt-macOS */, + 39C6DF22D4F83A78CB7F52D86381D937 /* secp256k1_swift-iOS */, + F25097D79C7232475816DB85533AC607 /* secp256k1_swift-macOS */, 3B79F6DB09B597AAE9D3EB939DA463D8 /* SipHash-iOS */, 4FCBE56BC5E931FDC43C642250037C1F /* SipHash-macOS */, - 1F803FF778771424C8085D9971D3840F /* SwiftRLP-iOS */, - 73527F6F8B0A792EA5FD7085DADC6B93 /* SwiftRLP-macOS */, + 064630A81A32C3F755213FAB5B3FAAAB /* SwiftRLP-iOS */, + E03BC878947EE75B154F4C52126FA465 /* SwiftRLP-macOS */, ); }; /* End PBXProject section */ @@ -2568,7 +2784,7 @@ shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 0FC126F948C80B2A20574CD7FEE827AC /* Copy generated compatibility header */ = { + 1664729AD7926C68CEAB9CA1D7D7E258 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2577,23 +2793,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.modulemap", + "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/secp256k1_swift-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/PromiseKit-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 129DD7E5FF17BAF38DCB561CC264C271 /* Copy generated compatibility header */ = { + 179C24707C85FAF28343D6C5F58120DD /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2602,23 +2818,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.modulemap", - "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit-umbrella.h", + "${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap", + "${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/PromiseKit-umbrella.h", + "${BUILT_PRODUCTS_DIR}/EthereumABI-iOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 18E6AE424D462D0BB6055CFFEA61E572 /* Copy generated compatibility header */ = { + 1B2679AE7A95EBF0FDDB427B7725D76B /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2627,23 +2843,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS.modulemap", + "${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/EthereumAddress-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/SipHash-macOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 1B2679AE7A95EBF0FDDB427B7725D76B /* Copy generated compatibility header */ = { + 1F7D245DDE5F17177A665A72104C9D4D /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2652,23 +2868,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS.modulemap", - "${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap", + "${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SipHash-macOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/CryptoSwift-iOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SipHash/SipHash-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 1C1219009207B65EA3F5EDD5F43FEA59 /* Copy generated compatibility header */ = { + 23E99947867445CF8C69CEFFAFFC0227 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2677,23 +2893,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/Result/Result-macOS.modulemap", - "${PODS_ROOT}/Headers/Public/Result/Result-macOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap", + "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/Result-macOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/PromiseKit.root-CorePromise-Foundation-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Result/Result-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Result/Result-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 1F7D245DDE5F17177A665A72104C9D4D /* Copy generated compatibility header */ = { + 3D42772EFBD89263E293714128E4BB20 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2702,23 +2918,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/Result/Result-iOS.modulemap", + "${PODS_ROOT}/Headers/Public/Result/Result-iOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/CryptoSwift-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Result-iOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Result/Result-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Result/Result-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 48CAA26C5BA7CC4886CFBB5FF41C3C8C /* Copy generated compatibility header */ = { + 3EB91FC9852F50FCD55BE7858C4F2E56 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2727,23 +2943,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/BigInt/BigInt-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/BigInt/BigInt-iOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap", + "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/BigInt-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/SwiftRLP-macOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/BigInt/BigInt-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/BigInt/BigInt-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 4F32BCC17F8E7CDDD337CE7D1F53727A /* Copy generated compatibility header */ = { + 43735E5C22EB2EABE184E24809108452 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2752,23 +2968,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap", - "${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h", + "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap", + "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/PromiseKit.root-CorePromise-Foundation-umbrella.h", + "${BUILT_PRODUCTS_DIR}/SwiftRLP-iOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 5EA346A1CAF71500DC1ACEDD14097686 /* Copy generated compatibility header */ = { + 48CAA26C5BA7CC4886CFBB5FF41C3C8C /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2777,23 +2993,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap", - "${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/BigInt/BigInt-iOS.modulemap", + "${PODS_ROOT}/Headers/Public/BigInt/BigInt-iOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/secp256k1_swift-macOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/BigInt-iOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/BigInt/BigInt-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/BigInt/BigInt-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 64018E648C861544061787069E1652CF /* Copy generated compatibility header */ = { + 506F24A206D803133DAA923324224506 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2843,7 +3059,7 @@ shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/BigInt/BigInt-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/BigInt/BigInt-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - 8ACF3921958AA4E38424E2A472946D83 /* Copy generated compatibility header */ = { + 84D15A766EDF77627835C50AF2F46647 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2852,23 +3068,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/scrypt/scrypt-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/scrypt/scrypt-iOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap", + "${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/scrypt-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/EthereumAddress-iOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/scrypt/scrypt-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/scrypt/scrypt-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - A419CDD858739CE2F6F3DD9DA2F2853A /* Copy generated compatibility header */ = { + 88F5681CA66294272E1F1C3DCE300CAE /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2893,7 +3109,7 @@ shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/scrypt/scrypt-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/scrypt/scrypt-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - AE8C8A4E08BFF14A2F1693B22AA97C5B /* Copy generated compatibility header */ = { + 8B19A86C041EB3572BC6954373DA0F4C /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2902,23 +3118,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/Result/Result-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/Result/Result-iOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap", + "${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/Result-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/secp256k1_swift-iOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Result/Result-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Result/Result-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - B1CDA63AFDA7BE620B34E4FDC752C9EB /* Copy generated compatibility header */ = { + 98E00FEDAA686C9CD8CF43BECA6FE814 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2927,23 +3143,23 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap", - "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/Result/Result-macOS.modulemap", + "${PODS_ROOT}/Headers/Public/Result/Result-macOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SwiftRLP-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Result-macOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Result/Result-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Result/Result-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; - DCFDAE6889A2F2AA8B57D01D168586DA /* Copy generated compatibility header */ = { + BBE72A55EB66D7E4A940F279D9F63711 /* Copy generated compatibility header */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -2952,20 +3168,70 @@ ); inputPaths = ( "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap", - "${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h", + "${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap", + "${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h", ); name = "Copy generated compatibility header"; outputFileListPaths = ( ); outputPaths = ( "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SwiftRLP-macOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/EthereumABI-macOS-umbrella.h", "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + showEnvVarsInLog = 1; + }; + CEDD87EC0BBAB26DCC718B994238180F /* Copy generated compatibility header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", + "${PODS_ROOT}/Headers/Public/scrypt/scrypt-iOS.modulemap", + "${PODS_ROOT}/Headers/Public/scrypt/scrypt-iOS-umbrella.h", + ); + name = "Copy generated compatibility header"; + outputFileListPaths = ( + ); + outputPaths = ( + "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", + "${BUILT_PRODUCTS_DIR}/scrypt-iOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/scrypt/scrypt-iOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/scrypt/scrypt-iOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; + showEnvVarsInLog = 1; + }; + D14E31813C666F7A19A593F9E5E8D029 /* Copy generated compatibility header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", + "${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap", + "${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h", + ); + name = "Copy generated compatibility header"; + outputFileListPaths = ( + ); + outputPaths = ( + "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", + "${BUILT_PRODUCTS_DIR}/secp256k1_swift-macOS-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; showEnvVarsInLog = 1; }; EDC821DB128FBEFA92BC6BC351D2709A /* Copy generated compatibility header */ = { @@ -3026,25 +3292,51 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 1C3EF99237B7E5AF16765F5F4EBE5BE1 /* Sources */ = { + 192B436BFD5C2D881B0BF7EEB76DBDEA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FE52A2BA42E76A122211A8115915233D /* Pods-web3swift-iOS-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1DBC5B75CBA97552EF84D50D6F053E3F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 655C7AAC2D964E8A317BD69CA59F54DE /* AnyError.swift in Sources */, - 4C20F5836E09BEAF0175C7F5D2D45F89 /* NoError.swift in Sources */, - 2F6E8156D02A841E2616F0996781F15F /* Result-macOS-dummy.m in Sources */, - 79C2298346A483DD086B4A9AC7223820 /* Result.swift in Sources */, - 9A899EFE19622CA6723D08C0F8FBB187 /* ResultProtocol.swift in Sources */, + C13DF5C0C3793C734EF3847DE3DFE9A0 /* BufferStorage.swift in Sources */, + AFDE5FB41EA9B22F9F7D1845806B8436 /* Cimpl.c in Sources */, + C9B648C3CD7850DC94E49F5F5329CA81 /* Salsa.swift in Sources */, + B591BC023D1E6A16FCA94930AABFD4E3 /* scrypt-iOS-dummy.m in Sources */, + BC9A423C1774D10E28F894E40D5AE2A3 /* Scrypt.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4F126988CBC888A0714AF1DA260B78DD /* Sources */ = { + 2090AC1FA361DDB648C75BB9E2DC4AA0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D38BBC7C8903B9EB7803ECA68167DE20 /* EthereumAddress-iOS-dummy.m in Sources */, - 3D6F8B4564F5BAF43F01ADCFBA720658 /* EthereumAddress.swift in Sources */, - 0F4C148C5393004D090DC7218E39BB39 /* Extensions.swift in Sources */, + B4471EDA97A5344990BA50D90F24AF31 /* ABI.swift in Sources */, + 341353A9C8AA2DF577CD96527EE2225D /* ABIDecoding.swift in Sources */, + 4D7F63CA708D40E84A6C8968CDB4D223 /* ABIElements.swift in Sources */, + 0EE3C6323A8EDEAB638639DD05932581 /* ABIEncoding.swift in Sources */, + B30C88B383282F3BA5CEFF72ADCD6975 /* ABIExtensions.swift in Sources */, + A9A3DCED2AEB2118A087FDC125D5D8A8 /* ABIParameterTypes.swift in Sources */, + 387F8491EE0600C1B119837221A22252 /* ABIParsing.swift in Sources */, + 2477779866B98A08454D05619FA403DC /* ABITypeParser.swift in Sources */, + 57BEB3200D2E2AA64E34C9960AC0A503 /* EthereumABI-iOS-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 57B025A6EC142DE7E77982E7488CF39E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AC932B736284B35ECAD3DB196C2C4533 /* BufferStorage.swift in Sources */, + 5342EFAEB9363EEF4AA9D23C58E28589 /* Cimpl.c in Sources */, + C540A907CA97EA4FB79818D21D2E7CD0 /* Salsa.swift in Sources */, + B50565BC4DBFAF865B10BA46420F7625 /* scrypt-macOS-dummy.m in Sources */, + E211E262D4BD3E0165706646B9DBAD9C /* Scrypt.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3078,55 +3370,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5C6F1730FAE5A8F910B63E28BED3C00B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 08F8D3D166021760B18C796EF207413F /* EthereumAddress-macOS-dummy.m in Sources */, - DBB230040D2BE00D2D5726E70957B1BE /* EthereumAddress.swift in Sources */, - 73ADC70790A1F8DFBCB7B7F2D1A2264E /* Extensions.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5EF30E27818FB63FE5D68283E679752C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0FFEBD2D6ACAE3AC711E0208FCEACC40 /* after.m in Sources */, - C35AFE3E2575CF308C100F43FC2B60CB /* after.swift in Sources */, - F6E2A19F261D93BB5E130674AEF90198 /* afterlife.swift in Sources */, - D575885715CF6B41AEA644EAE2513FE8 /* AnyPromise.m in Sources */, - E85D4BCF4C4214A3340D014F0CB27440 /* AnyPromise.swift in Sources */, - 1EE960C5AF0D4947CD23926FF20C2134 /* Box.swift in Sources */, - 44ACCC6BC3804034F682166BCB280D6C /* Catchable.swift in Sources */, - 0E7F3356235A21C8DEE7CFC67A802552 /* Configuration.swift in Sources */, - 01E1753617A93639EEA9E9A55B0315BA /* CustomStringConvertible.swift in Sources */, - C934E91003F09F0E5C50BD3FAA858A6A /* Deprecations.swift in Sources */, - 4CC995FC29A8A8E8C8C0B0B97A8C5486 /* dispatch_promise.m in Sources */, - 27CC89021B6035E3D3077405BF7D0518 /* Error.swift in Sources */, - 088ADDDC247990129868BE86AAFDD65F /* firstly.swift in Sources */, - E7A8CA29F94135EBCA9E6187C222A42A /* Guarantee.swift in Sources */, - 5C34CEC8C567D8A533F9FA1327868C96 /* hang.m in Sources */, - 459BB256132E1224D00C02FA4678450E /* hang.swift in Sources */, - C462A569CC9699DC1C14CB401D63CF5E /* join.m in Sources */, - A9FA53CE467640689F8095D7B4FC85E1 /* NSNotificationCenter+AnyPromise.m in Sources */, - 27DF4C9F60541A50E1E4C29080D83278 /* NSNotificationCenter+Promise.swift in Sources */, - F59F8D1792721D4062D9597FF2370D53 /* NSObject+Promise.swift in Sources */, - 5E1BA68C47D734105DD418DE2C795B71 /* NSTask+AnyPromise.m in Sources */, - 515FA154B65878E6DEB79E513C7F7FE3 /* NSURLSession+AnyPromise.m in Sources */, - 37B89B7042E76DF933791631E40CB4AB /* NSURLSession+Promise.swift in Sources */, - 3C698382149E46B98B05858131950249 /* Process+Promise.swift in Sources */, - 25ADF91F59CF38DA37B5155F3E4D28B8 /* Promise.swift in Sources */, - 70331820D199129F5DD2EF9609699F32 /* PromiseKit.root-CorePromise-Foundation-dummy.m in Sources */, - 97962E30EE5B5298443D563B897E4308 /* race.m in Sources */, - 0D668C0B0CBE5C06AE7AE80EC0F20207 /* race.swift in Sources */, - CBD35C9BC44BFC266C2B4E310F1EB6F9 /* Resolver.swift in Sources */, - D78C9EA6787B721D75665039BD726BF9 /* Thenable.swift in Sources */, - 8206DF8B40704C8CFE78662D412A422E /* when.m in Sources */, - 78DCC64E4BB4C69177C5391DF4BA6119 /* when.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 6950A9AD0D066BC48BB15390EA10BE78 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3139,28 +3382,50 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6F5CC9B499993EA733C785A3803C553D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B6699C206D4772B76BEAF1722CB04572 /* Pods-web3swift-macOS_Tests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 74A501CE727E95B4C6687723037D9862 /* Sources */ = { + 6C32DF8E3D984792A311C4A5FD4645C7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 006C73869D28CFC3C08992F0723EE0C6 /* Pods-web3swift-macOS-dummy.m in Sources */, + CFBF7084F0841CB8777A37BC16092662 /* after.m in Sources */, + 6A6F08C9310263A607DD61DF9EC1EA5F /* after.swift in Sources */, + 4ABF0E379FBEF92B4F0B8B68CBE09230 /* afterlife.swift in Sources */, + 0698C088B99DA6A050F31AABA173ED61 /* AnyPromise.m in Sources */, + 52E178194B9296D51D79BF2B7A4F7BA5 /* AnyPromise.swift in Sources */, + 857A105811C550ED97B48E423769E135 /* Box.swift in Sources */, + 3851107FB3FA5A4E70BE628AF438BC19 /* Catchable.swift in Sources */, + 509748BEA3EC752BC3A2AC9B055DE91C /* Configuration.swift in Sources */, + 64B09F51D747BE80ACF3869000E89585 /* CustomStringConvertible.swift in Sources */, + 0BE78CEAD41114017D74519E3B67A0A2 /* Deprecations.swift in Sources */, + 33E0957D577926FA5916FE4D0A9A431A /* dispatch_promise.m in Sources */, + DE9F01F9CE4B8C74DB084D584C1F4DF7 /* Error.swift in Sources */, + 46930C6A0C648E4A7A0830282F53E996 /* firstly.swift in Sources */, + FCA65EE46FA16DBEA0AD94E3C1C2FD03 /* Guarantee.swift in Sources */, + 2688E6C9E4E219F10E1154D94A3353B5 /* hang.m in Sources */, + 82C94A26B21102E331D831274DF3E5F3 /* hang.swift in Sources */, + AEE97FC60DDB4995F16A1796F5B56C1B /* join.m in Sources */, + 969296ED15F25F2DBDFA4E8DE7A3F15C /* NSNotificationCenter+AnyPromise.m in Sources */, + D7EC50261154FE1C386EDF60B128A90F /* NSNotificationCenter+Promise.swift in Sources */, + 84921E76FF03F22869F7FD1C2CC044B0 /* NSObject+Promise.swift in Sources */, + 0E5539016575272AA3BFC2BEC1D7EB53 /* NSTask+AnyPromise.m in Sources */, + 81AEF5216BF27FF1FAF23471914CFB03 /* NSURLSession+AnyPromise.m in Sources */, + 6970C806A3C7873A22DA26802EE63912 /* NSURLSession+Promise.swift in Sources */, + 842761D17768C84E2B62EECED7A7A656 /* Process+Promise.swift in Sources */, + DD67FFA8EE4F3833E14B823CEE55424B /* Promise.swift in Sources */, + 4AFCC9EC62D8433A0A0083506BFA0830 /* PromiseKit.root-CorePromise-Foundation-dummy.m in Sources */, + 937080F5624E366ADA825757B45DEE90 /* race.m in Sources */, + F281004328C1EE7335B9F8B4DF6D8F0B /* race.swift in Sources */, + 1D9EE21994BB9C1FDCBA47554188C89B /* Resolver.swift in Sources */, + 2369A748CC5CAD0D29225D30090B0131 /* Thenable.swift in Sources */, + F0444E1F4E7C762ECC68CF056B05412E /* when.m in Sources */, + FF7A4D23C449D4BB4A93095BB9F4ECA5 /* when.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7554990BF3A60368D06DE120F92AFA9D /* Sources */ = { + 6F5CC9B499993EA733C785A3803C553D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - AB9036DA4C5904627604A28671470C5A /* RLP.swift in Sources */, - 408DA994AB51EFFDD47DA8B29108EB0D /* SwiftRLP-iOS-dummy.m in Sources */, + B6699C206D4772B76BEAF1722CB04572 /* Pods-web3swift-macOS_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3176,6 +3441,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7C8DB5921448D3C2CD42DF825BA68B7B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6C983FCC57A9424B92E0AD5F05317431 /* RLP.swift in Sources */, + F5AE13A73A33CAF4BA119DDEBCAC5809 /* SwiftRLP-macOS-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8FA32F9F48C4C6C1BA1B020B1EACED3A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3258,31 +3532,32 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9C8F84D70CD3951B1660E208CB29441B /* Sources */ = { + 981295A50198CC22BC99FB891D53C23C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E26B96712A33AB8CE72BA17C152736E8 /* AnyError.swift in Sources */, - 2AFFA6CFA6FD4C6C4CF3FE7F256F8B04 /* NoError.swift in Sources */, - 3379FA9A4DA05C88936306809AC0EADA /* Result-iOS-dummy.m in Sources */, - E4831746A0E266E025EE80BCA4EF3BFD /* Result.swift in Sources */, - 228339669ABE224EA8C7AE49DC9EE0F8 /* ResultProtocol.swift in Sources */, + 8104031319BC96F60BFD0F501909D797 /* AnyError.swift in Sources */, + 162C34742BB8CDD3E2987A46C854F282 /* NoError.swift in Sources */, + 149D4B201B632E438223FBA71B4394D3 /* Result-macOS-dummy.m in Sources */, + 12E9BA35700BF9E489BC75ABC6088E61 /* Result.swift in Sources */, + 856C7A8C7D4956726A7299BEFBC01C49 /* ResultProtocol.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A27CC87411918F0608EA9F4339733D80 /* Sources */ = { + 9CB22439A4403B91380A6D0FF75767DD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3A611A77C4E834E1E7F375E6362DB0D7 /* Pods-web3swift-iOS_Tests-dummy.m in Sources */, + 8C8D2A38239F1CDA6CB302EFEA1E18B4 /* RLP.swift in Sources */, + D3B166774A35F98D4C599A9B4DCBDC82 /* SwiftRLP-iOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A2ACE7E19845A64A7A861D0789B5556A /* Sources */ = { + A27CC87411918F0608EA9F4339733D80 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EB0DEA3194A067ADEF216B5AEB36E957 /* Pods-web3swift-iOS-dummy.m in Sources */, + 3A611A77C4E834E1E7F375E6362DB0D7 /* Pods-web3swift-iOS_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3368,132 +3643,167 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - AC55CD23CEB47B0B14D8B2BE25385074 /* Sources */ = { + B19CBA1C50E1B009CA741061002F3A8F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D32E984FBE218628DC804D3F92B394BF /* EthereumAddress-iOS-dummy.m in Sources */, + 4A46B113C4612B07CA848FC63240296D /* EthereumAddress.swift in Sources */, + 2143F6BFBCB27696AC66E1E88312361D /* Extensions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B2D0D69A20610EAC9B54E4B5D6B33246 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 407A49373ABBE880240E941F98D7F117 /* after.m in Sources */, + 551E69D2CA91185ACDFCBFDE5505A63F /* after.swift in Sources */, + 4B0E14BAB8E59688BEDD2B5C94E261FA /* afterlife.swift in Sources */, + 46374BB7EC19111A4297CFE9832387F6 /* AnyPromise.m in Sources */, + 16DEF17C280AFAD959ECEED27F7FDCD6 /* AnyPromise.swift in Sources */, + F3B4A2958AB11045072673A69A78A808 /* Box.swift in Sources */, + E6E4C025FE5F1391E96A65CF5F594591 /* Catchable.swift in Sources */, + C1D9D7ECEE62A04544DFA4A2889BCC7D /* Configuration.swift in Sources */, + DE020DA46E23F23DCCFAE08D581C1210 /* CustomStringConvertible.swift in Sources */, + DE0C833855F30BFD02D7F624009AFCE5 /* Deprecations.swift in Sources */, + A7D96D76C3CF2A958DEDBFD4524D7526 /* dispatch_promise.m in Sources */, + 9F8C5B0AB545F419AF2F97CCD7224BB8 /* Error.swift in Sources */, + AEC703672CF0251F4AE1B807443AA2DF /* firstly.swift in Sources */, + 44C09B849F87D5EC7B9C8348E301AB1B /* Guarantee.swift in Sources */, + 6B2DC610BB5ACC7953553D5C4FA39033 /* hang.m in Sources */, + D486D63B958DFDD8C755799433969946 /* hang.swift in Sources */, + 2A7E41504F95438DB79E852FB720F8B8 /* join.m in Sources */, + FB5F656078445F49C1D464089236D551 /* NSNotificationCenter+AnyPromise.m in Sources */, + A94EC8DF49968D812DEDDAD218DDAE1E /* NSNotificationCenter+Promise.swift in Sources */, + 06AFCBEE04085CA117D6CEA63CF64C27 /* NSObject+Promise.swift in Sources */, + BCE563F1B7FA756C138FC28179851EC7 /* NSTask+AnyPromise.m in Sources */, + 64B44E304433C6993AB07F47614BBC5E /* NSURLSession+AnyPromise.m in Sources */, + 1C4DEFB88F8A0938532DA2184D2402AC /* NSURLSession+Promise.swift in Sources */, + 8BA4D38F41C7AD0545B23BB7671C2114 /* Process+Promise.swift in Sources */, + B95242B48A9EBE0FD2ED1CBD13BCF4E7 /* Promise.swift in Sources */, + B4551C11886444FD0ECFCE0F05367412 /* PromiseKit-dummy.m in Sources */, + 7BE64ADC0FA2EBA004233D25BA3BA004 /* race.m in Sources */, + 201B3540FF03FB8315A0024F4467C68F /* race.swift in Sources */, + 25851E22505E49BED0DF4DAE6C033724 /* Resolver.swift in Sources */, + 0C67CB16C374D9368E38EB149B7CEEF8 /* Thenable.swift in Sources */, + 11F368D67F8A1E7E97B1DBD198C94069 /* UIView+AnyPromise.m in Sources */, + 25F9AEA143C2B354BBD7BEEEDECF6116 /* UIView+Promise.swift in Sources */, + BF3DECFBE86EB35CFAC5BAE1C0268391 /* UIViewController+AnyPromise.m in Sources */, + 69A4B05BCEDEACD5C3C10D2B2913F919 /* UIViewPropertyAnimator+Promise.swift in Sources */, + E667D403FE161578DA4BD7A748C01FE0 /* when.m in Sources */, + 7AFF4F6002793DD750318A9334D3BB0F /* when.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B849DE3B3663A6CBF97D754340337E57 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DD79FE3BB4C3C7D3A923E6CC1B66064A /* RLP.swift in Sources */, - AA93CBB28A057A39E3A55586997114BD /* SwiftRLP-macOS-dummy.m in Sources */, + 8B3520FF1C6F9AE9FC4CB782022EBDB8 /* lax_der_parsing.c in Sources */, + F6B78FA78EDE2C42ECDEE022019AB812 /* lax_der_privatekey_parsing.c in Sources */, + 73197ACF23C4CCEC651FB50DA6AF71A9 /* secp256k1.c in Sources */, + 9C1D45EE7F4C75C150166F58C0C5827F /* secp256k1.swift in Sources */, + D6DCA066BC93D939AC99A4E197574317 /* secp256k1_swift-iOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - ADC13DDD5F0DDA1F9E13741ADBA5EB90 /* Sources */ = { + D2D23DE9E3DD97F661D39734C713DFCD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4E0086DE48C75B11B8E2D08041EEA2A5 /* BufferStorage.swift in Sources */, - D04010B8C8B3844F185CA1437FFF5118 /* Cimpl.c in Sources */, - B8B0732D6BD64650E99A7C362E617FA8 /* Salsa.swift in Sources */, - 319DAAEE886E1752C38A946984071408 /* scrypt-iOS-dummy.m in Sources */, - 7C4A904DCA206E41A88861F990CDE0BC /* Scrypt.swift in Sources */, + C89964A06EC88B3B556310F199344D68 /* Pods-web3swift-macOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BBEEDB9A5DAE6E4AB8C4F6B6B2EF4BB2 /* Sources */ = { + D3545085D966F9E71031F5551A836F21 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8972ED44B8E31FAE3C248BBCCB8E7CC4 /* lax_der_parsing.c in Sources */, - 014401F351E5C79C50E62052E8AD671C /* lax_der_privatekey_parsing.c in Sources */, - EEBBD653ACE1E18F44D391EC926D1EF9 /* secp256k1.c in Sources */, - A373AD2926D810C1056D9FECF17DD66D /* secp256k1.swift in Sources */, - BD755CD92BD7C02AF8A0A289DC9E8446 /* secp256k1_swift-iOS-dummy.m in Sources */, + 47CD85DFCA1848F901AAB6D6F6F1DC78 /* EthereumAddress-macOS-dummy.m in Sources */, + 6AAD33E6E1945969931C25BAD27B42BA /* EthereumAddress.swift in Sources */, + E5EFEA69608F27C359D3B7989D25F0B1 /* Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D0BD425EF1B48E5B0B78F0ED11C0ECB2 /* Sources */ = { + D4C45FCB33C5CC67AF6C20176655B09B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EEB835EB989FDE954E0253B6BED77F43 /* after.m in Sources */, - 5E141CAFCF233DCA8F297AA169BA6AE7 /* after.swift in Sources */, - 09F1AC7E0FE7F27B9029F4B3D06DD73E /* afterlife.swift in Sources */, - 1026302AD9FDCB8A55CB7EBB06DA0D7F /* AnyPromise.m in Sources */, - 804014B054A6AF38DF4D8859000D64D4 /* AnyPromise.swift in Sources */, - F9451AAFCEDF04CB35C64C98192AC819 /* Box.swift in Sources */, - D937FEA1E574089DEF1B2FF475B3F2B7 /* Catchable.swift in Sources */, - D33063EEBD209F32520B754AD30B31A8 /* Configuration.swift in Sources */, - DF4ECF7A425192C1C45C4AB1E9BAE553 /* CustomStringConvertible.swift in Sources */, - 87C3D298B9E9216D388BA5B0D015EE50 /* Deprecations.swift in Sources */, - F9D3A99DCE33C06801BDC5EBADEDFDA9 /* dispatch_promise.m in Sources */, - CA0DC69F0F366577F4021A1FB04730B2 /* Error.swift in Sources */, - 00CE1E56028E70F6A410464BB8266F28 /* firstly.swift in Sources */, - 25DB619FFE4DED74D902A70CD2642ED4 /* Guarantee.swift in Sources */, - 21B1C23EA3CD320C60DE1B2C4F849A2C /* hang.m in Sources */, - E75EA18FC026B0FE0E943667D597D909 /* hang.swift in Sources */, - 376C09B5EF8BAEF6D7450FDD24DA2530 /* join.m in Sources */, - 506BDA80E1D1FADE6D2EAE8FE6533C13 /* NSNotificationCenter+AnyPromise.m in Sources */, - 1B2C98EB955D193734DA944CDBAF4CBB /* NSNotificationCenter+Promise.swift in Sources */, - 54275399FAE4959C9EEAC7C7E8EA2031 /* NSObject+Promise.swift in Sources */, - F4F971E86909084B5DE98EB247D30EAF /* NSTask+AnyPromise.m in Sources */, - 5BFB61E4B72C16BDD714663095E1E602 /* NSURLSession+AnyPromise.m in Sources */, - CD433301876DFD79558B30167DD81DED /* NSURLSession+Promise.swift in Sources */, - B725B5E58DF7010A5CED552276526B66 /* Process+Promise.swift in Sources */, - 274467E80B57985D276837BC38F63C9C /* Promise.swift in Sources */, - 48D821F48A258CA9FCC0524545AF23B3 /* PromiseKit-dummy.m in Sources */, - A88812CCF543A4485A540AE2567B4B88 /* race.m in Sources */, - 0676D57F5CE425CA83CAA976ED4030D7 /* race.swift in Sources */, - 11235690EFCBB5F0EBC4A56A7E3AB2DA /* Resolver.swift in Sources */, - 1B7BD089E927617EA26BDF05EAA765A2 /* Thenable.swift in Sources */, - 27068BF23AE89103AC017DCE533A0B84 /* UIView+AnyPromise.m in Sources */, - D6BEC5D8B88A2BF435ADEDDA2505900A /* UIView+Promise.swift in Sources */, - 2AC384703D326D9D63AC130A9FFAF78E /* UIViewController+AnyPromise.m in Sources */, - 6D0468F188D17EFAC5C4655473D99D74 /* UIViewPropertyAnimator+Promise.swift in Sources */, - 0B8DCF4FC4B4CC3F687AC9FB1E97504C /* when.m in Sources */, - 899F8A018D26D3A321EB0481C091847F /* when.swift in Sources */, + 11B9993FADEB6211B59663345DE5E978 /* lax_der_parsing.c in Sources */, + DDAAEE587CECD365E4372D6AEF67D713 /* lax_der_privatekey_parsing.c in Sources */, + BF3AD846ADBFAF021EE70996A7ED071A /* secp256k1.c in Sources */, + F58374064F4B7EFE824BF746EABBEE37 /* secp256k1.swift in Sources */, + 39681148F2D32BE962A511F427CD42ED /* secp256k1_swift-macOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - F26428FB9A70DF978834F0A0F8B50B0F /* Sources */ = { + F202AF892C75A508DD88D70F474FBA77 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4D47DC986746CEF8703D74068A8201C3 /* BufferStorage.swift in Sources */, - 6663694C763AF2F46E6A548540FADB3C /* Cimpl.c in Sources */, - 599CEF91B917F7C8758E1E13C50B2A90 /* Salsa.swift in Sources */, - E2F52C65710FEE56EBABD1C599E031E2 /* scrypt-macOS-dummy.m in Sources */, - D1F87BF791595C2F5B4A86F445081ED5 /* Scrypt.swift in Sources */, + 2469775BF29544EFC833E726E761A6D5 /* AnyError.swift in Sources */, + 0194087258D01A6AAD57DD0DCF7F9971 /* NoError.swift in Sources */, + 153311AB46ACF9C1960DF5E52EF0E7B9 /* Result-iOS-dummy.m in Sources */, + 3415B2D18705344A178286314A9C0038 /* Result.swift in Sources */, + 803429C07CB9F5378967751502E38A45 /* ResultProtocol.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - F4783445DE7F29598185898BF1D1FA23 /* Sources */ = { + F24FCB33D2CE51D2A03491918BF5B8F7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E262F38BE8D55B54CB886EAC66214BFD /* lax_der_parsing.c in Sources */, - 4CDD68A843BFBB60D9186F29785293F9 /* lax_der_privatekey_parsing.c in Sources */, - 9786160112EBD1D91A7AB61E7E585A09 /* secp256k1.c in Sources */, - 5F569BB3EF9E99550253E3309677BFD7 /* secp256k1.swift in Sources */, - 4876BE2384F8243077AD5F55AB07AC4B /* secp256k1_swift-macOS-dummy.m in Sources */, + EC534D19303041971EDE9C1C79A0F5FF /* ABI.swift in Sources */, + ACC598D7BAEB964F6A2E8BA38307C4F6 /* ABIDecoding.swift in Sources */, + E3D91DEF848307121405F35618B723BA /* ABIElements.swift in Sources */, + 5BFC536A9D0ED05F329623FFFE9B9C6C /* ABIEncoding.swift in Sources */, + 31648EA9AB41381E4C683FCFD69B5B97 /* ABIExtensions.swift in Sources */, + AE317D2940830F9B289A00565CE59FE6 /* ABIParameterTypes.swift in Sources */, + B747E0DC81EB6CFCD9751A67CC0C6D17 /* ABIParsing.swift in Sources */, + CF08F59B4689BEF43A5B7F883C330BBB /* ABITypeParser.swift in Sources */, + EB4F4E8A7A76E8F00B6B6B9D5D93C6BE /* EthereumABI-macOS-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 02BA5612135F3D656000F3174E527D10 /* PBXTargetDependency */ = { + 02659AE1B67C7B1511ABF2C7A04E2B4E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "BigInt-iOS"; - target = AF9F48E6961507C0E2FD7A3CDBC652DA /* BigInt-iOS */; - targetProxy = E4535F8068DAE0F786E0E402D0C94ABE /* PBXContainerItemProxy */; + name = "EthereumAddress-macOS"; + target = 1084E340C76D167B42F96381D5AC59FB /* EthereumAddress-macOS */; + targetProxy = 4BC1B5C55B9E19379BFD1419C6475244 /* PBXContainerItemProxy */; }; - 1E5CC3B070AA071ADEB9D014A865CC6C /* PBXTargetDependency */ = { + 0967375AB22B66ADBB9D19EA723B7DA1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "secp256k1_swift-macOS"; - target = 4C59270F810F2B1FEC2F3D5A77188907 /* secp256k1_swift-macOS */; - targetProxy = BB90BB48F65D5795C75190C5B68C55DA /* PBXContainerItemProxy */; + name = "EthereumAddress-iOS"; + target = F8C504FC3CE2FB81EF2C3E4175B28B3D /* EthereumAddress-iOS */; + targetProxy = 1074B809BD71CC2DC821BC5E173A4740 /* PBXContainerItemProxy */; }; - 2055448327DB15BA03467F050E753FB0 /* PBXTargetDependency */ = { + 0D545F5A0BAC11E9ED61D880B15A786E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "EthereumAddress-macOS"; - target = F5120265F2BDEB78BE6300C2AF965614 /* EthereumAddress-macOS */; - targetProxy = FC1CF70CADD772EA1F635C39F8E9A792 /* PBXContainerItemProxy */; + name = "PromiseKit.root-CorePromise-Foundation"; + target = 02DC76A9AFBA2BA6CA9EBA39CCD34BCC /* PromiseKit.root-CorePromise-Foundation */; + targetProxy = FE86C0598E860121877FB385FC2747CE /* PBXContainerItemProxy */; }; - 2269634CF395C023BD0DE456EDC0E905 /* PBXTargetDependency */ = { + 18AE85A800367509ACE31E973FB46584 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "CryptoSwift-iOS"; - target = E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */; - targetProxy = 13C00F95FF864E5C7AAC5B0A5CB8498F /* PBXContainerItemProxy */; + name = "EthereumABI-iOS"; + target = FFBF3D20256EEEEE218C227988266104 /* EthereumABI-iOS */; + targetProxy = 12BDC3CC8385F7A17B4C9A4084570897 /* PBXContainerItemProxy */; + }; + 1E105E4F2A6BEB962894ADC68D751F0D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = PromiseKit; + target = EC4FD142A8187DC97F5C77E345493DC4 /* PromiseKit */; + targetProxy = D23A20FA7224632C3A5FE8EA34DEF1D4 /* PBXContainerItemProxy */; + }; + 1E9BAABB9A2D27A10CA18AA0AB29D19A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "CryptoSwift-macOS"; + target = 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */; + targetProxy = EDCBD08F51F8B9B91035148948A48489 /* PBXContainerItemProxy */; }; 2A5B940C38D42B8D734A160124EFFE9A /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -3501,95 +3811,143 @@ target = 3B79F6DB09B597AAE9D3EB939DA463D8 /* SipHash-iOS */; targetProxy = AC378E3E20AF5D424B6D68F67641CFC3 /* PBXContainerItemProxy */; }; - 2C8BE55B42F306995084EBB384828202 /* PBXTargetDependency */ = { + 350D0EA4123E54B176975206BE3381A6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "SipHash-iOS"; - target = 3B79F6DB09B597AAE9D3EB939DA463D8 /* SipHash-iOS */; - targetProxy = C0F3CE7136EDD63588CA49A936A5759F /* PBXContainerItemProxy */; + name = "CryptoSwift-iOS"; + target = E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */; + targetProxy = 6AE3006AF993F15800127DD3F057F155 /* PBXContainerItemProxy */; }; - 3608CB885D6B6B4B853ECBAC44A93F46 /* PBXTargetDependency */ = { + 4A46F1E40806DBFA5F1546A658BFCCF4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "SwiftRLP-iOS"; - target = 1F803FF778771424C8085D9971D3840F /* SwiftRLP-iOS */; - targetProxy = 97F0040393FC590BA7564498436EC95D /* PBXContainerItemProxy */; + name = "CryptoSwift-iOS"; + target = E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */; + targetProxy = 5E5A5367425FAE2AC8C07569D7CBE881 /* PBXContainerItemProxy */; }; - 38A31696BE8B09855448DB541DAF6CAF /* PBXTargetDependency */ = { + 571654461CE17E7F4576D91D3D7A7721 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "BigInt-iOS"; - target = AF9F48E6961507C0E2FD7A3CDBC652DA /* BigInt-iOS */; - targetProxy = E2571A8251835112EFDDA05DFB2E5DB7 /* PBXContainerItemProxy */; + name = "secp256k1_swift-iOS"; + target = 39C6DF22D4F83A78CB7F52D86381D937 /* secp256k1_swift-iOS */; + targetProxy = E3D60F25AD4AFCD3E199C418A6BEC4CB /* PBXContainerItemProxy */; }; - 419DB448EDECEAD154DB39A4EFDB540A /* PBXTargetDependency */ = { + 5FA722F52DC7060EC2D68CC1867BA0B8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "CryptoSwift-iOS"; - target = E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */; - targetProxy = ED9EA08A437EDE511FD5DFDA715E57C7 /* PBXContainerItemProxy */; + name = "CryptoSwift-macOS"; + target = 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */; + targetProxy = 42C05260B28DAAAD5E44B471A57BDE2A /* PBXContainerItemProxy */; }; - 41F78C658B3F9F5219DDE2ECF3E07F6D /* PBXTargetDependency */ = { + 64216B85F5A267A4A8A29E2853348D52 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SwiftRLP-macOS"; + target = E03BC878947EE75B154F4C52126FA465 /* SwiftRLP-macOS */; + targetProxy = C2A6BB71B66A804F107BDE387EED9DFB /* PBXContainerItemProxy */; + }; + 6B25264F7EED61228F38A533A55ADB9A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "CryptoSwift-iOS"; target = E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */; - targetProxy = F6D2E7AC0942F82635983E5CBB33D700 /* PBXContainerItemProxy */; + targetProxy = 20A317B02DEAB0C5E12252BAD3678AC3 /* PBXContainerItemProxy */; }; - 4DC8DD86030434C6B1D0B5A99DEFAD48 /* PBXTargetDependency */ = { + 71225E4B8AE60381FB07D307E4B6D4D6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "scrypt-iOS"; - target = BB37143ACC20FC450C45EFD6C5660906 /* scrypt-iOS */; - targetProxy = CF619704DBA07523055F8D5648DDBAC5 /* PBXContainerItemProxy */; + name = "scrypt-macOS"; + target = EE65EFBDF686C56EA74D41CCE0304FCC /* scrypt-macOS */; + targetProxy = 9619E33BB76CA82AF5BCFD855D8DE72E /* PBXContainerItemProxy */; }; - 6380C782AA285DFB888C8E8249285814 /* PBXTargetDependency */ = { + 71C496B0EA254126C05B904C7F1E90A1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "secp256k1_swift-iOS"; - target = 96225BBE1203595F4D0672A487BB9861 /* secp256k1_swift-iOS */; - targetProxy = E34A7F6994A6A82EB46702FB69724C37 /* PBXContainerItemProxy */; + name = "EthereumAddress-macOS"; + target = 1084E340C76D167B42F96381D5AC59FB /* EthereumAddress-macOS */; + targetProxy = 2D8C658A18F2B96B45403A04ECD943E9 /* PBXContainerItemProxy */; }; - 695E61EC945DAB26310EFF15776F8416 /* PBXTargetDependency */ = { + 727A2BB019C3EBC7776A2D069690F4A6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "EthereumAddress-iOS"; - target = 1168313AEC7524AEDFC1224C6D3C6E44 /* EthereumAddress-iOS */; - targetProxy = 2A170694DEDAF59456D7141DB9F7FACC /* PBXContainerItemProxy */; + name = "SipHash-macOS"; + target = 4FCBE56BC5E931FDC43C642250037C1F /* SipHash-macOS */; + targetProxy = 381F95DA9E2FDB23DE4AB413195C40C2 /* PBXContainerItemProxy */; }; - 755A1B5E06A6BE022C3FC0DD1BEEE56D /* PBXTargetDependency */ = { + 7D99355E255D3CAB43E880FCAD7810DB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Result-iOS"; - target = 12455571B54E567146873FF705359CFE /* Result-iOS */; - targetProxy = 38BDFC13BA428BD451594A459B74A302 /* PBXContainerItemProxy */; + name = "SwiftRLP-iOS"; + target = 064630A81A32C3F755213FAB5B3FAAAB /* SwiftRLP-iOS */; + targetProxy = 48C230599D2897ADA99AF94AE1966B79 /* PBXContainerItemProxy */; }; - 82AAC9DD7930B8C6339DED045709C87D /* PBXTargetDependency */ = { + 887F9C1C650417E1CBE7406FEDC48DFF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "SipHash-macOS"; - target = 4FCBE56BC5E931FDC43C642250037C1F /* SipHash-macOS */; - targetProxy = 881B896164342E47B02F93B29ADA3355 /* PBXContainerItemProxy */; + name = "BigInt-macOS"; + target = 9646F4C6B5DB5298F5EEE5871120A244 /* BigInt-macOS */; + targetProxy = 714B2335333EF3361207DF61B815EABB /* PBXContainerItemProxy */; + }; + 894ED1800495B1A047AF49B5D576542E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "CryptoSwift-macOS"; + target = 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */; + targetProxy = 59F60AFE805CEBB2EDEC5D68F84B1576 /* PBXContainerItemProxy */; + }; + 8B85536E7A2A3FC702D31FFB0CE7E18A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "secp256k1_swift-macOS"; + target = F25097D79C7232475816DB85533AC607 /* secp256k1_swift-macOS */; + targetProxy = 629DA96E2410B6F480F103C731020B15 /* PBXContainerItemProxy */; + }; + 91A8EB95CC5E24DE78FF51AF4F9F9591 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "BigInt-iOS"; + target = AF9F48E6961507C0E2FD7A3CDBC652DA /* BigInt-iOS */; + targetProxy = 36A6BC9A8529E6996209859ED7E7041A /* PBXContainerItemProxy */; + }; + 9278A7C03F26BA1E138F7AF44272A463 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "EthereumAddress-iOS"; + target = F8C504FC3CE2FB81EF2C3E4175B28B3D /* EthereumAddress-iOS */; + targetProxy = DCA19D3862551FBDC00AAF6455703513 /* PBXContainerItemProxy */; }; - 985A809AF607C0CA13161FCFE50F4C36 /* PBXTargetDependency */ = { + 9C5DDB2602B091154A843E950D482712 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Result-macOS"; - target = C87C2E6C438181FF7B92161BFC2DFBEB /* Result-macOS */; - targetProxy = 1D311CE48C7A73E73FD12595C75A78C9 /* PBXContainerItemProxy */; + target = 60BB8021A6290DE4F66E9D4A96906F3C /* Result-macOS */; + targetProxy = 099BB689D5DBD5D5DEBA336FBD217742 /* PBXContainerItemProxy */; }; - 9E296E6501EBD5FDE5817558B2BF7E2A /* PBXTargetDependency */ = { + A26C0CA8CFB4FEF8510603291FA6567D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "BigInt-macOS"; - target = 9646F4C6B5DB5298F5EEE5871120A244 /* BigInt-macOS */; - targetProxy = E3B6F092EBFA691E0A430BD173868EE2 /* PBXContainerItemProxy */; + name = "scrypt-iOS"; + target = 8B46DCE922AD4DB52AB389148AB898AB /* scrypt-iOS */; + targetProxy = AD688405EBF3846C3A14C36C7F7467F8 /* PBXContainerItemProxy */; }; - 9F20C8D399DE8D34DCEEE1FDF42CFCAA /* PBXTargetDependency */ = { + A3C977A971A55D81A3EDB024FEF6F3B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "PromiseKit.root-CorePromise-Foundation"; - target = 558049EB555978BC8947ECF2498E78D9 /* PromiseKit.root-CorePromise-Foundation */; - targetProxy = BE0F4DBA374559F8940C0B70384476BD /* PBXContainerItemProxy */; + name = "CryptoSwift-iOS"; + target = E615C0628D54019CCEE5C0CC80B55529 /* CryptoSwift-iOS */; + targetProxy = 70F9AB5B3A118321E51F635B2BEE3CED /* PBXContainerItemProxy */; + }; + AECE3A83555371FEE0C000441EA7F746 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "BigInt-iOS"; + target = AF9F48E6961507C0E2FD7A3CDBC652DA /* BigInt-iOS */; + targetProxy = B26EAE97BDAB5AF01C604365CB5F406C /* PBXContainerItemProxy */; }; - A22F26BA9F6F020F5AA933DCCC6209D2 /* PBXTargetDependency */ = { + BAD76E8361F4D9801FAF4CAEE1E33A93 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SipHash-iOS"; + target = 3B79F6DB09B597AAE9D3EB939DA463D8 /* SipHash-iOS */; + targetProxy = 283B81AF6A42B35D635E192D621E2B56 /* PBXContainerItemProxy */; + }; + C0C1466C80B5B9098C4ADE3D8D0FF848 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "CryptoSwift-macOS"; target = 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */; - targetProxy = D3EE8712BA96FE8983FC958E6574EDD5 /* PBXContainerItemProxy */; + targetProxy = E0E74766A66548F2C349A91FC003EF0A /* PBXContainerItemProxy */; }; - C6510E8CFAB977BE7B6241436DAC4841 /* PBXTargetDependency */ = { + C269DDA1242D2E3E298B6F655C4A167D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "scrypt-macOS"; - target = 7BF3C926294C92422AFB78600D576975 /* scrypt-macOS */; - targetProxy = 8022E9AB3C92BAD10B2AEFCE42C6EDA5 /* PBXContainerItemProxy */; + name = "EthereumABI-macOS"; + target = 75EC00B8FD54D720BB772CA16EEAE742 /* EthereumABI-macOS */; + targetProxy = 61558A075BFFFBA7882CAEE8C5732ECE /* PBXContainerItemProxy */; + }; + C5E73C2BC7125A028DD21893CBB2FEBA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "BigInt-macOS"; + target = 9646F4C6B5DB5298F5EEE5871120A244 /* BigInt-macOS */; + targetProxy = 23B4CA009D06E1EB2F03415680002335 /* PBXContainerItemProxy */; }; C6D935F507D2100088E917501A5BB59D /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -3597,82 +3955,145 @@ target = 4FCBE56BC5E931FDC43C642250037C1F /* SipHash-macOS */; targetProxy = 284C9AFC38A225A506CB24973AEFB321 /* PBXContainerItemProxy */; }; - CD84CCD9860362B77E623B72E64A8990 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "BigInt-macOS"; - target = 9646F4C6B5DB5298F5EEE5871120A244 /* BigInt-macOS */; - targetProxy = 995B8D8F764EF523079B88A06313F11D /* PBXContainerItemProxy */; - }; - D25FD61F0F8712699C186B8B64A1A47B /* PBXTargetDependency */ = { + CECF16F2B83D3A302BFE3AD4E630E4AE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "CryptoSwift-macOS"; - target = 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */; - targetProxy = FA5D6DF00D850BA03F64F8B7F8E88175 /* PBXContainerItemProxy */; + name = "BigInt-iOS"; + target = AF9F48E6961507C0E2FD7A3CDBC652DA /* BigInt-iOS */; + targetProxy = 06FAFF995DCDF3CCF5C19865E9FCA57F /* PBXContainerItemProxy */; }; DA81B8EC030393B0ADEBDB02050FCFCB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-web3swift-macOS"; - target = 82C35D316B5E8115E43ACCFE4E50137C /* Pods-web3swift-macOS */; + target = 023FD8884DE6975FECF83E672E5A51B6 /* Pods-web3swift-macOS */; targetProxy = 1E5017C3A1512E67B0318DD1DACDE515 /* PBXContainerItemProxy */; }; - DCCED206D4BBB569EEFCBD6A2C1BAC88 /* PBXTargetDependency */ = { + E5418EBD52BE4001ACF1E9B736E61DB4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "CryptoSwift-macOS"; - target = 78DC154308FD9CFC54ADA13FD1897A6B /* CryptoSwift-macOS */; - targetProxy = E8B4498958DB7A8D6B92BD5B3EC5929C /* PBXContainerItemProxy */; + name = "Result-iOS"; + target = 16689698E943DBC08E5169468314C018 /* Result-iOS */; + targetProxy = BBE7A89B2AC6FEAE944585350A21A6F6 /* PBXContainerItemProxy */; }; F3DDE7BB170DA1519FDDE4BA03AB73FA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-web3swift-iOS"; - target = BAA7945626BCC2CCA0CD2C7A0AC13E79 /* Pods-web3swift-iOS */; + target = 56C190CBC3444CE65376067572B13693 /* Pods-web3swift-iOS */; targetProxy = 366CCE30759EB3C0FF8E45BE9572B007 /* PBXContainerItemProxy */; }; - FCBCE9AAE7712F633822A4305BA498B6 /* PBXTargetDependency */ = { + F99596A36A7D743925C51FA2EAC6A926 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = PromiseKit; - target = 94906F0C68B58FB4B40554812C3BBFD8 /* PromiseKit */; - targetProxy = 78E3F5567AAF195D28B5DA37D51C8623 /* PBXContainerItemProxy */; - }; - FE4F7F2A1F792D695B3070E073F67F11 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SwiftRLP-macOS"; - target = 73527F6F8B0A792EA5FD7085DADC6B93 /* SwiftRLP-macOS */; - targetProxy = 819958A4438F4712BB2395ECD30B2C4D /* PBXContainerItemProxy */; + name = "BigInt-macOS"; + target = 9646F4C6B5DB5298F5EEE5871120A244 /* BigInt-macOS */; + targetProxy = A782764E5DFF6FDC6717BF4453214525 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0642CE789E80E243CAD03C3BC1721169 /* Debug */ = { + 02BEABF91F94549686F3C50DDE0DD7D9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1412597E34EB8268006B0BCFF20BB89A /* secp256k1_swift-iOS.xcconfig */; + baseConfigurationReference = 4AA4C4E3B71B38DD9AC53FDE78CAE9EA /* PromiseKit.root-CorePromise-Foundation.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap"; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = secp256k1_swift; - PRODUCT_NAME = "secp256k1_swift-iOS"; + PRODUCT_MODULE_NAME = PromiseKit; + PRODUCT_NAME = "PromiseKit.root-CorePromise-Foundation"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; + SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Debug; + name = Release; }; - 0D0B0751228CE1672D4155CDC48E48F4 /* Debug */ = { + 08EDA75FE0BDF7058094AE2A97B614C1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1C8F00AC871FE0EC2FBD9A40F62753CD /* Pods-web3swift-macOS.debug.xcconfig */; + baseConfigurationReference = 420A1793DC6527296BC586472865C8C0 /* scrypt-iOS.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/scrypt-iOS/scrypt-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = "Headers/Public/scrypt/scrypt-iOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = scrypt; + PRODUCT_NAME = "scrypt-iOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.1; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0A1E7A5A2BC31F6FBEBEDC9CD0EADB10 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 673FFC4D2B959AB8AEC35D646A85CDCD /* Pods-web3swift-iOS.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0B909F147936EE3B5A2B75910E90133C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 92CB38F782D33EF495F861851E047FA9 /* SipHash-iOS.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/SipHash-iOS/SipHash-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = "Headers/Public/SipHash/SipHash-iOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = SipHash; + PRODUCT_NAME = "SipHash-iOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 11AFE4FF91D289E194438B54F1861BDC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 330B8D8B0B8ACFFDF2B9292154D71642 /* secp256k1_swift-macOS.xcconfig */; + buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; @@ -3680,23 +4101,78 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = secp256k1_swift; + PRODUCT_NAME = "secp256k1_swift-macOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; }; name = Debug; }; - 15B89B467BEBF88DB7C0DE281DDCB2FF /* Release */ = { + 190110B1825C1B9F5BF5A2EBD21E974B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 673FFC4D2B959AB8AEC35D646A85CDCD /* Pods-web3swift-iOS.release.xcconfig */; + baseConfigurationReference = 08A99F6D5C3E452229D15E3E8C1660F3 /* BigInt-macOS.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-macOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = BigInt; + PRODUCT_NAME = "BigInt-macOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; + 1B8C9D978FDF5ED4199E530B793239D6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C04A3FB24C874F21628C4E7EA8B9693B /* scrypt-macOS.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/scrypt-macOS/scrypt-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Headers/Public/scrypt/scrypt-macOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = scrypt; + PRODUCT_NAME = "scrypt-macOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.1; + }; + name = Release; + }; + 1EDD89DD1A111ECC395D5EBC9D07FECD /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 042CC2D185140E7D725D22562A3E307F /* Pods-web3swift-iOS.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -3712,16 +4188,66 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 2969FBBC5C72EEF51DC6F4B9B1A976D0 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B6A0DADFE9809AB925F51CF651528B31 /* secp256k1_swift-iOS.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = secp256k1_swift; + PRODUCT_NAME = "secp256k1_swift-iOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 16D02FC5D8B1360961D0964C786FD01A /* Release */ = { + 32114FB1ED27B364D53BC6C8665A9C2E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B6112FCF75FBFC58E314A40652665F06 /* CryptoSwift-iOS.xcconfig */; + baseConfigurationReference = B48543DD38BB8E1AB0953C926DBA6C3F /* EthereumABI-macOS.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Headers/Public/EthereumABI/EthereumABI-macOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = EthereumABI; + PRODUCT_NAME = "EthereumABI-macOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.1; + }; + name = Release; + }; + 32CF9A39F6635F8DA2878D193D645440 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 89525730C7E22C66FB7ADAB11E2073A0 /* CryptoSwift-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3739,17 +4265,14 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 1C87E448DBFBA3CE908FC5D7F08DE3D2 /* Release */ = { + 41717A996D2F041A161913298508A8E9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AA1E87AB6BC235D2BF0B5287F5ADD105 /* EthereumAddress-macOS.xcconfig */; + baseConfigurationReference = EF8327584F2BDEC27C9163F51CDEFB9E /* SwiftRLP-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -3758,55 +4281,74 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch"; MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap"; + MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = "EthereumAddress-macOS"; + PRODUCT_MODULE_NAME = SwiftRLP; + PRODUCT_NAME = "SwiftRLP-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.1; }; name = Release; }; - 2890913C8C2255F2C5BC543B4A827893 /* Debug */ = { + 477575EFA4C280367821CBC53C5C8953 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8CC8A14105420D222F37BBB95BFBF1A3 /* secp256k1_swift-macOS.xcconfig */; + baseConfigurationReference = D1FD34D2C5C93A170139E5994B7F5D8D /* Result-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/Result-macOS/Result-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MODULEMAP_FILE = "Headers/Public/Result/Result-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = secp256k1_swift; - PRODUCT_NAME = "secp256k1_swift-macOS"; + PRODUCT_MODULE_NAME = Result; + PRODUCT_NAME = "Result-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; }; - name = Debug; + name = Release; + }; + 4CA9B35348640CA3DA1AAB6A01AB2BE4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0D88C9D56C3885598E20D9718F3B8F16 /* Pods-web3swift-macOS_Tests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + EXECUTABLE_PREFIX = lib; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.11; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Release; }; - 316F6BD6837503631E1CD02ECF315A0C /* Release */ = { + 4F3205507D03A242BAB6D95A8806CF7D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3D2AD51705C652FD9094CEDC59DFB4FC /* SwiftRLP-macOS.xcconfig */; + baseConfigurationReference = EF8327584F2BDEC27C9163F51CDEFB9E /* SwiftRLP-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -3827,15 +4369,89 @@ SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.1; }; + name = Debug; + }; + 55D3105FA71C4B27F6E2350877CDAF39 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 08A99F6D5C3E452229D15E3E8C1660F3 /* BigInt-macOS.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + EXECUTABLE_PREFIX = lib; + GCC_PREFIX_HEADER = "Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-macOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = BigInt; + PRODUCT_NAME = "BigInt-macOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 722FA21DE6A0ACAC9DD0E405C5BF7D1A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C8F00AC871FE0EC2FBD9A40F62753CD /* Pods-web3swift-macOS.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + EXECUTABLE_PREFIX = lib; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 7611FC9ACC0308E2A87B7CF5FC557084 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9D6306B3BC57BAEB50815C5FBBFC8CB4 /* SwiftRLP-iOS.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = SwiftRLP; + PRODUCT_NAME = "SwiftRLP-iOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.1; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; name = Release; }; - 34FE96C4DC053075469BE4E0C218A785 /* Release */ = { + 78A91A4EF7911BE93CE41768D5EC92BB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 453B783DD499D624880A972C2DC8C94A /* PromiseKit.xcconfig */; + baseConfigurationReference = 3F1CF8D01D9020575F785235F3DA02E3 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3853,17 +4469,15 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 3A052F4E8E3344EF5CE29C1EB82A8C14 /* Debug */ = { + 78E745EDC865041C93C2926A6DCDB505 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 435339C16A1550DDCDCD1B4731E89DBD /* Result-iOS.xcconfig */; + baseConfigurationReference = F7F56C5F9833A0AB26CC47460A928E34 /* Result-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3881,41 +4495,40 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 3C9131BF8D77FFD3F3302CC9B5C5B5E6 /* Debug */ = { + 7A047BDA07E543F92AF596A54ACB9D17 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A2A0CFEEC4EEE7DD9F58B6A45DE63C89 /* BigInt-iOS.xcconfig */; + baseConfigurationReference = F7F56C5F9833A0AB26CC47460A928E34 /* Result-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/BigInt-iOS/BigInt-iOS-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Result-iOS/Result-iOS-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-iOS.modulemap"; + MODULEMAP_FILE = "Headers/Public/Result/Result-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = "BigInt-iOS"; + PRODUCT_MODULE_NAME = Result; + PRODUCT_NAME = "Result-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 3E84B79C8DEC705D62A979F5FA5D0A9E /* Release */ = { + 82CAFFCF1DF36B5D87B092509FE48D3E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0DE0997E93980E728205BE4BF37B5FBC /* scrypt-iOS.xcconfig */; + baseConfigurationReference = 420A1793DC6527296BC586472865C8C0 /* scrypt-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3933,45 +4546,14 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 4508C23FF6409DCFED0ED597F8011CA1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3D2AD51705C652FD9094CEDC59DFB4FC /* SwiftRLP-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = "SwiftRLP-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.1; }; name = Debug; }; - 47188C6950FED720E501753BF199E23B /* Debug */ = { + 83210CA27027B561A7B5E007B06CA4D7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 042CC2D185140E7D725D22562A3E307F /* Pods-web3swift-iOS.debug.xcconfig */; + baseConfigurationReference = E3ADB0156604A4FD7CD47B25248088C2 /* Pods-web3swift-iOS_Tests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -3980,50 +4562,44 @@ "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; IPHONEOS_DEPLOYMENT_TARGET = 9.0; MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 4CA82ACA864529495D52E03B2D33BC1C /* Debug */ = { + 8518F8D713080EF1D6A105CF2021EC99 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 453B783DD499D624880A972C2DC8C94A /* PromiseKit.xcconfig */; + baseConfigurationReference = B7762E4245191B27674EB7EB82DCFFF1 /* Pods-web3swift-macOS_Tests.debug.xcconfig */; buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = Headers/Public/PromiseKit/PromiseKit.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = PromiseKit; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; + EXECUTABLE_PREFIX = lib; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.11; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = macosx; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 4CA9B35348640CA3DA1AAB6A01AB2BE4 /* Release */ = { + 8AFA5B5EA500725BE7FF28964AEEDA43 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0D88C9D56C3885598E20D9718F3B8F16 /* Pods-web3swift-macOS_Tests.release.xcconfig */; + baseConfigurationReference = C04A3FB24C874F21628C4E7EA8B9693B /* scrypt-macOS.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; @@ -4031,129 +4607,126 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - MACH_O_TYPE = staticlib; + GCC_PREFIX_HEADER = "Target Support Files/scrypt-macOS/scrypt-macOS-prefix.pch"; MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Headers/Public/scrypt/scrypt-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = scrypt; + PRODUCT_NAME = "scrypt-macOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.1; }; - name = Release; + name = Debug; }; - 50921841075F46C5C393DB5B6A2529EB /* Debug */ = { + 901A8ABA1A0F32437C72ADA21170A7CE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0347CA8676D7E491A4DA559FB78007F /* SipHash-iOS.xcconfig */; + baseConfigurationReference = 2AD338DD23B43013308A65379BAEC16C /* BigInt-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SipHash-iOS/SipHash-iOS-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/BigInt-iOS/BigInt-iOS-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/SipHash/SipHash-iOS.modulemap"; + MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SipHash; - PRODUCT_NAME = "SipHash-iOS"; + PRODUCT_MODULE_NAME = BigInt; + PRODUCT_NAME = "BigInt-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 51D81D04D0379E038D2741ED941215DC /* Release */ = { + 961AECA1170955755D74EAD3E5819CE7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8CC8A14105420D222F37BBB95BFBF1A3 /* secp256k1_swift-macOS.xcconfig */; + baseConfigurationReference = 9D6306B3BC57BAEB50815C5FBBFC8CB4 /* SwiftRLP-iOS.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = secp256k1_swift; - PRODUCT_NAME = "secp256k1_swift-macOS"; + PRODUCT_MODULE_NAME = SwiftRLP; + PRODUCT_NAME = "SwiftRLP-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; + SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.1; + TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Release; + name = Debug; }; - 5603C29AD11DB39738D16FEC45182D72 /* Debug */ = { + 9BF74490EC938556B96E2A3372C604DD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 80E74674EB94CDFBB8B77B11BACD6046 /* scrypt-macOS.xcconfig */; + baseConfigurationReference = 7C70A16BA860E5B4A9A806F25EE3F472 /* CryptoSwift-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/scrypt-macOS/scrypt-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/scrypt/scrypt-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = scrypt; - PRODUCT_NAME = "scrypt-macOS"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = "CryptoSwift-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 4.2; }; name = Debug; }; - 57848671E21C73A121EDCE1F4B6205BD /* Release */ = { + 9F0CCACAE41FF43BAD49E0F5993ED010 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1412597E34EB8268006B0BCFF20BB89A /* secp256k1_swift-iOS.xcconfig */; + baseConfigurationReference = C0E00E27FCA499ADCF69CE2096BEF87F /* EthereumAddress-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = secp256k1_swift; - PRODUCT_NAME = "secp256k1_swift-iOS"; + PRODUCT_MODULE_NAME = EthereumAddress; + PRODUCT_NAME = "EthereumAddress-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 5FCBD0A9F6FEC43961BDF6211D4F283C /* Debug */ = { + A3625BB68C06D1FB0393AACB165DBA14 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -4185,8 +4758,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -4214,67 +4785,41 @@ PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 60A5DC59ABDBD8D0E90FAADE4366D12E /* Debug */ = { + A46755FFCCE7D40941242CF696F73A1A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B6112FCF75FBFC58E314A40652665F06 /* CryptoSwift-iOS.xcconfig */; + baseConfigurationReference = 522579B02AF58D183F2AC531E3F33572 /* EthereumABI-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = "Headers/Public/EthereumABI/EthereumABI-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = "CryptoSwift-iOS"; + PRODUCT_MODULE_NAME = EthereumABI; + PRODUCT_NAME = "EthereumABI-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 7237D3F1652E355B7101C5937B046651 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 15206D43EDA63AD479C638B175342338 /* Result-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/Result-macOS/Result-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.9; - MODULEMAP_FILE = "Headers/Public/Result/Result-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Result; - PRODUCT_NAME = "Result-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.0; + VALIDATE_PRODUCT = YES; }; name = Release; }; - 75E16E6E94E4CDC1DF735E3C84E87DEC /* Debug */ = { + A895391A378F7146617E9C6F48AEF62C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F9C126B6106FA68D54B74E0DD65E0F8E /* SipHash-macOS.xcconfig */; + baseConfigurationReference = 5992F89681D6639D6E83FBDCE269A688 /* SipHash-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CODE_SIGN_IDENTITY = "-"; @@ -4294,42 +4839,37 @@ SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; }; name = Debug; }; - 7A748354D2BAB28D6D9A5ACD8B138D72 /* Release */ = { + B1E495AD8FE6443520AEE1785D76980A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E79185DFEB64004C5523F725F3DC89B0 /* CryptoSwift-macOS.xcconfig */; + baseConfigurationReference = A5D9B32B104EA0A137D78B89D4D19D40 /* Pods-web3swift-macOS.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.9; - MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = "CryptoSwift-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = macosx; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.2; }; name = Release; }; - 83210CA27027B561A7B5E007B06CA4D7 /* Release */ = { + B3F7C2C3054C9BA9D5FEAF7BBEB5B707 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E3ADB0156604A4FD7CD47B25248088C2 /* Pods-web3swift-iOS_Tests.release.xcconfig */; + baseConfigurationReference = 24B5C2F89100EAE084E4AF83DDE6303D /* Pods-web3swift-iOS_Tests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -4345,90 +4885,62 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 8407FD653C37937082E32CEB87697C14 /* Debug */ = { + B43995674AACC46CADFF66DA426F6646 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD76DBA7730870FE66D77B1FC33E49E0 /* EthereumAddress-iOS.xcconfig */; + baseConfigurationReference = B6A0DADFE9809AB925F51CF651528B31 /* secp256k1_swift-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = "EthereumAddress-iOS"; + PRODUCT_MODULE_NAME = secp256k1_swift; + PRODUCT_NAME = "secp256k1_swift-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 8518F8D713080EF1D6A105CF2021EC99 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B7762E4245191B27674EB7EB82DCFFF1 /* Pods-web3swift-macOS_Tests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - MACH_O_TYPE = staticlib; - MACOSX_DEPLOYMENT_TARGET = 10.11; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 9070795000D1F467DF9FAE6D7D640250 /* Release */ = { + C0CAF3F30439464C0667B78715A340EF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 435339C16A1550DDCDCD1B4731E89DBD /* Result-iOS.xcconfig */; + baseConfigurationReference = 522579B02AF58D183F2AC531E3F33572 /* EthereumABI-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Result-iOS/Result-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/Result/Result-iOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = "Headers/Public/EthereumABI/EthereumABI-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Result; - PRODUCT_NAME = "Result-iOS"; + PRODUCT_MODULE_NAME = EthereumABI; + PRODUCT_NAME = "EthereumABI-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 999EC6E913D2F808DD5EECBDADBE2FBF /* Release */ = { + C7DC73FCC3220DE12B4FC1DC930D7C08 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E8554570D5B7F10CEE0823FEB5B80B8D /* PromiseKit.root-CorePromise-Foundation.xcconfig */; + baseConfigurationReference = 4AA4C4E3B71B38DD9AC53FDE78CAE9EA /* PromiseKit.root-CorePromise-Foundation.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -4449,69 +4961,89 @@ SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.0; }; - name = Release; + name = Debug; }; - 9D532168CC77D42DF0462F9BCBD80F2E /* Debug */ = { + CA44A93B91752AA83EC6CCB22764D527 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E8554570D5B7F10CEE0823FEB5B80B8D /* PromiseKit.root-CorePromise-Foundation.xcconfig */; + baseConfigurationReference = 7C70A16BA860E5B4A9A806F25EE3F472 /* CryptoSwift-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.10; - MODULEMAP_FILE = "Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = PromiseKit; - PRODUCT_NAME = "PromiseKit.root-CorePromise-Foundation"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = "CryptoSwift-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + }; + name = Release; + }; + CB2C61730C420D7E1AED74B447061493 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 92CB38F782D33EF495F861851E047FA9 /* SipHash-iOS.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/SipHash-iOS/SipHash-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = "Headers/Public/SipHash/SipHash-iOS.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = SipHash; + PRODUCT_NAME = "SipHash-iOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 9F89BA0BDBDA8C292C7AF81AE6E74193 /* Release */ = { + CE9A0270AAF7D63017F506C720F01128 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F9C126B6106FA68D54B74E0DD65E0F8E /* SipHash-macOS.xcconfig */; + baseConfigurationReference = 330B8D8B0B8ACFFDF2B9292154D71642 /* secp256k1_swift-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/SipHash-macOS/SipHash-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.9; - MODULEMAP_FILE = "Headers/Public/SipHash/SipHash-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MODULEMAP_FILE = "Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SipHash; - PRODUCT_NAME = "SipHash-macOS"; + PRODUCT_MODULE_NAME = secp256k1_swift; + PRODUCT_NAME = "secp256k1_swift-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.0; }; name = Release; }; - 9FC95E93B60448569789C60751C0DD23 /* Release */ = { + D01478928F4FB100D668550875693C34 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -4543,8 +5075,6 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; @@ -4567,119 +5097,44 @@ MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - A45B3EF7FBB166F549A4ABEE13B6CE87 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A2A0CFEEC4EEE7DD9F58B6A45DE63C89 /* BigInt-iOS.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/BigInt-iOS/BigInt-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-iOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = "BigInt-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - ADB19600F3034CFC88E8930883A97411 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A0347CA8676D7E491A4DA559FB78007F /* SipHash-iOS.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SipHash-iOS/SipHash-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = "Headers/Public/SipHash/SipHash-iOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SipHash; - PRODUCT_NAME = "SipHash-iOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; + SWIFT_VERSION = 4.2; + SYMROOT = "${SRCROOT}/../build"; }; name = Release; }; - B3F7C2C3054C9BA9D5FEAF7BBEB5B707 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 24B5C2F89100EAE084E4AF83DDE6303D /* Pods-web3swift-iOS_Tests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - CCE6ADD3343BBD7115B558970171731E /* Debug */ = { + D084C4436D808C9FF5CF8663846169E0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E79185DFEB64004C5523F725F3DC89B0 /* CryptoSwift-macOS.xcconfig */; + baseConfigurationReference = 82CF9E45F65C5A3FF604607C66EAC29D /* EthereumAddress-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.9; - MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = CryptoSwift; - PRODUCT_NAME = "CryptoSwift-macOS"; + PRODUCT_MODULE_NAME = EthereumAddress; + PRODUCT_NAME = "EthereumAddress-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 4.1; }; - name = Debug; + name = Release; }; - D24ACCB30483674C8F98FEE6781F8A91 /* Release */ = { + D4388CAD52CCCFCE7D0ED546E16E0F21 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A5D9B32B104EA0A137D78B89D4D19D40 /* Pods-web3swift-macOS.release.xcconfig */; + baseConfigurationReference = 82CF9E45F65C5A3FF604607C66EAC29D /* EthereumAddress-macOS.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "-"; @@ -4687,23 +5142,25 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - MACH_O_TYPE = staticlib; + GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.modulemap"; + MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = EthereumAddress; + PRODUCT_NAME = "EthereumAddress-macOS"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.1; }; - name = Release; + name = Debug; }; - D33969CE1C6C7CFBA07904BEF1C4B035 /* Debug */ = { + DA050F65EA0B807A45D539FACC7F117A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 15206D43EDA63AD479C638B175342338 /* Result-macOS.xcconfig */; + baseConfigurationReference = D1FD34D2C5C93A170139E5994B7F5D8D /* Result-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CODE_SIGN_IDENTITY = "-"; @@ -4723,97 +5180,63 @@ SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; }; name = Debug; }; - DCCDA1002E48EAEF2C988A5C6EBBF971 /* Release */ = { + DC8874F7FAB58896B3D6BBD17E8F3590 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E34EBA5D815562B6AEF202EEF42D4456 /* SwiftRLP-iOS.xcconfig */; + baseConfigurationReference = 3F1CF8D01D9020575F785235F3DA02E3 /* PromiseKit.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/PromiseKit/PromiseKit-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = Headers/Public/PromiseKit/PromiseKit.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = "SwiftRLP-iOS"; + PRODUCT_MODULE_NAME = PromiseKit; + PRODUCT_NAME = PromiseKit; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - E2903A9A477CD5FC7A1AA02D234622F7 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 80E74674EB94CDFBB8B77B11BACD6046 /* scrypt-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/scrypt-macOS/scrypt-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/scrypt/scrypt-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = scrypt; - PRODUCT_NAME = "scrypt-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.1; }; - name = Release; + name = Debug; }; - E5411E931BB177D29281DC9404230DD1 /* Debug */ = { + EB39C1FA7B7F12063F7AE8333D2A4C21 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0DE0997E93980E728205BE4BF37B5FBC /* scrypt-iOS.xcconfig */; + baseConfigurationReference = 2AD338DD23B43013308A65379BAEC16C /* BigInt-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/scrypt-iOS/scrypt-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/scrypt/scrypt-iOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/BigInt-iOS/BigInt-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = scrypt; - PRODUCT_NAME = "scrypt-iOS"; + PRODUCT_MODULE_NAME = BigInt; + PRODUCT_NAME = "BigInt-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - EAB93834CF69459E8D9F59D7D266CC6A /* Release */ = { + F5923572A54909C08EF28178F96E68FD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD76DBA7730870FE66D77B1FC33E49E0 /* EthereumAddress-iOS.xcconfig */; + baseConfigurationReference = C0E00E27FCA499ADCF69CE2096BEF87F /* EthereumAddress-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4831,17 +5254,14 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - F0201DAF490AE92696849A72FDE47927 /* Debug */ = { + F97777A80F699CB36568B3AB91C18336 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AA1E87AB6BC235D2BF0B5287F5ADD105 /* EthereumAddress-macOS.xcconfig */; + baseConfigurationReference = B48543DD38BB8E1AB0953C926DBA6C3F /* EthereumABI-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -4850,26 +5270,25 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch"; MACOSX_DEPLOYMENT_TARGET = 10.11; - MODULEMAP_FILE = "Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap"; + MODULEMAP_FILE = "Headers/Public/EthereumABI/EthereumABI-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = EthereumAddress; - PRODUCT_NAME = "EthereumAddress-macOS"; + PRODUCT_MODULE_NAME = EthereumABI; + PRODUCT_NAME = "EthereumABI-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.1; }; name = Debug; }; - F4CD297453714BA949383E8B4EAB4DA3 /* Release */ = { + FA1664274B2659B28BDF9A0DA85ACD2E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8823C42C614B0067E2C89A5AE71DA77D /* BigInt-macOS.xcconfig */; + baseConfigurationReference = 5992F89681D6639D6E83FBDCE269A688 /* SipHash-macOS.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CODE_SIGN_IDENTITY = "-"; @@ -4877,94 +5296,65 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/SipHash-macOS/SipHash-macOS-prefix.pch"; MACOSX_DEPLOYMENT_TARGET = 10.9; - MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-macOS.modulemap"; + MODULEMAP_FILE = "Headers/Public/SipHash/SipHash-macOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = "BigInt-macOS"; + PRODUCT_MODULE_NAME = SipHash; + PRODUCT_NAME = "SipHash-macOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = macosx; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 4.0; }; name = Release; }; - F6220DAE297B6F9A75ACF0DCDBBE507C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8823C42C614B0067E2C89A5AE71DA77D /* BigInt-macOS.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CODE_SIGN_IDENTITY = "-"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - EXECUTABLE_PREFIX = lib; - GCC_PREFIX_HEADER = "Target Support Files/BigInt-macOS/BigInt-macOS-prefix.pch"; - MACOSX_DEPLOYMENT_TARGET = 10.9; - MODULEMAP_FILE = "Headers/Public/BigInt/BigInt-macOS.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = BigInt; - PRODUCT_NAME = "BigInt-macOS"; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - }; - name = Debug; - }; - FEB6E9194937DDA3A6F6493F676E2004 /* Debug */ = { + FD79E0FA8C9695ACC92727BA59ACBD09 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E34EBA5D815562B6AEF202EEF42D4456 /* SwiftRLP-iOS.xcconfig */; + baseConfigurationReference = 89525730C7E22C66FB7ADAB11E2073A0 /* CryptoSwift-iOS.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = "Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap"; + GCC_PREFIX_HEADER = "Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = "Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftRLP; - PRODUCT_NAME = "SwiftRLP-iOS"; + PRODUCT_MODULE_NAME = CryptoSwift; + PRODUCT_NAME = "CryptoSwift-iOS"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.1; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0039F2F377814CD2485BC36E354F85D8 /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS" */ = { + 0D0EE0E6A1FF9BACF87641ECD817E450 /* Build configuration list for PBXNativeTarget "EthereumAddress-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0D0B0751228CE1672D4155CDC48E48F4 /* Debug */, - D24ACCB30483674C8F98FEE6781F8A91 /* Release */, + D4388CAD52CCCFCE7D0ED546E16E0F21 /* Debug */, + D084C4436D808C9FF5CF8663846169E0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 09CA449448E7309DBC21A6BD3E319838 /* Build configuration list for PBXNativeTarget "secp256k1_swift-iOS" */ = { + 0E6082C161AE699CD11AFE38C72A8ECD /* Build configuration list for PBXNativeTarget "Result-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0642CE789E80E243CAD03C3BC1721169 /* Debug */, - 57848671E21C73A121EDCE1F4B6205BD /* Release */, + DA050F65EA0B807A45D539FACC7F117A /* Debug */, + 477575EFA4C280367821CBC53C5C8953 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4972,26 +5362,35 @@ 19CA2EF2646C88FC1D5F4864827AF9A9 /* Build configuration list for PBXNativeTarget "CryptoSwift-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 60A5DC59ABDBD8D0E90FAADE4366D12E /* Debug */, - 16D02FC5D8B1360961D0964C786FD01A /* Release */, + 32CF9A39F6635F8DA2878D193D645440 /* Debug */, + FD79E0FA8C9695ACC92727BA59ACBD09 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 249649C0D306826B8AEC43AC3D978C98 /* Build configuration list for PBXNativeTarget "SipHash-macOS" */ = { + 1A702128138D84E5AE38854422DA92F2 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1EDD89DD1A111ECC395D5EBC9D07FECD /* Debug */, + 0A1E7A5A2BC31F6FBEBEDC9CD0EADB10 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 214041070FF7013C5D3B1D956DD404CF /* Build configuration list for PBXNativeTarget "scrypt-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 75E16E6E94E4CDC1DF735E3C84E87DEC /* Debug */, - 9F89BA0BDBDA8C292C7AF81AE6E74193 /* Release */, + 8AFA5B5EA500725BE7FF28964AEEDA43 /* Debug */, + 1B8C9D978FDF5ED4199E530B793239D6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 284AECDC661FAF7860EC1BEC7692301D /* Build configuration list for PBXNativeTarget "Result-iOS" */ = { + 249649C0D306826B8AEC43AC3D978C98 /* Build configuration list for PBXNativeTarget "SipHash-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3A052F4E8E3344EF5CE29C1EB82A8C14 /* Debug */, - 9070795000D1F467DF9FAE6D7D640250 /* Release */, + A895391A378F7146617E9C6F48AEF62C /* Debug */, + FA1664274B2659B28BDF9A0DA85ACD2E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4999,26 +5398,26 @@ 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5FCBD0A9F6FEC43961BDF6211D4F283C /* Debug */, - 9FC95E93B60448569789C60751C0DD23 /* Release */, + A3625BB68C06D1FB0393AACB165DBA14 /* Debug */, + D01478928F4FB100D668550875693C34 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 303C8E6272AD70A3BDE63EE51C697D17 /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { + 34C02A2A41180F1C49A12F3C94BB6D39 /* Build configuration list for PBXNativeTarget "SwiftRLP-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4CA82ACA864529495D52E03B2D33BC1C /* Debug */, - 34FE96C4DC053075469BE4E0C218A785 /* Release */, + 4F3205507D03A242BAB6D95A8806CF7D /* Debug */, + 41717A996D2F041A161913298508A8E9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3EF9AD5BB38D4B8D81F2E10D31B8FC16 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS" */ = { + 41A0D4C0C65EE651AE692E52EC485A28 /* Build configuration list for PBXNativeTarget "EthereumABI-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 47188C6950FED720E501753BF199E23B /* Debug */, - 15B89B467BEBF88DB7C0DE281DDCB2FF /* Release */, + F97777A80F699CB36568B3AB91C18336 /* Debug */, + 32114FB1ED27B364D53BC6C8665A9C2E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5026,116 +5425,116 @@ 47C2AA14D9BBB2B7CC5629CE1C553C1B /* Build configuration list for PBXNativeTarget "BigInt-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3C9131BF8D77FFD3F3302CC9B5C5B5E6 /* Debug */, - A45B3EF7FBB166F549A4ABEE13B6CE87 /* Release */, + EB39C1FA7B7F12063F7AE8333D2A4C21 /* Debug */, + 901A8ABA1A0F32437C72ADA21170A7CE /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 62550B15363844675EDB2F185CB619A8 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS_Tests" */ = { + 485FEBD24BA1178535E81D093E91F648 /* Build configuration list for PBXNativeTarget "EthereumABI-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - B3F7C2C3054C9BA9D5FEAF7BBEB5B707 /* Debug */, - 83210CA27027B561A7B5E007B06CA4D7 /* Release */, + C0CAF3F30439464C0667B78715A340EF /* Debug */, + A46755FFCCE7D40941242CF696F73A1A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 65490D7667F9A157CAE31446FC797991 /* Build configuration list for PBXNativeTarget "secp256k1_swift-macOS" */ = { + 53B1B04B77AC43178C9F3E8EB7B13F0A /* Build configuration list for PBXNativeTarget "Result-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2890913C8C2255F2C5BC543B4A827893 /* Debug */, - 51D81D04D0379E038D2741ED941215DC /* Release */, + 78E745EDC865041C93C2926A6DCDB505 /* Debug */, + 7A047BDA07E543F92AF596A54ACB9D17 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 88E198CDBBB0CAA2D5B912F48E5A8119 /* Build configuration list for PBXNativeTarget "EthereumAddress-macOS" */ = { + 6172FF314CF6FDD0EE7BEB014649095A /* Build configuration list for PBXNativeTarget "scrypt-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - F0201DAF490AE92696849A72FDE47927 /* Debug */, - 1C87E448DBFBA3CE908FC5D7F08DE3D2 /* Release */, + 82CAFFCF1DF36B5D87B092509FE48D3E /* Debug */, + 08EDA75FE0BDF7058094AE2A97B614C1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8B657CEEE4B76901522B282FFC7FE8DA /* Build configuration list for PBXNativeTarget "Result-macOS" */ = { + 62550B15363844675EDB2F185CB619A8 /* Build configuration list for PBXNativeTarget "Pods-web3swift-iOS_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D33969CE1C6C7CFBA07904BEF1C4B035 /* Debug */, - 7237D3F1652E355B7101C5937B046651 /* Release */, + B3F7C2C3054C9BA9D5FEAF7BBEB5B707 /* Debug */, + 83210CA27027B561A7B5E007B06CA4D7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 91E81CC04B48CAA0AA6D1FB891F14331 /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS_Tests" */ = { + 7F2C38356A69928AE969993F66D26974 /* Build configuration list for PBXNativeTarget "secp256k1_swift-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8518F8D713080EF1D6A105CF2021EC99 /* Debug */, - 4CA9B35348640CA3DA1AAB6A01AB2BE4 /* Release */, + 11AFE4FF91D289E194438B54F1861BDC /* Debug */, + CE9A0270AAF7D63017F506C720F01128 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9CB97BD184404FE5F62F017C3CF306D5 /* Build configuration list for PBXNativeTarget "PromiseKit.root-CorePromise-Foundation" */ = { + 886328E93BEAC18F43717EDABA0C12BF /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9D532168CC77D42DF0462F9BCBD80F2E /* Debug */, - 999EC6E913D2F808DD5EECBDADBE2FBF /* Release */, + 722FA21DE6A0ACAC9DD0E405C5BF7D1A /* Debug */, + B1E495AD8FE6443520AEE1785D76980A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A1A3D7F09A5AFD2BD4DA3D3CDACBBCFC /* Build configuration list for PBXNativeTarget "BigInt-macOS" */ = { + 91E81CC04B48CAA0AA6D1FB891F14331 /* Build configuration list for PBXNativeTarget "Pods-web3swift-macOS_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - F6220DAE297B6F9A75ACF0DCDBBE507C /* Debug */, - F4CD297453714BA949383E8B4EAB4DA3 /* Release */, + 8518F8D713080EF1D6A105CF2021EC99 /* Debug */, + 4CA9B35348640CA3DA1AAB6A01AB2BE4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D2A09E63159C968138E6CBA9147D559A /* Build configuration list for PBXNativeTarget "SwiftRLP-macOS" */ = { + 985657F07458E31EEED8115F732C90EA /* Build configuration list for PBXNativeTarget "PromiseKit.root-CorePromise-Foundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4508C23FF6409DCFED0ED597F8011CA1 /* Debug */, - 316F6BD6837503631E1CD02ECF315A0C /* Release */, + C7DC73FCC3220DE12B4FC1DC930D7C08 /* Debug */, + 02BEABF91F94549686F3C50DDE0DD7D9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D9AC1A700A507419692FC870E90C8799 /* Build configuration list for PBXNativeTarget "scrypt-iOS" */ = { + A17FF6AB1386D63A1421DD6C0C2217F4 /* Build configuration list for PBXNativeTarget "secp256k1_swift-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - E5411E931BB177D29281DC9404230DD1 /* Debug */, - 3E84B79C8DEC705D62A979F5FA5D0A9E /* Release */, + B43995674AACC46CADFF66DA426F6646 /* Debug */, + 2969FBBC5C72EEF51DC6F4B9B1A976D0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E4CD22EC0D9A9A7E229C67906906F7A4 /* Build configuration list for PBXNativeTarget "SwiftRLP-iOS" */ = { + A1A3D7F09A5AFD2BD4DA3D3CDACBBCFC /* Build configuration list for PBXNativeTarget "BigInt-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - FEB6E9194937DDA3A6F6493F676E2004 /* Debug */, - DCCDA1002E48EAEF2C988A5C6EBBF971 /* Release */, + 55D3105FA71C4B27F6E2350877CDAF39 /* Debug */, + 190110B1825C1B9F5BF5A2EBD21E974B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EC990DC713F41C8185113CC18FD8B395 /* Build configuration list for PBXNativeTarget "scrypt-macOS" */ = { + C3E4E8C71E1F2FC6C63CC4862E81AA7A /* Build configuration list for PBXNativeTarget "PromiseKit" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5603C29AD11DB39738D16FEC45182D72 /* Debug */, - E2903A9A477CD5FC7A1AA02D234622F7 /* Release */, + DC8874F7FAB58896B3D6BBD17E8F3590 /* Debug */, + 78A91A4EF7911BE93CE41768D5EC92BB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EFED2FA879D330888BF8C00E65240ADA /* Build configuration list for PBXNativeTarget "EthereumAddress-iOS" */ = { + E5D6FA6799A44BF6B2EA944785695731 /* Build configuration list for PBXNativeTarget "SwiftRLP-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8407FD653C37937082E32CEB87697C14 /* Debug */, - EAB93834CF69459E8D9F59D7D266CC6A /* Release */, + 961AECA1170955755D74EAD3E5819CE7 /* Debug */, + 7611FC9ACC0308E2A87B7CF5FC557084 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5143,8 +5542,17 @@ F03040809733F3691A82F4D1E80B6BA3 /* Build configuration list for PBXNativeTarget "CryptoSwift-macOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - CCE6ADD3343BBD7115B558970171731E /* Debug */, - 7A748354D2BAB28D6D9A5ACD8B138D72 /* Release */, + 9BF74490EC938556B96E2A3372C604DD /* Debug */, + CA44A93B91752AA83EC6CCB22764D527 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F43F6591A165353F2FE927771835E799 /* Build configuration list for PBXNativeTarget "EthereumAddress-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F5923572A54909C08EF28178F96E68FD /* Debug */, + 9F0CCACAE41FF43BAD49E0F5993ED010 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5152,8 +5560,8 @@ F8A195F0CD637B21B4FABEA84B502663 /* Build configuration list for PBXNativeTarget "SipHash-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 50921841075F46C5C393DB5B6A2529EB /* Debug */, - ADB19600F3034CFC88E8930883A97411 /* Release */, + CB2C61730C420D7E1AED74B447061493 /* Debug */, + 0B909F147936EE3B5A2B75910E90133C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-dummy.m b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-dummy.m new file mode 100644 index 000000000..416179abd --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_EthereumABI_iOS : NSObject +@end +@implementation PodsDummy_EthereumABI_iOS +@end diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch new file mode 100644 index 000000000..beb2a2441 --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h new file mode 100644 index 000000000..d0c9e02c9 --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h @@ -0,0 +1,17 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "EthereumABI.h" + +FOUNDATION_EXPORT double EthereumABIVersionNumber; +FOUNDATION_EXPORT const unsigned char EthereumABIVersionString[]; + diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap new file mode 100644 index 000000000..aafb8ce82 --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap @@ -0,0 +1,7 @@ +module EthereumABI { + umbrella header "EthereumABI-iOS-umbrella.h" + exclude header "EthereumABI-macOS-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.xcconfig b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.xcconfig new file mode 100644 index 000000000..56996eb63 --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.xcconfig @@ -0,0 +1,13 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS +DEFINES_MODULE = YES +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/EthereumABI" "${PODS_ROOT}/Headers/Public" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/EthereumABI +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-dummy.m b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-dummy.m new file mode 100644 index 000000000..778652094 --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_EthereumABI_macOS : NSObject +@end +@implementation PodsDummy_EthereumABI_macOS +@end diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch new file mode 100644 index 000000000..082f8af22 --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h new file mode 100644 index 000000000..c01fbff6a --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h @@ -0,0 +1,17 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "EthereumABI.h" + +FOUNDATION_EXPORT double EthereumABIVersionNumber; +FOUNDATION_EXPORT const unsigned char EthereumABIVersionString[]; + diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap new file mode 100644 index 000000000..676927a57 --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap @@ -0,0 +1,7 @@ +module EthereumABI { + umbrella header "EthereumABI-macOS-umbrella.h" + exclude header "EthereumABI-iOS-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.xcconfig b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.xcconfig new file mode 100644 index 000000000..a8186f34e --- /dev/null +++ b/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.xcconfig @@ -0,0 +1,13 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS +DEFINES_MODULE = YES +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/EthereumABI" "${PODS_ROOT}/Headers/Public" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/EthereumABI +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown index 0f6b0a223..552db3ca0 100644 --- a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.markdown @@ -39,6 +39,23 @@ Permission is granted to anyone to use this software for any purpose,including c - This notice may not be removed or altered from any source or binary distribution. - Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' +## EthereumABI + +Copyright 2018 Alex Vlasov + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + ## EthereumAddress Copyright 2018 Alex Vlasov diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist index 7c82be473..22c6b993c 100644 --- a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS-acknowledgements.plist @@ -1,5 +1,285 @@ - + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + +Copyright (c) 2016-2017 Károly Lőrentey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + BigInt + Type + PSGroupSpecifier + + + FooterText + Copyright (C) 2014-2017 Marcin Krzyżanowski <marcin.krzyzanowski@gmail.com> +This software is provided 'as-is', without any express or implied warranty. + +In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +- Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +- This notice may not be removed or altered from any source or binary distribution. +- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' + License + Attribution + Title + CryptoSwift + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + EthereumABI + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + EthereumAddress + Type + PSGroupSpecifier + + + FooterText + Copyright 2016-present, Max Howell; mxcl@me.com + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + License + MIT + Title + PromiseKit + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Rob Rix + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + License + MIT + Title + Result + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2016 Károly Lőrentey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + SipHash + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + SwiftRLP + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + scrypt + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <av@bankexfoundation.org> (bankexfoundation.org) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + secp256k1_swift + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig index fcd73c87e..322fcb5ab 100644 --- a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.debug.xcconfig @@ -1,11 +1,11 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/EthereumAddress" -isystem "${PODS_ROOT}/Headers/Public/PromiseKit" -isystem "${PODS_ROOT}/Headers/Public/SwiftRLP" -isystem "${PODS_ROOT}/Headers/Public/scrypt" -isystem "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-iOS" -l"CryptoSwift-iOS" -l"EthereumAddress-iOS" -l"PromiseKit" -l"Result-iOS" -l"SipHash-iOS" -l"SwiftRLP-iOS" -l"scrypt-iOS" -l"secp256k1_swift-iOS" -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-iOS" -l"CryptoSwift-iOS" -l"EthereumABI-iOS" -l"EthereumAddress-iOS" -l"PromiseKit" -l"Result-iOS" -l"SipHash-iOS" -l"SwiftRLP-iOS" -l"scrypt-iOS" -l"secp256k1_swift-iOS" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" $(PODS_TARGET_SRCROOT)/scrypt +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" $(PODS_TARGET_SRCROOT)/scrypt diff --git a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig index fcd73c87e..322fcb5ab 100644 --- a/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-iOS/Pods-web3swift-iOS.release.xcconfig @@ -1,11 +1,11 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/EthereumAddress" -isystem "${PODS_ROOT}/Headers/Public/PromiseKit" -isystem "${PODS_ROOT}/Headers/Public/SwiftRLP" -isystem "${PODS_ROOT}/Headers/Public/scrypt" -isystem "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-iOS" -l"CryptoSwift-iOS" -l"EthereumAddress-iOS" -l"PromiseKit" -l"Result-iOS" -l"SipHash-iOS" -l"SwiftRLP-iOS" -l"scrypt-iOS" -l"secp256k1_swift-iOS" -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-iOS" -l"CryptoSwift-iOS" -l"EthereumABI-iOS" -l"EthereumAddress-iOS" -l"PromiseKit" -l"Result-iOS" -l"SipHash-iOS" -l"SwiftRLP-iOS" -l"scrypt-iOS" -l"secp256k1_swift-iOS" -framework "Foundation" -framework "UIKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" $(PODS_TARGET_SRCROOT)/scrypt +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" $(PODS_TARGET_SRCROOT)/scrypt diff --git a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.plist index 7c82be473..7acbad1ea 100644 --- a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests-acknowledgements.plist @@ -1,5 +1,29 @@ - + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + diff --git a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig index b0625230f..a0c1416c9 100644 --- a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.debug.xcconfig @@ -1,10 +1,10 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/EthereumAddress" -isystem "${PODS_ROOT}/Headers/Public/PromiseKit" -isystem "${PODS_ROOT}/Headers/Public/SwiftRLP" -isystem "${PODS_ROOT}/Headers/Public/scrypt" -isystem "${PODS_ROOT}/Headers/Public/secp256k1_swift" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" OTHER_LDFLAGS = $(inherited) -ObjC -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" diff --git a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig index b0625230f..a0c1416c9 100644 --- a/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-iOS_Tests/Pods-web3swift-iOS_Tests.release.xcconfig @@ -1,10 +1,10 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/EthereumAddress" -isystem "${PODS_ROOT}/Headers/Public/PromiseKit" -isystem "${PODS_ROOT}/Headers/Public/SwiftRLP" -isystem "${PODS_ROOT}/Headers/Public/scrypt" -isystem "${PODS_ROOT}/Headers/Public/secp256k1_swift" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" OTHER_LDFLAGS = $(inherited) -ObjC -framework "Foundation" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit" "${PODS_CONFIGURATION_BUILD_DIR}/Result-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-iOS" diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown index 0f6b0a223..552db3ca0 100644 --- a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.markdown @@ -39,6 +39,23 @@ Permission is granted to anyone to use this software for any purpose,including c - This notice may not be removed or altered from any source or binary distribution. - Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' +## EthereumABI + +Copyright 2018 Alex Vlasov + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + ## EthereumAddress Copyright 2018 Alex Vlasov diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist index 7c82be473..22c6b993c 100644 --- a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS-acknowledgements.plist @@ -1,5 +1,285 @@ - + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + +Copyright (c) 2016-2017 Károly Lőrentey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + BigInt + Type + PSGroupSpecifier + + + FooterText + Copyright (C) 2014-2017 Marcin Krzyżanowski <marcin.krzyzanowski@gmail.com> +This software is provided 'as-is', without any express or implied warranty. + +In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + +- The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required. +- Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +- This notice may not be removed or altered from any source or binary distribution. +- Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Marcin Krzyzanowski" (http://krzyzanowskim.com/).' + License + Attribution + Title + CryptoSwift + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + EthereumABI + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + EthereumAddress + Type + PSGroupSpecifier + + + FooterText + Copyright 2016-present, Max Howell; mxcl@me.com + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + License + MIT + Title + PromiseKit + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Rob Rix + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + License + MIT + Title + Result + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2016 Károly Lőrentey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + SipHash + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + SwiftRLP + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <alex.m.vlasov@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + scrypt + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Alex Vlasov <av@bankexfoundation.org> (bankexfoundation.org) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + License + Apache License 2.0 + Title + secp256k1_swift + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig index 22e0383cb..7eb95d9be 100644 --- a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig @@ -1,11 +1,11 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/EthereumAddress" -isystem "${PODS_ROOT}/Headers/Public/PromiseKit" -isystem "${PODS_ROOT}/Headers/Public/SwiftRLP" -isystem "${PODS_ROOT}/Headers/Public/scrypt" -isystem "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-macOS" -l"CryptoSwift-macOS" -l"EthereumAddress-macOS" -l"PromiseKit.root-CorePromise-Foundation" -l"Result-macOS" -l"SipHash-macOS" -l"SwiftRLP-macOS" -l"scrypt-macOS" -l"secp256k1_swift-macOS" -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-macOS" -l"CryptoSwift-macOS" -l"EthereumABI-macOS" -l"EthereumAddress-macOS" -l"PromiseKit.root-CorePromise-Foundation" -l"Result-macOS" -l"SipHash-macOS" -l"SwiftRLP-macOS" -l"scrypt-macOS" -l"secp256k1_swift-macOS" -framework "Foundation" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" $(PODS_TARGET_SRCROOT)/scrypt +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" $(PODS_TARGET_SRCROOT)/scrypt diff --git a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig index 22e0383cb..7eb95d9be 100644 --- a/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig @@ -1,11 +1,11 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/EthereumAddress" -isystem "${PODS_ROOT}/Headers/Public/PromiseKit" -isystem "${PODS_ROOT}/Headers/Public/SwiftRLP" -isystem "${PODS_ROOT}/Headers/Public/scrypt" -isystem "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-macOS" -l"CryptoSwift-macOS" -l"EthereumAddress-macOS" -l"PromiseKit.root-CorePromise-Foundation" -l"Result-macOS" -l"SipHash-macOS" -l"SwiftRLP-macOS" -l"scrypt-macOS" -l"secp256k1_swift-macOS" -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BigInt-macOS" -l"CryptoSwift-macOS" -l"EthereumABI-macOS" -l"EthereumAddress-macOS" -l"PromiseKit.root-CorePromise-Foundation" -l"Result-macOS" -l"SipHash-macOS" -l"SwiftRLP-macOS" -l"scrypt-macOS" -l"secp256k1_swift-macOS" -framework "Foundation" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" $(PODS_TARGET_SRCROOT)/scrypt +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" $(PODS_TARGET_SRCROOT)/scrypt diff --git a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.plist b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.plist index 7c82be473..7acbad1ea 100644 --- a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests-acknowledgements.plist @@ -1,5 +1,29 @@ - + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + diff --git a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig index 2063b1f6d..c57d86b33 100644 --- a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.debug.xcconfig @@ -1,10 +1,10 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/EthereumAddress" -isystem "${PODS_ROOT}/Headers/Public/PromiseKit" -isystem "${PODS_ROOT}/Headers/Public/SwiftRLP" -isystem "${PODS_ROOT}/Headers/Public/scrypt" -isystem "${PODS_ROOT}/Headers/Public/secp256k1_swift" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" OTHER_LDFLAGS = $(inherited) -ObjC -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" diff --git a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig index 2063b1f6d..c57d86b33 100644 --- a/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig +++ b/Pods/Target Support Files/Pods-web3swift-macOS_Tests/Pods-web3swift-macOS_Tests.release.xcconfig @@ -1,10 +1,10 @@ GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/EthereumAddress" -isystem "${PODS_ROOT}/Headers/Public/PromiseKit" -isystem "${PODS_ROOT}/Headers/Public/SwiftRLP" -isystem "${PODS_ROOT}/Headers/Public/scrypt" -isystem "${PODS_ROOT}/Headers/Public/secp256k1_swift" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/EthereumABI" "${PODS_ROOT}/Headers/Public/EthereumAddress" "${PODS_ROOT}/Headers/Public/PromiseKit" "${PODS_ROOT}/Headers/Public/SwiftRLP" "${PODS_ROOT}/Headers/Public/scrypt" "${PODS_ROOT}/Headers/Public/secp256k1_swift" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" OTHER_LDFLAGS = $(inherited) -ObjC -framework "Foundation" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS/BigInt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS/CryptoSwift.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS/EthereumABI.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS/EthereumAddress.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation/PromiseKit.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS/Result.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS/SipHash.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS/SwiftRLP.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS/scrypt.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS/secp256k1_swift.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BigInt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/CryptoSwift-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumABI-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/EthereumAddress-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/PromiseKit.root-CorePromise-Foundation" "${PODS_CONFIGURATION_BUILD_DIR}/Result-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SipHash-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftRLP-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/scrypt-macOS" "${PODS_CONFIGURATION_BUILD_DIR}/secp256k1_swift-macOS" diff --git a/web3swift.podspec b/web3swift.podspec index 161547783..019f3eb16 100755 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "web3swift" -s.version = "1.5.1" +s.version = "2.0.0" s.summary = "Web3 implementation in vanilla Swift for iOS ans macOS" s.description = <<-DESC @@ -14,7 +14,7 @@ s.source = { :git => 'https://github.com/matterinc/web3swift.git', :ta s.social_media_url = 'https://twitter.com/shamatar' s.swift_version = '4.1' -s.module_name = 'web3swift' +s.module_name = 'Web3swift' s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.11" s.source_files = "web3swift/**/*.{h,swift}", @@ -23,10 +23,11 @@ s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.frameworks = 'CoreImage' s.dependency 'BigInt', '~> 3.1' -s.dependency 'Result', '~> 4.0' -s.dependency 'CryptoSwift', '~> 0.11' +s.dependency 'CryptoSwift', '~> 0.13' s.dependency 'PromiseKit', '~> 6.3' s.dependency 'scrypt', '~> 2.0' s.dependency 'secp256k1_swift', '~> 1.0.3' s.dependency 'SwiftRLP', '~> 1.1' +s.dependency 'EthereumAddress', '~> 1.0.1' +s.dependemcy 'EthereumABI', '~> 1.1.1' end diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 0dc328d16..ff7b9ece6 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ 00E5FE7620EA34370030E0D6 /* web3swift_keystores_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7520EA34370030E0D6 /* web3swift_keystores_Tests.swift */; }; 00E5FE7A20EA355D0030E0D6 /* web3swift_transactions_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7920EA355D0030E0D6 /* web3swift_transactions_Tests.swift */; }; 00E5FE7C20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7B20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift */; }; - 00E5FE7E20EA3A3F0030E0D6 /* web3swift_ABI_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7D20EA3A3F0030E0D6 /* web3swift_ABI_Tests.swift */; }; 00E5FE8020EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7F20EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift */; }; 00E5FE8220EA3FF40030E0D6 /* web3swift_infura_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE8120EA3FF40030E0D6 /* web3swift_infura_Tests.swift */; }; 13AE5971A972F5B55FA6FB69 /* libPods-web3swift-iOS_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8349531F1984454E50389370 /* libPods-web3swift-iOS_Tests.a */; }; @@ -61,8 +60,6 @@ 8113DE7C1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113DE7B1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift */; }; 8116666320455E33008D8AD0 /* Web3+Wallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCEF20440C3600D82FAF /* Web3+Wallet.swift */; }; 8116666420455E33008D8AD0 /* Web3+Wallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCEF20440C3600D82FAF /* Web3+Wallet.swift */; }; - 81166665204565AC008D8AD0 /* Web3+BrowserFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */; }; - 81166666204565AD008D8AD0 /* Web3+BrowserFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */; }; 81195AB020D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81195AAF20D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift */; }; 8123E1C7200CBAC200B6D3AB /* Dictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C6200CBAC200B6D3AB /* Dictionary+Extension.swift */; }; 8123E1C9200CBAF800B6D3AB /* Data+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1C8200CBAF800B6D3AB /* Data+Extension.swift */; }; @@ -74,8 +71,6 @@ 815630002007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81562FFF2007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift */; }; 815630022007B53C00A0EC2F /* BIP32Keystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815630012007B53C00A0EC2F /* BIP32Keystore.swift */; }; 815630042007BC8F00A0EC2F /* BIP39+WordLists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815630032007BC8F00A0EC2F /* BIP39+WordLists.swift */; }; - 8159C50B21352CB700197B91 /* Web3+ERC20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8159C50A21352CB700197B91 /* Web3+ERC20.swift */; }; - 8159C50C21352CB700197B91 /* Web3+ERC20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8159C50A21352CB700197B91 /* Web3+ERC20.swift */; }; 8159C50E2135901700197B91 /* web3swift_ERC20_Class_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8159C50D2135901700197B91 /* web3swift_ERC20_Class_Tests.swift */; }; 815C74C820ECBF3E00DE2AC4 /* web3swift_User_cases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815C74C720ECBF3E00DE2AC4 /* web3swift_User_cases.swift */; }; 8160E5CE20B8245A0070070B /* IBAN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8160E5CD20B8245A0070070B /* IBAN.swift */; }; @@ -91,6 +86,12 @@ 818ABD5D1FE95FC9002657BB /* Web3+Contract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818ABD5C1FE95FC9002657BB /* Web3+Contract.swift */; }; 818D16CF204D42910084D2A4 /* Web3+EventParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818D16CE204D42910084D2A4 /* Web3+EventParser.swift */; }; 818D16D0204D42940084D2A4 /* Web3+EventParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 818D16CE204D42910084D2A4 /* Web3+EventParser.swift */; }; + 81909D1221862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1121862D17007D2AE5 /* Web3+ReadingTransaction.swift */; }; + 81909D1321862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1121862D17007D2AE5 /* Web3+ReadingTransaction.swift */; }; + 81909D1521862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1421862D37007D2AE5 /* Web3+MutatingTransaction.swift */; }; + 81909D1621862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1421862D37007D2AE5 /* Web3+MutatingTransaction.swift */; }; + 81909D1821862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */; }; + 81909D1921862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */; }; 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */; }; @@ -130,36 +131,18 @@ 81A7B2512143C3A8004CD2C7 /* NameHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2502143C3A8004CD2C7 /* NameHash.swift */; }; 81A7B2522143C3A8004CD2C7 /* NameHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2502143C3A8004CD2C7 /* NameHash.swift */; }; 81A7B2792143C978004CD2C7 /* web3swift_ENS_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2782143C978004CD2C7 /* web3swift_ENS_Tests.swift */; }; - 81A7B2872143DBF6004CD2C7 /* EIP681.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2862143DBF6004CD2C7 /* EIP681.swift */; }; - 81A7B2882143DBF6004CD2C7 /* EIP681.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2862143DBF6004CD2C7 /* EIP681.swift */; }; 81A7B28A2143DF1D004CD2C7 /* web3swift_EIP681_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2892143DF1D004CD2C7 /* web3swift_EIP681_Tests.swift */; }; 81C0FCF220440EB500D82FAF /* Web3+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF120440EB500D82FAF /* Web3+Protocols.swift */; }; 81C0FCF420440F0900D82FAF /* Web3+Options.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF320440F0900D82FAF /* Web3+Options.swift */; }; 81C0FCF720441A1D00D82FAF /* TransactionSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */; }; - 81C0FD012044A89300D82FAF /* Web3+TransactionIntermediate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */; }; - 81C0FD032044A89400D82FAF /* Web3+TransactionIntermediate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */; }; 81C0FD042044A8A700D82FAF /* Web3+Options.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF320440F0900D82FAF /* Web3+Options.swift */; }; 81C0FD052044A8AE00D82FAF /* Web3+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF120440EB500D82FAF /* Web3+Protocols.swift */; }; 81C0FD062044A8D100D82FAF /* TransactionSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */; }; 81C146F71FF274B200AA943E /* Web3+Structures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C146F61FF274B200AA943E /* Web3+Structures.swift */; }; - 81C5DA0E207254D000424CD6 /* ABIv2Elements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA0D207254D000424CD6 /* ABIv2Elements.swift */; }; - 81C5DA0F207254D000424CD6 /* ABIv2Elements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA0D207254D000424CD6 /* ABIv2Elements.swift */; }; - 81C5DA11207254F600424CD6 /* ABIv2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA10207254F600424CD6 /* ABIv2.swift */; }; - 81C5DA12207254F600424CD6 /* ABIv2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA10207254F600424CD6 /* ABIv2.swift */; }; - 81C5DA1B2072633300424CD6 /* ABIv2ParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA1A2072633300424CD6 /* ABIv2ParameterTypes.swift */; }; - 81C5DA1C2072633300424CD6 /* ABIv2ParameterTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA1A2072633300424CD6 /* ABIv2ParameterTypes.swift */; }; - 81C5DA1D207263D700424CD6 /* ABIv2Parsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA0A2072548900424CD6 /* ABIv2Parsing.swift */; }; - 81C5DA1E207263D800424CD6 /* ABIv2Parsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA0A2072548900424CD6 /* ABIv2Parsing.swift */; }; - 81C5DA222072DFE600424CD6 /* ABIv2TypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA212072DFE600424CD6 /* ABIv2TypeParser.swift */; }; - 81C5DA232072DFE600424CD6 /* ABIv2TypeParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA212072DFE600424CD6 /* ABIv2TypeParser.swift */; }; - 81C5DA252072E14E00424CD6 /* ABIv2Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA242072E14E00424CD6 /* ABIv2Encoding.swift */; }; - 81C5DA262072E14E00424CD6 /* ABIv2Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA242072E14E00424CD6 /* ABIv2Encoding.swift */; }; 81C5DA282072E18200424CD6 /* NativeTypesEncoding+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA272072E18200424CD6 /* NativeTypesEncoding+Extensions.swift */; }; 81C5DA292072E18200424CD6 /* NativeTypesEncoding+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA272072E18200424CD6 /* NativeTypesEncoding+Extensions.swift */; }; - 81C5DA2B2074CA1400424CD6 /* ABIv2Decoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA2A2074CA1400424CD6 /* ABIv2Decoding.swift */; }; - 81C5DA2C2074CA1400424CD6 /* ABIv2Decoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA2A2074CA1400424CD6 /* ABIv2Decoding.swift */; }; - 81C5DA2E2074EBF500424CD6 /* ContractABIv2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA2D2074EBF500424CD6 /* ContractABIv2.swift */; }; - 81C5DA2F2074EBF500424CD6 /* ContractABIv2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA2D2074EBF500424CD6 /* ContractABIv2.swift */; }; + 81C5DA2E2074EBF500424CD6 /* EthereumContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA2D2074EBF500424CD6 /* EthereumContract.swift */; }; + 81C5DA2F2074EBF500424CD6 /* EthereumContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA2D2074EBF500424CD6 /* EthereumContract.swift */; }; 81C5DA312074EC1E00424CD6 /* ContractProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA302074EC1E00424CD6 /* ContractProtocol.swift */; }; 81C5DA322074EC1E00424CD6 /* ContractProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C5DA302074EC1E00424CD6 /* ContractProtocol.swift */; }; 81D7D97220A31FB700A193EC /* ComparisonExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81D7D97120A31FB700A193EC /* ComparisonExtensions.swift */; }; @@ -179,43 +162,19 @@ 81FB21FF207BB297007F9A83 /* EIP67Code.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FB21F8207BA78B007F9A83 /* EIP67Code.swift */; }; 81FB2201207BC58C007F9A83 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81FB2200207BC58B007F9A83 /* CoreImage.framework */; }; 81FB2203207BC6DB007F9A83 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81FB2202207BC6DB007F9A83 /* ImageIO.framework */; }; - 81FECD45211ADE51006DA367 /* Web3+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD44211ADE51006DA367 /* Web3+ObjC.swift */; }; - 81FECD46211ADE51006DA367 /* Web3+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD44211ADE51006DA367 /* Web3+ObjC.swift */; }; - 81FECD49211ADEB1006DA367 /* Web3+Instance+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD48211ADEB1006DA367 /* Web3+Instance+ObjC.swift */; }; - 81FECD4A211ADEB1006DA367 /* Web3+Instance+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD48211ADEB1006DA367 /* Web3+Instance+ObjC.swift */; }; - 81FECD4C211ADF70006DA367 /* Web3+HttpProvider+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD4B211ADF70006DA367 /* Web3+HttpProvider+ObjC.swift */; }; - 81FECD4D211ADF70006DA367 /* Web3+HttpProvider+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD4B211ADF70006DA367 /* Web3+HttpProvider+ObjC.swift */; }; - 81FECD4F211AE100006DA367 /* KeystoreManager+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD4E211AE100006DA367 /* KeystoreManager+ObjC.swift */; }; - 81FECD50211AE100006DA367 /* KeystoreManager+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD4E211AE100006DA367 /* KeystoreManager+ObjC.swift */; }; - 81FECD52211AE110006DA367 /* PlainKeystore+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD51211AE110006DA367 /* PlainKeystore+ObjC.swift */; }; - 81FECD53211AE110006DA367 /* PlainKeystore+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD51211AE110006DA367 /* PlainKeystore+ObjC.swift */; }; - 81FECD55211AEB49006DA367 /* EthereumAddress+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD54211AEB49006DA367 /* EthereumAddress+ObjC.swift */; }; - 81FECD56211AEB49006DA367 /* EthereumAddress+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD54211AEB49006DA367 /* EthereumAddress+ObjC.swift */; }; - 81FECD58211AEB56006DA367 /* BigUInt+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD57211AEB56006DA367 /* BigUInt+ObjC.swift */; }; - 81FECD59211AEB56006DA367 /* BigUInt+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD57211AEB56006DA367 /* BigUInt+ObjC.swift */; }; - 81FECD5B211AECBD006DA367 /* Web3+Eth+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD5A211AECBD006DA367 /* Web3+Eth+ObjC.swift */; }; - 81FECD5C211AECBD006DA367 /* Web3+Eth+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD5A211AECBD006DA367 /* Web3+Eth+ObjC.swift */; }; 81FECD5E211AEFCE006DA367 /* web3swift_ObjC_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD5D211AEFCE006DA367 /* web3swift_ObjC_Tests.swift */; }; 985BFD4A216CE8B100B28C14 /* Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */; }; 985BFD4E216E2E0A00B28C14 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */; }; - B219DC172154F3EE0035BF94 /* ENSResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B219DC162154F3EE0035BF94 /* ENSResolver.swift */; }; - B2E668CE214F8A7B00C3CC2D /* ENS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2E668CD214F8A7B00C3CC2D /* ENS.swift */; }; B350A445E5DB35C60E59AD70 /* libPods-web3swift-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 57F8C9C48884592DCF561393 /* libPods-web3swift-macOS.a */; }; - E2065FB62181D7D700701068 /* Web3+ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2E94C5F217788E0005F54A0 /* Web3+ERC721.swift */; }; - E2065FB72181D7D700701068 /* JSONRPCrequestDispatcher+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2C590752152835400FF53D3 /* JSONRPCrequestDispatcher+ObjC.swift */; }; E2065FB82181D7D700701068 /* Promise+Web3+Eth+EstimateGas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1823F20D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift */; }; E2065FB92181D7D700701068 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81195AAF20D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift */; }; E2065FBA2181D7D700701068 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */; }; E2065FBB2181D7D700701068 /* Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */; }; - E2065FBC2181D7D700701068 /* ENS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2E668CD214F8A7B00C3CC2D /* ENS.swift */; }; - E2065FBD2181D7D700701068 /* ENSResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B219DC162154F3EE0035BF94 /* ENSResolver.swift */; }; E23B5ADB20EA67D800DC7F32 /* web3swift_AdvancedABIv2_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5ADA20EA67D800DC7F32 /* web3swift_AdvancedABIv2_Tests.swift */; }; E23B5ADD20EA685D00DC7F32 /* web3swift_EIP67_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5ADC20EA685D00DC7F32 /* web3swift_EIP67_Tests.swift */; }; E23B5AE120EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE020EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift */; }; E23B5AE320EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE220EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift */; }; E23B5AE520EA6A0A00DC7F32 /* web3swift_contractV2_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE420EA6A0A00DC7F32 /* web3swift_contractV2_Tests.swift */; }; - E2C590762152835400FF53D3 /* JSONRPCrequestDispatcher+ObjC.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2C590752152835400FF53D3 /* JSONRPCrequestDispatcher+ObjC.swift */; }; - E2E94C60217788E0005F54A0 /* Web3+ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2E94C5F217788E0005F54A0 /* Web3+ERC721.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -239,7 +198,6 @@ 00E5FE7520EA34370030E0D6 /* web3swift_keystores_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_keystores_Tests.swift; sourceTree = ""; }; 00E5FE7920EA355D0030E0D6 /* web3swift_transactions_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_transactions_Tests.swift; sourceTree = ""; }; 00E5FE7B20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_ERC20_Tests.swift; sourceTree = ""; }; - 00E5FE7D20EA3A3F0030E0D6 /* web3swift_ABI_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_ABI_Tests.swift; sourceTree = ""; }; 00E5FE7F20EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_RLP_Tests.swift; sourceTree = ""; }; 00E5FE8120EA3FF40030E0D6 /* web3swift_infura_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_infura_Tests.swift; sourceTree = ""; }; 08BD06D432296DA533D07D20 /* Pods_Web3Swift_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -301,6 +259,9 @@ 818ABD5A1FE95F8F002657BB /* Web3+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Instance.swift"; sourceTree = ""; }; 818ABD5C1FE95FC9002657BB /* Web3+Contract.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Contract.swift"; sourceTree = ""; }; 818D16CE204D42910084D2A4 /* Web3+EventParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+EventParser.swift"; sourceTree = ""; }; + 81909D1121862D17007D2AE5 /* Web3+ReadingTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+ReadingTransaction.swift"; sourceTree = ""; }; + 81909D1421862D37007D2AE5 /* Web3+MutatingTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+MutatingTransaction.swift"; sourceTree = ""; }; + 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Eventloop.swift"; sourceTree = ""; }; 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Eth+GetBalance.swift"; sourceTree = ""; }; 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+HttpProvider.swift"; sourceTree = ""; }; 81A1821C20D5C6C10016741F /* web3swift_promises_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_promises_Tests.swift; sourceTree = ""; }; @@ -332,15 +293,8 @@ 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+BrowserFunctions.swift"; sourceTree = ""; }; 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+TransactionIntermediate.swift"; sourceTree = ""; }; 81C146F61FF274B200AA943E /* Web3+Structures.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+Structures.swift"; sourceTree = ""; }; - 81C5DA0A2072548900424CD6 /* ABIv2Parsing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIv2Parsing.swift; sourceTree = ""; }; - 81C5DA0D207254D000424CD6 /* ABIv2Elements.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIv2Elements.swift; sourceTree = ""; }; - 81C5DA10207254F600424CD6 /* ABIv2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIv2.swift; sourceTree = ""; }; - 81C5DA1A2072633300424CD6 /* ABIv2ParameterTypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIv2ParameterTypes.swift; sourceTree = ""; }; - 81C5DA212072DFE600424CD6 /* ABIv2TypeParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIv2TypeParser.swift; sourceTree = ""; }; - 81C5DA242072E14E00424CD6 /* ABIv2Encoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIv2Encoding.swift; sourceTree = ""; }; 81C5DA272072E18200424CD6 /* NativeTypesEncoding+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NativeTypesEncoding+Extensions.swift"; sourceTree = ""; }; - 81C5DA2A2074CA1400424CD6 /* ABIv2Decoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ABIv2Decoding.swift; sourceTree = ""; }; - 81C5DA2D2074EBF500424CD6 /* ContractABIv2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContractABIv2.swift; sourceTree = ""; }; + 81C5DA2D2074EBF500424CD6 /* EthereumContract.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EthereumContract.swift; sourceTree = ""; }; 81C5DA302074EC1E00424CD6 /* ContractProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContractProtocol.swift; sourceTree = ""; }; 81D7D97120A31FB700A193EC /* ComparisonExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComparisonExtensions.swift; sourceTree = ""; }; 81D7D97420A3240900A193EC /* EthereumFilterEncodingExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EthereumFilterEncodingExtensions.swift; sourceTree = ""; }; @@ -456,7 +410,6 @@ 8159C50921343EF900197B91 /* PrecompiledContracts */, 81FECD43211ADE20006DA367 /* ObjectiveCbridge */, 81A1821220D5A2430016741F /* Promises */, - 81C5DA082072542300424CD6 /* ABIv2 */, 81C0FCED20440BDF00D82FAF /* HookedFunctions */, 81C0FCEA20440BB400D82FAF /* Web3 */, 818EABD71FDC9A3800E013FC /* Contract */, @@ -483,7 +436,6 @@ 815C74C720ECBF3E00DE2AC4 /* web3swift_User_cases.swift */, 00E5FE8120EA3FF40030E0D6 /* web3swift_infura_Tests.swift */, 00E5FE7F20EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift */, - 00E5FE7D20EA3A3F0030E0D6 /* web3swift_ABI_Tests.swift */, 00E5FE7B20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift */, 00E5FE7920EA355D0030E0D6 /* web3swift_transactions_Tests.swift */, 00E5FE7520EA34370030E0D6 /* web3swift_keystores_Tests.swift */, @@ -620,7 +572,7 @@ 818EABD81FDC9A4800E013FC /* Classes */ = { isa = PBXGroup; children = ( - 81C5DA2D2074EBF500424CD6 /* ContractABIv2.swift */, + 81C5DA2D2074EBF500424CD6 /* EthereumContract.swift */, 81C5DA302074EC1E00424CD6 /* ContractProtocol.swift */, 81D7D97120A31FB700A193EC /* ComparisonExtensions.swift */, 81D7D97420A3240900A193EC /* EthereumFilterEncodingExtensions.swift */, @@ -691,6 +643,9 @@ 818D16CE204D42910084D2A4 /* Web3+EventParser.swift */, 81EB1E4A208173D7003BD47F /* Web3+Personal.swift */, 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */, + 81909D1121862D17007D2AE5 /* Web3+ReadingTransaction.swift */, + 81909D1421862D37007D2AE5 /* Web3+MutatingTransaction.swift */, + 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */, ); path = Classes; sourceTree = ""; @@ -712,28 +667,6 @@ path = Classes; sourceTree = ""; }; - 81C5DA082072542300424CD6 /* ABIv2 */ = { - isa = PBXGroup; - children = ( - 81C5DA092072542F00424CD6 /* Classes */, - ); - path = ABIv2; - sourceTree = ""; - }; - 81C5DA092072542F00424CD6 /* Classes */ = { - isa = PBXGroup; - children = ( - 81C5DA0A2072548900424CD6 /* ABIv2Parsing.swift */, - 81C5DA0D207254D000424CD6 /* ABIv2Elements.swift */, - 81C5DA10207254F600424CD6 /* ABIv2.swift */, - 81C5DA1A2072633300424CD6 /* ABIv2ParameterTypes.swift */, - 81C5DA212072DFE600424CD6 /* ABIv2TypeParser.swift */, - 81C5DA242072E14E00424CD6 /* ABIv2Encoding.swift */, - 81C5DA2A2074CA1400424CD6 /* ABIv2Decoding.swift */, - ); - path = Classes; - sourceTree = ""; - }; 81FA43F42044097100EE14D5 /* web3swift-macOS_Tests */ = { isa = PBXGroup; children = ( @@ -1074,10 +1007,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 81FECD58211AEB56006DA367 /* BigUInt+ObjC.swift in Sources */, 81C146F71FF274B200AA943E /* Web3+Structures.swift in Sources */, 8104E2281FE82BDC00F952CB /* Web3+Utils.swift in Sources */, - 81FECD45211ADE51006DA367 /* Web3+ObjC.swift in Sources */, 818ABD5D1FE95FC9002657BB /* Web3+Contract.swift in Sources */, 8113D2CA1FD7E1590074282C /* KeystoreManager.swift in Sources */, 817EBB1F2006265400E02EAA /* Base58.swift in Sources */, @@ -1087,66 +1018,49 @@ 810B0F9A1FEC446B00CF0DA2 /* Web3+JSONRPC.swift in Sources */, 81195AB020D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, 81EB1E4B208173D7003BD47F /* Web3+Personal.swift in Sources */, - E2C590762152835400FF53D3 /* JSONRPCrequestDispatcher+ObjC.swift in Sources */, + 81909D1821862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */, 81A1824B20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift in Sources */, 81A1823A20D79AD40016741F /* Promise+Web3+Eth+SendRawTransaction.swift in Sources */, 81D7D97520A3240900A193EC /* EthereumFilterEncodingExtensions.swift in Sources */, 817EBB122004FE2F00E02EAA /* BIP32HDNode.swift in Sources */, 8113D2C41FD7E1590074282C /* CryptoExtensions.swift in Sources */, 81A1822220D678060016741F /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */, - E2E94C60217788E0005F54A0 /* Web3+ERC721.swift in Sources */, - 81C5DA252072E14E00424CD6 /* ABIv2Encoding.swift in Sources */, 81A1824220D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift in Sources */, 817EBB2920075D2E00E02EAA /* BIP39.swift in Sources */, - 81FECD49211ADEB1006DA367 /* Web3+Instance+ObjC.swift in Sources */, 815630022007B53C00A0EC2F /* BIP32Keystore.swift in Sources */, 818ABD5B1FE95F8F002657BB /* Web3+Instance.swift in Sources */, 81D7D97220A31FB700A193EC /* ComparisonExtensions.swift in Sources */, 817EBB27200673D100E02EAA /* KeystoreV3JSONStructure.swift in Sources */, - 81C5DA11207254F600424CD6 /* ABIv2.swift in Sources */, 81FB21FE207BB297007F9A83 /* EIP67Code.swift in Sources */, 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */, 81A1823720D6E2BB0016741F /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */, - 81C5DA0E207254D000424CD6 /* ABIv2Elements.swift in Sources */, - 81FECD5B211AECBD006DA367 /* Web3+Eth+ObjC.swift in Sources */, 818D16CF204D42910084D2A4 /* Web3+EventParser.swift in Sources */, - 81FECD52211AE110006DA367 /* PlainKeystore+ObjC.swift in Sources */, - 81FECD4F211AE100006DA367 /* KeystoreManager+ObjC.swift in Sources */, 81A1824520D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift in Sources */, - 81FECD55211AEB49006DA367 /* EthereumAddress+ObjC.swift in Sources */, 81C5DA282072E18200424CD6 /* NativeTypesEncoding+Extensions.swift in Sources */, 8123E1C7200CBAC200B6D3AB /* Dictionary+Extension.swift in Sources */, 985BFD4E216E2E0A00B28C14 /* Promise+Web3+TxPool.swift in Sources */, 985BFD4A216CE8B100B28C14 /* Web3+TxPool.swift in Sources */, 81D7D97820A61E3800A193EC /* EventFiltering.swift in Sources */, 8160E5CE20B8245A0070070B /* IBAN.swift in Sources */, - 81A7B2872143DBF6004CD2C7 /* EIP681.swift in Sources */, + 81909D1521862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */, 810B0F9C1FEC520500CF0DA2 /* Web3+Methods.swift in Sources */, 81A1822520D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 8113DE7C1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift in Sources */, - B2E668CE214F8A7B00C3CC2D /* ENS.swift in Sources */, - 81C5DA2E2074EBF500424CD6 /* ContractABIv2.swift in Sources */, + 81C5DA2E2074EBF500424CD6 /* EthereumContract.swift in Sources */, 810B0F9E1FEC5B9C00CF0DA2 /* Web3+Eth.swift in Sources */, - 81166665204565AC008D8AD0 /* Web3+BrowserFunctions.swift in Sources */, 81531AA01FE7C07A002192CC /* EthereumKeystoreV3.swift in Sources */, 81A1824820D7DDA20016741F /* Promise+Web3+Personal+Sign.swift in Sources */, 8123E1C9200CBAF800B6D3AB /* Data+Extension.swift in Sources */, - 81C5DA1B2072633300424CD6 /* ABIv2ParameterTypes.swift in Sources */, 817EBB23200649E000E02EAA /* RIPEMD160+StackOveflow.swift in Sources */, - 81FECD4C211ADF70006DA367 /* Web3+HttpProvider+ObjC.swift in Sources */, 8116666320455E33008D8AD0 /* Web3+Wallet.swift in Sources */, 81DDECCF1FDF004E0063684A /* Web3.swift in Sources */, 81A1823420D6E1FD0016741F /* Promise+Web3+Eth+GetBlockByNumber.swift in Sources */, 81A1822820D678BF0016741F /* Promise+Web3+Eth+GetAccounts.swift in Sources */, 81A7B2512143C3A8004CD2C7 /* NameHash.swift in Sources */, 81C5DA312074EC1E00424CD6 /* ContractProtocol.swift in Sources */, - 8159C50B21352CB700197B91 /* Web3+ERC20.swift in Sources */, - 81C5DA222072DFE600424CD6 /* ABIv2TypeParser.swift in Sources */, 815630002007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift in Sources */, - B219DC172154F3EE0035BF94 /* ENSResolver.swift in Sources */, 8123E1CB200CBB2200B6D3AB /* Array+Extension.swift in Sources */, 813FFF8D1FD82EEB006379A2 /* String+Extension.swift in Sources */, - 81C5DA1D207263D700424CD6 /* ABIv2Parsing.swift in Sources */, 81A1823120D68A110016741F /* Promise+Batching.swift in Sources */, 817EBB162004FE4200E02EAA /* Web3+HttpProvider.swift in Sources */, 8103BBCC2077B84400499769 /* PlainKeystore.swift in Sources */, @@ -1155,13 +1069,12 @@ 81C0FCF420440F0900D82FAF /* Web3+Options.swift in Sources */, 81A1822E20D67BC30016741F /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */, 81A1824020D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift in Sources */, + 81909D1221862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */, 81A1822B20D67A1B0016741F /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, 815630042007BC8F00A0EC2F /* BIP39+WordLists.swift in Sources */, - 81C5DA2B2074CA1400424CD6 /* ABIv2Decoding.swift in Sources */, 8113D2CE1FD7E1590074282C /* EthereumTransaction.swift in Sources */, 81A1821F20D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */, 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */, - 81C0FD012044A89300D82FAF /* Web3+TransactionIntermediate.swift in Sources */, 81A1823C20D79C270016741F /* Promise+Web3+Eth+Call.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1189,7 +1102,6 @@ 00E5FE8220EA3FF40030E0D6 /* web3swift_infura_Tests.swift in Sources */, 1CD91B321FD769A6007BFB45 /* web3swift_Tests.swift in Sources */, 81A7B2792143C978004CD2C7 /* web3swift_ENS_Tests.swift in Sources */, - 00E5FE7E20EA3A3F0030E0D6 /* web3swift_ABI_Tests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1197,40 +1109,31 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E2065FB62181D7D700701068 /* Web3+ERC721.swift in Sources */, - E2065FB72181D7D700701068 /* JSONRPCrequestDispatcher+ObjC.swift in Sources */, E2065FB82181D7D700701068 /* Promise+Web3+Eth+EstimateGas.swift in Sources */, E2065FB92181D7D700701068 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, E2065FBA2181D7D700701068 /* Promise+Web3+TxPool.swift in Sources */, E2065FBB2181D7D700701068 /* Web3+TxPool.swift in Sources */, - E2065FBC2181D7D700701068 /* ENS.swift in Sources */, - E2065FBD2181D7D700701068 /* ENSResolver.swift in Sources */, - 8159C50C21352CB700197B91 /* Web3+ERC20.swift in Sources */, 4194811B203630530065A83B /* Web3+HttpProvider.swift in Sources */, 4194811E203630530065A83B /* Web3.swift in Sources */, 4194811F203630530065A83B /* Web3+Instance.swift in Sources */, 41948120203630530065A83B /* Web3+Contract.swift in Sources */, 41948121203630530065A83B /* Web3+Utils.swift in Sources */, + 81909D1921862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */, 8125F06A20499AC300A0F2FE /* BloomFilter.swift in Sources */, 81C0FD062044A8D100D82FAF /* TransactionSigner.swift in Sources */, 41948123203630530065A83B /* Web3+JSONRPC.swift in Sources */, 41948124203630530065A83B /* Web3+Structures.swift in Sources */, 41948125203630530065A83B /* Web3+Methods.swift in Sources */, 81EB1E4C208173D7003BD47F /* Web3+Personal.swift in Sources */, - 81FECD4D211ADF70006DA367 /* Web3+HttpProvider+ObjC.swift in Sources */, 81D7D97620A3240900A193EC /* EthereumFilterEncodingExtensions.swift in Sources */, 41948126203630530065A83B /* Web3+Eth.swift in Sources */, - 81C5DA262072E14E00424CD6 /* ABIv2Encoding.swift in Sources */, 81A1822320D678060016741F /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */, 4194812C203630530065A83B /* KeystoreManager.swift in Sources */, 81DFB400210775320011DC85 /* Web3+Infura.swift in Sources */, 81D7D97320A31FB700A193EC /* ComparisonExtensions.swift in Sources */, - 81FECD56211AEB49006DA367 /* EthereumAddress+ObjC.swift in Sources */, 81A1823E20D79C2C0016741F /* Promise+Web3+Eth+SendRawTransaction.swift in Sources */, 81A1823D20D79C290016741F /* Promise+Web3+Eth+Call.swift in Sources */, - 81C5DA12207254F600424CD6 /* ABIv2.swift in Sources */, 81FB21FF207BB297007F9A83 /* EIP67Code.swift in Sources */, - 81C5DA0F207254D000424CD6 /* ABIv2Elements.swift in Sources */, 81A1821B20D5A6F80016741F /* Promise+HttpProvider.swift in Sources */, 81A1823820D6E2BB0016741F /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */, 818D16D0204D42940084D2A4 /* Web3+EventParser.swift in Sources */, @@ -1244,48 +1147,37 @@ 81A7B2522143C3A8004CD2C7 /* NameHash.swift in Sources */, 81A1824920D7DDA20016741F /* Promise+Web3+Personal+Sign.swift in Sources */, 81A1822620D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, + 81909D1621862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */, 41948133203630530065A83B /* BIP39.swift in Sources */, - 81C5DA2F2074EBF500424CD6 /* ContractABIv2.swift in Sources */, + 81C5DA2F2074EBF500424CD6 /* EthereumContract.swift in Sources */, 81A1824320D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift in Sources */, - 81166666204565AD008D8AD0 /* Web3+BrowserFunctions.swift in Sources */, - 81FECD5C211AECBD006DA367 /* Web3+Eth+ObjC.swift in Sources */, 41948134203630530065A83B /* BIP39+WordLists.swift in Sources */, 41948135203630530065A83B /* EthereumKeystoreV3.swift in Sources */, 41948136203630530065A83B /* KeystoreV3JSONStructure.swift in Sources */, 8116666420455E33008D8AD0 /* Web3+Wallet.swift in Sources */, - 81FECD4A211ADEB1006DA367 /* Web3+Instance+ObjC.swift in Sources */, - 81C5DA1C2072633300424CD6 /* ABIv2ParameterTypes.swift in Sources */, - 81FECD53211AE110006DA367 /* PlainKeystore+ObjC.swift in Sources */, 41948137203630530065A83B /* EthereumTransaction.swift in Sources */, 41948138203630530065A83B /* CryptoExtensions.swift in Sources */, 81C0FD052044A8AE00D82FAF /* Web3+Protocols.swift in Sources */, 81A1823520D6E1FD0016741F /* Promise+Web3+Eth+GetBlockByNumber.swift in Sources */, 81A1822920D678BF0016741F /* Promise+Web3+Eth+GetAccounts.swift in Sources */, 81C5DA322074EC1E00424CD6 /* ContractProtocol.swift in Sources */, - 81C5DA232072DFE600424CD6 /* ABIv2TypeParser.swift in Sources */, - 81A7B2882143DBF6004CD2C7 /* EIP681.swift in Sources */, 81A1824C20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift in Sources */, 4194813B203630530065A83B /* NSRegularExpressionExtension.swift in Sources */, - 81FECD46211ADE51006DA367 /* Web3+ObjC.swift in Sources */, 81C0FD042044A8A700D82FAF /* Web3+Options.swift in Sources */, - 81C5DA1E207263D800424CD6 /* ABIv2Parsing.swift in Sources */, 81A1823220D68A110016741F /* Promise+Batching.swift in Sources */, 4194813C203630530065A83B /* Base58.swift in Sources */, - 81C0FD032044A89400D82FAF /* Web3+TransactionIntermediate.swift in Sources */, 8103BBCD2077B84400499769 /* PlainKeystore.swift in Sources */, 4194813D203630530065A83B /* RIPEMD160+StackOveflow.swift in Sources */, 4194813E203630530065A83B /* Data+Extension.swift in Sources */, 81A1822F20D67BC30016741F /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */, 81A1824620D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift in Sources */, 81A1822C20D67A1B0016741F /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, - 81FECD59211AEB56006DA367 /* BigUInt+ObjC.swift in Sources */, + 81909D1321862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */, 4194813F203630530065A83B /* Dictionary+Extension.swift in Sources */, - 81C5DA2C2074CA1400424CD6 /* ABIv2Decoding.swift in Sources */, 41948140203630530065A83B /* Array+Extension.swift in Sources */, 81A1822020D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */, 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */, 41948141203630530065A83B /* String+Extension.swift in Sources */, - 81FECD50211AE100006DA367 /* KeystoreManager+ObjC.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/web3swift/ABIv2/Classes/ABIv2.swift b/web3swift/ABIv2/Classes/ABIv2.swift deleted file mode 100755 index 4f07a778f..000000000 --- a/web3swift/ABIv2/Classes/ABIv2.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// ABIv2.swift -// web3swift -// -// Created by Alexander Vlasov on 02.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. -// - -import Foundation - -protocol ABIv2ElementPropertiesProtocol { - var isStatic: Bool {get} - var isArray: Bool {get} - var isTuple: Bool {get} - var arraySize: ABIv2.Element.ArraySize {get} - var subtype: ABIv2.Element.ParameterType? {get} - var memoryUsage: UInt64 {get} - var emptyValue: Any {get} -} - -protocol ABIv2Encoding { - var abiRepresentation: String {get} -} - -protocol ABIv2Validation { - var isValid: Bool {get} -} - -public struct ABIv2 { - -} diff --git a/web3swift/Contract/Classes/ContractProtocol.swift b/web3swift/Contract/Classes/ContractProtocol.swift index 3c5849630..61d776ce2 100755 --- a/web3swift/Contract/Classes/ContractProtocol.swift +++ b/web3swift/Contract/Classes/ContractProtocol.swift @@ -13,17 +13,19 @@ import EthereumAddress public protocol ContractProtocol { var address: EthereumAddress? {get set} var options: Web3Options? {get set} + var transactionOptions: TransactionOptions? {get set} var allMethods: [String] {get} var allEvents: [String] {get} - func deploy(bytecode:Data, parameters: [AnyObject], extraData: Data, options: Web3Options?) -> EthereumTransaction? - func method(_ method:String, parameters: [AnyObject], extraData: Data, options: Web3Options?) -> EthereumTransaction? + func deploy(bytecode:Data, parameters: [AnyObject], extraData: Data) -> EthereumTransaction? + func method(_ method:String, parameters: [AnyObject], extraData: Data) -> EthereumTransaction? +// func deploy(bytecode:Data, parameters: [AnyObject], extraData: Data, options: Web3Options?) -> EthereumTransaction? +// func method(_ method:String, parameters: [AnyObject], extraData: Data, options: Web3Options?) -> EthereumTransaction? init?(_ abiString: String, at: EthereumAddress?) func decodeReturnData(_ method:String, data: Data) -> [String:Any]? func decodeInputData(_ method:String, data: Data) -> [String:Any]? func decodeInputData(_ data: Data) -> [String:Any]? func parseEvent(_ eventLog: EventLog) -> (eventName:String?, eventData:[String:Any]?) func testBloomForEventPrecence(eventName: String, bloom: EthereumBloomFilter) -> Bool? -// func allEvents() -> [String: [String: Any]?] } public protocol EventFilterComparable { diff --git a/web3swift/Contract/Classes/ContractABIv2.swift b/web3swift/Contract/Classes/EthereumContract.swift similarity index 51% rename from web3swift/Contract/Classes/ContractABIv2.swift rename to web3swift/Contract/Classes/EthereumContract.swift index cc4665610..516c01ad7 100755 --- a/web3swift/Contract/Classes/ContractABIv2.swift +++ b/web3swift/Contract/Classes/EthereumContract.swift @@ -1,16 +1,19 @@ // -// ContractABIv2.swift -// web3swift -// -// Created by Alexander Vlasov on 04.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alexander Vlasov. +// Copyright © 2018 Alexander Vlasov. All rights reserved. // import Foundation import BigInt import EthereumAddress +import EthereumABI -public struct ContractV2:ContractProtocol { +public struct EthereumContract:ContractProtocol { + public var options: Web3Options? = Web3Options.defaultOptions() + public var transactionOptions: TransactionOptions? = TransactionOptions.defaultOptions + public var address: EthereumAddress? = nil + + var _abi: [ABI.Element] public var allEvents: [String] { return events.keys.compactMap({ (s) -> String in @@ -29,10 +32,8 @@ public struct ContractV2:ContractProtocol { public var parameterValues: [AnyObject] } - public var address: EthereumAddress? = nil - var _abi: [ABIv2.Element] - public var methods: [String: ABIv2.Element] { - var toReturn = [String: ABIv2.Element]() + public var methods: [String: ABI.Element] { + var toReturn = [String: ABI.Element]() for m in self._abi { switch m { case .function(let function): @@ -45,8 +46,8 @@ public struct ContractV2:ContractProtocol { return toReturn } - public var constructor: ABIv2.Element? { - var toReturn : ABIv2.Element? = nil + public var constructor: ABI.Element? { + var toReturn : ABI.Element? = nil for m in self._abi { if toReturn != nil { break @@ -60,14 +61,14 @@ public struct ContractV2:ContractProtocol { } } if toReturn == nil { - let defaultConstructor = ABIv2.Element.constructor(ABIv2.Element.Constructor.init(inputs: [], constant: false, payable: false)) + let defaultConstructor = ABI.Element.constructor(ABI.Element.Constructor(inputs: [], constant: false, payable: false)) return defaultConstructor } return toReturn } - public var events: [String: ABIv2.Element.Event] { - var toReturn = [String: ABIv2.Element.Event]() + public var events: [String: ABI.Element.Event] { + var toReturn = [String: ABI.Element.Event]() for m in self._abi { switch m { case .event(let event): @@ -80,13 +81,11 @@ public struct ContractV2:ContractProtocol { return toReturn } - public var options: Web3Options? = Web3Options.defaultOptions() - public init?(_ abiString: String, at: EthereumAddress? = nil) { do { let jsonData = abiString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in + let abi = try JSONDecoder().decode([ABI.Record].self, from: jsonData!) + let abiNative = try abi.map({ (record) -> ABI.Element in return try record.parse() }) _abi = abiNative @@ -99,38 +98,52 @@ public struct ContractV2:ContractProtocol { } } - public init(abi: [ABIv2.Element]) { + public init(abi: [ABI.Element]) { _abi = abi } - public init(abi: [ABIv2.Element], at: EthereumAddress) { + public init(abi: [ABI.Element], at: EthereumAddress) { _abi = abi address = at } - public func deploy(bytecode:Data, parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), options: Web3Options?) -> EthereumTransaction? { +// public func deploy(bytecode:Data, parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), options: Web3Options?) -> EthereumTransaction? { +// let to:EthereumAddress = EthereumAddress.contractDeploymentAddress() +// let mergedOptions = Web3Options.merge(self.options, with: options) +// var gasLimit:BigUInt +// if let gasInOptions = mergedOptions?.gasLimit { +// gasLimit = gasInOptions +// } else { +// return nil +// } +// +// var gasPrice:BigUInt +// if let gasPriceInOptions = mergedOptions?.gasPrice { +// gasPrice = gasPriceInOptions +// } else { +// return nil +// } +// +// var value:BigUInt +// if let valueInOptions = mergedOptions?.value { +// value = valueInOptions +// } else { +// value = BigUInt(0) +// } +// guard let constructor = self.constructor else {return nil} +// guard let encodedData = constructor.encodeParameters(parameters) else {return nil} +// var fullData = bytecode +// if encodedData != Data() { +// fullData.append(encodedData) +// } else if extraData != Data() { +// fullData.append(extraData) +// } +// let transaction = EthereumTransaction(gasPrice: gasPrice, gasLimit: gasLimit, to: to, value: value, data: fullData) +// return transaction +// } + + public func deploy(bytecode:Data, parameters: [AnyObject] = [AnyObject](), extraData: Data = Data()) -> EthereumTransaction? { let to:EthereumAddress = EthereumAddress.contractDeploymentAddress() - let mergedOptions = Web3Options.merge(self.options, with: options) - var gasLimit:BigUInt - if let gasInOptions = mergedOptions?.gasLimit { - gasLimit = gasInOptions - } else { - return nil - } - - var gasPrice:BigUInt - if let gasPriceInOptions = mergedOptions?.gasPrice { - gasPrice = gasPriceInOptions - } else { - return nil - } - - var value:BigUInt - if let valueInOptions = mergedOptions?.value { - value = valueInOptions - } else { - value = BigUInt(0) - } guard let constructor = self.constructor else {return nil} guard let encodedData = constructor.encodeParameters(parameters) else {return nil} var fullData = bytecode @@ -139,45 +152,61 @@ public struct ContractV2:ContractProtocol { } else if extraData != Data() { fullData.append(extraData) } - let transaction = EthereumTransaction(gasPrice: gasPrice, gasLimit: gasLimit, to: to, value: value, data: fullData) + let transaction = EthereumTransaction(gasPrice: BigUInt(0), gasLimit: BigUInt(0), to: to, value: BigUInt(0), data: fullData) return transaction } +// public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), options: Web3Options?) -> EthereumTransaction? { +// var to:EthereumAddress +// let mergedOptions = Web3Options.merge(self.options, with: options) +// if (self.address != nil) { +// to = self.address! +// } else if let toFound = mergedOptions?.to, toFound.isValid { +// to = toFound +// } else { +// return nil +// } +// +// var gasLimit:BigUInt +// if let gasInOptions = mergedOptions?.gasLimit { +// gasLimit = gasInOptions +// } else { +// return nil +// } +// +// var gasPrice:BigUInt +// if let gasPriceInOptions = mergedOptions?.gasPrice { +// gasPrice = gasPriceInOptions +// } else { +// return nil +// } +// +// var value:BigUInt +// if let valueInOptions = mergedOptions?.value { +// value = valueInOptions +// } else { +// value = BigUInt(0) +// } +// +// if (method == "fallback") { +// let transaction = EthereumTransaction(gasPrice: gasPrice, gasLimit: gasLimit, to: to, value: value, data: extraData) +// return transaction +// } +// let foundMethod = self.methods.filter { (key, value) -> Bool in +// return key == method +// } +// guard foundMethod.count == 1 else {return nil} +// let abiMethod = foundMethod[method] +// guard let encodedData = abiMethod?.encodeParameters(parameters) else {return nil} +// let transaction = EthereumTransaction(gasPrice: gasPrice, gasLimit: gasLimit, to: to, value: value, data: encodedData) +// return transaction +// } - public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), options: Web3Options?) -> EthereumTransaction? { - var to:EthereumAddress - let mergedOptions = Web3Options.merge(self.options, with: options) - if (self.address != nil) { - to = self.address! - } else if let toFound = mergedOptions?.to, toFound.isValid { - to = toFound - } else { - return nil - } - - var gasLimit:BigUInt - if let gasInOptions = mergedOptions?.gasLimit { - gasLimit = gasInOptions - } else { - return nil - } - - var gasPrice:BigUInt - if let gasPriceInOptions = mergedOptions?.gasPrice { - gasPrice = gasPriceInOptions - } else { - return nil - } - - var value:BigUInt - if let valueInOptions = mergedOptions?.value { - value = valueInOptions - } else { - value = BigUInt(0) - } - + public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data()) -> EthereumTransaction? { + guard let to = self.address else {return nil} + if (method == "fallback") { - let transaction = EthereumTransaction(gasPrice: gasPrice, gasLimit: gasLimit, to: to, value: value, data: extraData) + let transaction = EthereumTransaction(gasPrice: BigUInt(0), gasLimit: BigUInt(0), to: to, value: BigUInt(0), data: extraData) return transaction } let foundMethod = self.methods.filter { (key, value) -> Bool in @@ -186,7 +215,7 @@ public struct ContractV2:ContractProtocol { guard foundMethod.count == 1 else {return nil} let abiMethod = foundMethod[method] guard let encodedData = abiMethod?.encodeParameters(parameters) else {return nil} - let transaction = EthereumTransaction(gasPrice: gasPrice, gasLimit: gasLimit, to: to, value: value, data: encodedData) + let transaction = EthereumTransaction(gasPrice: BigUInt(0), gasLimit: BigUInt(0), to: to, value: BigUInt(0), data: encodedData) return transaction } @@ -197,13 +226,17 @@ public struct ContractV2:ContractProtocol { continue } else { - let parsed = ev.decodeReturnedLogs(eventLog) + let logTopics = eventLog.topics + let logData = eventLog.data + let parsed = ev.decodeReturnedLogs(eventLogTopics: logTopics, eventLogData: logData) if parsed != nil { return (eName, parsed!) } } } else { - let parsed = ev.decodeReturnedLogs(eventLog) + let logTopics = eventLog.topics + let logData = eventLog.data + let parsed = ev.decodeReturnedLogs(eventLogTopics: logTopics, eventLogData: logData) if parsed != nil { return (eName, parsed!) } diff --git a/web3swift/Contract/Classes/EventFiltering.swift b/web3swift/Contract/Classes/EventFiltering.swift index ad20c4726..0a31f66d2 100755 --- a/web3swift/Contract/Classes/EventFiltering.swift +++ b/web3swift/Contract/Classes/EventFiltering.swift @@ -7,7 +7,8 @@ // import Foundation - +import EthereumABI +import EthereumAddress internal func filterLogs(decodedLogs: [EventParserResultProtocol], eventFilter: EventFilter) -> [EventParserResultProtocol] { let filteredLogs = decodedLogs.filter { (result) -> Bool in @@ -59,9 +60,9 @@ internal func filterLogs(decodedLogs: [EventParserResultProtocol], eventFilter: return filteredLogs } -internal func encodeTopicToGetLogs(contract: ContractV2, eventName: String?, filter: EventFilter) -> EventFilterParameters? { +internal func encodeTopicToGetLogs(contract: EthereumContract, eventName: String?, filter: EventFilter) -> EventFilterParameters? { var eventTopic: Data? = nil - var event: ABIv2.Element.Event? = nil + var event: ABI.Element.Event? = nil if eventName != nil { guard let ev = contract.events[eventName!] else {return nil} event = ev diff --git a/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift b/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift index 008c2e8bb..c8ace71a2 100755 --- a/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift +++ b/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift @@ -14,12 +14,11 @@ import EthereumAddress extension web3.BrowserFunctions { public func getAccounts() -> [String]? { - let result = self.web3.eth.getAccounts() - switch result { - case .failure(_): - return nil - case .success(let accounts): + do { + let accounts = try self.web3.eth.getAccounts() return accounts.compactMap({$0.address}) + } catch { + return [String]() } } diff --git a/web3swift/KeystoreManager/Classes/AbstractKeystore.swift b/web3swift/KeystoreManager/Classes/AbstractKeystore.swift index 9912f4f48..11a5c0bda 100755 --- a/web3swift/KeystoreManager/Classes/AbstractKeystore.swift +++ b/web3swift/KeystoreManager/Classes/AbstractKeystore.swift @@ -9,9 +9,6 @@ import Foundation import EthereumAddress -public typealias TransactionIntermediate = web3.web3contract.TransactionIntermediate - - public protocol AbstractKeystore { var addresses: [EthereumAddress]? {get} var isHDKeystore: Bool {get} diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift index b6cb71af0..c6fbf3cde 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift @@ -11,10 +11,10 @@ import PromiseKit extension web3.Eth { - func callPromise(_ transaction: EthereumTransaction, options: Web3Options, onBlock: String = "latest") -> Promise{ + func callPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> Promise{ let queue = web3.requestDispatcher.queue do { - guard let request = EthereumTransaction.createRequest(method: .call, transaction: transaction, onBlock: onBlock, options: options) else { + guard let request = EthereumTransaction.createRequest(method: .call, transaction: transaction, transactionOptions: transactionOptions) else { throw Web3Error.processingError(desc: "Transaction is invalid") } let rp = web3.dispatch(request) diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift index db001f96d..92f9fe150 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift @@ -12,10 +12,10 @@ import PromiseKit extension web3.Eth { - func estimateGasPromise(_ transaction: EthereumTransaction, options: Web3Options? = nil, onBlock: String = "latest") -> Promise{ + func estimateGasPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> Promise{ let queue = web3.requestDispatcher.queue do { - guard let request = EthereumTransaction.createRequest(method: .estimateGas, transaction: transaction, onBlock: onBlock, options: options) else { + guard let request = EthereumTransaction.createRequest(method: .estimateGas, transaction: transaction, transactionOptions: transactionOptions) else { throw Web3Error.processingError(desc: "Transaction is invalid") } let rp = web3.dispatch(request) diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift index 376312ca0..269e4e784 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift @@ -12,13 +12,36 @@ import PromiseKit extension web3.Eth { - func sendTransactionPromise(_ transaction: EthereumTransaction, options: Web3Options, password:String = "web3swift") -> Promise { + func sendTransactionPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?, password:String = "web3swift") -> Promise { // print(transaction) - var assembledTransaction : EthereumTransaction = transaction.mergedWithOptions(options) + var assembledTransaction : EthereumTransaction = transaction // .mergedWithOptions(transactionOptions) let queue = web3.requestDispatcher.queue do { + var mergedOptions = self.web3.transactionOptions.merge(transactionOptions) + + var forAssemblyPipeline : (EthereumTransaction, TransactionOptions) = (assembledTransaction, mergedOptions) + + for hook in self.web3.preSubmissionHooks { + let prom : Promise = Promise {seal in + hook.queue.async { + let hookResult = hook.function(forAssemblyPipeline) + if hookResult.2 { + forAssemblyPipeline = (hookResult.0, hookResult.1) + } + seal.fulfill(hookResult.2) + } + } + let shouldContinue = try prom.wait() + if shouldContinue { + throw Web3Error.processingError(desc: "Transaction is canceled by middleware") + } + } + + assembledTransaction = forAssemblyPipeline.0 + mergedOptions = forAssemblyPipeline.1 + if self.web3.provider.attachedKeystoreManager == nil { - guard let request = EthereumTransaction.createRequest(method: JSONRPCmethod.sendTransaction, transaction: assembledTransaction, onBlock: nil, options: options) else + guard let request = EthereumTransaction.createRequest(method: .sendTransaction, transaction: assembledTransaction, transactionOptions: mergedOptions) else { throw Web3Error.processingError(desc: "Failed to create a request to send transaction") } @@ -33,7 +56,7 @@ extension web3.Eth { return result } } - guard let from = options.from else { + guard let from = mergedOptions.from else { throw Web3Error.inputError(desc: "No 'from' field provided") } do { diff --git a/web3swift/Promises/Classes/Promise+Web3+TxPool.swift b/web3swift/Promises/Classes/Promise+Web3+TxPool.swift index 79bd30de5..a183a8701 100644 --- a/web3swift/Promises/Classes/Promise+Web3+TxPool.swift +++ b/web3swift/Promises/Classes/Promise+Web3+TxPool.swift @@ -10,7 +10,6 @@ import Foundation import BigInt import PromiseKit - extension web3.TxPool { public func getInspectPromise() -> Promise<[String:[String:[String:String]]]> { let request = JSONRPCRequestFabric.prepareRequest(.getTxPoolInspect, parameters: []) diff --git a/web3swift/Transaction/Classes/EthereumTransaction.swift b/web3swift/Transaction/Classes/EthereumTransaction.swift index 5d55d99e2..bace4fa47 100755 --- a/web3swift/Transaction/Classes/EthereumTransaction.swift +++ b/web3swift/Transaction/Classes/EthereumTransaction.swift @@ -321,12 +321,14 @@ public struct EthereumTransaction: CustomStringConvertible { } } - static func createRequest(method: JSONRPCmethod, transaction: EthereumTransaction, onBlock: String? = nil, options: Web3Options?) -> JSONRPCrequest? { + static func createRequest(method: JSONRPCmethod, transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> JSONRPCrequest? { + let onBlock = transactionOptions?.callOnBlock?.stringValue var request = JSONRPCrequest() request.method = method + let from = transactionOptions?.from // guard let from = options?.from else {return nil} - guard var txParams = transaction.encodeAsDictionary(from: options?.from) else {return nil} - if method == .estimateGas || options?.gasLimit == nil { + guard var txParams = transaction.encodeAsDictionary(from: from) else {return nil} + if method == .estimateGas || transactionOptions?.gasLimit == nil { txParams.gas = nil } var params = [txParams] as Array diff --git a/web3swift/Transaction/Classes/TransactionSigner.swift b/web3swift/Transaction/Classes/TransactionSigner.swift index 8a4878ce4..7cfa8e749 100755 --- a/web3swift/Transaction/Classes/TransactionSigner.swift +++ b/web3swift/Transaction/Classes/TransactionSigner.swift @@ -26,11 +26,11 @@ public struct Web3Signer { try FallbackSigner.sign(transaction: &transaction, privateKey: privateKey, useExtraEntropy: useExtraEntropy) } } - public static func signIntermediate(intermediate:inout TransactionIntermediate, keystore: AbstractKeystore, account: EthereumAddress, password: String, useExtraEntropy: Bool = false) throws { - var tx = intermediate.transaction - try Web3Signer.signTX(transaction: &tx, keystore: keystore, account: account, password: password, useExtraEntropy: useExtraEntropy) - intermediate.transaction = tx - } +// public static func signIntermediate(intermediate:inout TransactionIntermediate, keystore: AbstractKeystore, account: EthereumAddress, password: String, useExtraEntropy: Bool = false) throws { +// var tx = intermediate.transaction +// try Web3Signer.signTX(transaction: &tx, keystore: keystore, account: account, password: password, useExtraEntropy: useExtraEntropy) +// intermediate.transaction = tx +// } public static func signPersonalMessage(_ personalMessage: Data, keystore: AbstractKeystore, account: EthereumAddress, password: String, useExtraEntropy: Bool = false) throws -> Data? { var privateKey = try keystore.UNSAFE_getPrivateKeyData(password: password, account: account) defer {Data.zero(&privateKey)} diff --git a/web3swift/Utils/Classes/EIP67Code.swift b/web3swift/Utils/Classes/EIP67Code.swift index 63320ad91..702f646a0 100755 --- a/web3swift/Utils/Classes/EIP67Code.swift +++ b/web3swift/Utils/Classes/EIP67Code.swift @@ -10,6 +10,7 @@ import Foundation import CoreImage import BigInt import EthereumAddress +import EthereumABI extension Web3 { @@ -25,7 +26,7 @@ extension Web3 { } public struct Function { public var method: String - public var parameters: [(ABIv2.Element.ParameterType, AnyObject)] + public var parameters: [(ABI.Element.ParameterType, AnyObject)] public func toString() -> String? { let encoding = method + "(" + parameters.map({ (el) -> String in diff --git a/web3swift/Utils/Classes/EIP681.swift b/web3swift/Utils/Classes/EIP681.swift index e60ce5055..c955f521a 100644 --- a/web3swift/Utils/Classes/EIP681.swift +++ b/web3swift/Utils/Classes/EIP681.swift @@ -9,6 +9,7 @@ import Foundation import BigInt import EthereumAddress +import EthereumABI extension Web3 { @@ -25,7 +26,7 @@ extension Web3 { public struct EIP681Code { public struct EIP681Parameter { - public var type: ABIv2.Element.ParameterType + public var type: ABI.Element.ParameterType public var value: AnyObject } public var isPayRequest: Bool @@ -36,7 +37,7 @@ extension Web3 { public var gasLimit: BigUInt? public var gasPrice: BigUInt? public var amount: BigUInt? - public var function: ABIv2.Element.Function? + public var function: ABI.Element.Function? public enum TargetAddress { case ethereumAddress(EthereumAddress) @@ -54,27 +55,6 @@ extension Web3 { self.isPayRequest = isPayRequest self.targetAddress = targetAddress } - -// public struct Function { -// public var method: String -// public var parameters: [(ABIv2.Element.ParameterType, AnyObject)] -// -// public func toString() -> String? { -// let encoding = method + "(" + parameters.map({ (el) -> String in -// if let string = el.1 as? String { -// return el.0.abiRepresentation + " " + string -// } else if let number = el.1 as? BigUInt { -// return el.0.abiRepresentation + " " + String(number, radix: 10) -// } else if let number = el.1 as? BigInt { -// return el.0.abiRepresentation + " " + String(number, radix: 10) -// } else if let data = el.1 as? Data { -// return el.0.abiRepresentation + " " + data.toHexString().addHexPrefix() -// } -// return "" -// }).joined(separator: ", ") + ")" -// return encoding -// } -// } } public struct EIP681CodeParser { @@ -131,9 +111,9 @@ extension Web3 { } guard let queryItems = components.queryItems else {return code} var inputNumber: Int = 0 - var inputs = [ABIv2.Element.InOut]() + var inputs = [ABI.Element.InOut]() for comp in queryItems { - if let inputType = try? ABIv2TypeParser.parseTypeString(comp.name) { + if let inputType = try? ABITypeParser.parseTypeString(comp.name) { guard let value = comp.value else {continue} var nativeValue: AnyObject? = nil switch inputType { @@ -144,7 +124,7 @@ extension Web3 { nativeValue = ethereumAddress as AnyObject case .ensAddress(let ens): let web = web3(provider: InfuraProvider(Networks.fromInt(Int(code.chainID ?? 1)) ?? Networks.Mainnet)!) - var ensModel = ENS(web3: web) + let ensModel = ENS(web3: web) let resolver = ensModel.resolver(forDomain: ens) switch resolver { case .failure(_): @@ -199,7 +179,7 @@ extension Web3 { continue } if nativeValue != nil { - inputs.append(ABIv2.Element.InOut(name: String(inputNumber), type: inputType)) + inputs.append(ABI.Element.InOut(name: String(inputNumber), type: inputType)) code.parameters.append(EIP681Code.EIP681Parameter(type: inputType, value: nativeValue!)) inputNumber = inputNumber + 1 } else { @@ -248,7 +228,7 @@ extension Web3 { } if code.functionName != nil { - let functionEncoding = ABIv2.Element.Function(name: code.functionName!, inputs: inputs, outputs: [ABIv2.Element.InOut](), constant: false, payable: code.amount != nil) + let functionEncoding = ABI.Element.Function(name: code.functionName!, inputs: inputs, outputs: [ABI.Element.InOut](), constant: false, payable: code.amount != nil) code.function = functionEncoding } diff --git a/web3swift/Web3/Classes/Web3+Contract.swift b/web3swift/Web3/Classes/Web3+Contract.swift index aefe0d6cd..1dcf3fc73 100755 --- a/web3swift/Web3/Classes/Web3+Contract.swift +++ b/web3swift/Web3/Classes/Web3+Contract.swift @@ -1,9 +1,7 @@ - -// Web3+Contract.swift // web3swift // -// Created by Alexander Vlasov on 19.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -14,53 +12,47 @@ extension web3 { /// The contract instance. Initialized in runtime from ABI string (that is a JSON array). In addition an existing contract address can be supplied to provide the default "to" address in all the following requests. ABI version is 2 by default and should not be changed. public func contract(_ abiString: String, at: EthereumAddress? = nil, abiVersion: Int = 2) -> web3contract? { - return web3contract(web3: self, abiString: abiString, at: at, options: self.options, abiVersion: abiVersion) + return web3contract(web3: self, abiString: abiString, at: at, transactionOptions: self.transactionOptions, abiVersion: abiVersion) } /// Web3 instance bound contract instance. public class web3contract { - var contract: ContractProtocol + var contract: EthereumContract var web3 : web3 - public var options: Web3Options? = nil + public var transactionOptions: TransactionOptions? = nil /// Initialize the bound contract instance by supplying the Web3 provider bound object, ABI, Ethereum address and some default /// options for further function calls. By default the contract inherits options from the web3 object. Additionally supplied "options" /// do override inherited ones. - public init?(web3 web3Instance:web3, abiString: String, at: EthereumAddress? = nil, options: Web3Options? = nil, abiVersion: Int = 2) { + public init?(web3 web3Instance:web3, abiString: String, at: EthereumAddress? = nil, transactionOptions: TransactionOptions? = nil, abiVersion: Int = 2) { self.web3 = web3Instance - self.options = web3.options + self.transactionOptions = web3.transactionOptions switch abiVersion { - case 1: - print("ABIv1 bound contract is now deprecated") - return nil - case 2: - guard let c = ContractV2(abiString, at: at) else {return nil} - contract = c default: - return nil + guard let c = EthereumContract(abiString, at: at) else {return nil} + contract = c } - var mergedOptions = Web3Options.merge(self.options, with: options) + var mergedOptions = self.transactionOptions?.merge(transactionOptions) if at != nil { contract.address = at mergedOptions?.to = at } else if let addr = mergedOptions?.to { contract.address = addr } - self.options = mergedOptions + self.transactionOptions = mergedOptions } /// Deploys a constact instance using the previously provided (at initialization) ABI, some bytecode, constructor parameters and options. /// If extraData is supplied it is appended to encoded bytecode and constructor parameters. /// /// Returns a "Transaction intermediate" object. - public func deploy(bytecode: Data, parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), options: Web3Options?) -> TransactionIntermediate? { - - let mergedOptions = Web3Options.merge(self.options, with: options) - guard var tx = self.contract.deploy(bytecode: bytecode, parameters: parameters, extraData: extraData, options: mergedOptions) else {return nil} + public func deploy(bytecode: Data, parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), transactionOptions: TransactionOptions? = nil) -> WriteTransaction? { + let mergedOptions = self.transactionOptions?.merge(transactionOptions) + guard var tx = self.contract.deploy(bytecode: bytecode, parameters: parameters, extraData: extraData) else {return nil} tx.chainID = self.web3.provider.network?.chainID - let intermediate = TransactionIntermediate(transaction: tx, web3: self.web3, contract: self.contract, method: "fallback", options: mergedOptions) - return intermediate + let writeTX = WriteTransaction.init(transaction: tx, web3: self.web3, contract: self.contract, method: "fallback", transactionOptions: mergedOptions) + return writeTX } /// Creates and object responsible for calling a particular function of the contract. If method name is not found in ABI - returns nil. @@ -69,12 +61,12 @@ extension web3 { /// Elements of "parameters" can be other arrays or instances of String, Data, BigInt, BigUInt, Int or EthereumAddress. /// /// Returns a "Transaction intermediate" object. - public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), options: Web3Options?) -> TransactionIntermediate? { - let mergedOptions = Web3Options.merge(self.options, with: options) - guard var tx = self.contract.method(method, parameters: parameters, extraData: extraData, options: mergedOptions) else {return nil} + public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), transactionOptions: TransactionOptions?) -> WriteTransaction? { + let mergedOptions = self.transactionOptions?.merge(transactionOptions) + guard var tx = self.contract.method(method, parameters: parameters, extraData: extraData) else {return nil} tx.chainID = self.web3.provider.network?.chainID - let intermediate = TransactionIntermediate(transaction: tx, web3: self.web3, contract: self.contract, method: method, options: mergedOptions) - return intermediate + let writeTX = WriteTransaction.init(transaction: tx, web3: self.web3, contract: self.contract, method: method, transactionOptions: mergedOptions) + return writeTX } /// Parses an EventLog object by using a description from the contract's ABI. diff --git a/web3swift/Web3/Classes/Web3+Eth.swift b/web3swift/Web3/Classes/Web3+Eth.swift index 8e6e85f5d..68e240293 100755 --- a/web3swift/Web3/Classes/Web3+Eth.swift +++ b/web3swift/Web3/Classes/Web3+Eth.swift @@ -1,14 +1,11 @@ -// -// Web3+Eth.swift // web3swift // -// Created by Alexander Vlasov on 22.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation import BigInt -import Result import EthereumAddress extension web3.Eth { @@ -22,16 +19,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func sendTransaction(_ transaction: EthereumTransaction, options: Web3Options, password:String = "web3swift") -> Result { - do { - let result = try self.sendTransactionPromise(transaction, options: options, password: password).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func sendTransaction(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions, password:String = "web3swift") throws -> TransactionSendingResult { + let result = try self.sendTransactionPromise(transaction, transactionOptions: transactionOptions, password: password).wait() + return result } /// Performs a non-mutating "call" to some smart-contract. EthereumTransaction bears all function parameters required for the call. @@ -45,16 +35,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - func call(_ transaction: EthereumTransaction, options: Web3Options, onBlock:String = "latest") -> Result { - do { - let result = try self.callPromise(transaction, options: options, onBlock: onBlock).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + func call(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions) throws -> Data { + let result = try self.callPromise(transaction, transactionOptions: transactionOptions).wait() + return result } /// Send raw Ethereum transaction data to the network. @@ -62,16 +45,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func sendRawTransaction(_ transaction: Data) -> Result { - do { - let result = try self.sendRawTransactionPromise(transaction).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func sendRawTransaction(_ transaction: Data) throws -> TransactionSendingResult { + let result = try self.sendRawTransactionPromise(transaction).wait() + return result } /// Send raw Ethereum transaction data to the network by first serializing the EthereumTransaction object. @@ -79,16 +55,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func sendRawTransaction(_ transaction: EthereumTransaction) -> Result { - do { - let result = try self.sendRawTransactionPromise(transaction).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func sendRawTransaction(_ transaction: EthereumTransaction) throws -> TransactionSendingResult { + let result = try self.sendRawTransactionPromise(transaction).wait() + return result } /// Returns a total number of transactions sent by the particular Ethereum address. @@ -99,16 +68,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getTransactionCount(address: EthereumAddress, onBlock: String = "latest") -> Result { - do { - let result = try self.getTransactionCountPromise(address: address, onBlock: onBlock).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getTransactionCount(address: EthereumAddress, onBlock: String = "latest") throws -> BigUInt { + let result = try self.getTransactionCountPromise(address: address, onBlock: onBlock).wait() + return result } /// Returns a balance of particular Ethereum address in Wei units (1 ETH = 10^18 Wei). @@ -119,16 +81,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getBalance(address: EthereumAddress, onBlock: String = "latest") -> Result { - do { - let result = try self.getBalancePromise(address: address, onBlock: onBlock).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getBalance(address: EthereumAddress, onBlock: String = "latest") throws -> BigUInt { + let result = try self.getBalancePromise(address: address, onBlock: onBlock).wait() + return result } /// Returns a block number of the last mined block that Ethereum node knows about. @@ -136,16 +91,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getBlockNumber() -> Result { - do { - let result = try self.getBlockNumberPromise().wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getBlockNumber() throws -> BigUInt { + let result = try self.getBlockNumberPromise().wait() + return result } /// Returns a current gas price in the units of Wei. The node has internal algorithms for averaging over the last few blocks. @@ -153,16 +101,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getGasPrice() -> Result { - do { - let result = try self.getGasPricePromise().wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getGasPrice() throws -> BigUInt { + let result = try self.getGasPricePromise().wait() + return result } /// Returns transaction details for particular transaction hash. Details indicate position of the transaction in a particular block, @@ -171,16 +112,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getTransactionDetails(_ txhash: Data) -> Result { - do { - let result = try self.getTransactionDetailsPromise(txhash).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getTransactionDetails(_ txhash: Data) throws -> TransactionDetails { + let result = try self.getTransactionDetailsPromise(txhash).wait() + return result } /// Returns transaction details for particular transaction hash. Details indicate position of the transaction in a particular block, @@ -189,16 +123,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getTransactionDetails(_ txhash: String) -> Result { - do { - let result = try self.getTransactionDetailsPromise(txhash).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getTransactionDetails(_ txhash: String) throws -> TransactionDetails { + let result = try self.getTransactionDetailsPromise(txhash).wait() + return result } /// Returns transaction receipt for particular transaction hash. Receipt indicate what has happened when the transaction @@ -207,16 +134,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getTransactionReceipt(_ txhash: Data) -> Result { - do { - let result = try self.getTransactionReceiptPromise(txhash).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getTransactionReceipt(_ txhash: Data) throws -> TransactionReceipt { + let result = try self.getTransactionReceiptPromise(txhash).wait() + return result } /// Returns transaction receipt for particular transaction hash. Receipt indicate what has happened when the transaction @@ -225,16 +145,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getTransactionReceipt(_ txhash: String) -> Result { - do { - let result = try self.getTransactionReceiptPromise(txhash).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getTransactionReceipt(_ txhash: String) throws -> TransactionReceipt { + let result = try self.getTransactionReceiptPromise(txhash).wait() + return result } /// Estimates a minimal amount of gas required to run a transaction. To do it the Ethereum node tries to run it and counts @@ -249,16 +162,9 @@ extension web3.Eth { /// Returns the Result object that indicates either success of failure. /// Error can also indicate that transaction is invalid in the current state, so formally it's gas limit is infinite. /// An example of such transaction can be sending an amount of ETH that is larger than the current account balance. - public func estimateGas(_ transaction: EthereumTransaction, options: Web3Options?, onBlock: String = "latest") -> Result { - do { - let result = try self.estimateGasPromise(transaction, options: options, onBlock: onBlock).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func estimateGas(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?) throws -> BigUInt { + let result = try self.estimateGasPromise(transaction, transactionOptions: transactionOptions).wait() + return result } /// Get a list of Ethereum accounts that a node knows about. @@ -267,16 +173,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getAccounts() -> Result<[EthereumAddress],Web3Error> { - do { - let result = try self.getAccountsPromise().wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getAccounts() throws -> [EthereumAddress] { + let result = try self.getAccountsPromise().wait() + return result } @@ -287,16 +186,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getBlockByHash(_ hash: String, fullTransactions: Bool = false) -> Result { - do { - let result = try self.getBlockByHashPromise(hash, fullTransactions: fullTransactions).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getBlockByHash(_ hash: String, fullTransactions: Bool = false) throws -> Block { + let result = try self.getBlockByHashPromise(hash, fullTransactions: fullTransactions).wait() + return result } /// Get information about the particular block in Ethereum network. If "fullTransactions" parameter is set to "true" @@ -306,16 +198,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getBlockByHash(_ hash: Data, fullTransactions: Bool = false) -> Result { - do { - let result = try self.getBlockByHashPromise(hash, fullTransactions: fullTransactions).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getBlockByHash(_ hash: Data, fullTransactions: Bool = false) throws -> Block { + let result = try self.getBlockByHashPromise(hash, fullTransactions: fullTransactions).wait() + return result } /// Get information about the particular block in Ethereum network. If "fullTransactions" parameter is set to "true" @@ -325,16 +210,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getBlockByNumber(_ number: UInt64, fullTransactions: Bool = false) -> Result { - do { - let result = try self.getBlockByNumberPromise(number, fullTransactions: fullTransactions).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getBlockByNumber(_ number: UInt64, fullTransactions: Bool = false) throws -> Block { + let result = try self.getBlockByNumberPromise(number, fullTransactions: fullTransactions).wait() + return result } /// Get information about the particular block in Ethereum network. If "fullTransactions" parameter is set to "true" @@ -344,16 +222,9 @@ extension web3.Eth { /// This function is synchronous! /// /// Returns the Result object that indicates either success of failure. - public func getBlockByNumber(_ number: BigUInt, fullTransactions: Bool = false) -> Result { - do { - let result = try self.getBlockByNumberPromise(number, fullTransactions: fullTransactions).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getBlockByNumber(_ number: BigUInt, fullTransactions: Bool = false) throws -> Block { + let result = try self.getBlockByNumberPromise(number, fullTransactions: fullTransactions).wait() + return result } /// Get information about the particular block in Ethereum network. If "fullTransactions" parameter is set to "true" @@ -363,139 +234,126 @@ extension web3.Eth { /// This function is synchronous! /// /// - public func getBlockByNumber(_ block:String, fullTransactions: Bool = false) -> Result { - do { - let result = try self.getBlockByNumberPromise(block, fullTransactions: fullTransactions).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } - } - - - /** - Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data. - - Parameters: - - to: EthereumAddress to send funds to - - amount: BigUInt indicating the amount in wei - - extraData: Additional data to attach to the transaction - - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead - - - returns: - - TransactionIntermediate object - - */ - public func sendETH(to: EthereumAddress, amount: BigUInt, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { - let contract = self.web3.contract(Web3.Utils.coldWalletABI, at: to, abiVersion: 2) - guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} - mergedOptions.value = amount - let intermediate = contract?.method("fallback", extraData: extraData, options: mergedOptions) - return intermediate - } - - /** - *Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data.* - - - parameters: - - to: EthereumAddress to send funds to - - amount: String in "units" demonimation. It can contain either "," or "." decimal separator. - - units: Ethereum units indicating the denomination of amout about - - extraData: Additional data to attach to the transaction - - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead - - - returns: - - TransactionIntermediate object - - * String "1.01" and units: .eth will result in sending 1.01 ETH to another address* - */ - public func sendETH(to: EthereumAddress, amount: String, units: Web3.Utils.Units = .eth, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { - guard let value = Web3.Utils.parseToBigUInt(amount, units: .eth) else {return nil} - return sendETH(to: to, amount: value, extraData: extraData, options: options) - } - - /** - *Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data.* - - - parameters: - - from: EthereumAddress to send funds from - - to: EthereumAddress to send funds to - - amount: String in "units" demonimation. It can contain either "," or "." decimal separator. - - units: Ethereum units indicating the denomination of amout about - - extraData: Additional data to attach to the transaction - - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. - - - returns: - - TransactionIntermediate object - - * String "1.01" and units: .eth will result in sending 1.01 ETH to another address* - */ - public func sendETH(from: EthereumAddress, to: EthereumAddress, amount: String, units: Web3.Utils.Units = .eth, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { - guard let value = Web3.Utils.parseToBigUInt(amount, units: .eth) else {return nil} - guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} - mergedOptions.from = from - return sendETH(to: to, amount: value, extraData: extraData, options: mergedOptions) - } - - /** - *Convenience wrapper to send ERC20 tokens to another address. Internally it creates a virtual contract and encodes all the options and data. Assumes that the sender knows the decimal units of the underlying token.* - - - parameters: - - tokenAddress: EthereumAddress of the token contract - - from: EthereumAddress to send tokens from - - to: EthereumAddress to send tokens to - - amount: BigUInt indicating the number of tokens in the the smallest indivisible units (mind that sender knows the number of decimals) - - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. - - - returns: - - TransactionIntermediate object - - */ - public func sendERC20tokensWithKnownDecimals(tokenAddress: EthereumAddress, from: EthereumAddress, to: EthereumAddress, amount: BigUInt, options: Web3Options? = nil) -> TransactionIntermediate? { - let contract = self.web3.contract(Web3.Utils.erc20ABI, at: tokenAddress, abiVersion: 2) - guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} - mergedOptions.from = from - guard let intermediate = contract?.method("transfer", parameters: [to, amount] as [AnyObject], options: mergedOptions) else {return nil} - return intermediate + public func getBlockByNumber(_ block:String, fullTransactions: Bool = false) throws -> Block { + let result = try self.getBlockByNumberPromise(block, fullTransactions: fullTransactions).wait() + return result } - /** - *Convenience wrapper to send ERC20 tokens to another address. Internally it creates a virtual contract and encodes all the options and data. Pulls the number of decimals of the token under the hood.* - - - parameters: - - tokenAddress: EthereumAddress of the token contract - - from: EthereumAddress to send tokens from - - to: EthereumAddress to send tokens to - - amount: String in "natura" demonimation. It can contain either "," or "." decimal separator. - - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. - - - returns: - - TransactionIntermediate object - - - important: This call is synchronous - - * If the amount is "1.01" and token has 9 decimals it will result in sending 1010000000 of the smallest invidisible token units.* - */ - public func sendERC20tokensWithNaturalUnits(tokenAddress: EthereumAddress, from: EthereumAddress, to: EthereumAddress, amount: String, options: Web3Options? = nil) -> TransactionIntermediate? { - let contract = self.web3.contract(Web3.Utils.erc20ABI, at: tokenAddress, abiVersion: 2) - guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} - mergedOptions.from = from - guard let intermediate = contract?.method("decimals", options: mergedOptions) else {return nil} - let callResult = intermediate.call(options: mergedOptions, onBlock: "latest") - var decimals = BigUInt(0) - switch callResult { - case .success(let response): - guard let dec = response["0"], let decTyped = dec as? BigUInt else {return nil} - decimals = decTyped - break - case .failure(_): - break - } - let intDecimals = Int(decimals) - guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else {return nil} - return sendERC20tokensWithKnownDecimals(tokenAddress: tokenAddress, from: from, to: to, amount: value, options: options) - } +// /** +// Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data. +// - Parameters: +// - to: EthereumAddress to send funds to +// - amount: BigUInt indicating the amount in wei +// - extraData: Additional data to attach to the transaction +// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead +// +// - returns: +// - TransactionIntermediate object +// +// */ +// public func sendETH(to: EthereumAddress, amount: BigUInt, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { +// let contract = self.web3.contract(Web3.Utils.coldWalletABI, at: to, abiVersion: 2) +// guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} +// mergedOptions.value = amount +// let intermediate = contract?.method("fallback", extraData: extraData, options: mergedOptions) +// return intermediate +// } +// +// /** +// *Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data.* +// +// - parameters: +// - to: EthereumAddress to send funds to +// - amount: String in "units" demonimation. It can contain either "," or "." decimal separator. +// - units: Ethereum units indicating the denomination of amout about +// - extraData: Additional data to attach to the transaction +// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead +// +// - returns: +// - TransactionIntermediate object +// +// * String "1.01" and units: .eth will result in sending 1.01 ETH to another address* +// */ +// public func sendETH(to: EthereumAddress, amount: String, units: Web3.Utils.Units = .eth, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { +// guard let value = Web3.Utils.parseToBigUInt(amount, units: .eth) else {return nil} +// return sendETH(to: to, amount: value, extraData: extraData, options: options) +// } +// +// /** +// *Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data.* +// +// - parameters: +// - from: EthereumAddress to send funds from +// - to: EthereumAddress to send funds to +// - amount: String in "units" demonimation. It can contain either "," or "." decimal separator. +// - units: Ethereum units indicating the denomination of amout about +// - extraData: Additional data to attach to the transaction +// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. +// +// - returns: +// - TransactionIntermediate object +// +// * String "1.01" and units: .eth will result in sending 1.01 ETH to another address* +// */ +// public func sendETH(from: EthereumAddress, to: EthereumAddress, amount: String, units: Web3.Utils.Units = .eth, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { +// guard let value = Web3.Utils.parseToBigUInt(amount, units: .eth) else {return nil} +// guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} +// mergedOptions.from = from +// return sendETH(to: to, amount: value, extraData: extraData, options: mergedOptions) +// } +// +// /** +// *Convenience wrapper to send ERC20 tokens to another address. Internally it creates a virtual contract and encodes all the options and data. Assumes that the sender knows the decimal units of the underlying token.* +// +// - parameters: +// - tokenAddress: EthereumAddress of the token contract +// - from: EthereumAddress to send tokens from +// - to: EthereumAddress to send tokens to +// - amount: BigUInt indicating the number of tokens in the the smallest indivisible units (mind that sender knows the number of decimals) +// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. +// +// - returns: +// - TransactionIntermediate object +// +// */ +// public func sendERC20tokensWithKnownDecimals(tokenAddress: EthereumAddress, from: EthereumAddress, to: EthereumAddress, amount: BigUInt, options: Web3Options? = nil) -> TransactionIntermediate? { +// let contract = self.web3.contract(Web3.Utils.erc20ABI, at: tokenAddress, abiVersion: 2) +// guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} +// mergedOptions.from = from +// guard let intermediate = contract?.method("transfer", parameters: [to, amount] as [AnyObject], options: mergedOptions) else {return nil} +// return intermediate +// } +// +// /** +// *Convenience wrapper to send ERC20 tokens to another address. Internally it creates a virtual contract and encodes all the options and data. Pulls the number of decimals of the token under the hood.* +// +// - parameters: +// - tokenAddress: EthereumAddress of the token contract +// - from: EthereumAddress to send tokens from +// - to: EthereumAddress to send tokens to +// - amount: String in "natura" demonimation. It can contain either "," or "." decimal separator. +// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. +// +// - returns: +// - TransactionIntermediate object +// +// - important: This call is synchronous +// +// * If the amount is "1.01" and token has 9 decimals it will result in sending 1010000000 of the smallest invidisible token units.* +// */ +// public func sendERC20tokensWithNaturalUnits(tokenAddress: EthereumAddress, from: EthereumAddress, to: EthereumAddress, amount: String, options: Web3Options? = nil) throws -> TransactionIntermediate? { +// let contract = self.web3.contract(Web3.Utils.erc20ABI, at: tokenAddress, abiVersion: 2) +// guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} +// mergedOptions.from = from +// guard let intermediate = contract?.method("decimals", options: mergedOptions) else {return nil} +// let response = try intermediate.call(options: mergedOptions, onBlock: "latest") +// var decimals = BigUInt(0) +// guard let dec = response["0"], let decTyped = dec as? BigUInt else {return nil} +// decimals = decTyped +// let intDecimals = Int(decimals) +// guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else {return nil} +// return sendERC20tokensWithKnownDecimals(tokenAddress: tokenAddress, from: from, to: to, amount: value, options: options) +// } +// } diff --git a/web3swift/Web3/Classes/Web3+EventParser.swift b/web3swift/Web3/Classes/Web3+EventParser.swift index 08b5fe827..4bf2bc5e6 100755 --- a/web3swift/Web3/Classes/Web3+EventParser.swift +++ b/web3swift/Web3/Classes/Web3+EventParser.swift @@ -1,9 +1,7 @@ +// web3swift // -// Web3+TransactionIntermediate.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 26.02.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -278,18 +276,17 @@ extension web3.web3contract { public func getIndexedEventsPromise(eventName: String?, filter: EventFilter, joinWithReceipts: Bool = false) -> Promise<[EventParserResultProtocol]> { let queue = self.web3.requestDispatcher.queue do { - guard let rawContract = self.contract as? ContractV2 else { + guard let rawContract = self.contract as? EthereumContract else { throw Web3Error.nodeError(desc: "ABIv1 is not supported for this method") } guard let preEncoding = encodeTopicToGetLogs(contract: rawContract, eventName: eventName, filter: filter) else { throw Web3Error.processingError(desc: "Failed to encode topic for request") } - // var event: ABIv2.Element.Event? = nil + if eventName != nil { guard let _ = rawContract.events[eventName!] else { throw Web3Error.processingError(desc: "No such event in a contract") } - // event = ev } let request = JSONRPCRequestFabric.prepareRequest(.getLogs, parameters: [preEncoding]) let fetchLogsPromise = self.web3.dispatch(request).map(on: queue) {response throws -> [EventParserResult] in diff --git a/web3swift/Web3/Classes/Web3+Eventloop.swift b/web3swift/Web3/Classes/Web3+Eventloop.swift new file mode 100644 index 000000000..c909fadc6 --- /dev/null +++ b/web3swift/Web3/Classes/Web3+Eventloop.swift @@ -0,0 +1,11 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation + +extension web3.Eventloop { + +} diff --git a/web3swift/Web3/Classes/Web3+HttpProvider.swift b/web3swift/Web3/Classes/Web3+HttpProvider.swift index e32abcfb9..683f7d36e 100755 --- a/web3swift/Web3/Classes/Web3+HttpProvider.swift +++ b/web3swift/Web3/Classes/Web3+HttpProvider.swift @@ -1,9 +1,7 @@ -// -// Web3+Provider.swift // web3swift // -// Created by Alexander Vlasov on 19.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+Infura.swift b/web3swift/Web3/Classes/Web3+Infura.swift index e6a92b049..57b325b85 100755 --- a/web3swift/Web3/Classes/Web3+Infura.swift +++ b/web3swift/Web3/Classes/Web3+Infura.swift @@ -1,9 +1,7 @@ -// -// Web3+Provider.swift // web3swift // -// Created by Alexander Vlasov on 19.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+Instance.swift b/web3swift/Web3/Classes/Web3+Instance.swift index 89eb1d661..42033f400 100755 --- a/web3swift/Web3/Classes/Web3+Instance.swift +++ b/web3swift/Web3/Classes/Web3+Instance.swift @@ -1,9 +1,7 @@ -// -// Web3+Instance.swift // web3swift // -// Created by Alexander Vlasov on 19.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -14,6 +12,7 @@ import PromiseKit public class web3: Web3OptionsInheritable { public var provider : Web3Provider public var options : Web3Options = Web3Options.defaultOptions() + public var transactionOptions: TransactionOptions = TransactionOptions.defaultOptions public var defaultBlock = "latest" public var requestDispatcher: JSONRPCrequestDispatcher @@ -155,21 +154,30 @@ public class web3: Web3OptionsInheritable { } } - var erc721Instance: web3.ERC721? + var eventLoopInstance: web3.Eventloop? /// Public web3.browserFunctions.* namespace. - public var erc721: web3.ERC721 { - if (self.erc721Instance != nil) { - return self.erc721Instance! + public var eventLoop: web3.Eventloop { + if (self.eventLoopInstance != nil) { + return self.eventLoopInstance! } - self.erc721Instance = web3.ERC721(provider : self.provider, web3: self) - return self.erc721Instance! + self.eventLoopInstance = web3.Eventloop(provider : self.provider, web3: self) + return self.eventLoopInstance! } - public class ERC721: Web3OptionsInheritable { + public class Eventloop: Web3OptionsInheritable { + public typealias FunctionCall = (web3) -> Result + + public struct MonitoredProperty { + public var name: String + public var calledFunction: FunctionCall + } + var provider:Web3Provider // weak var web3: web3? var web3: web3 + var timer: Promise? + var monitoredProperties: [AnyObject] = [AnyObject]() public var options: Web3Options { return self.web3.options } @@ -178,4 +186,25 @@ public class web3: Web3OptionsInheritable { web3 = web3instance } } + + public typealias AssemblyHookFunction = ((EthereumTransaction, EthereumContract, TransactionOptions)) -> (EthereumTransaction, EthereumContract, TransactionOptions, Bool) + + public typealias SubmissionHookFunction = ((EthereumTransaction, TransactionOptions)) -> (EthereumTransaction, TransactionOptions, Bool) + + public struct AssemblyHook { + public var queue: DispatchQueue + public var function: AssemblyHookFunction + } + + public struct SubmissionHook { + public var queue: DispatchQueue + public var function: SubmissionHookFunction + } + + public var preAssemblyHooks: [AssemblyHook] = [AssemblyHook]() + public var postAssemblyHooks: [AssemblyHook] = [AssemblyHook]() + + public var preSubmissionHooks: [SubmissionHook] = [SubmissionHook]() +// public var postSubmissionHooks: [SubmissionHook] = [SubmissionHook]() + } diff --git a/web3swift/Web3/Classes/Web3+JSONRPC.swift b/web3swift/Web3/Classes/Web3+JSONRPC.swift index 7af3121be..37d6d9a86 100755 --- a/web3swift/Web3/Classes/Web3+JSONRPC.swift +++ b/web3swift/Web3/Classes/Web3+JSONRPC.swift @@ -1,9 +1,7 @@ -// -// Web3+JSONRPC.swift // web3swift // -// Created by Alexander Vlasov on 21.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+Methods.swift b/web3swift/Web3/Classes/Web3+Methods.swift index d1fbfd9da..7a1b3018e 100755 --- a/web3swift/Web3/Classes/Web3+Methods.swift +++ b/web3swift/Web3/Classes/Web3+Methods.swift @@ -1,9 +1,7 @@ -// -// Web3+Methods.swift // web3swift // -// Created by Alexander Vlasov on 21.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift new file mode 100644 index 000000000..1943d6072 --- /dev/null +++ b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift @@ -0,0 +1,142 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation +import BigInt +import PromiseKit +fileprivate typealias PromiseResult = PromiseKit.Result +import EthereumAddress + +public class WriteTransaction: ReadTransaction { + + public func assemblePromise(transactionOptions: TransactionOptions?) -> Promise { + var assembledTransaction : EthereumTransaction = self.transaction + let queue = self.web3.requestDispatcher.queue + let returnPromise = Promise { seal in + var mergedOptions = self.transactionOptions.merge(transactionOptions) + + var forAssemblyPipeline : (EthereumTransaction, EthereumContract, TransactionOptions) = (assembledTransaction, self.contract, mergedOptions) + + for hook in self.web3.preAssemblyHooks { + let prom : Promise = Promise {seal in + hook.queue.async { + let hookResult = hook.function(forAssemblyPipeline) + if hookResult.3 { + forAssemblyPipeline = (hookResult.0, hookResult.1, hookResult.2) + } + seal.fulfill(hookResult.3) + } + } + let shouldContinue = try prom.wait() + if shouldContinue { + seal.reject(Web3Error.processingError(desc: "Transaction is canceled by middleware")) + return + } + } + + assembledTransaction = forAssemblyPipeline.0 + mergedOptions = forAssemblyPipeline.2 + + guard let from = mergedOptions.from else { + seal.reject(Web3Error.inputError(desc: "No 'from' field provided")) + return + } + + // assemble promise for gas estimation + var optionsForGasEstimation = TransactionOptions() + optionsForGasEstimation.from = mergedOptions.from + optionsForGasEstimation.to = mergedOptions.to + optionsForGasEstimation.value = mergedOptions.value + optionsForGasEstimation.callOnBlock = mergedOptions.callOnBlock + let gasEstimatePromise : Promise = self.web3.eth.estimateGasPromise(assembledTransaction, transactionOptions: optionsForGasEstimation) + + // assemble promise for nonce + var getNoncePromise: Promise? + guard let noncePolicy = mergedOptions.nonce else { + seal.reject(Web3Error.inputError(desc: "No nonce policy provided")) + return + } + switch noncePolicy { + case .latest: + getNoncePromise = self.web3.eth.getTransactionCountPromise(address: from, onBlock: "latest") + case .pending: + getNoncePromise = self.web3.eth.getTransactionCountPromise(address: from, onBlock: "pending") + case .manual(let nonce): + getNoncePromise = Promise.value(nonce) + } + + let gasPricePromise : Promise = self.web3.eth.getGasPricePromise() + var promisesToFulfill: [Promise] = [getNoncePromise!, gasPricePromise, gasPricePromise] + when(resolved: getNoncePromise!, gasEstimatePromise, gasPricePromise).map(on: queue, { (results:[PromiseResult]) throws -> EthereumTransaction in + + promisesToFulfill.removeAll() + guard case .fulfilled(let nonce) = results[0] else { + throw Web3Error.processingError(desc: "Failed to fetch nonce") + } + guard case .fulfilled(let gasEstimate) = results[1] else { + throw Web3Error.processingError(desc: "Failed to fetch gas estimate") + } + guard case .fulfilled(let gasPrice) = results[2] else { + throw Web3Error.processingError(desc: "Failed to fetch gas price") + } + + guard let estimate = mergedOptions.resolveGasLimit(gasEstimate) else { + throw Web3Error.processingError(desc: "Failed to calculate gas estimate that satisfied options") + } + + guard let finalGasPrice = mergedOptions.resolveGasPrice(gasPrice) else { + throw Web3Error.processingError(desc: "Missing parameter of gas price for transaction") + } + + + assembledTransaction.nonce = nonce + assembledTransaction.gasLimit = estimate + assembledTransaction.gasPrice = finalGasPrice + + forAssemblyPipeline = (assembledTransaction, self.contract, mergedOptions) + + for hook in self.web3.postAssemblyHooks { + let prom : Promise = Promise {seal in + hook.queue.async { + let hookResult = hook.function(forAssemblyPipeline) + if hookResult.3 { + forAssemblyPipeline = (hookResult.0, hookResult.1, hookResult.2) + } + seal.fulfill(hookResult.3) + } + } + let shouldContinue = try prom.wait() + if shouldContinue { + throw Web3Error.processingError(desc: "Transaction is canceled by middleware") + } + } + + assembledTransaction = forAssemblyPipeline.0 + mergedOptions = forAssemblyPipeline.2 + + return assembledTransaction + }).done(on: queue) {tx in + seal.fulfill(tx) + }.catch(on: queue) {err in + seal.reject(err) + } + } + return returnPromise + } + + public func sendPromise(password:String = "web3swift", transactionOptions: TransactionOptions?) -> Promise{ + let queue = self.web3.requestDispatcher.queue + return self.assemblePromise(transactionOptions: transactionOptions).then(on: queue) { transaction throws -> Promise in + let mergedOptions = self.transactionOptions.merge(transactionOptions) + var cleanedOptions = TransactionOptions() + cleanedOptions.from = mergedOptions.from + cleanedOptions.to = mergedOptions.to + return self.web3.eth.sendTransactionPromise(transaction, transactionOptions: cleanedOptions, password: password) + } + } + + +} diff --git a/web3swift/Web3/Classes/Web3+Options.swift b/web3swift/Web3/Classes/Web3+Options.swift index 88b8028a9..a2f686ff6 100755 --- a/web3swift/Web3/Classes/Web3+Options.swift +++ b/web3swift/Web3/Classes/Web3+Options.swift @@ -1,9 +1,7 @@ +// web3swift // -// Web3+Options.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 26.02.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -145,3 +143,194 @@ public struct Web3Options { } } } + +/// Options for sending or calling a particular Ethereum transaction +public struct TransactionOptions { + /// Sets the transaction destination. It can either be a contract address or a private key controlled wallet address. + /// + /// Usually should never be nil. + public var to: EthereumAddress? = nil + /// Sets from what account a transaction should be sent. Used only internally as the sender of Ethereum transaction + /// is determined purely from the transaction signature. Indicates to the Ethereum node or to the local keystore what private key + /// should be used to sign a transaction. + /// + /// Can be nil if one reads the information from the blockchain. + public var from: EthereumAddress? = nil + + public enum GasLimitPolicy { + case automatic + case manual(BigUInt) + case limited(BigUInt) + case withMargin(Double) + } + public var gasLimit: GasLimitPolicy? + + public enum GasPricePolicy { + case automatic + case manual(BigUInt) + case withMargin(Double) + } + public var gasPrice: GasPricePolicy? + + public var value: BigUInt? = nil + + public enum NoncePolicy { + case pending + case latest + case manual(BigUInt) + } + public var nonce: NoncePolicy? + + public enum CallingBlockPolicy { + case pending + case latest + case exactBlockNumber(BigUInt) + + var stringValue: String { + switch self { + case .pending: + return "pending" + case .latest: + return "latest" + case .exactBlockNumber(let number): + return String(number, radix: 16).addHexPrefix() + } + } + } + public var callOnBlock: CallingBlockPolicy? + + public init() { + } + + public static var defaultOptions: TransactionOptions { + var opts = TransactionOptions() + opts.callOnBlock = .pending + opts.nonce = .pending + opts.gasLimit = .automatic + opts.gasPrice = .automatic + return opts + } + + public func resolveGasPrice(_ suggestedByNode: BigUInt) -> BigUInt? { + return suggestedByNode + } + + public func resolveGasLimit(_ suggestedByNode: BigUInt) -> BigUInt? { + return suggestedByNode + } + + public func merge(_ otherOptions: TransactionOptions?) -> TransactionOptions { + guard let other = otherOptions else {return self} + var opts = TransactionOptions() + opts.from = mergeIfNotNil(first: self.from, second: other.from) + opts.to = mergeIfNotNil(first: self.to, second: other.to) + opts.gasLimit = mergeIfNotNil(first: self.gasLimit, second: other.gasLimit) + opts.gasPrice = mergeIfNotNil(first: self.gasPrice, second: other.gasPrice) + opts.value = mergeIfNotNil(first: self.value, second: other.value) + opts.nonce = mergeIfNotNil(first: self.nonce, second: other.nonce) + opts.callOnBlock = mergeIfNotNil(first: self.callOnBlock, second: other.callOnBlock) + return opts + } + +// public static func fromJSON(_ json: [String: Any]) -> Web3Options? { +// var options = Web3Options() +// if let gas = json["gas"] as? String, let gasBiguint = BigUInt(gas.stripHexPrefix().lowercased(), radix: 16) { +// options.gasLimit = gasBiguint +// } +// if let gasPrice = json["gasPrice"] as? String, let gasPriceBiguint = BigUInt(gasPrice.stripHexPrefix().lowercased(), radix: 16) { +// options.gasPrice = gasPriceBiguint +// } +// if let value = json["value"] as? String, let valueBiguint = BigUInt(value.stripHexPrefix().lowercased(), radix: 16) { +// options.value = valueBiguint +// } +// if let fromString = json["from"] as? String { +// guard let addressFrom = EthereumAddress(fromString) else {return nil} +// options.from = addressFrom +// } +// return options +// } +// +// /// Merges two sets of topions by overriding the parameters from the first set by parameters from the second +// /// set if those are not nil. +// /// +// /// Returns default options if both parameters are nil. +// public static func merge(_ options:Web3Options?, with other:Web3Options?) -> Web3Options? { +// if (other == nil && options == nil) { +// return Web3Options.defaultOptions() +// } +// var newOptions = Web3Options.defaultOptions() +// if (other?.to != nil) { +// newOptions.to = other?.to +// } else { +// newOptions.to = options?.to +// } +// if (other?.from != nil) { +// newOptions.from = other?.from +// } else { +// newOptions.from = options?.from +// } +// if (other?.gasLimit != nil) { +// newOptions.gasLimit = other?.gasLimit +// } else { +// newOptions.gasLimit = options?.gasLimit +// } +// if (other?.gasPrice != nil) { +// newOptions.gasPrice = other?.gasPrice +// } else { +// newOptions.gasPrice = options?.gasPrice +// } +// if (other?.value != nil) { +// newOptions.value = other?.value +// } else { +// newOptions.value = options?.value +// } +// return newOptions +// } +// +// /// merges two sets of options along with a gas estimate to try to guess the final gas limit value required by user. +// /// +// /// Please refer to the source code for a logic. +// public static func smartMergeGasLimit(originalOptions: Web3Options?, extraOptions: Web3Options?, gasEstimate: BigUInt) -> BigUInt? { +// guard let mergedOptions = Web3Options.merge(originalOptions, with: extraOptions) else {return nil} //just require any non-nils +// if mergedOptions.gasLimit == nil { +// return gasEstimate // for user's convenience we just use an estimate +// // return nil // there is no opinion from user, so we can not proceed +// } else { +// if originalOptions != nil, originalOptions!.gasLimit != nil, originalOptions!.gasLimit! < gasEstimate { // original gas estimate was less than what's required, so we check extra options +// if extraOptions != nil, extraOptions!.gasLimit != nil, extraOptions!.gasLimit! >= gasEstimate { +// return extraOptions!.gasLimit! +// } else { +// return gasEstimate // for user's convenience we just use an estimate +// // return nil // estimate is lower than allowed +// } +// } else { +// if extraOptions != nil, extraOptions!.gasLimit != nil, extraOptions!.gasLimit! >= gasEstimate { +// return extraOptions!.gasLimit! +// } else { +// return gasEstimate // for user's convenience we just use an estimate +// // return nil // estimate is lower than allowed +// } +// } +// } +// } +// +// public static func smartMergeGasPrice(originalOptions: Web3Options?, extraOptions: Web3Options?, priceEstimate: BigUInt) -> BigUInt? { +// guard let mergedOptions = Web3Options.merge(originalOptions, with: extraOptions) else {return nil} //just require any non-nils +// if mergedOptions.gasPrice == nil { +// return priceEstimate +// } else if mergedOptions.gasPrice == 0 { +// return priceEstimate +// } else { +// return mergedOptions.gasPrice! +// } +// } +} + +fileprivate func mergeIfNotNil(first: T?, second: T?) -> T? { + if second != nil { + return second + } else if first != nil { + return first + } + return nil +} diff --git a/web3swift/Web3/Classes/Web3+Personal.swift b/web3swift/Web3/Classes/Web3+Personal.swift index af3b7f1be..2b9060899 100755 --- a/web3swift/Web3/Classes/Web3+Personal.swift +++ b/web3swift/Web3/Classes/Web3+Personal.swift @@ -1,9 +1,7 @@ -// -// Web3+Personal.swift // web3swift // -// Created by Alexander Vlasov on 14.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+Protocols.swift b/web3swift/Web3/Classes/Web3+Protocols.swift index 18cb29645..ac4a4d0e9 100755 --- a/web3swift/Web3/Classes/Web3+Protocols.swift +++ b/web3swift/Web3/Classes/Web3+Protocols.swift @@ -1,9 +1,7 @@ +// web3swift // -// Web3+Protocols.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 26.02.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+ReadingTransaction.swift b/web3swift/Web3/Classes/Web3+ReadingTransaction.swift new file mode 100644 index 000000000..e84e104b2 --- /dev/null +++ b/web3swift/Web3/Classes/Web3+ReadingTransaction.swift @@ -0,0 +1,84 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation +import BigInt +import PromiseKit +fileprivate typealias PromiseResult = PromiseKit.Result +import EthereumAddress + +public class ReadTransaction { + public var transaction:EthereumTransaction + public var contract: EthereumContract + public var method: String + public var transactionOptions: TransactionOptions = TransactionOptions.defaultOptions + + var web3: web3 + + public init (transaction: EthereumTransaction, web3 web3Instance: web3, contract: EthereumContract, method: String, transactionOptions: TransactionOptions?) { + self.transaction = transaction + self.web3 = web3Instance + self.contract = contract + self.method = method + self.transactionOptions = self.transactionOptions.merge(transactionOptions) + if self.web3.provider.network != nil { + self.transaction.chainID = self.web3.provider.network?.chainID + } + } + + public func callPromise(transactionOptions: TransactionOptions? = nil) -> Promise<[String: Any]> { + let assembledTransaction : EthereumTransaction = self.transaction + let queue = self.web3.requestDispatcher.queue + let returnPromise = Promise<[String:Any]> { seal in + let mergedOptions = self.transactionOptions.merge(transactionOptions) + var optionsForCall = TransactionOptions() + optionsForCall.from = mergedOptions.from + optionsForCall.to = mergedOptions.to + optionsForCall.value = mergedOptions.value + optionsForCall.callOnBlock = mergedOptions.callOnBlock + let callPromise : Promise = self.web3.eth.callPromise(assembledTransaction, transactionOptions: optionsForCall) + callPromise.done(on: queue) {(data:Data) throws in + do { + if (self.method == "fallback") { + let resultHex = data.toHexString().addHexPrefix() + seal.fulfill(["result": resultHex as Any]) + return + } + guard let decodedData = self.contract.decodeReturnData(self.method, data: data) else + { + throw Web3Error.processingError(desc: "Can not decode returned parameters") + } + seal.fulfill(decodedData) + } catch{ + seal.reject(error) + } + }.catch(on: queue) {err in + seal.reject(err) + } + } + return returnPromise + } + + public func estimateGasPromise(transactionOptions: TransactionOptions) -> Promise{ + let assembledTransaction : EthereumTransaction = self.transaction + let queue = self.web3.requestDispatcher.queue + let returnPromise = Promise { seal in + let mergedOptions = self.transactionOptions.merge(transactionOptions) + var optionsForGasEstimation = TransactionOptions() + optionsForGasEstimation.from = mergedOptions.from + optionsForGasEstimation.to = mergedOptions.to + optionsForGasEstimation.value = mergedOptions.value + optionsForGasEstimation.callOnBlock = mergedOptions.callOnBlock + let promise = self.web3.eth.estimateGasPromise(assembledTransaction, transactionOptions: optionsForGasEstimation) + promise.done(on: queue) {(estimate: BigUInt) in + seal.fulfill(estimate) + }.catch(on: queue) {err in + seal.reject(err) + } + } + return returnPromise + } +} diff --git a/web3swift/Web3/Classes/Web3+Structures.swift b/web3swift/Web3/Classes/Web3+Structures.swift index 09e4f561b..4aca8d629 100755 --- a/web3swift/Web3/Classes/Web3+Structures.swift +++ b/web3swift/Web3/Classes/Web3+Structures.swift @@ -1,8 +1,7 @@ +// web3swift // -// Web3+Structures.swift -// -// Created by Alexander Vlasov on 26.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift b/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift index f8f9c88ba..3b0885a26 100755 --- a/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift +++ b/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift @@ -1,9 +1,7 @@ +// web3swift // -// Web3+TransactionIntermediate.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 26.02.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -49,16 +47,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func send(password: String = "web3swift", options: Web3Options? = nil, onBlock: String = "pending") -> Result { - do { - let result = try self.sendPromise(password: password, options: options, onBlock: onBlock).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func send(password: String = "web3swift", options: Web3Options? = nil, onBlock: String = "pending") throws -> TransactionSendingResult { + let result = try self.sendPromise(password: password, options: options, onBlock: onBlock).wait() + return result } /** @@ -74,16 +65,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func call(options: Web3Options?, onBlock: String = "latest") -> Result<[String:Any], Web3Error> { - do { - let result = try self.callPromise(options: options, onBlock: onBlock).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func call(options: Web3Options?, onBlock: String = "latest") throws -> [String:Any] { + let result = try self.callPromise(options: options, onBlock: onBlock).wait() + return result } /** @@ -99,16 +83,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func estimateGas(options: Web3Options?, onBlock: String = "latest") -> Result { - do { - let result = try self.estimateGasPromise(options: options, onBlock: onBlock).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func estimateGas(options: Web3Options?, onBlock: String = "latest") throws -> BigUInt { + let result = try self.estimateGasPromise(options: options, onBlock: onBlock).wait() + return result } /** @@ -124,16 +101,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func assemble(options: Web3Options? = nil, onBlock: String = "pending") -> Result { - do { - let result = try self.assemblePromise(options: options, onBlock: onBlock).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func assemble(options: Web3Options? = nil, onBlock: String = "pending") throws -> EthereumTransaction { + let result = try self.assemblePromise(options: options, onBlock: onBlock).wait() + return result } } diff --git a/web3swift/Web3/Classes/Web3+TxPool.swift b/web3swift/Web3/Classes/Web3+TxPool.swift index 465fc255e..25ff46003 100644 --- a/web3swift/Web3/Classes/Web3+TxPool.swift +++ b/web3swift/Web3/Classes/Web3+TxPool.swift @@ -1,16 +1,13 @@ +// web3swift // -// Web3+TxPool.swift -// web3swift-iOS -// -// Created by Jun Park on 09/10/2018. -// Copyright © 2018 The Matter Inc. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation import Result import BigInt - extension web3.TxPool { public func getInspect() -> Result<[String:[String:[String:String]]], Web3Error> { do { diff --git a/web3swift/Web3/Classes/Web3+Utils.swift b/web3swift/Web3/Classes/Web3+Utils.swift index c94185dcd..2d8cd1dff 100755 --- a/web3swift/Web3/Classes/Web3+Utils.swift +++ b/web3swift/Web3/Classes/Web3+Utils.swift @@ -1,9 +1,7 @@ -// -// web3utils.swift // web3swift // -// Created by Alexander Vlasov on 18.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3.swift b/web3swift/Web3/Classes/Web3.swift index 59d548401..33ca06458 100755 --- a/web3swift/Web3/Classes/Web3.swift +++ b/web3swift/Web3/Classes/Web3.swift @@ -1,9 +1,7 @@ -// -// Web3.swift // web3swift // -// Created by Alexander Vlasov on 11.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swiftTests/web3swift_ABI_Tests.swift b/web3swiftTests/web3swift_ABI_Tests.swift deleted file mode 100755 index 2f6158ac2..000000000 --- a/web3swiftTests/web3swift_ABI_Tests.swift +++ /dev/null @@ -1,368 +0,0 @@ -// -// web3swiftABITests.swift -// web3swift-iOS_Tests -// -// Created by Георгий Фесенко on 02/07/2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. -// - -import XCTest -import BigInt - -@testable import web3swift_iOS - -class web3swift_ABI_Tests: XCTestCase { - - - func testRealABIv2() { - let jsonString = "[{\"constant\":true,\"inputs\":[],\"name\":\"getUsers\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"handle\",\"type\":\"string\"},{\"name\":\"city\",\"type\":\"bytes32\"},{\"name\":\"state\",\"type\":\"bytes32\"},{\"name\":\"country\",\"type\":\"bytes32\"}],\"name\":\"registerNewUser\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"SHA256notaryHash\",\"type\":\"bytes32\"}],\"name\":\"getImage\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"getUser\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"bytes32\"},{\"name\":\"\",\"type\":\"bytes32\"},{\"name\":\"\",\"type\":\"bytes32\"},{\"name\":\"\",\"type\":\"bytes32[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllImages\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"imageURL\",\"type\":\"string\"},{\"name\":\"SHA256notaryHash\",\"type\":\"bytes32\"}],\"name\":\"addImageToUser\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"userAddress\",\"type\":\"address\"}],\"name\":\"getUserImages\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" - do { - let jsonData = jsonString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in - return try record.parse() - }) - print(abiNative) - XCTAssert(abiNative.count > 0, "Can't parse some real-world ABI") - } catch { - XCTFail() - print(error) - } - } - - func testABIv2Parsing () { - let jsonString = "[{\"name\":\"f\",\"type\":\"function\",\"inputs\":[{\"name\":\"s\",\"type\":\"tuple\",\"components\":[{\"name\":\"a\",\"type\":\"uint256\"},{\"name\":\"b\",\"type\":\"uint256[]\"},{\"name\":\"c\",\"type\":\"tuple[]\",\"components\":[{\"name\":\"x\",\"type\":\"uint256\"},{\"name\":\"y\",\"type\":\"uint256\"}]}]},{\"name\":\"t\",\"type\":\"tuple\",\"components\":[{\"name\":\"x\",\"type\":\"uint256\"},{\"name\":\"y\",\"type\":\"uint256\"}]},{\"name\":\"a\",\"type\":\"uint256\"},{\"name\":\"z\",\"type\":\"uint256[3]\"}],\"outputs\":[]}]" - do { - let jsonData = jsonString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in - return try record.parse() - }) - print(abiNative) - XCTAssert(abiNative.count > 0, "Can't parse some real-world ABI") - } catch { - XCTFail() - print(error) - } - } - - func testABIdecoding2() { - let jsonString = "[{\"type\":\"function\",\"name\":\"balance\",\"constant\":true},{\"type\":\"function\",\"name\":\"send\",\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"test\",\"constant\":false,\"inputs\":[{\"name\":\"number\",\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"string\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"bool\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"address\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"uint64[2]\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint64[2]\"}]},{\"type\":\"function\",\"name\":\"uint64[]\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint64[]\"}]},{\"type\":\"function\",\"name\":\"foo\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"bar\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32\"},{\"name\":\"string\",\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"slice\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32[2]\"}]},{\"type\":\"function\",\"name\":\"slice256\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint256[2]\"}]},{\"type\":\"function\",\"name\":\"sliceAddress\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"address[]\"}]},{\"type\":\"function\",\"name\":\"sliceMultiAddress\",\"constant\":false,\"inputs\":[{\"name\":\"a\",\"type\":\"address[]\"},{\"name\":\"b\",\"type\":\"address[]\"}]}]" - do { - let jsonData = jsonString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in - return try record.parse() - }) - print(abiNative) - XCTAssert(true, "Failed to parse ABI") - } catch { - print(error) - XCTFail() - } - } - - func testABIv2decoding() { - let jsonString = "[{\"type\":\"constructor\",\"payable\":false,\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"testInt\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"foo\",\"constant\":false,\"payable\":false,\"stateMutability\":\"nonpayable\",\"inputs\":[{\"name\":\"b\",\"type\":\"uint256\"},{\"name\":\"c\",\"type\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\"}]},{\"type\":\"event\",\"name\":\"Event\",\"inputs\":[{\"indexed\":true,\"name\":\"b\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"c\",\"type\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Event2\",\"inputs\":[{\"indexed\":true,\"name\":\"b\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"c\",\"type\":\"bytes32\"}],\"anonymous\":false}]" - do { - let jsonData = jsonString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in - return try record.parse() - }) - print(abiNative) - XCTAssert(true, "Failed to parse ABI") - } catch { - print(error) - XCTFail() - } - } - - func testABIv2decoding2() { - let jsonString = "[{\"type\":\"function\",\"name\":\"balance\",\"constant\":true},{\"type\":\"function\",\"name\":\"send\",\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}]},{\"type\":\"function\",\"name\":\"test\",\"constant\":false,\"inputs\":[{\"name\":\"number\",\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"string\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"string\"}]},{\"type\":\"function\",\"name\":\"bool\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"bool\"}]},{\"type\":\"function\",\"name\":\"address\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"address\"}]},{\"type\":\"function\",\"name\":\"uint64[2]\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint64[2]\"}]},{\"type\":\"function\",\"name\":\"uint64[]\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint64[]\"}]},{\"type\":\"function\",\"name\":\"foo\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32\"}]},{\"type\":\"function\",\"name\":\"bar\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32\"},{\"name\":\"string\",\"type\":\"uint16\"}]},{\"type\":\"function\",\"name\":\"slice\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint32[2]\"}]},{\"type\":\"function\",\"name\":\"slice256\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"uint256[2]\"}]},{\"type\":\"function\",\"name\":\"sliceAddress\",\"constant\":false,\"inputs\":[{\"name\":\"inputs\",\"type\":\"address[]\"}]},{\"type\":\"function\",\"name\":\"sliceMultiAddress\",\"constant\":false,\"inputs\":[{\"name\":\"a\",\"type\":\"address[]\"},{\"name\":\"b\",\"type\":\"address[]\"}]}]" - do { - let jsonData = jsonString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in - return try record.parse() - }) - print(abiNative) - XCTAssert(true, "Failed to parse ABI") - } catch { - print(error) - XCTFail() - } - } - - func testABIv2encoding1() - { - // var a = abi.methodID('baz', [ 'uint32', 'bool' ]).toString('hex') + abi.rawEncode([ 'uint32', 'bool' ], [ 69, 1 ]).toString('hex') - // var b = 'cdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001' - // - let types = [ - ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.uint(bits: 32)), - ABIv2.Element.InOut(name: "2", type: ABIv2.Element.ParameterType.bool) - ] - let data = ABIv2Encoder.encode(types: types, values: [BigUInt(69), true] as [AnyObject]) - XCTAssert(data != nil, "failed to encode") - let expected = "0x00000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001" - print(data!.toHexString().lowercased()) - XCTAssert(data?.toHexString().lowercased().addHexPrefix() == expected, "failed to encode") - } - - func testABIv2encoding2() - { - let types = [ - ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.string) - ] - let data = ABIv2Encoder.encode(types: types, values: ["dave"] as [AnyObject]) - XCTAssert(data != nil, "failed to encode") - let expected = "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000046461766500000000000000000000000000000000000000000000000000000000" - print(data!.toHexString().lowercased()) - XCTAssert(data?.toHexString().lowercased().addHexPrefix() == expected, "failed to encode") - } - - func testABIv2encoding3() - { - // var a = abi.methodID('sam', [ 'bytes', 'bool', 'uint256[]' ]).toString('hex') + abi.rawEncode([ 'bytes', 'bool', 'uint256[]' ], [ 'dave', true, [ 1, 2, 3 ] ]).toString('hex') - // var b = 'a5643bf20000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000464617665000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003' - let types = [ - ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.dynamicBytes), - ABIv2.Element.InOut(name: "2", type: ABIv2.Element.ParameterType.bool), - ABIv2.Element.InOut(name: "3", type: ABIv2.Element.ParameterType.array(type: .uint(bits: 256), length: 0)) - ] - - let data = ABIv2Encoder.encode(types: types, values: ["dave".data(using: .utf8)!, true, [BigUInt(1), BigUInt(2), BigUInt(3)] ] as [AnyObject]) - XCTAssert(data != nil, "failed to encode") - let expected = "0x0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000464617665000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003" - print(data!.toHexString().lowercased()) - XCTAssert(data?.toHexString().lowercased().addHexPrefix() == expected, "failed to encode") - } - - func testABIv2encoding4() - { - // var a = abi.rawEncode([ 'int256' ], [ new BN('-19999999999999999999999999999999999999999999999999999999999999', 10) ]).toString('hex') - // var b = 'fffffffffffff38dd0f10627f5529bdb2c52d4846810af0ac000000000000001' - - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.int(bits: 256))] - let number = BigInt("-19999999999999999999999999999999999999999999999999999999999999", radix: 10) - let data = ABIv2Encoder.encode(types: types, - values: [number!] as [AnyObject]) - XCTAssert(data != nil, "failed to encode") - let expected = "0xfffffffffffff38dd0f10627f5529bdb2c52d4846810af0ac000000000000001" - let result = data?.toHexString().lowercased().addHexPrefix() - print(result) - XCTAssert(result == expected, "failed to encode") - } - - func testABIv2encoding5() - { - // var a = abi.rawEncode([ 'string' ], [ ' hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world' ]).toString('hex') - // var b = '000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c22068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c64202068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c64202068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c64000000000000000000000000000000000000000000000000000000000000' - - let string = " hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.string)] - let data = ABIv2Encoder.encode(types: types, - values: [string] as [AnyObject]) - XCTAssert(data != nil, "failed to encode") - let expected = "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c22068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c64202068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c64202068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c642068656c6c6f20776f726c64000000000000000000000000000000000000000000000000000000000000" - print(data?.toHexString().lowercased().addHexPrefix()) - XCTAssert(data?.toHexString().lowercased().addHexPrefix() == expected, "failed to encode") - } - - func testABIv2encoding6() - { - // var a = abi.methodID('f', [ 'uint', 'uint32[]', 'bytes10', 'bytes' ]).toString('hex') + abi.rawEncode([ 'uint', 'uint32[]', 'bytes10', 'bytes' ], [ 0x123, [ 0x456, 0x789 ], '1234567890', 'Hello, world!' ]).toString('hex') - // var b = '8be6524600000000000000000000000000000000000000000000000000000000000001230000000000000000000000000000000000000000000000000000000000000080313233343536373839300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004560000000000000000000000000000000000000000000000000000000000000789000000000000000000000000000000000000000000000000000000000000000d48656c6c6f2c20776f726c642100000000000000000000000000000000000000' - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.uint(bits: 256)), - ABIv2.Element.InOut(name: "2", type: ABIv2.Element.ParameterType.array(type: .uint(bits: 32), length: 0)), - ABIv2.Element.InOut(name: "3", type: ABIv2.Element.ParameterType.bytes(length: 10)), - ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.dynamicBytes) - ] - let data = ABIv2Encoder.encode(types: types, - values: [BigUInt("123", radix: 16)!, - [BigUInt("456", radix: 16)!, BigUInt("789", radix: 16)!] as [AnyObject], - "1234567890", - "Hello, world!"] as [AnyObject]) - XCTAssert(data != nil, "failed to encode") - let expected = "0x00000000000000000000000000000000000000000000000000000000000001230000000000000000000000000000000000000000000000000000000000000080313233343536373839300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000004560000000000000000000000000000000000000000000000000000000000000789000000000000000000000000000000000000000000000000000000000000000d48656c6c6f2c20776f726c642100000000000000000000000000000000000000" - print(data!.toHexString().lowercased()) - XCTAssert(data?.toHexString().lowercased().addHexPrefix() == expected, "failed to encode") - } - - func testABIv2encoding7() - { - let types = [ - ABIv2.Element.InOut(name: "2", type: ABIv2.Element.ParameterType.array(type: .string, length: 0)) - ] - let data = ABIv2Encoder.encode(types: types, - values: [["Hello", "World"]] as [AnyObject]) - XCTAssert(data != nil, "failed to encode") - let expected = "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005576f726c64000000000000000000000000000000000000000000000000000000" - print(data!.toHexString().lowercased()) - XCTAssert(data?.toHexString().lowercased() == expected, "failed to encode") - } - - func testABIv2encoding8() - { - let types = [ - ABIv2.Element.InOut(name: "2", type: ABIv2.Element.ParameterType.array(type: .string, length: 2)) - ] - let data = ABIv2Encoder.encode(types: types, - values: [["Hello", "World"]] as [AnyObject]) - XCTAssert(data != nil, "failed to encode") - let expected = "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000548656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005576f726c64000000000000000000000000000000000000000000000000000000" - print(data!.toHexString().lowercased()) - XCTAssert(data?.toHexString().lowercased() == expected, "failed to encode") - } - - - - func testABIv2Decoding1() { - let data = "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000000000000000000000000000000000000000003" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.array(type: .uint(bits: 256), length: 2)), - ABIv2.Element.InOut(name: "2", type: ABIv2.Element.ParameterType.uint(bits: 256))] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == 2) - guard let firstElement = result[0] as? [BigUInt] else {return XCTFail()} - XCTAssert(firstElement.count == 2) - guard let secondElement = result[1] as? BigUInt else {return XCTFail()} - XCTAssert(firstElement[0] == BigUInt(1)) - XCTAssert(firstElement[1] == BigUInt(92)) - XCTAssert(secondElement == BigUInt(3)) - } - - func testABIv2Decoding2() { - let data = "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.array(type: .uint(bits: 256), length: 0))] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == 1) - guard let firstElement = result[0] as? [BigUInt] else {return XCTFail()} - XCTAssert(firstElement.count == 3) - XCTAssert(firstElement[0] == BigUInt(1)) - XCTAssert(firstElement[1] == BigUInt(2)) - XCTAssert(firstElement[2] == BigUInt(3)) - } - - func testABIv2Decoding3() { - let data = "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.dynamicBytes)] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == 1) - guard let firstElement = result[0] as? Data else {return XCTFail()} - XCTAssert(firstElement.count == 11) - } - - func testABIv2Decoding4() { - let data = "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000b68656c6c6f20776f726c64000000000000000000000000000000000000000000" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.string)] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == 1) - guard let firstElement = result[0] as? String else {return XCTFail()} - XCTAssert(firstElement == "hello world") - } - - func testABIv2Decoding5() { - let data = "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.int(bits: 32))] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == 1) - guard let firstElement = result[0] as? BigInt else {return XCTFail()} - XCTAssert(firstElement == BigInt(-2)) - } - - func testABIv2Decoding6() { - let data = "ffffffffffffffffffffffffffffffffffffffffffffffffffffb29c26f344fe" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.int(bits: 64))] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == 1) - guard let firstElement = result[0] as? BigInt else {return XCTFail()} - XCTAssert(firstElement == BigInt("-85091238591234")!) - } - - func testABIv2Decoding7() { - let data = "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002a" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.bool), - ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.uint(bits: 32))] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == types.count) - guard let firstElement = result[0] as? Bool else {return XCTFail()} - XCTAssert(firstElement == true) - guard let secondElement = result[1] as? BigUInt else {return XCTFail()} - XCTAssert(secondElement == 42) - } - - func testABIv2Decoding8() { - let data = "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002a" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.bool), - ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.array(type: .uint(bits: 256), length: 0))] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == types.count) - guard let firstElement = result[0] as? Bool else {return XCTFail()} - XCTAssert(firstElement == true) - guard let secondElement = result[1] as? [BigUInt] else {return XCTFail()} - XCTAssert(secondElement.count == 1) - XCTAssert(secondElement[0] == 42) - } - - func testABIv2Decoding9() { - let data = "0000000000000000000000000000000000000000000000000000000000000020" + - "0000000000000000000000000000000000000000000000000000000000000002" + - "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c1" + - "000000000000000000000000407d73d8a49eeb85d32cf465507dd71d507100c3" - let types = [ABIv2.Element.InOut(name: "1", type: ABIv2.Element.ParameterType.array(type: .address, length: 0))] - let res = ABIv2Decoder.decode(types: types, data: Data.fromHex(data)!) - guard let result = res else {return XCTFail()} - XCTAssert(result.count == types.count) - guard let firstElement = result[0] as? [EthereumAddress] else {return XCTFail()} - XCTAssert(firstElement.count == 2) - XCTAssert(firstElement[0].address.lowercased().stripHexPrefix() == "407d73d8a49eeb85d32cf465507dd71d507100c1") - XCTAssert(firstElement[1].address.lowercased().stripHexPrefix() == "407d73d8a49eeb85d32cf465507dd71d507100c3") - } - - - -// func testABIparsing1() -// { -// let typeString = "uint256[2][3]" -// let type = try! ABITypeParser.parseTypeString(typeString) -// switch type { -// case .staticABIType(let unwrappedType): -// switch unwrappedType{ -// case .array(_, length: let length): -// XCTAssert(length == 3, "Failed to parse") -// default: -// XCTFail() -// } -// case .dynamicABIType(_): -// XCTFail() -// -// } -// } -// -// func testABIparsing2() -// { -// let typeString = "uint256[2][]" -// let type = try! ABITypeParser.parseTypeString(typeString) -// switch type { -// case .staticABIType(_): -// XCTFail() -// case .dynamicABIType(let unwrappedType): -// switch unwrappedType{ -// case .dynamicArray(_): -// XCTAssert(true) -// default: -// XCTFail() -// } -// } -// } - -} From fa38a7a53fd0d76f1b862cf0a760c5743c0dc46a Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Mon, 29 Oct 2018 21:07:30 +0300 Subject: [PATCH 02/16] - Add extra check to not transact to the non-mutating function --- .../Classes/Web3+MutatingTransaction.swift | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift index 1943d6072..a1fe0d4ff 100644 --- a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift +++ b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift @@ -16,6 +16,26 @@ public class WriteTransaction: ReadTransaction { var assembledTransaction : EthereumTransaction = self.transaction let queue = self.web3.requestDispatcher.queue let returnPromise = Promise { seal in + if self.method != "fallback" { + let m = self.contract.methods[self.method] + if m == nil { + seal.reject(Web3Error.inputError(desc: "Contract's ABI does not have such method")) + return + } + switch m! { + case .function(let function): + if function.constant { + seal.reject(Web3Error.inputError(desc: "Trying to transact to the constant function")) + return + } + case .constructor(_): + break + default: + seal.reject(Web3Error.inputError(desc: "Contract's ABI does not have such method")) + return + } + } + var mergedOptions = self.transactionOptions.merge(transactionOptions) var forAssemblyPipeline : (EthereumTransaction, EthereumContract, TransactionOptions) = (assembledTransaction, self.contract, mergedOptions) From 23d47bbdd1a7c6b541a4c1b1e0d1766d9dbbd006 Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Tue, 30 Oct 2018 01:02:10 +0300 Subject: [PATCH 03/16] - Start fixing tests one by one --- web3swift.xcodeproj/project.pbxproj | 38 +-- .../Classes/ComparisonExtensions.swift | 6 +- .../EthereumFilterEncodingExtensions.swift | 6 +- .../Contract/Classes/EventFiltering.swift | 6 +- .../Convenience/Classes/Array+Extension.swift | 6 +- web3swift/Convenience/Classes/Base58.swift | 6 +- .../Classes/CryptoExtensions.swift | 9 +- .../Convenience/Classes/Data+Extension.swift | 7 +- .../Classes/Dictionary+Extension.swift | 6 +- .../NSRegularExpressionExtension.swift | 6 +- .../NativeTypesEncoding+Extensions.swift | 6 +- .../Classes/String+Extension.swift | 8 +- .../Classes/Web3+BrowserFunctions.swift | 8 +- .../HookedFunctions/Classes/Web3+Wallet.swift | 7 +- .../Classes/AbstractKeystore.swift | 6 +- .../KeystoreManager/Classes/BIP32HDNode.swift | 6 +- .../Classes/BIP32Keystore.swift | 7 +- .../Classes/BIP32KeystoreJSONStructure.swift | 6 +- .../Classes/BIP39+WordLists.swift | 6 +- web3swift/KeystoreManager/Classes/BIP39.swift | 6 +- .../Classes/EthereumKeystoreV3.swift | 6 +- web3swift/KeystoreManager/Classes/IBAN.swift | 6 +- .../Classes/KeystoreManager.swift | 6 +- .../Classes/KeystoreV3JSONStructure.swift | 6 +- .../Classes/PlainKeystore.swift | 6 +- .../Classes/BigUInt+ObjC.swift | 6 +- .../Classes/EthereumAddress+ObjC.swift | 6 +- .../JSONRPCrequestDispatcher+ObjC.swift | 8 +- .../Classes/KeystoreManager+ObjC.swift | 6 +- .../Classes/PlainKeystore+ObjC.swift | 6 +- .../Classes/Web3+Eth+ObjC.swift | 6 +- .../Classes/Web3+HttpProvider+ObjC.swift | 6 +- .../Classes/Web3+Instance+ObjC.swift | 6 +- .../ObjectiveCbridge/Classes/Web3+ObjC.swift | 6 +- .../ERC20/Web3+ERC20.swift | 4 +- .../ERC721/Web3+ERC721.swift | 8 +- .../Transaction/Classes/BloomFilter.swift | 29 +-- .../Classes/EthereumTransaction.swift | 6 +- .../Classes/TransactionSigner.swift | 8 +- web3swift/Utils/Classes/EIP67Code.swift | 6 +- web3swift/Utils/Classes/EIP681.swift | 6 +- web3swift/Utils/Classes/ENS.swift | 5 +- web3swift/Utils/Classes/ENSResolver.swift | 8 +- web3swift/Utils/Classes/NameHash.swift | 6 +- web3swift/Web3/Classes/Web3+Contract.swift | 30 ++- web3swift/Web3/Classes/Web3+Eth.swift | 231 +++++++++--------- .../Classes/Web3+MutatingTransaction.swift | 4 +- web3swift/Web3/Classes/Web3+Options.swift | 25 +- .../Classes/Web3+ReadingTransaction.swift | 2 +- web3swiftTests/web3swift_User_cases.swift | 98 +++----- web3swiftTests/web3swift_infura_Tests.swift | 87 +++---- 51 files changed, 336 insertions(+), 475 deletions(-) diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index ff7b9ece6..b97684f5c 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -7,15 +7,10 @@ objects = { /* Begin PBXBuildFile section */ - 00E5FE7620EA34370030E0D6 /* web3swift_keystores_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7520EA34370030E0D6 /* web3swift_keystores_Tests.swift */; }; - 00E5FE7A20EA355D0030E0D6 /* web3swift_transactions_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7920EA355D0030E0D6 /* web3swift_transactions_Tests.swift */; }; - 00E5FE7C20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7B20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift */; }; - 00E5FE8020EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7F20EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift */; }; 00E5FE8220EA3FF40030E0D6 /* web3swift_infura_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE8120EA3FF40030E0D6 /* web3swift_infura_Tests.swift */; }; 13AE5971A972F5B55FA6FB69 /* libPods-web3swift-iOS_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8349531F1984454E50389370 /* libPods-web3swift-iOS_Tests.a */; }; 1CB818902160868000726CF8 /* key.json in Resources */ = {isa = PBXBuildFile; fileRef = 1CB8188F2160867700726CF8 /* key.json */; }; 1CB818912160871000726CF8 /* key.json in Resources */ = {isa = PBXBuildFile; fileRef = 1CB8188F2160867700726CF8 /* key.json */; }; - 1CD91B321FD769A6007BFB45 /* web3swift_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD91B311FD769A6007BFB45 /* web3swift_Tests.swift */; }; 1CD91B341FD769A6007BFB45 /* web3swift_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CD91AFC1FD76910007BFB45 /* web3swift_iOS.framework */; }; 4194811B203630530065A83B /* Web3+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB142004FE4200E02EAA /* Web3+HttpProvider.swift */; }; 4194811E203630530065A83B /* Web3.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81DDECCE1FDF004E0063684A /* Web3.swift */; }; @@ -45,8 +40,6 @@ 41948140203630530065A83B /* Array+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8123E1CA200CBB2200B6D3AB /* Array+Extension.swift */; }; 41948141203630530065A83B /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8113D2FF1FD7F30F0074282C /* String+Extension.swift */; }; 4B900282EFA99F16100CC958 /* libPods-web3swift-macOS_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8675751D91DB2DBC9E7A3469 /* libPods-web3swift-macOS_Tests.a */; }; - 4EFFCB6E208552F2008165FE /* web3swift_local_node_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EFFCB6D208552F2008165FE /* web3swift_local_node_Tests.swift */; }; - 4EFFCB70208554EB008165FE /* web3swift_remoteParsing_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EFFCB6F208554EB008165FE /* web3swift_remoteParsing_Tests.swift */; }; 64CF114189285D8E240C4985 /* libPods-web3swift-iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A5E8AF69880F5141B4AC9DF0 /* libPods-web3swift-iOS.a */; }; 8103BBCC2077B84400499769 /* PlainKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8103BBCB2077B84400499769 /* PlainKeystore.swift */; }; 8103BBCD2077B84400499769 /* PlainKeystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8103BBCB2077B84400499769 /* PlainKeystore.swift */; }; @@ -71,8 +64,6 @@ 815630002007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81562FFF2007B48800A0EC2F /* BIP32KeystoreJSONStructure.swift */; }; 815630022007B53C00A0EC2F /* BIP32Keystore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815630012007B53C00A0EC2F /* BIP32Keystore.swift */; }; 815630042007BC8F00A0EC2F /* BIP39+WordLists.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815630032007BC8F00A0EC2F /* BIP39+WordLists.swift */; }; - 8159C50E2135901700197B91 /* web3swift_ERC20_Class_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8159C50D2135901700197B91 /* web3swift_ERC20_Class_Tests.swift */; }; - 815C74C820ECBF3E00DE2AC4 /* web3swift_User_cases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815C74C720ECBF3E00DE2AC4 /* web3swift_User_cases.swift */; }; 8160E5CE20B8245A0070070B /* IBAN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8160E5CD20B8245A0070070B /* IBAN.swift */; }; 8160E5CF20B8245A0070070B /* IBAN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8160E5CD20B8245A0070070B /* IBAN.swift */; }; 817EBB122004FE2F00E02EAA /* BIP32HDNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 817EBB112004FE2F00E02EAA /* BIP32HDNode.swift */; }; @@ -92,11 +83,11 @@ 81909D1621862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1421862D37007D2AE5 /* Web3+MutatingTransaction.swift */; }; 81909D1821862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */; }; 81909D1921862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */; }; + 81909D1B2187B1FA007D2AE5 /* web3swift_User_cases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815C74C720ECBF3E00DE2AC4 /* web3swift_User_cases.swift */; }; 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */; }; 81A1821B20D5A6F80016741F /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */; }; - 81A1821D20D5C6C10016741F /* web3swift_promises_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821C20D5C6C10016741F /* web3swift_promises_Tests.swift */; }; 81A1821F20D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821E20D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift */; }; 81A1822020D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821E20D676BC0016741F /* Promise+Web3+Eth+GetTransactionCount.swift */; }; 81A1822220D678060016741F /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1822120D678060016741F /* Promise+Web3+Eth+GetBlockNumber.swift */; }; @@ -130,8 +121,6 @@ 81A1824C20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1824A20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift */; }; 81A7B2512143C3A8004CD2C7 /* NameHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2502143C3A8004CD2C7 /* NameHash.swift */; }; 81A7B2522143C3A8004CD2C7 /* NameHash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2502143C3A8004CD2C7 /* NameHash.swift */; }; - 81A7B2792143C978004CD2C7 /* web3swift_ENS_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2782143C978004CD2C7 /* web3swift_ENS_Tests.swift */; }; - 81A7B28A2143DF1D004CD2C7 /* web3swift_EIP681_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2892143DF1D004CD2C7 /* web3swift_EIP681_Tests.swift */; }; 81C0FCF220440EB500D82FAF /* Web3+Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF120440EB500D82FAF /* Web3+Protocols.swift */; }; 81C0FCF420440F0900D82FAF /* Web3+Options.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF320440F0900D82FAF /* Web3+Options.swift */; }; 81C0FCF720441A1D00D82FAF /* TransactionSigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */; }; @@ -162,7 +151,6 @@ 81FB21FF207BB297007F9A83 /* EIP67Code.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FB21F8207BA78B007F9A83 /* EIP67Code.swift */; }; 81FB2201207BC58C007F9A83 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81FB2200207BC58B007F9A83 /* CoreImage.framework */; }; 81FB2203207BC6DB007F9A83 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81FB2202207BC6DB007F9A83 /* ImageIO.framework */; }; - 81FECD5E211AEFCE006DA367 /* web3swift_ObjC_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FECD5D211AEFCE006DA367 /* web3swift_ObjC_Tests.swift */; }; 985BFD4A216CE8B100B28C14 /* Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */; }; 985BFD4E216E2E0A00B28C14 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */; }; B350A445E5DB35C60E59AD70 /* libPods-web3swift-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 57F8C9C48884592DCF561393 /* libPods-web3swift-macOS.a */; }; @@ -170,11 +158,6 @@ E2065FB92181D7D700701068 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81195AAF20D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift */; }; E2065FBA2181D7D700701068 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */; }; E2065FBB2181D7D700701068 /* Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */; }; - E23B5ADB20EA67D800DC7F32 /* web3swift_AdvancedABIv2_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5ADA20EA67D800DC7F32 /* web3swift_AdvancedABIv2_Tests.swift */; }; - E23B5ADD20EA685D00DC7F32 /* web3swift_EIP67_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5ADC20EA685D00DC7F32 /* web3swift_EIP67_Tests.swift */; }; - E23B5AE120EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE020EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift */; }; - E23B5AE320EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE220EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift */; }; - E23B5AE520EA6A0A00DC7F32 /* web3swift_contractV2_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE420EA6A0A00DC7F32 /* web3swift_contractV2_Tests.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1083,25 +1066,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 815C74C820ECBF3E00DE2AC4 /* web3swift_User_cases.swift in Sources */, - 8159C50E2135901700197B91 /* web3swift_ERC20_Class_Tests.swift in Sources */, - E23B5AE520EA6A0A00DC7F32 /* web3swift_contractV2_Tests.swift in Sources */, - E23B5AE120EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift in Sources */, - E23B5ADB20EA67D800DC7F32 /* web3swift_AdvancedABIv2_Tests.swift in Sources */, - 81A7B28A2143DF1D004CD2C7 /* web3swift_EIP681_Tests.swift in Sources */, - 4EFFCB70208554EB008165FE /* web3swift_remoteParsing_Tests.swift in Sources */, - 00E5FE7C20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift in Sources */, - E23B5AE320EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift in Sources */, - 00E5FE7A20EA355D0030E0D6 /* web3swift_transactions_Tests.swift in Sources */, - 00E5FE7620EA34370030E0D6 /* web3swift_keystores_Tests.swift in Sources */, - 00E5FE8020EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift in Sources */, - 4EFFCB6E208552F2008165FE /* web3swift_local_node_Tests.swift in Sources */, - 81A1821D20D5C6C10016741F /* web3swift_promises_Tests.swift in Sources */, - 81FECD5E211AEFCE006DA367 /* web3swift_ObjC_Tests.swift in Sources */, - E23B5ADD20EA685D00DC7F32 /* web3swift_EIP67_Tests.swift in Sources */, 00E5FE8220EA3FF40030E0D6 /* web3swift_infura_Tests.swift in Sources */, - 1CD91B321FD769A6007BFB45 /* web3swift_Tests.swift in Sources */, - 81A7B2792143C978004CD2C7 /* web3swift_ENS_Tests.swift in Sources */, + 81909D1B2187B1FA007D2AE5 /* web3swift_User_cases.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/web3swift/Contract/Classes/ComparisonExtensions.swift b/web3swift/Contract/Classes/ComparisonExtensions.swift index a0a72f018..d11da016b 100755 --- a/web3swift/Contract/Classes/ComparisonExtensions.swift +++ b/web3swift/Contract/Classes/ComparisonExtensions.swift @@ -1,9 +1,7 @@ -// -// ComparisonExtensions.swift // web3swift // -// Created by Alexander Vlasov on 09.05.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift b/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift index 8abf520b1..e818b94fd 100755 --- a/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift +++ b/web3swift/Contract/Classes/EthereumFilterEncodingExtensions.swift @@ -1,9 +1,7 @@ -// -// EthereumStringEncodingExtensions.swift // web3swift // -// Created by Alexander Vlasov on 09.05.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Contract/Classes/EventFiltering.swift b/web3swift/Contract/Classes/EventFiltering.swift index 0a31f66d2..d45d0e1c6 100755 --- a/web3swift/Contract/Classes/EventFiltering.swift +++ b/web3swift/Contract/Classes/EventFiltering.swift @@ -1,9 +1,7 @@ -// -// EventFiltering.swift // web3swift // -// Created by Alexander Vlasov on 11.05.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Convenience/Classes/Array+Extension.swift b/web3swift/Convenience/Classes/Array+Extension.swift index 1f61aa666..3fc7e80f2 100755 --- a/web3swift/Convenience/Classes/Array+Extension.swift +++ b/web3swift/Convenience/Classes/Array+Extension.swift @@ -1,9 +1,7 @@ -// -// Array+Extension.swift // web3swift // -// Created by Alexander Vlasov on 15.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Convenience/Classes/Base58.swift b/web3swift/Convenience/Classes/Base58.swift index 69774d14e..6e0accdc3 100755 --- a/web3swift/Convenience/Classes/Base58.swift +++ b/web3swift/Convenience/Classes/Base58.swift @@ -1,9 +1,7 @@ -// -// Base58.swift // web3swift // -// Created by Alexander Vlasov on 10.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Convenience/Classes/CryptoExtensions.swift b/web3swift/Convenience/Classes/CryptoExtensions.swift index a1bcf0e9d..ae389d0df 100755 --- a/web3swift/Convenience/Classes/CryptoExtensions.swift +++ b/web3swift/Convenience/Classes/CryptoExtensions.swift @@ -1,13 +1,10 @@ -// -// CryptoExtensions.swift // web3swift // -// Created by Alexander Vlasov on 04.12.2017. -// Copyright © 2017 Alexander Vlasov. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation -//import libsodium import scrypt func toByteArray(_ value: T) -> [UInt8] { @@ -15,7 +12,7 @@ func toByteArray(_ value: T) -> [UInt8] { return withUnsafeBytes(of: &value) { Array($0) } } -public func scrypt (password: String, salt: Data, length: Int, N: Int, R: Int, P: Int) -> Data? { +func scrypt (password: String, salt: Data, length: Int, N: Int, R: Int, P: Int) -> Data? { guard let passwordData = password.data(using: .utf8) else {return nil} guard let deriver = try? Scrypt(password: passwordData.bytes, salt: salt.bytes, dkLen: length, N: N, r: R, p: P) else {return nil} guard let result = try? deriver.calculate() else {return nil} diff --git a/web3swift/Convenience/Classes/Data+Extension.swift b/web3swift/Convenience/Classes/Data+Extension.swift index e23cd4dc6..c68fc04e7 100755 --- a/web3swift/Convenience/Classes/Data+Extension.swift +++ b/web3swift/Convenience/Classes/Data+Extension.swift @@ -1,13 +1,10 @@ -// -// Data+Extension.swift // web3swift // -// Created by Alexander Vlasov on 15.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation -//import libsodium public extension Data { diff --git a/web3swift/Convenience/Classes/Dictionary+Extension.swift b/web3swift/Convenience/Classes/Dictionary+Extension.swift index 3253247c7..ee1a68133 100755 --- a/web3swift/Convenience/Classes/Dictionary+Extension.swift +++ b/web3swift/Convenience/Classes/Dictionary+Extension.swift @@ -1,9 +1,7 @@ -// -// Dictionary+Extension.swift // web3swift // -// Created by Alexander Vlasov on 15.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Convenience/Classes/NSRegularExpressionExtension.swift b/web3swift/Convenience/Classes/NSRegularExpressionExtension.swift index 31cb7ed06..1b511a627 100755 --- a/web3swift/Convenience/Classes/NSRegularExpressionExtension.swift +++ b/web3swift/Convenience/Classes/NSRegularExpressionExtension.swift @@ -1,9 +1,7 @@ -// -// NSRegularExpressionExtension.swift // web3swift // -// Created by Alexander Vlasov on 06.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // diff --git a/web3swift/Convenience/Classes/NativeTypesEncoding+Extensions.swift b/web3swift/Convenience/Classes/NativeTypesEncoding+Extensions.swift index 7f4841d2a..725c0ba0c 100755 --- a/web3swift/Convenience/Classes/NativeTypesEncoding+Extensions.swift +++ b/web3swift/Convenience/Classes/NativeTypesEncoding+Extensions.swift @@ -1,9 +1,7 @@ -// -// NativeTypesEncoding+Extensions.swift // web3swift // -// Created by Alexander Vlasov on 03.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Convenience/Classes/String+Extension.swift b/web3swift/Convenience/Classes/String+Extension.swift index 7694838c9..a40cc173e 100755 --- a/web3swift/Convenience/Classes/String+Extension.swift +++ b/web3swift/Convenience/Classes/String+Extension.swift @@ -1,9 +1,7 @@ +// web3swift // -// String+Extension.swift -// web3swift-iOS -// -// Created by Alexander Vlasov. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift b/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift index c8ace71a2..28ad05158 100755 --- a/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift +++ b/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift @@ -1,9 +1,7 @@ +// web3swift // -// Web3+BrowserFunctions.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 26.02.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/HookedFunctions/Classes/Web3+Wallet.swift b/web3swift/HookedFunctions/Classes/Web3+Wallet.swift index bee0783c2..887b361f8 100755 --- a/web3swift/HookedFunctions/Classes/Web3+Wallet.swift +++ b/web3swift/HookedFunctions/Classes/Web3+Wallet.swift @@ -1,10 +1,9 @@ -// -// Web3+HookedWallet.swift // web3swift // -// Created by Alexander Vlasov on 07.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // + import Foundation import BigInt import Result diff --git a/web3swift/KeystoreManager/Classes/AbstractKeystore.swift b/web3swift/KeystoreManager/Classes/AbstractKeystore.swift index 11a5c0bda..72f72a15d 100755 --- a/web3swift/KeystoreManager/Classes/AbstractKeystore.swift +++ b/web3swift/KeystoreManager/Classes/AbstractKeystore.swift @@ -1,9 +1,7 @@ -// -// AbstractKeystore.swift // web3swift // -// Created by Alexander Vlasov on 10.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/BIP32HDNode.swift b/web3swift/KeystoreManager/Classes/BIP32HDNode.swift index cc62cf6c4..9a9c89bd0 100755 --- a/web3swift/KeystoreManager/Classes/BIP32HDNode.swift +++ b/web3swift/KeystoreManager/Classes/BIP32HDNode.swift @@ -1,9 +1,7 @@ -// -// BIP32HDwallet.swift // web3swift // -// Created by Alexander Vlasov on 09.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/BIP32Keystore.swift b/web3swift/KeystoreManager/Classes/BIP32Keystore.swift index a88460346..a2ca855e1 100755 --- a/web3swift/KeystoreManager/Classes/BIP32Keystore.swift +++ b/web3swift/KeystoreManager/Classes/BIP32Keystore.swift @@ -1,9 +1,7 @@ -// -// BIP32Keystore.swift // web3swift // -// Created by Alexander Vlasov on 11.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -46,7 +44,6 @@ public class BIP32Keystore: AbstractKeystore { // -------------- public var keystoreParams: KeystoreParamsBIP32? -// public var mnemonics: String? public var paths: [String:EthereumAddress] = [String:EthereumAddress]() public var rootPrefix: String public convenience init?(_ jsonString: String) { diff --git a/web3swift/KeystoreManager/Classes/BIP32KeystoreJSONStructure.swift b/web3swift/KeystoreManager/Classes/BIP32KeystoreJSONStructure.swift index bb38ebc41..97a253345 100755 --- a/web3swift/KeystoreManager/Classes/BIP32KeystoreJSONStructure.swift +++ b/web3swift/KeystoreManager/Classes/BIP32KeystoreJSONStructure.swift @@ -1,9 +1,7 @@ -// -// BIP32KeystoreJSONStructure.swift // web3swift // -// Created by Alexander Vlasov on 11.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/BIP39+WordLists.swift b/web3swift/KeystoreManager/Classes/BIP39+WordLists.swift index d7a0193f4..d8ac312bf 100755 --- a/web3swift/KeystoreManager/Classes/BIP39+WordLists.swift +++ b/web3swift/KeystoreManager/Classes/BIP39+WordLists.swift @@ -1,9 +1,7 @@ -// -// BIP39+WordLists.swift // web3swift // -// Created by Alexander Vlasov on 11.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/BIP39.swift b/web3swift/KeystoreManager/Classes/BIP39.swift index a395dc405..58067ca81 100755 --- a/web3swift/KeystoreManager/Classes/BIP39.swift +++ b/web3swift/KeystoreManager/Classes/BIP39.swift @@ -1,9 +1,7 @@ -// -// BIP39.swift // web3swift // -// Created by Alexander Vlasov on 11.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift b/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift index dcbf23d14..569420224 100755 --- a/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift +++ b/web3swift/KeystoreManager/Classes/EthereumKeystoreV3.swift @@ -1,9 +1,7 @@ -// -// EthereumKeystoreV3.swift // web3swift // -// Created by Alexander Vlasov on 18.12.2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/IBAN.swift b/web3swift/KeystoreManager/Classes/IBAN.swift index de39ef368..5f4e22f49 100755 --- a/web3swift/KeystoreManager/Classes/IBAN.swift +++ b/web3swift/KeystoreManager/Classes/IBAN.swift @@ -1,9 +1,7 @@ -// -// IBAN.swift // web3swift // -// Created by Alexander Vlasov on 25.05.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/KeystoreManager.swift b/web3swift/KeystoreManager/Classes/KeystoreManager.swift index d722e33fc..e9a6193c8 100755 --- a/web3swift/KeystoreManager/Classes/KeystoreManager.swift +++ b/web3swift/KeystoreManager/Classes/KeystoreManager.swift @@ -1,9 +1,7 @@ -// -// KeystoreManager.swift // web3swift // -// Created by Alexander Vlasov on 04.12.2017. -// Copyright © 2017 Alexander Vlasov. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/KeystoreV3JSONStructure.swift b/web3swift/KeystoreManager/Classes/KeystoreV3JSONStructure.swift index 887f79660..8ab80e570 100755 --- a/web3swift/KeystoreManager/Classes/KeystoreV3JSONStructure.swift +++ b/web3swift/KeystoreManager/Classes/KeystoreV3JSONStructure.swift @@ -1,9 +1,7 @@ -// -// KeystoreJSONStructure.swift // web3swift // -// Created by Alexander Vlasov on 10.01.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/KeystoreManager/Classes/PlainKeystore.swift b/web3swift/KeystoreManager/Classes/PlainKeystore.swift index 3cd2937fc..7a03158af 100755 --- a/web3swift/KeystoreManager/Classes/PlainKeystore.swift +++ b/web3swift/KeystoreManager/Classes/PlainKeystore.swift @@ -1,9 +1,7 @@ -// -// PlainKeystore.swift // web3swift // -// Created by Alexander Vlasov on 06.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/BigUInt+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/BigUInt+ObjC.swift index 220a4735e..4ad761304 100755 --- a/web3swift/ObjectiveCbridge/Classes/BigUInt+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/BigUInt+ObjC.swift @@ -1,9 +1,7 @@ -// -// BigUInt+ObjC.swift // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/EthereumAddress+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/EthereumAddress+ObjC.swift index 9ae1dd23d..7466cac63 100755 --- a/web3swift/ObjectiveCbridge/Classes/EthereumAddress+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/EthereumAddress+ObjC.swift @@ -1,9 +1,7 @@ -// -// EthereumAddress+ObjC.swift // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/JSONRPCrequestDispatcher+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/JSONRPCrequestDispatcher+ObjC.swift index 5b57e2335..4ad2d7157 100644 --- a/web3swift/ObjectiveCbridge/Classes/JSONRPCrequestDispatcher+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/JSONRPCrequestDispatcher+ObjC.swift @@ -1,9 +1,7 @@ +// web3swift // -// JSONRPCrequestDispatcher.swift -// web3swift-iOS -// -// Created by Anton Grigorev on 19.09.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/KeystoreManager+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/KeystoreManager+ObjC.swift index 0a3891933..5a8a73ba6 100755 --- a/web3swift/ObjectiveCbridge/Classes/KeystoreManager+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/KeystoreManager+ObjC.swift @@ -1,9 +1,7 @@ -// -// KeystoreManager+ObjC.swift // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/PlainKeystore+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/PlainKeystore+ObjC.swift index d698fcb96..0546bc5bf 100755 --- a/web3swift/ObjectiveCbridge/Classes/PlainKeystore+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/PlainKeystore+ObjC.swift @@ -1,9 +1,7 @@ -// -// PlainKeystore+ObjC.swift // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/Web3+Eth+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/Web3+Eth+ObjC.swift index 87d759340..e2c62d383 100755 --- a/web3swift/ObjectiveCbridge/Classes/Web3+Eth+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/Web3+Eth+ObjC.swift @@ -1,9 +1,7 @@ -// -// Web3+Eth+ObjC.swift // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/Web3+HttpProvider+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/Web3+HttpProvider+ObjC.swift index f626ba792..4e9fc1916 100755 --- a/web3swift/ObjectiveCbridge/Classes/Web3+HttpProvider+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/Web3+HttpProvider+ObjC.swift @@ -1,9 +1,7 @@ -// -// Web3+Provider+ObjC.swift // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/Web3+Instance+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/Web3+Instance+ObjC.swift index d6390aa0b..d6ced3ee0 100755 --- a/web3swift/ObjectiveCbridge/Classes/Web3+Instance+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/Web3+Instance+ObjC.swift @@ -1,9 +1,7 @@ -// -// Web3Instnace+ObjectiveC.swift // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/ObjectiveCbridge/Classes/Web3+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/Web3+ObjC.swift index facae1516..e4a539399 100755 --- a/web3swift/ObjectiveCbridge/Classes/Web3+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/Web3+ObjC.swift @@ -1,9 +1,7 @@ -// -// Web3+ObjectiveC.swift // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift b/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift index 4e07319da..c73ec9f73 100644 --- a/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift +++ b/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift @@ -1,8 +1,6 @@ -// -// Web3+ERC721.swift // web3swift // -// Created by Alex Vlasov on 28.08.2018. +// Created by Alex Vlasov. // Copyright © 2018 Alex Vlasov. All rights reserved. // diff --git a/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift b/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift index 03662a9e5..909fa096f 100644 --- a/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift +++ b/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift @@ -1,9 +1,7 @@ +// web3swift // -// Web3+ERC721.swift -// web3swift-iOS -// -// Created by Anton Grigorev on 17.10.2018. -// Copyright © 2018 The Matter Inc. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Transaction/Classes/BloomFilter.swift b/web3swift/Transaction/Classes/BloomFilter.swift index cb0938e3b..9a83b0595 100755 --- a/web3swift/Transaction/Classes/BloomFilter.swift +++ b/web3swift/Transaction/Classes/BloomFilter.swift @@ -1,9 +1,7 @@ -// -// BloomFilter.swift // web3swift // -// Created by Alexander Vlasov on 02.03.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -27,29 +25,6 @@ public struct EthereumBloomFilter{ } } - -// -//func (b Bloom) Test(test *big.Int) bool { -// return BloomLookup(b, test) -//} -// -//func (b Bloom) TestBytes(test []byte) bool { -// return b.Test(new(big.Int).SetBytes(test)) -// -//} -// -//// MarshalText encodes b as a hex string with 0x prefix. -//func (b Bloom) MarshalText() ([]byte, error) { -// return hexutil.Bytes(b[:]).MarshalText() -//} -// -//// UnmarshalText b as a hex string with 0x prefix. -//func (b *Bloom) UnmarshalText(input []byte) error { -// return hexutil.UnmarshalFixedText("Bloom", input, b[:]) -//} - - - extension EthereumBloomFilter { static func bloom9(_ biguint: BigUInt) -> BigUInt { diff --git a/web3swift/Transaction/Classes/EthereumTransaction.swift b/web3swift/Transaction/Classes/EthereumTransaction.swift index bace4fa47..09af7a233 100755 --- a/web3swift/Transaction/Classes/EthereumTransaction.swift +++ b/web3swift/Transaction/Classes/EthereumTransaction.swift @@ -1,9 +1,7 @@ -// -// EthereumTransaction.swift // web3swift // -// Created by Alexander Vlasov on 05.12.2017. -// Copyright © 2017 Alexander Vlasov. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Transaction/Classes/TransactionSigner.swift b/web3swift/Transaction/Classes/TransactionSigner.swift index 7cfa8e749..aa962bcf0 100755 --- a/web3swift/Transaction/Classes/TransactionSigner.swift +++ b/web3swift/Transaction/Classes/TransactionSigner.swift @@ -1,9 +1,7 @@ +// web3swift // -// TransactionSigner.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 26.02.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Utils/Classes/EIP67Code.swift b/web3swift/Utils/Classes/EIP67Code.swift index 702f646a0..e2951a93b 100755 --- a/web3swift/Utils/Classes/EIP67Code.swift +++ b/web3swift/Utils/Classes/EIP67Code.swift @@ -1,9 +1,7 @@ -// -// EIP67CodeGenerator.swift // web3swift // -// Created by Alexander Vlasov on 09.04.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Utils/Classes/EIP681.swift b/web3swift/Utils/Classes/EIP681.swift index c955f521a..61b1e0e40 100644 --- a/web3swift/Utils/Classes/EIP681.swift +++ b/web3swift/Utils/Classes/EIP681.swift @@ -1,9 +1,7 @@ -// -// EIP681.swift // web3swift // -// Created by Alex Vlasov on 08.09.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Utils/Classes/ENS.swift b/web3swift/Utils/Classes/ENS.swift index 07047edd7..567fe7d20 100644 --- a/web3swift/Utils/Classes/ENS.swift +++ b/web3swift/Utils/Classes/ENS.swift @@ -1,6 +1,7 @@ +// web3swift // -// ENS.swift -// web3swift-iOS +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Utils/Classes/ENSResolver.swift b/web3swift/Utils/Classes/ENSResolver.swift index 37ca5066b..ac9689c7d 100644 --- a/web3swift/Utils/Classes/ENSResolver.swift +++ b/web3swift/Utils/Classes/ENSResolver.swift @@ -1,9 +1,7 @@ +// web3swift // -// ENSResolver.swift -// web3swift-iOS -// -// Created by NewUser on 21/09/2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Utils/Classes/NameHash.swift b/web3swift/Utils/Classes/NameHash.swift index cf4a889ce..2a96a9ca4 100644 --- a/web3swift/Utils/Classes/NameHash.swift +++ b/web3swift/Utils/Classes/NameHash.swift @@ -1,9 +1,7 @@ -// -// NameHash.swift // web3swift // -// Created by Alex Vlasov on 08.09.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+Contract.swift b/web3swift/Web3/Classes/Web3+Contract.swift index 1dcf3fc73..13b22971f 100755 --- a/web3swift/Web3/Classes/Web3+Contract.swift +++ b/web3swift/Web3/Classes/Web3+Contract.swift @@ -61,7 +61,35 @@ extension web3 { /// Elements of "parameters" can be other arrays or instances of String, Data, BigInt, BigUInt, Int or EthereumAddress. /// /// Returns a "Transaction intermediate" object. - public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), transactionOptions: TransactionOptions?) -> WriteTransaction? { + public func method(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), transactionOptions: TransactionOptions? = nil) -> WriteTransaction? { + let mergedOptions = self.transactionOptions?.merge(transactionOptions) + guard var tx = self.contract.method(method, parameters: parameters, extraData: extraData) else {return nil} + tx.chainID = self.web3.provider.network?.chainID + let writeTX = WriteTransaction.init(transaction: tx, web3: self.web3, contract: self.contract, method: method, transactionOptions: mergedOptions) + return writeTX + } + + /// Creates and object responsible for calling a particular function of the contract. If method name is not found in ABI - returns nil. + /// If extraData is supplied it is appended to encoded function parameters. Can be usefull if one wants to call + /// the function not listed in ABI. "Parameters" should be an array corresponding to the list of parameters of the function. + /// Elements of "parameters" can be other arrays or instances of String, Data, BigInt, BigUInt, Int or EthereumAddress. + /// + /// Returns a "Transaction intermediate" object. + public func read(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), transactionOptions: TransactionOptions? = nil) -> ReadTransaction? { + let mergedOptions = self.transactionOptions?.merge(transactionOptions) + guard var tx = self.contract.method(method, parameters: parameters, extraData: extraData) else {return nil} + tx.chainID = self.web3.provider.network?.chainID + let writeTX = ReadTransaction.init(transaction: tx, web3: self.web3, contract: self.contract, method: method, transactionOptions: mergedOptions) + return writeTX + } + + /// Creates and object responsible for calling a particular function of the contract. If method name is not found in ABI - returns nil. + /// If extraData is supplied it is appended to encoded function parameters. Can be usefull if one wants to call + /// the function not listed in ABI. "Parameters" should be an array corresponding to the list of parameters of the function. + /// Elements of "parameters" can be other arrays or instances of String, Data, BigInt, BigUInt, Int or EthereumAddress. + /// + /// Returns a "Transaction intermediate" object. + public func write(_ method:String = "fallback", parameters: [AnyObject] = [AnyObject](), extraData: Data = Data(), transactionOptions: TransactionOptions? = nil) -> WriteTransaction? { let mergedOptions = self.transactionOptions?.merge(transactionOptions) guard var tx = self.contract.method(method, parameters: parameters, extraData: extraData) else {return nil} tx.chainID = self.web3.provider.network?.chainID diff --git a/web3swift/Web3/Classes/Web3+Eth.swift b/web3swift/Web3/Classes/Web3+Eth.swift index 68e240293..25a9deeff 100755 --- a/web3swift/Web3/Classes/Web3+Eth.swift +++ b/web3swift/Web3/Classes/Web3+Eth.swift @@ -240,120 +240,119 @@ extension web3.Eth { } -// /** -// Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data. -// - Parameters: -// - to: EthereumAddress to send funds to -// - amount: BigUInt indicating the amount in wei -// - extraData: Additional data to attach to the transaction -// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead -// -// - returns: -// - TransactionIntermediate object -// -// */ -// public func sendETH(to: EthereumAddress, amount: BigUInt, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { -// let contract = self.web3.contract(Web3.Utils.coldWalletABI, at: to, abiVersion: 2) -// guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} -// mergedOptions.value = amount -// let intermediate = contract?.method("fallback", extraData: extraData, options: mergedOptions) -// return intermediate -// } -// -// /** -// *Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data.* -// -// - parameters: -// - to: EthereumAddress to send funds to -// - amount: String in "units" demonimation. It can contain either "," or "." decimal separator. -// - units: Ethereum units indicating the denomination of amout about -// - extraData: Additional data to attach to the transaction -// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead -// -// - returns: -// - TransactionIntermediate object -// -// * String "1.01" and units: .eth will result in sending 1.01 ETH to another address* -// */ -// public func sendETH(to: EthereumAddress, amount: String, units: Web3.Utils.Units = .eth, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { -// guard let value = Web3.Utils.parseToBigUInt(amount, units: .eth) else {return nil} -// return sendETH(to: to, amount: value, extraData: extraData, options: options) -// } -// -// /** -// *Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data.* -// -// - parameters: -// - from: EthereumAddress to send funds from -// - to: EthereumAddress to send funds to -// - amount: String in "units" demonimation. It can contain either "," or "." decimal separator. -// - units: Ethereum units indicating the denomination of amout about -// - extraData: Additional data to attach to the transaction -// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. -// -// - returns: -// - TransactionIntermediate object -// -// * String "1.01" and units: .eth will result in sending 1.01 ETH to another address* -// */ -// public func sendETH(from: EthereumAddress, to: EthereumAddress, amount: String, units: Web3.Utils.Units = .eth, extraData: Data = Data(), options: Web3Options? = nil) -> TransactionIntermediate? { -// guard let value = Web3.Utils.parseToBigUInt(amount, units: .eth) else {return nil} -// guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} -// mergedOptions.from = from -// return sendETH(to: to, amount: value, extraData: extraData, options: mergedOptions) -// } -// -// /** -// *Convenience wrapper to send ERC20 tokens to another address. Internally it creates a virtual contract and encodes all the options and data. Assumes that the sender knows the decimal units of the underlying token.* -// -// - parameters: -// - tokenAddress: EthereumAddress of the token contract -// - from: EthereumAddress to send tokens from -// - to: EthereumAddress to send tokens to -// - amount: BigUInt indicating the number of tokens in the the smallest indivisible units (mind that sender knows the number of decimals) -// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. -// -// - returns: -// - TransactionIntermediate object -// -// */ -// public func sendERC20tokensWithKnownDecimals(tokenAddress: EthereumAddress, from: EthereumAddress, to: EthereumAddress, amount: BigUInt, options: Web3Options? = nil) -> TransactionIntermediate? { -// let contract = self.web3.contract(Web3.Utils.erc20ABI, at: tokenAddress, abiVersion: 2) -// guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} -// mergedOptions.from = from -// guard let intermediate = contract?.method("transfer", parameters: [to, amount] as [AnyObject], options: mergedOptions) else {return nil} -// return intermediate -// } -// -// /** -// *Convenience wrapper to send ERC20 tokens to another address. Internally it creates a virtual contract and encodes all the options and data. Pulls the number of decimals of the token under the hood.* -// -// - parameters: -// - tokenAddress: EthereumAddress of the token contract -// - from: EthereumAddress to send tokens from -// - to: EthereumAddress to send tokens to -// - amount: String in "natura" demonimation. It can contain either "," or "." decimal separator. -// - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. -// -// - returns: -// - TransactionIntermediate object -// -// - important: This call is synchronous -// -// * If the amount is "1.01" and token has 9 decimals it will result in sending 1010000000 of the smallest invidisible token units.* -// */ -// public func sendERC20tokensWithNaturalUnits(tokenAddress: EthereumAddress, from: EthereumAddress, to: EthereumAddress, amount: String, options: Web3Options? = nil) throws -> TransactionIntermediate? { -// let contract = self.web3.contract(Web3.Utils.erc20ABI, at: tokenAddress, abiVersion: 2) -// guard var mergedOptions = Web3Options.merge(self.options, with: options) else {return nil} -// mergedOptions.from = from -// guard let intermediate = contract?.method("decimals", options: mergedOptions) else {return nil} -// let response = try intermediate.call(options: mergedOptions, onBlock: "latest") -// var decimals = BigUInt(0) -// guard let dec = response["0"], let decTyped = dec as? BigUInt else {return nil} -// decimals = decTyped -// let intDecimals = Int(decimals) -// guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else {return nil} -// return sendERC20tokensWithKnownDecimals(tokenAddress: tokenAddress, from: from, to: to, amount: value, options: options) -// } -// + /** + Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data. + - Parameters: + - to: EthereumAddress to send funds to + - amount: BigUInt indicating the amount in wei + - extraData: Additional data to attach to the transaction + - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead + + - returns: + - TransactionIntermediate object + + */ + public func sendETH(to: EthereumAddress, amount: BigUInt, extraData: Data = Data(), transactionOptions: TransactionOptions? = nil) -> WriteTransaction? { + let contract = self.web3.contract(Web3.Utils.coldWalletABI, at: to, abiVersion: 2) + var mergedOptions = self.web3.transactionOptions.merge(transactionOptions) + mergedOptions.value = amount + let writeTX = contract?.write("fallback", extraData: extraData, transactionOptions: mergedOptions) + return writeTX + } + + /** + *Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data.* + + - parameters: + - to: EthereumAddress to send funds to + - amount: String in "units" demonimation. It can contain either "," or "." decimal separator. + - units: Ethereum units indicating the denomination of amout about + - extraData: Additional data to attach to the transaction + - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead + + - returns: + - TransactionIntermediate object + + * String "1.01" and units: .eth will result in sending 1.01 ETH to another address* + */ + public func sendETH(to: EthereumAddress, amount: String, units: Web3.Utils.Units = .eth, extraData: Data = Data(), transactionOptions: TransactionOptions? = nil) -> WriteTransaction? { + guard let value = Web3.Utils.parseToBigUInt(amount, units: .eth) else {return nil} + return sendETH(to: to, amount: value, extraData: extraData, transactionOptions: transactionOptions) + } + + /** + *Convenience wrapper to send Ethereum to another address. Internally it creates a virtual contract and encodes all the options and data.* + + - parameters: + - from: EthereumAddress to send funds from + - to: EthereumAddress to send funds to + - amount: String in "units" demonimation. It can contain either "," or "." decimal separator. + - units: Ethereum units indicating the denomination of amout about + - extraData: Additional data to attach to the transaction + - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. + + - returns: + - TransactionIntermediate object + + * String "1.01" and units: .eth will result in sending 1.01 ETH to another address* + */ + public func sendETH(from: EthereumAddress, to: EthereumAddress, amount: String, units: Web3.Utils.Units = .eth, extraData: Data = Data(), transactionOptions: TransactionOptions? = nil) -> WriteTransaction? { + guard let value = Web3.Utils.parseToBigUInt(amount, units: .eth) else {return nil} + var mergedOptions = self.web3.transactionOptions.merge(transactionOptions) + mergedOptions.from = from + return sendETH(to: to, amount: value, extraData: extraData, transactionOptions: mergedOptions) + } + + /** + *Convenience wrapper to send ERC20 tokens to another address. Internally it creates a virtual contract and encodes all the options and data. Assumes that the sender knows the decimal units of the underlying token.* + + - parameters: + - tokenAddress: EthereumAddress of the token contract + - from: EthereumAddress to send tokens from + - to: EthereumAddress to send tokens to + - amount: BigUInt indicating the number of tokens in the the smallest indivisible units (mind that sender knows the number of decimals) + - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. + + - returns: + - TransactionIntermediate object + + */ + public func sendERC20tokensWithKnownDecimals(tokenAddress: EthereumAddress, from: EthereumAddress, to: EthereumAddress, amount: BigUInt, transactionOptions: TransactionOptions? = nil) -> WriteTransaction? { + let contract = self.web3.contract(Web3.Utils.erc20ABI, at: tokenAddress, abiVersion: 2) + var mergedOptions = self.web3.transactionOptions.merge(transactionOptions) + mergedOptions.from = from + guard let writeTX = contract?.write("transfer", parameters: [to, amount] as [AnyObject], transactionOptions: mergedOptions) else {return nil} + return writeTX + } + + /** + *Convenience wrapper to send ERC20 tokens to another address. Internally it creates a virtual contract and encodes all the options and data. Pulls the number of decimals of the token under the hood.* + + - parameters: + - tokenAddress: EthereumAddress of the token contract + - from: EthereumAddress to send tokens from + - to: EthereumAddress to send tokens to + - amount: String in "natura" demonimation. It can contain either "," or "." decimal separator. + - options: Web3Options to override the default gas price, gas limit. "Value" field of the options is ignored and the "amount" parameter is used instead. "From" parameter is also ignored. + + - returns: + - TransactionIntermediate object + + - important: This call is synchronous + + * If the amount is "1.01" and token has 9 decimals it will result in sending 1010000000 of the smallest invidisible token units.* + */ + public func sendERC20tokensWithNaturalUnits(tokenAddress: EthereumAddress, from: EthereumAddress, to: EthereumAddress, amount: String, transactionOptions: TransactionOptions? = nil) throws -> WriteTransaction? { + let contract = self.web3.contract(Web3.Utils.erc20ABI, at: tokenAddress, abiVersion: 2) + var mergedOptions = self.web3.transactionOptions.merge(transactionOptions) + mergedOptions.from = from + let resp = try contract?.read("decimals", transactionOptions: mergedOptions)?.callPromise().wait() + var decimals = BigUInt(0) + guard let response = resp, let dec = response["0"], let decTyped = dec as? BigUInt else {return nil} + decimals = decTyped + let intDecimals = Int(decimals) + guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else {return nil} + return sendERC20tokensWithKnownDecimals(tokenAddress: tokenAddress, from: from, to: to, amount: value, transactionOptions: mergedOptions) + } + } diff --git a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift index a1fe0d4ff..2b6de16fd 100644 --- a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift +++ b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift @@ -12,7 +12,7 @@ import EthereumAddress public class WriteTransaction: ReadTransaction { - public func assemblePromise(transactionOptions: TransactionOptions?) -> Promise { + public func assemblePromise(transactionOptions: TransactionOptions? = nil) -> Promise { var assembledTransaction : EthereumTransaction = self.transaction let queue = self.web3.requestDispatcher.queue let returnPromise = Promise { seal in @@ -147,7 +147,7 @@ public class WriteTransaction: ReadTransaction { return returnPromise } - public func sendPromise(password:String = "web3swift", transactionOptions: TransactionOptions?) -> Promise{ + public func sendPromise(password:String = "web3swift", transactionOptions: TransactionOptions? = nil) -> Promise{ let queue = self.web3.requestDispatcher.queue return self.assemblePromise(transactionOptions: transactionOptions).then(on: queue) { transaction throws -> Promise in let mergedOptions = self.transactionOptions.merge(transactionOptions) diff --git a/web3swift/Web3/Classes/Web3+Options.swift b/web3swift/Web3/Classes/Web3+Options.swift index a2f686ff6..78291448e 100755 --- a/web3swift/Web3/Classes/Web3+Options.swift +++ b/web3swift/Web3/Classes/Web3+Options.swift @@ -212,11 +212,32 @@ public struct TransactionOptions { } public func resolveGasPrice(_ suggestedByNode: BigUInt) -> BigUInt? { - return suggestedByNode + guard let gasPricePolicy = self.gasPrice else {return nil} + switch gasPricePolicy { + case .automatic: + return suggestedByNode + case .manual(let value): + return value + case .withMargin(_): + return suggestedByNode + } } public func resolveGasLimit(_ suggestedByNode: BigUInt) -> BigUInt? { - return suggestedByNode + guard let gasLimitPolicy = self.gasLimit else {return nil} + switch gasLimitPolicy { + case .automatic: + return suggestedByNode + case .manual(let value): + return value + case .withMargin(_): + return suggestedByNode + case .limited(let limit): + if limit <= suggestedByNode { + return suggestedByNode + } + return nil + } } public func merge(_ otherOptions: TransactionOptions?) -> TransactionOptions { diff --git a/web3swift/Web3/Classes/Web3+ReadingTransaction.swift b/web3swift/Web3/Classes/Web3+ReadingTransaction.swift index e84e104b2..0a54a4ab1 100644 --- a/web3swift/Web3/Classes/Web3+ReadingTransaction.swift +++ b/web3swift/Web3/Classes/Web3+ReadingTransaction.swift @@ -62,7 +62,7 @@ public class ReadTransaction { return returnPromise } - public func estimateGasPromise(transactionOptions: TransactionOptions) -> Promise{ + public func estimateGasPromise(transactionOptions: TransactionOptions? = nil) -> Promise{ let assembledTransaction : EthereumTransaction = self.transaction let queue = self.web3.requestDispatcher.queue let returnPromise = Promise { seal in diff --git a/web3swiftTests/web3swift_User_cases.swift b/web3swiftTests/web3swift_User_cases.swift index cbfc70ad9..3945fc830 100755 --- a/web3swiftTests/web3swift_User_cases.swift +++ b/web3swiftTests/web3swift_User_cases.swift @@ -8,6 +8,7 @@ import XCTest import BigInt +import EthereumAddress @testable import web3swift_iOS @@ -20,25 +21,18 @@ class web3swift_User_cases: XCTestCase { return data as Data } - func testUserCase1() { + func testUserCase1() throws { let jsonString = "[{\"constant\":true,\"inputs\":[],\"name\":\"mintingFinished\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sha\",\"type\":\"bytes32\"}],\"name\":\"cancelApprove\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"isPrivilegeAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"isBiometricLockedOnlyOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"isAllowedHICAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"addPrivilegeAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"addAllowedHICAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"removePresaleHolder\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_BOPS\",\"type\":\"address\"}],\"name\":\"setBOPSAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"isUtilityHolder\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseApproval\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"addPresaleHolder\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"bioLock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finishMinting\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"removeAllowedHICAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sha\",\"type\":\"bytes32\"}],\"name\":\"cancelTransfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"isPresaleHolder\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sha\",\"type\":\"bytes32\"},{\"name\":\"v\",\"type\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"releaseTransfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"addUtilityHolder\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isSenderBiometricLocked\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"removePrivilegeAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseApproval\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_beneficiary\",\"type\":\"address\"}],\"name\":\"removeUtilityHolder\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"sha\",\"type\":\"bytes32\"}],\"name\":\"isBiometricCompleted\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sha\",\"type\":\"bytes32\"},{\"name\":\"v\",\"type\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"releaseApprove\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sha\",\"type\":\"bytes32\"},{\"name\":\"v\",\"type\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"bioUnlock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Pause\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpause\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"sha\",\"type\":\"bytes32\"}],\"name\":\"BiometricTransferRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"sha\",\"type\":\"bytes32\"}],\"name\":\"BiometricApprovalRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"sha\",\"type\":\"bytes32\"}],\"name\":\"BiometricLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"beneficiary\",\"type\":\"address\"}],\"name\":\"BiometricUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"MintFinished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\"},{\"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\"}]" let web3 = Web3.InfuraMainnetWeb3() let contractAddress = EthereumAddress("0x0f90969738c7a3088907c052cb96bd4d184a9fcf") let contract = web3.contract(jsonString, at: contractAddress) XCTAssert(contract != nil, "Failed to create ERC20 contract from ABI") - var options = Web3Options.defaultOptions() - options.from = EthereumAddress("0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d") let account = EthereumAddress("0xb870065718919ac4f9572ffc4bde0b2516f4e723")! - let transactionIntermediate = contract?.method("balanceOf", parameters:[account] as [AnyObject], options: options) - let result = transactionIntermediate!.call(options: options) - switch result { - case .failure(let error): - print(error) - XCTFail() - case .success(let response): - let balance = response["0"] as? BigUInt - print(balance) - } + let readTransaction = contract!.read("balanceOf", parameters:[account] as [AnyObject])! + readTransaction.transactionOptions.from = EthereumAddress("0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d") + let response = try readTransaction.callPromise().wait() + let balance = response["0"] as? BigUInt + print(balance) } func testUserCase2() { @@ -47,77 +41,57 @@ class web3swift_User_cases: XCTestCase { XCTAssert(web3 != nil, "Failed to create web3 for custom provider") } - func testProperGasLimit() { + func testProperGasLimit() throws { guard let keystoreData = getKeystoreData() else {return XCTFail()} guard let keystoreV3 = EthereumKeystoreV3.init(keystoreData) else {return XCTFail()} let web3Rinkeby = Web3.InfuraRinkebyWeb3() let keystoreManager = KeystoreManager.init([keystoreV3]) web3Rinkeby.addKeystoreManager(keystoreManager) - guard case .success(let gasPriceRinkeby) = web3Rinkeby.eth.getGasPrice() else {return XCTFail()} + let gasPriceRinkeby = try web3Rinkeby.eth.getGasPrice() let sendToAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - guard let intermediate = web3Rinkeby.eth.sendETH(to: sendToAddress, amount: "0.001") else {return XCTFail()} - var options = Web3Options.defaultOptions() - options.from = keystoreV3.addresses?.first - options.gasPrice = gasPriceRinkeby - guard case .success(let gasEstimate) = intermediate.estimateGas(options: options) else {return XCTFail()} - options.gasLimit = gasEstimate + 1234 - guard case .success(let assembled) = intermediate.assemble(options: options) else {return XCTFail()} - XCTAssert(assembled.gasLimit == options.gasLimit) + guard let writeTX = web3Rinkeby.eth.sendETH(to: sendToAddress, amount: "0.001") else {return XCTFail()} + writeTX.transactionOptions.from = keystoreV3.addresses?.first + writeTX.transactionOptions.gasPrice = .manual(gasPriceRinkeby) + let gasEstimate = try writeTX.estimateGasPromise().wait() + writeTX.transactionOptions.gasLimit = .manual(gasEstimate + 1234) + let assembled = try writeTX.assemblePromise().wait() + XCTAssert(assembled.gasLimit == gasEstimate + 1234) } - func testProperGasPrice() { + func testProperGasPrice() throws { guard let keystoreData = getKeystoreData() else {return XCTFail()} guard let keystoreV3 = EthereumKeystoreV3.init(keystoreData) else {return XCTFail()} let web3Rinkeby = Web3.InfuraRinkebyWeb3() let keystoreManager = KeystoreManager.init([keystoreV3]) web3Rinkeby.addKeystoreManager(keystoreManager) - guard case .success(let gasPriceRinkeby) = web3Rinkeby.eth.getGasPrice() else {return XCTFail()} + let gasPriceRinkeby = try web3Rinkeby.eth.getGasPrice() let sendToAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - guard let intermediate = web3Rinkeby.eth.sendETH(to: sendToAddress, amount: "0.001") else {return XCTFail()} - var options = Web3Options.defaultOptions() - options.from = keystoreV3.addresses?.first - options.gasPrice = gasPriceRinkeby * 2 - guard case .success(let gasEstimate) = intermediate.estimateGas(options: options) else {return XCTFail()} - options.gasLimit = gasEstimate + 1234 - guard case .success(let assembled) = intermediate.assemble(options: options) else {return XCTFail()} - XCTAssert(assembled.gasLimit == options.gasLimit) - XCTAssert(assembled.gasPrice == options.gasPrice) + guard let writeTX = web3Rinkeby.eth.sendETH(to: sendToAddress, amount: "0.001") else {return XCTFail()} + writeTX.transactionOptions.from = keystoreV3.addresses?.first + writeTX.transactionOptions.gasPrice = .manual(gasPriceRinkeby * 2) + let gasEstimate = try writeTX.estimateGasPromise().wait() + writeTX.transactionOptions.gasLimit = .manual(gasEstimate + 1234) + let assembled = try writeTX.assemblePromise().wait() + XCTAssert(assembled.gasLimit == gasEstimate + 1234) + XCTAssert(assembled.gasPrice == gasPriceRinkeby * 2) } - func testParseTransactionDetailsForContractCreation() { + func testParseTransactionDetailsForContractCreation() throws { let web3 = Web3.InfuraMainnetWeb3() - let details = web3.eth.getTransactionDetails("0x1c85b9b7f7c2cbdb3fa264f6b78b226360aa2084c48cf7869b756e0762bd851b") - switch details { - case .success(let details): - print(details) - XCTAssert(details.transaction.to == .contractDeploymentAddress()) - case .failure(let error): - print(error) - XCTFail() - } - let receipt = web3.eth.getTransactionReceipt("0x1c85b9b7f7c2cbdb3fa264f6b78b226360aa2084c48cf7869b756e0762bd851b") - switch receipt { - case .success(let receipt): - print(receipt) - XCTAssert(receipt.contractAddress != nil) - case .failure(let error): - print(error) - XCTFail() - } + let details = try web3.eth.getTransactionDetails("0x1c85b9b7f7c2cbdb3fa264f6b78b226360aa2084c48cf7869b756e0762bd851b") + print(details) + XCTAssert(details.transaction.to == .contractDeploymentAddress()) + let receipt = try web3.eth.getTransactionReceipt("0x1c85b9b7f7c2cbdb3fa264f6b78b226360aa2084c48cf7869b756e0762bd851b") + print(receipt) + XCTAssert(receipt.contractAddress != nil) } - func testNonBatchedRequest() { + func testNonBatchedRequest() throws { let web3 = Web3.InfuraMainnetWeb3() let address = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! web3.requestDispatcher.policy = .NoBatching - let balanceResult = web3.eth.getBalance(address: address) - switch balanceResult { - case .success(let bal): - print(bal) - case .failure(let error): - print(error) - XCTFail() - } + let balanceResult = try web3.eth.getBalance(address: address) + print(balanceResult) } } diff --git a/web3swiftTests/web3swift_infura_Tests.swift b/web3swiftTests/web3swift_infura_Tests.swift index 7b9dcf70a..292a8a569 100755 --- a/web3swiftTests/web3swift_infura_Tests.swift +++ b/web3swiftTests/web3swift_infura_Tests.swift @@ -7,87 +7,68 @@ // import XCTest +import EthereumAddress @testable import web3swift_iOS class web3swift_infura_Tests: XCTestCase { func testGetBalance() { - let web3 = Web3.InfuraMainnetWeb3() - let address = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - let response = web3.eth.getBalance(address: address) - switch response { - case .failure(_): - XCTFail() - case .success(let result): - let balance = result + do { + let web3 = Web3.InfuraMainnetWeb3() + let address = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! + let balance = try web3.eth.getBalance(address: address) let balString = Web3.Utils.formatToEthereumUnits(balance, toUnits: .eth, decimals: 3) - print(balString) + print(balString!) + } catch { + XCTFail() } } func testGetBlockByHash() { - let web3 = Web3.InfuraMainnetWeb3() - let response = web3.eth.getBlockByHash("0x6d05ba24da6b7a1af22dc6cc2a1fe42f58b2a5ea4c406b19c8cf672ed8ec0695", fullTransactions: true) - switch response { - case .failure(_): - XCTFail() - case .success(let result): + do { + let web3 = Web3.InfuraMainnetWeb3() + let result = try web3.eth.getBlockByHash("0x6d05ba24da6b7a1af22dc6cc2a1fe42f58b2a5ea4c406b19c8cf672ed8ec0695", fullTransactions: true) print(result) + } catch { + XCTFail() } } - func testGetBlockByNumber1() { + func testGetBlockByNumber1() throws { let web3 = Web3.InfuraMainnetWeb3() - let response = web3.eth.getBlockByNumber("latest", fullTransactions: true) - switch response { - case .failure(_): - XCTFail() - case .success(let result): - print(result) - } + let result = try web3.eth.getBlockByNumber("latest", fullTransactions: true) + print(result) } - func testGetBlockByNumber2() { + func testGetBlockByNumber2() throws { let web3 = Web3.InfuraMainnetWeb3() - let response = web3.eth.getBlockByNumber(UInt64(5184323), fullTransactions: true) - switch response { - case .failure(_): - XCTFail() - case .success(let result): - print(result) - let transactions = result.transactions - for transaction in transactions { - switch transaction { - case .transaction(let tx): - print(String(describing: tx)) - default: - break - } + let result = try web3.eth.getBlockByNumber(UInt64(5184323), fullTransactions: true) + print(result) + let transactions = result.transactions + for transaction in transactions { + switch transaction { + case .transaction(let tx): + print(String(describing: tx)) + default: + break } } } func testGetBlockByNumber3() { - let web3 = Web3.InfuraMainnetWeb3() - let response = web3.eth.getBlockByNumber(UInt64(1000000000), fullTransactions: true) - switch response { - case .failure(_): - break - case .success(_): + do { + let web3 = Web3.InfuraMainnetWeb3() + let _ = try web3.eth.getBlockByNumber(UInt64(1000000000), fullTransactions: true) XCTFail() + } catch { + } } - func testGasPrice() { + func testGasPrice() throws { let web3 = Web3.InfuraMainnetWeb3() - let result = web3.eth.getGasPrice() - switch result { - case .failure(let error): - print(error) - XCTFail() - case .success(let response): - print(response) - } + let response = try web3.eth.getGasPrice() + print(response) } From df91e11867b3ed65fc635650257a3ffa083cf155 Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Tue, 30 Oct 2018 01:24:20 +0300 Subject: [PATCH 04/16] more tests passing --- web3swift.xcodeproj/project.pbxproj | 12 +- web3swift/Web3/Classes/Web3+Utils.swift | 6 +- web3swiftTests/scrypt_Tests.swift | 68 -------- .../web3swift_AdvancedABIv2_Tests.swift | 9 +- web3swiftTests/web3swift_EIP67_Tests.swift | 9 +- web3swiftTests/web3swift_EIP681_Tests.swift | 8 +- web3swiftTests/web3swift_ENS_Tests.swift | 10 +- .../web3swift_ERC20_Class_Tests.swift | 9 +- web3swiftTests/web3swift_ERC20_Tests.swift | 145 ++---------------- web3swiftTests/web3swift_ObjC_Tests.swift | 9 +- web3swiftTests/web3swift_RLP_Tests.swift | 9 +- web3swiftTests/web3swift_Tests.swift | 8 +- web3swiftTests/web3swift_User_cases.swift | 8 +- .../web3swift_contractV2_Tests.swift | 32 ---- web3swiftTests/web3swift_infura_Tests.swift | 9 +- .../web3swift_keystores_Tests.swift | 8 +- .../web3swift_local_node_Tests.swift | 13 +- ...web3swift_numberFormattingUtil_Tests.swift | 9 +- web3swiftTests/web3swift_promises_Tests.swift | 8 +- .../web3swift_remoteParsing_Tests.swift | 11 +- ...wift_rinkeby_personalSignature_Tests.swift | 9 +- .../web3swift_transactions_Tests.swift | 142 ++++------------- 22 files changed, 110 insertions(+), 441 deletions(-) delete mode 100755 web3swiftTests/scrypt_Tests.swift delete mode 100755 web3swiftTests/web3swift_contractV2_Tests.swift diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index b97684f5c..3c5a512ee 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -84,6 +84,10 @@ 81909D1821862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */; }; 81909D1921862D5A007D2AE5 /* Web3+Eventloop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */; }; 81909D1B2187B1FA007D2AE5 /* web3swift_User_cases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 815C74C720ECBF3E00DE2AC4 /* web3swift_User_cases.swift */; }; + 81909D1C2187BB67007D2AE5 /* web3swift_RLP_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7F20EA3CEA0030E0D6 /* web3swift_RLP_Tests.swift */; }; + 81909D1D2187BBAE007D2AE5 /* web3swift_ERC20_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7B20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift */; }; + 81909D1E2187BC8B007D2AE5 /* web3swift_transactions_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7920EA355D0030E0D6 /* web3swift_transactions_Tests.swift */; }; + 81909D1F2187BD20007D2AE5 /* web3swift_numberFormattingUtil_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE220EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift */; }; 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */; }; @@ -207,7 +211,6 @@ 5B83FA95B72D7DA53870479B /* Pods-web3swift-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.release.xcconfig"; sourceTree = ""; }; 68360683136B1FE2C57D65D9 /* Pods_Web3Swift_ios_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_ios_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 740EB523E2A6AEE0C6916C71 /* Pods_Web3Swift_osx_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Web3Swift_osx_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8102F5C2211E00820032DF60 /* scrypt_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = scrypt_Tests.swift; sourceTree = ""; }; 8103BBCB2077B84400499769 /* PlainKeystore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlainKeystore.swift; sourceTree = ""; }; 8104E2271FE82BDC00F952CB /* Web3+Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Utils.swift"; sourceTree = ""; }; 810B0F991FEC446B00CF0DA2 /* Web3+JSONRPC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+JSONRPC.swift"; sourceTree = ""; }; @@ -317,7 +320,6 @@ E23B5ADC20EA685D00DC7F32 /* web3swift_EIP67_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_EIP67_Tests.swift; sourceTree = ""; }; E23B5AE020EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_rinkeby_personalSignature_Tests.swift; sourceTree = ""; }; E23B5AE220EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_numberFormattingUtil_Tests.swift; sourceTree = ""; }; - E23B5AE420EA6A0A00DC7F32 /* web3swift_contractV2_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_contractV2_Tests.swift; sourceTree = ""; }; E2C590752152835400FF53D3 /* JSONRPCrequestDispatcher+ObjC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JSONRPCrequestDispatcher+ObjC.swift"; sourceTree = ""; }; E2E94C5F217788E0005F54A0 /* Web3+ERC721.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+ERC721.swift"; sourceTree = ""; }; FB43EC035C593F9E5A3644B6 /* Pods-web3swift-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swift-macOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swift-macOS/Pods-web3swift-macOS.debug.xcconfig"; sourceTree = ""; }; @@ -414,7 +416,6 @@ 81A7B2892143DF1D004CD2C7 /* web3swift_EIP681_Tests.swift */, 81A7B2782143C978004CD2C7 /* web3swift_ENS_Tests.swift */, 8159C50D2135901700197B91 /* web3swift_ERC20_Class_Tests.swift */, - 8102F5C2211E00820032DF60 /* scrypt_Tests.swift */, 81FECD5D211AEFCE006DA367 /* web3swift_ObjC_Tests.swift */, 815C74C720ECBF3E00DE2AC4 /* web3swift_User_cases.swift */, 00E5FE8120EA3FF40030E0D6 /* web3swift_infura_Tests.swift */, @@ -431,7 +432,6 @@ E23B5ADC20EA685D00DC7F32 /* web3swift_EIP67_Tests.swift */, E23B5AE020EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift */, E23B5AE220EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift */, - E23B5AE420EA6A0A00DC7F32 /* web3swift_contractV2_Tests.swift */, ); path = web3swiftTests; sourceTree = ""; @@ -1067,7 +1067,11 @@ buildActionMask = 2147483647; files = ( 00E5FE8220EA3FF40030E0D6 /* web3swift_infura_Tests.swift in Sources */, + 81909D1D2187BBAE007D2AE5 /* web3swift_ERC20_Tests.swift in Sources */, + 81909D1C2187BB67007D2AE5 /* web3swift_RLP_Tests.swift in Sources */, 81909D1B2187B1FA007D2AE5 /* web3swift_User_cases.swift in Sources */, + 81909D1F2187BD20007D2AE5 /* web3swift_numberFormattingUtil_Tests.swift in Sources */, + 81909D1E2187BC8B007D2AE5 /* web3swift_transactions_Tests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/web3swift/Web3/Classes/Web3+Utils.swift b/web3swift/Web3/Classes/Web3+Utils.swift index 2d8cd1dff..bfa1cf8d6 100755 --- a/web3swift/Web3/Classes/Web3+Utils.swift +++ b/web3swift/Web3/Classes/Web3+Utils.swift @@ -713,7 +713,11 @@ extension Web3.Utils { } else { remainingDigits = String(fullPaddedRemainder[firstDigit+1 ..< fullPaddedRemainder.count]) } - fullRemainder = firstDecimalUnit + decimalSeparator + remainingDigits + if remainingDigits != "" { + fullRemainder = firstDecimalUnit + decimalSeparator + remainingDigits + } else { + fullRemainder = firstDecimalUnit + } firstDigit = firstDigit + 1; break } diff --git a/web3swiftTests/scrypt_Tests.swift b/web3swiftTests/scrypt_Tests.swift deleted file mode 100755 index 21f6531e9..000000000 --- a/web3swiftTests/scrypt_Tests.swift +++ /dev/null @@ -1,68 +0,0 @@ -// -// scrypt_Tests.swift -// web3swift-iOS_Tests -// -// Created by Alexander Vlasov on 10.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. -// - -import Foundation -import XCTest -import CryptoSwift - -@testable import web3swift_iOS - -class scrypt_Tests: XCTestCase { - - func testScrypt() { - let password = Array("password".data(using: .ascii)!) - let salt = Array("NaCl".data(using: .ascii)!) - let deriver = try! Scrypt.init(password: password, salt: salt, dkLen: 64, N: 1024, r: 8, p: 16) - let derived = try! deriver.calculate() - let expected: [UInt8] = Array.init(hex: """ - fd ba be 1c 9d 34 72 00 78 56 e7 19 0d 01 e9 fe - 7c 6a d7 cb c8 23 78 30 e7 73 76 63 4b 37 31 62 - 2e af 30 d9 2e 22 a3 88 6f f1 09 27 9d 98 30 da - c7 27 af b9 4a 83 ee 6d 83 60 cb df a2 cc 06 40 -""".replacingOccurrences(of: " ", with: "").replacingOccurrences(of: "\n", with: "").replacingOccurrences(of: "\t", with: "")) - XCTAssertEqual(derived, expected) - } - - func testProfilerRun() { - // N: Int = 4096, R: Int = 6, P: Int = 1 - let password = Array("web3swift".data(using: .ascii)!) - let salt = Array(Data.randomBytes(length: 32)!) - let deriver = try! Scrypt(password: password, salt: salt, dkLen: 32, N: 4096, r: 6, p: 1) - let _ = try! deriver.calculate() - } - - func testReplacement() { - for _ in 0 ..< 5 { - // N: Int = 4096, R: Int = 6, P: Int = 1 - let password = "web3swift" - let salt = Data.randomBytes(length: 32)! - let derivedFromLibsodium = scrypt(password: password, salt: salt, length: 32, N: 4096, R: 6, P: 1)!.bytes - let deriver = try! Scrypt(password: Array(password.data(using: .ascii)!), salt: Array(salt), dkLen: 32, N: 4096, r: 6, p: 1) - let derived = try! deriver.calculate() - XCTAssertEqual(Array(derivedFromLibsodium), derived) - } - } - - func testLibsodiumPerformance() { - let password = "web3swift" - let salt = Data.randomBytes(length: 32)! - self.measure { - let _ = scrypt(password: password, salt: salt, length: 32, N: 4096, R: 6, P: 1)!.bytes - } - } - - func testNativePerformance() { - let password = "web3swift" - let salt = Data.randomBytes(length: 32)! - let deriver = try! Scrypt(password: password.data(using: .ascii)!.bytes, salt: salt.bytes, dkLen: 32, N: 4096, r: 6, p: 1) - self.measure { - let _ = try! deriver.calculate() - } - } - -} diff --git a/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift b/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift index 6234bfd3e..93a15adfc 100755 --- a/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift +++ b/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift @@ -1,15 +1,12 @@ +// web3swift // -// web3swift_AdvancedABIv2_Tests.swift -// web3swift-iOS_Tests -// -// Created by Anton Grigoriev on 02.07.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import CryptoSwift import BigInt -import Result @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_EIP67_Tests.swift b/web3swiftTests/web3swift_EIP67_Tests.swift index 69471c890..90b10f2a5 100755 --- a/web3swiftTests/web3swift_EIP67_Tests.swift +++ b/web3swiftTests/web3swift_EIP67_Tests.swift @@ -1,15 +1,12 @@ +// web3swift // -// web3swift_EIP67_Tests.swift -// web3swift-iOS_Tests -// -// Created by Anton Grigoriev on 02.07.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import CryptoSwift import BigInt -import Result @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_EIP681_Tests.swift b/web3swiftTests/web3swift_EIP681_Tests.swift index db2e3a1dd..6a79533b9 100644 --- a/web3swiftTests/web3swift_EIP681_Tests.swift +++ b/web3swiftTests/web3swift_EIP681_Tests.swift @@ -1,9 +1,7 @@ +// web3swift // -// web3swift_EIP681_Tests.swift -// web3swift-iOS_Tests -// -// Created by Alex Vlasov on 08.09.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest diff --git a/web3swiftTests/web3swift_ENS_Tests.swift b/web3swiftTests/web3swift_ENS_Tests.swift index 685f82a4a..1ec86aa36 100644 --- a/web3swiftTests/web3swift_ENS_Tests.swift +++ b/web3swiftTests/web3swift_ENS_Tests.swift @@ -1,13 +1,13 @@ +// web3swift // -// web3swift_ENS_Tests.swift -// web3swift-iOS_Tests -// -// Created by Alex Vlasov on 08.09.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest + @testable import web3swift_iOS + class web3swift_ENS_Tests: XCTestCase { func testDomainNormalization() { diff --git a/web3swiftTests/web3swift_ERC20_Class_Tests.swift b/web3swiftTests/web3swift_ERC20_Class_Tests.swift index ea66260a6..ca1e3c009 100644 --- a/web3swiftTests/web3swift_ERC20_Class_Tests.swift +++ b/web3swiftTests/web3swift_ERC20_Class_Tests.swift @@ -1,14 +1,11 @@ +// web3swift // -// web3swift_ERC20_Class_Tests.swift -// web3swift-iOS_Tests -// -// Created by Alex Vlasov on 28.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import BigInt -import Result @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_ERC20_Tests.swift b/web3swiftTests/web3swift_ERC20_Tests.swift index f2eb67dd1..58b4d0b01 100755 --- a/web3swiftTests/web3swift_ERC20_Tests.swift +++ b/web3swiftTests/web3swift_ERC20_Tests.swift @@ -1,154 +1,39 @@ +// web3swift // -// web3swiftERC20Tests.swift -// web3swift-iOS_Tests -// -// Created by Георгий Фесенко on 02/07/2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import BigInt +import EthereumAddress @testable import web3swift_iOS class web3swift_ERC20_Tests: XCTestCase { - func testERC20EncodeUsingABIv2() { - 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\"},]" - do { - let jsonData = jsonString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in - return try record.parse() - }) - let method = abiNative.filter({ (element) -> Bool in - switch element { - case .function(let function): - return function.name == "transfer" - default: - return false - } - }) - let address = "0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d" - let amount = BigUInt(10).power(18) - let parameters = [address, amount] as [AnyObject] - let result = method[0].encodeParameters(parameters) - print(abiNative) - let hex = result!.toHexString() - print(hex) - XCTAssert(hex == "a9059cbb000000000000000000000000e6877a4d8806e9a9f12eb2e8561ea6c1db19978d0000000000000000000000000000000000000000000000000de0b6b3a7640000", "Failed to encode ERC20") - let dummyTrue = BigUInt(1).abiEncode(bits: 256) - let data = dummyTrue! - let decoded = method[0].decodeReturnData(data) - let ret1 = decoded!["0"] as? Bool - let ret2 = decoded!["success"] as? Bool - XCTAssert(ret1 == true, "Failed to encode ERC20") - XCTAssert(ret2 == true, "Failed to encode ERC20") - } catch { - print(error) - XCTFail() - } - } - - func testERC20balanceUsingABIv2() { - 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\"},]" - do { - let jsonData = jsonString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in - return try record.parse() - }) - let constractAddress = EthereumAddress("0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0")! - let contract = ContractV2(abi: abiNative, at: constractAddress) - let options = Web3Options.defaultOptions() - let address = "0xd0a6e6c54dbc68db5db3a091b171a77407ff7ccf" - let parameters = [address] as [AnyObject] - let transaction = contract.method("balanceOf", parameters:parameters, options: options) - XCTAssert(transaction != nil, "Failed plasma funding transaction") - let requestDictionary = transaction!.encodeAsDictionary(from: EthereumAddress("0xE6877A4d8806e9A9F12eB2e8561EA6c1db19978d")!) - XCTAssert(requestDictionary != nil, "Can't read ERC20 balance") - } catch { - print(error) - } - } - - func testERC20nameUsingABIv2() { - 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\"},]" - do { - let jsonData = jsonString.data(using: .utf8) - let abi = try JSONDecoder().decode([ABIv2.Record].self, from: jsonData!) - let abiNative = try abi.map({ (record) -> ABIv2.Element in - return try record.parse() - }) - let method = abiNative.filter({ (element) -> Bool in - switch element { - case .function(let function): - return function.name == "name" - default: - return false - } - }) - let resultData = Data.fromHex("0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000a534f4e4d20546f6b656e00000000000000000000000000000000000000000000") - let result = method[0].decodeReturnData(resultData!) - let res = result!["0"] as! String - XCTAssert(res == "SONM Token", "Failed to create ERC20 name transaction") - } catch { - XCTFail() - print(error) - } - } - - func testInfuraERC20name() { + func testInfuraERC20name() throws { 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\"},]" let web3 = Web3.InfuraMainnetWeb3() let contractAddress = EthereumAddress("0x8932404A197D84Ec3Ea55971AADE11cdA1dddff1") let contract = web3.contract(jsonString, at: contractAddress) XCTAssert(contract != nil, "Failed to create ERC20 contract from ABI") - var options = Web3Options.defaultOptions() - options.from = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901") - let parameters = [] as [AnyObject] - let transactionIntermediate = contract?.method("name", parameters:parameters, options: options) - let result = transactionIntermediate!.call(options: options) - switch result { - case .failure(let error): - print(error) - XCTFail() - case .success(let response): - let name = response["0"] as? String - XCTAssert(name == "web3swift", "Failed to create ERC20 name transaction") - } - } - - func testInfuraERC20nameUsingABIv2() { - 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\"},]" - let web3 = Web3.InfuraMainnetWeb3() - let contractAddress = EthereumAddress("0x8932404A197D84Ec3Ea55971AADE11cdA1dddff1") - let contract = web3.contract(jsonString, at: contractAddress,abiVersion: 2) - XCTAssert(contract != nil, "Failed to create ERC20 contract from ABI") - var options = Web3Options.defaultOptions() - options.from = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901") let parameters = [] as [AnyObject] - let transactionIntermediate = contract?.method("name", parameters:parameters, options: options) - let result = transactionIntermediate!.call(options: options) - switch result { - case .failure(let error): - print(error) - XCTFail() - case .success(let response): - let name = response["0"] as? String - XCTAssert(name == "web3swift", "Failed to create ERC20 name transaction") - print("Token name = " + name!) - } + let readTX = contract!.read("name", parameters:parameters)! + readTX.transactionOptions.from = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901") + let response = try readTX.callPromise().wait() + let name = response["0"] as? String + XCTAssert(name == "web3swift", "Failed to create ERC20 name transaction") } - func testERC20tokenBalance() { + func testERC20tokenBalance() throws { let web3 = Web3.InfuraMainnetWeb3() let contract = web3.contract(Web3.Utils.erc20ABI, at: EthereumAddress("0x8932404A197D84Ec3Ea55971AADE11cdA1dddff1")!, abiVersion: 2) - var options = Web3Options(); - options.from = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! let addressOfUser = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - guard let tokenBalanceResult = contract?.method("balanceOf", parameters: [addressOfUser] as [AnyObject], options: options)?.call(options: nil) else {return XCTFail()} - guard case .success(let tokenBalance) = tokenBalanceResult, let bal = tokenBalance["0"] as? BigUInt else {return XCTFail()} + guard let readTX = contract?.read("balanceOf", parameters: [addressOfUser] as [AnyObject]) else {return XCTFail()} + readTX.transactionOptions.from = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! + let tokenBalance = try readTX.callPromise().wait() + guard let bal = tokenBalance["0"] as? BigUInt else {return XCTFail()} print(String(bal)) } diff --git a/web3swiftTests/web3swift_ObjC_Tests.swift b/web3swiftTests/web3swift_ObjC_Tests.swift index 7f123a7ba..5a1866b10 100755 --- a/web3swiftTests/web3swift_ObjC_Tests.swift +++ b/web3swiftTests/web3swift_ObjC_Tests.swift @@ -1,12 +1,11 @@ +// web3swift // -// web3swift_ObjC_Tests.swift -// web3swift-iOS_Tests -// -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest + @testable import web3swift_iOS class web3swift_ObjC_Tests: XCTestCase { diff --git a/web3swiftTests/web3swift_RLP_Tests.swift b/web3swiftTests/web3swift_RLP_Tests.swift index 19280ec40..b72eff7cc 100755 --- a/web3swiftTests/web3swift_RLP_Tests.swift +++ b/web3swiftTests/web3swift_RLP_Tests.swift @@ -1,15 +1,14 @@ +// web3swift // -// web3swiftRLPTests.swift -// web3swift-iOS_Tests -// -// Created by Георгий Фесенко on 02/07/2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import BigInt @testable import web3swift_iOS + class web3swift_RLP_Tests: XCTestCase { func testRLPdecodeTransaction() { diff --git a/web3swiftTests/web3swift_Tests.swift b/web3swiftTests/web3swift_Tests.swift index e6fbfedb8..9f1f4c9f3 100755 --- a/web3swiftTests/web3swift_Tests.swift +++ b/web3swiftTests/web3swift_Tests.swift @@ -1,9 +1,7 @@ +// web3swift // -// web3swiftTests.swift -// web3swiftTests -// -// Created by Alexander Vlasov on 04.12.2017. -// Copyright © 2017 Alexander Vlasov. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // diff --git a/web3swiftTests/web3swift_User_cases.swift b/web3swiftTests/web3swift_User_cases.swift index 3945fc830..cd3f34f3e 100755 --- a/web3swiftTests/web3swift_User_cases.swift +++ b/web3swiftTests/web3swift_User_cases.swift @@ -1,9 +1,7 @@ +// web3swift // -// web3swift_User_cases.swift -// web3swift-iOS_Tests -// -// Created by Alexander Vlasov on 04.07.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest diff --git a/web3swiftTests/web3swift_contractV2_Tests.swift b/web3swiftTests/web3swift_contractV2_Tests.swift deleted file mode 100755 index 495aa1c3c..000000000 --- a/web3swiftTests/web3swift_contractV2_Tests.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// web3swift_contractV2_Tests.swift -// web3swift-iOS_Tests -// -// Created by Антон Григорьев on 02.07.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. -// - -import XCTest -import CryptoSwift -import BigInt -import Result - -@testable import web3swift_iOS - -class web3swift_contractV2_Tests: XCTestCase { - - func testDecodeInputData() { - let contract = ContractV2.init(Web3.Utils.erc20ABI)! - let dataToDecode = Data.fromHex("0xa9059cbb000000000000000000000000cdd45864e794fe5e3e1b0045b77e62f4c43b8bd9000000000000000000000000000000000000000000000224b5f018c3e30142d5")! - let decoded = contract.decodeInputData("transfer", data: dataToDecode) - XCTAssert(decoded!["_to"] as? EthereumAddress == EthereumAddress("0xcdd45864e794fe5e3e1b0045b77e62f4c43b8bd9")!) - } - - func testDecodeInputDataWithoutMethodName() { - let contract = ContractV2.init(Web3.Utils.erc20ABI)! - let dataToDecode = Data.fromHex("0xa9059cbb000000000000000000000000cdd45864e794fe5e3e1b0045b77e62f4c43b8bd9000000000000000000000000000000000000000000000224b5f018c3e30142d5")! - let decoded = contract.decodeInputData(dataToDecode) - XCTAssert(decoded!["_to"] as? EthereumAddress == EthereumAddress("0xcdd45864e794fe5e3e1b0045b77e62f4c43b8bd9")!) - } - -} diff --git a/web3swiftTests/web3swift_infura_Tests.swift b/web3swiftTests/web3swift_infura_Tests.swift index 292a8a569..468780684 100755 --- a/web3swiftTests/web3swift_infura_Tests.swift +++ b/web3swiftTests/web3swift_infura_Tests.swift @@ -1,15 +1,14 @@ +// web3swift // -// web3swiftInfuraTests.swift -// web3swift-iOS_Tests -// -// Created by Георгий Фесенко on 02/07/2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import EthereumAddress @testable import web3swift_iOS + class web3swift_infura_Tests: XCTestCase { func testGetBalance() { diff --git a/web3swiftTests/web3swift_keystores_Tests.swift b/web3swiftTests/web3swift_keystores_Tests.swift index 866990ffc..b1abc3c3a 100755 --- a/web3swiftTests/web3swift_keystores_Tests.swift +++ b/web3swiftTests/web3swift_keystores_Tests.swift @@ -1,9 +1,7 @@ +// web3swift // -// web3swiftKyestoresTests.swift -// web3swift-iOS_Tests -// -// Created by Георгий Фесенко on 02/07/2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest diff --git a/web3swiftTests/web3swift_local_node_Tests.swift b/web3swiftTests/web3swift_local_node_Tests.swift index ce3cf74bb..0b30a553b 100755 --- a/web3swiftTests/web3swift_local_node_Tests.swift +++ b/web3swiftTests/web3swift_local_node_Tests.swift @@ -1,16 +1,13 @@ -//// -//// web3swift_local_node_Tests.swift -//// web3swift-iOS_Tests -//// -//// Created by Petr Korolev on 16/04/2018. -//// Copyright © 2018 Bankex Foundation. All rights reserved. -//// +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// import XCTest import CryptoSwift import BigInt -import Result @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_numberFormattingUtil_Tests.swift b/web3swiftTests/web3swift_numberFormattingUtil_Tests.swift index 5e981e17d..a912576fe 100755 --- a/web3swiftTests/web3swift_numberFormattingUtil_Tests.swift +++ b/web3swiftTests/web3swift_numberFormattingUtil_Tests.swift @@ -1,15 +1,12 @@ +// web3swift // -// web3swift_numberFormattingUtil_Tests.swift -// web3swift-iOS_Tests -// -// Created by Антон Григорьев on 02.07.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import CryptoSwift import BigInt -import Result @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_promises_Tests.swift b/web3swiftTests/web3swift_promises_Tests.swift index 478ab302a..c10b8f150 100755 --- a/web3swiftTests/web3swift_promises_Tests.swift +++ b/web3swiftTests/web3swift_promises_Tests.swift @@ -1,9 +1,7 @@ +// web3swift // -// web3swift_promises_Tests.swift -// web3swift-iOS_Tests -// -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest diff --git a/web3swiftTests/web3swift_remoteParsing_Tests.swift b/web3swiftTests/web3swift_remoteParsing_Tests.swift index 8c7cfe92c..603a25233 100755 --- a/web3swiftTests/web3swift_remoteParsing_Tests.swift +++ b/web3swiftTests/web3swift_remoteParsing_Tests.swift @@ -1,17 +1,12 @@ +// web3swift // -// web3swift_remote_Tests.swift -// web3swift-iOS_Tests +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // -// Created by Petr Korolev on 17/04/2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. -// - - import XCTest import CryptoSwift import BigInt -import Result @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift b/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift index d0a659c22..55cf179a6 100755 --- a/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift +++ b/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift @@ -1,15 +1,12 @@ +// web3swift // -// web3swift_personal_signature_Tests.swift -// web3swift-iOS_Tests -// -// Created by Anton Grigoriev on 02.07.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import CryptoSwift import BigInt -import Result import secp256k1_swift @testable import web3swift_iOS diff --git a/web3swiftTests/web3swift_transactions_Tests.swift b/web3swiftTests/web3swift_transactions_Tests.swift index 6a0ef9847..1109764ef 100755 --- a/web3swiftTests/web3swift_transactions_Tests.swift +++ b/web3swiftTests/web3swift_transactions_Tests.swift @@ -1,15 +1,13 @@ +// web3swift // -// web3swiftTransactionsTests.swift -// web3swift-iOS_Tests -// -// Created by Георгий Фесенко on 02/07/2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import XCTest import CryptoSwift import BigInt -import Result +import EthereumAddress @testable import web3swift_iOS @@ -46,51 +44,37 @@ class web3swift_transactions_Tests: XCTestCase { } func testEthSendExample() { - let web3 = Web3.InfuraMainnetWeb3() - let sendToAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - let tempKeystore = try! EthereumKeystoreV3(password: "") - let keystoreManager = KeystoreManager([tempKeystore!]) - web3.addKeystoreManager(keystoreManager) - let contract = web3.contract(Web3.Utils.coldWalletABI, at: sendToAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.value = Web3.Utils.parseToBigUInt("1.0", units: .eth) - options.from = keystoreManager.addresses?.first - let intermediate = contract?.method("fallback", options: options) - guard let result = intermediate?.send(password: "") else {return XCTFail()} - switch result { - case .success(_): - return XCTFail() - case .failure(let error): - print(error) - guard case .nodeError(let descr) = error else {return XCTFail()} + do { + let web3 = Web3.InfuraMainnetWeb3() + let sendToAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! + let tempKeystore = try! EthereumKeystoreV3(password: "") + let keystoreManager = KeystoreManager([tempKeystore!]) + web3.addKeystoreManager(keystoreManager) + let contract = web3.contract(Web3.Utils.coldWalletABI, at: sendToAddress, abiVersion: 2) + let value = Web3.Utils.parseToBigUInt("1.0", units: .eth) + let from = keystoreManager.addresses?.first + let writeTX = contract!.write("fallback")! + writeTX.transactionOptions.from = from + writeTX.transactionOptions.value = value + let _ = try writeTX.sendPromise(password: "").wait() + } catch Web3Error.nodeError(let descr) { guard descr == "insufficient funds for gas * price + value" else {return XCTFail()} + } catch { + print(error) + XCTFail() } } - func testTransactionReceipt() { + func testTransactionReceipt() throws { let web3 = Web3.InfuraMainnetWeb3() - let result = web3.eth.getTransactionReceipt("0x83b2433606779fd756417a863f26707cf6d7b2b55f5d744a39ecddb8ca01056e") - switch result { - case .failure(let error): - print(error) - XCTFail() - case .success(let response): - print(response) - XCTAssert(response.status == .ok) - } + let response = try web3.eth.getTransactionReceipt("0x83b2433606779fd756417a863f26707cf6d7b2b55f5d744a39ecddb8ca01056e") + XCTAssert(response.status == .ok) } - func testTransactionDetails() { + func testTransactionDetails() throws { let web3 = Web3.InfuraMainnetWeb3() - let result = web3.eth.getTransactionDetails("0x127519412cefd773b952a5413a4467e9119654f59a34eca309c187bd9f3a195a") - switch result { - case .failure(let error): - print(error) - XCTFail() - case .success(let response): - print(response) - XCTAssert(response.transaction.gasLimit == BigUInt(78423)) - } + let response = try web3.eth.getTransactionDetails("0x127519412cefd773b952a5413a4467e9119654f59a34eca309c187bd9f3a195a") + XCTAssert(response.transaction.gasLimit == BigUInt(78423)) } @@ -100,76 +84,4 @@ class web3swift_transactions_Tests: XCTestCase { guard let data = NSData(contentsOfFile: path) else {return nil} return data as Data } - - func testSendETH() { - guard let keystoreData = getKeystoreData() else {return} - guard let keystoreV3 = EthereumKeystoreV3.init(keystoreData) else {return XCTFail()} - let web3Rinkeby = Web3.InfuraRinkebyWeb3() - let keystoreManager = KeystoreManager.init([keystoreV3]) - web3Rinkeby.addKeystoreManager(keystoreManager) - guard case .success(let gasPriceRinkeby) = web3Rinkeby.eth.getGasPrice() else {return} - let sendToAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - guard let intermediate = web3Rinkeby.eth.sendETH(to: sendToAddress, amount: "0.001") else {return XCTFail()} - var options = Web3Options.defaultOptions() - options.from = keystoreV3.addresses?.first - options.gasPrice = gasPriceRinkeby - let result = intermediate.send(password: "BANKEXFOUNDATION", options: options) - switch result { - case .success(let res): - print(res) - case .failure(let error): - print(error) - XCTFail() - } - } - - func testTokenBalanceTransferOnMainNet() { - // BKX TOKEN - let web3 = Web3.InfuraMainnetWeb3() - let coldWalletAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - let contractAddress = EthereumAddress("0x8932404A197D84Ec3Ea55971AADE11cdA1dddff1")! - var options = Web3Options() - options.from = coldWalletAddress - let tempKeystore = try! EthereumKeystoreV3(password: "") - let keystoreManager = KeystoreManager([tempKeystore!]) - web3.addKeystoreManager(keystoreManager) - let contract = web3.contract(Web3.Utils.erc20ABI, at: contractAddress, abiVersion: 2)! - let bkxBalanceSend = contract.method("transfer", parameters: [coldWalletAddress, BigUInt(1)] as [AnyObject], options: options)!.call(options: nil) - switch bkxBalanceSend { - case .success(let result): - print(result) - case .failure(let error): - print(error) - XCTFail() - } - } - - func testTokenBalanceTransferOnMainNetUsingConvenience() { - // BKX TOKEN - let web3 = Web3.InfuraMainnetWeb3() - let coldWalletAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - let contractAddress = EthereumAddress("0x8932404A197D84Ec3Ea55971AADE11cdA1dddff1")! - let tempKeystore = try! EthereumKeystoreV3(password: "") - let keystoreManager = KeystoreManager([tempKeystore!]) - web3.addKeystoreManager(keystoreManager) - let intermediate = web3.eth.sendERC20tokensWithNaturalUnits(tokenAddress:contractAddress, from: coldWalletAddress, to: coldWalletAddress, amount: "1.0") - let gasEstimate = intermediate!.estimateGas(options: nil) - switch gasEstimate { - case .success(let result): - print(result) - case .failure(let error): - print(error) - XCTFail() - } - var options = Web3Options(); - options.gasLimit = gasEstimate.value! - let bkxBalanceSend = intermediate!.call(options: options) - switch bkxBalanceSend { - case .success(let result): - print(result) - case .failure(let error): - print(error) - XCTFail() - } - } } From 56e5b508e4e4599a4827dba2b0c5bc8c66116007 Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Tue, 30 Oct 2018 13:06:27 +0300 Subject: [PATCH 05/16] - cleanup - everything is fixed except of ENS and objective C --- web3swift.podspec | 1 + web3swift.xcodeproj/project.pbxproj | 36 ++- .../Classes/BigUInt+Extensions.swift | 16 ++ .../HookedFunctions/Classes/Web3+Wallet.swift | 53 ++-- .../Classes/Web3+Eth+ObjC.swift | 6 +- .../ERC20/Web3+ERC20.swift | 169 ++++++------ .../ERC721/Web3+ERC721.swift | 160 +++++------- .../Promises/Classes/Promise+Batching.swift | 6 +- .../Classes/Promise+HttpProvider.swift | 6 +- ...omise+Web3+Contract+GetIndexedEvents.swift | 8 +- .../Classes/Promise+Web3+Eth+Call.swift | 8 +- .../Promise+Web3+Eth+EstimateGas.swift | 8 +- .../Promise+Web3+Eth+GetAccounts.swift | 13 +- .../Classes/Promise+Web3+Eth+GetBalance.swift | 6 +- .../Promise+Web3+Eth+GetBlockByHash.swift | 6 +- .../Promise+Web3+Eth+GetBlockByNumber.swift | 6 +- .../Promise+Web3+Eth+GetBlockNumber.swift | 6 +- .../Promise+Web3+Eth+GetGasPrice.swift | 6 +- ...Promise+Web3+Eth+GetTransactionCount.swift | 6 +- ...omise+Web3+Eth+GetTransactionDetails.swift | 6 +- ...omise+Web3+Eth+GetTransactionReceipt.swift | 6 +- .../Promise+Web3+Eth+SendRawTransaction.swift | 8 +- .../Promise+Web3+Eth+SendTransaction.swift | 6 +- .../Promise+Web3+Intermediate+Send.swift | 9 - .../Classes/Promise+Web3+Personal+Sign.swift | 6 +- .../Promise+Web3+Personal+UnlockAccount.swift | 6 +- .../Classes/Promise+Web3+TxPool.swift | 8 +- web3swift/Web3/Classes/Web3+EventParser.swift | 70 ++--- web3swift/Web3/Classes/Web3+Protocols.swift | 9 +- .../Classes/Web3+ReadingTransaction.swift | 8 + .../Web3+TransactionIntermediate.swift | 241 ------------------ .../web3swift_AdvancedABIv2_Tests.swift | 138 ++-------- .../web3swift_ERC20_Class_Tests.swift | 7 +- web3swiftTests/web3swift_Tests.swift | 14 +- web3swiftTests/web3swift_promises_Tests.swift | 64 +++-- .../web3swift_remoteParsing_Tests.swift | 53 ++-- ...wift_rinkeby_personalSignature_Tests.swift | 36 +-- 37 files changed, 395 insertions(+), 826 deletions(-) create mode 100644 web3swift/Convenience/Classes/BigUInt+Extensions.swift delete mode 100755 web3swift/Promises/Classes/Promise+Web3+Intermediate+Send.swift delete mode 100755 web3swift/Web3/Classes/Web3+TransactionIntermediate.swift diff --git a/web3swift.podspec b/web3swift.podspec index 019f3eb16..54f5fcc76 100755 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -18,6 +18,7 @@ s.module_name = 'Web3swift' s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.11" s.source_files = "web3swift/**/*.{h,swift}", +s.exclude_files = "web3swift/ObjectiveCbridge/Classes/*.{swift}", "web3swift/Utils/Classes/EIP681.swift", "web3swift/Utils/Classes/ENS.swift", "web3swift/Utils/Classes/ENSResolver.swift" s.public_header_files = "web3swift/**/*.{h}" s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 3c5a512ee..071b82d95 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -88,6 +88,19 @@ 81909D1D2187BBAE007D2AE5 /* web3swift_ERC20_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7B20EA37B50030E0D6 /* web3swift_ERC20_Tests.swift */; }; 81909D1E2187BC8B007D2AE5 /* web3swift_transactions_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7920EA355D0030E0D6 /* web3swift_transactions_Tests.swift */; }; 81909D1F2187BD20007D2AE5 /* web3swift_numberFormattingUtil_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE220EA69B900DC7F32 /* web3swift_numberFormattingUtil_Tests.swift */; }; + 81909D2121884893007D2AE5 /* BigUInt+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D2021884893007D2AE5 /* BigUInt+Extensions.swift */; }; + 81909D2221884893007D2AE5 /* BigUInt+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D2021884893007D2AE5 /* BigUInt+Extensions.swift */; }; + 81909D252188494C007D2AE5 /* web3swift_keystores_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00E5FE7520EA34370030E0D6 /* web3swift_keystores_Tests.swift */; }; + 81909D2621884968007D2AE5 /* web3swift_promises_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821C20D5C6C10016741F /* web3swift_promises_Tests.swift */; }; + 81909D2721884FA4007D2AE5 /* web3swift_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD91B311FD769A6007BFB45 /* web3swift_Tests.swift */; }; + 81909D2821884FF8007D2AE5 /* web3swift_remoteParsing_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EFFCB6F208554EB008165FE /* web3swift_remoteParsing_Tests.swift */; }; + 81909D292188504D007D2AE5 /* web3swift_AdvancedABIv2_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5ADA20EA67D800DC7F32 /* web3swift_AdvancedABIv2_Tests.swift */; }; + 81909D2A21885067007D2AE5 /* web3swift_rinkeby_personalSignature_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E23B5AE020EA695400DC7F32 /* web3swift_rinkeby_personalSignature_Tests.swift */; }; + 81909D2B218852E2007D2AE5 /* Web3+ERC20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8159C50A21352CB700197B91 /* Web3+ERC20.swift */; }; + 81909D2C218852E2007D2AE5 /* Web3+ERC20.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8159C50A21352CB700197B91 /* Web3+ERC20.swift */; }; + 81909D2D218858EA007D2AE5 /* web3swift_ERC20_Class_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8159C50D2135901700197B91 /* web3swift_ERC20_Class_Tests.swift */; }; + 81909D2E21885B2C007D2AE5 /* Web3+ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2E94C5F217788E0005F54A0 /* Web3+ERC721.swift */; }; + 81909D2F21885B2C007D2AE5 /* Web3+ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2E94C5F217788E0005F54A0 /* Web3+ERC721.swift */; }; 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */; }; @@ -117,8 +130,6 @@ 81A1824020D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1823F20D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift */; }; 81A1824220D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1824120D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift */; }; 81A1824320D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1824120D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift */; }; - 81A1824520D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1824420D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift */; }; - 81A1824620D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1824420D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift */; }; 81A1824820D7DDA20016741F /* Promise+Web3+Personal+Sign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1824720D7DDA20016741F /* Promise+Web3+Personal+Sign.swift */; }; 81A1824920D7DDA20016741F /* Promise+Web3+Personal+Sign.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1824720D7DDA20016741F /* Promise+Web3+Personal+Sign.swift */; }; 81A1824B20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1824A20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift */; }; @@ -248,6 +259,7 @@ 81909D1121862D17007D2AE5 /* Web3+ReadingTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+ReadingTransaction.swift"; sourceTree = ""; }; 81909D1421862D37007D2AE5 /* Web3+MutatingTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+MutatingTransaction.swift"; sourceTree = ""; }; 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Eventloop.swift"; sourceTree = ""; }; + 81909D2021884893007D2AE5 /* BigUInt+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BigUInt+Extensions.swift"; sourceTree = ""; }; 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Eth+GetBalance.swift"; sourceTree = ""; }; 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+HttpProvider.swift"; sourceTree = ""; }; 81A1821C20D5C6C10016741F /* web3swift_promises_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_promises_Tests.swift; sourceTree = ""; }; @@ -264,7 +276,6 @@ 81A1823B20D79C270016741F /* Promise+Web3+Eth+Call.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Eth+Call.swift"; sourceTree = ""; }; 81A1823F20D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Eth+EstimateGas.swift"; sourceTree = ""; }; 81A1824120D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Eth+SendTransaction.swift"; sourceTree = ""; }; - 81A1824420D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Intermediate+Send.swift"; sourceTree = ""; }; 81A1824720D7DDA20016741F /* Promise+Web3+Personal+Sign.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Personal+Sign.swift"; sourceTree = ""; }; 81A1824A20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Personal+UnlockAccount.swift"; sourceTree = ""; }; 81A7B2502143C3A8004CD2C7 /* NameHash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NameHash.swift; sourceTree = ""; }; @@ -277,7 +288,6 @@ 81C0FCF320440F0900D82FAF /* Web3+Options.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Options.swift"; sourceTree = ""; }; 81C0FCF520440F9900D82FAF /* TransactionSigner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionSigner.swift; sourceTree = ""; }; 81C0FCF8204456E600D82FAF /* Web3+BrowserFunctions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+BrowserFunctions.swift"; sourceTree = ""; }; - 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+TransactionIntermediate.swift"; sourceTree = ""; }; 81C146F61FF274B200AA943E /* Web3+Structures.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+Structures.swift"; sourceTree = ""; }; 81C5DA272072E18200424CD6 /* NativeTypesEncoding+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NativeTypesEncoding+Extensions.swift"; sourceTree = ""; }; 81C5DA2D2074EBF500424CD6 /* EthereumContract.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EthereumContract.swift; sourceTree = ""; }; @@ -590,7 +600,6 @@ 81A1823B20D79C270016741F /* Promise+Web3+Eth+Call.swift */, 81A1823F20D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift */, 81A1824120D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift */, - 81A1824420D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift */, 81A1824720D7DDA20016741F /* Promise+Web3+Personal+Sign.swift */, 81A1824A20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift */, 81195AAF20D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift */, @@ -622,7 +631,6 @@ 810B0F9D1FEC5B9C00CF0DA2 /* Web3+Eth.swift */, 81C0FCF120440EB500D82FAF /* Web3+Protocols.swift */, 81C0FCF320440F0900D82FAF /* Web3+Options.swift */, - 81C0FCFC20449D1400D82FAF /* Web3+TransactionIntermediate.swift */, 818D16CE204D42910084D2A4 /* Web3+EventParser.swift */, 81EB1E4A208173D7003BD47F /* Web3+Personal.swift */, 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */, @@ -679,6 +687,7 @@ 8123E1C6200CBAC200B6D3AB /* Dictionary+Extension.swift */, 8123E1CA200CBB2200B6D3AB /* Array+Extension.swift */, 8113D2FF1FD7F30F0074282C /* String+Extension.swift */, + 81909D2021884893007D2AE5 /* BigUInt+Extensions.swift */, ); path = Classes; sourceTree = ""; @@ -992,6 +1001,7 @@ files = ( 81C146F71FF274B200AA943E /* Web3+Structures.swift in Sources */, 8104E2281FE82BDC00F952CB /* Web3+Utils.swift in Sources */, + 81909D2B218852E2007D2AE5 /* Web3+ERC20.swift in Sources */, 818ABD5D1FE95FC9002657BB /* Web3+Contract.swift in Sources */, 8113D2CA1FD7E1590074282C /* KeystoreManager.swift in Sources */, 817EBB1F2006265400E02EAA /* Base58.swift in Sources */, @@ -1009,6 +1019,7 @@ 8113D2C41FD7E1590074282C /* CryptoExtensions.swift in Sources */, 81A1822220D678060016741F /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */, 81A1824220D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift in Sources */, + 81909D2E21885B2C007D2AE5 /* Web3+ERC721.swift in Sources */, 817EBB2920075D2E00E02EAA /* BIP39.swift in Sources */, 815630022007B53C00A0EC2F /* BIP32Keystore.swift in Sources */, 818ABD5B1FE95F8F002657BB /* Web3+Instance.swift in Sources */, @@ -1018,7 +1029,6 @@ 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */, 81A1823720D6E2BB0016741F /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */, 818D16CF204D42910084D2A4 /* Web3+EventParser.swift in Sources */, - 81A1824520D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift in Sources */, 81C5DA282072E18200424CD6 /* NativeTypesEncoding+Extensions.swift in Sources */, 8123E1C7200CBAC200B6D3AB /* Dictionary+Extension.swift in Sources */, 985BFD4E216E2E0A00B28C14 /* Promise+Web3+TxPool.swift in Sources */, @@ -1036,6 +1046,7 @@ 8123E1C9200CBAF800B6D3AB /* Data+Extension.swift in Sources */, 817EBB23200649E000E02EAA /* RIPEMD160+StackOveflow.swift in Sources */, 8116666320455E33008D8AD0 /* Web3+Wallet.swift in Sources */, + 81909D2121884893007D2AE5 /* BigUInt+Extensions.swift in Sources */, 81DDECCF1FDF004E0063684A /* Web3.swift in Sources */, 81A1823420D6E1FD0016741F /* Promise+Web3+Eth+GetBlockByNumber.swift in Sources */, 81A1822820D678BF0016741F /* Promise+Web3+Eth+GetAccounts.swift in Sources */, @@ -1066,12 +1077,19 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 81909D292188504D007D2AE5 /* web3swift_AdvancedABIv2_Tests.swift in Sources */, 00E5FE8220EA3FF40030E0D6 /* web3swift_infura_Tests.swift in Sources */, + 81909D2A21885067007D2AE5 /* web3swift_rinkeby_personalSignature_Tests.swift in Sources */, + 81909D2821884FF8007D2AE5 /* web3swift_remoteParsing_Tests.swift in Sources */, + 81909D2721884FA4007D2AE5 /* web3swift_Tests.swift in Sources */, + 81909D252188494C007D2AE5 /* web3swift_keystores_Tests.swift in Sources */, + 81909D2621884968007D2AE5 /* web3swift_promises_Tests.swift in Sources */, 81909D1D2187BBAE007D2AE5 /* web3swift_ERC20_Tests.swift in Sources */, 81909D1C2187BB67007D2AE5 /* web3swift_RLP_Tests.swift in Sources */, 81909D1B2187B1FA007D2AE5 /* web3swift_User_cases.swift in Sources */, 81909D1F2187BD20007D2AE5 /* web3swift_numberFormattingUtil_Tests.swift in Sources */, 81909D1E2187BC8B007D2AE5 /* web3swift_transactions_Tests.swift in Sources */, + 81909D2D218858EA007D2AE5 /* web3swift_ERC20_Class_Tests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1081,6 +1099,7 @@ files = ( E2065FB82181D7D700701068 /* Promise+Web3+Eth+EstimateGas.swift in Sources */, E2065FB92181D7D700701068 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, + 81909D2C218852E2007D2AE5 /* Web3+ERC20.swift in Sources */, E2065FBA2181D7D700701068 /* Promise+Web3+TxPool.swift in Sources */, E2065FBB2181D7D700701068 /* Web3+TxPool.swift in Sources */, 4194811B203630530065A83B /* Web3+HttpProvider.swift in Sources */, @@ -1098,6 +1117,7 @@ 81D7D97620A3240900A193EC /* EthereumFilterEncodingExtensions.swift in Sources */, 41948126203630530065A83B /* Web3+Eth.swift in Sources */, 81A1822320D678060016741F /* Promise+Web3+Eth+GetBlockNumber.swift in Sources */, + 81909D2F21885B2C007D2AE5 /* Web3+ERC721.swift in Sources */, 4194812C203630530065A83B /* KeystoreManager.swift in Sources */, 81DFB400210775320011DC85 /* Web3+Infura.swift in Sources */, 81D7D97320A31FB700A193EC /* ComparisonExtensions.swift in Sources */, @@ -1125,6 +1145,7 @@ 41948135203630530065A83B /* EthereumKeystoreV3.swift in Sources */, 41948136203630530065A83B /* KeystoreV3JSONStructure.swift in Sources */, 8116666420455E33008D8AD0 /* Web3+Wallet.swift in Sources */, + 81909D2221884893007D2AE5 /* BigUInt+Extensions.swift in Sources */, 41948137203630530065A83B /* EthereumTransaction.swift in Sources */, 41948138203630530065A83B /* CryptoExtensions.swift in Sources */, 81C0FD052044A8AE00D82FAF /* Web3+Protocols.swift in Sources */, @@ -1140,7 +1161,6 @@ 4194813D203630530065A83B /* RIPEMD160+StackOveflow.swift in Sources */, 4194813E203630530065A83B /* Data+Extension.swift in Sources */, 81A1822F20D67BC30016741F /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */, - 81A1824620D7B91B0016741F /* Promise+Web3+Intermediate+Send.swift in Sources */, 81A1822C20D67A1B0016741F /* Promise+Web3+Eth+GetTransactionDetails.swift in Sources */, 81909D1321862D17007D2AE5 /* Web3+ReadingTransaction.swift in Sources */, 4194813F203630530065A83B /* Dictionary+Extension.swift in Sources */, diff --git a/web3swift/Convenience/Classes/BigUInt+Extensions.swift b/web3swift/Convenience/Classes/BigUInt+Extensions.swift new file mode 100644 index 000000000..d23acfbbc --- /dev/null +++ b/web3swift/Convenience/Classes/BigUInt+Extensions.swift @@ -0,0 +1,16 @@ +// +// RIPEMD160_SO.swift +// web3swift +// +// Created by Alexander Vlasov on 10.01.2018. +// + +import Foundation +import struct BigInt.BigUInt + +public extension BigUInt { + public init?(_ naturalUnits: String, _ ethereumUnits: Web3.Utils.Units) { + guard let value = Web3.Utils.parseToBigUInt(naturalUnits, units: ethereumUnits) else {return nil} + self = value + } +} diff --git a/web3swift/HookedFunctions/Classes/Web3+Wallet.swift b/web3swift/HookedFunctions/Classes/Web3+Wallet.swift index 887b361f8..30adb5086 100755 --- a/web3swift/HookedFunctions/Classes/Web3+Wallet.swift +++ b/web3swift/HookedFunctions/Classes/Web3+Wallet.swift @@ -6,74 +6,67 @@ import Foundation import BigInt -import Result import EthereumAddress extension web3.Web3Wallet { - public func getAccounts() -> Result<[EthereumAddress], Web3Error> { + public func getAccounts() throws -> [EthereumAddress] { guard let keystoreManager = self.web3.provider.attachedKeystoreManager else { - return Result.failure(Web3Error.walletError) + throw Web3Error.walletError } guard let ethAddresses = keystoreManager.addresses else { - return Result.failure(Web3Error.walletError) + throw Web3Error.walletError } - return Result(ethAddresses) + return ethAddresses } - public func getCoinbase() -> Result { - let result = self.getAccounts() - switch result { - case .failure(let error): - return Result.failure(error) - case .success(let addresses): - guard addresses.count > 0 else { - return Result.failure(Web3Error.walletError) - } - return Result(addresses[0]) + public func getCoinbase() throws -> EthereumAddress { + let addresses = try self.getAccounts() + guard addresses.count > 0 else { + throw Web3Error.walletError } + return addresses[0] } - public func signTX(transaction:inout EthereumTransaction, account: EthereumAddress, password: String = "web3swift") -> Result { + public func signTX(transaction:inout EthereumTransaction, account: EthereumAddress, password: String = "web3swift") throws -> Bool { do { guard let keystoreManager = self.web3.provider.attachedKeystoreManager else { - return Result.failure(Web3Error.walletError) + throw Web3Error.walletError } try Web3Signer.signTX(transaction: &transaction, keystore: keystoreManager, account: account, password: password) -// print(transaction) - return Result(true) + return true } catch { if error is AbstractKeystoreError { - return Result.failure(Web3Error.keystoreError(err: error as! AbstractKeystoreError)) + throw Web3Error.keystoreError(err: error as! AbstractKeystoreError) } - return Result.failure(Web3Error.generalError(err: error)) + throw Web3Error.generalError(err: error) } } - public func signPersonalMessage(_ personalMessage: String, account: EthereumAddress, password: String = "web3swift") -> Result { + public func signPersonalMessage(_ personalMessage: String, account: EthereumAddress, password: String = "web3swift") throws -> Data { guard let data = Data.fromHex(personalMessage) else { - return Result.failure(Web3Error.dataError) + throw Web3Error.dataError } - return self.signPersonalMessage(data, account: account, password: password) + return try self.signPersonalMessage(data, account: account, password: password) } - public func signPersonalMessage(_ personalMessage: Data, account: EthereumAddress, password: String = "web3swift") -> Result { + public func signPersonalMessage(_ personalMessage: Data, account: EthereumAddress, password: String = "web3swift") throws -> Data { do { guard let keystoreManager = self.web3.provider.attachedKeystoreManager else { - return Result.failure(Web3Error.walletError) + throw Web3Error.walletError } guard let data = try Web3Signer.signPersonalMessage(personalMessage, keystore: keystoreManager, account: account, password: password) else { - return Result.failure(Web3Error.walletError) + throw Web3Error.walletError } - return Result(data) + return data } catch{ if error is AbstractKeystoreError { - return Result.failure(Web3Error.keystoreError(err: error as! AbstractKeystoreError)) + throw Web3Error.keystoreError(err: error as! AbstractKeystoreError) } - return Result.failure(Web3Error.generalError(err: error)) + throw Web3Error.generalError(err: error) } } diff --git a/web3swift/ObjectiveCbridge/Classes/Web3+Eth+ObjC.swift b/web3swift/ObjectiveCbridge/Classes/Web3+Eth+ObjC.swift index e2c62d383..6995ec4a5 100755 --- a/web3swift/ObjectiveCbridge/Classes/Web3+Eth+ObjC.swift +++ b/web3swift/ObjectiveCbridge/Classes/Web3+Eth+ObjC.swift @@ -15,11 +15,12 @@ public final class _ObjCweb3Eth: NSObject { } public func getBalance(address: _ObjCEthereumAddress, onBlock: NSString = "latest", error: NSErrorPointer) -> _ObjCBigUInt? { + do { guard let addr = address.address else { error?.pointee = Web3Error.inputError(desc: "Address is empty") as NSError return nil } - guard let result = self.web3?.eth.getBalance(address: addr, onBlock: onBlock as String) else { + guard let balance = try self.web3?.eth.getBalance(address: addr) else { error?.pointee = Web3Error.processingError(desc: "Web3 object was not properly initialized") as NSError return nil } @@ -31,6 +32,9 @@ public final class _ObjCweb3Eth: NSObject { error?.pointee = web3error as NSError return nil } + } catch { + error?.pointee = error as NSError + } } public func getBlockNumber(error: NSErrorPointer) -> _ObjCBigUInt? { diff --git a/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift b/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift index c73ec9f73..b85fa7508 100644 --- a/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift +++ b/web3swift/PrecompiledContracts/ERC20/Web3+ERC20.swift @@ -6,8 +6,8 @@ import Foundation import BigInt -import Result import EthereumAddress +import PromiseKit // This namespace contains functions to work with ERC20 tokens. // variables are lazyly evaluated or global token information (name, ticker, total supply) @@ -18,7 +18,7 @@ public class ERC20 { private var _decimals: UInt8? = nil private var _hasReadProperties: Bool = false - public var options: Web3Options + public var transactionOptions: TransactionOptions public var web3: web3 public var provider: Web3Provider public var address: EthereumAddress @@ -33,9 +33,9 @@ public class ERC20 { self.web3 = web3 self.provider = provider self.address = address - var mergedOptions = web3.options + var mergedOptions = web3.transactionOptions mergedOptions.to = address - self.options = mergedOptions + self.transactionOptions = mergedOptions } public var name: String { @@ -66,140 +66,119 @@ public class ERC20 { if self._hasReadProperties { return } - defer { self._hasReadProperties = true } let contract = self.contract guard contract.contract.address != nil else {return} - guard let nameResult = contract.method("name", parameters: [] as [AnyObject], extraData: Data(), options: self.options)?.call(options: nil, onBlock: "latest") else {return} - switch nameResult { - case .success(let returned): - guard let res = returned["0"] as? String else {break} - self._name = res - default: - self._name = "" - } + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} - guard let symbol = contract.method("symbol", parameters: [] as [AnyObject], extraData: Data(), options: self.options)?.call(options: nil, onBlock: "latest") else {return} - switch symbol { - case .success(let returned): - guard let res = returned["0"] as? String else {break} - self._symbol = res - default: - self._symbol = "" - } + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} - guard let decimalsResult = contract.method("decimals", parameters: [] as [AnyObject], extraData: Data(), options: self.options)?.call(options: nil, onBlock: "latest") else {return} - switch decimalsResult { - case .success(let returned): - guard let res = returned["0"] as? BigUInt else {return} - self._decimals = UInt8(res) - default: - self._decimals = 255 - } + guard let decimalPromise = contract.read("decimals", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, decimalPromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let decimalsResult) = resolvedPromises[2] else {return} + guard let decimals = decimalsResult["0"] as? BigUInt else {return} + self._decimals = UInt8(decimals) + + self._hasReadProperties = true + }.wait() } - func getBalance(account: EthereumAddress) -> Result { + func getBalance(account: EthereumAddress) throws -> BigUInt{ let contract = self.contract - let result = contract.method("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), options: self.options)!.call(options: nil, onBlock: "latest") - switch result { - case .success(let returned): - guard let res = returned["0"] as? BigUInt else {return Result.failure(Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node"))} - return Result(res) - case .failure(let error): - return Result.failure(error) - } + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res } - public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) -> Result { + public func getAllowance(originalOwner: EthereumAddress, delegate: EthereumAddress) throws -> BigUInt { let contract = self.contract - let result = contract.method("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), options: self.options)!.call(options: nil, onBlock: "latest") - switch result { - case .success(let returned): - guard let res = returned["0"] as? BigUInt else {return Result.failure(Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node"))} - return Result(res) - case .failure(let error): - return Result.failure(error) - } + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("allowance", parameters: [originalOwner, delegate] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res } - public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) -> Result { + public func transfer(from: EthereumAddress, to: EthereumAddress, amount: String) throws -> WriteTransaction { let contract = self.contract - var basicOptions = Web3Options() + var basicOptions = TransactionOptions() basicOptions.from = from basicOptions.to = self.address + basicOptions.callOnBlock = .latest // get the decimals manually - let intermediate = contract.method("decimals", options: basicOptions)! - let callResult = intermediate.call(options: basicOptions, onBlock: "latest") + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() var decimals = BigUInt(0) - switch callResult { - case .success(let response): - guard let dec = response["0"], let decTyped = dec as? BigUInt else { - return Result.failure(Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals"))} - decimals = decTyped - break - case .failure(let error): - return Result.failure(error) - } + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + let intDecimals = Int(decimals) guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { - return Result.failure(Web3Error.inputError(desc: "Can not parse inputted amount")) + throw Web3Error.inputError(desc: "Can not parse inputted amount") } - let intermediateToSend = contract.method("transfer", parameters: [to, value] as [AnyObject], options: basicOptions)! - return Result(intermediateToSend) + let tx = contract.write("transfer", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx } - public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) -> Result { + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, amount: String) throws -> WriteTransaction { let contract = self.contract - var basicOptions = Web3Options() + var basicOptions = TransactionOptions() basicOptions.from = from basicOptions.to = self.address + basicOptions.callOnBlock = .latest // get the decimals manually - let intermediate = contract.method("decimals", options: basicOptions)! - let callResult = intermediate.call(options: basicOptions, onBlock: "latest") + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() var decimals = BigUInt(0) - switch callResult { - case .success(let response): - guard let dec = response["0"], let decTyped = dec as? BigUInt else { - return Result.failure(Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals"))} - decimals = decTyped - break - case .failure(let error): - return Result.failure(error) - } + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + let intDecimals = Int(decimals) guard let value = Web3.Utils.parseToBigUInt(amount, decimals: intDecimals) else { - return Result.failure(Web3Error.inputError(desc: "Can not parse inputted amount")) + throw Web3Error.inputError(desc: "Can not parse inputted amount") } - let intermediateToSend = contract.method("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], options: basicOptions)! - return Result(intermediateToSend) + + let tx = contract.write("transferFrom", parameters: [originalOwner, to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx } - public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) -> Result { + public func setAllowance(from: EthereumAddress, to: EthereumAddress, newAmount: String) throws -> WriteTransaction { let contract = self.contract - var basicOptions = Web3Options() + var basicOptions = TransactionOptions() basicOptions.from = from basicOptions.to = self.address + basicOptions.callOnBlock = .latest // get the decimals manually - let intermediate = contract.method("setAllowance", options: basicOptions)! - let callResult = intermediate.call(options: basicOptions, onBlock: "latest") + let callResult = try contract.read("decimals", transactionOptions: basicOptions)!.call() var decimals = BigUInt(0) - switch callResult { - case .success(let response): - guard let dec = response["0"], let decTyped = dec as? BigUInt else { - return Result.failure(Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals"))} - decimals = decTyped - break - case .failure(let error): - return Result.failure(error) - } + guard let dec = callResult["0"], let decTyped = dec as? BigUInt else { + throw Web3Error.inputError(desc: "Contract may be not ERC20 compatible, can not get decimals")} + decimals = decTyped + let intDecimals = Int(decimals) guard let value = Web3.Utils.parseToBigUInt(newAmount, decimals: intDecimals) else { - return Result.failure(Web3Error.inputError(desc: "Can not parse inputted amount")) + throw Web3Error.inputError(desc: "Can not parse inputted amount") } - let intermediateToSend = contract.method("setAllowance", parameters: [to, value] as [AnyObject], options: basicOptions)! - return Result(intermediateToSend) + + let tx = contract.write("setAllowance", parameters: [to, value] as [AnyObject], transactionOptions: basicOptions)! + return tx } diff --git a/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift b/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift index 909fa096f..15fc07687 100644 --- a/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift +++ b/web3swift/PrecompiledContracts/ERC721/Web3+ERC721.swift @@ -6,7 +6,7 @@ import Foundation import BigInt -import Result +import PromiseKit import EthereumAddress // This namespace contains functions to work with ERC721 tokens. @@ -18,7 +18,7 @@ public class ERC721 { private var _tokenURI: String? = nil private var _hasReadProperties: Bool = false - public var options: Web3Options + public var transactionOptions: TransactionOptions public var web3: web3 public var provider: Web3Provider public var address: EthereumAddress @@ -33,9 +33,9 @@ public class ERC721 { self.web3 = web3 self.provider = provider self.address = address - var mergedOptions = web3.options + var mergedOptions = web3.transactionOptions mergedOptions.to = address - self.options = mergedOptions + self.transactionOptions = mergedOptions } public var name: String { @@ -74,124 +74,104 @@ public class ERC721 { if self._hasReadProperties { return } - defer { self._hasReadProperties = true } let contract = self.contract guard contract.contract.address != nil else {return} - guard let nameResult = contract.method("name", parameters: [] as [AnyObject], extraData: Data(), options: self.options)?.call(options: nil, onBlock: "latest") else {return} - switch nameResult { - case .success(let returned): - guard let res = returned["0"] as? String else {break} - self._name = res - default: - self._name = "" - } + var transactionOptions = TransactionOptions.defaultOptions + transactionOptions.callOnBlock = .latest + guard let namePromise = contract.read("name", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} - guard let symbol = contract.method("symbol", parameters: [] as [AnyObject], extraData: Data(), options: self.options)?.call(options: nil, onBlock: "latest") else {return} - switch symbol { - case .success(let returned): - guard let res = returned["0"] as? String else {break} - self._symbol = res - default: - self._symbol = "" - } + guard let symbolPromise = contract.read("symbol", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} - guard let tokenId = contract.method("tokenId", parameters: [] as [AnyObject], extraData: Data(), options: self.options)?.call(options: nil, onBlock: "latest") else {return} - switch tokenId { - case .success(let returned): - guard let res = returned["0"] as? BigUInt else {break} - self._tokenId = res - default: - self._tokenId = 0 - } + guard let tokenIdPromise = contract.read("tokenId", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} - guard let tokenURI = contract.method("tokenURI", parameters: [_tokenId] as [AnyObject], extraData: Data(), options: self.options)?.call(options: nil, onBlock: "latest") else {return} - switch tokenURI { - case .success(let returned): - guard let res = returned["0"] as? String else {return} - self._tokenURI = res - default: - self._tokenURI = "" - } + guard let tokenURIpromise = contract.read("tokenURI", parameters: [] as [AnyObject], extraData: Data(), transactionOptions: transactionOptions)?.callPromise() else {return} + + let allPromises = [namePromise, symbolPromise, tokenIdPromise, tokenURIpromise] + let queue = self.web3.requestDispatcher.queue + when(resolved: allPromises).map(on: queue) { (resolvedPromises) -> Void in + guard case .fulfilled(let nameResult) = resolvedPromises[0] else {return} + guard let name = nameResult["0"] as? String else {return} + self._name = name + + guard case .fulfilled(let symbolResult) = resolvedPromises[1] else {return} + guard let symbol = symbolResult["0"] as? String else {return} + self._symbol = symbol + + guard case .fulfilled(let tokenIdResult) = resolvedPromises[2] else {return} + guard let tokenId = tokenIdResult["0"] as? BigUInt else {return} + self._tokenId = tokenId + + guard case .fulfilled(let tokenURIresult) = resolvedPromises[3] else {return} + guard let uri = tokenURIresult["0"] as? String else {return} + self._tokenURI = uri + + self._hasReadProperties = true + }.wait() } - public func getBalance(account: EthereumAddress) -> Result { + public func getBalance(account: EthereumAddress) throws -> BigUInt { let contract = self.contract - let result = contract.method("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), options: self.options)!.call(options: nil, onBlock: "latest") - switch result { - case .success(let returned): - guard let res = returned["0"] as? BigUInt else {return Result.failure(Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node"))} - return Result(res) - case .failure(let error): - return Result.failure(error) - } + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("balanceOf", parameters: [account] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res } - public func getOwner(tokenId: BigUInt) -> Result { + public func getOwner(tokenId: BigUInt) throws -> EthereumAddress{ let contract = self.contract - let result = contract.method("ownerOf", parameters: [tokenId] as [AnyObject], extraData: Data(), options: self.options)!.call(options: nil, onBlock: "latest") - switch result { - case .success(let returned): - guard let res = returned["0"] as? EthereumAddress else {return Result.failure(Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node"))} - return Result(res) - case .failure(let error): - return Result.failure(error) - } + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("ownerOf", parameters: [tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res } - public func getApproved(tokenId: BigUInt) -> Result { + public func getApproved(tokenId: BigUInt) throws -> EthereumAddress { let contract = self.contract - let result = contract.method("getApproved", parameters: [tokenId] as [AnyObject], extraData: Data(), options: self.options)!.call(options: nil, onBlock: "latest") - switch result { - case .success(let returned): - guard let res = returned["0"] as? EthereumAddress else {return Result.failure(Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node"))} - return Result(res) - case .failure(let error): - return Result.failure(error) - } + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("getApproved", parameters: [tokenId] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res } - public func tokenByIndex(index: BigUInt) -> Result { + public func tokenByIndex(index: BigUInt) throws -> BigUInt { let contract = self.contract - let result = contract.method("tokenByIndex", parameters: [index] as [AnyObject], extraData: Data(), options: self.options)!.call(options: nil, onBlock: "latest") - switch result { - case .success(let returned): - guard let res = returned["0"] as? BigUInt else {return Result.failure(Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node"))} - return Result(res) - case .failure(let error): - return Result.failure(error) - } + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenByIndex", parameters: [index] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res } - public func tokenOfOwnerByIndex(owner: EthereumAddress, index: BigUInt) -> Result { + public func tokenOfOwnerByIndex(owner: EthereumAddress, index: BigUInt) throws -> BigUInt { let contract = self.contract - let result = contract.method("tokenOfOwnerByIndex", parameters: [owner, index] as [AnyObject], extraData: Data(), options: self.options)!.call(options: nil, onBlock: "latest") - switch result { - case .success(let returned): - guard let res = returned["0"] as? BigUInt else {return Result.failure(Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node"))} - return Result(res) - case .failure(let error): - return Result.failure(error) - } + var transactionOptions = TransactionOptions() + transactionOptions.callOnBlock = .latest + let result = try contract.read("tokenOfOwnerByIndex", parameters: [owner, index] as [AnyObject], extraData: Data(), transactionOptions: self.transactionOptions)!.call(transactionOptions: transactionOptions) + guard let res = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Failed to get result of expected type from the Ethereum node")} + return res } - public func transfer(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt) -> Result { + public func transfer(from: EthereumAddress, to: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { let contract = self.contract - var basicOptions = Web3Options() + var basicOptions = TransactionOptions() basicOptions.from = from basicOptions.to = self.address - let intermediateToSend = contract.method("transfer", parameters: [to, tokenId] as [AnyObject], options: basicOptions)! - return Result(intermediateToSend) + let tx = contract.write("transfer", parameters: [to, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx } - public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) -> Result { + public func transferFrom(from: EthereumAddress, to: EthereumAddress, originalOwner: EthereumAddress, tokenId: BigUInt) throws -> WriteTransaction { let contract = self.contract - var basicOptions = Web3Options() + var basicOptions = TransactionOptions() basicOptions.from = from basicOptions.to = self.address - let intermediateToSend = contract.method("transferFrom", parameters: [originalOwner, to, tokenId] as [AnyObject], options: basicOptions)! - return Result(intermediateToSend) + let tx = contract.write("transferFrom", parameters: [originalOwner, to, tokenId] as [AnyObject], transactionOptions: basicOptions)! + return tx } } diff --git a/web3swift/Promises/Classes/Promise+Batching.swift b/web3swift/Promises/Classes/Promise+Batching.swift index a8362d902..982efa0e9 100755 --- a/web3swift/Promises/Classes/Promise+Batching.swift +++ b/web3swift/Promises/Classes/Promise+Batching.swift @@ -1,9 +1,7 @@ -// -// Promise+Batching.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+HttpProvider.swift b/web3swift/Promises/Classes/Promise+HttpProvider.swift index bb6cd2c35..94b1b5a50 100755 --- a/web3swift/Promises/Classes/Promise+HttpProvider.swift +++ b/web3swift/Promises/Classes/Promise+HttpProvider.swift @@ -1,9 +1,7 @@ -// -// Promise+HttpProvider.swift // web3swift // -// Created by Alexander Vlasov on 16.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Contract+GetIndexedEvents.swift b/web3swift/Promises/Classes/Promise+Web3+Contract+GetIndexedEvents.swift index a4753f70e..66391e1fe 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Contract+GetIndexedEvents.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Contract+GetIndexedEvents.swift @@ -1,9 +1,7 @@ +// web3swift // -// Promise+Web3+Contract+GetIndexedEvents.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 18.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift index c6fbf3cde..2ea622788 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift @@ -1,9 +1,7 @@ +// web3swift // -// Promise+Web3+Eth+Call.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 18.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift index 92f9fe150..8d95f6d45 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift @@ -1,9 +1,7 @@ +// web3swift // -// Promise+Web3+Eth+EstimateGas.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 18.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift index 7a067e285..9e01bf580 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetAccounts.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+GetAccounts.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation @@ -17,11 +15,10 @@ extension web3.Eth { if (self.web3.provider.attachedKeystoreManager != nil) { let promise = Promise<[EthereumAddress]>.pending() queue.async { - let result = self.web3.wallet.getAccounts() - switch result { - case .success(let allAccounts): + do { + let allAccounts = try self.web3.wallet.getAccounts() promise.resolver.fulfill(allAccounts) - case .failure(let error): + } catch { promise.resolver.reject(error) } } diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift index 12bccd559..92c69512d 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetBalance.swift @@ -1,9 +1,7 @@ -// -// DataConversion.swift // web3swift // -// Created by Alexander Vlasov on 16.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByHash.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByHash.swift index 7fbd0e2c2..90710d4fb 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByHash.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByHash.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+GetBlockByHash.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByNumber.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByNumber.swift index dc7ae46ce..ac92584e5 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByNumber.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockByNumber.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+GetBlockByNumber.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockNumber.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockNumber.swift index 45807b125..e8bc2676d 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockNumber.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetBlockNumber.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+GetBlockNumber.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetGasPrice.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetGasPrice.swift index 4a4611697..fbda2ace7 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetGasPrice.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetGasPrice.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+GetGasPrice.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift index 60cdfbb57..593280f03 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionCount.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+GetTransactionCount.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionDetails.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionDetails.swift index bc9444135..522f04307 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionDetails.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionDetails.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+GetTransactionDetails.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionReceipt.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionReceipt.swift index 6b61a1009..517a007ee 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionReceipt.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+GetTransactionReceipt.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+GetTransactionReceipt.swift // web3swift // -// Created by Alexander Vlasov on 17.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift index efbfca932..c84cc4dfc 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift @@ -1,9 +1,7 @@ +// web3swift // -// Promise+Web3+Eth+SendRawTransaction.swift -// web3swift-iOS -// -// Created by Alexander Vlasov on 18.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift index 269e4e784..a42446ef2 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Eth+SendTransaction.swift // web3swift // -// Created by Alexander Vlasov on 18.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Intermediate+Send.swift b/web3swift/Promises/Classes/Promise+Web3+Intermediate+Send.swift deleted file mode 100755 index 9c419e686..000000000 --- a/web3swift/Promises/Classes/Promise+Web3+Intermediate+Send.swift +++ /dev/null @@ -1,9 +0,0 @@ -// -// Promise+Web3+Intermediate+Send.swift -// web3swift -// -// Created by Alexander Vlasov on 18.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. -// - -// Placeholder until bug in Swift is resolved diff --git a/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift b/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift index 163dbfdac..a935b3e47 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Personal+Sign.swift // web3swift // -// Created by Alexander Vlasov on 18.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift b/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift index c1b6cd470..40c0067c4 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift @@ -1,9 +1,7 @@ -// -// Promise+Web3+Personal+UnlockAccount.swift // web3swift // -// Created by Alexander Vlasov on 18.06.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Promises/Classes/Promise+Web3+TxPool.swift b/web3swift/Promises/Classes/Promise+Web3+TxPool.swift index a183a8701..996fae706 100644 --- a/web3swift/Promises/Classes/Promise+Web3+TxPool.swift +++ b/web3swift/Promises/Classes/Promise+Web3+TxPool.swift @@ -1,9 +1,7 @@ +// web3swift // -// Promise+Web3+TxPool.swift -// web3swift-iOS -// -// Created by Jun Park on 10/10/2018. -// Copyright © 2018 The Matter Inc. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // import Foundation diff --git a/web3swift/Web3/Classes/Web3+EventParser.swift b/web3swift/Web3/Classes/Web3+EventParser.swift index 4bf2bc5e6..26fdd1f88 100755 --- a/web3swift/Web3/Classes/Web3+EventParser.swift +++ b/web3swift/Web3/Classes/Web3+EventParser.swift @@ -5,7 +5,6 @@ // import Foundation -import enum Result.Result import BigInt import PromiseKit fileprivate typealias PromiseResult = PromiseKit.Result @@ -38,16 +37,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func parseBlockByNumber(_ blockNumber: UInt64) -> Result<[EventParserResultProtocol], Web3Error> { - do { - let result = try self.parseBlockByNumberPromise(blockNumber).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func parseBlockByNumber(_ blockNumber: UInt64) throws -> [EventParserResultProtocol] { + let result = try self.parseBlockByNumberPromise(blockNumber).wait() + return result } /** @@ -62,16 +54,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func parseBlock(_ block: Block) -> Result<[EventParserResultProtocol], Web3Error> { - do { - let result = try self.parseBlockPromise(block).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func parseBlock(_ block: Block) throws -> [EventParserResultProtocol] { + let result = try self.parseBlockPromise(block).wait() + return result } /** @@ -86,16 +71,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func parseTransactionByHash(_ hash: Data) -> Result<[EventParserResultProtocol], Web3Error> { - do { - let result = try self.parseTransactionByHashPromise(hash).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func parseTransactionByHash(_ hash: Data) throws -> [EventParserResultProtocol] { + let result = try self.parseTransactionByHashPromise(hash).wait() + return result } /** @@ -110,16 +88,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func parseTransaction(_ transaction: EthereumTransaction) -> Result<[EventParserResultProtocol], Web3Error> { - do { - let result = try self.parseTransactionPromise(transaction).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func parseTransaction(_ transaction: EthereumTransaction) throws -> [EventParserResultProtocol] { + let result = try self.parseTransactionPromise(transaction).wait() + return result } } } @@ -259,16 +230,9 @@ extension web3.web3contract { - important: This call is synchronous */ - public func getIndexedEvents(eventName: String?, filter: EventFilter, joinWithReceipts: Bool = false) -> Result<[EventParserResultProtocol], Web3Error> { - do { - let result = try self.getIndexedEventsPromise(eventName: eventName, filter: filter, joinWithReceipts: joinWithReceipts).wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getIndexedEvents(eventName: String?, filter: EventFilter, joinWithReceipts: Bool = false) throws -> [EventParserResultProtocol] { + let result = try self.getIndexedEventsPromise(eventName: eventName, filter: filter, joinWithReceipts: joinWithReceipts).wait() + return result } } @@ -276,9 +240,7 @@ extension web3.web3contract { public func getIndexedEventsPromise(eventName: String?, filter: EventFilter, joinWithReceipts: Bool = false) -> Promise<[EventParserResultProtocol]> { let queue = self.web3.requestDispatcher.queue do { - guard let rawContract = self.contract as? EthereumContract else { - throw Web3Error.nodeError(desc: "ABIv1 is not supported for this method") - } + let rawContract = self.contract guard let preEncoding = encodeTopicToGetLogs(contract: rawContract, eventName: eventName, filter: filter) else { throw Web3Error.processingError(desc: "Failed to encode topic for request") } diff --git a/web3swift/Web3/Classes/Web3+Protocols.swift b/web3swift/Web3/Classes/Web3+Protocols.swift index ac4a4d0e9..91d6cb290 100755 --- a/web3swift/Web3/Classes/Web3+Protocols.swift +++ b/web3swift/Web3/Classes/Web3+Protocols.swift @@ -6,7 +6,6 @@ import Foundation import BigInt -import Result import class PromiseKit.Promise import EthereumAddress @@ -21,10 +20,10 @@ public protocol EventParserResultProtocol { /// Protocol for generic Ethereum event parser public protocol EventParserProtocol { - func parseTransaction(_ transaction: EthereumTransaction) -> Result<[EventParserResultProtocol], Web3Error> - func parseTransactionByHash(_ hash: Data) -> Result<[EventParserResultProtocol], Web3Error> - func parseBlock(_ block: Block) -> Result<[EventParserResultProtocol], Web3Error> - func parseBlockByNumber(_ blockNumber: UInt64) -> Result<[EventParserResultProtocol], Web3Error> + func parseTransaction(_ transaction: EthereumTransaction) throws -> [EventParserResultProtocol] + func parseTransactionByHash(_ hash: Data) throws -> [EventParserResultProtocol] + func parseBlock(_ block: Block) throws -> [EventParserResultProtocol] + func parseBlockByNumber(_ blockNumber: UInt64) throws -> [EventParserResultProtocol] func parseTransactionPromise(_ transaction: EthereumTransaction) -> Promise<[EventParserResultProtocol]> func parseTransactionByHashPromise(_ hash: Data) -> Promise<[EventParserResultProtocol]> func parseBlockByNumberPromise(_ blockNumber: UInt64) -> Promise<[EventParserResultProtocol]> diff --git a/web3swift/Web3/Classes/Web3+ReadingTransaction.swift b/web3swift/Web3/Classes/Web3+ReadingTransaction.swift index 0a54a4ab1..3d1740a56 100644 --- a/web3swift/Web3/Classes/Web3+ReadingTransaction.swift +++ b/web3swift/Web3/Classes/Web3+ReadingTransaction.swift @@ -81,4 +81,12 @@ public class ReadTransaction { } return returnPromise } + + public func estimateGas(transactionOptions: TransactionOptions? = nil) throws -> BigUInt { + return try self.estimateGasPromise(transactionOptions: transactionOptions).wait() + } + + public func call(transactionOptions: TransactionOptions? = nil) throws -> [String: Any] { + return try self.callPromise(transactionOptions: transactionOptions).wait() + } } diff --git a/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift b/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift deleted file mode 100755 index 3b0885a26..000000000 --- a/web3swift/Web3/Classes/Web3+TransactionIntermediate.swift +++ /dev/null @@ -1,241 +0,0 @@ -// web3swift -// -// Created by Alex Vlasov. -// Copyright © 2018 Alex Vlasov. All rights reserved. -// - -import Foundation -import enum Result.Result -import BigInt -import PromiseKit -fileprivate typealias PromiseResult = PromiseKit.Result - -extension web3.web3contract { - - /// TransactionIntermediate is an almost-ready transaction or a smart-contract function call. It bears all the required information - /// to call the smart-contract and decode the returned information, or estimate gas required for transaction, or send a transaciton - /// to the blockchain. - public class TransactionIntermediate{ - public var transaction:EthereumTransaction - public var contract: ContractProtocol - public var method: String - public var options: Web3Options? = Web3Options.defaultOptions() - var web3: web3 - public init (transaction: EthereumTransaction, web3 web3Instance: web3, contract: ContractProtocol, method: String, options: Web3Options?) { - self.transaction = transaction - self.web3 = web3Instance - self.contract = contract - self.contract.options = options - self.method = method - self.options = Web3Options.merge(web3.options, with: options) - if self.web3.provider.network != nil { - self.transaction.chainID = self.web3.provider.network?.chainID - } - } - - /** - *Send a prepared transaction to the blockchain. Internally checks the nonce for a sending account, assigns it, get a gas estimate and signs a transaction either locally or on the remote node.* - - - parameters: - - password: Password for a private key if transaction is signed locally - - options: Web3Options to override the previously assigned gas price, gas limit and value. - - onBlock: String field determines if nonce value and the gas estimate are based on the state of a blockchain on the latest mined block ("latest") or the expected state after all the transactions in memory pool are applied ("pending"). Using "pending" allows to send transactions one after another without waiting for inclusion of the previous one in some block. - - - returns: - - Result object - - - important: This call is synchronous - - */ - public func send(password: String = "web3swift", options: Web3Options? = nil, onBlock: String = "pending") throws -> TransactionSendingResult { - let result = try self.sendPromise(password: password, options: options, onBlock: onBlock).wait() - return result - } - - /** - *Calls a function of the smart-contract and parses the returned data to native objects.* - - - parameters: - - options: Web3Options to override the previously assigned gas price, gas limit and value. - - onBlock: String field determines if nonce value and the gas estimate are based on the state of a blockchain on the latest mined block ("latest") or the expected state after all the transactions in memory pool are applied ("pending"). Using "pending" allows to send transactions one after another without waiting for inclusion of the previous one in some block. - - - returns: - - Result object - - - important: This call is synchronous - - */ - public func call(options: Web3Options?, onBlock: String = "latest") throws -> [String:Any] { - let result = try self.callPromise(options: options, onBlock: onBlock).wait() - return result - } - - /** - *Estimates gas required to execute the transaction. Setting a gas limit lower than the estimate will most likely result in a failed transaction. If this call returns an error it can also indicate that transaction is invalid as itself.* - - - parameters: - - options: Web3Options to override the previously assigned gas price, gas limit and value. - - onBlock: String field determines if nonce value and the gas estimate are based on the state of a blockchain on the latest mined block ("latest") or the expected state after all the transactions in memory pool are applied ("pending"). Using "pending" allows to send transactions one after another without waiting for inclusion of the previous one in some block. - - - returns: - - Result object - - - important: This call is synchronous - - */ - public func estimateGas(options: Web3Options?, onBlock: String = "latest") throws -> BigUInt { - let result = try self.estimateGasPromise(options: options, onBlock: onBlock).wait() - return result - } - - /** - *Assembles (but does not sign!) a transaction by fetching the nonce value and applying provided options.* - - - parameters: - - options: Web3Options to override the previously assigned gas price, gas limit and value. - - onBlock: String field determines if nonce value and the gas estimate are based on the state of a blockchain on the latest mined block ("latest") or the expected state after all the transactions in memory pool are applied ("pending"). Using "pending" allows to send transactions one after another without waiting for inclusion of the previous one in some block. - - - returns: - - Result object - - - important: This call is synchronous - - */ - public func assemble(options: Web3Options? = nil, onBlock: String = "pending") throws -> EthereumTransaction { - let result = try self.assemblePromise(options: options, onBlock: onBlock).wait() - return result - } - - } -} - -extension web3.web3contract.TransactionIntermediate { - - public func assemblePromise(options: Web3Options? = nil, onBlock: String = "pending") -> Promise { - var assembledTransaction : EthereumTransaction = self.transaction - let queue = self.web3.requestDispatcher.queue - let returnPromise = Promise { seal in - guard let mergedOptions = Web3Options.merge(self.options, with: options) else { - seal.reject(Web3Error.inputError(desc: "Provided options are invalid")) - return - } - guard let from = mergedOptions.from else { - seal.reject(Web3Error.inputError(desc: "No 'from' field provided")) - return - } - var optionsForGasEstimation = Web3Options() - optionsForGasEstimation.from = mergedOptions.from - optionsForGasEstimation.to = mergedOptions.to - optionsForGasEstimation.value = mergedOptions.value - let getNoncePromise : Promise = self.web3.eth.getTransactionCountPromise(address: from, onBlock: onBlock) - let gasEstimatePromise : Promise = self.web3.eth.estimateGasPromise(assembledTransaction, options: optionsForGasEstimation, onBlock: onBlock) - let gasPricePromise : Promise = self.web3.eth.getGasPricePromise() - var promisesToFulfill: [Promise] = [getNoncePromise, gasPricePromise, gasPricePromise] - when(resolved: getNoncePromise, gasEstimatePromise, gasPricePromise).map(on: queue, { (results:[PromiseResult]) throws -> EthereumTransaction in - - promisesToFulfill.removeAll() - guard case .fulfilled(let nonce) = results[0] else { - throw Web3Error.processingError(desc: "Failed to fetch nonce") - } - guard case .fulfilled(let gasEstimate) = results[1] else { - throw Web3Error.processingError(desc: "Failed to fetch gas estimate") - } - guard case .fulfilled(let gasPrice) = results[2] else { - throw Web3Error.processingError(desc: "Failed to fetch gas price") - } - guard let estimate = Web3Options.smartMergeGasLimit(originalOptions: options, extraOptions: mergedOptions, gasEstimate: gasEstimate) else { - throw Web3Error.processingError(desc: "Failed to calculate gas estimate that satisfied options") - } - assembledTransaction.nonce = nonce - assembledTransaction.gasLimit = estimate - guard let finalGasPrice = Web3Options.smartMergeGasPrice(originalOptions: options, extraOptions: mergedOptions, priceEstimate: gasPrice) else { - throw Web3Error.processingError(desc: "Missing parameter of gas price for transaction") - } - assembledTransaction.gasPrice = finalGasPrice -// if assembledTransaction.gasPrice == 0 { -// if mergedOptions.gasPrice != nil { -// assembledTransaction.gasPrice = mergedOptions.gasPrice! -// } else { -// assembledTransaction.gasPrice = gasPrice -// } -// } - return assembledTransaction - }).done(on: queue) {tx in - seal.fulfill(tx) - }.catch(on: queue) {err in - seal.reject(err) - } - } - return returnPromise - } - - public func sendPromise(password:String = "web3swift", options: Web3Options? = nil, onBlock: String = "pending") -> Promise{ - let queue = self.web3.requestDispatcher.queue - return self.assemblePromise(options: options, onBlock: onBlock).then(on: queue) { transaction throws -> Promise in - guard let mergedOptions = Web3Options.merge(self.options, with: options) else { - throw Web3Error.inputError(desc: "Provided options are invalid") - } - var cleanedOptions = Web3Options() - cleanedOptions.from = mergedOptions.from - cleanedOptions.to = mergedOptions.to - return self.web3.eth.sendTransactionPromise(transaction, options: cleanedOptions, password: password) - } - } - - public func callPromise(options: Web3Options? = nil, onBlock: String = "latest") -> Promise<[String: Any]>{ - let assembledTransaction : EthereumTransaction = self.transaction - let queue = self.web3.requestDispatcher.queue - let returnPromise = Promise<[String:Any]> { seal in - guard let mergedOptions = Web3Options.merge(self.options, with: options) else { - seal.reject(Web3Error.inputError(desc: "Provided options are invalid")) - return - } - var optionsForCall = Web3Options() - optionsForCall.from = mergedOptions.from - optionsForCall.to = mergedOptions.to - optionsForCall.value = mergedOptions.value - let callPromise : Promise = self.web3.eth.callPromise(assembledTransaction, options: optionsForCall, onBlock: onBlock) - callPromise.done(on: queue) {(data:Data) throws in - do { - if (self.method == "fallback") { - let resultHex = data.toHexString().addHexPrefix() - seal.fulfill(["result": resultHex as Any]) - return - } - guard let decodedData = self.contract.decodeReturnData(self.method, data: data) else - { - throw Web3Error.processingError(desc: "Can not decode returned parameters") - } - seal.fulfill(decodedData) - } catch{ - seal.reject(error) - } - }.catch(on: queue) {err in - seal.reject(err) - } - } - return returnPromise - } - - public func estimateGasPromise(options: Web3Options? = nil, onBlock: String = "latest") -> Promise{ - let assembledTransaction : EthereumTransaction = self.transaction - let queue = self.web3.requestDispatcher.queue - let returnPromise = Promise { seal in - guard let mergedOptions = Web3Options.merge(self.options, with: options) else { - seal.reject(Web3Error.inputError(desc: "Provided options are invalid")) - return - } - var optionsForGasEstimation = Web3Options() - optionsForGasEstimation.from = mergedOptions.from - optionsForGasEstimation.to = mergedOptions.to - optionsForGasEstimation.value = mergedOptions.value - let promise = self.web3.eth.estimateGasPromise(assembledTransaction, options: optionsForGasEstimation, onBlock: onBlock) - promise.done(on: queue) {(estimate: BigUInt) in - seal.fulfill(estimate) - }.catch(on: queue) {err in - seal.reject(err) - } - } - return returnPromise - } -} diff --git a/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift b/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift index 93a15adfc..f9d487351 100755 --- a/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift +++ b/web3swiftTests/web3swift_AdvancedABIv2_Tests.swift @@ -7,168 +7,86 @@ import XCTest import CryptoSwift import BigInt +import EthereumAddress @testable import web3swift_iOS class web3swift_AdvancedABIv2_Tests: XCTestCase { - func testAdvancedABIv2() { + func testAdvancedABIv2() throws { let abiString = "[{\"constant\":true,\"inputs\":[],\"name\":\"testDynOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testDynArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStaticArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testSingle\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"t\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" let contractAddress = EthereumAddress("0xd14630167f878e92a40a1c12db4532f29cb3065e") let web3 = Web3.InfuraRinkebyWeb3() let contract = web3.contract(abiString, at: contractAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.from = contractAddress XCTAssert(contract != nil) - print(contract?.contract.allMethods) - let rawContract = contract?.contract as! ContractV2 - print(rawContract) - let intermediate = contract?.method("testSingle", options: options) - XCTAssertNotNil(intermediate) - let result = intermediate!.call(options: nil) - switch result { - case .success(let payload): - print(payload) - case .failure(let error): - print(error) - XCTFail() - } + let tx = contract!.read("testSingle") + let _ = try tx!.callPromise().wait() } - func testAdvancedABIv2staticArray() { + func testAdvancedABIv2staticArray() throws { let abiString = "[{\"constant\":true,\"inputs\":[],\"name\":\"testDynOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testDynArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStaticArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testSingle\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"t\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" let contractAddress = EthereumAddress("0xd14630167f878e92a40a1c12db4532f29cb3065e") let web3 = Web3.InfuraRinkebyWeb3() let contract = web3.contract(abiString, at: contractAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.from = contractAddress XCTAssert(contract != nil) - print(contract?.contract.allMethods) - let rawContract = contract?.contract as! ContractV2 - print(rawContract) - let intermediate = contract?.method("testStaticArray", options: options) - XCTAssertNotNil(intermediate) - let result = intermediate!.call(options: nil) - switch result { - case .success(let payload): - print(payload) - case .failure(let error): - print(error) - XCTFail() - } + let tx = contract?.read("testStaticArray") + XCTAssertNotNil(tx) + let _ = try tx!.callPromise().wait() } - func testAdvancedABIv2dynamicArray() { + func testAdvancedABIv2dynamicArray() throws { let abiString = "[{\"constant\":true,\"inputs\":[],\"name\":\"testDynOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testDynArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStaticArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testSingle\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"t\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" let contractAddress = EthereumAddress("0xd14630167f878e92a40a1c12db4532f29cb3065e") let web3 = Web3.InfuraRinkebyWeb3() let contract = web3.contract(abiString, at: contractAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.from = contractAddress XCTAssert(contract != nil) - print(contract?.contract.allMethods) - let rawContract = contract?.contract as! ContractV2 - print(rawContract) - let intermediate = contract?.method("testDynArray", options: options) - XCTAssertNotNil(intermediate) - let result = intermediate!.call(options: nil) - switch result { - case .success(let payload): - print(payload) - case .failure(let error): - print(error) - XCTFail() - } + let tx = contract?.read("testDynArray") + XCTAssertNotNil(tx) + let _ = try tx!.callPromise().wait() } - func testAdvancedABIv2dynamicArrayOfStrings() { + func testAdvancedABIv2dynamicArrayOfStrings() throws { let abiString = "[{\"constant\":true,\"inputs\":[],\"name\":\"testDynOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testDynArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStaticArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testSingle\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"t\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" let contractAddress = EthereumAddress("0xd14630167f878e92a40a1c12db4532f29cb3065e") let web3 = Web3.InfuraRinkebyWeb3() let contract = web3.contract(abiString, at: contractAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.from = contractAddress XCTAssert(contract != nil) - print(contract?.contract.allMethods) - let rawContract = contract?.contract as! ContractV2 - print(rawContract) - let intermediate = contract?.method("testDynOfDyn", options: options) - XCTAssertNotNil(intermediate) - let result = intermediate!.call(options: nil) - switch result { - case .success(let payload): - print(payload) - case .failure(let error): - print(error) - XCTFail() - } + let tx = contract?.read("testDynOfDyn") + XCTAssertNotNil(tx) + let _ = try tx!.callPromise().wait() } - func testAdvancedABIv2staticArrayOfStrings() { + func testAdvancedABIv2staticArrayOfStrings() throws { let abiString = "[{\"constant\":true,\"inputs\":[],\"name\":\"testDynOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStOfDyn\",\"outputs\":[{\"name\":\"ts\",\"type\":\"string[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testDynArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testStaticArray\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"ts\",\"type\":\"tuple[2]\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"testSingle\",\"outputs\":[{\"components\":[{\"name\":\"number\",\"type\":\"uint256\"},{\"name\":\"someText\",\"type\":\"string\"},{\"name\":\"staticArray\",\"type\":\"uint256[2]\"},{\"name\":\"dynamicArray\",\"type\":\"uint256[]\"},{\"name\":\"anotherDynamicArray\",\"type\":\"string[2]\"}],\"name\":\"t\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]" let contractAddress = EthereumAddress("0xd14630167f878e92a40a1c12db4532f29cb3065e")! let web3 = Web3.InfuraRinkebyWeb3() let contract = web3.contract(abiString, at: contractAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.from = contractAddress XCTAssert(contract != nil) - print(contract?.contract.allMethods) - let rawContract = contract?.contract as! ContractV2 - print(rawContract) - let intermediate = contract?.method("testStOfDyn", options: options) - XCTAssertNotNil(intermediate) - let result = intermediate!.call(options: nil) - switch result { - case .success(let payload): - print(payload) - case .failure(let error): - print(error) - XCTFail() - } + let tx = contract?.read("testStOfDyn") + XCTAssertNotNil(tx) + let _ = try tx!.callPromise().wait() } - func testEmptyArrayDecoding() { + func testEmptyArrayDecoding() throws { let abiString = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"empty\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" let contractAddress = EthereumAddress("0x200eb5ccda1c35b0f5bf82552fdd65a8aee98e79")! let web3 = Web3.InfuraRinkebyWeb3() let contract = web3.contract(abiString, at: contractAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.from = contractAddress XCTAssert(contract != nil) - print(contract?.contract.allMethods) - let rawContract = contract?.contract as! ContractV2 - print(rawContract) - let intermediate = contract?.method("empty", options: options) - XCTAssertNotNil(intermediate) - let result = intermediate!.call(options: nil) - switch result { - case .success(let payload): - print(payload) - case .failure(let error): - print(error) - XCTFail() - } + let tx = contract?.read("empty") + XCTAssertNotNil(tx) + let _ = try tx!.callPromise().wait() } - func testUserCase() { + func testUserCase() throws { let abiString = "[{\"constant\":true,\"inputs\":[],\"name\":\"getFlagData\",\"outputs\":[{\"name\":\"data\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"data\",\"type\":\"string\"}],\"name\":\"setFlagData\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" let contractAddress = EthereumAddress("0x811411e3cdfd4750cdd3552feb3b89a46ddb612e") let web3 = Web3.InfuraRinkebyWeb3() let contract = web3.contract(abiString, at: contractAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.from = contractAddress XCTAssert(contract != nil) - print(contract?.contract.allMethods) - let intermediate = contract?.method("getFlagData", options: options) - XCTAssertNotNil(intermediate) - let result = intermediate!.call(options: nil) - switch result { - case .success(let payload): - print(payload) - case .failure(let error): - print(error) - XCTFail() - } + let tx = contract?.read("getFlagData") + XCTAssertNotNil(tx) + let _ = try tx!.call() } } diff --git a/web3swiftTests/web3swift_ERC20_Class_Tests.swift b/web3swiftTests/web3swift_ERC20_Class_Tests.swift index ca1e3c009..cd7e420e2 100644 --- a/web3swiftTests/web3swift_ERC20_Class_Tests.swift +++ b/web3swiftTests/web3swift_ERC20_Class_Tests.swift @@ -6,6 +6,7 @@ import XCTest import BigInt +import EthereumAddress @testable import web3swift_iOS @@ -21,13 +22,13 @@ class web3swift_ERC20_Class_Tests: XCTestCase { XCTAssert(erc20token.decimals == 18) } - func testERC20tokenBalanceAndAllowance() { + func testERC20tokenBalanceAndAllowance() throws { let web3 = Web3.InfuraMainnetWeb3() let w3sTokenAddress = EthereumAddress("0x8932404A197D84Ec3Ea55971AADE11cdA1dddff1")! let erc20token = ERC20.init(web3: web3, provider: web3.provider, address: w3sTokenAddress) let userAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - guard case .success(let balance) = erc20token.getBalance(account: userAddress) else {return XCTFail()} - guard case .success(let allowance) = erc20token.getAllowance(originalOwner: userAddress, delegate: userAddress) else {return XCTFail()} + let balance = try erc20token.getBalance(account: userAddress) + let allowance = try erc20token.getAllowance(originalOwner: userAddress, delegate: userAddress) XCTAssert(String(balance) == "1024000000000000000000") XCTAssert(allowance == 0) } diff --git a/web3swiftTests/web3swift_Tests.swift b/web3swiftTests/web3swift_Tests.swift index 9f1f4c9f3..a5940136c 100755 --- a/web3swiftTests/web3swift_Tests.swift +++ b/web3swiftTests/web3swift_Tests.swift @@ -8,7 +8,7 @@ import XCTest import CryptoSwift import BigInt -import Result +import EthereumAddress import secp256k1_swift @testable import web3swift_iOS @@ -92,15 +92,13 @@ class web3swift_Tests: XCTestCase { XCTAssert(privKey != nil, "Failed to create new private key") } - func testUserCaseEventParsing() { + func testUserCaseEventParsing() throws { let contractAddress = EthereumAddress("0x7ff546aaccd379d2d1f241e1d29cdd61d4d50778") let jsonString = "[{\"constant\":false,\"inputs\":[{\"name\":\"_id\",\"type\":\"string\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_id\",\"type\":\"string\"},{\"indexed\":true,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"}]" let web3 = Web3.InfuraRinkebyWeb3() let contract = web3.contract(jsonString, at: contractAddress, abiVersion: 2) guard let eventParser = contract?.createEventParser("Deposit", filter: nil) else {return XCTFail()} - let present = eventParser.parseBlockByNumber(UInt64(2138657)) - guard case .success(let pres) = present else {return XCTFail()} - print(pres) + let pres = try eventParser.parseBlockByNumber(UInt64(2138657)) XCTAssert(pres.count == 1) } @@ -133,11 +131,11 @@ class web3swift_Tests: XCTestCase { let contract = web3.contract(jsonString, at: addr, abiVersion: 2) XCTAssert(contract != nil) let allMethods = contract!.contract.allMethods - let userDeviceCount = try contract!.method("userDeviceCount", parameters: [addr as AnyObject], options: nil)?.callPromise().wait() + let userDeviceCount = try contract!.read("userDeviceCount", parameters: [addr as AnyObject])?.callPromise().wait() print(userDeviceCount) - let totalUsers = try contract!.method("totalUsers", parameters: [], options: nil)?.callPromise().wait() + let totalUsers = try contract!.read("totalUsers", parameters: [])?.callPromise().wait() print(totalUsers) - let user = try contract!.method("users", parameters: [0 as AnyObject], options: nil)?.callPromise().wait() + let user = try contract!.read("users", parameters: [0 as AnyObject])?.callPromise().wait() print(user) print(allMethods) } catch { diff --git a/web3swiftTests/web3swift_promises_Tests.swift b/web3swiftTests/web3swift_promises_Tests.swift index c10b8f150..d388ffc49 100755 --- a/web3swiftTests/web3swift_promises_Tests.swift +++ b/web3swiftTests/web3swift_promises_Tests.swift @@ -7,11 +7,13 @@ import XCTest import PromiseKit import BigInt +import EthereumAddress @testable import web3swift_iOS class web3swift_promises_Tests: XCTestCase { var urlSession : URLSession? + func testGetBalancePromise() { do { let web3 = Web3.InfuraMainnetWeb3() @@ -41,11 +43,10 @@ class web3swift_promises_Tests: XCTestCase { let keystoreManager = KeystoreManager([tempKeystore!]) web3.addKeystoreManager(keystoreManager) let contract = web3.contract(Web3.Utils.coldWalletABI, at: sendToAddress, abiVersion: 2) - var options = Web3Options.defaultOptions() - options.value = Web3.Utils.parseToBigUInt("1.0", units: .eth) - options.from = keystoreManager.addresses?.first - let intermediate = contract?.method("fallback", options: options) - let esimate = try intermediate!.estimateGasPromise(options: nil).wait() + guard let writeTX = contract?.write("fallback") else {return XCTFail()} + writeTX.transactionOptions.from = tempKeystore!.addresses?.first + writeTX.transactionOptions.value = BigUInt("1.0", .eth) + let esimate = try writeTX.estimateGasPromise().wait() print(esimate) XCTAssert(esimate == 21000) } catch{ @@ -54,33 +55,32 @@ class web3swift_promises_Tests: XCTestCase { } } - func testSendETHPromise() { - do { - guard let keystoreData = getKeystoreData() else {return} - guard let keystoreV3 = EthereumKeystoreV3.init(keystoreData) else {return XCTFail()} - let web3Rinkeby = Web3.InfuraRinkebyWeb3() - let keystoreManager = KeystoreManager.init([keystoreV3]) - web3Rinkeby.addKeystoreManager(keystoreManager) - guard case .success(let gasPriceRinkeby) = web3Rinkeby.eth.getGasPrice() else {return} - let sendToAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - guard let intermediate = web3Rinkeby.eth.sendETH(to: sendToAddress, amount: "0.001") else {return XCTFail()} - var options = Web3Options.defaultOptions() - options.from = keystoreV3.addresses?.first - options.gasPrice = gasPriceRinkeby - let result = try intermediate.sendPromise(options: options).wait() - print(result) - } catch { - print(error) - XCTFail() - } - } +// func testSendETHPromise() { +// do { +// guard let keystoreData = getKeystoreData() else {return} +// guard let keystoreV3 = EthereumKeystoreV3.init(keystoreData) else {return XCTFail()} +// let web3Rinkeby = Web3.InfuraRinkebyWeb3() +// let keystoreManager = KeystoreManager.init([keystoreV3]) +// web3Rinkeby.addKeystoreManager(keystoreManager) +// let gasPriceRinkeby = try web3Rinkeby.eth.getGasPrice() +// let sendToAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! +// guard let writeTX = web3Rinkeby.eth.sendETH(to: sendToAddress, amount: "0.001") else {return XCTFail()} +// writeTX.transactionOptions.from = keystoreV3.addresses?.first +// writeTX.transactionOptions.gasPrice = .manual(gasPriceRinkeby) +// let result = try writeTX.sendPromise().wait() +// print(result) +// } catch { +// print(error) +// XCTFail() +// } +// } func testERC20tokenBalancePromise() { do { let web3 = Web3.InfuraMainnetWeb3() let contract = web3.contract(Web3.Utils.erc20ABI, at: EthereumAddress("0x8932404A197D84Ec3Ea55971AADE11cdA1dddff1")!, abiVersion: 2) let addressOfUser = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! - let tokenBalance = try contract!.method("balanceOf", parameters: [addressOfUser] as [AnyObject], options: nil)!.callPromise(options: nil).wait() + let tokenBalance = try contract!.read("balanceOf", parameters: [addressOfUser] as [AnyObject])!.callPromise().wait() guard let bal = tokenBalance["0"] as? BigUInt else {return XCTFail()} print(String(bal)) } catch { @@ -134,6 +134,18 @@ class web3swift_promises_Tests: XCTestCase { guard let data = NSData(contentsOfFile: path) else {return nil} return data as Data } + +// func testRegenerateKeystore() { +// let data = getKeystoreData()! +// let ks = EthereumKeystoreV3.init(data)! +// let _ = try! ks.UNSAFE_getPrivateKeyData(password: "BANKEXFOUNDATION", account: ks.addresses!.first!) +// try! ks.regenerate(oldPassword: "BANKEXFOUNDATION", newPassword: "web3swift") +// let newData = try! ks.serialize() +// let bundle = Bundle(for: type(of: self)) +// guard let path = bundle.path(forResource: "key", ofType: "json") else {return} +// let url = URL.init(fileURLWithPath: path) +// try! newData?.write(to: url) +// } } diff --git a/web3swiftTests/web3swift_remoteParsing_Tests.swift b/web3swiftTests/web3swift_remoteParsing_Tests.swift index 603a25233..637106d39 100755 --- a/web3swiftTests/web3swift_remoteParsing_Tests.swift +++ b/web3swiftTests/web3swift_remoteParsing_Tests.swift @@ -7,20 +7,19 @@ import XCTest import CryptoSwift import BigInt +import EthereumAddress @testable import web3swift_iOS class web3swift_remoteParsing_Tests: XCTestCase { - func testEventParsing1usingABIv2() { + func testEventParsing1usingABIv2() throws { 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\"},]" let contractAddress = EthereumAddress("0x45245bc59219eeaaf6cd3f382e078a461ff9de7b") let web3 = Web3.InfuraMainnetWeb3() let contract = web3.contract(jsonString, at: contractAddress, abiVersion: 2) guard let eventParser = contract?.createEventParser("Transfer", filter: nil) else {return XCTFail()} - let present = eventParser.parseBlockByNumber(UInt64(5200088)) - guard case .success(let pres) = present else {return XCTFail()} - print(pres) + let pres = try eventParser.parseBlockByNumber(UInt64(5200088)) XCTAssert(pres.count == 1) let decoded = pres[0].decodedResult XCTAssert(decoded["name"] as! String == "Transfer") @@ -31,28 +30,24 @@ class web3swift_remoteParsing_Tests: XCTestCase { XCTAssert(pres[0].transactionReceipt!.transactionHash.toHexString().addHexPrefix() == "0xcb235e8c6ecda032bc82c1084d2159ab82e7e4de35be703da6e80034bc577673") } - func testEventParsing2usingABIv2() { + func testEventParsing2usingABIv2() throws { 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\"},]" let web3 = Web3.InfuraMainnetWeb3() let contract = web3.contract(jsonString, at: nil, abiVersion: 2) guard let eventParser = contract?.createEventParser("Transfer", filter: nil) else {return XCTFail()} - let present = eventParser.parseBlockByNumber(UInt64(5200120)) - guard case .success(let pres) = present else {return XCTFail()} - print(pres) + let pres = try eventParser.parseBlockByNumber(UInt64(5200120)) XCTAssert(pres.count == 81) } - func testEventParsing3usingABIv2() { + func testEventParsing3usingABIv2() throws { 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\"},]" let web3 = Web3.InfuraMainnetWeb3() let contract = web3.contract(jsonString, at: nil, abiVersion: 2) guard let eventParser = contract?.createEventParser("Transfer", filter: nil) else {return XCTFail()} - let blockNumber = web3.eth.getBlockNumber() - guard case .success(let currentBlock) = blockNumber else {return XCTFail()} + let currentBlock = try web3.eth.getBlockNumber() let currentBlockAsInt = UInt64(currentBlock) for i in currentBlockAsInt-1 ... currentBlockAsInt { - let present = eventParser.parseBlockByNumber(i) - guard case .success(let pres) = present else {return XCTFail()} + let pres = try eventParser.parseBlockByNumber(i) for p in pres { print("Block " + String(i) + "\n") print("Emitted by contract " + p.contractAddress.address + "\n") @@ -64,7 +59,7 @@ class web3swift_remoteParsing_Tests: XCTestCase { } } - func testEventParsing4usingABIv2() { + func testEventParsing4usingABIv2() throws { 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\"},]" let web3 = Web3.InfuraMainnetWeb3() let contract = web3.contract(jsonString, at: nil, abiVersion: 2) @@ -72,16 +67,14 @@ class web3swift_remoteParsing_Tests: XCTestCase { filter.addresses = [EthereumAddress("0x53066cddbc0099eb6c96785d9b3df2aaeede5da3")!] filter.parameterFilters = [([EthereumAddress("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5")!] as [EventFilterable]), ([EthereumAddress("0xd5395c132c791a7f46fa8fc27f0ab6bacd824484")!] as [EventFilterable])] guard let eventParser = contract?.createEventParser("Transfer", filter: filter) else {return XCTFail()} - let present = eventParser.parseBlockByNumber(UInt64(5200120)) - guard case .success(let pres) = present else {return XCTFail()} - print(pres) + let pres = try eventParser.parseBlockByNumber(UInt64(5200120)) XCTAssert(pres.count == 1) //TODO: - Make following assert // with filter would be // [web3swift_iOS.EventLog(address: web3swift_iOS.EthereumAddress(_address: "0x53066cddbc0099eb6c96785d9b3df2aaeede5da3", type: web3swift_iOS.EthereumAddress.AddressType.normal), data: 32 bytes, logIndex: 132, removed: false, topics: [32 bytes, 32 bytes, 32 bytes])], status: web3swift_iOS.TransactionReceipt.TXStatus.ok, logsBloom: Optional(web3swift_iOS.EthereumBloomFilter(bytes: 256 bytes))), contractAddress: web3swift_iOS.EthereumAddress(_address: "0x53066cddbc0099eb6c96785d9b3df2aaeede5da3", type: web3swift_iOS.EthereumAddress.AddressType.normal), decodedResult: ["name": "Transfer", "1": web3swift_iOS.EthereumAddress(_address: "0xd5395c132c791a7f46fa8fc27f0ab6bacd824484", type: web3swift_iOS.EthereumAddress.AddressType.normal), "_from": web3swift_iOS.EthereumAddress(_address: "0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5", type: web3swift_iOS.EthereumAddress.AddressType.normal), "_to": web3swift_iOS.EthereumAddress(_address: "0xd5395c132c791a7f46fa8fc27f0ab6bacd824484", type: web3swift_iOS.EthereumAddress.AddressType.normal), "2": 5000000000000000000, "0": web3swift_iOS.EthereumAddress(_address: "0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5", type: web3swift_iOS.EthereumAddress.AddressType.normal), "_value": 5000000000000000000])] } - func testEventParsing5usingABIv2() { + func testEventParsing5usingABIv2() throws { 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\"},]" let web3 = Web3.InfuraMainnetWeb3() let contract = web3.contract(jsonString, at: nil, abiVersion: 2) @@ -90,18 +83,11 @@ class web3swift_remoteParsing_Tests: XCTestCase { filter.toBlock = .blockNumber(UInt64(5200120)) filter.addresses = [EthereumAddress("0x53066cddbc0099eb6c96785d9b3df2aaeede5da3")!] filter.parameterFilters = [([EthereumAddress("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5")!] as [EventFilterable]), ([EthereumAddress("0xd5395c132c791a7f46fa8fc27f0ab6bacd824484")!] as [EventFilterable])] - guard let eventParserResult = contract?.getIndexedEvents(eventName: "Transfer", filter: filter) else {return XCTFail()} - switch eventParserResult { - case .success(let result): - print(result) - XCTAssert(result.count == 1) - case .failure(let error): - print(error) - XCTFail() - } + guard let result = try contract?.getIndexedEvents(eventName: "Transfer", filter: filter) else {return XCTFail()} + XCTAssert(result.count == 1) } - func testEventParsing6usingABIv2() { + func testEventParsing6usingABIv2() throws { 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\"},]" let web3 = Web3.InfuraMainnetWeb3() let contract = web3.contract(jsonString, at: nil, abiVersion: 2) @@ -110,14 +96,7 @@ class web3swift_remoteParsing_Tests: XCTestCase { filter.toBlock = .blockNumber(UInt64(5200120)) filter.addresses = [EthereumAddress("0x53066cddbc0099eb6c96785d9b3df2aaeede5da3")!] filter.parameterFilters = [([EthereumAddress("0xefdcf2c36f3756ce7247628afdb632fa4ee12ec5")!] as [EventFilterable]), (nil as [EventFilterable]?)] - guard let eventParserResult = contract?.getIndexedEvents(eventName: "Transfer", filter: filter) else {return XCTFail()} - switch eventParserResult { - case .success(let result): - print(result) - XCTAssert(result.count == 2) - case .failure(let error): - print(error) - XCTFail() - } + guard let result = try contract?.getIndexedEvents(eventName: "Transfer", filter: filter) else {return XCTFail()} + XCTAssert(result.count == 2) } } diff --git a/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift b/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift index 55cf179a6..23818ef1e 100755 --- a/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift +++ b/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift @@ -8,6 +8,7 @@ import XCTest import CryptoSwift import BigInt import secp256k1_swift +import EthereumAddress @testable import web3swift_iOS @@ -34,7 +35,7 @@ class web3swift_rinkeby_personalSignature_Tests: XCTestCase { XCTAssert(expectedAddress == signer, "Failed to sign personal message") } - func testPersonalSignatureOnContract() { + func testPersonalSignatureOnContract() throws { let web3 = Web3.InfuraRinkebyWeb3() let tempKeystore = try! EthereumKeystoreV3(password: "") let keystoreManager = KeystoreManager([tempKeystore!]) @@ -51,30 +52,17 @@ class web3swift_rinkeby_personalSignature_Tests: XCTestCase { print("Personal hash = " + Web3.Utils.hashPersonalMessage(message.data(using: .utf8)!)!.toHexString()) let jsonString = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[{\"name\":\"_message\",\"type\":\"string\"}],\"name\":\"hashPersonalMessage\",\"outputs\":[{\"name\":\"hash\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_message\",\"type\":\"string\"},{\"name\":\"v\",\"type\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"recoverSigner\",\"outputs\":[{\"name\":\"signer\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}]" let contract = web3.contract(jsonString, at: EthereumAddress("0x6f1745a39059268e8e4572e97897b50e4aab62a8"), abiVersion: 2) - var options = Web3Options.defaultOptions() - options.from = expectedAddress - var intermediate = contract?.method("hashPersonalMessage", parameters: [message as AnyObject], options: options) - var result = intermediate!.call(options: nil) - switch result { - case .success(let res): - guard let hash = res["hash"]! as? Data else {return XCTFail()} - XCTAssert(Web3.Utils.hashPersonalMessage(message.data(using: .utf8)!)! == hash) - case .failure(let error): - print(error) - XCTFail() - } + var tx = contract?.read("hashPersonalMessage", parameters: [message as AnyObject]) + tx?.transactionOptions.from = expectedAddress + var result = try tx!.call() + guard let hash = result["hash"]! as? Data else {return XCTFail()} + XCTAssert(Web3.Utils.hashPersonalMessage(message.data(using: .utf8)!)! == hash) - intermediate = contract?.method("recoverSigner", parameters: [message, unmarshalledSignature.v, Data(unmarshalledSignature.r), Data(unmarshalledSignature.s)] as [AnyObject], options: options) - result = intermediate!.call(options: nil) - switch result { - case .success(let res): - guard let signer = res["signer"]! as? EthereumAddress else {return XCTFail()} - print(signer) - XCTAssert(signer == expectedAddress) - case .failure(let error): - print(error) - XCTFail() - } + tx = contract?.read("recoverSigner", parameters: [message, unmarshalledSignature.v, Data(unmarshalledSignature.r), Data(unmarshalledSignature.s)] as [AnyObject]) + tx?.transactionOptions.from = expectedAddress + result = try tx!.call() + guard let signer = result["signer"]! as? EthereumAddress else {return XCTFail()} + XCTAssert(signer == expectedAddress) } } From 3adf09b1b969e60b68045387a67e43fda4f53dc4 Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Tue, 30 Oct 2018 13:07:49 +0300 Subject: [PATCH 06/16] - allow EIP681 for now --- web3swift.podspec | 2 +- web3swift.xcodeproj/project.pbxproj | 4 ++++ web3swift/Utils/Classes/EIP681.swift | 35 ++++++++++++++-------------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/web3swift.podspec b/web3swift.podspec index 54f5fcc76..4810a7be4 100755 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -18,7 +18,7 @@ s.module_name = 'Web3swift' s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.11" s.source_files = "web3swift/**/*.{h,swift}", -s.exclude_files = "web3swift/ObjectiveCbridge/Classes/*.{swift}", "web3swift/Utils/Classes/EIP681.swift", "web3swift/Utils/Classes/ENS.swift", "web3swift/Utils/Classes/ENSResolver.swift" +s.exclude_files = "web3swift/ObjectiveCbridge/Classes/*.{swift}", "web3swift/Utils/Classes/ENS.swift", "web3swift/Utils/Classes/ENSResolver.swift" s.public_header_files = "web3swift/**/*.{h}" s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 071b82d95..776d2c4ee 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -101,6 +101,8 @@ 81909D2D218858EA007D2AE5 /* web3swift_ERC20_Class_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8159C50D2135901700197B91 /* web3swift_ERC20_Class_Tests.swift */; }; 81909D2E21885B2C007D2AE5 /* Web3+ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2E94C5F217788E0005F54A0 /* Web3+ERC721.swift */; }; 81909D2F21885B2C007D2AE5 /* Web3+ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2E94C5F217788E0005F54A0 /* Web3+ERC721.swift */; }; + 81909D4A218864A8007D2AE5 /* EIP681.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2862143DBF6004CD2C7 /* EIP681.swift */; }; + 81909D4B218864A9007D2AE5 /* EIP681.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2862143DBF6004CD2C7 /* EIP681.swift */; }; 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */; }; @@ -1059,6 +1061,7 @@ 817EBB162004FE4200E02EAA /* Web3+HttpProvider.swift in Sources */, 8103BBCC2077B84400499769 /* PlainKeystore.swift in Sources */, 81DFB3FF210775320011DC85 /* Web3+Infura.swift in Sources */, + 81909D4A218864A8007D2AE5 /* EIP681.swift in Sources */, 81C0FCF220440EB500D82FAF /* Web3+Protocols.swift in Sources */, 81C0FCF420440F0900D82FAF /* Web3+Options.swift in Sources */, 81A1822E20D67BC30016741F /* Promise+Web3+Eth+GetTransactionReceipt.swift in Sources */, @@ -1157,6 +1160,7 @@ 81C0FD042044A8A700D82FAF /* Web3+Options.swift in Sources */, 81A1823220D68A110016741F /* Promise+Batching.swift in Sources */, 4194813C203630530065A83B /* Base58.swift in Sources */, + 81909D4B218864A9007D2AE5 /* EIP681.swift in Sources */, 8103BBCD2077B84400499769 /* PlainKeystore.swift in Sources */, 4194813D203630530065A83B /* RIPEMD160+StackOveflow.swift in Sources */, 4194813E203630530065A83B /* Data+Extension.swift in Sources */, diff --git a/web3swift/Utils/Classes/EIP681.swift b/web3swift/Utils/Classes/EIP681.swift index 61b1e0e40..f53329ff8 100644 --- a/web3swift/Utils/Classes/EIP681.swift +++ b/web3swift/Utils/Classes/EIP681.swift @@ -120,23 +120,24 @@ extension Web3 { switch val { case .ethereumAddress(let ethereumAddress): nativeValue = ethereumAddress as AnyObject - case .ensAddress(let ens): - let web = web3(provider: InfuraProvider(Networks.fromInt(Int(code.chainID ?? 1)) ?? Networks.Mainnet)!) - let ensModel = ENS(web3: web) - let resolver = ensModel.resolver(forDomain: ens) - switch resolver { - case .failure(_): - nativeValue = ens as AnyObject - case .success(var res): - let address = res.addr(forDomain: ens) - switch address { - case .failure(_): - nativeValue = ens as AnyObject - case .success(let res): - nativeValue = res as AnyObject - } - } - + default: + return nil +// case .ensAddress(let ens): +// let web = web3(provider: InfuraProvider(Networks.fromInt(Int(code.chainID ?? 1)) ?? Networks.Mainnet)!) +// let ensModel = ENS(web3: web) +// let resolver = ensModel.resolver(forDomain: ens) +// switch resolver { +// case .failure(_): +// nativeValue = ens as AnyObject +// case .success(var res): +// let address = res.addr(forDomain: ens) +// switch address { +// case .failure(_): +// nativeValue = ens as AnyObject +// case .success(let res): +// nativeValue = res as AnyObject +// } +// } } case .uint(bits: _): if let val = BigUInt(value, radix: 10) { From 7a2178da1fc0928015ea4a0124a4b6b3d525f0cc Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Tue, 30 Oct 2018 13:26:34 +0300 Subject: [PATCH 07/16] - Import cleanups --- web3swift.podspec | 4 ++-- web3swift/Transaction/Classes/TransactionSigner.swift | 1 - web3swift/Utils/Classes/ENS.swift | 1 - web3swift/Utils/Classes/ENSResolver.swift | 1 - web3swift/Web3/Classes/Web3+Personal.swift | 1 - web3swift/Web3/Classes/Web3+TxPool.swift | 1 - web3swift/Web3/Classes/Web3.swift | 1 - 7 files changed, 2 insertions(+), 8 deletions(-) diff --git a/web3swift.podspec b/web3swift.podspec index 4810a7be4..ce711da4a 100755 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -29,6 +29,6 @@ s.dependency 'PromiseKit', '~> 6.3' s.dependency 'scrypt', '~> 2.0' s.dependency 'secp256k1_swift', '~> 1.0.3' s.dependency 'SwiftRLP', '~> 1.1' -s.dependency 'EthereumAddress', '~> 1.0.1' -s.dependemcy 'EthereumABI', '~> 1.1.1' +s.dependency 'EthereumAddress', '~> 1.0.0' +s.dependency 'EthereumABI', '~> 1.1.1' end diff --git a/web3swift/Transaction/Classes/TransactionSigner.swift b/web3swift/Transaction/Classes/TransactionSigner.swift index aa962bcf0..b00b5d8c4 100755 --- a/web3swift/Transaction/Classes/TransactionSigner.swift +++ b/web3swift/Transaction/Classes/TransactionSigner.swift @@ -5,7 +5,6 @@ // import Foundation -import Result import BigInt import secp256k1_swift import EthereumAddress diff --git a/web3swift/Utils/Classes/ENS.swift b/web3swift/Utils/Classes/ENS.swift index 567fe7d20..dab9235e1 100644 --- a/web3swift/Utils/Classes/ENS.swift +++ b/web3swift/Utils/Classes/ENS.swift @@ -6,7 +6,6 @@ import Foundation import BigInt -import Result import EthereumAddress public class ENS { diff --git a/web3swift/Utils/Classes/ENSResolver.swift b/web3swift/Utils/Classes/ENSResolver.swift index ac9689c7d..e37cd38ec 100644 --- a/web3swift/Utils/Classes/ENSResolver.swift +++ b/web3swift/Utils/Classes/ENSResolver.swift @@ -6,7 +6,6 @@ import Foundation import BigInt -import Result import EthereumAddress public struct ResolverENS { diff --git a/web3swift/Web3/Classes/Web3+Personal.swift b/web3swift/Web3/Classes/Web3+Personal.swift index 2b9060899..4486ddbb4 100755 --- a/web3swift/Web3/Classes/Web3+Personal.swift +++ b/web3swift/Web3/Classes/Web3+Personal.swift @@ -6,7 +6,6 @@ import Foundation import BigInt -import Result import EthereumAddress extension web3.Personal { diff --git a/web3swift/Web3/Classes/Web3+TxPool.swift b/web3swift/Web3/Classes/Web3+TxPool.swift index 25ff46003..a9a58b6fe 100644 --- a/web3swift/Web3/Classes/Web3+TxPool.swift +++ b/web3swift/Web3/Classes/Web3+TxPool.swift @@ -5,7 +5,6 @@ // import Foundation -import Result import BigInt extension web3.TxPool { diff --git a/web3swift/Web3/Classes/Web3.swift b/web3swift/Web3/Classes/Web3.swift index 33ca06458..064d6c25e 100755 --- a/web3swift/Web3/Classes/Web3.swift +++ b/web3swift/Web3/Classes/Web3.swift @@ -5,7 +5,6 @@ // import Foundation -import Result public enum Web3Error: Error { case transactionSerializationError From 7f83ea28b2755c17bd7b0959f7a5e9d9edd1e02c Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Tue, 30 Oct 2018 13:43:37 +0300 Subject: [PATCH 08/16] - Remove "Result" everywhere - Make Podfile more explicit --- web3swift.podspec | 5 +-- .../Classes/Web3+BrowserFunctions.swift | 27 ++++++------- web3swift/Web3/Classes/Web3+Personal.swift | 32 ++++++--------- web3swift/Web3/Classes/Web3+TxPool.swift | 39 +++++-------------- web3swift/Web3/Classes/Web3.swift | 14 +++---- web3swift/web3swift-Bridging-Header.h | 6 +-- web3swift/web3swift.h | 6 +-- ...wift_rinkeby_personalSignature_Tests.swift | 11 ++---- 8 files changed, 52 insertions(+), 88 deletions(-) diff --git a/web3swift.podspec b/web3swift.podspec index ce711da4a..77ba9080e 100755 --- a/web3swift.podspec +++ b/web3swift.podspec @@ -17,9 +17,8 @@ s.swift_version = '4.1' s.module_name = 'Web3swift' s.ios.deployment_target = "9.0" s.osx.deployment_target = "10.11" -s.source_files = "web3swift/**/*.{h,swift}", -s.exclude_files = "web3swift/ObjectiveCbridge/Classes/*.{swift}", "web3swift/Utils/Classes/ENS.swift", "web3swift/Utils/Classes/ENSResolver.swift" -s.public_header_files = "web3swift/**/*.{h}" +s.source_files = "web3swift/{PrecompiledContracts,Promises,Web3,Contract,KeystoreManager,Transaction,Convenience}/Classes/*.{h,swift}", "web3swift/Utils/Classes/{EIP67Code, EIP681}.swift", "web3swift/HookedFunctions/Classes/Web3+Wallet.swift", "web3swift/web3swift.h" +s.public_header_files = "web3swift/web3swift.h" s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.frameworks = 'CoreImage' diff --git a/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift b/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift index 28ad05158..376f2f7f1 100755 --- a/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift +++ b/web3swift/HookedFunctions/Classes/Web3+BrowserFunctions.swift @@ -111,21 +111,22 @@ extension web3.BrowserFunctions { return self.prepareTxForApproval(transaction, options: options) } - public func prepareTxForApproval(_ trans: EthereumTransaction, options opts: Web3Options) -> (transaction: EthereumTransaction?, options: Web3Options?) { - var transaction = trans - var options = opts - guard let _ = options.from else {return (nil, nil)} - let gasPriceResult = self.web3.eth.getGasPrice() - if case .failure(_) = gasPriceResult { + public func prepareTxForApproval(_ trans: EthereumTransaction, options opts: Web3Options) throws -> (transaction: EthereumTransaction?, options: Web3Options?) { + do { + var transaction = trans + var options = opts + guard let _ = options.from else {return (nil, nil)} + let gasPrice = try self.web3.eth.getGasPrice() + transaction.gasPrice = gasPrice + options.gasPrice = gasPrice + guard let gasEstimate = self.estimateGas(transaction, options: options) else {return (nil, nil)} + transaction.gasLimit = gasEstimate + options.gasLimit = gasEstimate + print(transaction) + return (transaction, options) + } catch { return (nil, nil) } - transaction.gasPrice = gasPriceResult.value! - options.gasPrice = gasPriceResult.value! - guard let gasEstimate = self.estimateGas(transaction, options: options) else {return (nil, nil)} - transaction.gasLimit = gasEstimate - options.gasLimit = gasEstimate - print(transaction) - return (transaction, options) } public func signTransaction(_ transactionJSON: [String: Any], password: String = "web3swift") -> String? { diff --git a/web3swift/Web3/Classes/Web3+Personal.swift b/web3swift/Web3/Classes/Web3+Personal.swift index 4486ddbb4..0363be491 100755 --- a/web3swift/Web3/Classes/Web3+Personal.swift +++ b/web3swift/Web3/Classes/Web3+Personal.swift @@ -24,13 +24,9 @@ extension web3.Personal { - important: This call is synchronous */ - public func signPersonalMessage(message: Data, from: EthereumAddress, password:String = "web3swift") -> Result { - do { - let result = try self.signPersonalMessagePromise(message: message, from: from, password: password).wait() - return Result(result) - } catch { - return Result.failure(error as! Web3Error) - } + public func signPersonalMessage(message: Data, from: EthereumAddress, password:String = "web3swift") throws -> Data { + let result = try self.signPersonalMessagePromise(message: message, from: from, password: password).wait() + return result } /** @@ -47,13 +43,9 @@ extension web3.Personal { - important: This call is synchronous. Does nothing if private keys are stored locally. */ - public func unlockAccount(account: EthereumAddress, password:String = "web3swift", seconds: UInt64 = 300) -> Result { - do { - let result = try self.unlockAccountPromise(account: account).wait() - return Result(result) - } catch { - return Result.failure(error as! Web3Error) - } + public func unlockAccount(account: EthereumAddress, password:String = "web3swift", seconds: UInt64 = 300) throws -> Bool { + let result = try self.unlockAccountPromise(account: account).wait() + return result } /** @@ -67,11 +59,11 @@ extension web3.Personal { - Result object */ - public func ecrecover(personalMessage: Data, signature: Data) -> Result { + public func ecrecover(personalMessage: Data, signature: Data) throws -> EthereumAddress { guard let recovered = Web3.Utils.personalECRecover(personalMessage, signature: signature) else { - return Result.failure(Web3Error.dataError) + throw Web3Error.dataError } - return Result(recovered) + return recovered } /** @@ -85,10 +77,10 @@ extension web3.Personal { - Result object */ - public func ecrecover(hash: Data, signature: Data) -> Result { + public func ecrecover(hash: Data, signature: Data) throws -> EthereumAddress { guard let recovered = Web3.Utils.hashECRecover(hash: hash, signature: signature) else { - return Result.failure(Web3Error.dataError) + throw Web3Error.dataError } - return Result(recovered) + return recovered } } diff --git a/web3swift/Web3/Classes/Web3+TxPool.swift b/web3swift/Web3/Classes/Web3+TxPool.swift index a9a58b6fe..ccf9efc51 100644 --- a/web3swift/Web3/Classes/Web3+TxPool.swift +++ b/web3swift/Web3/Classes/Web3+TxPool.swift @@ -8,39 +8,18 @@ import Foundation import BigInt extension web3.TxPool { - public func getInspect() -> Result<[String:[String:[String:String]]], Web3Error> { - do { - let result = try self.getInspectPromise().wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getInspect() throws -> [String:[String:[String:String]]] { + let result = try self.getInspectPromise().wait() + return result } - public func getStatus() -> Result { - do { - let result = try self.getStatusPromise().wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getStatus() throws -> TxPoolStatus { + let result = try self.getStatusPromise().wait() + return result } - public func getContent() -> Result { - do { - let result = try self.getContentPromise().wait() - return Result(result) - } catch { - if let err = error as? Web3Error { - return Result.failure(err) - } - return Result.failure(Web3Error.generalError(err: error)) - } + public func getContent() throws -> TxPoolContent { + let result = try self.getContentPromise().wait() + return result } } diff --git a/web3swift/Web3/Classes/Web3.swift b/web3swift/Web3/Classes/Web3.swift index 064d6c25e..0d8c25c35 100755 --- a/web3swift/Web3/Classes/Web3.swift +++ b/web3swift/Web3/Classes/Web3.swift @@ -77,24 +77,24 @@ public struct Web3 { } struct ResultUnwrapper { - static func getResponse(_ response: [String: Any]?) -> Result { + static func getResponse(_ response: [String: Any]?) throws -> Any { guard response != nil, let res = response else { - return Result.failure(Web3Error.connectionError) + throw Web3Error.connectionError } if let error = res["error"] { if let errString = error as? String { - return Result.failure(Web3Error.nodeError(desc: errString)) + throw Web3Error.nodeError(desc: errString) } else if let errDict = error as? [String:Any] { if errDict["message"] != nil, let descr = errDict["message"]! as? String { - return Result.failure(Web3Error.nodeError(desc: descr)) + throw Web3Error.nodeError(desc: descr) } } - return Result.failure(Web3Error.unknownError) + throw Web3Error.unknownError } guard let result = res["result"] else { - return Result.failure(Web3Error.dataError) + throw Web3Error.dataError } - return Result(result) + return result } } diff --git a/web3swift/web3swift-Bridging-Header.h b/web3swift/web3swift-Bridging-Header.h index 4eb75bede..f2e2c8039 100755 --- a/web3swift/web3swift-Bridging-Header.h +++ b/web3swift/web3swift-Bridging-Header.h @@ -1,9 +1,7 @@ -// -// web3swift-Bridging-Header.h // web3swift // -// Created by Alexander Vlasov on 08.08.2018. -// Copyright © 2018 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // #ifndef web3swift_Bridging_Header_h diff --git a/web3swift/web3swift.h b/web3swift/web3swift.h index fe4270f58..790492491 100755 --- a/web3swift/web3swift.h +++ b/web3swift/web3swift.h @@ -1,9 +1,7 @@ -// -// web3swift.h // web3swift // -// Created by Petr Korolev on 06/12/2017. -// Copyright © 2017 Bankex Foundation. All rights reserved. +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. // #if TARGET_OS_IPHONE diff --git a/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift b/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift index 23818ef1e..e404ceba8 100755 --- a/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift +++ b/web3swiftTests/web3swift_rinkeby_personalSignature_Tests.swift @@ -15,7 +15,7 @@ import EthereumAddress class web3swift_rinkeby_personalSignature_Tests: XCTestCase { - func testPersonalSignature() { + func testPersonalSignature() throws { let web3 = Web3.InfuraRinkebyWeb3() let tempKeystore = try! EthereumKeystoreV3(password: "") let keystoreManager = KeystoreManager([tempKeystore!]) @@ -23,15 +23,13 @@ class web3swift_rinkeby_personalSignature_Tests: XCTestCase { let message = "Hello World" let expectedAddress = keystoreManager.addresses![0] print(expectedAddress) - let signRes = web3.personal.signPersonalMessage(message: message.data(using: .utf8)!, from: expectedAddress, password: "") - guard case .success(let signature) = signRes else {return XCTFail()} + let signature = try web3.personal.signPersonalMessage(message: message.data(using: .utf8)!, from: expectedAddress, password: "") let unmarshalledSignature = SECP256K1.unmarshalSignature(signatureData: signature)! print("V = " + String(unmarshalledSignature.v)) print("R = " + Data(unmarshalledSignature.r).toHexString()) print("S = " + Data(unmarshalledSignature.s).toHexString()) print("Personal hash = " + Web3.Utils.hashPersonalMessage(message.data(using: .utf8)!)!.toHexString()) - let recoveredSigner = web3.personal.ecrecover(personalMessage: message.data(using: .utf8)!, signature: signature) - guard case .success(let signer) = recoveredSigner else {return XCTFail()} + let signer = try web3.personal.ecrecover(personalMessage: message.data(using: .utf8)!, signature: signature) XCTAssert(expectedAddress == signer, "Failed to sign personal message") } @@ -43,8 +41,7 @@ class web3swift_rinkeby_personalSignature_Tests: XCTestCase { let message = "Hello World" let expectedAddress = keystoreManager.addresses![0] print(expectedAddress) - let signRes = web3.personal.signPersonalMessage(message: message.data(using: .utf8)!, from: expectedAddress, password: "") - guard case .success(let signature) = signRes else {return XCTFail()} + let signature = try web3.personal.signPersonalMessage(message: message.data(using: .utf8)!, from: expectedAddress, password: "") let unmarshalledSignature = SECP256K1.unmarshalSignature(signatureData: signature)! print("V = " + String(unmarshalledSignature.v)) print("R = " + Data(unmarshalledSignature.r).toHexString()) From cbca306177b84accf786866cd9f1c07f59172ae6 Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Tue, 30 Oct 2018 14:46:08 +0300 Subject: [PATCH 09/16] - Implement event loop. Should be started manually --- web3swift.xcodeproj/project.pbxproj | 4 + web3swift/Web3/Classes/Web3+Eventloop.swift | 85 +++++++++++++++++++ web3swift/Web3/Classes/Web3+Instance.swift | 11 +-- .../web3swift_Eventloop_Tests.swift | 38 +++++++++ .../web3swift_keystores_Tests.swift | 16 ++++ 5 files changed, 149 insertions(+), 5 deletions(-) create mode 100644 web3swiftTests/web3swift_Eventloop_Tests.swift diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 776d2c4ee..0d69ba87b 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -103,6 +103,7 @@ 81909D2F21885B2C007D2AE5 /* Web3+ERC721.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2E94C5F217788E0005F54A0 /* Web3+ERC721.swift */; }; 81909D4A218864A8007D2AE5 /* EIP681.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2862143DBF6004CD2C7 /* EIP681.swift */; }; 81909D4B218864A9007D2AE5 /* EIP681.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2862143DBF6004CD2C7 /* EIP681.swift */; }; + 81909D4F21887658007D2AE5 /* web3swift_Eventloop_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D4E21887658007D2AE5 /* web3swift_Eventloop_Tests.swift */; }; 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */; }; @@ -262,6 +263,7 @@ 81909D1421862D37007D2AE5 /* Web3+MutatingTransaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+MutatingTransaction.swift"; sourceTree = ""; }; 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Eventloop.swift"; sourceTree = ""; }; 81909D2021884893007D2AE5 /* BigUInt+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BigUInt+Extensions.swift"; sourceTree = ""; }; + 81909D4E21887658007D2AE5 /* web3swift_Eventloop_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_Eventloop_Tests.swift; sourceTree = ""; }; 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Eth+GetBalance.swift"; sourceTree = ""; }; 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+HttpProvider.swift"; sourceTree = ""; }; 81A1821C20D5C6C10016741F /* web3swift_promises_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_promises_Tests.swift; sourceTree = ""; }; @@ -424,6 +426,7 @@ 1CD91B301FD769A6007BFB45 /* web3swiftTests */ = { isa = PBXGroup; children = ( + 81909D4E21887658007D2AE5 /* web3swift_Eventloop_Tests.swift */, 1CB8188F2160867700726CF8 /* key.json */, 81A7B2892143DF1D004CD2C7 /* web3swift_EIP681_Tests.swift */, 81A7B2782143C978004CD2C7 /* web3swift_ENS_Tests.swift */, @@ -1093,6 +1096,7 @@ 81909D1F2187BD20007D2AE5 /* web3swift_numberFormattingUtil_Tests.swift in Sources */, 81909D1E2187BC8B007D2AE5 /* web3swift_transactions_Tests.swift in Sources */, 81909D2D218858EA007D2AE5 /* web3swift_ERC20_Class_Tests.swift in Sources */, + 81909D4F21887658007D2AE5 /* web3swift_Eventloop_Tests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/web3swift/Web3/Classes/Web3+Eventloop.swift b/web3swift/Web3/Classes/Web3+Eventloop.swift index c909fadc6..8be27b909 100644 --- a/web3swift/Web3/Classes/Web3+Eventloop.swift +++ b/web3swift/Web3/Classes/Web3+Eventloop.swift @@ -8,4 +8,89 @@ import Foundation extension web3.Eventloop { +// @available(iOS 10.0, *) + public func start(_ timeInterval: TimeInterval) { + if self.timer != nil { + self.timer!.suspend() + self.timer = nil + } + let queue = self.web3.requestDispatcher.queue + queue.async { + self.timer = RepeatingTimer(timeInterval: timeInterval) + self.timer?.eventHandler = self.runnable + self.timer?.resume() + } + } + + public func stop() { + if self.timer != nil { + self.timer!.suspend() + self.timer = nil + } + } + + @objc func runnable() { + for prop in self.monitoredProperties { + let queue = prop.queue + let function = prop.calledFunction + queue.async { + function(self.web3) + } + } + } +} + +// Thank you https://medium.com/@danielgalasko/a-background-repeating-timer-in-swift-412cecfd2ef9 +class RepeatingTimer { + + let timeInterval: TimeInterval + + init(timeInterval: TimeInterval) { + self.timeInterval = timeInterval + } + + private lazy var timer: DispatchSourceTimer = { + let t = DispatchSource.makeTimerSource() + t.schedule(deadline: .now() + self.timeInterval, repeating: self.timeInterval) + t.setEventHandler(handler: { [weak self] in + self?.eventHandler?() + }) + return t + }() + + var eventHandler: (() -> Void)? + + private enum State { + case suspended + case resumed + } + + private var state: State = .suspended + + deinit { + timer.setEventHandler {} + timer.cancel() + /* + If the timer is suspended, calling cancel without resuming + triggers a crash. This is documented here https://forums.developer.apple.com/thread/15902 + */ + resume() + eventHandler = nil + } + + func resume() { + if state == .resumed { + return + } + state = .resumed + timer.resume() + } + + func suspend() { + if state == .suspended { + return + } + state = .suspended + timer.suspend() + } } diff --git a/web3swift/Web3/Classes/Web3+Instance.swift b/web3swift/Web3/Classes/Web3+Instance.swift index 42033f400..abd6eb7d0 100755 --- a/web3swift/Web3/Classes/Web3+Instance.swift +++ b/web3swift/Web3/Classes/Web3+Instance.swift @@ -166,18 +166,19 @@ public class web3: Web3OptionsInheritable { } public class Eventloop: Web3OptionsInheritable { - public typealias FunctionCall = (web3) -> Result + public typealias EventLoopCall = (web3) -> Void - public struct MonitoredProperty { + public struct MonitoredProperty { public var name: String - public var calledFunction: FunctionCall + public var queue: DispatchQueue + public var calledFunction: EventLoopCall } var provider:Web3Provider // weak var web3: web3? var web3: web3 - var timer: Promise? - var monitoredProperties: [AnyObject] = [AnyObject]() + var timer: RepeatingTimer? = nil + var monitoredProperties: [MonitoredProperty] = [MonitoredProperty]() public var options: Web3Options { return self.web3.options } diff --git a/web3swiftTests/web3swift_Eventloop_Tests.swift b/web3swiftTests/web3swift_Eventloop_Tests.swift new file mode 100644 index 000000000..5817ab5a9 --- /dev/null +++ b/web3swiftTests/web3swift_Eventloop_Tests.swift @@ -0,0 +1,38 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import XCTest +import EthereumAddress + +@testable import web3swift_iOS + +class web3swift_Eventloop_Tests: XCTestCase { + + func testBasicEventLoop() { + var ticksToWait = 10 + let expectation = self.expectation(description: "Waiting") + func getBlockNumber(_ web3: web3) { + do { + let blockNumber = try web3.eth.getBlockNumber() + print("Block number = " + String(blockNumber)) + ticksToWait = ticksToWait - 1 + if ticksToWait == 0 { + expectation.fulfill() + } + } catch { + print(error) + } + } + let web3main = Web3.InfuraMainnetWeb3() + let functionToCall: web3.Eventloop.EventLoopCall = getBlockNumber + let monitoredProperty = web3.Eventloop.MonitoredProperty.init(name: "onNewBlock", queue: web3main.requestDispatcher.queue, calledFunction: functionToCall) + web3main.eventLoop.monitoredProperties.append(monitoredProperty) + web3main.eventLoop.start(1) + + waitForExpectations(timeout: 30, handler: nil) + } + +} diff --git a/web3swiftTests/web3swift_keystores_Tests.swift b/web3swiftTests/web3swift_keystores_Tests.swift index b1abc3c3a..1047ee858 100755 --- a/web3swiftTests/web3swift_keystores_Tests.swift +++ b/web3swiftTests/web3swift_keystores_Tests.swift @@ -49,6 +49,22 @@ class web3swift_Keystores_tests: XCTestCase { XCTAssertNotNil(key) } + func testV3keystoreSerialization() { + let keystore = try! EthereumKeystoreV3(password: ""); + XCTAssertNotNil(keystore) + let account = keystore!.addresses![0] + let data = try! keystore!.serialize() + let key = try! keystore!.UNSAFE_getPrivateKeyData(password: "", account: account) + XCTAssertNotNil(key) + + let restored = EthereumKeystoreV3(data!) + XCTAssertNotNil(restored) + XCTAssertEqual(keystore!.addresses!.first!, restored!.addresses!.first!) + let restoredKey = try! restored!.UNSAFE_getPrivateKeyData(password: "", account: account) + XCTAssertNotNil(restoredKey) + XCTAssertEqual(key, restoredKey) + } + func testNewBIP32keystore() { let mnemonic = try! BIP39.generateMnemonics(bitsOfEntropy: 256)! let keystore = try! BIP32Keystore(mnemonics: mnemonic, password: "", mnemonicsPassword: "") From b988fa537d6a2f9f707a659f252db4c485ca8201 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Fri, 2 Nov 2018 16:09:09 +0300 Subject: [PATCH 10/16] updated pods to fix building --- Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h | 2 +- Pods/Headers/Public/BigInt/BigInt-iOS.modulemap | 2 +- Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h | 2 +- Pods/Headers/Public/BigInt/BigInt-macOS.modulemap | 2 +- Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h | 2 +- Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap | 2 +- Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h | 2 +- Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap | 2 +- Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h | 2 +- Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap | 2 +- Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h | 2 +- Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap | 2 +- .../Public/EthereumAddress/EthereumAddress-iOS-umbrella.h | 2 +- .../Public/EthereumAddress/EthereumAddress-iOS.modulemap | 2 +- .../Public/EthereumAddress/EthereumAddress-macOS-umbrella.h | 2 +- .../Public/EthereumAddress/EthereumAddress-macOS.modulemap | 2 +- Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h | 2 +- Pods/Headers/Public/PromiseKit/PromiseKit.modulemap | 2 +- .../PromiseKit.root-CorePromise-Foundation-umbrella.h | 2 +- .../PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap | 2 +- Pods/Headers/Public/Result/Result-iOS-umbrella.h | 2 +- Pods/Headers/Public/Result/Result-iOS.modulemap | 2 +- Pods/Headers/Public/Result/Result-macOS-umbrella.h | 2 +- Pods/Headers/Public/Result/Result-macOS.modulemap | 2 +- Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h | 2 +- Pods/Headers/Public/SipHash/SipHash-iOS.modulemap | 2 +- Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h | 2 +- Pods/Headers/Public/SipHash/SipHash-macOS.modulemap | 2 +- Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h | 2 +- Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap | 2 +- Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h | 2 +- Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap | 2 +- Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h | 2 +- Pods/Headers/Public/scrypt/scrypt-iOS.modulemap | 2 +- Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h | 2 +- Pods/Headers/Public/scrypt/scrypt-macOS.modulemap | 2 +- .../Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h | 2 +- .../Public/secp256k1_swift/secp256k1_swift-iOS.modulemap | 2 +- .../Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h | 2 +- .../Public/secp256k1_swift/secp256k1_swift-macOS.modulemap | 2 +- 40 files changed, 40 insertions(+), 40 deletions(-) diff --git a/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h b/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h index d04d0f479..54c439564 120000 --- a/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h +++ b/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap b/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap index 5e3ba93be..5827ffd6f 120000 --- a/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap +++ b/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h b/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h index 7c100fb6e..15cd9101e 120000 --- a/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h +++ b/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap b/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap index 309999e26..db0458375 120000 --- a/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap +++ b/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h index 53d6c211e..38ee2e270 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap index c3e3c3a34..d3c8afa43 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h index 1bf7d4d73..4f6598359 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap index 19cb03653..13bb9bda2 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h index 82745e647..372038959 120000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap index bff509710..ded50b1ab 120000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h index c4a703b51..e72800bb6 120000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap index c270ce50e..99eb1eb31 120000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h index 48a0c2378..505dcdba1 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap index 5daa54791..2e8de9c1b 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h index ec4284bbd..45c29b7ea 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap index 71f266362..1814f3891 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h b/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h index 54a39550a..384f088cd 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h +++ b/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap b/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap index 03e17826b..5b105d963 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h index 2202ae821..6026bec84 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap index 377be965b..515bc96ce 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-iOS-umbrella.h b/Pods/Headers/Public/Result/Result-iOS-umbrella.h index a7f847b9e..5017bcc62 120000 --- a/Pods/Headers/Public/Result/Result-iOS-umbrella.h +++ b/Pods/Headers/Public/Result/Result-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-iOS.modulemap b/Pods/Headers/Public/Result/Result-iOS.modulemap index bc4f23ca4..a9cb518ea 120000 --- a/Pods/Headers/Public/Result/Result-iOS.modulemap +++ b/Pods/Headers/Public/Result/Result-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-macOS-umbrella.h b/Pods/Headers/Public/Result/Result-macOS-umbrella.h index 5c92b47bc..d933679ed 120000 --- a/Pods/Headers/Public/Result/Result-macOS-umbrella.h +++ b/Pods/Headers/Public/Result/Result-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-macOS.modulemap b/Pods/Headers/Public/Result/Result-macOS.modulemap index a1725381e..6ff87c94a 120000 --- a/Pods/Headers/Public/Result/Result-macOS.modulemap +++ b/Pods/Headers/Public/Result/Result-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h b/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h index 909a01c80..736829e4f 120000 --- a/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h +++ b/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap b/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap index 60dbe3748..363bde1c4 120000 --- a/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap +++ b/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h b/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h index b1f95e224..c56e6a45b 120000 --- a/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h +++ b/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap b/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap index 5ea25fc9c..835353525 120000 --- a/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap +++ b/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h index b1b552e68..b77347325 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap index 0842d08e1..ae407f989 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h index b77715c02..4740a4f84 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap index c5cebdd37..d1421e204 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h b/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h index e82a48440..1c81cd5a7 120000 --- a/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h +++ b/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap b/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap index 082fbbbba..02bd8338d 120000 --- a/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap +++ b/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h b/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h index 7a0dabd86..75f99866d 120000 --- a/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h +++ b/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap b/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap index 9ec4c6ed1..2e33aed25 120000 --- a/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap +++ b/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h index 554c654f1..70cc63a67 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap index 44829fb84..c5b6fa265 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h index 56967ab47..d75b444d6 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap index 0ec25a913..c0e372d55 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap @@ -1 +1 @@ -/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap \ No newline at end of file +/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap \ No newline at end of file From 0a6e5b0f699b19a24c40d0da50bda3fb01f6dea5 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Fri, 2 Nov 2018 19:35:43 +0300 Subject: [PATCH 11/16] fixed ens and ens resolver for 2.0, tests dont pass - need to fix --- web3swift.xcodeproj/project.pbxproj | 10 + web3swift/Utils/Classes/ENS.swift | 242 ++++++------------ web3swift/Utils/Classes/ENSResolver.swift | 205 ++++++--------- .../Classes/Web3+MutatingTransaction.swift | 4 +- 4 files changed, 173 insertions(+), 288 deletions(-) diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 0d69ba87b..ed32b1f28 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -176,6 +176,11 @@ E2065FB92181D7D700701068 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81195AAF20D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift */; }; E2065FBA2181D7D700701068 /* Promise+Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */; }; E2065FBB2181D7D700701068 /* Web3+TxPool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985BFD49216CE8B100B28C14 /* Web3+TxPool.swift */; }; + E2DCA653218C875100F94FBA /* web3swift_ENS_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2782143C978004CD2C7 /* web3swift_ENS_Tests.swift */; }; + E2DCA654218C879900F94FBA /* ENS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2E668CD214F8A7B00C3CC2D /* ENS.swift */; }; + E2DCA655218C879900F94FBA /* ENSResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B219DC162154F3EE0035BF94 /* ENSResolver.swift */; }; + E2DCA656218C87A500F94FBA /* ENS.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2E668CD214F8A7B00C3CC2D /* ENS.swift */; }; + E2DCA657218C87A500F94FBA /* ENSResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = B219DC162154F3EE0035BF94 /* ENSResolver.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1004,6 +1009,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E2DCA654218C879900F94FBA /* ENS.swift in Sources */, + E2DCA655218C879900F94FBA /* ENSResolver.swift in Sources */, 81C146F71FF274B200AA943E /* Web3+Structures.swift in Sources */, 8104E2281FE82BDC00F952CB /* Web3+Utils.swift in Sources */, 81909D2B218852E2007D2AE5 /* Web3+ERC20.swift in Sources */, @@ -1083,6 +1090,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E2DCA653218C875100F94FBA /* web3swift_ENS_Tests.swift in Sources */, 81909D292188504D007D2AE5 /* web3swift_AdvancedABIv2_Tests.swift in Sources */, 00E5FE8220EA3FF40030E0D6 /* web3swift_infura_Tests.swift in Sources */, 81909D2A21885067007D2AE5 /* web3swift_rinkeby_personalSignature_Tests.swift in Sources */, @@ -1104,6 +1112,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E2DCA656218C87A500F94FBA /* ENS.swift in Sources */, + E2DCA657218C87A500F94FBA /* ENSResolver.swift in Sources */, E2065FB82181D7D700701068 /* Promise+Web3+Eth+EstimateGas.swift in Sources */, E2065FB92181D7D700701068 /* Promise+Web3+Contract+GetIndexedEvents.swift in Sources */, 81909D2C218852E2007D2AE5 /* Web3+ERC20.swift in Sources */, diff --git a/web3swift/Utils/Classes/ENS.swift b/web3swift/Utils/Classes/ENS.swift index dab9235e1..87a1c4174 100644 --- a/web3swift/Utils/Classes/ENS.swift +++ b/web3swift/Utils/Classes/ENS.swift @@ -33,216 +33,126 @@ public class ENS { return contract! }() - private lazy var defaultOptions: Web3Options = { - return Web3Options.defaultOptions() + private lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions }() //MARK: - Convenience methods - public func getAddress(_ domain: String) -> Result { - let resolver = self.resolver(forDomain: domain) - switch resolver { - case .success(var resolver): - let isAddrSupports = resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) - switch isAddrSupports{ - case .success(let isSupported): - if isSupported { - return resolver.addr(forDomain: domain) - } else { - return Result.failure(Web3Error.dataError) - } - case .failure(let error): - return Result.failure(error) - } - case .failure(let error): - return Result.failure(error) - } + public func getAddress(_ domain: String) throws -> EthereumAddress { + guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} + guard let isAddrSupports = try? resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) else {throw Web3Error.processingError(desc: "Resolver don't support interface with this ID")} + guard isAddrSupports else {throw Web3Error.processingError(desc: "Address isn't supported")} + guard let addr = try? resolver.addr(forDomain: domain) else {throw Web3Error.processingError(desc: "Can't get address")} + return addr } - public func setAddress(domain: String, address: EthereumAddress, options: Web3Options, password: String? = nil) -> Result{ - let resolver = self.resolver(forDomain: domain) - switch resolver { - case .success(var resolver): - let isSetAddrSupported = resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) - switch isSetAddrSupported { - case .success(let value): - if value { - return resolver.setAddr(node: domain, address: address, options: options, password: password) - } else { - return Result.failure(Web3Error.dataError) - } - case .failure(let error): - return Result.failure(error) - } - case .failure(let error): - return Result.failure(error) - } + public func setAddress(domain: String, address: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { + guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} + guard let isAddrSupports = try? resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) else {throw Web3Error.processingError(desc: "Resolver don't support interface with this ID")} + guard isAddrSupports else {throw Web3Error.processingError(desc: "Address isn't supported")} + guard let result = try? resolver.setAddr(node: domain, address: address, options: options, password: password) else {throw Web3Error.processingError(desc: "Can't get result")} + return result } - public func getPubkey(domain: String) -> Result { - let resolver = self.resolver(forDomain: domain) - switch resolver { - case .success(var resolver): - let isPubkeySupports = resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.pubkey.hash()) - switch isPubkeySupports { - case .success(let value): - if value { - return resolver.pubkey(node: domain) - } else { - return Result.failure(Web3Error.dataError) - } - case .failure(let error): - return Result.failure(error) - } - - case .failure(let error): - return Result.failure(error) - } + public func getPubkey(domain: String) throws -> PublicKey { + guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} + guard let isPubkeySupports = try? resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.pubkey.hash()) else {throw Web3Error.processingError(desc: "Resolver don't support interface with this ID")} + guard isPubkeySupports else {throw Web3Error.processingError(desc: "Pubkey isn't supported")} + guard let pubkey = try? resolver.pubkey(node: domain) else {throw Web3Error.processingError(desc: "Can't get pubkey")} + return pubkey } - public func setPubkey(domain: String, x: String, y: String, options: Web3Options, password: String? = nil) -> Result { - let resolver = self.resolver(forDomain: domain) - switch resolver { - case .success(var value): - return value.setPubkey(node: domain, x: x, y: y, options: options, password: password) - case .failure(let error): - return Result.failure(error) - } + public func setPubkey(domain: String, x: String, y: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { + guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} + guard let result = try? resolver.setPubkey(node: domain, x: x, y: y, options: options, password: password) else {throw Web3Error.processingError(desc: "Can't get result")} + return result } - public func getContent(domain: String) -> Result { - let resolver = self.resolver(forDomain: domain) - switch resolver { - case .success(var value): - return value.content(node: domain) - case .failure(let error): - return Result.failure(error) - } + public func getContent(domain: String) throws -> String { + guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} + guard let content = try? resolver.content(node: domain) else {throw Web3Error.processingError(desc: "Can't get content")} + return content } - public func setContent(domain: String, hash: String, options: Web3Options, password: String? = nil) -> Result { - let resolver = self.resolver(forDomain: domain) - switch resolver { - case .success(var value): - return value.setContent(node: domain, hash: hash, options: options, password: password) - case .failure(let error): - return Result.failure(error) - } + public func setContent(domain: String, hash: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { + guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} + guard let result = try? resolver.setContent(node: domain, hash: hash, options: options, password: password) else {throw Web3Error.processingError(desc: "Can't get result")} + return result } - - public func getMultihash(domain: String) -> Result { - let resolver = self.resolver(forDomain: domain) - switch resolver { - case .success(var value): - return value.multihash(node: domain) - case .failure(let error): - return Result.failure(error) - } + public func getMultihash(domain: String) throws -> Data { + guard var resolver = try? self.resolver(forDomain: domain) else {throw Web3Error.processingError(desc: "Failed to get resolver for domain")} + guard let multihash = try? resolver.multihash(node: domain) else {throw Web3Error.processingError(desc: "Can't get multihash")} + return multihash } //MARK: - Returns resolver for the given domain - public func resolver(forDomain domain: String) -> Result { - guard let nameHash = NameHash.nameHash(domain) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.registryContract.method("resolver", parameters: [nameHash as AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let res): - guard let resolverAddress = res["0"] as? EthereumAddress else { return Result.failure(Web3Error.dataError) } - return Result(ResolverENS(web3: self.web3, resolverAddress: resolverAddress)) - case .failure(let error): - return Result.failure(error) - } + public func resolver(forDomain domain: String) throws -> ResolverENS { + guard let nameHash = NameHash.nameHash(domain) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.read("resolver", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let resolverAddress = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "No address in result")} + return ResolverENS(web3: self.web3, resolverAddress: resolverAddress) } //Returns node's owner address - public func owner(node: String) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.registryContract.method("owner", parameters: [nameHash as AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let value): - guard let address = value["0"] as? EthereumAddress else { return Result.failure(Web3Error.dataError) } - return Result(address) - case .failure(let error): - return Result.failure(error) - } + public func owner(node: String) throws -> EthereumAddress { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.read("owner", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let address = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "No address in result")} + return address } //Untested - public func ttl(node: String) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.registryContract.method("ttl", parameters: [nameHash as AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let value): - guard let ans = value["0"] as? BigUInt else { return Result.failure(Web3Error.dataError) } - return Result(ans) - case .failure(let error): - return Result.failure(error) - } + public func ttl(node: String) throws -> BigUInt { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.read("ttl", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let ans = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "No answer in result")} + return ans } // function setOwner(bytes32 node, address owner); - public func setOwner(node: String, owner: EthereumAddress, options: Web3Options, password: String? = nil) -> Result { + public func setOwner(node: String, owner: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.registryContract.method("setOwner", parameters: [nameHash, owner] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError)} - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) - switch result { - case .failure(let error): - return Result.failure(error) - case .success(let value): - return Result(value) - } + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.write("setOwner", parameters: [nameHash, owner] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result } // function setSubnodeOwner(bytes32 node, bytes32 label, address owner); - public func setSubnodeOwner(node: String, label: String, owner: EthereumAddress, options: Web3Options, password: String? = nil) -> Result { + public func setSubnodeOwner(node: String, label: String, owner: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let labelHash = NameHash.nameHash(label) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.registryContract.method("setSubnodeOwner", parameters: [nameHash, labelHash, owner] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError)} - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) - switch result { - case .success(let value): - return Result(value) - case .failure(let error): - return Result.failure(error) - } + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let labelHash = NameHash.nameHash(label) else {throw Web3Error.processingError(desc: "Failed to get label hash")} + guard let transaction = self.registryContract.write("setSubnodeOwner", parameters: [nameHash, labelHash, owner] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result } // function setResolver(bytes32 node, address resolver); - public func setResolver(node: String, resolver: EthereumAddress, options: Web3Options, password: String? = nil) -> Result { + public func setResolver(node: String, resolver: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.registryContract.method("setResolver", parameters: [nameHash, resolver] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) - switch result { - case .success(let value): - return Result(value) - case .failure(let error): - return Result.failure(error) - } - + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.write("setResolver", parameters: [nameHash, resolver] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result } // function setTTL(bytes32 node, uint64 ttl); - public func setTTL(node: String, ttl: BigUInt, options: Web3Options, password: String? = nil) -> Result { + public func setTTL(node: String, ttl: BigUInt, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.registryContract.method("setTTL", parameters: [nameHash, ttl] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) - switch result { - case .failure(let error): - return Result.failure(error) - case .success(let value): - return Result(value) - } + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.registryContract.write("setTTL", parameters: [nameHash, ttl] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} + return result } - private func getOptions(_ options: Web3Options) -> Web3Options { + private func getOptions(_ options: TransactionOptions) -> TransactionOptions { var options = options options.to = self.ensContractAddress return options diff --git a/web3swift/Utils/Classes/ENSResolver.swift b/web3swift/Utils/Classes/ENSResolver.swift index e37cd38ec..0a7086348 100644 --- a/web3swift/Utils/Classes/ENSResolver.swift +++ b/web3swift/Utils/Classes/ENSResolver.swift @@ -47,8 +47,8 @@ public struct ResolverENS { return contract! }() - private lazy var defaultOptions: Web3Options = { - return Web3Options.defaultOptions() + private lazy var defaultOptions: TransactionOptions = { + return TransactionOptions.defaultOptions }() init(web3: web3, resolverAddress: EthereumAddress) { @@ -56,175 +56,138 @@ public struct ResolverENS { self.resolverAddress = resolverAddress } - mutating public func supportsInterface(interfaceID: Data) -> Result { - return supportsInterface(interfaceID: interfaceID.toHexString()) + mutating public func supportsInterface(interfaceID: Data) throws -> Bool { + guard let supports = try? supportsInterface(interfaceID: interfaceID.toHexString()) else {throw Web3Error.processingError(desc: "Can't get answer")} + return supports } //MARK: - returns true if the contract supports given interface - mutating public func supportsInterface(interfaceID: String) -> Result { - guard let transaction = self.resolverContract.method("supportsInterface", parameters: [interfaceID as AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let res): - guard let supports = res["0"] as? Bool else { return Result.failure(Web3Error.dataError) } - return Result(supports) - case .failure(let error): - return Result.failure(error) - } + mutating public func supportsInterface(interfaceID: String) throws -> Bool { + guard let transaction = self.resolverContract.read("supportsInterface", parameters: [interfaceID as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let supports = result["0"] as? Bool else {throw Web3Error.processingError(desc: "Can't get answer")} + return supports } //MARK: - returns address for the given domain at given resolver - mutating public func addr(forDomain domain: String) -> Result { - guard let nameHash = NameHash.nameHash(domain) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("addr", parameters: [nameHash as AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.dataError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let res): - return Result(res["0"] as! EthereumAddress) - case .failure(let error): - return Result.failure(error) - } + mutating public func addr(forDomain domain: String) throws -> EthereumAddress { + guard let nameHash = NameHash.nameHash(domain) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("addr", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let address = result["0"] as? EthereumAddress else {throw Web3Error.processingError(desc: "Can't get address")} + return address } //function setAddr(bytes32 node, address addr) - mutating public func setAddr(node: String, address: EthereumAddress, options: Web3Options, password: String? = nil) -> Result { + mutating public func setAddr(node: String, address: EthereumAddress, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError)} - guard let transaction = self.resolverContract.method("setAddr", parameters: [nameHash, address] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setAddr", parameters: [nameHash, address] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} return result } //MARK: - returns corresponding ENS to the requested node - mutating public func name(node: String) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("name", parameters: [nameHash as AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError)} - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let res): - return Result(res["0"] as! String) - case .failure(let error): - return Result.failure(error) - } + mutating public func name(node: String) throws -> String { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("name", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let name = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get name")} + return name } - mutating func setName(node: String, name: String, options: Web3Options, password: String? = nil) -> Result{ + mutating func setName(node: String, name: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("setName", parameters: [nameHash, name] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setName", parameters: [nameHash, name] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} return result } //MARK: - returns ABI in the requested encodings - mutating public func ABI(node: String, contentType: BigUInt) -> Result<(BigUInt, Data), Web3Error> { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("ABI", parameters: [nameHash, contentType] as [AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let res): - guard let encoding = res["0"] as? BigUInt else { return Result.failure(Web3Error.dataError) } - guard let data = res["1"] as? Data else { return Result.failure(Web3Error.dataError) } - return Result((encoding, data)) - case .failure(let error): - return Result.failure(error) - } + mutating public func ABI(node: String, contentType: BigUInt) throws -> (BigUInt, Data) { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("ABI", parameters: [nameHash, contentType] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let encoding = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Can't get encoding")} + guard let data = result["0"] as? Data else {throw Web3Error.processingError(desc: "Can't get data")} + return (encoding, data) } - mutating func setABI(node: String, contentType: BigUInt, data: Data, options: Web3Options, password: String? = nil) -> Result { + mutating func setABI(node: String, contentType: BigUInt, data: Data, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("setABI", parameters: [nameHash, contentType, data] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setABI", parameters: [nameHash, contentType, data] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} return result } //MARK: - returns x and y coordinates - mutating public func pubkey(node: String) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("pubkey", parameters: [nameHash as AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let value): - print(value) - guard let x = value["x"] as? Data else { return Result.failure(Web3Error.dataError) } - guard let y = value["y"] as? Data else { return Result.failure(Web3Error.dataError) } - return Result(PublicKey(x: "0x" + x.toHexString(), y: "0x" + y.toHexString())) - case .failure(let error): - return Result.failure(error) - } + mutating public func pubkey(node: String) throws -> PublicKey { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("pubkey", parameters: [nameHash as AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let x = result["x"] as? Data else {throw Web3Error.processingError(desc: "Can't get x")} + guard let y = result["y"] as? Data else {throw Web3Error.processingError(desc: "Can't get y")} + let pubkey = PublicKey(x: "0x" + x.toHexString(), y: "0x" + y.toHexString()) + return pubkey } - mutating public func setPubkey(node: String, x: String, y: String, options: Web3Options, password: String? = nil) -> Result { + mutating public func setPubkey(node: String, x: String, y: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("getPubkey", parameters: [nameHash, x, y] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setPubkey", parameters: [nameHash, x, y] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} return result } - mutating func content(node: String) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("content", parameters: [nameHash] as [AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let value): - guard let value = value["0"] as? String else { return Result.failure(Web3Error.dataError) } - return Result(value) - case .failure(let error): - return Result.failure(error) - } + mutating func content(node: String) throws -> String { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("content", parameters: [nameHash] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let content = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get content")} + return content } - mutating func setContent(node: String, hash: String, options: Web3Options, password: String? = nil) -> Result { + mutating func setContent(node: String, hash: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("setContent", parameters: [nameHash, hash] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setContent", parameters: [nameHash, hash] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} return result } //function multihash(bytes32 node) public view returns (bytes) - mutating public func multihash(node: String) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.transactionSerializationError) } - guard let transaction = self.resolverContract.method("multihash", parameters: [nameHash] as [AnyObject], options: self.defaultOptions) else { return Result.failure(Web3Error.dataError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .success(let value): - guard let hash = value["0"] as? Data else { return Result.failure(Web3Error.dataError) } - return Result(hash) - case .failure(let error): - return Result.failure(error) - } + mutating public func multihash(node: String) throws -> Data { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("multihash", parameters: [nameHash] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let multihash = result["0"] as? Data else {throw Web3Error.processingError(desc: "Can't get multihash")} + return multihash } //function setMultihash(bytes32 node, bytes hash) public only_owner(node) - mutating public func setMultihash(node: String, hash: Data, options: Web3Options, password: String? = nil) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.transactionSerializationError) } + mutating public func setMultihash(node: String, hash: Data, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { let options = getOptions(options) - guard let transaction = self.resolverContract.method("setMultihash", parameters: [nameHash, hash] as [AnyObject], options: options) else { return Result.failure(Web3Error.dataError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setMultihash", parameters: [nameHash, hash] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} return result } //function text(bytes32 node, string key) public view returns (string) - mutating public func text(node: String, key: String) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("text", parameters: [nameHash, key] as [AnyObject], options: defaultOptions) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = transaction.call(options: defaultOptions) - switch result { - case .failure(let error): - return Result.failure(error) - case .success(let value): - guard let ans = value["0"] as? String else { return Result.failure(Web3Error.dataError) } - return Result(ans) - } + mutating public func text(node: String, key: String) throws -> String { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.read("text", parameters: [nameHash, key] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} + guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} + guard let text = result["0"] as? String else {throw Web3Error.processingError(desc: "Can't get text")} + return text } //function setText(bytes32 node, string key, string value) public only_owner(node) - mutating public func setText(node: String, key: String, value: String, options: Web3Options, password: String? = nil) -> Result { - guard let nameHash = NameHash.nameHash(node) else { return Result.failure(Web3Error.dataError) } - guard let transaction = self.resolverContract.method("setText", parameters: [nameHash, key, value] as [AnyObject], options: options) else { return Result.failure(Web3Error.transactionSerializationError) } - let result = password == nil ? transaction.send() : transaction.send(password: password!, options: options) + mutating public func setText(node: String, key: String, value: String, options: TransactionOptions, password: String? = nil) throws -> TransactionSendingResult { + guard let nameHash = NameHash.nameHash(node) else {throw Web3Error.processingError(desc: "Failed to get name hash")} + guard let transaction = self.resolverContract.write("setText", parameters: [nameHash, key, value] as [AnyObject], extraData: Data(), transactionOptions: options) else {throw Web3Error.transactionSerializationError} + guard let result = password == nil ? try? transaction.send() : try? transaction.send(password: password!, transactionOptions: options) else {throw Web3Error.processingError(desc: "Can't send transaction")} return result } - private func getOptions(_ options: Web3Options) -> Web3Options { + private func getOptions(_ options: TransactionOptions) -> TransactionOptions { var options = options options.to = self.resolverAddress return options diff --git a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift index 2b6de16fd..2ddaa9ccc 100644 --- a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift +++ b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift @@ -158,5 +158,7 @@ public class WriteTransaction: ReadTransaction { } } - + public func send(password:String = "web3swift", transactionOptions: TransactionOptions? = nil) throws -> TransactionSendingResult { + return try self.sendPromise(password: password, transactionOptions: transactionOptions).wait() + } } From b7e6f55a0754e722d0c0231dc3ff93eb0fdedf74 Mon Sep 17 00:00:00 2001 From: BaldyAsh Date: Fri, 2 Nov 2018 19:50:07 +0300 Subject: [PATCH 12/16] fixed tests for ens --- web3swift/Utils/Classes/ENSResolver.swift | 2 +- web3swiftTests/web3swift_ENS_Tests.swift | 147 +++++++++++++--------- 2 files changed, 88 insertions(+), 61 deletions(-) diff --git a/web3swift/Utils/Classes/ENSResolver.swift b/web3swift/Utils/Classes/ENSResolver.swift index 0a7086348..9b2b9ae3d 100644 --- a/web3swift/Utils/Classes/ENSResolver.swift +++ b/web3swift/Utils/Classes/ENSResolver.swift @@ -110,7 +110,7 @@ public struct ResolverENS { guard let transaction = self.resolverContract.read("ABI", parameters: [nameHash, contentType] as [AnyObject], extraData: Data(), transactionOptions: defaultOptions) else {throw Web3Error.transactionSerializationError} guard let result = try? transaction.call(transactionOptions: defaultOptions) else {throw Web3Error.processingError(desc: "Can't call transaction")} guard let encoding = result["0"] as? BigUInt else {throw Web3Error.processingError(desc: "Can't get encoding")} - guard let data = result["0"] as? Data else {throw Web3Error.processingError(desc: "Can't get data")} + guard let data = result["1"] as? Data else {throw Web3Error.processingError(desc: "Can't get data")} return (encoding, data) } diff --git a/web3swiftTests/web3swift_ENS_Tests.swift b/web3swiftTests/web3swift_ENS_Tests.swift index 1ec86aa36..bf78562cc 100644 --- a/web3swiftTests/web3swift_ENS_Tests.swift +++ b/web3swiftTests/web3swift_ENS_Tests.swift @@ -22,87 +22,114 @@ class web3swift_ENS_Tests: XCTestCase { } func testResolverAddress() { - let web = web3(provider: InfuraProvider(Networks.Mainnet)!) - var ens = ENS(web3: web) - guard case .success(let resolver) = ens.resolver(forDomain: "somename.eth") else { XCTAssert(false); return } - XCTAssertEqual(resolver.resolverAddress.address.lowercased(), "0x5ffc014343cd971b7eb70732021e26c35b744cc4") + do { + let web = web3(provider: InfuraProvider(Networks.Mainnet)!) + let ens = ENS(web3: web) + let domain = "somename.eth" + let resolver = try ens.resolver(forDomain: domain) + XCTAssertEqual(resolver.resolverAddress.address.lowercased(), "0x5ffc014343cd971b7eb70732021e26c35b744cc4") + } catch { + XCTFail() + } } func testResolver() { - let web = web3(provider: InfuraProvider(Networks.Mainnet)!) - var ens = ENS(web3: web) - let domain = "somename.eth" - guard case .success(var resolver) = ens.resolver(forDomain: domain) else { XCTAssert(false); return } - guard case .success(let address) = resolver.addr(forDomain: domain) else { XCTAssert(false); return } - XCTAssertEqual(address.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac") - + do { + let web = web3(provider: InfuraProvider(Networks.Mainnet)!) + let ens = ENS(web3: web) + let domain = "somename.eth" + var resolver = try ens.resolver(forDomain: domain) + let address = try resolver.addr(forDomain: domain) + XCTAssertEqual(address.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac") + } catch { + XCTFail() + } } func testSupportsInterface() { - let web = web3(provider: InfuraProvider(Networks.Mainnet)!) - var ens = ENS(web3: web) - let domain = "somename.eth" - guard case .success(var resolver) = ens.resolver(forDomain: domain) else { XCTAssert(false); return } - guard case .success(let isAddrSupports) = resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) else { XCTAssert(false); return } - XCTAssertEqual(isAddrSupports, true) - guard case .success(let isNameSupports) = resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.name.hash()) else { XCTAssert(false); return } - XCTAssertEqual(isNameSupports, true) - guard case .success(let isABIsupports) = resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.ABI.hash()) else { XCTAssert(false); return } - XCTAssertEqual(isABIsupports, true) - guard case .success(let isPubkeySupports) = resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.pubkey.hash()) else { XCTAssert(false); return } - XCTAssertEqual(isPubkeySupports, true) + do { + let web = web3(provider: InfuraProvider(Networks.Mainnet)!) + let ens = ENS(web3: web) + let domain = "somename.eth" + var resolver = try ens.resolver(forDomain: domain) + let isAddrSupports = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.addr.hash()) + let isNameSupports = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.name.hash()) + let isABIsupports = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.ABI.hash()) + let isPubkeySupports = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.pubkey.hash()) + XCTAssertEqual(isAddrSupports, true) + XCTAssertEqual(isNameSupports, true) + XCTAssertEqual(isABIsupports, true) + XCTAssertEqual(isPubkeySupports, true) + } catch { + XCTFail() + } } func testABI() { - let web = web3(provider: InfuraProvider(Networks.Mainnet)!) - var ens = ENS(web3: web) - let domain = "somename.eth" - guard case .success(var resolver) = ens.resolver(forDomain: domain) else { XCTAssert(false); return } - guard case .success(let isABIsupported) = resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.ABI.hash()) else { XCTAssert(false); return } - if isABIsupported { - guard case .success(let res) = resolver.ABI(node: domain, contentType: 2) else { XCTAssert(false); return } - XCTAssert(res.0 == 0) - XCTAssert(res.1.count == 0) + do { + let web = web3(provider: InfuraProvider(Networks.Mainnet)!) + let ens = ENS(web3: web) + let domain = "somename.eth" + var resolver = try ens.resolver(forDomain: domain) + let isABIsupported = try resolver.supportsInterface(interfaceID: ResolverENS.InterfaceName.ABI.hash()) + if isABIsupported { + let res = try resolver.ABI(node: domain, contentType: 2) + XCTAssert(res.0 == 0) + XCTAssert(res.1.count == 0) + } else { + XCTFail() + } + } catch { + XCTFail() } } func testOwner() { - let web = web3(provider: InfuraProvider(Networks.Mainnet)!) - var ens = ENS(web3: web) - let domain = "somename.eth" - guard case .success(let result) = ens.owner(node: domain) else { XCTAssert(false); return } - XCTAssertEqual("0xc67247454e720328714c4e17bec7640572657bee", result.address.lowercased()) + do { + let web = web3(provider: InfuraProvider(Networks.Mainnet)!) + let ens = ENS(web3: web) + let domain = "somename.eth" + let owner = try ens.owner(node: domain) + XCTAssertEqual("0xc67247454e720328714c4e17bec7640572657bee", owner.address.lowercased()) + } catch { + XCTFail() + } } func testTTL() { - let web = web3(provider: InfuraProvider(Networks.Mainnet)!) - var ens = ENS(web3: web) - let domain = "somename.eth" - guard case .success(let result) = ens.ttl(node: domain) else { XCTAssert(false); return } - print(result) + do { + let web = web3(provider: InfuraProvider(Networks.Mainnet)!) + let ens = ENS(web3: web) + let domain = "somename.eth" + let ttl = try ens.ttl(node: domain) + print(ttl) + } catch { + XCTFail() + } } func testGetAddress() { - let web = web3(provider: InfuraProvider(Networks.Mainnet)!) - var ens = ENS(web3: web) - let domain = "somename.eth" - guard case .success(let address) = ens.getAddress(domain) else { XCTAssert(false); return } - XCTAssertEqual(address.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac") + do { + let web = web3(provider: InfuraProvider(Networks.Mainnet)!) + let ens = ENS(web3: web) + let domain = "somename.eth" + let address = try ens.getAddress(domain) + XCTAssertEqual(address.address.lowercased(), "0x3487acfb1479ad1df6c0eb56ae743d34897798ac") + } catch { + XCTFail() + } } func testGetPubkey() { - let web = web3(provider: InfuraProvider(Networks.Mainnet)!) - var ens = ENS(web3: web) - let domain = "somename.eth" - guard case .success(let point) = ens.getPubkey(domain: domain) else { XCTAssert(false); return } - XCTAssert(point.x == "0x0000000000000000000000000000000000000000000000000000000000000000") - XCTAssert(point.y == "0x0000000000000000000000000000000000000000000000000000000000000000") + do { + let web = web3(provider: InfuraProvider(Networks.Mainnet)!) + let ens = ENS(web3: web) + let domain = "somename.eth" + let pubkey = try ens.getPubkey(domain: domain) + XCTAssert(pubkey.x == "0x0000000000000000000000000000000000000000000000000000000000000000") + XCTAssert(pubkey.y == "0x0000000000000000000000000000000000000000000000000000000000000000") + } catch { + XCTFail() + } } - - - - - - - } From 0e03dbbc72591e14d1725952f9193ccaa30afd49 Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Sat, 3 Nov 2018 13:18:45 +0300 Subject: [PATCH 13/16] first commit after the Devcon. Add more options into the event loop --- web3swift/Web3/Classes/Web3+Eventloop.swift | 9 ++++++++- web3swift/Web3/Classes/Web3+Instance.swift | 14 +++++++++++++- web3swift/Web3/Classes/Web3+Protocols.swift | 6 ++++++ web3swiftTests/web3swift_Eventloop_Tests.swift | 6 +++--- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/web3swift/Web3/Classes/Web3+Eventloop.swift b/web3swift/Web3/Classes/Web3+Eventloop.swift index 8be27b909..d59a0e9e4 100644 --- a/web3swift/Web3/Classes/Web3+Eventloop.swift +++ b/web3swift/Web3/Classes/Web3+Eventloop.swift @@ -29,7 +29,7 @@ extension web3.Eventloop { } } - @objc func runnable() { + func runnable() { for prop in self.monitoredProperties { let queue = prop.queue let function = prop.calledFunction @@ -37,6 +37,13 @@ extension web3.Eventloop { function(self.web3) } } + + for prop in self.monitoredUserFunctions { + let queue = prop.queue + queue.async { + prop.functionToRun() + } + } } } diff --git a/web3swift/Web3/Classes/Web3+Instance.swift b/web3swift/Web3/Classes/Web3+Instance.swift index abd6eb7d0..7704fdf3a 100755 --- a/web3swift/Web3/Classes/Web3+Instance.swift +++ b/web3swift/Web3/Classes/Web3+Instance.swift @@ -166,7 +166,9 @@ public class web3: Web3OptionsInheritable { } public class Eventloop: Web3OptionsInheritable { + public typealias EventLoopCall = (web3) -> Void + public typealias EventLoopContractCall = (web3contract) -> Void public struct MonitoredProperty { public var name: String @@ -174,11 +176,21 @@ public class web3: Web3OptionsInheritable { public var calledFunction: EventLoopCall } +// public struct MonitoredContract { +// public var name: String +// public var queue: DispatchQueue +// public var calledFunction: EventLoopContractCall +// } + var provider:Web3Provider // weak var web3: web3? var web3: web3 var timer: RepeatingTimer? = nil - var monitoredProperties: [MonitoredProperty] = [MonitoredProperty]() + + public var monitoredProperties: [MonitoredProperty] = [MonitoredProperty]() +// public var monitoredContracts: [MonitoredContract] = [MonitoredContract]() + public var monitoredUserFunctions: [EventLoopRunnableProtocol] = [EventLoopRunnableProtocol]() + public var options: Web3Options { return self.web3.options } diff --git a/web3swift/Web3/Classes/Web3+Protocols.swift b/web3swift/Web3/Classes/Web3+Protocols.swift index 91d6cb290..df1b20adc 100755 --- a/web3swift/Web3/Classes/Web3+Protocols.swift +++ b/web3swift/Web3/Classes/Web3+Protocols.swift @@ -75,3 +75,9 @@ public enum Networks { } } } + +public protocol EventLoopRunnableProtocol { + var name: String {get} + var queue: DispatchQueue {get} + func functionToRun() +} diff --git a/web3swiftTests/web3swift_Eventloop_Tests.swift b/web3swiftTests/web3swift_Eventloop_Tests.swift index 5817ab5a9..d5355dd2c 100644 --- a/web3swiftTests/web3swift_Eventloop_Tests.swift +++ b/web3swiftTests/web3swift_Eventloop_Tests.swift @@ -12,7 +12,7 @@ import EthereumAddress class web3swift_Eventloop_Tests: XCTestCase { func testBasicEventLoop() { - var ticksToWait = 10 + var ticksToWait = 5 let expectation = self.expectation(description: "Waiting") func getBlockNumber(_ web3: web3) { do { @@ -30,9 +30,9 @@ class web3swift_Eventloop_Tests: XCTestCase { let functionToCall: web3.Eventloop.EventLoopCall = getBlockNumber let monitoredProperty = web3.Eventloop.MonitoredProperty.init(name: "onNewBlock", queue: web3main.requestDispatcher.queue, calledFunction: functionToCall) web3main.eventLoop.monitoredProperties.append(monitoredProperty) - web3main.eventLoop.start(1) + web3main.eventLoop.start(5) - waitForExpectations(timeout: 30, handler: nil) + waitForExpectations(timeout: 60, handler: nil) } } From 43256b11a6a5d02bb7927920783f0c0925c615c1 Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Sat, 3 Nov 2018 13:22:33 +0300 Subject: [PATCH 14/16] restore parsing of ENS names in EIP681 --- web3swift/Utils/Classes/EIP681.swift | 30 +++++++++++----------------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/web3swift/Utils/Classes/EIP681.swift b/web3swift/Utils/Classes/EIP681.swift index f53329ff8..64729f7f7 100644 --- a/web3swift/Utils/Classes/EIP681.swift +++ b/web3swift/Utils/Classes/EIP681.swift @@ -120,24 +120,18 @@ extension Web3 { switch val { case .ethereumAddress(let ethereumAddress): nativeValue = ethereumAddress as AnyObject - default: - return nil -// case .ensAddress(let ens): -// let web = web3(provider: InfuraProvider(Networks.fromInt(Int(code.chainID ?? 1)) ?? Networks.Mainnet)!) -// let ensModel = ENS(web3: web) -// let resolver = ensModel.resolver(forDomain: ens) -// switch resolver { -// case .failure(_): -// nativeValue = ens as AnyObject -// case .success(var res): -// let address = res.addr(forDomain: ens) -// switch address { -// case .failure(_): -// nativeValue = ens as AnyObject -// case .success(let res): -// nativeValue = res as AnyObject -// } -// } +// default: +// return nil + case .ensAddress(let ens): + do { + let web = web3(provider: InfuraProvider(Networks.fromInt(Int(code.chainID ?? 1)) ?? Networks.Mainnet)!) + let ensModel = ENS(web3: web) + var resolver = try ensModel.resolver(forDomain: ens) + let address = try resolver.addr(forDomain: ens) + nativeValue = address as AnyObject + } catch { + return nil + } } case .uint(bits: _): if let val = BigUInt(value, radix: 10) { From b256f1153d61781c46dc8b0aab26a1d932a5c09b Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Sat, 3 Nov 2018 13:30:31 +0300 Subject: [PATCH 15/16] - add "create account" call for remote node - Fix promises visibility --- web3swift.xcodeproj/project.pbxproj | 6 +++ .../Classes/Promise+Web3+Eth+Call.swift | 2 +- .../Promise+Web3+Eth+EstimateGas.swift | 2 +- .../Promise+Web3+Eth+SendRawTransaction.swift | 4 +- .../Promise+Web3+Eth+SendTransaction.swift | 2 +- .../Promise+Web3+Personal+CreateAccount.swift | 37 +++++++++++++++++++ .../Classes/Promise+Web3+Personal+Sign.swift | 2 +- .../Promise+Web3+Personal+UnlockAccount.swift | 4 +- web3swift/Web3/Classes/Web3+Methods.swift | 2 + 9 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index ed32b1f28..1738d8948 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -104,6 +104,8 @@ 81909D4A218864A8007D2AE5 /* EIP681.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2862143DBF6004CD2C7 /* EIP681.swift */; }; 81909D4B218864A9007D2AE5 /* EIP681.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A7B2862143DBF6004CD2C7 /* EIP681.swift */; }; 81909D4F21887658007D2AE5 /* web3swift_Eventloop_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D4E21887658007D2AE5 /* web3swift_Eventloop_Tests.swift */; }; + 81909D51218DAEC0007D2AE5 /* Promise+Web3+Personal+CreateAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D50218DAEC0007D2AE5 /* Promise+Web3+Personal+CreateAccount.swift */; }; + 81909D52218DAEC0007D2AE5 /* Promise+Web3+Personal+CreateAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81909D50218DAEC0007D2AE5 /* Promise+Web3+Personal+CreateAccount.swift */; }; 81A1821520D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821620D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */; }; 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */; }; @@ -269,6 +271,7 @@ 81909D1721862D5A007D2AE5 /* Web3+Eventloop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Eventloop.swift"; sourceTree = ""; }; 81909D2021884893007D2AE5 /* BigUInt+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BigUInt+Extensions.swift"; sourceTree = ""; }; 81909D4E21887658007D2AE5 /* web3swift_Eventloop_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_Eventloop_Tests.swift; sourceTree = ""; }; + 81909D50218DAEC0007D2AE5 /* Promise+Web3+Personal+CreateAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Personal+CreateAccount.swift"; sourceTree = ""; }; 81A1821420D5A2700016741F /* Promise+Web3+Eth+GetBalance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+Web3+Eth+GetBalance.swift"; sourceTree = ""; }; 81A1821720D5A3E70016741F /* Promise+HttpProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Promise+HttpProvider.swift"; sourceTree = ""; }; 81A1821C20D5C6C10016741F /* web3swift_promises_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_promises_Tests.swift; sourceTree = ""; }; @@ -611,6 +614,7 @@ 81A1823F20D79FDB0016741F /* Promise+Web3+Eth+EstimateGas.swift */, 81A1824120D7AA750016741F /* Promise+Web3+Eth+SendTransaction.swift */, 81A1824720D7DDA20016741F /* Promise+Web3+Personal+Sign.swift */, + 81909D50218DAEC0007D2AE5 /* Promise+Web3+Personal+CreateAccount.swift */, 81A1824A20D7DF1B0016741F /* Promise+Web3+Personal+UnlockAccount.swift */, 81195AAF20D7FF8500ABC6B1 /* Promise+Web3+Contract+GetIndexedEvents.swift */, 985BFD4D216E2E0A00B28C14 /* Promise+Web3+TxPool.swift */, @@ -1040,6 +1044,7 @@ 81FB21FE207BB297007F9A83 /* EIP67Code.swift in Sources */, 81A1821A20D5A6F70016741F /* Promise+HttpProvider.swift in Sources */, 81A1823720D6E2BB0016741F /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */, + 81909D51218DAEC0007D2AE5 /* Promise+Web3+Personal+CreateAccount.swift in Sources */, 818D16CF204D42910084D2A4 /* Web3+EventParser.swift in Sources */, 81C5DA282072E18200424CD6 /* NativeTypesEncoding+Extensions.swift in Sources */, 8123E1C7200CBAC200B6D3AB /* Dictionary+Extension.swift in Sources */, @@ -1143,6 +1148,7 @@ 81FB21FF207BB297007F9A83 /* EIP67Code.swift in Sources */, 81A1821B20D5A6F80016741F /* Promise+HttpProvider.swift in Sources */, 81A1823820D6E2BB0016741F /* Promise+Web3+Eth+GetBlockByHash.swift in Sources */, + 81909D52218DAEC0007D2AE5 /* Promise+Web3+Personal+CreateAccount.swift in Sources */, 818D16D0204D42940084D2A4 /* Web3+EventParser.swift in Sources */, 4194812E203630530065A83B /* AbstractKeystore.swift in Sources */, 81C5DA292072E18200424CD6 /* NativeTypesEncoding+Extensions.swift in Sources */, diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift index 2ea622788..ee206b341 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+Call.swift @@ -9,7 +9,7 @@ import PromiseKit extension web3.Eth { - func callPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> Promise{ + public func callPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> Promise{ let queue = web3.requestDispatcher.queue do { guard let request = EthereumTransaction.createRequest(method: .call, transaction: transaction, transactionOptions: transactionOptions) else { diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift index 8d95f6d45..7c2a68bfa 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+EstimateGas.swift @@ -10,7 +10,7 @@ import PromiseKit extension web3.Eth { - func estimateGasPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> Promise{ + public func estimateGasPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?) -> Promise{ let queue = web3.requestDispatcher.queue do { guard let request = EthereumTransaction.createRequest(method: .estimateGas, transaction: transaction, transactionOptions: transactionOptions) else { diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift index c84cc4dfc..f80a751ca 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift @@ -8,7 +8,7 @@ import Foundation import PromiseKit extension web3.Eth { - func sendRawTransactionPromise(_ transaction: Data) -> Promise { + public func sendRawTransactionPromise(_ transaction: Data) -> Promise { guard let deserializedTX = EthereumTransaction.fromRaw(transaction) else { let promise = Promise.pending() promise.resolver.reject(Web3Error.processingError(desc: "Serialized TX is invalid")) @@ -17,7 +17,7 @@ extension web3.Eth { return sendRawTransactionPromise(deserializedTX) } - func sendRawTransactionPromise(_ transaction: EthereumTransaction) -> Promise{ + public func sendRawTransactionPromise(_ transaction: EthereumTransaction) -> Promise{ // print(transaction) let queue = web3.requestDispatcher.queue do { diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift index a42446ef2..069c8f708 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift @@ -10,7 +10,7 @@ import PromiseKit extension web3.Eth { - func sendTransactionPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?, password:String = "web3swift") -> Promise { + public func sendTransactionPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?, password:String = "web3swift") -> Promise { // print(transaction) var assembledTransaction : EthereumTransaction = transaction // .mergedWithOptions(transactionOptions) let queue = web3.requestDispatcher.queue diff --git a/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift b/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift new file mode 100644 index 000000000..bfac4ac73 --- /dev/null +++ b/web3swift/Promises/Classes/Promise+Web3+Personal+CreateAccount.swift @@ -0,0 +1,37 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation +import BigInt +import PromiseKit +import EthereumAddress + +extension web3.Personal { + public func createAccountPromise(password:String = "web3swift") -> Promise { + let queue = web3.requestDispatcher.queue + do { + if self.web3.provider.attachedKeystoreManager == nil { + let request = JSONRPCRequestFabric.prepareRequest(.createAccount, parameters: [password]) + return self.web3.dispatch(request).map(on: queue) {response in + guard let value: EthereumAddress = response.getValue() else { + if response.error != nil { + throw Web3Error.nodeError(desc: response.error!.message) + } + throw Web3Error.nodeError(desc: "Invalid value from Ethereum node") + } + return value + } + } + throw Web3Error.inputError(desc: "Creating account in a local keystore with this method is not supported") + } catch { + let returnPromise = Promise.pending() + queue.async { + returnPromise.resolver.reject(error) + } + return returnPromise.promise + } + } +} diff --git a/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift b/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift index a935b3e47..582bbd345 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Personal+Sign.swift @@ -11,7 +11,7 @@ import EthereumAddress extension web3.Personal { - func signPersonalMessagePromise(message: Data, from: EthereumAddress, password:String = "web3swift") -> Promise { + public func signPersonalMessagePromise(message: Data, from: EthereumAddress, password:String = "web3swift") -> Promise { let queue = web3.requestDispatcher.queue do { if self.web3.provider.attachedKeystoreManager == nil { diff --git a/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift b/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift index 40c0067c4..15f5e8409 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Personal+UnlockAccount.swift @@ -10,13 +10,13 @@ import PromiseKit import EthereumAddress extension web3.Personal { - func unlockAccountPromise(account: EthereumAddress, password:String = "web3swift", seconds: UInt64 = 300) -> Promise { + public func unlockAccountPromise(account: EthereumAddress, password:String = "web3swift", seconds: UInt64 = 300) -> Promise { let addr = account.address return unlockAccountPromise(account: addr, password: password, seconds: seconds) } - func unlockAccountPromise(account: String, password:String = "web3swift", seconds: UInt64 = 300) -> Promise { + public func unlockAccountPromise(account: String, password:String = "web3swift", seconds: UInt64 = 300) -> Promise { let queue = web3.requestDispatcher.queue do { if self.web3.provider.attachedKeystoreManager == nil { diff --git a/web3swift/Web3/Classes/Web3+Methods.swift b/web3swift/Web3/Classes/Web3+Methods.swift index 7a1b3018e..ff67bb278 100755 --- a/web3swift/Web3/Classes/Web3+Methods.swift +++ b/web3swift/Web3/Classes/Web3+Methods.swift @@ -26,10 +26,12 @@ public enum JSONRPCmethod: String, Encodable { case getBlockByNumber = "eth_getBlockByNumber" case personalSign = "eth_sign" case unlockAccount = "personal_unlockAccount" + case createAccount = "personal_createAccount" case getLogs = "eth_getLogs" case getTxPoolInspect = "txpool_inspect" case getTxPoolStatus = "txpool_status" case getTxPoolContent = "txpool_content" + public var requiredNumOfParameters: Int { get { From 38f8caa1b95ae417fdfac336bcaea713626fa495 Mon Sep 17 00:00:00 2001 From: Alex Vlasov Date: Tue, 6 Nov 2018 00:20:54 +0300 Subject: [PATCH 16/16] - Add extra hook function - Fix ENS - Implement nonce middleware, example is in tests --- .gitignore | 1 + .../Public/BigInt/BigInt-iOS-umbrella.h | 2 +- .../Public/BigInt/BigInt-iOS.modulemap | 2 +- .../Public/BigInt/BigInt-macOS-umbrella.h | 2 +- .../Public/BigInt/BigInt-macOS.modulemap | 2 +- .../CryptoSwift/CryptoSwift-iOS-umbrella.h | 2 +- .../CryptoSwift/CryptoSwift-iOS.modulemap | 2 +- .../CryptoSwift/CryptoSwift-macOS-umbrella.h | 2 +- .../CryptoSwift/CryptoSwift-macOS.modulemap | 2 +- .../EthereumABI/EthereumABI-iOS-umbrella.h | 2 +- .../EthereumABI/EthereumABI-iOS.modulemap | 2 +- .../EthereumABI/EthereumABI-macOS-umbrella.h | 2 +- .../EthereumABI/EthereumABI-macOS.modulemap | 2 +- .../EthereumAddress-iOS-umbrella.h | 2 +- .../EthereumAddress-iOS.modulemap | 2 +- .../EthereumAddress-macOS-umbrella.h | 2 +- .../EthereumAddress-macOS.modulemap | 2 +- .../Public/PromiseKit/PromiseKit-umbrella.h | 2 +- .../Public/PromiseKit/PromiseKit.modulemap | 2 +- ...Kit.root-CorePromise-Foundation-umbrella.h | 2 +- ...eKit.root-CorePromise-Foundation.modulemap | 2 +- .../Public/Result/Result-iOS-umbrella.h | 2 +- .../Public/Result/Result-iOS.modulemap | 2 +- .../Public/Result/Result-macOS-umbrella.h | 2 +- .../Public/Result/Result-macOS.modulemap | 2 +- .../Public/SipHash/SipHash-iOS-umbrella.h | 2 +- .../Public/SipHash/SipHash-iOS.modulemap | 2 +- .../Public/SipHash/SipHash-macOS-umbrella.h | 2 +- .../Public/SipHash/SipHash-macOS.modulemap | 2 +- .../Public/SwiftRLP/SwiftRLP-iOS-umbrella.h | 2 +- .../Public/SwiftRLP/SwiftRLP-iOS.modulemap | 2 +- .../Public/SwiftRLP/SwiftRLP-macOS-umbrella.h | 2 +- .../Public/SwiftRLP/SwiftRLP-macOS.modulemap | 2 +- .../Public/scrypt/scrypt-iOS-umbrella.h | 2 +- .../Public/scrypt/scrypt-iOS.modulemap | 2 +- .../Public/scrypt/scrypt-macOS-umbrella.h | 2 +- .../Public/scrypt/scrypt-macOS.modulemap | 2 +- .../secp256k1_swift-iOS-umbrella.h | 2 +- .../secp256k1_swift-iOS.modulemap | 2 +- .../secp256k1_swift-macOS-umbrella.h | 2 +- .../secp256k1_swift-macOS.modulemap | 2 +- web3swift.xcodeproj/project.pbxproj | 6 + .../Convenience/Classes/Data+Extension.swift | 5 +- .../Promise+Web3+Eth+SendRawTransaction.swift | 5 + .../Promise+Web3+Eth+SendTransaction.swift | 9 +- web3swift/Utils/Classes/NonceMiddleware.swift | 111 ++++++++++++++++++ web3swift/Web3/Classes/Web3+Instance.swift | 9 +- .../Classes/Web3+MutatingTransaction.swift | 8 +- web3swift/Web3/Classes/Web3+Utils.swift | 4 + web3swiftTests/Resourses/key.json | 1 - .../web3swift_Eventloop_Tests.swift | 36 ++++++ .../web3swift_transactions_Tests.swift | 7 ++ 52 files changed, 234 insertions(+), 48 deletions(-) create mode 100644 web3swift/Utils/Classes/NonceMiddleware.swift delete mode 100644 web3swiftTests/Resourses/key.json diff --git a/.gitignore b/.gitignore index 268135e69..fd4001b83 100755 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,4 @@ fastlane/screenshots fastlane/test_output API_keys.plist web3swiftTests/key.json +web3swiftTests/Resources/key.json diff --git a/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h b/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h index 54c439564..d04d0f479 120000 --- a/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h +++ b/Pods/Headers/Public/BigInt/BigInt-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap b/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap index 5827ffd6f..5e3ba93be 120000 --- a/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap +++ b/Pods/Headers/Public/BigInt/BigInt-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-iOS/BigInt-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h b/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h index 15cd9101e..7c100fb6e 120000 --- a/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h +++ b/Pods/Headers/Public/BigInt/BigInt-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap b/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap index db0458375..309999e26 120000 --- a/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap +++ b/Pods/Headers/Public/BigInt/BigInt-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/BigInt-macOS/BigInt-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h index 38ee2e270..53d6c211e 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap index d3c8afa43..c3e3c3a34 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-iOS/CryptoSwift-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h index 4f6598359..1bf7d4d73 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap index 13bb9bda2..19cb03653 120000 --- a/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap +++ b/Pods/Headers/Public/CryptoSwift/CryptoSwift-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/CryptoSwift-macOS/CryptoSwift-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h index 372038959..82745e647 120000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap index ded50b1ab..bff509710 120000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-iOS/EthereumABI-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h index e72800bb6..c4a703b51 120000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap index 99eb1eb31..c270ce50e 120000 --- a/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap +++ b/Pods/Headers/Public/EthereumABI/EthereumABI-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumABI-macOS/EthereumABI-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h index 505dcdba1..48a0c2378 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap index 2e8de9c1b..5daa54791 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-iOS/EthereumAddress-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h index 45c29b7ea..ec4284bbd 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap index 1814f3891..71f266362 120000 --- a/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap +++ b/Pods/Headers/Public/EthereumAddress/EthereumAddress-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/EthereumAddress-macOS/EthereumAddress-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h b/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h index 384f088cd..54a39550a 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h +++ b/Pods/Headers/Public/PromiseKit/PromiseKit-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap b/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap index 5b105d963..03e17826b 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h index 6026bec84..2202ae821 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap index 515bc96ce..377be965b 120000 --- a/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap +++ b/Pods/Headers/Public/PromiseKit/PromiseKit.root-CorePromise-Foundation.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/PromiseKit.root-CorePromise-Foundation/PromiseKit.root-CorePromise-Foundation.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-iOS-umbrella.h b/Pods/Headers/Public/Result/Result-iOS-umbrella.h index 5017bcc62..a7f847b9e 120000 --- a/Pods/Headers/Public/Result/Result-iOS-umbrella.h +++ b/Pods/Headers/Public/Result/Result-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-iOS.modulemap b/Pods/Headers/Public/Result/Result-iOS.modulemap index a9cb518ea..bc4f23ca4 120000 --- a/Pods/Headers/Public/Result/Result-iOS.modulemap +++ b/Pods/Headers/Public/Result/Result-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-iOS/Result-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-macOS-umbrella.h b/Pods/Headers/Public/Result/Result-macOS-umbrella.h index d933679ed..5c92b47bc 120000 --- a/Pods/Headers/Public/Result/Result-macOS-umbrella.h +++ b/Pods/Headers/Public/Result/Result-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/Result/Result-macOS.modulemap b/Pods/Headers/Public/Result/Result-macOS.modulemap index 6ff87c94a..a1725381e 120000 --- a/Pods/Headers/Public/Result/Result-macOS.modulemap +++ b/Pods/Headers/Public/Result/Result-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/Result-macOS/Result-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h b/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h index 736829e4f..909a01c80 120000 --- a/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h +++ b/Pods/Headers/Public/SipHash/SipHash-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap b/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap index 363bde1c4..60dbe3748 120000 --- a/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap +++ b/Pods/Headers/Public/SipHash/SipHash-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-iOS/SipHash-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h b/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h index c56e6a45b..b1f95e224 120000 --- a/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h +++ b/Pods/Headers/Public/SipHash/SipHash-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap b/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap index 835353525..5ea25fc9c 120000 --- a/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap +++ b/Pods/Headers/Public/SipHash/SipHash-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SipHash-macOS/SipHash-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h index b77347325..b1b552e68 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap index ae407f989..0842d08e1 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-iOS/SwiftRLP-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h index 4740a4f84..b77715c02 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap index d1421e204..c5cebdd37 120000 --- a/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap +++ b/Pods/Headers/Public/SwiftRLP/SwiftRLP-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/SwiftRLP-macOS/SwiftRLP-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h b/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h index 1c81cd5a7..e82a48440 120000 --- a/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h +++ b/Pods/Headers/Public/scrypt/scrypt-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap b/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap index 02bd8338d..082fbbbba 120000 --- a/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap +++ b/Pods/Headers/Public/scrypt/scrypt-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-iOS/scrypt-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h b/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h index 75f99866d..7a0dabd86 120000 --- a/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h +++ b/Pods/Headers/Public/scrypt/scrypt-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap b/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap index 2e33aed25..9ec4c6ed1 120000 --- a/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap +++ b/Pods/Headers/Public/scrypt/scrypt-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/scrypt-macOS/scrypt-macOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h index 70cc63a67..554c654f1 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap index c5b6fa265..44829fb84 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-iOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-iOS/secp256k1_swift-iOS.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h index d75b444d6..56967ab47 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS-umbrella.h @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap index c0e372d55..0ec25a913 120000 --- a/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap +++ b/Pods/Headers/Public/secp256k1_swift/secp256k1_swift-macOS.modulemap @@ -1 +1 @@ -/Users/antongrigorev/Developer/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap \ No newline at end of file +/Users/alexvlasov/Blockchain/web3swift/web3swift/Pods/Target Support Files/secp256k1_swift-macOS/secp256k1_swift-macOS.modulemap \ No newline at end of file diff --git a/web3swift.xcodeproj/project.pbxproj b/web3swift.xcodeproj/project.pbxproj index 1738d8948..7e3afd60b 100755 --- a/web3swift.xcodeproj/project.pbxproj +++ b/web3swift.xcodeproj/project.pbxproj @@ -165,6 +165,8 @@ 81DFB400210775320011DC85 /* Web3+Infura.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81DFB3FE210775320011DC85 /* Web3+Infura.swift */; }; 81EB1E4B208173D7003BD47F /* Web3+Personal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81EB1E4A208173D7003BD47F /* Web3+Personal.swift */; }; 81EB1E4C208173D7003BD47F /* Web3+Personal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81EB1E4A208173D7003BD47F /* Web3+Personal.swift */; }; + 81ED4EA82190D922003E932E /* NonceMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81ED4EA72190D922003E932E /* NonceMiddleware.swift */; }; + 81ED4EA92190D922003E932E /* NonceMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81ED4EA72190D922003E932E /* NonceMiddleware.swift */; }; 81FA43F62044097100EE14D5 /* web3swift_macOS_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FA43F52044097100EE14D5 /* web3swift_macOS_Tests.swift */; }; 81FA43F82044097100EE14D5 /* web3swift_macOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 417715D420362916005C3E16 /* web3swift_macOS.framework */; }; 81FB21FE207BB297007F9A83 /* EIP67Code.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FB21F8207BA78B007F9A83 /* EIP67Code.swift */; }; @@ -310,6 +312,7 @@ 81DDECCE1FDF004E0063684A /* Web3.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Web3.swift; sourceTree = ""; }; 81DFB3FE210775320011DC85 /* Web3+Infura.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Web3+Infura.swift"; sourceTree = ""; }; 81EB1E4A208173D7003BD47F /* Web3+Personal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Web3+Personal.swift"; sourceTree = ""; }; + 81ED4EA72190D922003E932E /* NonceMiddleware.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonceMiddleware.swift; sourceTree = ""; }; 81FA43F32044097000EE14D5 /* web3swift-macOS_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "web3swift-macOS_Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 81FA43F52044097100EE14D5 /* web3swift_macOS_Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swift_macOS_Tests.swift; sourceTree = ""; }; 81FA43F72044097100EE14D5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -502,6 +505,7 @@ 81A7B2862143DBF6004CD2C7 /* EIP681.swift */, B2E668CD214F8A7B00C3CC2D /* ENS.swift */, B219DC162154F3EE0035BF94 /* ENSResolver.swift */, + 81ED4EA72190D922003E932E /* NonceMiddleware.swift */, ); path = Classes; sourceTree = ""; @@ -1054,6 +1058,7 @@ 8160E5CE20B8245A0070070B /* IBAN.swift in Sources */, 81909D1521862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */, 810B0F9C1FEC520500CF0DA2 /* Web3+Methods.swift in Sources */, + 81ED4EA82190D922003E932E /* NonceMiddleware.swift in Sources */, 81A1822520D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 8113DE7C1FD8514400CD8DF1 /* NSRegularExpressionExtension.swift in Sources */, 81C5DA2E2074EBF500424CD6 /* EthereumContract.swift in Sources */, @@ -1158,6 +1163,7 @@ 41948131203630530065A83B /* BIP32KeystoreJSONStructure.swift in Sources */, 41948132203630530065A83B /* BIP32HDNode.swift in Sources */, 81A7B2522143C3A8004CD2C7 /* NameHash.swift in Sources */, + 81ED4EA92190D922003E932E /* NonceMiddleware.swift in Sources */, 81A1824920D7DDA20016741F /* Promise+Web3+Personal+Sign.swift in Sources */, 81A1822620D678590016741F /* Promise+Web3+Eth+GetGasPrice.swift in Sources */, 81909D1621862D37007D2AE5 /* Web3+MutatingTransaction.swift in Sources */, diff --git a/web3swift/Convenience/Classes/Data+Extension.swift b/web3swift/Convenience/Classes/Data+Extension.swift index c68fc04e7..d02fcac37 100755 --- a/web3swift/Convenience/Classes/Data+Extension.swift +++ b/web3swift/Convenience/Classes/Data+Extension.swift @@ -37,7 +37,8 @@ public extension Data { dataPtr.initialize(repeating: 0, count: count) } } - public static func randomBytes(length: Int) -> Data? { + + static func randomBytes(length: Int) -> Data? { for _ in 0...1024 { var data = Data(repeating: 0, count: length) let result = data.withUnsafeMutableBytes { @@ -51,7 +52,7 @@ public extension Data { return nil } - public static func fromHex(_ hex: String) -> Data? { + static func fromHex(_ hex: String) -> Data? { let string = hex.lowercased().stripHexPrefix() let array = Array(hex: string) if (array.count == 0) { diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift index f80a751ca..7aa3b83a6 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+SendRawTransaction.swift @@ -33,6 +33,11 @@ extension web3.Eth { throw Web3Error.nodeError(desc: "Invalid value from Ethereum node") } let result = TransactionSendingResult(transaction: transaction, hash: value) + for hook in self.web3.postSubmissionHooks { + hook.queue.async { + hook.function(result) + } + } return result } } catch { diff --git a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift b/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift index 069c8f708..7fe53fd98 100755 --- a/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift +++ b/web3swift/Promises/Classes/Promise+Web3+Eth+SendTransaction.swift @@ -10,7 +10,7 @@ import PromiseKit extension web3.Eth { - public func sendTransactionPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions?, password:String = "web3swift") -> Promise { + public func sendTransactionPromise(_ transaction: EthereumTransaction, transactionOptions: TransactionOptions? = nil, password:String = "web3swift") -> Promise { // print(transaction) var assembledTransaction : EthereumTransaction = transaction // .mergedWithOptions(transactionOptions) let queue = web3.requestDispatcher.queue @@ -30,7 +30,7 @@ extension web3.Eth { } } let shouldContinue = try prom.wait() - if shouldContinue { + if !shouldContinue { throw Web3Error.processingError(desc: "Transaction is canceled by middleware") } } @@ -51,6 +51,11 @@ extension web3.Eth { throw Web3Error.nodeError(desc: "Invalid value from Ethereum node") } let result = TransactionSendingResult(transaction: assembledTransaction, hash: value) + for hook in self.web3.postSubmissionHooks { + hook.queue.async { + hook.function(result) + } + } return result } } diff --git a/web3swift/Utils/Classes/NonceMiddleware.swift b/web3swift/Utils/Classes/NonceMiddleware.swift new file mode 100644 index 000000000..e28dc53a4 --- /dev/null +++ b/web3swift/Utils/Classes/NonceMiddleware.swift @@ -0,0 +1,111 @@ +// web3swift +// +// Created by Alex Vlasov. +// Copyright © 2018 Alex Vlasov. All rights reserved. +// + +import Foundation +import EthereumAddress +import BigInt +import PromiseKit + +extension Web3.Utils { + + fileprivate typealias AssemblyHook = web3.AssemblyHook + fileprivate typealias SubmissionResultHook = web3.SubmissionResultHook + + public class NonceMiddleware: EventLoopRunnableProtocol { + var web3: web3? + var nonceLookups: [EthereumAddress: BigUInt] = [EthereumAddress: BigUInt]() + public var name: String = "Nonce lookup middleware" + public let queue: DispatchQueue = DispatchQueue(label: "Nonce middleware queue") + public var synchronizationPeriod: TimeInterval = 300.0 // 5 minutes + var lastSyncTime: Date = Date() + + public func functionToRun() { + guard let w3 = self.web3 else {return} + var allPromises = [Promise]() + allPromises.reserveCapacity(self.nonceLookups.keys.count) + let knownKeys = Array(self.nonceLookups.keys) + for k in knownKeys { + let promise = w3.eth.getTransactionCountPromise(address: k, onBlock: "latest") + allPromises.append(promise) + } + when(resolved: allPromises).done(on: w3.requestDispatcher.queue) {results in + self.queue.async { + var i = 0 + for res in results { + switch res { + case .fulfilled(let newNonce): + let key = knownKeys[i] + self.nonceLookups[key] = newNonce + i = i + 1 + default: + i = i + 1 + } + } + } + + } + } + + public init() { + + } + + func preAssemblyFunction(tx: EthereumTransaction, contract: EthereumContract, transactionOptions: TransactionOptions) -> (EthereumTransaction, EthereumContract, TransactionOptions, Bool) { + guard let from = transactionOptions.from else { + // do nothing + return (tx, contract, transactionOptions, true) + } + guard let knownNonce = self.nonceLookups[from] else { + return (tx, contract, transactionOptions, true) + } + + let newNonce = knownNonce + 1 + + self.queue.async { + self.nonceLookups[from] = newNonce + } + // var modifiedTX = tx + // modifiedTX.nonce = newNonce + var newOptions = transactionOptions + newOptions.nonce = .manual(newNonce) + return (tx, contract, newOptions, true) + } + + func postSubmissionFunction(result: TransactionSendingResult) { + guard let from = result.transaction.sender else { + // do nothing + return + } + + let newNonce = result.transaction.nonce + + if let knownNonce = self.nonceLookups[from] { + if knownNonce != newNonce { + self.queue.async { + self.nonceLookups[from] = newNonce + } + } + return + } + self.queue.async { + self.nonceLookups[from] = newNonce + } + return + } + + public func attach(_ web3: web3) { + self.web3 = web3 + web3.eventLoop.monitoredUserFunctions.append(self) + let preHook = AssemblyHook(queue: web3.requestDispatcher.queue, function: self.preAssemblyFunction) + web3.preAssemblyHooks.append(preHook) + let postHook = SubmissionResultHook(queue: web3.requestDispatcher.queue, function: self.postSubmissionFunction) + web3.postSubmissionHooks.append(postHook) + } + + } + + +} diff --git a/web3swift/Web3/Classes/Web3+Instance.swift b/web3swift/Web3/Classes/Web3+Instance.swift index 7704fdf3a..c674bd0a5 100755 --- a/web3swift/Web3/Classes/Web3+Instance.swift +++ b/web3swift/Web3/Classes/Web3+Instance.swift @@ -204,6 +204,8 @@ public class web3: Web3OptionsInheritable { public typealias SubmissionHookFunction = ((EthereumTransaction, TransactionOptions)) -> (EthereumTransaction, TransactionOptions, Bool) + public typealias SubmissionResultHookFunction = (TransactionSendingResult) -> () + public struct AssemblyHook { public var queue: DispatchQueue public var function: AssemblyHookFunction @@ -214,10 +216,15 @@ public class web3: Web3OptionsInheritable { public var function: SubmissionHookFunction } + public struct SubmissionResultHook { + public var queue: DispatchQueue + public var function: SubmissionResultHookFunction + } + public var preAssemblyHooks: [AssemblyHook] = [AssemblyHook]() public var postAssemblyHooks: [AssemblyHook] = [AssemblyHook]() public var preSubmissionHooks: [SubmissionHook] = [SubmissionHook]() -// public var postSubmissionHooks: [SubmissionHook] = [SubmissionHook]() + public var postSubmissionHooks: [SubmissionResultHook] = [SubmissionResultHook]() } diff --git a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift index 2ddaa9ccc..d5a399582 100644 --- a/web3swift/Web3/Classes/Web3+MutatingTransaction.swift +++ b/web3swift/Web3/Classes/Web3+MutatingTransaction.swift @@ -51,7 +51,7 @@ public class WriteTransaction: ReadTransaction { } } let shouldContinue = try prom.wait() - if shouldContinue { + if !shouldContinue { seal.reject(Web3Error.processingError(desc: "Transaction is canceled by middleware")) return } @@ -129,7 +129,7 @@ public class WriteTransaction: ReadTransaction { } } let shouldContinue = try prom.wait() - if shouldContinue { + if !shouldContinue { throw Web3Error.processingError(desc: "Transaction is canceled by middleware") } } @@ -161,4 +161,8 @@ public class WriteTransaction: ReadTransaction { public func send(password:String = "web3swift", transactionOptions: TransactionOptions? = nil) throws -> TransactionSendingResult { return try self.sendPromise(password: password, transactionOptions: transactionOptions).wait() } + + public func assemble(transactionOptions: TransactionOptions? = nil) throws -> EthereumTransaction { + return try self.assemblePromise(transactionOptions: transactionOptions).wait() + } } diff --git a/web3swift/Web3/Classes/Web3+Utils.swift b/web3swift/Web3/Classes/Web3+Utils.swift index bfa1cf8d6..934b759a0 100755 --- a/web3swift/Web3/Classes/Web3+Utils.swift +++ b/web3swift/Web3/Classes/Web3+Utils.swift @@ -822,4 +822,8 @@ extension Web3.Utils { public static func hexToBigUInt(_ string: String) -> BigUInt? { return BigUInt(string.stripHexPrefix(), radix: 16) } + + public static func randomBytes(length: Int) -> Data? { + return Data.randomBytes(length:length) + } } diff --git a/web3swiftTests/Resourses/key.json b/web3swiftTests/Resourses/key.json deleted file mode 100644 index a23c2ec67..000000000 --- a/web3swiftTests/Resourses/key.json +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"id":"f96d74b2-8f25-40e0-81d3-1a6875b3f9a5","crypto":{"ciphertext":"a9a1f9144fe252514f160ff23244959193f5f98de9a1c160cace5098ce3b94c8","cipherparams":{"iv":"e2afc3c43576f985fb2b64e3de363c95"},"kdf":"scrypt","kdfparams":{"r":6,"p":1,"n":4096,"dklen":32,"salt":"f2c9a8a9bcfd2672d81af8cdb86f0df9ba879113c1926e163056bf766e1671ad"},"mac":"72e2360bc01ec91f137a47d9156c89d07b23a20262b26a157917ce99554befff","cipher":"aes-128-cbc"},"address":"0x3c5bb4fec14c202352b3177e0d14e645493bbf16"} diff --git a/web3swiftTests/web3swift_Eventloop_Tests.swift b/web3swiftTests/web3swift_Eventloop_Tests.swift index d5355dd2c..6ca05f5ad 100644 --- a/web3swiftTests/web3swift_Eventloop_Tests.swift +++ b/web3swiftTests/web3swift_Eventloop_Tests.swift @@ -34,5 +34,41 @@ class web3swift_Eventloop_Tests: XCTestCase { waitForExpectations(timeout: 60, handler: nil) } + + func testNonceMiddleware() { + let web3 = Web3.InfuraRinkebyWeb3() + let middleware = Web3.Utils.NonceMiddleware() + middleware.attach(web3) + + let sendToAddress = EthereumAddress("0xe22b8979739D724343bd002F9f432F5990879901")! + let ksData = getKeystoreData() + let tempKeystore = EthereumKeystoreV3(ksData!) + let keystoreManager = KeystoreManager([tempKeystore!]) + web3.addKeystoreManager(keystoreManager) + + var tx = web3.eth.sendETH(to: sendToAddress, amount: 1000) + tx!.transactionOptions.from = tempKeystore!.addresses!.first! + var result = try! tx!.send(password: "web3swift") + let newNonce = result.transaction.nonce + sleep(1) + let hookNewNonce = middleware.nonceLookups[tempKeystore!.addresses!.first!]! + XCTAssertEqual(newNonce, hookNewNonce) + + tx = web3.eth.sendETH(to: sendToAddress, amount: 1000) + tx!.transactionOptions.from = tempKeystore!.addresses!.first! + result = try! tx!.send(password: "web3swift") + sleep(1) + let newNonce2 = result.transaction.nonce + let hookNewNonce2 = middleware.nonceLookups[tempKeystore!.addresses!.first!]! + XCTAssert(newNonce2 == hookNewNonce2) + } + + func getKeystoreData() -> Data? { + let bundle = Bundle(for: type(of: self)) + guard let path = bundle.path(forResource: "key", ofType: "json") else {return nil} + guard let data = NSData(contentsOfFile: path) else {return nil} + return data as Data + } + } diff --git a/web3swiftTests/web3swift_transactions_Tests.swift b/web3swiftTests/web3swift_transactions_Tests.swift index 1109764ef..32b578a70 100755 --- a/web3swiftTests/web3swift_transactions_Tests.swift +++ b/web3swiftTests/web3swift_transactions_Tests.swift @@ -84,4 +84,11 @@ class web3swift_transactions_Tests: XCTestCase { guard let data = NSData(contentsOfFile: path) else {return nil} return data as Data } + + func testGenerateDummyKeystore() { + let keystore = try! EthereumKeystoreV3.init(password: "web3swift") + let dump = try! keystore!.serialize() + let jsonString = String.init(data: dump!, encoding: .ascii) + print(jsonString) + } }