- 浏览: 722755 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1043)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (52)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (64)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
最新评论
multicall的solidity调用与ethers.js调用
MyMulticall
foo
bar 10
foo
bar 100
// contracts/Box.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/utils/Multicall.sol"; import "hardhat/console.sol"; contract TestMulticall { function testMulticall(address addr) external { MyMulticall myMulticall = MyMulticall(addr); bytes[] memory calls = new bytes[](2); calls[0] = abi.encodeWithSelector(MyMulticall.foo.selector); calls[1] = abi.encodeWithSelector(MyMulticall.bar.selector, 100); myMulticall.multicall(calls); } } contract MyMulticall is Multicall { function foo() view external { console.log("foo"); } function bar(uint i) view external { console.log("bar",i); } }
const { ethers } = require("hardhat") contractName = "MyMulticall"; contractName2 = "TestMulticall"; describe(contractName, function () { it("test ", async function () { const Contract = await ethers.getContractFactory(contractName); const contract = await Contract.deploy(); let interfaceFoo = new ethers.utils.Interface([ "function foo()" ]); let dataFoo = interfaceFoo.encodeFunctionData("foo", []) let dataBar = new ethers.utils.Interface([ "function bar(uint)" ]).encodeFunctionData("bar", [10]); await contract.multicall([ dataFoo, dataBar ]) const Contract2 = await ethers.getContractFactory(contractName2); const contract2 = await Contract2.deploy(); await contract2.testMulticall(contract.address); }); });
MyMulticall
foo
bar 10
foo
bar 100
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 14package.json 添加:"@nomicfou ... -
solidity
2023-02-25 14:23 12一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 11一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 117一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 107// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 106Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 131a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 106Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 167const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 2111.前置准备,运行一个新项目 mkdir my-project ... -
检查是否是721
2023-01-31 15:18 93// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 1932.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 171EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 861.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 1991. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1061.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 109https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 204extcodesize取出的byte code长度,若长度大于 ... -
Elevator
2023-01-13 10:48 94Elevator.sol // SPDX-License- ...
相关推荐
Multicall.js Multicall.js是一个轻量级JavaScript库,用于与智能合约进行交互。 多重调用允许将多个智能合约常量函数调用分组为单个调用,并将结果汇总为单个结果。 如果使用像Infura这样的远程节点,这将...
@ indexed-finance / multicall 用于静态多次调用的Solidity Contract和Typescript库。 MultiCall.sol合同在其构造函数内执行多个调用,并将结果作为ABI编码的字节数组返回。 当初始化代码作为eth_call操作发送到0...
多重通话 多调用聚合来自多个合同常量函数调用的结果。 这减少了需要发送的单独JSON RPC请求的数量(如果使用像Infura这样的远程节点,则特别有用),同时还保证返回的所有值都来自同一块(例如原子读取)并返回块...
孟买的多方通话部署 这是一个将合同部署到孟买的安全帽项目。 部署 hardhat deploy --network mumbai
Python网络编程第三版.pdf ├─chapter01 │ getname.py │ README.md ...│ xmlrpc_multicall.py │ xmlrpc_server.py │ └─tools │ run.sh │ two.sh │ └─monkeys _bootlocale.py
93. MultiCALL与多方通话关系如何? 71 94. 综合预付费业务的主要功能和实现方式? 71 95. 预付费漫游怎样实现机制如何? 72 96. 移动智能网和固网智能网的主要区别? 72 97. 主要的3G智能网协议有那些? 72 98. 3G...
学习多通话二进制文件(如BusyBox,CmdBox) 多重调用是一种使程序仅根据其名称执行不同的操作,并赋予其不同的副本和链接不同的名称的方法。 随着在现代最小型容器中的基本命令的普及,这种方法已引起的最多关注。...
1N3的Wordpress XMLRPC System Multicall蛮力利用漏洞,最近更新:20170215 关于: 这是对Wordpress xmlrpc.php系统多重调用功能的一种利用,影响了最新版本的Wordpress(3.5.1)。 该漏洞利用通过向xmlrpc.php发送...
C#语言有很多值得学习的地方,这里我们主要介绍C#委托实例,包括介绍重复调用 SimpleDelegate 的 MultiCall 方法等方面。 委托适用于那种在某些其他语言中需用函数指针来解决的情况(场合)。但是,与函数指针不同,...