摘要:下面的代碼,可以讀取比特幣錢包余額網內免手續費的,并且即時確認任何幣在內部的交易,都是無手續費的,并且立刻到賬。
基于Mixin Network的 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(/ ? | /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文件.
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);
創建的帳號的比特幣資產詳細信息如下,其中public key就是比特幣的存幣地址:
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]
Logo: [icon_url]
資產名字:[name]
資產在Mixin Network的uuid: [asset_key]
對美元的價格(Coinmarketcap.com提供): [price_usd]
存幣時確認的區塊數量:[confirmations]
比特幣私鑰呢?比特幣的私鑰呢?這個私鑰被Mixin Network通過多重簽名保護,所以對用戶來說是不可見的,比特幣資產的提現和轉賬都需要用戶提供正確的的RSA簽名,PIN代碼與會話密鑰才能完成.
不只是比特幣,還有以太坊,EOS等這個帳號不只支持比特幣,還支持以太坊,EOS等, 完整的區塊鏈支持列表. 這個賬戶同時也支持所有的 ERC20 代幣與 EOS 代幣.
創建其它的幣的錢包與創建比特幣錢包過程一樣,讀對應的資產余額就可以.
Mixin Network 當前支持的加密貨幣 (2019-02-19)crypto | uuid in Mixin Network |
---|---|
EOS | 6cfe566e-4aad-470b-8c9a-2fd35b49c68d |
CNB | 965e5c6e-434c-3fa9-b780-c50f43cd955c |
BTC | c6d0c728-2624-429b-8e0d-d9d19b6592fa |
ETC | 2204c1ee-0ea2-4add-bb9a-b3719cfff93a |
XRP | 23dfb5a5-5d7b-48b6-905f-3970e3176e27 |
XEM | 27921032-f73e-434e-955f-43d55672ee31 |
ETH | 43d61dcd-e413-450d-80b8-101d5e903357 |
DASH | 6472e7e3-75fd-48b6-b1dc-28d294ee1476 |
DOGE | 6770a1e5-6086-44d5-b60f-545f9d9e8ffd |
LTC | 76c802a2-7c88-447f-a93e-c29c9e5dd9c8 |
SC | 990c4c29-57e9-48f6-9819-7d986ea44985 |
ZEN | a2c5d22b-62a2-4c13-b3f0-013290dbac60 |
ZEC | c996abc9-d94e-4494-b1cf-2a3fd3ac5714 |
BCH | fd11b6e3-0b87-41f1-a41f-f0e9b49e5bf0 |
EOS的存幣地址與其它的幣有些不同,它由兩部分組成: account_name and account tag, 如果你向Mixin Network存入EOS,你需要填兩項數據: 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 Network網內免手續費的,并且即時確認
任何幣在Mixin Network內部的交易,都是無手續費的,并且立刻到賬。
前期準備: 賬戶設置了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); }
讀取Bitcoin的余額,來確認比特幣是不是轉成功了! 注意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,下一步的提現操作會用到這個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);可以通過blockchain explore來查看進度.
完整的代碼在這兒
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24638.html
摘要:是企業與區塊鏈相遇的地方。的框架旨在成為開發區塊鏈解決方案的支柱。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。 如果你想將區塊鏈合并到一個Java項目中,現在我們來看看就是這個細分領域中三個最大的OSS玩家。 好的伙計們,我們都聽說過比特幣,以太坊或其他加密貨幣,其中有一些時髦的名字圍繞著我們常見的新聞,但我們作為Java開發人員知道如何輕松地與這些區塊鏈技術進行交互嗎?以...
摘要:我們目前正處于一個新興的區塊鏈開發行業中。,一種在以太坊開發人員中流行的新的簡單編程語言,因為它是用于開發以太坊智能合約的語言。它是全球至少萬開發人員使用的世界上最流行的編程語言之一。以太坊,主要是針對工程師使用進行區塊鏈以太坊開發的詳解。 我們目前正處于一個新興的區塊鏈開發行業中。區塊鏈技術處于初期階段,然而這種顛覆性技術已經成功地風靡全球,并且最近經歷了一場與眾不同的繁榮。由于許多...
摘要:本文解釋了比特幣交易的內容,目的和結果。本文底部的信息圖提供了從錢包到區塊鏈的整個比特幣交易流程的全面說明。在文本中使用的任何地方是比特幣交易的縮寫。目的比特幣交易的目的是將一定數量的比特幣的所有權轉移到比特幣地址。 本文解釋了比特幣交易的內容,目的和結果。下面的解釋適用于新手和中級比特幣用戶。 作為加密貨幣用戶,你需要熟悉交易雛形——為了你對這種不斷發展的創新有信心,以及作為理解新興...
摘要:完整的步驟如下檢查比特幣或的余額,錢包地址。比特幣的到帳時間是個區塊的高度,約分鐘。 通過 Nodejs 買賣Bitcoin showImg(https://segmentfault.com/img/remote/1460000018771566?w=1200&h=659); Github Repo 方案一: 通過ExinCore API進行幣幣交易 Exincore 提供了基于Mix...
摘要:比特幣區塊鏈無疑是當今業界的最熱門的。目前,每個成功的礦工獲得可能每年更換一次或通過比特幣社區決策作為成功向區塊鏈添加一塊交易的獎勵。填寫其他詳細信息,例如比特幣金額和可選說明。 比特幣區塊鏈無疑是當今業界的最熱門的。通過這篇博客,我將盡力向大家介紹加密貨幣比特幣的概念,以及它如何創造我們稱之為區塊鏈的革命性技術。 這個問題經常引起混淆。這篇文章可以快速解釋和清理這方面的混亂! 什么是...
閱讀 2993·2021-10-13 09:39
閱讀 2693·2021-09-27 13:34
閱讀 2030·2019-08-30 15:55
閱讀 3259·2019-08-30 15:43
閱讀 3630·2019-08-30 11:16
閱讀 1748·2019-08-26 18:28
閱讀 1282·2019-08-26 13:56
閱讀 913·2019-08-26 13:35