是否有可能在一个事务中(有或没有智能契约)从一个EOA地址发送多个ECR20令牌(即USDT和USDC)到另一个地址(EOA)?如果是的话,这会否减少煤气成本?如果会的话,我们会如何计算节省的开支呢?
我读过关于这个话题的相互矛盾的信息。根据一个编辑用户的说法:
没有这样的包装契约,在一个事务中移动几个令牌是不可能的。
然而,根据另一用户的说法:
这绝对会节省汽油。所有的交易都有21k的天然气,合同在此基础上增加,这取决于所使用的操作。如果您创建一个将两个事务的工作组合在一起的契约,那么您将保存其中一个事务的21k
谁是对的?如果可以在一次交易中发送两个令牌,我将如何计算节省的费用?
这个问题似乎在单个事务中发送eth +其他令牌(没有双关意图)。同样的答案是否适用于发送多个ECR20令牌而不发送eth?此外,它也没有解决通过smart合同发送代币的可能性,根据上面的reddit哨所,该合同应将费用减少21,000瓦斯,因为这项费用只需评估一次。
发布于 2021-01-18 05:42:22
这两个都是对的。
其主要思想是,有一个契约来做逻辑。这是第一个引用的“包装合同”。如果您不使用合同,则必须发送单个事务,这些事务只能完成一件事:例如,转移一个令牌金额。
传递ERC-20令牌的方法有两种:使用transfer函数进行直接传输或使用approve和transferFrom组合进行间接传输。通常,在交易时,使用第二种间接方法,但这取决于你的需要。
如果您的合同拥有令牌,您可以简单地创建一个类似于以下内容的函数(如果将所有信息发送给同一个接收方):
function SendMultiple() public {
tokenA.transfer(receiver, amount);
tokenB.transfer(receiver, amount);
tokenC.transfer(receiver, amount);
}发布于 2022-02-12 21:06:28
请注意,21k是将ETH (或马季奇,或BNB)从一个帐户发送到另一个帐户的气体量。令牌传输是另一个问题,它涉及到在智能契约中执行函数。我想答案二让人困惑。另一个问题是,调用令牌合同中的传输函数的人必须是令牌的所有者,因此契约不能转移多个令牌,除非契约拥有这些令牌,正如Lauri前面所写的(但我认为应该强调这一点)。
如果您的问题是是否有可能通过一个外部帐户只使用一个事务传递2种类型的令牌,那么答案是否定的,它不是。因为你用你的帐户,需要单独访问合同,调用转移函数。
https://ethereum.stackexchange.com/questions/92434
复制相似问题