youchain-you-personal

youchain.you.personal 这个模块可以管理 youchain 上的节点账户。

newAccount

描述:在网络节点通过 RPC 方法创建一个账户

注意:尽量避免使用不安全的 Websocket 或 HTTP 连接传送数据,以保证密码安全。

参数值:password - String 账户的加密密码

返回值:Promise - 新创建的地址

youchain.you.personal.newAccount(password, [callback])

示例:

youchain.you.personal.newAccount('!@superpassword').then(console.log);
> '0x1234567891011121314151617181920212223456'

sign

描述:用一个特定账户签名数据

注意:通过非安全的 HTTP RPC 连接发送密码极为不安全。

参数值:

  • String 需要签名的数据
  • String 签名账户地址
  • String 签名账户密码
  • Callback 可选项,返回失败作为第一个参数,结果为第二个参数

返回值:Promise - 签名后的字符串

youchain.you.personal.sign(dataToSign, address, password [, callback])

示例:

youchain.you.personal.sign("Hello world", "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", "test password!")
.then(console.log);

>"0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400"

ecRecover

描述:用一个特定账户签名数据

注意: "通过非安全的 HTTP RPC 连接发送密码极为不安全。

参数值:

  • String - 签名后的数据
  • String - 签名账户密码
  • Callback - 可选参数,失败返回作为第一个参数,结果为第二个参数

返回值:Promise 账户

youchain.you.personal.ecRecover(dataThatWasSigned, signature [, callback])

示例:

youchain.you.personal.ecRecover("Hello world", "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400")
.then(console.log);
> "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe"

signTransaction

描述:签名交易

注意:通过非安全的 HTTP RPC 连接发送密码极为不安全。

参数值:

  • Object 交易对象
  • String 交易发出账户的密码
  • Callback 可选项,失败返回作为第一个参数,结果为第二个参数

返回值:Promise - 签名后的交易

youchain.you.personal.signTransaction(transaction, password [, callback])

示例:

youchain.you.personal.signTransaction({
    from: "0xEB014f8c8B418Db6b45774c326A0E64C78914dC0",
    gasPrice: "20000000000",
    gas: "21000",
    to: '0x3535353535353535353535353535353535353535',
    value: "1000000000000000000",
    data: ""
}, 'MyPassword!').then(console.log);

> {
    raw: '0xf86c808504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a04f4c17305743700648bc4f6cd3038ec6f6af0df73e31757007b7f59df7bee88da07e1941b264348e80c78c4027afc65a87b0a5e43e86742b8ca0823584c6788fd0',
    tx: {
        nonce: '0x0',
        gasPrice: '0x4a817c800',
        gas: '0x5208',
        to: '0x3535353535353535353535353535353535353535',
        value: '0xde0b6b3a7640000',
        input: '0x',
        v: '0x25',
        r: '0x4f4c17305743700648bc4f6cd3038ec6f6af0df73e31757007b7f59df7bee88d',
        s: '0x7e1941b264348e80c78c4027afc65a87b0a5e43e86742b8ca0823584c6788fd0',
        hash: '0xda3be87732110de6c1354c83770aae630ede9ac308d9f7b399ecfba23d923384'
    }
}

sendTransaction

描述:发送交易

注意:通过非安全的 HTTP RPC 连接发送密码极为不安全。

参数值:

  • Object - 交易数据
  • String - 当前账户的密码
  • Callback - 可选参数,失败返回作为第一个参数,结果为第二个参数

返回值:Promise - 交易哈希值

youchain.you.personal.sendTransaction(transactionOptions, password [, callback])

示例:

youchain.you.personal.sendTransaction({
    from: "0xEB014f8c8B418Db6b45774c326A0E64C78914dC0",
    gasPrice: "20000000000",
    gas: "21000",
    to: '0x3535353535353535353535353535353535353535',
    value: "1000000000000000000",
    data: ""
}, 'MyPassword!')
.then(console.log);

> '0xda3be87732110de6c1354c83770aae630ede9ac308d9f7b399ecfba23d923384'

unlockAccount

描述:解锁账户

注意:通过非安全的 HTTP RPC 连接发送密码极为不安全。

参数值:

  • address - String 解锁账户地址
  • password - String 解锁账户密码
  • unlockDuration - Number 解锁时长
  • Callback - 可选参数,失败返回作为第一个参数,成功返回作为第二个参数

返回值:Promise - 解锁账户是否成功

youchain.you.personal.unlockAccount(address, password, unlockDuraction [, callback])

示例:

youchain.you.personal.unlockAccount("0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", "test password!", 600)
.then(console.log('Account unlocked!'));

> "Account unlocked!"

lockAccount

描述:锁定账户

参数值:address - String 解锁账户地址

返回值:Promise - 锁定是否成功

youchain.you.personal.lockAccount(address [, callback])

示例:

youchain.you.personal.lockAccount("0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe")
.then(console.log('Account locked!'));

> "Account locked!"

getAccounts

描述:通过 RPC 方法获取此节点控制的账户

注意:通过非安全的 HTTP RPC 连接发送密码极为不安全。

返回值:Promise - 节点控制的账户

youchain.you.personal.getAccounts([callback])

示例:

youchain.you.personal.getAccounts().then(console.log);
> ["0x9AC3a0641e0C54441e23ee469e34Aa59dD9aBEF1", "0xDCc6960376d6C6dEa93647383FfB245CfCed97Cf"]

importRawKey

描述:通过私钥导入账户

注意:通过非安全的 HTTP RPC 连接发送密码极为不安全。"

参数值:

  • privateKey - String 账户的私钥
  • password - String 账户的密码

返回值:Promise 导入账户的地址

youchain.you.personal.importRawKey(privateKey, password)

示例:

youchain.you.personal.importRawKey("cd3376bb711cb332ee3fb2ca04c6a8b9f70c316fcdf7a1f44ef4c7999483295e", "password1234")
.then(console.log);

> "0x8f337bf484b2fc75e4b0436645dcc226ee2ac531"

newValKeyMethod

描述:创建新的验证者并导入密码

参数值

参数名 类型 描述
password string 验证者账户密码

返回值

参数名 数据类型 备注
address string 验证者账户地址
mainPubKey string 共识公钥
blsPubKey number BLS 公钥

示例:

youchain.you.personal.newValKeyMethod("password").then(result => {
    console.log('validator address: ', result.address);
    console.log('validator mainPubKey: ', result.mainPubKey);
    console.log('validator blsPubKey: ', result.blsPubKey);
});

useValKeyMethod

描述:设置本地挖矿所用的密钥。密钥需已在本地存储。参数 keep 为 true 时,记录所用的 key,使得节点重启后能自动进行挖矿。最多只记住一个 validator key!

参数值

参数名 数据类型 备注
address string 验证者账户地址
password string 初始 valKey 密码
keep bool 返回 true 时,记录所用的 key,使得节点重启后能自动进行挖矿

返回值

数据类型 备注
null 返回 null,否则返回失败 message 和 code

示例:

youchain.you.personal.useValKeyMethod("0x627Eb2f317aD57f09bb229942E670d9cb52C260C", "password", true).then(console.log);

lockValKeyMethod

描述:删除本地存储的验证者私钥(如果之前通过 keep 参数记录了明文密钥,也一并删除)

参数值

返回值

数据类型 备注
null 返回 null,否则返回失败 message 和 code

示例:

youchain.you.personal.lockValKeyMethod().then(console.log);

exportValKeyMethod

描述:使用初始 valKey 密码导出验证者私钥并设置新密码。

参数值

参数名 数据类型 备注
address string 验证者账户地址
password string 初始 valKey 密码,即使用 newValKeyMethod 创建时的密码
encryptPassword string 导出 valKey 时设置的新密码

返回值

参数名 数据类型 备注
privateKey string 返回验证者私钥,否则返回失败 message 和 code

示例:

youchain.you.personal.exportValKeyMethod("0x627Eb2f317aD57f09bb229942E670d9cb52C260C", "123456", "Ta123456").then(console.log);

importValKeyMethod

描述:导入验证者私钥,使用新的加密密码重新加密后存储在本地。

参数值

参数名 数据类型 备注
privateKey string 使用 exportValKeyMethod 导出的验证者私钥
password string 使用 exportValKeyMethod 导出时设置的密码
encryptPassword string 重新设置 valKey 密码

返回值

参数名 数据类型 备注
address string 验证者账户地址
mainPubKey string 共识公钥
blsPubKey string BLS 公钥

示例:

youchain.you.personal.importValKeyMethod("0x7b2261646472657373223a2236323765623266333137616435376630396262323239393432653637306439636235326332363063222c2263727970746f223a7b22636970686572223a226165732d3132382d637472222c2263697068657274657874223a223531323730303936303436396137643831613930343435623161363961363436623539316532313338616132396561386131633461313634663938633637656539653864663233363861343935393663613834396531653836646435366631343839636131373833626363643434663331316236373532613430383162333336222c22636970686572706172616d73223a7b226976223a223131353735396235303137643366376663366438656565316431313136356534227d2c226b6466223a22736372797074222c226b6466706172616d73223a7b22646b6c656e223a33322c226e223a3236323134342c2270223a312c2272223a382c2273616c74223a2237633437343231383261646263316636646637323434323230646366346230633333653837373536623066643165643437616530316266643063326539626631227d2c226d6163223a2231323831363262363565373230663966616261373635643034656136323836316437666433356636623362353463646337656536366633633136396537616663227d2c226964223a2231656536663136632d383833372d313165612d616636332d613435653630656661383935222c2276657273696f6e223a337d", "password", "newPassword").then(console.log);

delValKeyMethod

描述:删除本地存储的验证者私钥。

参数值

参数名 数据类型 备注
address string 验证者账户地址
password string 初始 valKey 密码

返回值

参数名 数据类型 备注
null 返回 null,否则返回失败 message 和 code

示例:

youchain.you.personal.delValKeyMethod("0x627Eb2f317aD57f09bb229942E670d9cb52C260C", "newPassword").then(console.log);