我正在尝试使用官方的Ripple Api,ripple-lib创建纸质钱包。
generateAddress()接受一些参数。
'use strict';
const RippleAPI = require('ripple-lib').RippleAPI;
const api = new RippleAPI({
server: 'wss://s1.ripple.com' // Public rippled server
});
api.connect().then(() => {
return api.generateAddress();
}).then(info => {
console.log(info);
console.log('getAccountInfo done');
/* end custom code -------------------------------------- */
}).then(() => {
return api.disconnect();
}).then(() => {
console.log('done and disconnected.');
}).catch(console.error);
此代码实际上创建了一个密钥和一个"地址"。
{
secret: 'sheWb..................HRyLhk',
address: 'rNLJ.......................qu3nbb'
}
确定。现在我创建了我的帐户。如果我用20XRP储备资助它,它将成为一个活跃的Ripple账户。耶!
但我不明白:
愿任何人对这些担忧有所了解吗?
修改
我现在认为传递给generateAddress()
的选项对象是传递给此处描述的构造函数RippleApi()
的相同选项参数https://ripple.com/build/rippleapi/#parameters任何人都可以确认这一点吗?
答案 0 :(得分:1)
对于纸质钱包,您只需要地址(公开)和秘密(私人):
https://github.com/Bithomp/xrp-paper-wallet
实际上,只有秘密就足够了,因为你可以从秘密获得地址。
https://github.com/Bithomp/bithomp-tools
在Ripple中,您不必为每个新订单/用户使用新帐户。对于每笔新交易,您都可以使用目标代码。这就是您如何识别客户/订单。 Ripple还支持按键旋转,因此如果主密钥被暴露,您可以禁用它并使用常规密钥。在最佳实践中,您可以分配常规密钥并使用它来在线签署交易,并且主密钥始终处于脱机状态。如果普通密钥被暴露,您可以用新的常规密钥替换它。
在涟漪中,您可以使用密钥对(公钥+私钥)或密钥对交易进行签名。
你可以在https://iancoleman.io/bip39/
获得涟漪的密钥对 ripple-lib的generateAddress()
为您提供:
1)涟漪地址(您的公开地址)以r
您可以分享,它可以用来向您发送付款。 您可以在资源管理器中搜索公共地址。
例如:https://bithomp.com/explorer/r9fVvKgMMPkBHQ3n28sifxi22zKphwkf8u
2)密码 - 主密钥,用于签署交易。
3)您还可以指定常规密钥(https://developers.ripple.com/assign-a-regular-key-pair.html)
选项只有两个参数:
算法字符串,用于生成地址的数字签名算法。可以是ecdsa-secp256k1(默认)或ed25519。
entropy array \ integer,用于生成种子的熵。
答案 1 :(得分:1)
generateAddress()方法接受三个参数。描述 此处:https://ripple.com/build/rippleapi/#generateaddress但我不知道 了解如何编写这些参数。我对此很感兴趣 因为我认为在第一个参数中,“选项”对象是 我可以在其中定义密钥的密码。也许我是 错误的。
以下是一些JavaScript代码,用于演示将熵输入到 generateAddress 方法中。
// This functions works on modern browswers, not sure about Node.js. Try https://www.npmjs.com/package/js-sha512 or https://nodejs.org/api/crypto.html
async function fun_SHA512_array(entropy) {
'use strict';
// Turns a string into an array of integers.
// Made possible by https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
const msgUint8 = new TextEncoder().encode(entropy); // encode as (utf-8) Uint8Array
const hashBuffer = await crypto.subtle.digest('SHA-512', msgUint8); // hash the message
const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array
// const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string
return hashArray;
}
const str_entropy = "Use a cryptographically strong, randomly created string of characters here.";
// Or, your passphrase string would go here.
// Or, you could use a BIP39 Mnemonic but you'd have to remember how you constructed the string. e.g. Did you separate the words with a comma or with a space?
// Or, on the linux terminal you can use: openssl rand -base64 n
// Where n = the number of characters you wish to randomly generate. Which are then converted to base64, therefore the amount of characters ends up being more than n.
var array_sha512 = [];
fun_SHA512_array(str_entropy).then(array_sha512 => {
var obj_new_account = api.generateAddress({"entropy": array_sha512});
var str_secret = obj_new_account.secret;
var str_public_address = obj_new_account.address;
console.log(str_secret);
console.log(str_public_address);
});
请记住,熵就像种子一样,并且总是会生成相同的秘密和地址。