以太坊DeFi智能合约有何风险?公链Nervos首席架构师谢晗剑对此进行分析,并讲解Nervos首个DeFi应用NervosDAO的对策。
原文标题:《DeFi中的智能合约风险》作者:谢晗剑,Nervos首席架构师,秘猿科技首席执行官,前以太坊核心研发团队成员
金融是风险管理的艺术。无论资产本身还是操作过程都可能存在风险。资产具有价格,而价格是其内在价值和综合风险的反映。对资产进行评估时,对风险的评估也必不可少。操作风险主要来自于易出错且可被收买的「人」。因此,无论是对于基于传统资产的传统金融,还是对于运行在原生加密资产上的新兴去中心化金融来说,对资产和操作风险的评估都是金融的核心。
风险控制是关键
加密资产的风险既包括政策变化等外部风险,也包括设计缺陷和实施错误等内部风险。在以太坊上,原生代币就是ETH,而非原生代币就是我们所谓的ERCtoken。ERCtoken是指符合ERC20标准及其衍生标准中任何一种的token。原生资产的风险会低于非原生资产的风险,因为后者除了受到以太坊客户端漏洞的影响外,还会受到智能合约漏洞的影响。对于ERCtoken和DeFi,智能合约中的漏洞是最受关注的,因为DeFi作为一个系统,是由来自世界各地的不同的开发者们创建的无数智能合约交织在一起的复杂网络。我们把由智能合约漏洞引起的风险称为智能合约风险。
针对智能合约的漏洞,人们做了大量研究,我们也发现了很多防御的方法。如果您有兴趣,这里有一份不错的调查报告。然而,众所周知,找到并修复所有较重要的智能合约中的漏洞是不可能的。我们生活在一个充满通信错误和随机的世界中,每一步都可能会导致「失真」:我们无法将头脑中的想法写成精确的说明书,同样地,我们也无法将这份说明书毫无瑕疵地呈现出来。
V神称XRP完全中心化,引发XRP社区不满:8月13日消息,在最近的一次采访中,以太坊创始人Vitalik Buterin表示,加密项目不需要去中心化,IOTA和XRP仍然是完全中心化的,但它们仍然在CoinMarketCap上被列为加密资产。
Buterin还指出,XRP没有为此前的拉踩事件道歉,当时(2020年12月)他们在提交给美国政府的文件中声称XRP应该比比特币和以太坊更受青睐。
XRP社区成员对Buterin的评论表示不满。RIZ.XRP表示,Buterin正在“扼杀”XRP等比特币和以太坊以外的其他加密项目。其他XRP爱好者也分享了实例来证明ETH比XRP更中心化。
这并不是Buterin第一次批评XRP。在2020年,Buterin敦促以太坊爱好者不要在Ripple与SEC的法律战中为其辩护。[2023/8/13 16:23:26]
如果这就是残酷的现实,那么我们在加密资产的实现中,不仅要考虑到主动防御和被动防御,同时还应该考虑到风险控制,这样当一些不好的情况发生时,能够将损失降到最低,避免一个微小的错误最终演变为黑天鹅事件。智能合约可以通过多种设计模式来实现风险控制,最重要的一种是应用程序状态的去中心化,因为应用程序状态的中心化会放大由智能合约漏洞造成的破坏。我将在接下来的文章中进一步阐明这一点。
ERCtoken的风险
ERCtoken的几种标准从表面上看可能有所不同,但都具有一些共同的特征。ERCtoken的基本模式是使用token合约来管理token帐本,用户通过与token合约的交互来实现发行、转移或销毁token。token账本的所有记录都存储在token合约中,而合约本身则只是以太坊上的一个账户。
例如,假设有一种ERCtoken叫「cup」,Alice拥有100个cup,Bob拥有50个cup。该token的帐本位于地址/帐户为0x1234的以太坊智能合约上。这个token合约0x1234会维护一个内部数据库,并在其中储存诸如「Alice拥有100个cup」和「Bob拥有50个cup」之类的记录。当Alice想转30个cup给Bob时,她就向合约0x1234发送了一条带有签名的消息,内容为「请转30个cup给Bob」,然后合约0x1234将会验证该消息是否确实来自于Alice,然后修改其内部数据库,更新为「Alice拥有70个cup」和「Bob拥有80个cup」的相关记录。
比特大陆推出全新蚂蚁矿机S19j XP:6月27日消息,比特大陆宣布推出蚂蚁矿机S19j XP,该矿机功耗比为21.5J/T,算力达151T,将成为市面性能最优风冷矿机。据官方消息显示,北京时间6月26日晚开启抢购,预计今年第四季度发货。对于批量采购的客户,比特大陆还将赠送额外算力。[2023/6/27 22:02:34]
这里存在的问题是,所有的逻辑和状态都保存在这一个合约0x1234中。Alice和Bob无法直接访问他们自己的记录,因为这些记录由合约0x1234保管。持有该token的所有用户都需要与该合约进行交互,而管理其token的唯一方法就是通过向合约0x1234发送消息。
换句话说,token合约是一切的中心。任何系统的中心都是攻击者最有利可图的攻击对象。中心的任何问题都会影响所有用户,因为所有token/记录都由中心保管,并且每个人都必须与之交互。比如,由于整数溢出导致的「transferFlaw」/「allowAnyone」漏洞,或由不谨慎的授权导致的「ItchySwap」漏洞,攻击者可以在所有者并未与合约交互的情况下,窃取他人的token。通过「ownerAnyone」漏洞,攻击者可以通过控制token合约来锁定所有人的token。在这些例子中,一旦token合约被破坏,每个人都将陷入困境。
ERCtoken是由token合约而非个人用户持有的,这与以太坊的原生tokenETH有很大的不同。ETH的余额并不是由任何智能合约存储的,而是由用户直接控制。每个ETH所有者都拥有自己的帐户和余额记录。例如,如果在以太坊主链上,Alice有100个ETH,Bob有50个ETH,那么Alice在自己的账户中记录为「余额=100」,Bob在自己的账户中记录为「余额=50」。Alice的余额只会随着带有她签名的转出而减少,Bob的帐户也是如此。ETH的所有权记录分散在多个帐户中,而非集中在单个帐户中。只要他们的私钥是安全的,就没人能从他们那里窃取ETH。相反,ERCtoken的攻击范围则更大,因为攻击者完全可以尝试破坏token合约,这比破坏协议本身要容易的多。
CoinDesk Indices和CoinFund联合推出以太坊质押基准利率:金色财经报道,CoinDesk Indices 和加密货币投资公司 CoinFund 联合推出了一个基准,该基准跟踪以太坊抵押率并将机构投资者期望的装备带入数字资产。根据周四的一份声明,综合以太抵押率 (CESR) 将每周计算和发布 7 天。它考虑了区块奖励、新排放量、交易费用、最大可提取价值 (MEV)、协议削减和取款。
CoinDesk Indices 总裁 Alan Campbell 在新闻稿中表示,我们与 CoinFund 的合作伙伴关系为加密资产市场创造了这样一个基础设施,凭借我们管理全球运行时间最长和最大的基准加密指数的经验,我们很高兴推出 CESR,这是基于加密的金融的基石。CESR 的推出有助于创建市场基础设施,以允许远期利率曲线和贴现率,这是用于对资产进行估值的传统金融 (TradFi) 的支柱,并允许根据 CESR 对数字资产进行定价。[2023/4/28 14:32:09]
不同的内生风险使得ERCtoken和ETH成为两种不同类型的资产。在去中心化网络上运行的智能合约与去中心化网络是不同的。中心化的问题是由于ERCtoken在应用层而引起的,这会放大智能合约漏洞的潜在危害,不幸的是,我们知道人类总是会犯错误,所以总是会有漏洞。网络/共识层的去中心化无法解决应用层的中心化问题。
如何降低风险
中心化的现象出现在ERC系列的token中,是因为它们的状态并非是以太坊编程模型中的一等公民。在以太坊中,状态是代码的附件,不能直接引用和比较。当然将具有相同验证规则的状态放在同一个合约中是很自然的事情,但是,这就会导致该合约在某种程度上变成中心化的合约。这就是在以太坊编程模型中出现的结果。
Cosmos社区发布旨在引入ATOM流动性质押的温度检查提案:4月24日消息,Cosmos 社区发布旨在引入 ATOM 流动性质押的温度检查提案,目前已开启投票。该提案提议用 LSM(liquid staking module)替换 Cosmos Hub 目前的质押、分配和惩罚模块,并通过将可流动性质押的 ATOM 总量限制在 ATOM 质押总量的 25% 来减轻流动性质押风险。
此外,LSM 还引入了验证者绑定机制,要求验证者自我绑定 1 枚 ATOM,以便有资格在流动性质押委托中获得 250 枚 ATOM,同时有资格铸造 LSM Token。[2023/4/24 14:24:05]
但是在CKB上,由于状态是一等公民,因此正好相反。状态是用户可以直接把玩的对象,而代码只是状态的附件。我们可以自然地将使用相同验证规则的状态进行比较和分组,即使这些状态由不同的用户直接持有。
在CKB上,我们将非原生代币称为「用户自定义token」或者是UDT。对于给定的UDT,资产定义和资产记录是分开的,不同用户的记录也是分开的。资产定义描述了token的逻辑,比如」发行上限是1百万「或者」Bob可以发行新的token「,而资产记录则为」Alice拥有100个token「之类的信息。
资产定义是一个合约,由token发行者创建,并存储在发行者所拥有的Cell中,而资产记录则保存在用户自己的cell中,并且所有的资产记录均使用相同的「类型脚本」。
每个用户都使用他/她自己的Cell来存储他/她自己的token记录。这些token记录共享资产定义Cell中定义的相同验证规则。通过这种结构,资产记录都以去中心化的形式存储着。
如上图所示,Alice持有的token存储在Alice自己的cell中,并且由她自己的「锁脚本」保护着,目前默认采用的是Secp256k1。即使资产定义存在问题,攻击者也无法修改Alice的资产记录,因为这样做需要Alice的私钥。因为token是由Alice直接持有的,因此攻击者无法绕开Alice设定的锁。通过token状态的去中心化,我们可以有效控制由资产定义的漏洞所造成的损失。
CoinDesk发布对区块链影响最大的 50 所大学排名:香港理工大学第一,清华第六:金色财经报道,CoinDesk发布对区块链影响最大的 50 所大学排名:香港理工大学第一、新加坡国立大学第二、苏黎世大学第三。清华大学位列第六,香港大学第11、上海交通大学位列12,北京大学排名第13位,香港城市大学第17,香港中文大学第20,浙江大学第24,哈佛大学第31,耶鲁大学34,南京大学46。[2022/9/26 22:31:04]
但是这里仍然有可能存在影响每个人的漏洞:比如,资产定义中可能存在一个漏洞,这个漏洞允许任何人发行比预期更多的token。UDT的好处是,首先,消除了大部分的漏洞;其次,资产定义Cell受到锁的保护,该锁自然也可以是token发行中身份验证逻辑的一部分。通过协议设置身份验证机制是非常容易的。这种对于授权和业务逻辑的解耦是一种非常棒的工程实践,也是CKB中默认的做法。UDT会比ERCtoken有更好的去中心化属性,因此UDT的智能合约风险要低于ERCtoken,当然还是高于原生代币。
如果您也对UDT感兴趣,在NervosTalk上已经有了一些讨论,欢迎参与。
安全的NervosDAO
应用程序状态的去中心化也有助于DeFi程序的设计。NervosDAO是CKB上第一个DeFi应用。它是一个智能合约,用户可以用相同的方式与CKB上任意一个智能合约进行交互。NervosDAO的其中一个功能是为CKByte的持有者提供一个抗稀释的对策。通过将CKByte存入NervosDAO,CKByte持有者将获得相应的二级发行奖励,这保证了他们持有CKByte的占比只会受到基础发行硬顶的影响,就像比特币一样。在撰写本文时,DAO中已经存入了超过10亿个CKByte,并且这一数字还在不断上升,这不就是攻击者苦苦寻找的攻击对象吗?对此,我们需要担心吗?
大可不必!因为NervosDAO中锁定的CKByte并没有汇聚在同一个智能合约内,它仍然由不同的用户持有!当用户想要将CKByte存入NervosDAO时,他/她通过选择cell,然后将这些cell的typescript的引用设置为0x82d76d1b75fe2fd9a27dfbaa65a039221a380d76c926f378d3f81cf3e7e13f2e,这串数字会指向NervosDAO脚本。这些cell的lockscript将保持不变。因为NervosDAO的typescript和lockscript是分离的,因此攻击者在没有用户允许的情况下,永远不可能使用这些存储中的CKByte。
如果要提取已锁定的CKByte,则必须要提供lockscript对应的证明。这个验证过程不是通过任何智能合约,而是由CKB网络来保证的,并且没有其他替代方案。这里,NervosDAO的脚本是为了保证用户退出DAO时,能够通过计算得到正确的补偿,而并非是为了持有资金。
对DeFi的影响
目前很难定量分析智能合约风险对于DeFi的影响,但是我们可以从NexusMutual提供的保险产品中获取一些线索,这是一种去中心化的替代保险。它的第一个产品SmartContractCover可以让用户购买任何一个智能合约的保险,这样一来,如果该智能合约被黑客攻击,那么用户就可以获得对应的赔偿。Smartcontractcover的保费由市场决定,并与保险期限和保额呈正相关。根据此文,Nuo中1000个DAI对应90天的保险费用为6.41个DAI,而Uniswap中1个ETH对应365天的保险费用为0.013个ETH。基于这些数据,我们可以大致估计出,目前智能合约的年化风险成本约为2%。
这2%的成本是由于智能合约风险所导致的市场效率低下而引起的,因此改进智能合约编程模型就显得异常重要。一个不同的编程模型可以降低智能合约的风险,并为我们带来一个更高效的DeFi市场。
感谢HaseebQureshi,CipherWang和ChristopherHeymann对本文提出的反馈意见。
引用链接:
.https://arxiv.org/abs/1908.04507
.https://blog.peckshield.com/2018/04/28/transferFlaw/
.https://blog.peckshield.com/2018/05/23/allowAnyone/
.https://blog.peckshield.com/2019/09/27/ItchySwap/
.https://blog.peckshield.com/2018/05/03/ownerAnyone/
.https://en.wikipedia.org/wiki/First-class_citizen
.https://talk.nervos.org/t/discussion-on-udt-standard-evaluation-criterion/3774;
https://talk.nervos.org/t/approach-to-designing-a-user-defined-token-standard-on-ckb-part-1/3855;
https://talk.nervos.org/t/proposal-minimal-udt-implementation-and-extensions/3932;
.https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0023-dao-deposit-withdraw/0023-dao-deposit-withdraw.md
.https://explorer.nervos.org/nervosdao
.https://github.com/nervosnetwork/ckb-system-scripts/blob/master/c/dao.c
.https://nexusmutual.io/
.https://nexusmutual.io/pages/SmartContactCoverWordingv1.0.pdf
.https://medium.com/nexus-mutual/smart-contract-cover-is-now-live-91b3015f99eb
来源链接:medium.com
以太坊
以太坊
开放的分布式区块链应用平台,通过其专属加密货币Ether以太币提供去中心化的虚拟机,处理点对点合约。允许任何人建立和使用通过区块链技术运行的去中心化应用,没有任何欺诈、审查、第三方监管。以太坊的概念首次在2013至2014年由维塔利克·布特林VitalikButerin受比特币启发后提出,旨在共同构建一个更全球化、更自由、更可靠的互联网。以太坊EthereumETHERCERCERC20ERC721ERC以太坊查看更多Nervos
标签:KENTOKTOKENTOKEEvulus Tokenimtoken钱包被盗原理Herbalist Tokenimtoken数字钱包
其实每一项技术革命,最终都将以改变社会组织形态的面貌出现,90年代因为互联网技术革命,许多思想先驱认为,互联网让人们可以在一个庞大开放的网络上进行交流和协作,从而会打破公司这种组织.
1900/1/1 0:00:00尊敬的用户:HuobiGlobal逐仓杠杆新增SUSHI和SUN的资产和交易。期待能给您带来更好的杠杆服务体验!新增逐仓杠杆担保资产新增逐仓杠杆交易杠杆倍数SUSHISUSHI/USDT3倍SU.
1900/1/1 0:00:00yieldfarming为用户提供了一种新的方式,通过使用无许可流动性协议持有加密货币来获得回报。它允许任何人使用基于以太坊区块链构建的去中心化的“货币乐高”生态系统来赚取被动收入.
1900/1/1 0:00:00今天前20的顶级币种,回撤在2%左右。defi板块,主流币种,除了Comp几乎都在下跌。200-600名的对照组,跌的约在7-8成,跌幅平均估计在8-10%。很明显,今天市场在全方面失血.
1900/1/1 0:00:00区块链行业最火热的项目Filecoin已经上线,Filecoin是基于IPFS的激励层,挖矿是为Filecoin网络提供存储服务,这也是Filecoin不同于区块链行业其他挖矿项目的根本所在.
1900/1/1 0:00:00巨型项目Filecoin有可能是2019年凤尾、2020年龙头。在这个备受瞩目的去中心化存储项目测试网上线时,我们向Filecoin团队提出了你最关心的核心问题.
1900/1/1 0:00:00