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" в качестве строки.
Теперь я получаю сообщение об ошибке: Не удалось оценить объем получаемого газа.