首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

web3.py - The field extraData is 97 byte...

当使用web3.py接入采用POA共识的以太坊节点时,可能会出现错误The field extraData is 97 bytes, but should be 32......用自己熟悉的语言学习以太坊开发:Java|Php|Python|.Net / C#|Golang|Node.JS|Flutter / Dart 1、Web3.py ExtraData故障现象 当使用Web3...The full extraData is: HexBytes('0xd88301010084676...21465292f') 这是因为POA共识算法在extraData字段添加了一些额外的数据从而导致该字段超过以太坊的黄皮书约定的...32字节长度,而Web3.py默认情况下是按照以太坊黄皮书的约定来检查extraData字段的长度,这造成了不一致并抛出异常。...2、Web3.py ExtraData故障的解决方法 Web3.py提供了中间件geth_poa_middleware来解决这一兼容性问题,只要引入该中间件并将其注入web3对象即可,例如: from

93200
您找到你想要的搜索结果了吗?
是的
没有找到

智能合约审计之evilReflex攻击

approveAndCallcode()代码如下所示: image.png approveAndCallcode函数的用途是在完成approve操作时发出相关的调用通知,而在上述代码的L136处_spender.call(_extraData...)中的_extraData为用户可控参数,而在solidity语言中可以通过call方法来实现对某个合约或者本地合约的某个方法进行调用,调用的方式大致如下: .call(方法选择器,...call(bytes) 在使用call调用时我们可以通过传递参数的方式,将方法选择器、参数进行传递,也可以直接传入一个字节数组,在这里我们可以将要调用的合约方法以及相关参数转换为bytecode之后作为_extraData...参数传入,之后通过_spender.call(_extraData)实现对合约中的任意方法的调用,而此时的_spender也是可控的,所以也可以在存在漏洞的合约中调用任意合约的任意方法并为其提供相关的方法参数...//receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData) //

44020

隐秘的交易:暗藏危机的智能合约恶意调用

approveAndCallcode函数的用途是在完成approve操作时发出相关的调用通知,而在上述代码的L136处spender.call(extraData)中的_extraData为用户可控参数...call(bytes) 在使用call调用时我们可以通过传递参数的方式,将方法选择器、参数进行传递,也可以直接传入一个字节数组,在这里我们可以将要调用的合约方法以及相关参数转换为bytecode之后作为extraData...参数传入,之后通过spender.call(extraData)实现对合约中的任意方法的调用,而此时的spender也是可控的,所以也可以在存在漏洞的合约中调用任意合约的任意方法并为其提供相关的方法参数..._spender.call(_extraData)) { revert(); } return true; } } 首先编译部署合约: ? 部署信息如下: ?...)的bytecode 这样一来在调用approveAndCallcode函数时将发出一个transfer调用,此时的资产接受地址为攻击者构造的extraData中的to地址信息,token数量为extraData

87920
领券