火星链 火星链
Ctrl+D收藏火星链
首页 > 火星币 > 正文

CREA:靓号地址也可以安全 ?详解无许可多链部署的唯一安全方法

作者:

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

1.6亿美元不翼而飞,而丢失资金的Wintermute是业内最敏锐的做市基金之一,在9月份的一个早上,当Wintermute负责人醒来时,发现他们的一个重要钱包丢失了9位数的资金。那是什么导致了Wintermute被盗?这是由一个靓号地址生成器中糟糕的随机性引起的。黑帽黑客从头开始暴力破解私钥&公开地址对,然后,大量的加密资产就这么被转走了。

还有一个关于IndexedFinance被盗的故事,他们在2021年10月被盗走了1600万美元,然后被盗资金转移到了以0xba5ed…开头的地址。他们不知道的是,这个靓号地址也受到了困扰Wintermute的糟糕随机性漏洞的影响,2022年9月,所有的钱都再次被盗,流向了另一个黑客钱包地址。盗贼是无情的。

那这些天才开发者到底遇到了什么问题,我们能从中学到什么?

左边是用于WETH合约的普通地址。右侧是用于MEV机器人优化的带有14个前导零的靓号地址。最常见的靓号地址类型是带有许多前导零的地址。

首先,什么是靓号地址?靓号地址是指用户刻意创建与其钱包或智能合约相关联的公共地址,也许它以0x0000000开头,也许以0xdeadbeef开头,也许是其他规律的地址。它们受欢迎的原因有几个:

1、Gas优化:Wintermute因为使用了一个有多个前导零的EOA地址而节省了15000美元。听起来很傻吗?很多人都同意,但这就是EVM的工作方式!如果你的地址中有很多零,那么交易gas费用就能下降。所以你如果用一个很多前导零的智能合约地址,当用户在和它交互时,他们会感到很开心,因为这可以为他们省钱。

隐私搜索引擎DuckDuckGo推出AI搜索查询功能测试版DuckAssist:金色财经报道,隐私搜索引擎DuckDuckGo推出使用维基百科回答问题的AI辅助搜索功能测试版DuckAssist,可以直接回答用户的搜索查询。DuckDuckGo表示该功能利用ChatGPT开发商OpenAI和Anthropic(由前OpenAI员工创立的AI初创公司)的自然语言技术,以增强自然语言搜索功能,并结合其自身对维基百科和其他参考站点的主动索引,来获取答案。[2023/3/8 12:50:07]

以太坊黄皮书描述了前导零地址如何可以实现更便宜的gas

2、协议品牌。你知道1inch代币合约是以0x111111111开头……的吗?

1inch代币合约

3、多链重复性。在我看来,这是重中之重,也是为什么每个协议都应该为它们的部署使用一个靓号地址。你的应用可以存在于15条不同的EVM链上,并且在任何地方都具有相同的地址!这对开发者和用户来说不是更容易吗?

那什么时候靓号地址是安全的?

以太坊地址有两种类型:外部拥有账户和智能合约账户。如果你使用过像MetaMask这样的钱包,其中的每个地址都是一个EOA,它是用来签署消息和进行交易处理的。将此与Uniswap合约等智能合约账户进行比较,人们可以与之交互,但它不能在不被触发的情况下采取自己的行动。总结一下,很简单,靓号地址对EOA账户来说是不安全的,但对于智能合约账户是安全的。

那为什么会是这样?我们将在下面进行更详细的解释,但这取决于靓号地址是如何生成的。对于EOA账户,你循环使用数百万个私钥,直到找到一个与美观的公共地址相对应的私钥。然而,私钥控制着EOA账户内的资金,因此,如果你用来遍历私钥的随机性遭到破坏,那么你的整个账户就会被毁了。另一方面,创建智能合约靓号地址只需要遍历公共种子,这些种子不授予智能合约的任何管理权限。

美国蒙大拿州以37票对13票通过比特币“挖矿”法案:金色财经报道,加密KOL Bitcoin Archive发推特透露,美国蒙大拿州以37票对13票通过了比特币“挖矿”法案。[2023/2/24 12:26:19]

这就是为什么Wintermute会失败,而OpenSea却成功的原因——用不安全的软件在不安全的内存中生成私钥是不好的。但是以这种方式生成公共种子却非常好!所以EOA靓号地址是一条破产之路,而智能合约靓号地址是一条成功之路。

为什么协议需要靓号地址

更简单的文档!你可以在所有链上指向一个合约地址;用户可验证!只有当且仅当字节码是逐字节匹配时,才会出现相同的合约地址;开发者可验证!由于相同的合约地址只发生在完全匹配的情况下,因此你可以在部署脚本中捕捉到棘手的小修改;更简单的集成!其他协议可以将你的合约地址硬编码到它们的多链代码中,而不必使用基于chainId的if语句;注:我们即将深入研究一份详细说明手册。这是第一次把所有的部分放在一起,我们正在深入技术领域,目标受众是具有在链上部署智能合约经验的智能合约开发人员。如果你感兴趣,请继续阅读,但如果不适合你,请不要担心跟不上!最后还有一个额外的技术挑战(有奖励)。

智能合约靓号地址

有一种方法可以生成100%安全的智能合约靓号地址,无论你使用哪种软件,迭代技术是否公开泄露都无关紧要。它被称为“CREATE2工厂法”,这不仅提供了靓号地址,而且还是确保你在多条链上拥有相同合约部署地址的万无一失的方法。它还允许其他人无需信任地代表你部署代码,而无需任何私钥共享或nonce假设。

首先,快速概述一下如何选择智能合约地址。有两个部署选项,分别是?CREATE?和?CREATE2?。当你直接从EOA部署智能合约时,默认流程是CREATE。该地址是通过将合约创建者地址与合约创建者nonce进行哈希运算来确定的。这个nonce是指一个地址发送了多少笔交易,所以一个新的钱包是从0开始,每次发送一笔新交易都会增加1。以下是CREATE部署的智能合约地址的神奇公式:

new_address=hash(sender,nonce)

耐克与RTFKT合作在Footballverse中免费赠送虚拟球衣:11月23日消息,DappRader在社交媒体透露,耐克正在将其足球元宇宙Footballverse和Web3产品结合起来,目前已经与RTFKT合作在足球元宇宙Footballverse中免费赠送虚拟球衣,用户需要注册RTFKT免费账户后进入抽奖并赢得允许/候补名单,而CloneX持有人则有两倍获胜几率。

耐克是本届世界杯最大的球衣赞助商,并在最近的广告中展示了足球元宇宙Footballverse中跨时空球星对决场景。[2022/11/23 8:00:54]

不太常见,但更有趣的,是使用CREATE2部署的智能合约地址,以下是其公式:

new_address=hash(0xFF,sender,salt,bytecode)

前者看起来更简单,对吧?但是,让我们举一个例子,说明与更健壮的CREATE2流程相比,这种简单性在哪些方面会产生不利影响。

AiryAlice:多链出了问题

想象一个名叫Alice的crypto开发者创建了两个智能合约:一个名为GriddleSwap的Uniswap分叉,以及一个名为ph00ts的NFT项目。它们都是不可变的独立原语,这意味着没有外部依赖或跨链桥风险。Alice使用nonce0将GriddleSwap部署到以太坊,然后使用nonce1将ph00ts部署到以太坊。遗憾的是,Alice的注意力持续时间很短,在将她的工作部署到第二大智能合约平台币安智能链之前,她在加密推特上分心了几分钟。

糟糕,搞砸了部署顺序!

但是等等!她搞砸了部署顺序,在GriddleSwap之前部署了ph00ts。由于智能合约地址仅依赖于创建者地址,并且在部署区块链中,以太坊gridleswap与BSCph00ts具有完全相同的地址!雪上加霜的是,以太坊ph00ts的地址与BSCGriddleSwap的地址相同。认为终端用户会感到困惑是一种保守的说法。事实上,它可能被恶意部署者滥用,以人们认为在链上的合约行为是相同的——这是一个公平的假设,给定相同的地址!

日本央行:目前政府发布央行数字货币在技术上是不可行的:金色财经消息,日本央行(BoJ)认为,目前政府发布央行数字货币(CBDC)在技术上是不可行的。该银行透露,大多数日本公民并不关心CBDC,因为他们已经广泛地获得了许多低成本、高效率的互联网银行服务和数字支付工具。此外,日本的现金发行量很高,约占该国名义国内生产总值的20%。尽管数字支付方式兴起,但现金的使用仍然占主导地位,特别是在日本的老年人口中,而该国大约三分之一的人口在65岁或以上。

据悉,日本央行在2021年开始讨论由日元支持的CBDC的想法,该项目第二阶段的测试于4月开始。

此前金色财经报道,由于公众缺乏兴趣,日本中央银行放弃了CBDC计划。[2022/8/2 2:52:19]

细心的Alice:仍然会有问题

即使Alice在部署时很认真,并且从不混淆她的nonce顺序,还有其他的问题。如果Alice正确部署到以太坊和BSC上,但随后在Polygon上进行了一笔不相关的交易,则nonce0已被用完。她永远不能在那里部署GriddleSwap,因为她的nonce已经增加了。因此,必须不惜一切代价保护部署者私钥。如果Alice泄露了它,恶意破坏者就可以进行不相关的交易。如果Alice丢失了它,她也将失去在新链上再次部署到该地址的能力。这是一个永久性的漏洞,依赖于一个诚实的个人来保护私钥。?如果连比特币core开发者做不到,那我们其他人又该如何做到呢?

解决方案:CREATE2

值得庆幸的是,有一种更好的方法可以跨链获得一致的地址——不依赖于秘密私钥,不依赖于单个部署者,并且在整个过程中可以抵抗部署者的错误。请记住用于查找使用CREATE2部署的智能合约地址的公式:

new_address=hash(0xFF,sender,salt,bytecode)

第一个参数?0xFF?是一个可以忽略的常数值。第二个参数(senderaddress)可以通过在大多数EVM链中选择z0age的CREATE2Factory部署0x0000000000FFe8B47B3e2130213B802212439497来保持一致。第三个参数是一个用户选择的?salt,我们可以用它来找到一个靓号地址,然后在链上保持不变。第四个是合约字节码,它可以作为一个有用的完整性检查,以确保我们在链上部署完全相同的功能。无论任何单个部署者做什么,所有四个参数都可以保持相同。

新华出版社发行首款数字藏品:金色财经报道,新华出版社于6月1日儿童节发布“国家相册 · 我的小人书”首款限量版数字版权藏品,本藏品由新华出版社与 5G 价值阅读平台悦读汇联合发行,目前已售罄。[2022/6/1 3:56:57]

为什么这样更好呢?与私钥不同,部署者选择的salt是可以被公开的!知道salt可以部署合约,但对合约资产或功能的控制为零。因为它不绑定任何秘密信息,所以任何人都可以在不泄露或共享私钥的情况下将合约部署到新链上。字节码参数还确保当且仅当字节码*相同*时,这些新的无许可部署将具有相同的地址。因此,最终用户无需做详细的代码差异就能得到更强的保证。

有关更深入的概述,请参阅?OpenZeppelin的科普文章?。

创建你自己的靓号地址

认为以太坊合并后,工作量证明就没用了吗?再想一想!同样的GPU功能,有助于为比特币区块寻找具有大量前导零的哈希原像,在为EVM智能合约找到具有大量前导零的哈希原像方面也非常出色。来自OpenSea的z0age找到了一个简单的设置来创建你自己的靓号地址。

1、使用?vast.ai?启动一个GPU示例实例,每秒尝试约20亿次,成本约为25美分/小时:

Image:nvidia/openclGPU:1xRTX3090需要分配的磁盘空间:1.83GB2、SSH并安装rust+create2crunch

sudoaptinstallbuild-essential-y;curl--proto'=https'--tlsv1.2-sSfhttps://sh.rustup.rs|sh-s---y;source"$HOME/.cargo/env";gitclonehttps://github.com/0age/create2crunch&&cdcreate2crunch;sed-i's/0x4/0x40/g'src/lib.rs

3、运行种子搜索。对于环境变量,INIT_CODE_HASH是合约创建代码的keccak256。可以在此处?找到一个打印出来的样本代工测试-确保在消耗大量计算资源之前对其进行验证!LEADING应该是你想要的前导零字节数,TOTAL应该是你想要在合约地址中的总零字节数。

exportFACTORY="0x0000000000ffe8b47b3e2130213b802212439497";exportCALLER="0x0000000000000000000000000000000000000000";exportINIT_CODE_HASH="0xabc...def";exportLEADING=5;exportTOTAL=7;cargorun--release$FACTORY$CALLER$INIT_CODE_HASH0$LEADING$TOTAL

当z0age首次发布他的repo时,它能够在上述vastAI硬件上每秒运行19亿次尝试。从那时起,矢量化在某些OpenGL内核上变得疯狂起来,我观察到每秒有21.5亿次尝试。这意味着找到一个5前导零字节地址需要256^5/(2150000000*60)~=8分钟,找到一个6前导零字节地址需要256^6/(2150000000*3600)~=36小时,找到一个7前导零字节地址需要256^7/(2150000000*86400)~=387天。请注意,一个字节等于两个十六进制字符,因此一个5前导字节的地址将有10个零。当然,这种搜索可以完全并行化,随着时间的推移,实际成功的概率将遵循泊松分布。

部署CREATE2工厂

精明的读者可能已经注意到,CREATE2Factory在所有链上都已经存在于0x0000000000FFe8B47B3e2130213B802212439497。这有点像鸡生蛋还是蛋生鸡的问题,一致的地址部署如何依赖于一致的地址部署?

当我最初了解到这种方法时,我以为它只是一个由比我更聪明的人持有的私钥(上面的“细心的Alice”场景)。但它实际上比这健壮得多!ENS创始人NickJohnson的“无密钥交易”方法利用了这样一个事实,即你可以从任何交易签名中恢复公共地址,而无需知道签署它的相应私钥。因此,可以创建一笔交易,然后为其发明一个伪造的签名,例如仅由2组成的签名。存在这个伪造签名的私钥,但没有人知道它是什么。但是我们可以恢复“无密钥签名”对应的公共地址,给它发送一些ETH,然后将签名的交易提交给内存池。尽管这种方法很模糊,但它是一笔有效的交易,而且实际上是唯一可以从这个公共地址发出的有效交易。

结果呢?任何人都可以在没有任何专有信息的情况下将factory部署到新的链上,同时防止恶意行为者造成损害。创建一个只能部署一个事务的单用途EOA是非常巧妙的技术。

无密钥交易过程中创建的具体地址和合约

这可以通过三个简单的“forgecast”命令来完成。字节码太长,无法在此处复制,但你可以按照?https://github.com/ProjectOpenSea/seaport/blob/main/docs/Deployment.md?上的说明,在你选择的任何链上无需许可地部署CREATE2Factory!

当然,如果已经部署过了,就没有必要再部署了。

旁注:EIP-155要求是糟糕的

简短的尝试来支持我的L1治理冒险行为,请随意跳过。EIP-155?是Vitalik于2016年提出的一项提案,其引入了“链ID”的概念以防止重放攻击。每条链都有自己的唯一标识符——以太坊是1,BSC是56,Polygon是137——这些标识符将包含在已签名的交易中以防止重放攻击,它很快被以太坊采用,而其他所有EVM链都跟着采用了这个提案。这很好,但问题来了,当选择几条链,例如Evmos最近决定明确禁止EIP-155前的交易?,在奇怪的理由下,它可以防止一个操作错误,即Optimism将2000万OP代币发送到Wintermute不存在的一个多重签名地址,声称拥有但从未初始化。但是,禁用155之前的交易会显著破坏一整套跨链部署,例如CREATE2factory以及Seaport等领先项目。这些治理提案应该立即回滚,像这样的保护细节应该来自钱包而不是共识层。如果多链是未来,那么这些不必要的限制,将是顶级项目部署在你的区块链上的巨大障碍。

有趣的东西:部署赏金

今天https://delegate.cash部署在7个不同的EVM链以及与这些链对应的7个测试网上。所有这些的合约地址都是相同的:0x00000000000076A84feF008CDAbe6409d2FE638B。

那这就够了吗?不,我们需要更多的链。因为delegatecash是一个零依赖的独立原语,这意味着多链的风险实际上为零。这是纯粹的好处!因此,对于前5名将delegatecash智能合约部署并验证到新链和相应的测试网上的人,我将奖励100USDC奖金!

你需要在此处?使用开源存储库中的部署脚本。这可能需要部署CREATE2Factory,并且不要忘记Etherscan验证!愉快部署,享受体验式学习!

标签:CREAREACREEATcream币怎么样ADREAM币ConcretecodesGreat Ape

火星币热门资讯
VERS:新人进阶法则:学习、必备知识与实战

注:本文来自@BTW0205推特,MarsBit整理如下:问题:新人入圈应该怎么学习?哪些领域的知识是必须要掌握的?如何让知识和实践相结合?这三个问题非常有代表性!先来首诗定一下基调——一入币圈.

1900/1/1 0:00:00
ATOR:一文了解 Limit Break 推出的链上 NFT 可选版税合约

LimitBreak正在引入可选择的、向后兼容的、可编程的版税合约,其可通过新颖的质押解决方案运用到任何ERC-721合约.

1900/1/1 0:00:00
加密货币:The Block Research:15张图回顾2022年加密货币市场

注:本文来自TheBlockResearch推文,简述过去一年加密货币市场发展态势。对加密货币行业来说,2022年必将是载入史册的一年,在世界各地的分析师团队的帮助下,我们很自豪地发布了《202.

1900/1/1 0:00:00
Fantom:AC回归后,Fantom能否重拾往日DeFi的辉煌?

截至2022年12月23日,FANTOM?生态概览:?$FTM?价格=0.20美元?市值=5.2亿美元–排名65?PoS?历史最高=3.46美元(-94%)?历史低点=0.002美元(+10.

1900/1/1 0:00:00
BTC:2022年比特币的10大进展

SwanBitcoin的CoryKlippsten、TomerStrolight和SamCallahan表示,无论是Taro的升级还是闪电网络的发展,比特币今年都取得了稳定的进展.

1900/1/1 0:00:00
加密货币:虎嗅:币安到了最危险的时刻

币安,这个全球最大的加密货币交易所,正在面临2020年以来最大的危机。在最近的一周里,美国政府调查它、国际空头狙击它、审计公司放弃它,百亿资金逃离它,币安的1.2亿用户也蠢蠢欲动......短短.

1900/1/1 0:00:00