https://hicoldcat.com/posts/web3/senior-track-5/
Web3系列教程之高级篇---5:delegatecall委托调用漏洞
.delegatecall() 是 Solidity 中的一个方法,用于从一个原始合约中调用目标合约中的一个函数。然而,与其他方法不同的是,当使用.delegatecall()在目标合约中执行函数时,上下文从原始合约中传递,即代码在目标合约中执行,但变量在原始合约中被修改。 通过本教程,我们将了解为什么正确理解.delegatecall()的工作原理很重要,否则会产生一些严重后果。 等等,什么? 让我们首先了解这一点是如何运作的。 在使用.delegatecall()时需要注意的是,原始合约的上下文被传递给目标合约,目标合约的所有状态变化都反映在原始合约的状态上,而不是目标合约的状态上,即使该函数是在目标合约上执行的。 嗯,不是很清楚吧,我理解。所以让我们试着通过一个例子来理解。 在以太坊中,一个函数可以表示为4+32*N字节,其中4 bytes为函数选择器,32*N字节为函数参数。 函数选择器。为了得到函数选择器,我们将函数的名称和它的参数类型进行散
HICOLDCAT.COM
0 0 评论 0 股票
请登录喜欢,分享和评论!
Google Analytics