主页 > 以太坊钱包imtoken安装 > Nodejs 比特币开发教程:创建比特币钱包
Nodejs 比特币开发教程:创建比特币钱包
基于 Mixin 网络的 Nodejs 比特币开发教程:创建比特币钱包
我们创建了一个响应消息的机器人和一个自动支付比特币的机器人。
通过本教程比特币提现手续费贵,您可以学习以下内容
如何创建比特币钱包。
如何读取比特币钱包的余额。
如何用比特币付款并获得即时确认。
如何将 Mixin Network 比特币提取到您的冷钱包或第三方交易所。
前期准备:你必须有一个 Mixin Network 账号。以下代码创建一个帐户并将其写入 csv 文件。
console.log("create wallet ...."); const { generateKeyPairSync } = require('crypto'); const { publicKey, privateKey } = generateKeyPairSync('rsa', { modulusLength: 1024, // the length of your key in bits publicKeyEncoding: { type: 'spki', // recommended to be 'spki' by the Node.js docs format: 'pem' }, privateKeyEncoding: { type: 'pkcs1', // recommended to be 'pkcs8' by the Node.js docs format: 'pem', //cipher: 'aes-256-cbc', // *optional* //passphrase: 'top secret' // *optional* } }); publicKey1 = publicKey.replace("-----BEGIN PUBLIC KEY-----",""); publicKey2 = publicKey1.replace("-----END PUBLIC KEY-----",""); publicKey3 = publicKey2.replace(/\r?\n|\r/g, ""); console.log(publicKey); console.log(publicKey3); (async () => { const info = await clientBot.createUser({full_name : "nodejs bitcoin wallet", session_secret: publicKey3, });
上面的语句会在本地创建一个RSA密钥对,然后调用Mixin Network创建一个账户,最后把账户信息保存到一个csv文件中。
p>
let aesKey = ''; const privateKeyBytes = pem.decode(Buffer.from(privateKey)); const aesKeyBuffer = await oaepDecrypt( Buffer.from(info.pin_token, 'base64'), privateKeyBytes, 'SHA-256', Buffer.from(info.session_id) ); aesKey = Buffer.from(aesKeyBuffer).toString('base64'); console.log(aesKey); var csvStream = csv.createWriteStream({headers: false, ignoreEmpty: true}), writableStream = fs.createWriteStream(WalletName, {flags: 'a'}); writableStream.on("finish", function(){ console.log("Bitcoin wallet DONE!"); }); csvStream.pipe(writableStream); csvStream.write({a: privateKey, b: info.pin_token, c: info.session_id, d: info.user_id, e: "123456"} ); csvStream.end(); fs.appendFile(WalletName, require("os").EOL, function(){}); const newUserConfig = {clientId: info.user_id, aesKey: aesKey, privateKey: privateKey, sessionId: info.session_id, clientSecret: "do not need", assetPin: "123456"}; console.log(newUserConfig); const newUserClient = new HttpClient(newUserConfig); var info2 = await newUserClient.updatePin({oldPin : "", newPin: "123456", }); console.log(info2); const verifyPin = await newUserClient.verifyPin("123456"); console.log({ verifyPin });
现在您需要妥善保管您的账户信息,您在读取账户的比特币资产余额或进行其他操作时会用到这些信息。
为新创建的帐户创建一个比特币钱包
新账户默认没有内置比特币钱包。现在读取比特币余额来创建一个比特币钱包。
const assetInfo = await newUserClient.getUserAsset(BTC_ASSET_ID); console.log("Bitcoin address is ", assetInfo.public_key); console.log("Bitcoin balance is ", assetInfo.balance); console.log("Bitcoin price is (USD) ", assetInfo.price_usd);
所创建账户的比特币资产详情如下,其中公钥为比特币存款地址:
Make your choose(select the uuid for open the specified wallet): 0b10471b-1aed-3944-9eda-5ab947562761 You select the : 0b10471b-1aed-3944-9eda-5ab947562761 You select the wallet 0b10471b-1aed-3944-9eda-5ab947562761 ? Make your choose 1: Read Bitcoin Balance & Address You choice to : { type: '1: Read Bitcoin Balance & Address' } You wallet is : 0b10471b-1aed-3944-9eda-5ab947562761 Bitcoin address is 15MySY7UnA827TRMQWuCKGiogCYXUmt21M Bitcoin balance is 0 Bitcoin price is (USD) 5029.59915767 You select the : 0b10471b-1aed-3944-9eda-5ab947562761 You select the wallet 0b10471b-1aed-3944-9eda-5ab947562761
这个API可以提供一些比特币相关的信息:
存款地址:[public_key]
徽标:[icon_url]
p>
资产名称:[名称]
Mixin Network 中的资产 uuid:[asset_key]
兑美元的价格(由 Coinmarketcap.com 提供):[price_usd]
存币时确认的区块数:[confirmations]
比特币私钥呢?
比特币的私钥呢?这个私钥是由 Mixin Network 通过多重签名保护的,所以它对用户是不可见的。比特币资产的提现和转移需要用户提供正确的RSA签名、PIN码和会话密钥才能完成。
不只是比特币,还有以太坊、EOS等
此账号不仅支持比特币,还支持以太坊、EOS等,区块链支持的完整列表。该账号还支持所有ERC20代币,支持EOS代币。
创建其他钱包的过程与创建比特币钱包相同,只需读取对应的资产余额即可。
Mixin Network 目前支持的加密货币(2019-02-19)mixin Network 中的cryptouuid
EOS
6cfe566e-4aad-470b-8c9a-2fd35b49c68d
CNB
965e5c6e-434c-3fa9-b780-c50f43cd955c
比特币
c6d0c728-2624-429b-8e0d-d9d19b6592fa
ETC
2204c1ee-0ea2-4add-bb9a-b3719cfff93a
瑞波币
23dfb5a5-5d7b-48b6-905f-3970e3176e27
XEM
27921032-f73e-434e-955f-43d55672ee31p>
以太币
43d61dcd-e413-450d-80b8-101d5e903357
冲刺
6472e7e3-75fd-48b6-b1dc-28d294ee1476
狗狗
6770a1e5-6086-44d5-b60f-545f9d9e8ffd
LTC
76c802a2-7c88-447f-a93e-c29c9e5dd9c8
SC
990c4c29-57e9-48f6-9819-7d986ea44985
禅
a2c5d22b-62a2-4c13-b3f0-013290dbac60
ZEC
c996abc9-d94e-4494-b 1cf-2a3fd3ac5714
BCH
fd11b6e3-0b87-41f1-a41f-f0e9b49e5bf0
EOS的充值地址与其他币种有些不同,它由两部分组成:account_name和account tag,如果你将EOS充值到Mixin Network,你需要填写两条数据:account name是eoswithmixin,在备注中输入你的account_tag比特币提现手续费贵,如0aa2b00fad2c69059ca1b50de2b45569.
EOS资产余额的返回结果如下:
Make your choose 3: Read EOS Balance & Address You choice to : { type: '3: Read EOS Balance & Address' } You wallet is : 0b10471b-1aed-3944-9eda-5ab947562761 EOS account name is eoswithmixin tag is 30f0c36057b9b22151173b309bd0d79c EOS balance is 0 EOS price is (USD) 5.26225922 You select the : 0b10471b-1aed-3944-9eda-5ab947562761 You select the wallet 0b10471b-1aed-3944-9eda-5ab947562761
存入比特币并读取比特币余额
现在,您可以将比特币发送到已存入硬币的钱包中。
当然,在比特币网络中,交易费用是相当昂贵的。费用中位数为 0.001BTC。按照目前4000美元的价格,在4美元左右。一个方便的方法,如果你有一个带有比特币的 Mixin Messenger 账户,你可以直接将比特币提取到新创建账户的比特币充值地址,它们在同一个 Mixin Network 网络中,手续费为 0,1 秒记账。
以下代码可以读取比特币钱包的余额。
const assetInfo = await newUserClient.getUserAsset(BTC_ASSET_ID); console.log("Bitcoin address is ", assetInfo.public_key); console.log("Bitcoin balance is ", assetInfo.balance); console.log("Bitcoin price is (USD) ", assetInfo.price_usd);
mixin网络免费,即时确认
任何币种在 Mixin 网络内的交易都是免费的,会立即到账。
前期准备:账号已设置PIN
对于新创建的账号,我们通过updatePin设置一个新的PIN码,代码如下:
var info2 = await newUserClient.updatePin({oldPin : "", newPin: "123456", }); console.log(info2); const verifyPin = await newUserClient.verifyPin("123456"); console.log({ verifyPin });@ >
Mixin Network 账户之间的比特币支付
通过 Mixin Messenger,我们可以先将比特币转给机器人,然后再让机器人转钱给新用户。
const assetInfo = await newUserClient.getUserAsset(EOS_ASSET_ID); console.log("The Wallet 's EOS balance is ", assetInfo.balance); if ( assetInfo.balance > 0 ) { const Obj = { assetId: BTC_ASSET_ID, recipientId: MASTER_UUID, traceId: newUserClient.getUUID(), amount: assetInfo.balance, memo: '', }; console.log(Obj); newUserClient.transferFromBot(Obj); }
读取比特币余额,确认比特币是否转账成功!请注意,newUserClient 是针对新用户的。
const assetInfo = await newUserClient.getUserAsset(BTC_ASSET_ID); console.log("Bitcoin address is ", assetInfo.public_key); console.log("Bitcoin balance is ", assetInfo.balance);
如何将比特币存入您的冷钱包或第三方交易所
如果您希望将比特币存入您的冷钱包或第三方交易所,您必须先在第三方交易所获取冷钱包或您的钱包地址,然后将钱包地址提交给 Mixin Network。
重点提醒:提现需要支付续费,准备好比特币包地址!
将目标钱包地址添加到 Mixin Network
调用createAddress API,会返回address_id,用于下次提现操作。
const withdrawAddress = await newUserClient.createWithdrawAddress({ assetId: BTC_ASSET_ID, label: 'BTC withdraw', publicKey: BTC_WALLET_ADDR, });
这里的14T129GTbXXPGXXvZzVaNLRFPeHXD1C25C是一个比特币钱包地址,如下图,提现手续费为0.0025738 BTC,address_id为“345855b5-56a5 -4f3b-ba9e-d99601ef86c1”。
Make your choose 9: BTC withdraw You choice to : { type: '9: BTC withdraw' } You wallet is : 0b10471b-1aed-3944-9eda-5ab947562761 { type: 'address', address_id: 'a513da38-a18a-4536-abe4-d1c29ca3a1a8', asset_id: 'c6d0c728-2624-429b-8e0d-d9d19b6592fa', public_key: '14T129GTbXXPGXXvZzVaNLRFPeHXD1C25C', label: 'BTC withdraw', account_name: '', account_tag: '', fee: '0.00212232', reserve: '0', dust: '0.0001', updated_at: '2019-04-04T02:20:42.552274992Z' } ? Input you BTC amount:
提现地址创建成功后,可以通过readAddress读取最新的提现费用。
const addressList = await newUserClient.getWithdrawAddress(BTC_ASSET_ID); console.log(addressList);
提交提现请求,Mixin Network 将立即处理提现请求。
向 Mixin Network 提交提现请求,withdrawAddress.address_id 为 createAddress 创建。
console.log(withdrawAddress); const prompts = [ { name: 'amount', type: 'input', message: "Input you BTC amount: ", }, ]; const answers = await inquirer.prompt(prompts); console.log(answers); const withdrawResult = await newUserClient.withdraw({ addressId: withdrawAddress.address_id, assetId: BTC_ASSET_ID, amount: answers.amount, memo: 'withdraw by nodejs', }); console.log(withdrawResult);
您可以通过区块链探索查看进度。
完整的代码在这里
文章来源:segmentfault,作者:Mixin_Network。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:sean.li#ucloud.cn(邮箱中#请改为@)进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。@ >
后台-系统设置-扩展变量-移动广告-正文底部