首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从零开始学基于以太坊的区块链应用开发系列16

欢迎继续我们的学习。

首先让我们回顾一下区块链的普通交易transaction流程。

在普通的交易中,通常是账户A向账户B转移一定数量的数字资产,此时将需要更改区块链的记录,并进行mining运算。

而在智能合约交易中,同样需要修改区块链的记录,并进行mining运算,唯一的不同在于,智能合约的交易过程中修改的记录不仅仅是账户信息,还包括合约的内容。

反过来说,当区块链上的任何信息需要被修改时,一定要提交一个对应的交易。

在提交了交易信息之后,还要等待区块链上的节点进行mining运算,以对交易信息进行验证。在以太坊网络中,这一类的运算需要10-30秒左右,通常在15秒。

好了,现在在Chrome中打开remix的页面,让我们进一步了解函数的作用。

注意:在重新打开页面后,需要切换到Run选项卡,并重新设置Environment,输入新的初始化信息,并点击Create创建新的实例对象。如果你之前并没有关闭该页面,那么就无需考虑这个问题。

再次提示:如果remix页面加载很慢,请翻墙~

这里我们有两个函数,其中message用来获取变量的信息,而setMessage则用来设置新的信息。

其中getMessage,或者单纯的message函数并不会修改区块链上的任何信息。而setMessage函数则会更改区块链上的信息。

简单来说,getMessage函数执行的时候并没有提交交易信息,而setMessage函数执行的时候需要提交交易信息,并进行mining运算。

所以在solidity中执行函数存在以下的两种情况:

第一种情况下,函数的执行跟其它语言或应用没有区别。

但是函数不能修改合约中的数据信息。

在这种情况下,函数会返回数据信息,而且是立即执行,且不需要任何的花费。

而在第二种情况下,函数的执行是基于交易的。

此时函数可以修改合约中的数据,但需要发送交易信息。

在这种情况下,函数的执行需要一定的时间(mining运算,大概10-30秒),会返回交易的hash信息,并需要花费一定的ETH。

为了证明这一点,让我们来实际测试一下。

在remix页面的右上角切换到Run选项卡,并从Account中选择一个有100ether余额的账户。

接下来在setMessage后的文本框中输入一个字符串(注意加上半角的双引号),然后点击setMessage按钮。

点击按钮前

点击按钮后

而点击message按钮则不会更改账户的余额。

不过有一点似乎不对劲,刚才我们提到了,要进行交易确认,需要至少10-30秒的时间,但是在remix中点击setMessage之后,几乎是立刻就得到了反馈结果。

这是什么情况?

交易确认所需要的时间指的是在实际的Ethereum网络中,不管是主网,还是几种测试网络上。

而这里我们使用的只是浏览器中的虚拟机,执行时间就会大大降低。但实际执行智能合约的时候,是要消耗一定时间的。所以,从用户体验的角度,一定要考虑到这一点。

通常我们可以在此时考虑给用户一个比较友好的提示,否则用户会不知所措的~

好了,这一课的内容就到这里了,我们下一课再见。

知乎专栏:

https://zhuanlan.zhihu.com/kidscoding

新浪博客:

Github:

https://github.com/eseedo

个人网站:

http://icode.ai/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180801G0NI2E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券