首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何手动向“`execTransaction`”提供输入或将原始调用数据传递给MultiSend的“MultiSend”方法?

如何手动向“`execTransaction`”提供输入或将原始调用数据传递给MultiSend的“MultiSend”方法?
EN

Ethereum用户
提问于 2022-12-21 23:50:49
回答 1查看 197关注 0票数 0

我希望以编程的方式为安全事务(特别是来自伪造脚本)创建调用数据,然后将其复制/粘贴到UI中。为了做到这一点,我希望能够:

  1. 调用execTransaction并指定每个输入,或
  2. 使用Transaction应用程序,而不是在UI中构建调用,只需粘贴调用的编码数据即可。

但是,我似乎无法在UI中完成任何一种操作。因此,给定我想要执行的原始调用数据,在UI中排队的最简单方法是什么?(我愿意以编程的方式排队,但这似乎是一种不值得付出的开销)

EN

回答 1

Ethereum用户

发布于 2022-12-31 20:59:16

通过API发布事务非常值得,特别是当您需要以编程方式生成事务和/或使用复杂的操作时。

首先,您应该知道如何使用任何选择的web3库在EVM网络上构建事务。您可以在网上找到您所选择的语言和库的许多例子,所以我将考虑这个问题的范围之外。

一旦您可以在本地生成一个事务,您就可以将详细信息直接发布到TXS

(注:忽略气体估算部分和签署txn的“延迟方式”。使用有效密钥(签名者或委托)对消息进行签名,并将gas设为0,这将在执行时计算。文档中的核心概念仍然有效。)

将此调用数据直接发布到execTransaction()将要求每个人脱机签署事务,并与事务数据一起提供这些签名。这是您可以使用的选项,但我个人认为使用安全API提交和其他所有者签署UI更为方便。

事务生成器( Transaction )是一个稍微不同的东西。虽然典型的Multicall契约只是接受一个调用数据数组,但是已部署的多发送契约需要更多的事务元数据,并且在如何格式化事务数据方面有自己的规则。

据我所知,这不是公开和明确的文档,但要点是您生成一个或多个“元事务”(一个由uint8 operation组成的keccak打包对象(仅为calldelegatecall的Enum,但由于当前的合同不接受delegatecalls,这应该永远是0),地址to、uint256 value、uint256 calldata length和字节calldata),然后将它们连接在一起,作为合同multiSend(bytes)方法的论据。

有几种实现可以帮助您入门:

例如,如果您使用的是Ethers.js,那么Safe就有一个完整的多发送库

安全合同回购有一些通用类型标码

我找到了Python实现,也在外管局的回购处。

通过一些工作,您可以将逻辑提取到任何支持库或语言中。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/141629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档