首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Uncaught :在使用使用块菌构建的dapp时,web3.personal.sign不是一个函数。

Uncaught :在使用使用块菌构建的dapp时,web3.personal.sign不是一个函数。
EN

Ethereum用户
提问于 2017-09-07 21:29:18
回答 1查看 1.8K关注 0票数 2

我在Chrome上运行Metamask。

当我在开发人员控制台中随机运行以下内容时,甚至Etherdelta Metamask会提示我签名一条消息,这就是预期的行为。

代码语言:javascript
复制
web3.personal.sign('0x68656c6c6f', web3.eth.accounts[0], console.log)

但是,当我试图在由$ truffle init webpack创建的基本Dapp上的dev控制台中运行相同时,我会看到一个错误,它说:

代码语言:javascript
复制
Uncaught TypeError: web3.personal.sign is not a function

个人没有一个功能“标志”,但只有["_requestManager", "newAccount", "unlockAccount", "sendTransaction", "lockAccount", "listAccounts", "getListAccounts"]上的松露dapp,但有以下其他网站的["_requestManager", "newAccount", "importRawKey", "unlockAccount", "ecRecover", "sign", "sendTransaction", "lockAccount", "listAccounts", "getListAccounts"]

注意:不过,web3.eth.sign(web3.eth.coinbase, '0x68656c6c6f', console.log)仍然有效。

为什么会发生这种情况?

复制这一问题的步骤:

  1. 通过运行以下命令创建基本的松露dapp:
    • 松露汁webpack
    • 块菌编译
    • 松露迁移
    • npm运行开发

  2. 在Chrome中打开http://127.0.0.1:8081
  3. 在开发控制台中运行web3.personal.sign('0x68656c6c6f', web3.eth.accounts[0], console.log)
EN

回答 1

Ethereum用户

回答已采纳

发布于 2017-09-14 19:33:36

摘要中的

使用web3.eth.sign()代替。

,为什么不是web3.personal?

尽管在某些实现中定义了web3.personal,但据我所知,它不是一个标准。

v0 web3.jsAPI没有列出个人API。v1也是如此,除了web3.eth.personal之外,这可能是您想要的。

我相信Metamask正在揭露非标准的API web3.personal。( web3也包括在geth attach中)

更新: Metamask

的确认

元询问的响应中,对于我的问题,“web3.personal是以哪种规范为基础的?”

kumavis 15分钟前评论@carver等 geth线程:以太/转-埃瑟姆#2940 our implementation:https://github.com/metamask/eth-sig-util用法示例:https://github.com/flyswatter/js-eth-personal-sign-example

这证实了我对web3.personal不是一个标准的怀疑。有些客户在模仿其他客户的做法。这意味着你不能假设它在任何地方都会以同样的方式进行。

Web3.js v0与v1在

中的比较

松露最近提到web3.js的释放说明是:

3.4.6 ..。内部:我们现在使用的是web3 v0.20.1

因此,您必须使用v0 web3.js实现web3.eth.sign,直到它们更新到v1为止。V1还在测试阶段,所以它可能不会马上发生。

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

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

复制
相关文章

相似问题

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