rust ethers-rs 签名与solidity验证签名例子

第一段代码是一个 Solidity 智能合约,用于验证基于 EIP712 格式的签名。它包括了定义常量、结构体、函数和验证逻辑的实现。第二段代码是一个 Rust 测试函数,用于测试基于 EIP712 格式的签名的生成和验证过程。它使用了 `ethers` 和 `ethers-signers` 库来创建钱包、定义签名数据结构、生成签名并进行验证,最后打印相关信息以验证签名的正确性。




// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.6.0;
pragma experimental ABIEncoderV2;
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";

contract DeriveEip712Test {
    uint256 constant chainId = 1;
    bytes32 constant salt = keccak256("eip712-vault-23x8Dek33kgD");
    bytes32 constant EIP712_DOMAIN_TYPEHASH =
        keccak256(
            "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)"
        );

    bytes32 constant FOOBAR_DOMAIN_TYPEHASH =
        keccak256(
            "SignedStruct(uint256 id,string extra,uint256 amount,uint256 timestamp,address contract,address token)"
        );

    address signer ;

    mapping(bytes => bool) private usedSignature;

    constructor(address _signer)  {
        signer = _signer;
    }

    struct SignedStruct {
        uint256 id;
        string extra;
        uint256 amount;
        uint256 timestamp;
        address token;
    }

    

    function domainSeparator() public view returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    EIP712_DOMAIN_TY

相关推荐

  1. rust ethers-rs 签名solidity验证签名例子

    2024-02-05 15:06:02       28 阅读
  2. Spring Boot实现接口签名验证

    2024-02-05 15:06:02       17 阅读
  3. Ubuntu由于没有公钥,无法验证下列签名

    2024-02-05 15:06:02       11 阅读
  4. APK<span style='color:red;'>签名</span>

    APK签名

    2024-02-05 15:06:02      17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-05 15:06:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-05 15:06:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-05 15:06:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-05 15:06:02       20 阅读

热门阅读

  1. 力扣刷题-27.移除元素

    2024-02-05 15:06:02       31 阅读
  2. Ubuntu文件系统结构

    2024-02-05 15:06:02       28 阅读
  3. Rust个人学习之Rust国内镜像源

    2024-02-05 15:06:02       28 阅读
  4. 【MySQL】-10 MySQL 存储过程

    2024-02-05 15:06:02       25 阅读
  5. MySQL的存储过程

    2024-02-05 15:06:02       23 阅读
  6. mysql 删除分区表数据

    2024-02-05 15:06:02       32 阅读
  7. MVVM下的窗口关闭

    2024-02-05 15:06:02       31 阅读
  8. ChatGPT高效提问—基础知识(NLP)

    2024-02-05 15:06:02       28 阅读
  9. QT 的 blockSignals(true) 的作用范围

    2024-02-05 15:06:02       24 阅读
  10. C++:通过count和find判断vector中是否包含某个数据

    2024-02-05 15:06:02       28 阅读