在call上使用内联程序集address.call有什么好处吗?
例如
// address addr
// uint value
// bytes memory data
// using inline assembly
assembly {
call(gas, addr, value, add(data, 0x20), mload(data), mload(0x40), 0)
}
// using address.call
addr.call.value(value)(data)我正在查看Gnosis多功能钱包的代码,并想知道为什么他们使用程序集call而不是address.call。
发布于 2020-03-03 11:16:10
在查看每一种情况下传递的输入参数集时,这是非常明显的。
对于非程序集调用,传递:
。
addr)value)data)因此,通过程序集调用,您还可以:
编辑(Sea212):在这个上下文中,solc == 0.4.x:通过添加.gas(gas),您还可以指定非组装调用中气体单元的数量。因此,使用程序集调用的主要优点是可以获得输出。
https://ethereum.stackexchange.com/questions/80280
复制相似问题