国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

lolomaco / 2784人閱讀

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

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

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

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

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

打開index.js文件并導入bitcore庫:

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

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

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

警告!在那個例子中,我與你分享我的私鑰。你不應該在現實生活中這樣做。擁有私鑰的人是分配給該密鑰的地址的比特幣的所有者。這是所有權的標志。

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

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

是時候創建我們想要發送測試比特幣的targetAddress了。

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

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

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

在這種情況下,我們正在失去比特幣區塊鏈的最大優勢。系統的架構使我們不必信任任何一方。網絡共識,數學和加密使得區塊鏈中存儲的數據可信。但現在我們要求中間人為我們讀取這些數據。他可能會向我們提供虛假或過時的數據。

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

好吧,讓我們使用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的輸出是一個數組。它的每個元素都包含有關作為UTXO所有者的地址和Satoshis(1 Satoshi = 0.00000001比特幣)的信息。它看起來像這樣:

[  ]

是時候創建我們的交易了:

var tx = new bitcore.Transaction();

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

tx.from(utxos);

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

tx.to(targetAddress, 10000);

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

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

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

tx.change(sourceAddress);

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

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

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

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

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

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

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

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

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

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

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

這里是原文

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24324.html

相關文章

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

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

    Lin_YT 評論0 收藏0
  • 如何開發比特錢包應用程序

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

    Cympros 評論0 收藏0
  • 如何開發比特錢包應用程序

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

    crossea 評論0 收藏0
  • 區塊鏈開發中使用最流行編程語言

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

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

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

    gekylin 評論0 收藏0

發表評論

0條評論

lolomaco

|高級講師

TA的文章

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