成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript編寫自己的比特幣交易代碼

lolomaco / 2795人閱讀

摘要:今天我們將編寫第一個比特幣交易代碼。是一個為軟件和腳本測試而創(chuàng)建的比特幣網(wǎng)絡(luò)。最終的解決方案應(yīng)該是擁有自己的比特幣全節(jié)點。數(shù)量以給出,這是比特幣的最小單位比特幣。正如我之前提到的,我們沒有自己的比特幣客戶端。

今天我們將編寫第一個比特幣交易代碼。為了實現(xiàn)這一目標(biāo),我們將使用名為bitcore的JavaScript庫。JavaScript是最流行的現(xiàn)代編程語言,幾乎每個開發(fā)人員都知道它,因此它使這篇文章具有普遍性并且對更廣泛的受眾有用。

在繼續(xù)閱讀本文之前,你應(yīng)該至少掌握有關(guān)比特幣區(qū)塊鏈如何工作的基本技術(shù)知識。如果沒有,請花幾分鐘時間閱讀區(qū)塊鏈簡介。如果你有更多的時間,比如幾個小時,我建議你閱讀掌握比特幣。

讓我們從一個具有以下依賴關(guān)系的新NPM項目開始:

[...]
"dependencies": {
    "bitcore-explorers": "^1.0.1",
    "bitcore-lib": "^0.13.19"
}
[...]

打開index.js文件并導(dǎo)入bitcore庫:

var bitcore = require("bitcore-lib");

要花費比特幣我們需要一個包含比特幣的地址和一個允許我們花錢的私鑰。我們將導(dǎo)入WIF版本的私鑰。WIFWallet Import Format的縮寫。它可以在比特幣錢包之間輕松導(dǎo)入密鑰。 然后我們將從該私鑰創(chuàng)建一個testnet地址:

var privateKeyWIF = "cQN511BWtc2dSUMWySmZpr6ShY1un4WK42JegGwkSFX5a8n9GWr3";
var privateKey = bitcore.PrivateKey.fromWIF(privateKeyWIF);
var sourceAddress = privateKey.toAddress(bitcore.Networks.testnet);

警告!在那個例子中,我與你分享我的私鑰。你不應(yīng)該在現(xiàn)實生活中這樣做。擁有私鑰的人是分配給該密鑰的地址的比特幣的所有者。這是所有權(quán)的標(biāo)志。

在這種情況下,我只是與你分享了用于創(chuàng)建testnet地址的密鑰。Testnet是一個為軟件和腳本測試而創(chuàng)建的比特幣網(wǎng)絡(luò)。它不包含真正的比特幣,只包含測試的比特幣。 你可以免費獲得它們。即使有人偷了他們也沒什么大不了的。我可以冒這個風(fēng)險為你提供開箱即用的示例。

如果有人使用/偷走了這個地址的所有測試比特幣,你可以給它接著充。復(fù)制地址mibK5jk9eP7EkLH175RSPGTLR27zphvvxa并將其粘貼到表單中。

是時候創(chuàng)建我們想要發(fā)送測試比特幣的targetAddress了。

var targetAddress = (new bitcore.PrivateKey).toAddress(bitcore.Networks.testnet);

如果有任何比特幣,請檢查我們的源地址。比特幣網(wǎng)絡(luò)使用UTXO來存儲該信息。UTXOUnspent Transaction Output的縮寫。

我們有一個問題,我們沒有比特幣網(wǎng)絡(luò)客戶端。整個節(jié)點需要至少125 GB的硬盤空間,這對我可憐的MacBook Air來說太多了。我們必須找到一種解決方法。我們不得不請某人為我們讀比特幣網(wǎng)絡(luò)。并廣播我們的交易。

在這種情況下,我們正在失去比特幣區(qū)塊鏈的最大優(yōu)勢。系統(tǒng)的架構(gòu)使我們不必信任任何一方。網(wǎng)絡(luò)共識,數(shù)學(xué)和加密使得區(qū)塊鏈中存儲的數(shù)據(jù)可信。但現(xiàn)在我們要求中間人為我們讀取這些數(shù)據(jù)。他可能會向我們提供虛假或過時的數(shù)據(jù)。

我們將使用來自bitcore-explorers庫的Insight。由于它非常受歡迎,我們只是在這里學(xué)習(xí),我們可以假設(shè)它可以信任。最終的解決方案應(yīng)該是擁有自己的比特幣全節(jié)點。

好吧,讓我們使用Insight來檢查我們要花多少比特幣。

var Insight = require("bitcore-explorers").Insight;
var insight = new Insight("testnet");

insight.getUnspentUtxos(sourceAddress, function(error, utxos) {
  if (error) {
    console.log(error);
  } else {
    console.log(utxos);
    // transaction code goes here
}

UTXOs的輸出是一個數(shù)組。它的每個元素都包含有關(guān)作為UTXO所有者的地址和Satoshis(1 Satoshi = 0.00000001比特幣)的信息。它看起來像這樣:

[  ]

是時候創(chuàng)建我們的交易了:

var tx = new bitcore.Transaction();

讓我們將收到的UTXOs設(shè)置為交易的input。需要注意的一件重要事情是:我們不是從address而是從UTXOs獲得比特幣。

tx.from(utxos);

讓我們設(shè)置我們想要交付給他的交易和金額的接收者。數(shù)量以Satoshis給出,這是比特幣的最小單位:1 Satoshi = 0.00000001比特幣。這是我們交易的output

tx.to(targetAddress, 10000);

是時候討論值的the change。UTXOs是指向我們地址但尚未用完的交易的輸出。UTXOs就像一張鈔票。如果你的口袋里有5美元的鈔票并且想購買2美元的啤酒,你就不會削減一部分賬單并將其交給收銀員。你給5美元的鈔票并收到3美元的改變。它與UTXOs完全相同。你必須在交易中使用整個UTXO并指定change值和address,然后應(yīng)返回change。

WTF?我是否必須指定change值?在商店里,當(dāng)我以5美元的價格購買2美元的啤酒時,我收到3美元的回報。這很明顯。無需計算。

在比特幣中,存在一點差異。實際上,change只是交易的另一個輸出。outputs的總和應(yīng)該比input的總和小一點。差異稱為mining fee。你將其支付給礦工以包含在交易區(qū)塊中。像bitcore.io這樣的錢包或庫估算了我們的mining fee。所以在我們的例子中,我們應(yīng)該返回change到指定address。

tx.change(sourceAddress);

你可以注意到我們使用了sourceAddress。結(jié)果,該地址的一些現(xiàn)有UTXOs消失了(它們將被用完),但也會創(chuàng)建一個新的(來自change的那個)。

在現(xiàn)實生活中,錢包為你的每筆交易使用新地址。這樣做的目的是改善匿名性。怎么可能從一個private key中錢包能夠創(chuàng)建許多public keysaddress?閱讀確定性錢包以找到答案

大!一切都準(zhǔn)備好了!我們現(xiàn)在唯一要做的就是用我們的private key簽署交易并將其發(fā)送到比特幣區(qū)塊鏈。正如我之前提到的,我們沒有自己的比特幣客戶端。我們使用外部工具與區(qū)塊鏈進行通信。問題是:我們能否相信它。當(dāng)我們廣播交易時,該工具不存在捕獲私鑰或操縱交易的風(fēng)險(例如,更改targetAddress)。如果該工具進行了上面列出的任何更改,則簽名將不再有效,并且將拒絕交易。唯一的風(fēng)險是該工具根本不會發(fā)送交易。但我們可以在任何區(qū)塊鏈資源管理器中驗證它。所以我們可以毫不畏懼地再次使用Insight

tx.sign(privateKey);
tx.serialize();

insight.broadcast(tx, function(error, transactionId) {
  if (error) {
    console.log(error);
  } else {
    console.log(transactionId);
  }
});

這就是所有人!該交易被廣播到網(wǎng)絡(luò)。如果一切順利,我們將收到交易ID。然后將其復(fù)制并粘貼到比特幣區(qū)塊鏈瀏覽器中,看看它是否真的有效。

完整代碼可以在GitHub上找到。

建議你瀏覽我的區(qū)塊鏈教程和區(qū)塊鏈技術(shù)博客,深入了解區(qū)塊鏈,比特幣,加密貨幣,以太坊,和智能合約。

java比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Java工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。

php比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢包、構(gòu)造裸交易等,是Php工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。

以太坊入門教程,主要介紹智能合約與dapp應(yīng)用開發(fā),適合熟悉javascript或某一開發(fā)語言的程序員入門。

這里是原文

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24324.html

相關(guān)文章

  • JavaScript編寫自己比特交易代碼

    摘要:今天我們將編寫第一個比特幣交易代碼。是一個為軟件和腳本測試而創(chuàng)建的比特幣網(wǎng)絡(luò)。最終的解決方案應(yīng)該是擁有自己的比特幣全節(jié)點。數(shù)量以給出,這是比特幣的最小單位比特幣。正如我之前提到的,我們沒有自己的比特幣客戶端。 今天我們將編寫第一個比特幣交易代碼。為了實現(xiàn)這一目標(biāo),我們將使用名為bitcore的JavaScript庫。JavaScript是最流行的現(xiàn)代編程語言,幾乎每個開發(fā)人員都知道它,...

    Lin_YT 評論0 收藏0
  • 如何開發(fā)比特錢包應(yīng)用程序

    摘要:創(chuàng)建比特幣錢包需要一組優(yōu)秀的程序員。如何使用流行的庫構(gòu)建自己的比特幣錢包應(yīng)用程序創(chuàng)建比特幣錢包應(yīng)用程序的一種方法是依賴現(xiàn)有工具。具有以下功能它允許開發(fā)人員使用密碼加密創(chuàng)建比特幣錢包應(yīng)用程序。 盡管目前加密貨幣市場相當(dāng)黯淡,但比特幣和其他山寨幣繼續(xù)受歡迎。每天都有新的交易者加入市場,希望能夠在下一個價格高漲時獲利。 隨著市場的突飛猛進,開發(fā)商也在獲益。新交易者的首要任務(wù)是設(shè)置比特幣錢包。...

    Cympros 評論0 收藏0
  • 如何開發(fā)比特錢包應(yīng)用程序

    摘要:創(chuàng)建比特幣錢包需要一組優(yōu)秀的程序員。如何使用流行的庫構(gòu)建自己的比特幣錢包應(yīng)用程序創(chuàng)建比特幣錢包應(yīng)用程序的一種方法是依賴現(xiàn)有工具。具有以下功能它允許開發(fā)人員使用密碼加密創(chuàng)建比特幣錢包應(yīng)用程序。 盡管目前加密貨幣市場相當(dāng)黯淡,但比特幣和其他山寨幣繼續(xù)受歡迎。每天都有新的交易者加入市場,希望能夠在下一個價格高漲時獲利。 隨著市場的突飛猛進,開發(fā)商也在獲益。新交易者的首要任務(wù)是設(shè)置比特幣錢包。...

    crossea 評論0 收藏0
  • 區(qū)塊鏈開發(fā)中使用最流行編程語言

    摘要:我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。,一種在以太坊開發(fā)人員中流行的新的簡單編程語言,因為它是用于開發(fā)以太坊智能合約的語言。它是全球至少萬開發(fā)人員使用的世界上最流行的編程語言之一。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。區(qū)塊鏈技術(shù)處于初期階段,然而這種顛覆性技術(shù)已經(jīng)成功地風(fēng)靡全球,并且最近經(jīng)歷了一場與眾不同的繁榮。由于許多...

    2shou 評論0 收藏0
  • 以太坊連載(一):以太坊是什么?

    摘要:然而,每個以太坊節(jié)點都運行著以太坊虛擬機是為了保持整個區(qū)塊鏈的一致性。以太坊區(qū)塊鏈跟蹤每個賬戶的狀態(tài),所有以太坊區(qū)塊鏈上的狀態(tài)轉(zhuǎn)換都是賬戶之間價值和信息的轉(zhuǎn)移。費用通過以太坊自有的有價代幣,以太幣的形式支付。 以太坊是什么?以太坊是一個全新開放的區(qū)塊鏈平臺,它允許任何人在平臺中建立和使用通過區(qū)塊鏈技術(shù)運行的去中心化應(yīng)用。就像比特幣一樣,以太坊不受任何人控制,也不歸任何人所有——它是一個...

    gekylin 評論0 收藏0

發(fā)表評論

0條評論

lolomaco

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<