golang 代码 需要找到对应solidity方法的abi。文章来源:https://www.toymoban.com/news/detail-797054.html
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模板网!