web3.eth.accounts.create 和 web3.eth.personal.newAccount 有什么区别
What is the difference between web3.eth.accounts.create and web3.eth.personal.newAccount
据我所知,在使用 web3.eth.accounts.create() 时,它不会将帐户添加到链中(我正在使用 ganache-cli 进行测试),但 web3.eth.personal.newAccount() 会。
这是主要目的还是错误?
还有其他区别吗?
web3.js 版本:1.0.0-beta.34
两个版本都在区块链上创建了一个新账户。不同之处在于您与节点交互的方式以及访问私钥的方式。如果你有一个本地节点,你可以使用 web3.eth.accounts.create
这将创建帐户并为你提供访问私钥生成的权限,以便它可以存储在本地。但是,由于通过连接返回私钥并不安全,如果您通过像 Infura 这样的提供商连接,则永远不要使用这种方法来创建帐户。
另一方面,您可以使用web3.eth.personal
在远程节点上创建一个新帐户。在这种情况下,私钥不会返回给您,因此您在访问您的帐户时会失去一些灵活性。当您没有私钥时,您无法在本地签署交易。为了 运行 交易,您必须在远程节点上调用 unlockAccount
。请注意,您必须使用 web3.eth.personal
将密码发送到 create/unlock 您的帐户,因此您仍然需要确保使用安全连接。
查看此 Medium blog post 以获取更多信息。
据我所知,在使用 web3.eth.accounts.create() 时,它不会将帐户添加到链中(我正在使用 ganache-cli 进行测试),但 web3.eth.personal.newAccount() 会。
这是主要目的还是错误? 还有其他区别吗?
web3.js 版本:1.0.0-beta.34
两个版本都在区块链上创建了一个新账户。不同之处在于您与节点交互的方式以及访问私钥的方式。如果你有一个本地节点,你可以使用 web3.eth.accounts.create
这将创建帐户并为你提供访问私钥生成的权限,以便它可以存储在本地。但是,由于通过连接返回私钥并不安全,如果您通过像 Infura 这样的提供商连接,则永远不要使用这种方法来创建帐户。
另一方面,您可以使用web3.eth.personal
在远程节点上创建一个新帐户。在这种情况下,私钥不会返回给您,因此您在访问您的帐户时会失去一些灵活性。当您没有私钥时,您无法在本地签署交易。为了 运行 交易,您必须在远程节点上调用 unlockAccount
。请注意,您必须使用 web3.eth.personal
将密码发送到 create/unlock 您的帐户,因此您仍然需要确保使用安全连接。
查看此 Medium blog post 以获取更多信息。