内容简介:用5个CMT可以做什么?很悲伤的消息是,在币圈大凉的环境下,按照现在的币价来算,只能买一瓶矿泉水。但是这5个CMT 在开发人员手里,大有用处!究竟能够发挥了什么作用,来CyberMiles开发者社区11月25日举办的 2小时学会编写智能合约Workshop101 看看。
用5个CMT可以做什么?
很悲伤的消息是,在币圈大凉的环境下,按照现在的币价来算,只能买一瓶矿泉水。
但是这5个CMT 在开发人员手里,大有用处!究竟能够发挥了什么作用,来CyberMiles开发者社区11月25日举办的 2小时学会编写智能合约Workshop101 看看。
Hello World
Hello world 是最简单的程序之一,也是大部分 程序员 编写的第一个程序。这次的workshop 101 也是从最基础的Hello world智能合约开始。
这里要特别指出哦,Hello World 部分的主讲人杨乐。她是CyberMiles 的产品经理,是香港大学英文文学系的高材生,她与这次来参会的大多数人一样,在此之前,没有任何编程经验。只要你愿意,欢迎来到开发者社区小课堂的讲台哟。
说回正题,在正式部署执行Hello world智能合约之前,我们需要在电脑上安装MetaMask for CMT。这是一个安装在Chrome 浏览器的钱包工具,它的主要功能是管理 CyberMiles 帐号私钥,实现从网页上直接支付 CMTs (包括gas 费)等功能。
安装过程比较简单,去官网 (https://www.cybermiles.io/metamask/) 下载插件,之后在Chrome的扩展程序中打开开发者模式,将下载好的 metamask4cmt.crx 拖拽至Chrome 的扩展程序页面。
拖拽后,如果Metamask for CMT 不能正常工作,可以试下重启浏览器。如果依然不能正常工作,来参加workshop 的程序员提供了一个新的方法,非常厉害,当天拯救了不少人的电脑。
把下载好的metamask4cmt.crx 的后缀改成.rar,进行解压。在Chrome 扩展程序页面,点击 “加载已解压的扩展程序”,添加解压好的metamask4cmt.crx 就可以了。
此外,如果Chrome 中已经安装了其他版本的MetaMask,为了不影响使用,最好暂时停止使用其他版本的MetaMask,只留Metamask for CMT激活。
安装好MetaMask for CMT,就可以生成一个新的 CyberMiles 帐号来存储 CMTs,在最上方选择Main CyberMiles Network。因为主办方会给每个人发5个真实的CMT,用于支付执行智能合约的gas 费以及参与后面的神秘环节。
CMT的转账速度非常快,差不多10秒就到账了,并且不用支付gas费,转账体验非常好!
有了5个CMT和MetaMask for CMT,就可以开始我们的Hello World!
在 Chrome 里打开Remix for CMT的网页,将写好的Hello World智能合约代码放进中间的代码编辑区,当然,你也可以选择自己写代码。
之后点击右侧的 Start to compile, 编译器会自动检查这段代码是否存在常规性错误。没有问题的话,编译器会自动识别出该段合约的名称,也就是 Contract 后面的Greet。如果有问题,编译器会给出提示,根据提示修改代码,再次编译即可。
检查代码没有问题后,就可以把Greet智能合约部署到 CyberMiles 区块链了。点击右侧最上方的Run,然后点击Deploy。这时需要调用MetaMask for CMT 支付部署智能合约所需要的gas 费。
一般情况下,MetaMask 的支付页面会自动跳出,点击 Submit 进行支付就可以了。如果没有自动跳出,手动点击插件就好了。可以看到,部署这个合约上链只需要花费0.000489个CMT。
支付完gas 费后,右下方Deployed Contracts 处就可以看到,我们的合约已经在CyberMiles 链上部署好了。
红色的terminate 可以终止这个合约,但只有合约owner 才可以执行这项操作,终止合约同样需要支持少量gas 费。
greet 显示智能合约的内容是什么,在这里是Hello World。当然,Hello World 这个词只是程序员的选择。作为智能合约的开发者,你可以让 greet() 返回任何字符 — 可以是一首歌,一篇文章,一本书,或者是一段加密的文字。
owner 显示这个合约的所有权归哪个地址所有。你为这个合约支付部署gas费的账号地址就是合约的所有者。
同时用区块浏览器 (cmttracking.io/) 查询交易地址信息,可以看到刚刚创建的合约地址。如果你的朋友有这个合约地址,在 At Address 栏内输入合约地址,点击At Address 就可以收到别致的智能合约问候啦!
我们上面看见怎么用Hello World智能合约在区块链存一段话,并让世界上任何人看见这段话。那么,这是怎么在代码里实现的呢?
pragma lity ^1.2.4; 复制代码
这是智能合约所用的代码语言及版本。
contract Greet {
function greet() {
}
function terminate() {
}
}
复制代码
以上代码介绍了智能合约的名字Greet,以及两个功能,greet和terminate。
address public owner;
modifier onlyOwner() {
assert(msg.sender == owner);
_;
}
constructor () public {
owner = msg.sender;
}
复制代码
以上的代码设置了合约的owner,owner的地址信息是公开的。信息发送者,也就是谁支付了gas费,让合约能够部署到链上,谁就是owner,并且定义了只有owner能够修改这个合约。
function greet() public pure returns (string) {
return "Hello world";
}
复制代码
以上代码表明当你调用greet()时,就会出现 Hello World。这个功能只是从区块链上读取数据,所以不需要 gas 费用。这里你可以把 Hello World 改成任何文字。
function terminate() external onlyOwner {
selfdestruct(owner);
}
复制代码
这就是智能合约最开始定义的terminate 终止合约的功能,并且定义了只有Owner可以执行这项功能。selfdestruct是析构函数,用于销毁数据,终止合约。
到这里,Hello World的代码就结束了,这是一段非常完整的代码。
这个最基础的合约既设置了合约的Owner,同时也设置了Owner 能够销毁合约,当执行selfdesruct时,合约里的钱也会返还给Owner。
因为合约地址与钱包地址长地非常像,并且长度也一致,如果不小心把币打到了合约地址,一般情况下,是无法找回的。但如果你知道合约的owner是谁,可以联系合约的owner,在销毁合约时拿回你的资产。
这只是个人的小损失,如果项目方没有认真地对待代码,带来的资产损失是非常严重的。非常典型的案例是,今年7月份,Polkadot 有超过513,774.16 ETH 被冻结在Parity钱包中,就是因为合约中的 owner 被人设成 null 了,因此没有人可以终止合约,拿回存在合约里的钱。现在,钱仍然被锁在合约里,永久冻结。
谨慎对待,认真审查每一段代码,尤其是涉及到钱的代码,这是每个程序员该有的素质。
CyberMiles 连最基础的智能合约代码也保证了代码的完整性,值得我们学习。
Bet game 竞猜小游戏
这次workshop 还有进阶版,通过智能合约发起一个竞猜游戏,由智能合约当裁判,可以说具备了完全的公正性。
代码比较复杂,不再一一解释,有兴趣的朋友可以自行去 github 研究一下。
Owner 把智能合约部署在CyberMiles 区块链上后,玩家可以在Remix for CMT中输入合约地址,调用该合约,参与竞猜游戏。
游戏规则是每个参加workshop的人先从2到12中随机选择一个整数,并为自己选择的数字支付一定数量的CMT作为赌注。如果猜对了,将获得等比例的CMT。
规则公布后,Owner 选择startGame ,游戏正式开始!大家在现场跃跃欲试,有人大声说着”all in”,有人应和着,现场一时异常欢乐。这也是5个CMT的神秘用处!
调用合约成功后,在右下方 placeBet处填写自己选择的整数,在右上方Value处,将单位选择为CMT,并且填写自己准备花费多少钱。填好后,通过Metamask for CMT支付 gas费,将下来坐等开奖!
杨乐在微信中随机掷了两个骰子,确认了最终的正确答案。在骰子”尘埃落定”的过程中,一片安静,静悄悄地等最终答案,看来大家都沉浸在游戏中了。
正确答案出来后,合约Owner 在endGame处填写数字8,并支付gas费。
接下来就到领奖环节,根据智能合约的规则,前面在 placeBet 填写了数字8的参与者将按比例平分收集到的所有下注的CMT。
赢家点击payme,支付gas 费,合约将自动把分配好的CMT 转账到赢家的CMT 账户里,这一切由代码计算,执行。
现场有两位赢家,一位以0.5 CMT拿走了5.3个CMT,一位以2CMT拿走21.2CMT。当然也有没有猜中的同学不死心地点了payme,但是因为不是赢家,什么也没拿到,白白地支付了gas费。不相信智能合约是不行的。
结果公示,两位赢家拿走奖励后,Owner 选择 terminate 这个合约,游戏到此圆满结束!
用5个CMT 编写智能合约,和周围的小伙伴一起讨论这段代码该怎么理解,又有CMT开发社区的人热心指导,最后参与到有趣的游戏中,见证了什么叫做”Code is law”。
非常感谢CyberMiles 开发者社区能够组织这样一次活动。这是一次非常棒的体验,也是区块链技术应有的魅力之处!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Trading and Exchanges
Larry Harris / Oxford University Press, USA / 2002-10-24 / USD 95.00
This book is about trading, the people who trade securities and contracts, the marketplaces where they trade, and the rules that govern it. Readers will learn about investors, brokers, dealers, arbit......一起来看看 《Trading and Exchanges》 这本书的介绍吧!