本篇文章,我们将编写一个最基本的合约代码,并且一步步讲解如何通过Ethereum Wallet
将合约部署到区块链,同时我们将通过本demo的演示如何通过发送数据和接收数据和合约进行交互。
Solidity合约的语法和面向对象编程语言非常相似,一个合约有我们能够调用的方法(函数)
和能够存储数据和读取数据的属性(状态变量)
。
Counter合约源码
我们的Counter
合约将increment
方法被调用的次数存储到count
属性中。并且每个人都可以通过getCount
方法获取区块链上count
的值。
pragma solidity ^0.4.4;
contract Counter {
/* 定义一个uint类型的count变量 */
uint count = 0;
/* 当这个方法被调用时count的值会加1 */
function increment() public {
count = count + 1;
}
/* 读取count数据 */
function getCount() constant returns (uint) {
return count;
}
}
Counter合约部署
- 要想发布我们的合约到区块链,打开
Ethereum Wallet
然后点击Contracts
。
- 点击部署一个新合约。
[图片上传失败...(image-4732e1-1542626858817)]
-
将我们的
Counter
合约代码拷贝到Ethereum Wallet
代码区域。 -
选择
Counter
合约,然后点击DEPLOY
按钮。
- 输入当前部署的钱包的密码,然后点击
SEND TRANSACTION
按钮。
- 查看最新交易。
- 查看交易信息。
和Counter合约互动
- 因为我们部署的合约是部署在
Account 2
上的,所以我们可以点击Account 2
查看最新的交易记录。
- 点击
Counter
按钮,进入交互界面。
- 选择
Increment
和Account 2
,然后点击EXECUTE
按钮。
- 输入密码,点击
SEND TRANSACTION
按钮。
- 交易执行完成后,count会自动加1
小结
部署合约时,因为要往区块链写入数据,需要矿工进行验证,所以需要花费一些gas奖励给矿工,还有当我们每次调用increment
方法时,也属于写入数据,同样需要花费gas,但是调用getCount
方法时只是从区块链读取数据,无需验证,读取数据无须花费gas。
网友评论