十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹了怎么更好的使用區(qū)塊鏈API的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇怎么更好的使用區(qū)塊鏈API文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。
成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計(jì),有關(guān)成都定制網(wǎng)頁(yè)設(shè)計(jì)方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及除甲醛等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
API(應(yīng)用程序編程接口)是單個(gè)計(jì)算機(jī)程序可以用來(lái)與另一個(gè)程序交互的方法(類,過(guò)程,函數(shù),結(jié)構(gòu)或常量)的描述。它通常包含在任何Internet協(xié)議(例如RFC)的描述中,軟件框架或?qū)Σ僮飨到y(tǒng)函數(shù)的標(biāo)準(zhǔn)調(diào)用。它通常由單獨(dú)的軟件庫(kù)或操作系統(tǒng)服務(wù)實(shí)現(xiàn)。開發(fā)人員通常使用區(qū)塊鏈API來(lái)編寫各種應(yīng)用程序。
API定義程序(模塊,庫(kù))提供的功能,并允許從該功能的實(shí)現(xiàn)方式中抽象出來(lái)。軟件組件通過(guò)API相互交互。在這種情況下,組件通常形成層次結(jié)構(gòu):高級(jí)組件使用低級(jí)組件的API,而這些組件又使用甚至更低級(jí)別組件的API。通過(guò)因特網(wǎng)進(jìn)行數(shù)據(jù)傳輸?shù)膮f(xié)議是根據(jù)該原理構(gòu)建的。
標(biāo)準(zhǔn)協(xié)議棧(OSI網(wǎng)絡(luò)模型)包含7層(從物理位傳輸層到應(yīng)用協(xié)議層,類似于HTTP和IMAP協(xié)議)。每個(gè)級(jí)別使用先前底層數(shù)據(jù)傳輸級(jí)別的功能,并為下一個(gè)覆蓋級(jí)別提供必要的功能。
注意:協(xié)議的概念與API的概念意義相近。兩者都是功能的抽象,除了協(xié)議涉及數(shù)據(jù)傳輸,而API與應(yīng)用程序的交互相關(guān)。
區(qū)塊鏈軟件的開發(fā)通常包括各種困難部分。其中最重要的是創(chuàng)建區(qū)塊鏈API接口。有些項(xiàng)目通過(guò)提供以下API服務(wù)來(lái)幫助用戶和開發(fā)人員:
網(wǎng)站收到比特幣付款的難以置信的簡(jiǎn)便方式。這種服務(wù)是完全安全的,是商務(wù)或個(gè)人使用的理想選擇:
區(qū)塊鏈鏈接的錢包服務(wù)。
用于從區(qū)塊鏈錢包發(fā)送和接收付款的API。
每個(gè)塊和交易的數(shù)據(jù)請(qǐng)求的JSON。
用于請(qǐng)求的簡(jiǎn)單區(qū)塊鏈API:用于查詢區(qū)塊鏈數(shù)據(jù)的文本格式的簡(jiǎn)單API。
Web套接字:具有低延遲的流式套接字,為新塊和交易提供數(shù)據(jù)。
讓我們從區(qū)塊鏈錢包API評(píng)論開始。區(qū)塊鏈Wallet API提供了一個(gè)簡(jiǎn)單的界面。要使用此API,你需要啟動(dòng)一個(gè)負(fù)責(zé)管理錢包的小型本地服務(wù)。你的應(yīng)用程序通過(guò)HTTP API調(diào)用在本地與此服務(wù)進(jìn)行交互。
現(xiàn)在,你可以從新的區(qū)塊鏈錢包API轉(zhuǎn)移比特幣。所有交易均價(jià)值0.0001 BTC礦工的費(fèi)用。這是它在PHP中的樣子:
<? $guid="GUID_HERE"; $firstpassword="PASSWORD_HERE"; $secondpassword="PASSWORD_HERE"; $amounta = "10000000"; $amountb = "400000"; $addressa = "1A8JiWcwvpY7tAopUkSnGuEYHmzGYfZPiq"; $addressb = "1ExD2je6UNxL5oSu6iPUhn9Ta7UrN8bjBy"; $recipients = urlencode('{ "'.$addressa.'": '.$amounta.', "'.$addressb.'": '.$amountb.' }'); $json_url = "http://localhost:3000/merchant/$guid/sendmany?password=$firstpassword&second_password=$secondpassword&recipients=$recipients"; $json_data = file_get_contents($json_url); $json_feed = json_decode($json_data); $message = $json_feed->message; $txid = $json_feed->tx_hash; ?>
WebSocket API允許開發(fā)人員獲取有關(guān)新交易和塊的實(shí)時(shí)數(shù)據(jù)。
從URL鏈接wss://ws.blockchain.info/inv
開始。部署套接字時(shí),用戶通過(guò)發(fā)送op
消息{“op”:“ping”}
來(lái)訂閱該頻道。然后,訂閱有關(guān)所有新比特幣交易的通知{“op”:“unconfirmed_sub”}
。最后,訂閱地址{“op”:”addr_sub”, “addr”:”$bitcoin_address”}
。
有關(guān)新交易的通知如下所示:
"op": "utx", "x": { "lock_time": 0, "ver": 1, "size": 192, "inputs": [ { "sequence": 4294967295, "prev_out": { "spent": true, "tx_index": 99005468, "type": 0, "addr": "1BwGf3z7n2fHk6NoVJNkV32qwyAYsMhkWf", "value": 65574000, "n": 0, "script": "76a91477f4c9ee75e449a74c21a4decfb50519cbc245b388ac" }, "script": "483045022100e4ff962c292705f051c2c2fc519fa775a4d8955bce1a3e29884b2785277999ed02200b537ebd22a9f25fbbbcc9113c69c1389400703ef2017d80959ef0f1d685756c012102618e08e0c8fd4c5fe539184a30fe35a2f5fccf7ad62054cad29360d871f8187d" } ], "time": 1440086763, "tx_index": 99006637, "vin_sz": 1, "hash": "0857b9de1884eec314ecf67c040a2657b8e083e1f95e31d0b5ba3d328841fc7f", "vout_sz": 1, "relayed_by": "127.0.0.1", "out": [ { "spent": false, "tx_index": 99006637, "type": 0, "addr": "1A828tTnkVFJfSvLCqF42ohZ51ksS3jJgX", "value": 65564000, "n": 0, "script": "76a914640cfdf7b79d94d1c980133e3587bd6053f091f388ac"
對(duì)于區(qū)塊鏈數(shù)據(jù)API,如果向GET
請(qǐng)求添加&cors=true
參數(shù),則可以使用CORS
進(jìn)行一些數(shù)據(jù)API調(diào)用。
CORS(跨源資源共享)是現(xiàn)代瀏覽器的一種技術(shù),它提供可以訪問(wèn)另一個(gè)域的資源的網(wǎng)頁(yè)。直到最近,克服同源策略對(duì)XSS請(qǐng)求施加的限制的主要方法是使用JSONP。JSONP本身有一個(gè)致命的限制:它只能通過(guò)GET方法接收數(shù)據(jù)。通過(guò)POST方法發(fā)送數(shù)據(jù)仍然無(wú)法訪問(wèn)。
技術(shù)本身非常簡(jiǎn)單。有三個(gè)域希望從服務(wù)器下載資源。為了實(shí)現(xiàn)這一點(diǎn),提供內(nèi)容的Web服務(wù)器足以在響應(yīng)頭中指示可信域列表Access-Control-Allow-Origin:A,B,C。然后相同源原則的限制 在請(qǐng)求的頁(yè)面上將不適用于這些域的頁(yè)面。要啟動(dòng)跨源請(qǐng)求,客戶端瀏覽器會(huì)向HTTP請(qǐng)求(發(fā)出請(qǐng)求的站點(diǎn)域)添加原始請(qǐng)求。例如,頁(yè)面http://www.a.com/page.html嘗試從http://www.b.com/cors.txt頁(yè)面獲取數(shù)據(jù)。
在區(qū)塊鏈數(shù)據(jù)API中,單個(gè)塊如下所示:
"hash":"0000000000000bae09a7a393a8acded75aa67e46cb81f7acaa5ad94f9eacd103", "ver":1, "prev_block":"00000000000007d0f98d9edca880a6c124e25095712df8952e0439ac7409738a", "mrkl_root":"935aa0ed2e29a4b81e0c995c39e06995ecce7ddbebb26ed32d550a72e8200bf5", "time":1322131230, "bits":437129626, "nonce":2964215930, "n_tx":22, "size":9195, "block_index":818044, "main_chain":true, "height":154595, "received_time":1322131301, "relayed_by":"108.60.208.156", "tx":[--Array of Transactions--]
區(qū)塊鏈圖表和統(tǒng)計(jì)API允許與blockchain.info上顯示的圖表和統(tǒng)計(jì)信息進(jìn)行交互。(區(qū)塊鏈信息API)。
可以使用Charts API方法接收有關(guān)blockchain.info圖表的信息:
"status": "ok", "name": "Confirmed Transactions Per Day", "unit": "Transactions", "period": "day", "description": "The number of daily confirmed Bitcoin transactions.", "values": [ { "x": 1442534400, // Unix timestamp (2015-09-18T00:00:00+00:00) "y": 188330.0 }, ...
Stats API可用于接收有關(guān)blockchain.info統(tǒng)計(jì)信息的信息:
"market_price_usd": 610.036975, "hash_rate": 1.8410989266292908E9, "total_fees_btc": 6073543165, "n_btc_mined": 205000000000, "n_tx": 233805, "n_blocks_mined": 164, "minutes_between_blocks": 8.2577, "totalbc": 1587622500000000, "n_blocks_total": 430098, "estimated_transaction_volume_usd": 1.2342976868108143E8, "blocks_size": 117490685, "miners_revenue_usd": 1287626.6577490852, "nextretarget": 431423, "difficulty": 225832872179, "estimated_btc_sent": 20233161880242, "miners_revenue_btc": 2110, "total_btc_sent": 184646388663542, "trade_volume_btc": 21597.09997288, "trade_volume_usd": 1.3175029536228297E7, "timestamp": 1474035340000
接受比特幣支付變得越來(lái)越受歡迎和需求。在網(wǎng)站上接受比特幣支付的方法有很多種。最方便的方法之一是區(qū)塊鏈API。在這里,你不需要綁定特定語(yǔ)言或SDK;你甚至不需要在那里注冊(cè)。所需要的只是擁有一個(gè)錢包來(lái)接受比特幣,并有時(shí)間將相當(dāng)簡(jiǎn)單的API連接到你的系統(tǒng)。此外,客戶不會(huì)看到你的錢包,而是交易所的臨時(shí)錢包。
在直接談?wù)摯a之前(我們將在示例中使用PHP,但可以在Java,Python等中輕松實(shí)現(xiàn)),有必要闡明支付接受機(jī)制本身。
整個(gè)過(guò)程符合以下順序:
1.用戶通過(guò)發(fā)送一系列數(shù)據(jù)從區(qū)塊鏈請(qǐng)求臨時(shí)錢包。
2.區(qū)塊鏈返回其臨時(shí)錢包以接收對(duì)用戶的付款。
3.用戶向客戶端顯示此錢包,以及有關(guān)如何處理的一小組說(shuō)明。
4.客戶付款(將資金轉(zhuǎn)入錢包)。
5.用戶應(yīng)該等待比特幣系統(tǒng)中的支付驗(yàn)證。
6.在區(qū)塊鏈系統(tǒng)成功驗(yàn)證的情況下,將在用戶的站點(diǎn)上調(diào)用腳本(用戶必須指明哪個(gè)),并且傳輸所有交易數(shù)據(jù)。
7.之后,在用戶系統(tǒng)內(nèi)安全地確認(rèn)支付。
要獲得臨時(shí)錢包,你應(yīng)該發(fā)送一系列數(shù)據(jù):
在成功確認(rèn)交易的情況下將被抄寫的腳本的URL。值得注意的是,建議指定某個(gè)參數(shù)(甚至是一些參數(shù)),以便識(shí)別當(dāng)前系統(tǒng)中的付款。只需在用戶系統(tǒng)中指定客戶端ID并將任何數(shù)據(jù)輸入數(shù)據(jù)庫(kù),但只有在收到確認(rèn)交易后才可以。但是,官方文檔建議使用預(yù)先創(chuàng)建的付款編號(hào)和任何驗(yàn)證短語(yǔ)??偟膩?lái)說(shuō),我們通過(guò)常規(guī)GET傳輸請(qǐng)求中的參數(shù)獲取URL。對(duì)于區(qū)塊鏈系統(tǒng),此參數(shù)稱為回調(diào)。應(yīng)該將值編碼為URL鏈接。
用戶錢包用于接收付款。區(qū)塊鏈將把收到的錢轉(zhuǎn)移到這個(gè)錢包。參數(shù)被稱為地址。
最后一個(gè)參數(shù)被稱為方法,并用于創(chuàng)建臨時(shí)錢包。
此數(shù)據(jù)將發(fā)送到區(qū)塊鏈腳本(https://blockchain.info/api/receive),每個(gè)參數(shù)都是常用的GET參數(shù)。其執(zhí)行結(jié)果由用戶系統(tǒng)處理(結(jié)果將采用JSON格式)。關(guān)于區(qū)塊鏈信息API的所有內(nèi)容都在區(qū)塊鏈API文檔中說(shuō)明。
現(xiàn)在,用戶已準(zhǔn)備好接受對(duì)錢包的付款,但無(wú)法從系統(tǒng)中注冊(cè)其收據(jù)的事實(shí)。用戶應(yīng)該記住,在實(shí)際系統(tǒng)中,建議使用經(jīng)過(guò)深思熟慮且編寫良好的代碼,以及存儲(chǔ)準(zhǔn)備好的付款的數(shù)據(jù)庫(kù)(將付款號(hào)碼,用戶ID存儲(chǔ)在系統(tǒng)和驗(yàn)證短語(yǔ)或其組成部分)。此外,驗(yàn)證付款的時(shí)間可能不同且非常重要,比特幣匯率可能會(huì)發(fā)生變化。用戶有兩種選擇:在付款時(shí)保留費(fèi)率,或在收到交易確認(rèn)后請(qǐng)求費(fèi)率。
交易確認(rèn)收據(jù)文件應(yīng)該叫做receive_payment.php,并且應(yīng)該存儲(chǔ)在網(wǎng)站的根目錄中;在請(qǐng)求臨時(shí)錢包時(shí),用戶在創(chuàng)建$ callback_url
時(shí)指定了其名稱。
實(shí)際上,同一付款的腳本不僅會(huì)被調(diào)用一次,而且會(huì)根據(jù)其在各個(gè)節(jié)點(diǎn)上的確認(rèn)數(shù)量來(lái)調(diào)用。這意味著用戶必須先檢查是否有確認(rèn)。
區(qū)塊鏈提供了許多參數(shù):
Transaction_hash,唯一的交易哈希。
Input_transaction_hash,原始交易的唯一哈希值。
Input_address,將收到付款的區(qū)塊鏈錢包。
Destination_address,將發(fā)送付款的用戶的錢包。
Confirmations,按節(jié)點(diǎn)確認(rèn)的數(shù)量(如果此參數(shù)的值大于或等于6,則建議接受付款確認(rèn))。
value參數(shù)在Satoshi中生成值,而不是比特幣(1Satoshi=0.00000001BTC)。因此,結(jié)果值應(yīng)該減少到比特幣。名為invoice_id和secret的參數(shù)由用戶在接收區(qū)塊鏈錢包階段設(shè)置。因此,可能存在更多或更少的它們,并且它們可以具有任何名稱。
建議將收到的值存儲(chǔ)在支付歷史中的比特幣中;但是,應(yīng)該將其轉(zhuǎn)換為另一種貨幣(例如美元),由用戶系統(tǒng)使用。如果系統(tǒng)僅適用于比特幣,則無(wú)需轉(zhuǎn)換任何內(nèi)容。
有單獨(dú)的匯率API文檔,用于將比特幣轉(zhuǎn)換為其他貨幣。用戶必須指定兩個(gè)參數(shù):
貨幣名稱(貨幣列表在文檔中可用,用戶也可以使用調(diào)用Print_r($ Exchange_data_obj)
獲取它。
用戶想要兌換的比特幣數(shù)量。
今天,有許多公司開發(fā)提供應(yīng)用程序開發(fā)工具的平臺(tái)和項(xiàng)目。Blockchain.info有許多區(qū)塊鏈信息API,用于處理他們的電子錢包服務(wù)(這是最大的電子錢包服務(wù)之一),旨在發(fā)送和接收付款并執(zhí)行其他操作。該鏈創(chuàng)建了用于訪問(wèn)分布式記錄注冊(cè)表的完整節(jié)點(diǎn)中包含的數(shù)據(jù)的接口,以及標(biāo)準(zhǔn)信息請(qǐng)求:例如,關(guān)于你的比特幣余額。此外,你可以在特定地址執(zhí)行操作時(shí)發(fā)送通知。
Stellar是一個(gè)半去中心化的(由網(wǎng)關(guān)組織服務(wù),而不是礦工),可公開訪問(wèn)的日志和統(tǒng)一開發(fā)環(huán)境(區(qū)塊鏈API,多簽名API)綁定到Stripe支付網(wǎng)絡(luò)。還有其他公司擁有帶有多邊簽名的區(qū)塊鏈錢包API,例如Block.io,Gem,BlockCypher等。
將來(lái),需要更加統(tǒng)一的區(qū)塊鏈API開發(fā)環(huán)境,包括區(qū)塊鏈生態(tài)系統(tǒng)的各種不斷變化的組件(存儲(chǔ),文件維護(hù),錢包交互,移動(dòng)支付,身份驗(yàn)證和聲譽(yù))。智能合約將允許我們創(chuàng)建一個(gè)全球氣象數(shù)據(jù)市場(chǎng)meteorological data market
,消費(fèi)者將在其中請(qǐng)求實(shí)時(shí)數(shù)據(jù)并以通用格式接收數(shù)據(jù)(使用區(qū)塊鏈信息API)。
集中數(shù)據(jù)提供商可以告別自己的格式和銷售活動(dòng),而是將數(shù)據(jù)傳送到全球可訪問(wèn)的氣象市場(chǎng)dApp??梢詫^(qū)塊鏈的開發(fā)環(huán)境與其他大型網(wǎng)段聯(lián)系起來(lái):例如,機(jī)器到機(jī)器(M2M)通信和物聯(lián)網(wǎng)網(wǎng)絡(luò)的基礎(chǔ)設(shè)施,用于快速應(yīng)用程序開發(fā)。在遙遠(yuǎn)的未來(lái),這種類型的高級(jí)集成應(yīng)用程序的一個(gè)例子可以是與智能城市基礎(chǔ)設(shè)施內(nèi)的交通傳感器交互的智能手表,以便使用比特幣中的智能合約自動(dòng)預(yù)留和支付流量。
幾乎所有操作系統(tǒng)(UNIX,Windows,OS X等)都有一個(gè)API,程序員可以使用該API為操作系統(tǒng)創(chuàng)建應(yīng)用程序。主API操作系統(tǒng)是一組系統(tǒng)調(diào)用。應(yīng)該注意的是,開發(fā)人員通常有幾種不同的API來(lái)實(shí)現(xiàn)相同的結(jié)果。此外,每個(gè)API通常使用較低抽象級(jí)別的API程序組件來(lái)實(shí)現(xiàn)。例如:為了看到“Hello,world!”這一行,在瀏覽器中,你只需創(chuàng)建一個(gè)具有最小標(biāo)題的HTML文檔和包含給定行的最簡(jiǎn)單的主體。
當(dāng)瀏覽器打開此文檔時(shí),瀏覽器程序會(huì)將文件的名稱(或已打開的文件描述符)傳輸?shù)教幚鞨TML文檔的庫(kù),而庫(kù)文件將使用操作API系統(tǒng)讀取此文件,然后通過(guò)“clear window”類型的標(biāo)準(zhǔn)圖形/基本操作的API庫(kù)調(diào)用它。在所選字體中寫下“Hello,world!”。在執(zhí)行這些操作期間,圖形基元庫(kù)將使用相應(yīng)的請(qǐng)求訪問(wèn)窗口接口庫(kù)。該庫(kù)已經(jīng)與操作系統(tǒng)API聯(lián)系,將數(shù)據(jù)寫入視頻卡緩沖區(qū)。
與此同時(shí),幾乎每個(gè)級(jí)別實(shí)際上都有幾種可能的替代API。例如,我們可以不在HTML上編寫源文檔,而是在LaTeX上編寫。我們可以使用任何瀏覽器進(jìn)行顯示。一般來(lái)說(shuō),不同的瀏覽器使用不同的HTML庫(kù),所有這些都可以使用不同的原始庫(kù)和不同的操作系統(tǒng)進(jìn)行編譯。
因此,現(xiàn)有多級(jí)API系統(tǒng)的主要困難是:
將軟件代碼從一個(gè)API系統(tǒng)移植到另一個(gè)API系統(tǒng)的復(fù)雜性(例如,更改操作系統(tǒng)時(shí))。
從較低級(jí)別移動(dòng)到較高級(jí)別時(shí)的功能喪失。粗略地講,每個(gè)API“層”被創(chuàng)建以促進(jìn)一些標(biāo)準(zhǔn)操作集的執(zhí)行。但同時(shí),它真的很難,或者它根本不可能執(zhí)行由較低API級(jí)別提供的其他操作。
從一個(gè)API移動(dòng)到另一個(gè)API時(shí)移植程序代碼的困難。將模塊傳輸?shù)狡渌僮飨到y(tǒng)時(shí)經(jīng)常會(huì)出現(xiàn)這些問(wèn)題。
從低級(jí)管理到高級(jí)管理時(shí),降低接口功能的范圍。在這種情況下,促進(jìn)了嚴(yán)格定義的任務(wù)類別的實(shí)施。與此同時(shí),訪問(wèn)其他監(jiān)管機(jī)構(gòu)的控制權(quán)已經(jīng)失去了。畢竟,較低級(jí)別允許你輕松管理程序的基本組件。
軟件接口的分類與通過(guò)它們控制的應(yīng)用程序的目的和功能密切相關(guān)。事實(shí)上,在運(yùn)行復(fù)雜系統(tǒng)時(shí),通常有其他API可以通過(guò)其他方式解決相同的問(wèn)題。
單獨(dú)的組分配用于管理軟件模塊(wxWidgets,Qt,GTK等),操作系統(tǒng)(Amiga ROM內(nèi)核,Cocoa,Linux內(nèi)核API,OS/2 API,POSIX,Windows API),聲音(DirectMusic /)的圖形組件的接口DirectSound,OpenAL),窗口接口等。它們的分離取決于層次結(jié)構(gòu)和功能中的應(yīng)用程度。計(jì)算機(jī)游戲的用戶通常不會(huì)懷疑這個(gè)圖形API為他們提供如此快速的圖片繪制和驚人的圖像亮度。
全局區(qū)塊鏈API通常包括各個(gè)編程語(yǔ)言的接口。在他們的幫助下,你可以管理非常具體和本地任務(wù)的解決方案。這一切都取決于具體算法的實(shí)現(xiàn)。
關(guān)于“怎么更好的使用區(qū)塊鏈API”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“怎么更好的使用區(qū)塊鏈API”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。