10多年的软件开发经验,包括大数据、AI等领域,熟悉Go、Java、Python等语言使用,最近学习rust语言,目前从事技术管理、架构师相关工作
10多年的软件开发经验,包括大数据、AI等领域,熟悉Go、Java、Python等语言使用,最近学习rust语言,目前从事技术管理、架构师相关工作

Subscribe to web3zoom

Subscribe to web3zoom
多重调用
实现的效果是同一个合约地址在tong'yi
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.30;
contract TestMultiCall {
function func1() external view returns(uint, uint){
return (1, block.timestamp);
}
function func2() external view returns(uint, uint){
return (2, block.timestamp);
}
function getData1() external pure returns (bytes memory){
return abi.encodeWithSelector(this.func1.selector);
}
function getData2() external pure returns (bytes memory){
return abi.encodeWithSelector(this.func2.selector);
}
}
contract MultiCall{
// 保证调用 TestMultiCall的调用方是同一时间获取数据,保证数据一致性
function multiCall(address[] calldata targets, bytes[] calldata data)
external
view
returns(bytes[] memory)
{
require(targets.length == data.length, "target length != data length");
bytes[] memory results = new bytesUnsupported embed;
for(uint i; i < targets.length; i++){
(bool success, bytes memory result) = targets[i].staticcall(data[i]);
require(success, "call failed");
results[i] = result;
}
return results;
}
}
多重调用
实现的效果是同一个合约地址在tong'yi
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.30;
contract TestMultiCall {
function func1() external view returns(uint, uint){
return (1, block.timestamp);
}
function func2() external view returns(uint, uint){
return (2, block.timestamp);
}
function getData1() external pure returns (bytes memory){
return abi.encodeWithSelector(this.func1.selector);
}
function getData2() external pure returns (bytes memory){
return abi.encodeWithSelector(this.func2.selector);
}
}
contract MultiCall{
// 保证调用 TestMultiCall的调用方是同一时间获取数据,保证数据一致性
function multiCall(address[] calldata targets, bytes[] calldata data)
external
view
returns(bytes[] memory)
{
require(targets.length == data.length, "target length != data length");
bytes[] memory results = new bytesUnsupported embed;
for(uint i; i < targets.length; i++){
(bool success, bytes memory result) = targets[i].staticcall(data[i]);
require(success, "call failed");
results[i] = result;
}
return results;
}
}
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
No activity yet