我想在智能合约中广播一个已签名的元交易

I want to broadcast a signed meta transaction in a smart contract

提问人:Dore 提问时间:10/27/2023 更新时间:10/27/2023 访问量:26

问:

我想用 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 转账。

如何实现我想要的功能? 请帮忙。

交易 以太坊 签名 合约

评论


答: 暂无答案