- 浏览: 761696 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- 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 (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
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 237package.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 244一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 207// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 220Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 252a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 203Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 278const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 3321.前置准备,运行一个新项目 mkdir my-project ... -
检查是否是721
2023-01-31 15:18 153// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 2902.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 242EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1541.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3011. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1751.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 194https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 282extcodesize取出的byte code长度,若长度大于 ... -
Elevator
2023-01-13 10:48 203Elevator.sol // SPDX-License- ...
相关推荐
Multicall.js Multicall.js是一个轻量级JavaScript库,用于与智能合约进行交互。 多重调用允许将多个智能合约常量函数调用分组为单个调用,并将结果汇总为单个结果。 如果使用像Infura这样的远程节点,这将...
"hardhat-multicall" 是一个专为智能合约部署设计的工具,主要应用于以太坊的孟买测试网络。在区块链开发中,Hardhat 是一个强大的开发环境,它提供了编译、部署、测试和调试智能合约的一系列功能。在这个特定的项目...
@ indexed-finance / multicall 用于静态多次调用的Solidity Contract和Typescript库。 MultiCall.sol合同在其构造函数内执行多个调用,并将结果作为ABI编码的字节数组返回。 当初始化代码作为eth_call操作发送到0...
多重通话 多调用聚合来自多个合同常量函数调用的结果。 这减少了需要发送的单独JSON RPC请求的数量(如果使用像Infura这样的远程节点,则特别有用),同时还保证返回的所有值都来自同一块(例如原子读取)并返回块...
1N3的Wordpress XMLRPC System Multicall蛮力利用漏洞,最近更新:20170215 关于: 这是对Wordpress xmlrpc.php系统多重调用功能的一种利用,影响了最新版本的Wordpress(3.5.1)。 该漏洞利用通过向xmlrpc.php发送...
本文将深入探讨C#委托实例,尤其是关于`SimpleDelegate`的使用和`MultiCall`方法的重复调用。 首先,我们要了解什么是委托。在C#中,委托是一个类,它继承自`System.Delegate`,用于封装一个或多个具有相同签名的...
multicall = xmlrpc.client.MultiCall(server) try: multicall.division(2, 5) multicall.add(2, 0) result = multicall() print(type(result)) print("2/5=%d, 2+0=%d" % tuple(result)) except xmlrpc....
- `MultiCall`: 支持一次发送多个XMLRPC调用,将它们打包到单个HTTP请求中,提高效率。 2. **xmlrpc.server** - `SimpleXMLRPCServer`: 简单的XMLRPC服务器实现,适用于快速搭建测试环境或简单的生产环境。 - `...
java后台 预处理 solidity数据,签名,验证,查询,ens解析
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) 多重调用是一种使程序仅根据其名称执行不同的操作,并赋予其不同的副本和链接不同的名称的方法。 随着在现代最小型容器中的基本命令的普及,这种方法已引起的最多关注。...
2. 注册一些辅助函数,如`register_introspection_functions()`用于提供服务器的元数据,`register_multicall_functions()`支持批量调用。 3. 注册实际的RPC服务函数,如`addtogether`、`quadratic`和`remote_repr`...