首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用web3swift与自定义智能契约交互

使用web3swift与自定义智能契约交互
EN

Stack Overflow用户
提问于 2018-07-12 13:40:52
回答 1查看 833关注 0票数 3

我正在使用web3swift库,我成功地完成了一些事务,主要是gets (balanceOf、owner等)。我阅读了整个自述文件(文档),但我不太确定,我们是否可以使用这个库来调用自定义智能契约中的函数?例如,我有商店智能合同,我想从它调用购买功能?我看到我们可以传输eth和ERC20令牌,但这对我来说还不够。在这方面有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-22 10:53:26

是的,您可以在自定义智能契约上调用任何函数。下面是一个例子。

代码语言:javascript
复制
        let infura = Web3.InfuraMainnetWeb3()
        // 1
        let contract = infura.contract(someABI, at: ethContractAddress, abiVersion: 2)
        // 2
        var options = Web3Options.defaultOptions()
        options.from = address
        // 3 
        let transactionIntermediate = contract?.method("accountExists", parameters:[address] as [AnyObject], options: options)
        // 4
        let result = transactionIntermediate!.call(options: options)
        switch result {
        // 5    
        case .success(let res):
            let ans = res["0"] as! Bool
            DispatchQueue.main.async {
                completion(Result.Success(ans))
            }
        case .failure(let error):
            DispatchQueue.main.async {
                completion(Result.Error(error))
            }
        }
    }  
  1. 建立合同和ABI。您需要数据或字符串格式的契约地址。let ethContractAddress = EthereumAddress("0xfa28eC7198028438514b49a3CF353BcA5541ce1d")!您可以直接从Remix获得合同的ABI。
  2. 设置您想要的所有选项。
  3. 可能是答案的主要部分之一--在这里,您将创建带有契约方法名称的事务,并将该方法所需的所有参数都放入其中。4.您可以在这里调用或发送事务。call方法用于具有view标识符的方法,因此您不会为此付费,方法send()用于智能契约的方法,这些方法应该在执行时使用gas支付。
  4. 在这里,您只需要解析由方法返回的结果。您应该知道您希望从具体方法中获得的变量的数据类型,以便正确地解析它们。

我希望我的回答能帮助你!如果有什么事情还不清楚,请随便问!:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51307215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档