golang 实现solidity keccak256(abi.encode(xxx))签名

这篇具有很好参考价值的文章主要介绍了golang 实现solidity keccak256(abi.encode(xxx))签名。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

golang 代码 需要找到对应solidity方法的abi。

package main

import (
    "fmt"
    "github.com/ethereum/go-ethereum/accounts/abi"
    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/crypto"
    "math/big"
    "strings"
)

func main() {
    abiString := `
[
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "to",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "value",
                "type": "uint256"
            },
            {
                "internalType": "string",
                "name": "data",
                "type": "string"
            }
        ],
        "name": "gg",
        "outputs": [],
        "stateMutability": "pure",
        "type": "function"
    }
]`
    contractAbi, _ := abi.JSON(strings.NewReader(abiString))

    val1, _ := new(big.Int).SetString("100", 10)

    bytes, _ := contractAbi.Pack("gg",
        common.HexToAddress("0x5B38Da6a701c568545dCfcB03FcB875f56beddC4"),
        val1,
        "aaaa",
    )

    bytes = bytes[4:]
    hash := crypto.Keccak256Hash(bytes)
    fmt.Println(hash)
}

solidity 代码文章来源地址https://www.toymoban.com/news/detail-797054.html

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Test {
    function gg(
        address to,
        uint256 value,
        string calldata data
    ) external pure returns (bytes32) {
        bytes32 hash = keccak256(abi.encodePacked(to, value, data));
        return hash;
    }
}

到了这里,关于golang 实现solidity keccak256(abi.encode(xxx))签名的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • golang 区块链:验证签名

    1.遍历交易集合txs获取全部的消费记录inputMap 2.从区块链获取inputMap的消费记录input对应的output 3.传入output的集合,逐笔验证签名 验证: 1.复制一份新的交易对象(input的签名和公钥置空) 2.对复制的交易进行hash,获取签名需要的hash ( 获取input的output所在的交易 设置vin的公钥

    2024年02月12日
    浏览(39)
  • solidity函数签名的实现-solidity实现智能合约教程(8)

    猛戳订阅学习专栏🍁🍁 👉 solidity系列合约源码+解析 👈 🍁🍁 函数选择器: solidity调用函数时,calldata的前4个字节为指定要调用的函数,这4个字节称为函数选择器。 以下面的代码为例。它通过地址addr的调用合约的transfer方法。 abi.encodeWithSignature(…)返回的前4个字节是函数

    2024年02月16日
    浏览(40)
  • Solidity--如何实现椭圆算法签名(ECDSA)

    椭圆算法签名 椭圆曲线算法签名(ECDSA)是一种数字签名算法,其基于椭圆曲线密码学(ECC)。它是一种非对称密码算法,即发送方和接收方都有不同的密钥。在数字签名中,发送方使用它的私钥对数据进行签名,以证明数据的完整性和发送方身份。接收方可以使用发送方的

    2023年04月09日
    浏览(24)
  • WEB3 创建React前端Dapp环境并整合solidity项目,融合项目结构便捷前端拿取合约 Abi

    好 各位 经过我们上文 WEB3 solidity 带着大家编写测试代码 操作订单 创建/取消/填充操作 我们自己写了一个测试订单业务的脚本 没想到运行的还挺好的 那么 今天开始 我们就可以开始操作我们前端 Dapp 的一个操作了 在整个过程中 确实是没有我们后端的操作 或者说 我们自己就

    2024年02月07日
    浏览(47)
  • Android Apk签名算法使用SHA256

    Android apk签名算法使用SHA256 本文不介绍复杂的签名过程,说一下Android签名算法使用SHA256。 但是SHA1不是相对安全签名算法,SHA256更加安全一些。 一般大公司才会有这种细致的安全要求。 如何查看apk签名是否是SHA1还是SHA256 ··· 1、拿到apk文件,修改文件后缀为.jar 2、解压文件

    2024年04月08日
    浏览(91)
  • Postman轻松签名,让SHA256withRSA保驾护航!

      postman接口签名教程: https://www.bilibili.com/video/BV1r14y1A7MQ/? 目录:导读 前言 获取pmlib 引入依赖bundle.js,有以下两种方式: 使用Pre-request Script对请求进行加签(具体加签字段请看自己项目) 结语 在接口测试中,我们经常需要对请求进行签名,以保证数据的安全性。而SHA256withR

    2024年02月11日
    浏览(33)
  • keycloak~jwt的rs256签名的验证方式

    keycloak开放接口地址:/auth/realms/fabao/.well-known/openid-configuration RSA算法是一种非对称加密算法,其安全性基于大整数分解的困难性。在RSA算法中,有以下几个关键参数: n(模数) :n 是一个大整数,通常为两个大素数 p 和 q 的乘积,即 n = p * q。n 用于生成公钥和私钥,并且决

    2024年04月22日
    浏览(41)
  • Android创建签名文件,并获取签名文件MD5,SHA1,SHA256值

    一、创建Android签名文件         使用Android Studio开发工具,可视化窗口进行创建 第一步:点击AndroidStudio导航栏上的 Build→Generate Signed Bundle / APK 第二步:选择APK选项    第三步:创建签名文件 第四步:输入创建签名的文件的各内容信息 点击ok,即可完成签名的文件的创建

    2024年02月07日
    浏览(51)
  • uniapp安卓签名证书生成,签名证书的SHA1,SHA256,MD5获取

    uniapp安卓证书生成有两种方式,一种是去dcloud开发者中心生成证书,另一种是安装jre环境,自己生成证书 第一种 dcloud生成证书 去该项目对应的应用处,生成证书需要等几分钟,生成后可以查看证书信息 第二种 自己生成 先安装jre,再配置一下环境变量 jre8下载地址 去D盘添加

    2024年02月16日
    浏览(56)
  • 045.Solidity入门——32验证签名

    在使用智能合约时,经常需要进行签名验证,以确保交易的合法性和完整性。Solidity提供了一些内置函数,可以轻松地对签名进行验证。 示例代码: 合约VerifySignature: 包含了一个签名者的地址和一个用于验证签名的函数verify。在构造函数中,将签名者的地址传递给合约,并在

    2024年02月03日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包