提问人:Dore 提问时间:10/27/2023 更新时间:10/27/2023 访问量:26
我想在智能合约中广播一个已签名的元交易
I want to broadcast a signed meta transaction in a smart contract
问:
我想用 ETH 在代币中实现一个类似批准的功能。
我们希望直接从签署合约的用户地址转账,而不是在合约上存入 ETH。
我们相信这些在当前的元交易中是可行的,并且正在开发它们。
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.4.22 <0.9.0;
contract MetaTransaction {
function executeMetaTransaction(
address to,
uint256 value,
bytes memory data,
uint256 nonce,
uint256 gasPrice,
uint256 gasLimit,
uint8 v,
bytes32 r,
bytes32 s
) public {
bytes32 hash = keccak256(
abi.encode(to, value, data, nonce, gasPrice, gasLimit)
);
address signer = ecrecover(hash, v, r, s);
require(signer != address(0), "Invalid signature");
(bool success, ) = signer.call(data);
require(success, "Transaction failed");
}
function sendEther(address payable _to, uint256 _amount) public payable {
require(msg.sender.balance >= _amount, "Insufficient balance");
_to.transfer(_amount);
}
}
这不适用于 ETH 转账。
如何实现我想要的功能? 请帮忙。
答: 暂无答案
评论