技术教学 | Solidity编程语言:Address_比特币:DDRT价格

地址

这里要说的地址并不是通常的编程语言中的内存地址,而是交易地址。我们知道区块链进行价值传递的时候必须是通过一个地址传递到另一个地址,无论交易或者合约都离不开地址。因此把地址作Address为Solidity语言的内嵌数据类型会十分方便开发的,更重要的一点就是在Solidity中,所有合约都继承地址Address类型。这不仅仅是单纯的为了在语法上的实现,而在实际情况是合约本身就离不开地址,包括合约的部署和执行都需要地址的参与。地址是两种类型,一种是address,一种是addresspayable。其中addresspayable相比address类型多了两个成员方法send和transfer,表示可以向addresspayable类型的变量进行转帐操作。

公告 | 红塔证券:公司持续关注区块链技术的发展及应用:据上交所-E互动消息,红塔证券(601236.SH)在回复投资者提问时表示,公司将持续关注区块链技术的发展及其在行业中的应用,并研究学习、积极探索这项新技术。[2019/12/27]

地址类型格式要求

以太坊中的地址是20个字节,比如0x52908400098527886E0F7030069857D2E4169EE7,由于一个字节等于8位,所以地址也可以使用uint160来声明。地址通常可以进行比较运算。

pragmasolidity>=0

动态 | 中关村工信二维码技术研究院利用区块链认证机制实现二维码的不可仿冒:据人民网消息,近日,在2019国际二维码产业发展大会上,中关村工信二维码技术研究院院长张超在接受采访时表示,研究院于2014年发布的二维码对象标识体系IDcode,是唯一一个由中国倡导、面向全球发行的国际代码,“MA”的全球解析和区块链认证机制,可为现实世界的每一个物体分配一个全球唯一的二维码身份标识,无法仿冒,解决了传统二维码技术存在码制混乱、安全性差等问题,具有安全可信、互联互通、成本低廉、应用场景丰富等优势。[2019/8/29]

functiongetOwner()publicreturns(address){returnowner;}

声音 | 中国社科院尹振涛:可以通过区块链技术手段进行反:据法制日报报道,中国社会科学院金融研究所法与金融研究室副主任尹振涛最近在接受采访时表示,比特币的出现不只是为了货币发行,而是确实产生了一种全新的货币,但更重要的是,比特币产生了一个交易体系。尹振涛认为,数字货币面临两方面的风险。第一是技术层面,数字货币依赖于区块链技术和一个系统,这就会使其遭受安全冲击,比如计算机系统的黑客攻击,我们在这个过程中看到过很多实际问题。此外,数字货币的另一个风险是信用风险问题。因为数字货币交易存在中间商,这些中间商不同于现实中的组织。现实中的组织是看得见、摸得着的,但数字货币的中间商是在网络上的,风险更大。区块链技术是一把双刃剑,从技术的角度看,既然区块链可以用于,那么也可以通过技术手段进行反。这一逻辑是成立的,而这也是他所倡导的监管科技的重要方法之一。[2018/8/14]

functiongetContractAddr()publicviewreturns(address){returnaddress(this);}

游族网络CEO:区块链技术对游戏设计有巨大参考意义:游族网络董事长兼CEO林奇今日在“三点钟无眠区块链”群发表了自己对区块链游戏的看法。他认为区块链技术本身对游戏设计本身有非常巨大的可参考意义,因为游戏本身就是一个玩家和研发团队共建的虚拟经济生态。其中的虚拟劳动、荣耀带来的价值都可以被区块链化,但前提是,它首先得是一个非常完善的产品。他还建议,那些连基本的、简单的互联网应用产品都做不出的游戏团队就不要“凑热闹”了。[2018/2/25]

functiongetSenderAddr()publicreturns(address){returnmsg

}

msg

functiontestTranser()payablepublic{addresspayableto=0x52908400098527886E0F7030069857D2E4169EE7;to

functiontestStack1024(uintdepth)payablepublic{addresspayableto=0x52908400098527886E0F7030069857D2E4169EE7;boolr=to

}

/*functiontestCSend()payablepublic{addresspayableto=address(this);this

*/

/*functiontestCTranser()payablepublic{//addresspayableto=0x52908400098527886E0F7030069857D2E4169EE7;address(this)

*/}

方法:

send

send方法相比较transfer方法来说更“底层”一些,如果send方法执行失败,并不会抛出异常,而是返回false。

send调用栈深度不能超过1024,否则会执行失败。这个问题在testStack1024方法中进行了验证,不过传入的数字太大的话,会执行失败,即使没到1024,原因还没找到。

send方法会返回bool类型的结果来表示执行结果。

如果gas不够会执行失败。

建议使用transfer方法,相对更安全些。

transfer

transfer和send使用方法上一样,也是用来进行转帐操作,如果当前帐户余额不足或者对方帐户拒绝转帐,则会执行失败。

如果transfer的调用地址是一个合约地址,则合约的回调函数将被执行。

关call及delegatecall、staticcall单独使用一篇幅来讲。

作者:感谢HPB蓝莲花团队整理供稿。

注:如有问题请在下方留言联系我们技术社群。

汪晓明博客:http://wangxiaoming.com/

汪晓明:HPB芯链创始人,巴比特专栏作家。十余年金融大数据、区块链技术开发经验,曾参与创建银联大数据。主创区块链教学视频节目《明说》30多期,编写了《以太坊官网文档中文版》,并作为主要作者编写了《区块链开发指南》,在中国区块链社区以ID“蓝莲花”知名。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:31ms0-7:5ms