当前位置: 首页 > article >正文

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

http://www.kler.cn/a/228091.html

相关文章:

  • CMAKE工程编译好后自动把可执行文件传输到远程开发板
  • SVG 矩形:深入理解与实际应用
  • 新年快乐!给大家带来了一份 python 烟花代码!
  • 论文阅读(十四):贝叶斯网络在全基因组DNA甲基化研究中的应用
  • Excel - Binary和Text两种Compare方法
  • “AI视频智能分析系统:让每一帧视频都充满智慧
  • (深度学习快速入门)Graph Contrastive Learning with Augmentations(GraphCL)笔记
  • 租用海外服务器丢包是什么情况?
  • 3031. Minimum Time to Revert Word to Initial State II
  • 【Linux】 信号的保存 | 捕捉
  • list基本使用
  • 基于深度学习的SSVEP分类算法简介
  • 【Android】RxJava系列01-基本概述和基本用法
  • 【CSS + ElementUI】更改 el-carousel 指示器样式且隐藏左右箭头
  • Centos 7.5 安装 NVM 详细步骤
  • 基于ESP8266 开发板(MCU)遥控小车
  • PHP三级分类数据处理
  • eslint报错文档大量红色报错符号 不自动修正
  • ERP 系统架构的设计与实践总结
  • 课时14:变量基础_变量定义
  • 蓝桥杯第八届省赛题笔记------基于单片机的电子钟程序设计与调试
  • 【华为】GRE VPN 实验配置
  • 彻底学会系列:一、机器学习之线性回归
  • scikit-learn 1.3.X 版本 bug - F1 分数计算错误
  • 【MATLAB源码-第135期】基于matlab的变色龙群优化算法CSA)机器人栅格路径规划,输出做短路径图和适应度曲线。
  • 跟着cherno手搓游戏引擎【20】混合(blend)