以太坊智能合约有各种各样的用例,但到目前为止,从你的iOS应用程序中调用它们非常困难。不过如果使用以太坊iOS开发套件和EtherKit,这种情况会改善很多,你可以立即开始使用。在本教程结束时,你将能够调用其ABI(应用程序二进制接口)中定义的任何公共合约函数。
对于这个项目,我们将使用Xcode 10.0和ContractCodegen 0.1。我们还建议使用iOS MVVM项目模板,但为了使本教程简单,我们将使用正常的iOS项目结构。
首先,我们将创建一个新的iOS项目,并将其称为EthereumContracts
。在这里下载我们的示例合约abi.json
文件。下载成功后,将文件拖到Xcode项目中。你的Xcode项目现在应该如下所示:
安装ContractCodegen
在本教程的下一部分中,我们将从我们的以太坊iOS开发工具包下载ContractCodegen。为此,我将使用Cocoapods,它将自动下载必要的依赖项,但还有其他方法可用,在以太坊iOS开发套件Github中有描述。
在项目根目录中创建Podfile并插入以下代码:
platform :ios, '10.3'
project 'EthereumContracts'
inhibit_all_warnings!
use_frameworks!
target 'EthereumContracts' do
pod 'ContractCodegen', '~> x.y.z'
end
打开终端并粘贴此命令:
pod install
当此命令完成时,关闭我们的EthereumContracts
项目并在Finder中打开EthereumContracts.xcworkspace
。
很好!现在让我们生成Swift代码以与我们的智能合约进行交互。
生成Swift代码
首先,确保你在项目根目录中。如果你已经在了,我们可以非常简单地生成我们的Swift代码,只需使用以下命令:
Pods/ContractCodegen/ContractCodegen/bin/contractgen HelloContract EthereumContracts/abi.json -x EthereumContracts.xcodeproj -o EthereumContracts/GeneraredContracts
当命令询问你使用哪个选项时,非常简单,只使用一个,即第一个选项。
瞧,如果你收到“Code generation: ok”的消息,你已经为以太坊智能合约创建了第一个Swift代码。</