宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > DYDX > 正文

谢晗剑:DeFi 智能合约风险与 Nervos DAO 对策

作者:

时间:1900/1/1 0:00:00

以太坊DeFi智能合约有何风险?公链Nervos首席架构师谢晗剑对此进行分析,并讲解Nervos首个DeFi应用NervosDAO的对策。

原文标题:《DeFi中的智能合约风险》作者:谢晗剑,Nervos首席架构师,秘猿科技首席执行官,前以太坊核心研发团队成员

金融是风险管理的艺术。无论资产本身还是操作过程都可能存在风险。资产具有价格,而价格是其内在价值和综合风险的反映。对资产进行评估时,对风险的评估也必不可少。操作风险主要来自于易出错且可被收买的「人」。因此,无论是对于基于传统资产的传统金融,还是对于运行在原生加密资产上的新兴去中心化金融来说,对资产和操作风险的评估都是金融的核心。

风险控制是关键

加密资产的风险既包括政策变化等外部风险,也包括设计缺陷和实施错误等内部风险。在以太坊上,原生代币就是ETH,而非原生代币就是我们所谓的ERCtoken。ERCtoken是指符合ERC20标准及其衍生标准中任何一种的token。原生资产的风险会低于非原生资产的风险,因为后者除了受到以太坊客户端漏洞的影响外,还会受到智能合约漏洞的影响。对于ERCtoken和DeFi,智能合约中的漏洞是最受关注的,因为DeFi作为一个系统,是由来自世界各地的不同的开发者们创建的无数智能合约交织在一起的复杂网络。我们把由智能合约漏洞引起的风险称为智能合约风险。

针对智能合约的漏洞,人们做了大量研究,我们也发现了很多防御的方法。如果您有兴趣,这里有一份不错的调查报告。然而,众所周知,找到并修复所有较重要的智能合约中的漏洞是不可能的。我们生活在一个充满通信错误和随机的世界中,每一步都可能会导致「失真」:我们无法将头脑中的想法写成精确的说明书,同样地,我们也无法将这份说明书毫无瑕疵地呈现出来。

LayerZero生态全链NFT协议Holograph开放Building NFT限时免费多链铸造活动:6月14日消息,据官方消息,LayerZero生态全链NFT协议Holograph开放BuildingNFT限时免费多链铸造活动。据悉,Building出自艺术家Amber Vittoria之手,可在以太坊、Polygon、Avalanche、BNB Chain和Optimism上免费铸造,限时48小时(将于1天9小时后结束)。[2023/6/14 21:36:17]

如果这就是残酷的现实,那么我们在加密资产的实现中,不仅要考虑到主动防御和被动防御,同时还应该考虑到风险控制,这样当一些不好的情况发生时,能够将损失降到最低,避免一个微小的错误最终演变为黑天鹅事件。智能合约可以通过多种设计模式来实现风险控制,最重要的一种是应用程序状态的去中心化,因为应用程序状态的中心化会放大由智能合约漏洞造成的破坏。我将在接下来的文章中进一步阐明这一点。

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」的相关记录。

Arbitrum One链上交易总量目前达到1,006,599笔:金色财经报道,Dune数据显示,Arbitrum One链上交易总量已突破100万笔,目前达到1,006,599笔。[2023/5/1 14:37:14]

这里存在的问题是,所有的逻辑和状态都保存在这一个合约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合约,这比破坏协议本身要容易的多。

26.94亿枚ARB于2日前转移至约140个EOA地址,本应有4年锁仓期限制:4月3日消息,据Lookonchain数据显示,26.94亿枚ARB于2日前通过0x1e70开头地址被转移分配至约140个EOA地址,该数量的ARB应该是分配给OffchainLabs团队、未来团队和顾问的部分(26.94%),但该部分Token应该有4年的锁仓期。

Lookonchain补充表示,0x8d45开头地址在收到ARB后已将2256万枚ARB(约合2800万美元)转移至Coinbase。其他地址虽然还没有转账操作,但收到的ARB可以随时转入交易平台出售,不受代码限制。注:据Arbitrum官方于3月16日发布的Medium文章《ARBITRUM: THE NEXT PHASE OF DECENTRALIZATION》内容显示,所有投资者和团队Token(共计54.47%)都将有4年的锁仓期,首次解锁发生在一年内,然后在剩余三年内每月线性解锁。[2023/4/3 13:41:15]

不同的内生风险使得ERCtoken和ETH成为两种不同类型的资产。在去中心化网络上运行的智能合约与去中心化网络是不同的。中心化的问题是由于ERCtoken在应用层而引起的,这会放大智能合约漏洞的潜在危害,不幸的是,我们知道人类总是会犯错误,所以总是会有漏洞。网络/共识层的去中心化无法解决应用层的中心化问题。

如何降低风险

中心化的现象出现在ERC系列的token中,是因为它们的状态并非是以太坊编程模型中的一等公民。在以太坊中,状态是代码的附件,不能直接引用和比较。当然将具有相同验证规则的状态放在同一个合约中是很自然的事情,但是,这就会导致该合约在某种程度上变成中心化的合约。这就是在以太坊编程模型中出现的结果。

数据:一巨鲸地址疑似正在做空CRV,CRV 24小时跌超13%:11月22日消息,数据分析机构Lookonchain发推称:“某巨鲸地址从Aave借出了2000万枚CRV(约990万美元) 并将其中1000万枚CRV(约490万美元)转入了OKX,而在过去的七天内,该地址已从Aave借出了3700万枚CRV,与此同时CRV价格已从0.625美元跌至0.464美元。看起来该地址正在通过做空并抛售借来的CRV获利。”

截至发文,CRV暂报0.434美元,24小时跌幅13.92%。[2022/11/22 7:56:54]

但是在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状态的去中心化,我们可以有效控制由资产定义的漏洞所造成的损失。

推特将允许用户添加长篇文字,Elon Musk被指利用被解雇员工成果邀功:11月6日消息,已收购社交平台推特(Twitter)的特斯拉CEO Elon Musk发布推文称,推特很快将增加在推文中附加长篇文字的功能,“结束记事本式截图的荒谬做法”。他还说,在这一功能推出之后,将是“所有内容形式的创作者的货币化”。数小时后他又声称将改善推特的搜索功能。“推特的内部搜索让我想起了98年的Infoseek!这也将很快得到很大的改善。”

据悉,在马斯克宣布这一添加长文本的消息后,美国全国广播公司(NBC)记者本·柯林斯迅速指出,在马斯克接管推特之前,推特已经在测试文本共享的功能。“他在利用一些被解雇员工之前所做的工作邀功。”今年2月,独立应用程序研究员简·曼春·黄发现推特正开发用于发布较长信息的“文章”功能的证据。(界面)[2022/11/6 12:22:18]

但是这里仍然有可能存在影响每个人的漏洞:比如,资产定义中可能存在一个漏洞,这个漏洞允许任何人发行比预期更多的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

标签:KENTOKETOKTOKENKAIKEN币Infiniti TokenLife TokenHoo Token

DYDX热门资讯
Gate.io 已经完成当日为用户转化分发1.3万枚FIL代币公告

Gate.io今日已经根据用户FIL6持仓情况完成FIL分发,总计约1.3万枚,用户可在账户账单明细中查看详情.

1900/1/1 0:00:00
实测比特币闪电网络瞭望塔:安全性改进较大,但仍存在节点损坏风险

瞭望塔这样多年讨论于理论上的概念,终于成为了现实。虽然瞭望塔在安全性方面有了很大的改进,但在我们看来,比不诚实通道中断更大的问题是,闪电节点的内存可能会意外丢失或毁坏—在这种情况下,节点可能会丢失最新的通道状态.

1900/1/1 0:00:00
Badger DAO 就 DIGG 代币分发机制和空投参数进行社区投票

链闻消息,去中心化自治组织BadgerDAO目前正在就DIGG代币分发机制和空投参数进行社区投票。Digg是一种基于Ampleforth协议与比特币价值锚定的弹性供应代币.

1900/1/1 0:00:00
币圈小蝶:币圈合约没方向一直亏,不要拿资金开玩笑

投资是金钱的游戏,更是智慧的博弈。机遇和风险如影随形,成败只在一念间。智者,风险也是机遇;愚者,机遇也是风险。投资,学习才是最好的捷径.

1900/1/1 0:00:00
小安论币:炒币市场里境界最高的是短线

炒币市场里境界最高是短线!其次,中线!最笨,长线!做中线是不明白短线的趋势,做长线是摸不清中线的趋势! 打个比方: 长线客在春天就在桃子树下等待,他知道在当年桃子总有一天会从树下掉下来,可是不知道具体是哪个季节,于是苦苦等了一年.

1900/1/1 0:00:00
仙女座科技:从未涉足合约审计领域,请注意防范风险

仙女座科技表示近日有项目方宣称合约经过仙女座科技审计,但仙女座科技一直致力于自研DApp的开发,从未涉足合约审计领域,仙女座科技提醒各位YeildFarming农夫注意防范风险.

1900/1/1 0:00:00