本文来源:区块链大本营
原文作者:AlbertoCuestaCa?ada
翻译:火火酱
由于所有已部署合约都有24KB的硬限制,所以除了少数极其简单的应用程序外,其他所有的Ethereum应用都是由多个智能合约组成的。
如何才能确保各智能合约间的安全协作呢?
在将代码分解为多个可操作的合约后,我们便会发现有的合约中的函数需要通过另一个合约才能进行调用。
例如,在Uniswapv2中,只有合约工厂可以对UniswapPair进行初始化。
对于Uniswap团队来说,只需要稍微检查一下就可以解决的问题对于很多其他项目来说,却需要从头开始重新编写调配解决方案。
在了解问题和开发模式的过程中,我们深入理解了如何借助多个智能合约来构建应用程序,从而使Yield更加健壮且安全。
杭州中院:面推进数字法院建设,拓展区块链智能合约应用场景:8月16日消息,杭州中院院党组书记、院长斯金锦今日在2021年“一府两院”工作报告会上向人大报告杭州法院2021年上半年工作情况和下半年工作安排。斯金锦表示,杭州中院上半年全面推进数字法院建设,在推动杭州互联网法院深化改革、迭代升级“凤凰智审”、拓展区块链智能合约应用场景等方面走在全浙江省前列。下半年将敢于创新,全力推进全域数字法院建设。(杭州中院官方公众号)[2021/8/16 22:17:47]
在本文中,我们将借助几个知名项目中的实例来深入分析智能合约的调配方式。希望大家在读完本文之后可以对照自己项目的需求,选择出最适合自己的方法。
背景知识
前文提到,我们首先要把项目分解成多个智能合约,这是出于技术和精神两个层面的限制要求。
技术限制源于2016年11月发生的一项改变。当时,Ethereum主网实施了SpuriousDragon硬分叉。此举将已部署的智能合约的大小限制在24576字节以内。
在没有此项限制时,攻击者可以在部署智能合约期间进行无限次的计算。此举虽然不会对存储在区块链中的数据产生任何影响,但却是一种针对Ethereum节点的拒绝服务攻击。
广东金融创新研究会常务理事:智能合约的安全隐患与三个因素有关:金色财经报道,3月21日,《佟掌柜的朋友们-深圳海外专场》顺利举办,中山大学区块链与智能中心客座研究员,广东省金融创新研究会常务理事谭粤飞发表了“小白用户如何读懂审计报告”的主题演讲。谭粤飞表示,从去年的10月到今年的3月,6个月的时间,每一个月都有一个知名的DeFi项目受到攻击,这足以说明安全领域的隐患有多么的大。为什么在这个领域智能合约的安全会有这样的隐患。这实际上是和三个非常重要的因素有关的。
1.智能合约本身的运行机制。智能合约之所以产生的危害是如此之大, 和合约本身的运行机制有关:无法篡改、部署和执行不可逆、开源。
2.区块链技术的特点。第二个和区块链技术的特点有关,交易的匿名和交易不可逆。尤其近来随着混币应用比如Tornado Cash等的诞生更加给交易的追踪带来了障碍。
3.另外是智能合约应用的社会约束,现有的法律法规缺乏对数字资产的保护;现有的法律法规缺乏对区块链应用的约束和规范。更多详情见原文链接。[2021/3/21 19:04:56]
由于当时的区块gas限制无法支持这种规模的智能合约,所以这项改变当时并没有受到重视:
巧克力COCO智能合约已通过Beosin(成都链安)安全审计:据官方消息,Beosin(成都链安)近日已完成巧克力coco智能合约项目的安全审计服务。据介绍,巧克力COCO是基于波场底层打造的一个去中心化开放金融底层基础设施。结合波场TICP跨链协议,订单簿DEX,智能挖矿等等功能的创新和聚合,进而打造全面去中心化金融平台。巧克力COCO无ICO、零预挖且零私募,社区高度自治。合约地址:THTpbtqfoGmL6HwqaGrWKd7aJAcUTbCnoC审计报告编号:202010042149[2020/10/5]
“该解决方案为储存在区块链中的对象大小设置了最高上限,并使其略高于当前gas上限值”
在DeFi大爆炸之前,我们为Yield编写了2000行智能合约代码,部署后的代码加起来接近100KB,审核员完全没有觉得项目过于复杂。
但我们仍需把解决方案分解为多个合约。
复杂性和面向对象程序设计
将区块链应用分解为多个智能合约的第二个原因与技术限制无关,而是与“人”的精神限制有关。
在特定的时间内,我们大脑中能储存的信息量是一定的。相比于处理单一且涉及面广的大问题,人们在处理多个相互间存在关联的小问题时表现会更好。
OKChain月报:首个桌面版客户端发布 智能合约虚拟机重大突破:据7月7日OKChain官方发布的月报显示,本月OKChain测试网实现了多项突破性技术进展,包括:
1、发布了首个可视化的全节点应用-OpenDEX,该应用当前版本v0.0.1,支持window和mac双系统;
2、OKChain在DeFi领域内比较火热的AMM应用上开始发力:完成了OKChainSWAP通证模型设计;
3、OKChain在衍生品领域内有所进展:OpenDEX币币杠杆的整体开发已完成
4、OKChain智能合约虚拟机有重大突破,并部署了OKChain-wasm单节点测试网络。
在生态建设方面,OKChain测试网参加Cosmos 跨链测试比赛-GOZ,获得第一阶段LIVENESS REWARD WINNERS。当前已有59个团队在OKChain测试网上成功申请为超级节点,包括HelloPool,ipfsforce,chainsguard,BitSong,Ankr,RenrenBit,币快报,Newpool等多个知名机构。此外,第一届黑客松大赛持续进行中,已二十余个团队参赛并完成作品提交。
?[2020/7/8]
实际上,Object-OrientedProgramming可以提高软件的复杂性。通过定义代表某种概念的“对象”,并将变量和函数看作该对象的属性,开发人员能够在心里更好地描画和理解需要解决的问题。
独家 | 新增翻版Fomo3D智能合约“剪刀石头布”Jan Ken Pon:第三方大数据评级机构RatingToken最新数据显示,2018年8月8日全球共新增757个合约地址,其中177个为代币型智能合约。据RatingToken团队发布的“新增代币型智能合约风险榜”,Jan Ken Pon(JKP)、Opporty(OPP)和bank(BANK)风险最高,检测得分分别为1.97、2.80和2.80,其中Jan Ken Pon在日语中意为“剪刀石头布”,是类Fomo3D游戏,存在14个安全风险。其他登上该风险榜TOP10的还包括Debt Coins(DEBT)、APAY(APAY)、RUBBER(REC)、RIGACOIN(RIGA)、dodgers(DOD)、MudToken(MUD)和SuperstartupX(SSX)。如需查看更多智能合约检测结果,请查看原文链接。[2018/8/9]
Solidity在合约层面使用了面向对象的编程技术。我们可以将合约看作是一个具有变量和函数的“对象”,在脑海中将复杂的区块链应用程序想象成多个合约的集合,每个合约代表一个单独的实体。
例如,在MakerDAO中,每种加密货币都有单独的合约,此外还有记录债务的合约、表示债务和外界间网关的单独合约等等。我们不可能将所有内容都编写在同一个合约中——即使可能,也会异常困难。
把一整个大问题分解成具有内在联系的多个小问题可以帮助我们更快地找出解决方案。
实现
接下来,让我们一起来研究一下Uniswap、MakerDAO以及?Yield?的实现方式。
从简单的例子开始——Uniswap和Ownable.sol
我很喜欢Uniswapv2,因为它非常简单。开发人员用410行智能合约代码就成功建立了去中心化交易所。仅部署了两类合约:工厂和不限数量的配对交换合约。
其工厂合约的设计方式决定了其配对交易合约的部署需要经过两个步骤。首先部署合约,然后用将要进行交易的两个代币对其进行初始化。
由于需要确保只有创建配对交易合约的工厂才能对合约进行初始化,所以他们重新实施了Ownable模式。
此举取得的效果还不错,如果你也遇到了同样的问题,可以借鉴这个方法。如果你知道自己的合约只需要给另一个合约开通访问特权的话,可以使用Ownable.sol。甚至都用不到Uniswap这种工厂。你可以在一个用户中部署两个合同,然后执行minion.transferOwnership(address(boss))。
更为完善的例子——Yield
Yield的解决方案就没有Uniswapv2那么简单了。其核心由五个合约组成,并且特权访问关系并不是一一对应的。部分合约具备的限制功能可以帮助我们访问其他核心合约。
因此,我们只需扩展Ownable.sol以生成两个访问层,其中一层有多个成员:
合约所有者可以向特权列表中添加地址。继承合约可以包含onlyOrchestrated修改器以限制对授权地址的访问。
每个地址都会与一个函数签名共同注册,从而收紧对函数的访问权限,增强安全性。
由于我们会在期间部署orchestrate合约,所以没有取消访问权限的函数,owner会通过调用所有合约上的transferOwnership(adress(0))来放弃其特权访问。
我们自己的平台代币yDai,将从Orchestrated继承并限制mint在owner放弃其特权之前建立的特定合约:
这种模式相对容易实现和调试,并且可以实现我们合约中的函数。
极具迷惑性的例子——MakerDAO
大家都非常讨厌MakerDAO中各种难以理解的术语。但在搞清楚Yield的调配模式后,我才发现它们二者的实现方式几乎是完全相同的。
1.合约部署者是wards的原成员。
2.wards可以rely其他人,并使其同样成为watds。
3.可以限制函数,只有wards可以执行函数。
例如,MakerDAO的Vat.sol合约中的fold函数可被用于更新利率累加器,并且只能被其集合中的另一函数调用。如果我们观察一下该函数的话,便会发现用于调配的auth修改器,
从某种程度上来说,auth和其他调配实现是对private和internal函数概念的扩展,仅适用于在合约间进行访问控制。
MakerDAO与我们项目的实现方式非常类似。
1.合约部署者是wards原成员。在Yield中,即owner。
2.wards可以rely其他人并使其成为wards。在Yield中,只有owner可以orchestrate其他地址并authorized。
3.函数受限制,因此只有wards可以执行受限函数。在Yield中,我们提到onlyOrchestrated地址可以调用标记函数。进一步限制对函数的访问。
除了在Yield中使用了两个访问层以及函数限制以外,二者的实现方式是一样的。可见,合约调配是一种一经实现即可重复使用的常见模式。
从审核员和用户的角度出发,我们还开发了一个收集区块链事件,并展现合约所有权和调配图的脚本。
总结
智能合同的调配是一个在很多项目中反复出现的问题,在遇到此类问题,大家往往都会从零开始进行调配。但其实此类问题的解决方案都是十分类似的。
我们可以遵循以上标准来实现安全有效的调配,希望大家可以深入理解文中的示例原理,并形成适合自己的解决方案。
标签:FILFilecoinPOLMakerDAOfil币价格今日行情最新filecoin币怎么交易PolkaSmithmakerdao白皮书
北京时间8月27日晚,全球最大的加密资产公司DCG(数字货币集团)宣布推出矿业子公司Foundry、正式进军比特币挖矿行业.
8月25日,Filecoin太空竞赛启动,全球约300名矿工参与角逐,目的是进行压力测试并发现问题,同时争夺官方提供的400万枚FIL奖励.
原文:https://wiki.polkadot.network/docs/en/maintain-polkadot-parameters翻译:PolkaWorld社区波卡许多参数值可以通过链上.
前言 据链闻消息,DeFi项目YFValue发布公告称,团队于昨日在YFV质押池中发现一个漏洞,恶意参与者借此漏洞对质押中的YFV计时器单独重置。目前已有一个恶意参与者正试图借此勒索团队.
作者:irishash 随着美国股市再次遭遇抛售,加密货币市场抹去了上周的收益,目前已经连续第三天下跌,而比特币矿工卖出BTC数量减少了,囤币指数又开始出现上升.
数据分析师?|Carol?编辑|毕彤彤出品|PANewsDeFi已经进入了“农耕时代”。此时,“农民”们“种瓜”得到的已经不止是“瓜”,还有更值钱的“宝石”.