我正在运行以下代码:
import React, { Component } from "react";
import logo from "./logo.svg";
import "./App.css";
import sotez from "sotez";
class App extends Component {
state = {
pkh: "",
mnemonic: "",
sk: ""
};
async componentDidMount() {
await this.main();
}
main = async () => {
const password = "yanterzzz";
await sotez.node
.query("/chains/main/blocks/head")
.then(response => console.log(response));
const result = await sotez.crypto.generateMnemonic();
const answer = await sotez.crypto.generateKeys(result, password);
console.log(answer.mnemonic);
this.setState({ mnemonic: answer.mnemonic });
this.setState({ sk: answer.sk });
this.setState({ pkh: answer.pkh });
};
}
它可以工作一段时间并正确生成密钥,但是最终我最终会遇到此错误:
Unhandled Rejection (TypeError): library.sodium.crypto_sign_seed_keypair is not a function
我的问题是React和组件重载还是libsodium库的问题?
答案 0 :(得分:0)
因此,可能发生的情况是,用于var age = 15;
function whichSchool(age) {
return (age < 13) ? "Elementary School"
: (age >= 13 && age <= 18) ? "Secondary School"
: "University"
}
console.log(whichSchool(15))
的伪随机数生成器需要从熵池中进行播种。通常,此池在可用时会自动用信息更新。 RNG在决定有必要播种之前只会输出特定数量的数据。
与其阻塞并等待自动播种,不如进行显式调用以尽快检索熵。但是,此特定调用在运行时中不可用,并且那时程序将由于给定的错误而崩溃。通常,除非在紧密循环中检索随机值,否则永远不会产生错误。
密钥对的生成至少需要与密钥大小一样多的高质量随机数据,因此这是导致系统用尽熵的已知原因之一。