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

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript編寫(xiě)自己的比特幣交易代碼

Lin_YT / 1066人閱讀

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

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

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

讓我們從一個(gè)具有以下依賴(lài)關(guān)系的新NPM項(xiàng)目開(kāi)始:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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的輸出是一個(gè)數(shù)組。它的每個(gè)元素都包含有關(guān)作為UTXO所有者的地址和Satoshis(1 Satoshi = 0.00000001比特幣)的信息。它看起來(lái)像這樣:

[  ]

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

var tx = new bitcore.Transaction();

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

tx.from(utxos);

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

tx.to(targetAddress, 10000);

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

WTF?我是否必須指定change值?在商店里,當(dāng)我以5美元的價(jià)格購(gòu)買(mǎi)2美元的啤酒時(shí),我收到3美元的回報(bào)。這很明顯。無(wú)需計(jì)算。

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

tx.change(sourceAddress);

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

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

大!一切都準(zhǔn)備好了!我們現(xiàn)在唯一要做的就是用我們的private key簽署交易并將其發(fā)送到比特幣區(qū)塊鏈。正如我之前提到的,我們沒(méi)有自己的比特幣客戶(hù)端。我們使用外部工具與區(qū)塊鏈進(jìn)行通信。問(wèn)題是:我們能否相信它。當(dāng)我們廣播交易時(shí),該工具不存在捕獲私鑰或操縱交易的風(fēng)險(xiǎn)(例如,更改targetAddress)。如果該工具進(jìn)行了上面列出的任何更改,則簽名將不再有效,并且將拒絕交易。唯一的風(fēng)險(xiǎn)是該工具根本不會(huì)發(fā)送交易。但我們可以在任何區(qū)塊鏈資源管理器中驗(yàn)證它。所以我們可以毫不畏懼地再次使用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比特幣開(kāi)發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲(chǔ)、去中心化共識(shí)機(jī)制、密鑰與腳本、交易與UTXO等,同時(shí)也詳細(xì)講解如何在Java代碼中集成比特幣支持功能,例如創(chuàng)建地址、管理錢(qián)包、構(gòu)造裸交易等,是Java工程師不可多得的比特幣開(kāi)發(fā)學(xué)習(xí)課程。

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

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

這里是原文

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/98190.html

相關(guān)文章

  • JavaScript編寫(xiě)自己比特交易代碼

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

    lolomaco 評(píng)論0 收藏0
  • 如何開(kāi)發(fā)比特錢(qián)包應(yīng)用程序

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

    Cympros 評(píng)論0 收藏0
  • 如何開(kāi)發(fā)比特錢(qián)包應(yīng)用程序

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

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

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

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

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

    gekylin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<