原文作者:LucasBaker、JoeHowarth、NiharShah
原文编译:aididiaojp.eth,ForesightNews
科技的最大讽刺之处在于每一个新的解决方案要么限于技术问题而无法实施,要么寿命长到足以成为社会问题,这样的情况在传统科技公司身上已经屡见不鲜。但随着市场规模不断增长,同样的问题在加密市场中也浮出水面。例如DeFi所面临的不再是如何推动需求,而是在需求出现时如何保障用户安全。迄今为止,由于黑客攻击、漏洞利用等,DeFi领域已经损失了超过50亿美元。虽然我们可以使用字节码的正式规范和验证以及完整的手动审计来保障稳健性,但人为的错误仍然会导致一些漏洞的存在。
幸运的是加密行业受益于世界上令人印象深刻的白帽社区,白帽们随时准备采取行动,帮助团队防御关键漏洞。白帽在协议或平台中搜索潜在的安全问题,并与其开发人员合作,在这些问题被利用之前纠正这些问题。然而当前的DeFi市场状态给任何潜在的白帽救星带来了令人生畏的障碍:
法律不确定性:虽然在黑客攻击协议之后,大多数团队会提供一些宽限期,希望黑客能够以白帽身份归还被盗资产,同时会给予白帽一定的奖励。但这没有任何保证,团队总是会决定采取法律行动。即使是像白帽这样善意安全研究的基本概念也只是在今年早些时候才获得官方认可,而当涉及到用户资金时,风险要高得多。
缺乏明确性:假设白帽和协议团队都是善意的,仍然存在如何处理攻击获得的资金的问题。它们是要返回到原始协议地址还是发送到新创建的地址?如果协议治理是去中心化的,谁来把资金存入协议,当使用用户资金时,这个人可以被信任吗?
执行风险:黑客与协议团队之间的沟通通常是在一种极度紧迫和混乱的状态,就像是在进行一场迷雾战争。相互矛盾的提议或指示包括冒名顶替者或欺诈地址可能会导致不可能逆转的错误。
虽然漏洞赏金有助于协议建立已知流程,并鼓励负责任的披露,但它们只是解决方案的一部分。早期的协议团队可能无法提供足够大的赏金,或者即使他们提供了,白帽可能不相信团队会履行他们的承诺。此外,许多漏洞例如升级产生的漏洞对于白帽来说可能过于紧迫,白帽没有足够的时间来领取漏洞赏金。在极端情况下,就像涉及300多个地址的Nomad黑客攻击一样,可能只是在不同时间下,接收者进行重复主动攻击。
我们需要的是一种达成共识的方法:理想情况下,在漏洞被利用之前达成共识,并进行沟通。我们之前的文章《WhitehatsandDropboxes》提出了这样的建议:在预先宣布的地址上放置一个「保管箱」,作为预先担保资金的容器。但这仍然存在几个问题:
白帽会足够信任协议团队使用「保管箱」吗?如果承诺了奖励,如何确保它会被兑现?仅治理本身无法提供任何保证。例如TribeDAO在第四次投票后,最终同意放弃偿还Rari黑客攻击的受害者8000万美金的损失。
数据:巨鲸地址过去4日囤积1.1万亿枚PEPE:6月14日消息,据Spot on chain数据显示,0x697开头巨鲸地址在过去4天内已使用522.3枚ETH和11.7万枚USDC兑换1.1万亿枚PEPE(价值约108万美元)。值得注意的是,0x697开头地址的ETH来自0x4ff(xvx.ETH),xvx.ETH在4月17日至5月29日(42天)期间通过交易PEPE大约实现了超213万美元的利润。[2023/6/14 21:35:49]
我们如何创建白帽和协议团队都支持的有效规范?如果每个协议都创建自己的规范,白帽可能没有时间或途径来正确审查这些规范,并且缺陷或歧义可能不会变得明显,等到它们被完善已经为时已晚。
SAFU:资金上传的简单方案
SAFU旨在作为一种简单但可扩展的方式来指定白帽攻击后的执行规范,特别是奖励和分配。它包含两个元素,我们为此提供一般指南和参考实现:
白帽声明:协议团队明确而简单的声明,承诺不对白帽采取法律行动。该声明还指定了几个关键政策要素:
发生漏洞时可以从中提取资金的来源地址
应存入资金的Dropbox地址或合约
白帽可索取的奖励,指定为带有可选上限的百分比
索赔所需的条件,以及评估过程和解决时间表
存入协议资金的Dropbox:从协议中提取的资金应存入的地址或合约。Dropbox合约可以是自动执行的,在没有人为输入的情况下按每个存款人处理索赔和奖励。或者是设置一定条件的,并需要额外的输入,例如治理批准或身份验证。当前地址应始终列在声明中,并且Dropbox参数应提前包含所设条件。
总而言之,白帽声明和Dropbox提供了一个标准化但灵活的框架,任何协议都可以使用该框架来鼓励黑客将用户资金安全返还。例如SAFU提供了一种公开可见且可信的方式来实施SamBankman-Fried最近提出的5-5标准。我们相信这种解决方案大大优于利用后的谈判,后者通常让协议别无选择,只能被迫接受。
虽然它还不是一份正式的法律合同,但由于DeFi的监管环境必须进行改善来让这样的合同合法可行。我们相信SAFU能够提供更好的技术、法律和经济模型清晰度,SAFU也将成为重要的一步。
达成共识的必要性
加密安全的竞争环境比管理它的规则发展得更快。围绕白帽活动存在法律灰色地带,而且对于具有道德感的黑客在发现关键漏洞后应该做什么也没有明确的行为标准。足够高调的黑客可以创建他们自己的策略,但这对于普通研究人员来说既不有效也没有参考价值。
我们将现状视为一个协调问题,考虑到DeFi的变化步伐,这是一个自然而然的问题,但必须在行业成熟之前解决这个问题。与其在漏洞被利用后争先恐后地做出应对,团队必须通过声明预先与白帽沟通在发生危机时应该做什么,并预先承诺在漏洞利用后通过Dropbox遵守该政策。SAFU建立一套共享规范,其中明确规定了政策规范,白帽和用户都感到受到公平对待,这将使加密行业能够为协议及其客户提供更好的安全保证。
马斯克发推附带Milady Maker系列NFT形象,该系列NFT短时内交易量激增:5月11日消息,Twitter CEO 马斯克在社交媒体上发布推文附有 Milady Maker 系列 NFT 形象,并配文“There is no meme,I love you”。
数据显示,截至发稿时,该系列 NFT 地板价为 3.39 ETH,24 小时涨幅 0.59%。该系列 NFT 24 小时交易量达 1625 ETH,其中大部分交易发生于 10 分钟内,交易量增幅达 315%。[2023/5/11 14:55:37]
通过SAFU框架,我们希望创建一个谢林点,参与者可以在没有通信的情况下协作。任何人都可以创建一个标准,所以许多人不可避免地会这样做,但在这种情况下,我们相信有一个特别强大的模型可以实现我们的愿景:YCombinator的SAFE或未来股权简单协议。
SAFE、SAFT、SAFU
首先来呈现一个逻辑化的起源故事。在前YC的黑暗时代,每家公司都创建了自己的定制条款清单,非常早期的公司也是如此。早期公司创始人往往既没有背景也没有法律资源来正确理解提议的条款,不道德的投资者可以通过稀释和清算优先权等方法获取超额奖励。
2013年YC引入SAFE解决了这种缺乏标准的问题。SAFE本质上提供了一种简化的可转换债务形式,使创始人能够轻松理解条款清单,并在合理的基础上公平比较报价。用一句话来传达,就是100万美元的SAFE和2000万美元的上限不需要任何解释,让创始人和投资者可以透明而有效地相互交流。
类似的早期问题经常出现在加密领域,尤其是在协议生命周期开始时提供代币时。ProtocolLabs的SAFT复制SAFE以进行代币融资,自2017年推出以来也得到了类似的广泛采用。SAFE和SAFT使一个广泛而复杂的主题早期投资变得容易理解,它们通过提供一个标准化框架来解决协调问题,该框架仍然适用于所关注的所有标准。通过引入SAFU,我们希望加速加密安全研究中的相同过程。
设计原则
为了提供类似的简单性和适应性组合,我们需要确保哪些特性?目前至少两个主要变量,任何解决方案都应该对其进行概括:
对协议的信任:必须避免不同级别的人工参与。在一个极端情况下,零信任方法需要完全自动化的保管箱合约,因为即使团队本身不受信任,也无需人工干预即可分配奖励和返还资金。另一方面,高度信任的方法将允许一个或多个指定地址对每个声明进行精细控制。
来自白帽的承诺:必须进行不同级别的白帽披露。完全匿名的解决方案必须允许任何地址进行存款和索赔,而完全披露的方法可能需要白帽通过合规和KYC筛选,获得治理的批准后履行额外的义务,例如事件记录。
国际清算银行正开发稳定币监控系统:金色财经报道,国际清算银行 (BIS) 正在开发稳定币监控系统,以确保发行人保持足够的储备。BIS在周二公布其2023年工作计划时表示,该计划名为Project Pyxtrial,还将研究技术工具,以帮助监管机构形成基于数据的政策框架。该计划将于今年在BIS位于伦敦的创新中心启动。BIS还致力于通过Project Atlas开发加密货币和DeFi的监控系统。[2023/2/7 11:52:53]
嵌入在这两个特质的是所有常见的加密属性,例如去中心化、无需信任、无需许可和主权身份等。此外由于治理和身份等领域是具有比较规范且快速发展的解决方案的复杂主题,因此设计良好的保管箱应与其中任何一个或未来版本完美结合。
在这方面,我们旨在实现以下设计原则:
简单:应可以用一句话概括政策的全部内容。
明确:应明确协议的法律和经济意图,以及合同的开源技术实施。
明智:应提供适用于大多数协议的默认值,无需额外适应。
灵活:应适应各方的信任、条件和匿名性。
可信:应明确要求奖励必须满足哪些条件,以及对于给定的有效存款水平可以保证什么最低奖励。
不可利用:至少应防止不受信任的实体以廉价方式破坏合约的预期功能,例如通过稀释或延迟奖励。全自动保管箱应防止所有实体包括所有者和协议的破坏。
SAFU用户手册
SAFU由Statement和Dropbox组成,但团队在这些范围内对管理奖励和协议资金返还的过程具有相当大的自主裁决权。下面我们概述了协议团队在建立SAFU时需要做出的关键选择。
白帽声明
该声明的本质是双重的。首先它涉及承诺不对按照声明行事的白帽采取法律行动,同时涉及奖励政策的概述、实现它所需的条件,以及解决索赔的过程和时间表等关键描述。更准确地说我们预计大多数协议将指定以下内容:
奖励政策:白帽有权获得的一部分存款,通常指定为百分比或上限奖励例如资金的5%或1000ETH。这些可能以总量或每个代币计价,但我们预计Dropbox本身将使用每个代币规范来避免预言机依赖。
时间表:可以存入和领取资金的事件顺序。为清楚起见,我们鼓励协议根据具体情况而不是事件来解决索赔。基本时间表包括:
存款间隔:发件人从协议中盗取资金后必须将资金存入Dropbox的宽限期。从法律角度来看,直接和立即转移可能更可取,但并非在所有情况下都是可能的。
索赔延迟:发件人可以要求奖励之前的最短等待期。我们建议至少24小时,在此期间漏洞利用的程度将变得清晰。
美元指数DXY短线走低20点,现报103.4738:金色财经报道,美元指数DXY短线走低20点,现报103.4738。[2023/1/2 22:20:57]
发件人索赔间隔:协议可以收回发件人奖励的最长等待期,以避免资金滞留在合约中。
发件人批准流程:发件人必须完成的步骤,例如身份验证以索取资金。应具体说明流程将如何进行,包括治理投票和紧急理事会等,谁将负责批准索赔,以及做出决定的最大延迟时间。
该声明应通过协议显着注明且公开地显示,例如在网站或Twitter介绍上的靠前链接,并且理想情况下应包含某种形式的可验证历史记录,以便观察者准确了解在漏洞利用时发布的内容。我们推荐Arweave,或者任何一次编写,永久查看的解决方案都可以。
协议基金的Dropbox
在最简单的情况下,Dropbox可以是通过多重签名或治理,由协议控制的预先指定的地址。但我们相信智能合约如通过SAFU存储库提供的模板更加合适,它将通过在代码中明确指定奖励和依赖关系来帮助协议在退还资金过程中建立信任。本着这种精神,我们定义了一个具有以下功能的接口:
存款:接受代币,注册发送者。并根据指定的比例和上限更新每个代币分配的奖励。
认领:支付发件人在当前无人认领的奖励中的份额。要求发送者声明延迟已经过去,如有必要发送者被批准,并且协议尚未收回奖励。
赏金:显示给定存款的潜在赏金和当前批准状态。
取款和取款代币:支付协议资金,不包括任何分配的发件人奖励。
批准和拒绝赏金:批准或拒绝对给定存款的索赔;旨在在完成任何身份验证或其他发件人特定过程后调用。
我们的实现还包括以下参数:
赏金百分比:发送者可以要求作为奖励的存入资金的百分比。
赏金金额:可分配用于奖励的最大资金量。可以由合同所有者增加。
已批准:每次存款批准标志,如果不需要身份验证或其他索赔批准过程,则默认为true。
上述界面旨在涵盖从无人工中介到每个发件人的披露和基于治理的批准的全部范围:
完全自动化:一旦最小延迟过去,发件人可以立即索取他们的奖励,协议不能以任何方式限制或拒绝。
完全有条件的:合约所有者必须为每个发送者单独批准奖励。我们预计这对于与机构合作和或在以美国为中心的监管环境中的协议来说将是首选或必需的。
可以在GitHub上找到可以适应任一模式的接口和我们的参考实现。
告诫开发者
虽然我们希望我们的默认实现能够满足大多数基于EVM的协议的需求,但我们鼓励开发人员使用其他链和语言来扩展我们的模型。但我们建议在扩展功能或更改声明流程时要谨慎,因为引入漏洞比消除漏洞容易得多。我们在设计过程中考虑了以下所有因素:
美国检察官正调查SBF等人是否将数亿美元资金转移至巴哈马:12月10日消息,消息人士透露,美国检察官正在调查FTX创始人SBF和其他参与FTX破产事件的人的潜在欺诈案件。检察官目前正在仔细审查FTX于11月11日在特拉华州申请破产时,数亿美元资金是否被不当转移到巴哈马。
消息人士表示,美国司法部官员已开始对FTX如何处理客户的现金和资产进行全面调查,本周会见了法院任命的监督员,讨论他们打算收集的材料,还在深入研究FTX是否通过将资金违法转移到Alameda Research。(彭博社)
据此前报道,消息人士表示,美国曼哈顿的联邦检察官正在调查FTX创始人Sam Bankman-Fried(SBF)是否操纵了UST和LUNA的市场,以使他控制的实体(包括FTX和Alameda Research)受益。消息人士透露调查还处于早期阶段,目前尚不清楚检察官是否已经确定SBF有任何不当行为,或者他们何时开始关注UST和LUNA的交易。[2022/12/10 21:35:21]
恶意发件人:恶意发件人可以廉价地延迟来索取奖励或资金。
稀释:恶意发件人可以廉价地稀释其他发件人的可索取奖励。
超额支付:某些操作序列导致总奖励超过指定上限。
搁浅的资金:某些操作序列会产生永久锁定的余额。
正如DeFi本身一次又一次地证明的那样,每一种机制都可能导致意外或恶意行为,不要让恢复机制成为薄弱环节!
建立更好的共识
正如任何工程师都会承认的那样,加密安全的黑暗森林带着某种浪漫。然而任何行业成功的最终标志都是变得乏味,制定一个行之有效的解决方案,从而将注意力转移到其他地方。正如数学家AlfredNorthWhitehead所写的那样,「文明的进步是通过扩展我们可以在不考虑它们的情况下执行的重要操作的数量。」正如SAFE和SAFT为早期股权和代币交易结构做出的贡献一样,我们希望SAFU将作为一种简化且易于理解的工具来帮助协议和白帽协调。
附录:实现案例
我们提供了一个Solidity实现案例,可以用来部署为自动或有条件的保管箱。在自动模式下,白帽可以从保管箱中领取奖励,而无需任何检查。在条件模式下,白帽只有在协议批准后才能领取奖励。前者对双方来说更容易预测,因为协议和白帽之间的交互受到透明代码的严格控制。但是出于合规性或调查目的,希望执行KYC或治理检查的协议可能需要后一种模式。
在本节中,我们首先描述实现,然后说明某些以一些复杂性为代价阻止操纵的设计元素。
生命周期
在启动时协议团队部署了SafuDropbox合约。启动合约时应指定以下参数:
给予白帽的份额
控制奖励是否可自动领取的标志
白帽必须等待领取其奖励份额的最小时间间隔,以及协议没收奖励之前的最大时间间隔
合同的管理机构
此外,协议可能希望在启动时调用函数increaseBountyCapForToken。
默认情况下,合约将所有代币的上限设置为零。为了激励白帽,协议应该提高选定代币的上限。请注意,如果以多个代币提供赏金,除非声明中另有规定,否则白帽可能会选择将资金存入具有最高价值上限的代币中。
请注意,可以根据需要多次调用此函数,并且每次只会增加给定令代币的上限。为了保护等待奖励的白帽,上限永远不会降低。
假设白帽在协议中发现了漏洞并获得了资金。白帽将通过调用存款函数将资金存入SAFU合约,该函数会向他们发出存款收据。
如果标志autoApprove设置为true,则自动批准收据。否则协议必须使用approveBounty函数手动批准收据。请注意,收据一旦被自动或手动批准,以后就不能被拒绝。
如果协议不批准收据,它可以调用denyBounty函数删除收据并将所有存入的资金标记为可被协议索取。
假设白帽收到批准的收据,他们现在希望从协议中撤回他们的奖励。他们通过调用claim函数来完成此操作,该函数处理已批准的存款收据,至少已等待minDelay时间段。
在minDelay过去之前,白帽无法声明。此外如果白帽等待的时间过长,直到maxDelay过去之后,白帽可能会发现协议已经无法获取奖励。因此,白帽应该在minDelay和maxDelay之间的时间窗口内领取他们的奖励。
白帽的奖励与两个变量有关:获得的资金份额和总代币上限。如果未偿和已付收据的奖励总和不超过上限,则白帽将获得按比例获得安全资金份额。如果超过上限,则白帽将按比例获得剩余上限空间的份额。
最后,协议团队可以收回他们自己的资金。他们通过调用给定代币的withdrawToken函数来做到这一点。该功能的工作原理如下:
首先,计算来自未结收据的所有可用资金,这些收据要么被拒绝,要么已超过其maxDelay。
接下来,将所有已批准且已超过minDelay等待的收据的资金相加,减去可能的最大支出。
如果收据既没有被批准也没有被拒绝,则故意将其排除在外。这是为了激励协议做出决定,而不是让这些收据及其白帽陷入困境。
未超过minDelay的已批准收据也被排除在外。虽然这似乎没有必要,但它可以防止一些漏洞利用向量。
该协议可以继续间隔退出。最后一旦每张未清收据都超过了maxDelay阈值,该协议就可以清除合约中的所有剩余资金,包括存款、无人认领的奖励和缓冲奖励等。
最后,我们实现了协议可以调用的关闭函数,以防止新资金存入合约。这可以帮助协议安全地退出合同,并且无法撤消。
计算支出
支付逻辑旨在根据已获得的资金按比例发放奖励,但有一个可选的上限。举例来说,假设一个协议有1亿美元的TVL,向白帽提供10%的份额,并设置了800万美元的最高上限。此外假设有三个白帽按顺序存入:Alice存入5000万美元,Bob存入4000万美元,Charlie存入1000万美元。
如果Bob和Charlie在Alice的最短等待期内存款,他们的潜在索赔总额为500万美元、400万美元和100万美元,超过了800万美元的上限。他们都按比例分配:Alice获得400万美元以获得TVL的50%,Bob获得320万美元获得40%,Charlie获得80万美元获得10%。
如果Bob和Charlie在Alice取款后存款,则分配是不同的。在所有情况下,Alice都得到了她作为5000万美元担保的10%的全部500万美元,因为在她退出时,所有声称的和潜在的奖励都没有超过800万美元的上限。
在后一种情况下,Bob和Charlie的分配现在取决于Charlie是在Bob取款之前还是之后存款。
如果Charlie在Bob提取奖励之前存款,他们将平分剩余的300万美元奖励。Bob获得80%,Charlie获得20%。
如果Charlie在Bob取款后存款,那么鲍勃将获得剩余的300万美元奖励,而Charlie则一无所获。
如上所示,这种设计还创造了一种激励,让他们提前存款并获得剩余奖励的最大份额。
五个潜在问题以及应对方案
合约逻辑试图代表协议和白帽强制执行规范行为。下面我们将解释五个潜在问题以及如何缓解这些问题。
恶意拖延:能够廉价地拖延支付给白帽或协议的能力。一个自然的设计可能会使用一些事件的概念例如特定的黑客攻击,它以存款开始,并在一段时间过去没有任何存款时结束,然后合约可以计算和支付奖励。但是恶意用户可以通过向合约发送重复的小额存款来利用这种设计,因此该事件永远不会被视为已结束。相反我们的合约在很大程度上孤立地处理每笔存款,存款仅通过合约的最大支付上限进行交互。
争夺奖励:奖励不公平地分配给早期存款人的结果。该合约在声明之前引入了一个minDelay参数,即使对于已批准的收据,也可以避免在奖励上限时白帽之间的竞争。为了说明这一点,以我们之前的协议示例为例,该协议具有1亿美元、10%的赏金和800万美元的上限。两个白帽黑客Alice和Bob,他们在几分钟内各自获得了5000万美元。如果没有最低限度的延迟,Alice可以索取500万美元,而Bob只剩下300万美元,尽管他们的贡献基本相同。更糟糕的是,如果合同中还有资金,其他白帽公司将缺乏获得资金的动力,因为上限会阻止他们获得奖励。相比之下,建立一个minDelay允许所有白帽在该时间间隔内获得资金并获得公平的奖励,例如给Alice400万美元,给Bob400万美元。
搁浅资金:资金被永久锁定在合约中的结果。我们的实现具有maxDelay的特点,之后协议可以从存款中收回所有资金,包括奖励。如果发件人未能领取奖励,这对于防止资金锁定在合约中是必要的。
缓慢批准:为了激励协议完成批准过程,假设autoApprove为false,我们阻止协议在给定存款中收回自己的资金,直到它批准或拒绝该存款。当然协议总是可以等待maxDelay间隔或拒绝所有收据,但这种方法会在声誉上付出高昂的代价。当然最清晰的方法就是将autoApprove设置为true。
稀释:确保资金的发送者集体获得的奖励少于他们应该有权获得的份额。回想一下这个例子,一个协议有1亿美元的TVL,由Alice和Bob担保,上限为800万美元。如果协议能够立即提取自己的资金,它可以在minDelay期间提取和重新存入未指定用途的9200万美元,从而大大减少支付给Alice和Bob的整体奖励。为了避免这种情况,我们还要求协议在回收之前等待minDelay。当然,协议仍然可以用另一种资金来源稀释奖励,但是这种方法使得使用协议自己的TVL更难做到这一点。我们可以通过使协议自己的minDelay稍微延长一些来改进,但决定支持参考实现的简单性。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。