1. 首页 > 创业 > 故事

比特币算力创下6900万THs历史新高,竟然是地球沙粒总数的10倍

数字货币亮相为期不远

据悉,自前任所长姚前担任中证登总经理后,央行数研所掌门人一直处于空缺状态。多家与该研究所有合作的金融机构向记者表示,穆长春成为第二任所长后,央行数研所工作进展顺利,备受关注的央行数字货币距离正式亮相已经不远。

2014年,时任央行行长的周小川便提出构建数字货币的想法,央行也成立了全球最早从事法定数字货币研发的官方机构——央行数字货币研究所。该所主要工作职责是根据国家战略部署和央行整体工作安排,专注于数字货币与金融科技创新发展,开展法定数字货币研发工作。

新任所长穆长春近期就数字货币发展发表了诸多观点,并于本周发布了《Libra与数字货币》的公开课,详细解读了中国数字货币DC/EP,同时也回答了市场对于Libra等市场热点问题的关切。

中国数字货币技术更完善

“中国版数字货币项目称之为DC/EP,即数字货币和电子支付工具。其功能属性与纸钞完全一样,只不过是数字化形态。我们对它的定义是‘具有价值特征的数字支付工具’。”穆长春对于中国版数字货币进行了清晰定义。

中国版数字货币不需要账户就能够实现价值转移。具体场景中,只要手机上有DC/EP的数字钱包,不需要网络,只要两个手机碰一碰,就能实现转账功能。传统电子支付在没有信号的环境中无用武之地,而DC/EP不需要网络就能支付,因此也被称之为收支双方“双离线支付”。

“即便是Libra也无法做到这一点。”穆长春表示。此外,中国版数字货币不需要绑定任何银行账户,摆脱了传统银行账户体系的控制。

在电子支付手段如此发达的今天,央行为何执着于研发数字货币?穆长春强调,首要目的是为了保护货币主权和法币地位,需要未雨绸缪。

同时,DC/EP的推出也考虑到居民消费的隐私权。穆长春表示,公众有匿名支付的需求,但如今的支付工具都跟传统银行账户体系紧紧绑定,满足不了消费者的匿名支付需求,也不可能完全取代现钞支付。而央行数字货币能够解决这些问题,它既能保持现钞的属性和主要价值特征,又能满足便携和匿名的诉求。

央行对技术路线保持中性

穆长春表示,目前DC/EP采用的是双层运营体系——人民银行对商业银行,商业银行或商业机构对公众。这意味着将有一些商业机构也将参与数字货币运行之中,既符合我国国情,又能调动市场机构积极性。

此前有媒体报道称,央行将在未来几个月内正式推出国家支持的数字货币“DC/EP”,初期将向工商银行、建设银行、中国银行、农业银行、阿里巴巴、腾讯以及银联7家机构发行。

穆长春透露,央行数字货币研发不预设技术路线。Libra是混合架构,DC/EP也是混合架构。但在这个层面,央行保持技术中性,不干预商业机构技术路线选择。商业机构向公众兑换数字货币时,采用区块链技术还是传统账户体系都可以。无论采取哪种技术路线,央行都能适应。

他表示,DC/EP的投放过程跟纸钞投放一样。商业银行在中央银行开户,按照百分之百全额缴纳准备金,个人和企业通过商业银行或商业机构开立数字钱包。DC/EP依旧是M0替代,具有法偿性。

对于用户而言,只要下载一个App进行注册,就可以使用数字钱包,充值取现则需要对接传统银行账户。

不过,此次穆长春并未讨论备受关注的数字货币智能合约功能。穆长春此前在多个场合表示,央行数字货币可以加载智能合约。但如果加载超出其货币职能的智能合约,就会使其退化成有价票证,降低其可使用程度,会对人民币国际化产生不利影响。因此,数字货币会加载有利于货币职能的智能合约,但对于超过货币职能的智能合约还是保持比较审慎的态度。

智能合约漏洞周而复始!游戏合约漏洞全面汇总

区块链行业日新月异,发展迅猛,各个公链及项目方奇思妙想层出不穷。俗话说,玩是人的天性,将数字货币与游戏结合,运用游戏的机制吸引投资者参与到互动中来的想法以标新立异、推陈出新的姿态引领了最近的潮流。各种区块链游戏聚集大量的虚拟货币,价值动辄上千万,承诺下的丰厚回抱吸引了越来越多的目光,投资者们跃跃欲试,人人都想充当“头号玩家”。

但是,缺少一套完整的、经过验证的SDK库是当下区块链游戏的一个痛点。各游戏方大都自食其力,独立开发游戏智能合约。比代币合约更加复杂的开发过程使得安全隐患不可避免的出现,这些漏洞一旦被攻击者或者项目方本身利用,受害的总会是玩家,可谓是,兴,百姓苦,亡,百姓苦。

成都链安科技对目前已经爆发的区块链游戏合约事件进行了归纳整理,分析目前游戏存在以下两个方面的问题:

一、代码层面的安全问题

目前代码层面的安全问题在游戏中的表现几乎与之前的代币合约如出一辙,但是包裹了鲜亮外衣之后,内部的代码结构严谨度依然差强人意,加上游戏机制的部分功能,有些合约代码甚至更加混乱。好比建造一栋楼房,基本结构没有搭建好,上梁不正下梁歪,增加更多的楼层与附属结构反而使得楼房的轰然倒塌更加迅速。

漏洞归类与修复建议

1、以溢出为代表的代码安全漏洞

数学运算溢出在智能合约中是个比较大的安全隐患。无论是以太坊还是EOS,一个整型变量只能有一定范围的数字表示。例如,一个 uint8 ,只能存储在范围[0.255] 的数字。试图存储 256 到一个 uint8 将变成0.不加注意的话,只要没有检查用户输入又执行计算,导致数字超出存储它们的数据类型允许的范围,就会产生溢出,并可以被用来组织攻击。 此部分的具体原理在我们之前第一期,溢出漏洞全面分析中已经重点介绍过,没看过的请戳接下来的链接:一夜回到解放前?溢出漏洞类型全面分析 | 链安团队漏洞分析连载第一期 —— 溢出漏洞

接下来我们来看游戏合约案例:代表游戏:狼人游戏平台:EOS

从游戏网站上,可以很明显的看到,该合约执行发生了溢出,导致奖金池总额变为一个极大的负值,并且由于项目方应对措施不当,导致奖池奖金被盗取,普通玩家血本无归[1]。

修复建议

该游戏有三个问题需要网友们引起注意:

代码开源问题,狼人游戏项目方并未公布合约源代码,玩家在参与游戏之前无法对  项目安全性进行评估,自己的资产无法得到保障;

狼人游戏项目方要求用户提供的过大的权限,导致其有能力在用户未提供私钥的情况下,在后台修改权限,并转出用户的EOS;

对安全事件的应急响应,狼人游戏项目方未冻结攻击者账户,导致攻击者在升级后的版本中提出了6万多EOS。

在此处,成都链安科技建议广大游戏项目方应在游戏合约的设计中引入安全控制机制,包括恶意账户冻结、暂停交易等,为游戏安全建立最后一道防线。

2、以owner权限盗取为代表的函数调用权限问题

此类漏洞的形成原因为构造函数失配或者修改owner的函数未添加调用者检查。智能合约的构造函数一般担负着合约初始化以及owner地址绑定的功能,如果构造函数声明方式不正确,那么,其会变成一个普通函数,任何人都可以调用他,并将自己设置为合约管理者。修改owner的函数用于将新地址设置为owner,此类函数需要检查调用者地址,如果确少该检查,那么任何人都能够将自己变为合约的管理者。这与我们在开始连载之前的owner权限漏洞分析中的构造函数问题如出一辙,需要了解请由以下链接传送:注意!3份合约又存在Owner权限被盗问题——低级错误不容忽视

直接进入案例分析:代表游戏:Ether Cartel平台:以太坊

游戏的构造函数(DrugDealer)和合约名(EtherCartel)不一致,存在构造函数失配漏洞,导致DrugDealer变成一个普通的函数,任何人都能够调用该函数变成合约的ceoAddress,并且,根据后面的代码逻辑,他可以收取原本应该打入合约部署者的ETH[2]。

修复建议

为了避免此类漏洞,开发者在开发游戏合约时需要足够谨慎,并进行详尽的测试。构造函数仅在合约部署时执行一次,当出现合约部署后owner仍为0地址,并且用户可以调用实现构造函数功能的函数,那么,合约就存在构造函数失配的漏洞,开发者需要检查并修复构造函数实现。

3、“随机数生成”等区块链平台短板

截止至目前,以太坊和EOS官方均未提供随机数接口,这对游戏开发确实是一个不利的影响,比如抽奖模块的开发。为了实现类似的功能,游戏开发者往往需要自己编写随机数生成函数,这些函数往往利用区块信息作为参数,然后进行一系列运算,获得一个“随机数”。但是,由于使用区块信息作为参数,这将导致在同一个区块上,使用相同算法的随机数函数将会得到相同的值,攻击者可以利用这点,部署中间合约,然后不停的尝试生成随机数,当生成满意的随机数时,再利用中间合约参与游戏,获得较大优势。此外,区块链作为一个全球分布式的计算机,其资源目前是比较有限的,链的开发者为了保障链平台的稳定性,对链上的智能合约的运做出了限制,防止死循环等消耗资源的操作,比如,运行gas限制(以太坊)、CPU/内存资源限制(EOS),这使得链上游戏开发者需要比传统的中心化服务器游戏付出更大的努力,对游戏的逻辑进行优化,确保逻辑正确的合约不会因为资源限制问题而无法运行。

随机数问题我们在之前的快讯 智能合约随机数算法漏洞影响游戏公平性 已经提及过,这次我们根据案例进行一下具体分析:代表游戏:FoMo3D long平台:以太坊

该合约空投函数的随机数生成使用的区块参数依次为block.timestamp(当前区块时间戳)、block.difficulty (当前区块难度)、 block.coinbase(挖出当前区块的矿工地址)、block.gaslimit(当前区块 gas 限额)、block.number (当前区块号),结合msg.sender (玩家地址),计算出玩家是否获得空投奖励,攻击者可以部署中间合约,预先计算出在当前块进入游戏是否能够获得空投,然后在结果为true的时候参与游戏,就必然能够获得空投,并以此牟利。

修复建议

针对随机数问题,目前有几点建议:

可以尝试官方推荐的随机数生成方式,比如以太坊的Solidity官方文档推荐用户使用链外的Oraclize库生成随机数;

杜绝中间合约参与游戏,以太坊开发者需要注意,使用以太坊平台提供的    extcodesize函数并不能完全判断某个地址是否为合约,因为合约在部署的时候,其extcodesize为0.但是可以在构造函数与其他合约进行交互,从而参与游戏,可以使用tx.origin==msg.sender的方式判断。

4.  利用竞态条件机制发起的攻击

目前有些类似博彩的游戏合约似乎更加受到欢迎,此类游戏合约有一个共同的特点——时间依赖。它们都是在一定时间段内与用户进行互动,时间截止之后宣布获奖者名单。这样取决于时间点的游戏留下的隐患是:攻击者可以将整个区块“塞满”交易,使得特定的交易无法进行。 攻击者会使用高昂的gas使其成为整个区块中唯一一个交易进行者。

案例分析:代表游戏:Exitscam/FoMo3D平台:以太坊

以太坊版的FoMo3D规则类似于透明“金字塔骗局

每一局持续固定的时间

如果你是最后一个向奖池中投注的人,你拿走头奖(奖池总奖金的90%)

如果有人在你之后投注,你会获得一定的分红。目前,分红金额低于投入ETH的1%

每0.005 ETH会给结算时间增加30秒,也就是2个区块,但每次增加上限为24小时

利用竞态条件的概念,赢得此游戏,获得头奖的策略很简单:当倒计时即将结束,趋近于0时,向奖池投注ETH,“买“下之后的每一个区块直至倒计时结束,保证没有人能够在你之后投注。如果这个操作实现,你将获得头奖[3]。

这个游戏的机制漏洞几乎与之前提到的交易顺序依赖(TOD)异曲同工,竞态条件我们在第三期连载分析中也有描述,链接如下:弯道超车老司机戏耍智能合约 | 成都链安漏洞分析连载第三期 —— 竞态条件漏洞。

修复建议

游戏开发者需要熟悉重入和交易顺序依赖两种类型的竞态条件漏洞,类似的游戏机制如若可以利用相似的概念被投机取巧,应当改变设计思路,兼顾设计初衷与安全保障。

二、

虽然区块链上所有的交易都是公开透明的,但这不代表游戏项目方在合约开发的过程中不能留有后门。尤其是尚未公布源码的游戏合约,其中可以暗藏一个函数,开发者只要调用这个函数就能卷走所有的货币。而目前尚未出现一款可靠的反编译器,对字节码进行反编译后,使其源码真正公开透明。如果还拿建造楼房做比喻的话,可以理解成在建造的时候就设计成歪的,一直住在其中的用户却并没有察觉。

事件回顾

 3/4   首页 上一页 1 2 3 4 下一页 尾页

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.longfuchaju.com//chuangye/gushi/1274.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456