前言
经过前一篇文章,我发现我自己对于智能合约还有很多认识不足的地方,很多地方可能认识的不够透彻,所以通过这篇文章的内容再来温习一下合约从开发到部署和调用的流程。这篇文章将使用最简单的方式来开发一个简单的智能合约,部署使用控制台的方式来部署。开发环境为windows10.
准备工作
合约代码
以太坊私链节点
remix在线编辑器
合约代码
这次教程我们使用一个爱情宣言来讲述基础的合约功能。
pragma solidity ^0.4.11;
contract Love{string man;string woman;string love_words;//爱情宣言string status="未签订";function Love(string ma,string wom,string words){woman=wom;man=ma;love_words=words; }function getloveWords() returns(string){return love_words;}function getBothName() returns(string,string){return (man,woman);}function order(){status="已签订";}function getStatus()returns (string){return (status);}}
上面一共有4个成员变量和4个方法分别是:
- man
- woman
- love_words
- status
方法:
- getloveWords()
- getBothName()
- order()
- getStatus()
其成员变量分别存放 双方的姓名,爱情宣言,签订状态。
方法提供了获取爱情宣言,获取双方姓名,签订和查看签订状态的方法。
最后这个合约还有一个构造函数:Love(string ma,string wom,string words)他和类名相同需要在创建合约时提供必要的参数(和java等语言中的构造函数一样)。
合约编辑
合约编辑一般使用remix编辑器来实现,他提供了代码高亮,在线编译,调试,运行的功能。
我们将代码复制到代码区之后等待编译完成,旁边的detail从禁止状态变成可以状态说明已经编译通过了。
合约的创建
- 通过编辑器创建调试环境。
在remix中有一个run选项卡,通过该选项卡可以很简单的创建和运行合约。
通过create按钮创建新的合约实例,输入框中的参数用逗号隔开,字符串使用英文的双引号引起来。创建好后的就可以很方便的调用了。
2.通过控制台创建合约
通过控制台创建合约稍微有点复杂,但是remix提供了很人性化的服务,将控制台部署所需要的参数和代码都给一一列出来了。
合约发布前需要先解锁账户,使用personal.unlockAccount(账户id)来交互式的解锁账户。
然后复制上面提到的代码,修改构造函数的参数,粘贴到控制台中。
启动挖矿,等待挖矿处理完成后会得到合约的地址和交易hash,并且之前用到的 browser_snade_sol_love对象已经可以被调用了。
合约的调用
1.通过开发环境调用
通过实例的方法按钮点击既可以调用合约的函数,部分需要传参数的,通过数据库输入即可,和创建合约时类似。
从日志窗体中可以很清楚的看到这次调用的花费,参数和响应的信息。
2.通过控制台调用合约
通过合约发布时的对象可以很方便的调用合约方法其中方法调用分为:
- 方法名.sendTransaction
- 方法名()
- 方法名.call()
其中前两个为当需要修改区块链数据或者合约数据的时候的调用方法,call的形式主要用于本地调用且不修改任何数据只读等函数调用使用。
在这里有个坑,有可能会出现Error: invalid address
,原因是没有传from
,交易发起者的地址。
调用需要修改区块链的方法后会得到一个收据号,通过收据号可以查询处理进度。
总的来讲合约的调用还是很简单的,后面的文字还将讲到其他的调用方式和通过其他语言来调用合约。
引用
web3.js编译Solidity,发布,调用全部流程(手把手教程)