首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用醚类keccak256?

如何使用醚类keccak256?
EN

Ethereum用户
提问于 2022-03-06 19:23:23
回答 2查看 9K关注 0票数 9

我试图像这样使用醚的keccak256函数:

代码语言:javascript
复制
import { keccak256 } from "@ethersproject/keccak256";

const signature = keccak256("balanceOf(address)");

但是脚本失败了,出现了以下错误:

错误:无效的arrayify值(argument=" value ",value="balanceOf(address)",code=INVALID_ARGUMENT,version=字节/5.5.0)

我怎么才能让它起作用?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2022-03-06 19:23:23

让我们看看函数定义keccak256

代码语言:javascript
复制
export function keccak256(data: BytesLike): string {
    return '0x' + sha3.keccak_256(arrayify(data));
}

输入不是字符串,而是BytesLike类型。

考虑到这一点,下面是如何重写脚本以使其工作:

代码语言:javascript
复制
import { keccak256 } from "@ethersproject/keccak256";
import { toUtf8Bytes } from "@ethersproject/strings";

const signature = keccak256(toUtf8Bytes("balanceOf(address)"));

诀窍是从醚堆栈(@ethersproject/strings)导入另一个包,该包导出一个名为toUtf8Bytes的函数,该函数将字符串转换为BytesLike

票数 7
EN

Ethereum用户

发布于 2022-04-10 15:48:12

对于ethers.js v5,您可以使用:

代码语言:javascript
复制
const { ethers, utils } = require("ethers");

const labelhash = utils.keccak256(utils.toUtf8Bytes("example"))

这是记录在案的这里

票数 4
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/123232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档