Solidity 智能合约开发第一步 ——「Hello World」
通过“Hello world”实例的开发,初步理解Solidity的工作原理,并能够使用Remix( Solidity IDE)在以太坊平台上创建自己的智能合约。
- 本文学习内容参考 http://t.cn/Rettx1K 。
- 本次学习使用了正规的VPN代理。
第1步:创建文件
转到 Remix IDE 网站。Remix是一个集成开发环境,可以帮助你编写智能合约。它可以在线使用,并且可以非常轻松地编写,调试和部署智能合约。
如果你访问成功将会有如下界面:
接下来,单击左上角的+符号以创建新合约并将其命名为Hello.sol
第2步:规定版本Pragma
规定合约兼容的编译器版本,规定最低版本0.4.0,并且兼容任何版本高达0.5.0。我们通过在最小版本之前添加^符号来实现此目的,如下所示。
pragma solidity ^0.4.0;
第3步:声明合同
很像用Java等其他语言声明一个类。我们使用关键字契约而不是类,合同名称应与.sol文件的名称相匹配。在我们的例子中,我们将合约命名为Hello。
contract Hello { }
第4步:声明变量
在本合同中,我们将使用两个变量。第一个变量是 address 类型。address 基本上是指以太坊上的帐户。当您引用address时,指的是用户帐户或智能合约帐户。第二个变量是string类型。字符串是一种普遍存在的数据类型,所以不在说它。
我们将命名我们的变量创建者和问候语。creator变量将存储部署智能合约的帐户的地址,而greeting变量将保存我们可以在合同状态下返回或操作的字符串。
contract Hello {
address creator;
string greeting;
}
第5步:构造函数
使用msg.sender初始化creator变量,msg是一个全局可用的对象,它提供有关调用合同或函数的事务的信息。
function Hello(string _greeting){
greeting = _greeting;
creator = msg.sender;
}
第6步:编写常量函数
添加一个名为greet()的常量函数。此函数将返回string类型的变量greeting。
function greet() constant returns(string){
return greeting;
}
第7步:使用setGreeting()更改合同状态
setGreeting() 的函数将字符串作为参数,该函数将我们的greeting变量分配给参数。
function setGreeting(string _greeting){
greeting = _greeting;
}
第8步:将合同部署到沙箱
现在我们的合同已经完成,我们将把它部署到内置的沙箱区块链中以查看它的实际运行情况。你的代码应如下所示:
pragma solidity ^0.4.0;
contract Hello {
address creator;
string greeting;
function Hello(string _greeting){
greeting = _greeting;
creator = msg.sender;
}
function greet() constant returns(string){
return greeting;
}
function setGreeting(string _greeting){
greeting = _greeting;
}
}
部署合约
1.单击编辑器右侧的“run”选项,从第一个下拉菜单中选择JavaScript VM。
2.在"deploy"按钮旁边的字段中输入字符串“Hello World”。
你的屏幕应如下所示:
3.单击“Deploy”按钮进行部署。部署完成后,您将在IDE底部的灰色终端区域中获得有关合约的信息。如果您展开该部分,您将看到类似于下面的内容:
状态 显示合同的部署状态。
合约地址 是您可以参考合同的以太坊地址。
起始地址 是部署合同的帐户的地址。
在这种情况下,To指的是为创建契约而调用的构造函数。
gas 是为部署合同而支付的金额。
第9步:与合约互动
部署完成后,您将看到右侧与合同交互的输入。将有一个下拉框,其中包含合同名称及其地址。在下面你会看到一个标有greet的按钮。当您单击该按钮时,它将调用greet函数并返回变量greeting的值。
我们可以在setGreeting按钮旁边的输入框中键入我们想要的任何字符串。例如我输入“Hello ZYP”,然后再次按下“greet”按钮,它应该返回我们的新字符串。