Создать новый метод контракта в web3swift - PullRequest
0 голосов
/ 15 апреля 2020

https://ropsten.etherscan.io/address/0x1aa657b495a11838b121d3b3c38f196dba3f814c#code Выше мой умный метод контракта.

Мне нужно вызвать метод «депозит» .... который расположен как 4-й метод ..

Поскольку я новичок в Web3swift и умном контракте, я не могу успешно вызвать этот метод.

То, что я пробовал: Мой код:

func prepareTransaction() {
DispatchQueue.global().async {
let value: String = "0.1"
let amount = Web3.Utils.parseToBigUInt(value, units: .eth)
let addressFrom: String = "0x4E0d3bb7359C8384bca20................"
guard let ethAddressFrom = EthereumAddress(addressFrom) else {return}

    guard let ethContractAddress = EthereumAddress(contractAddress) else {return}

    let web3 = Web3.InfuraRopstenWeb3() //or any test network
    web3.addKeystoreManager(KeystoreManager.defaultManager)

    var options = TransactionOptions.defaultOptions
    options.from = ethAddressFrom
    options.gasPrice = .manual(BigUInt("200000000"))
    options.gasLimit = .manual(BigUInt("27500"))
    //options.value = amount // or any other value you want to send

    guard let contract = web3.contract(myTestABI, at: ethContractAddress, abiVersion: 2) else {return}

    let transaction = contract.write("deposit", parameters: [ethContractAddress, amount!] as [AnyObject], extraData: Data(), transactionOptions: options)!

    do {
        let send = try transaction.send(password: "")
        print("trans res", send.transaction)
    } catch(let err) {
        print("trans err", err)
    }

}
}

Я ПОЛУЧИЛ КОНТРАКТ ABI С ИСПОЛЬЗОВАНИЕМ API: https://api-ropsten.etherscan.io/api?module=contract&action=getabi&address=0x1aa657b495a11838b121d3b3 ..................

Сверху API использует ключ "result" в качестве строки.

Теперь я получаю сообщение об ошибке: Не удалось оценить объем получаемого газа.

...