web3 创建以太坊账户问题
发布于 3 个月前 作者 greatyaqi 426 次浏览 来自 新手入门

我现在写了一个后台服务,想在服务里面用web3js创建账户,

	let account=web3.eth.accounts.create();
    let address = account.address;
    let info = web3.eth.accounts.encrypt(address, '12345678')\n```
	
	
输出的info是
```js\n { version: 3,
  id: 'e4abdc79-2c5c-4f47-874f-c74403ff7d8c',
  address: '7fccd2a5584b3f76e6f5dd3349443c8d5d93cdfd',
  crypto: 
   { ciphertext: '71aa55db6af15789d31ab5a47da2ff696010ea3b',
     cipherparams: { iv: '44a8010cf34a2001f09a03df4d7d69cb' },
     cipher: 'aes-128-ctr',
     kdf: 'scrypt',
     kdfparams: 
      { dklen: 32,
        salt: 'a848dabbd42c35169f24958f6a63abf5e5f4c25f465d191600c248a5efb4020e',
        n: 8192,
        r: 8,
        p: 1 },
     mac: '3a5abe9eb9d4da16b5d13fa82c8c4857b73d382e7c17e2509a7948a7f54c397f' } } \n```
	 
	 
	 现在的问题是 我用geth在命名行看不到这个账户。我知道怎么用geth在命名行创建账户,我现在就是想通过web3js来创建账户。请大神解惑!
9 回复

姿势不对,看下面这个

curl -X POST --data '{"jsonrpc":"2.0","method":"personal_newAccount","params":["passowrd"],"id":74}' http://localhost:8545

你可以用你想用的语言,发一个post请求,参数和上面的一样即可

@路人-戊 看懂了,这是一种方式,有几个问题想请教下:

  1. “method”:“personal_newAccount” 这个方法的从哪里查到的
  2. 这个方法是我查询web3的文档的 https://web3js.readthedocs.io/en/1.0/web3-eth-accounts.html#create, 但是不知道为什么查询不到创建的帐号。程序也没报错

@greatyaqi 1、可以查官方的JSON-RPC文档,我是在这看到的 https://ethereum.stackexchange.com/questions/15801/generate-new-address-in-etherum-node-using-json-rpc/15802 2、你看的没错,但是问题在于它只是帮你创建了一个账户,但是并没有导入到你的geth节点中,如果你想在geth console里面看到这个账户,那必须把私钥放到keystore目录下

@路人-戊 额。看懂了。我来看看怎么用web3创建个账户吧,谢谢

文档有个方法可以。我没注意看。

web3.eth.personal.newAccount(password, [callback])

@greatyaqi 楼主有解决这个问题吗,可以上代码吗

将返回的json数据写到文件中,放到私链上的keystore文件夹下试试。文件命名参照keystore其他文件格式。

@greatyaqi @VickyYH @路人-戊 为什么我在console中使用 web3.eth.accounts.create();会出现下面这个问题 TypeError: ‘create’ is not a function at <anonymous>:1:1 是我没有导入最新的web3 吗?我发现好多api都没有,比如这些:

Screenshot from 2017-12-07 19:36:28.png

回到顶部