您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么更好的使用區塊鏈API的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么更好的使用區塊鏈API文章都會有所收獲,下面我們一起來看看吧。
API(應用程序編程接口)是單個計算機程序可以用來與另一個程序交互的方法(類,過程,函數,結構或常量)的描述。它通常包含在任何Internet協議(例如RFC)的描述中,軟件框架或對操作系統函數的標準調用。它通常由單獨的軟件庫或操作系統服務實現。開發人員通常使用區塊鏈API來編寫各種應用程序。
API定義程序(模塊,庫)提供的功能,并允許從該功能的實現方式中抽象出來。軟件組件通過API相互交互。在這種情況下,組件通常形成層次結構:高級組件使用低級組件的API,而這些組件又使用甚至更低級別組件的API。通過因特網進行數據傳輸的協議是根據該原理構建的。
標準協議棧(OSI網絡模型)包含7層(從物理位傳輸層到應用協議層,類似于HTTP和IMAP協議)。每個級別使用先前底層數據傳輸級別的功能,并為下一個覆蓋級別提供必要的功能。
注意:協議的概念與API的概念意義相近。兩者都是功能的抽象,除了協議涉及數據傳輸,而API與應用程序的交互相關。
區塊鏈軟件的開發通常包括各種困難部分。其中最重要的是創建區塊鏈API接口。有些項目通過提供以下API服務來幫助用戶和開發人員:
網站收到比特幣付款的難以置信的簡便方式。這種服務是完全安全的,是商務或個人使用的理想選擇:
區塊鏈鏈接的錢包服務。
用于從區塊鏈錢包發送和接收付款的API。
每個塊和交易的數據請求的JSON。
用于請求的簡單區塊鏈API:用于查詢區塊鏈數據的文本格式的簡單API。
Web套接字:具有低延遲的流式套接字,為新塊和交易提供數據。
讓我們從區塊鏈錢包API評論開始。區塊鏈Wallet API提供了一個簡單的界面。要使用此API,你需要啟動一個負責管理錢包的小型本地服務。你的應用程序通過HTTP API調用在本地與此服務進行交互。
現在,你可以從新的區塊鏈錢包API轉移比特幣。所有交易均價值0.0001 BTC礦工的費用。這是它在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允許開發人員獲取有關新交易和塊的實時數據。
從URL鏈接wss://ws.blockchain.info/inv
開始。部署套接字時,用戶通過發送op
消息{“op”:“ping”}
來訂閱該頻道。然后,訂閱有關所有新比特幣交易的通知{“op”:“unconfirmed_sub”}
。最后,訂閱地址{“op”:”addr_sub”, “addr”:”$bitcoin_address”}
。
有關新交易的通知如下所示:
"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"
對于區塊鏈數據API,如果向GET
請求添加&cors=true
參數,則可以使用CORS
進行一些數據API調用。
CORS(跨源資源共享)是現代瀏覽器的一種技術,它提供可以訪問另一個域的資源的網頁。直到最近,克服同源策略對XSS請求施加的限制的主要方法是使用JSONP。JSONP本身有一個致命的限制:它只能通過GET方法接收數據。通過POST方法發送數據仍然無法訪問。
技術本身非常簡單。有三個域希望從服務器下載資源。為了實現這一點,提供內容的Web服務器足以在響應頭中指示可信域列表Access-Control-Allow-Origin:A,B,C。然后相同源原則的限制 在請求的頁面上將不適用于這些域的頁面。要啟動跨源請求,客戶端瀏覽器會向HTTP請求(發出請求的站點域)添加原始請求。例如,頁面http://www.a.com/page.html嘗試從http://www.b.com/cors.txt頁面獲取數據。
在區塊鏈數據API中,單個塊如下所示:
"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--]
區塊鏈圖表和統計API允許與blockchain.info上顯示的圖表和統計信息進行交互。(區塊鏈信息API)。
可以使用Charts API方法接收有關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可用于接收有關blockchain.info統計信息的信息:
"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
接受比特幣支付變得越來越受歡迎和需求。在網站上接受比特幣支付的方法有很多種。最方便的方法之一是區塊鏈API。在這里,你不需要綁定特定語言或SDK;你甚至不需要在那里注冊。所需要的只是擁有一個錢包來接受比特幣,并有時間將相當簡單的API連接到你的系統。此外,客戶不會看到你的錢包,而是交易所的臨時錢包。
在直接談論代碼之前(我們將在示例中使用PHP,但可以在Java,Python等中輕松實現),有必要闡明支付接受機制本身。
整個過程符合以下順序:
1.用戶通過發送一系列數據從區塊鏈請求臨時錢包。
2.區塊鏈返回其臨時錢包以接收對用戶的付款。
3.用戶向客戶端顯示此錢包,以及有關如何處理的一小組說明。
4.客戶付款(將資金轉入錢包)。
5.用戶應該等待比特幣系統中的支付驗證。
6.在區塊鏈系統成功驗證的情況下,將在用戶的站點上調用腳本(用戶必須指明哪個),并且傳輸所有交易數據。
7.之后,在用戶系統內安全地確認支付。
要獲得臨時錢包,你應該發送一系列數據:
在成功確認交易的情況下將被抄寫的腳本的URL。值得注意的是,建議指定某個參數(甚至是一些參數),以便識別當前系統中的付款。只需在用戶系統中指定客戶端ID并將任何數據輸入數據庫,但只有在收到確認交易后才可以。但是,官方文檔建議使用預先創建的付款編號和任何驗證短語。總的來說,我們通過常規GET傳輸請求中的參數獲取URL。對于區塊鏈系統,此參數稱為回調。應該將值編碼為URL鏈接。
用戶錢包用于接收付款。區塊鏈將把收到的錢轉移到這個錢包。參數被稱為地址。
最后一個參數被稱為方法,并用于創建臨時錢包。
此數據將發送到區塊鏈腳本(https://blockchain.info/api/receive),每個參數都是常用的GET參數。其執行結果由用戶系統處理(結果將采用JSON格式)。關于區塊鏈信息API的所有內容都在區塊鏈API文檔中說明。
現在,用戶已準備好接受對錢包的付款,但無法從系統中注冊其收據的事實。用戶應該記住,在實際系統中,建議使用經過深思熟慮且編寫良好的代碼,以及存儲準備好的付款的數據庫(將付款號碼,用戶ID存儲在系統和驗證短語或其組成部分)。此外,驗證付款的時間可能不同且非常重要,比特幣匯率可能會發生變化。用戶有兩種選擇:在付款時保留費率,或在收到交易確認后請求費率。
交易確認收據文件應該叫做receive_payment.php,并且應該存儲在網站的根目錄中;在請求臨時錢包時,用戶在創建$ callback_url
時指定了其名稱。
實際上,同一付款的腳本不僅會被調用一次,而且會根據其在各個節點上的確認數量來調用。這意味著用戶必須先檢查是否有確認。
區塊鏈提供了許多參數:
Transaction_hash,唯一的交易哈希。
Input_transaction_hash,原始交易的唯一哈希值。
Input_address,將收到付款的區塊鏈錢包。
Destination_address,將發送付款的用戶的錢包。
Confirmations,按節點確認的數量(如果此參數的值大于或等于6,則建議接受付款確認)。
value參數在Satoshi中生成值,而不是比特幣(1Satoshi=0.00000001BTC)。因此,結果值應該減少到比特幣。名為invoice_id和secret的參數由用戶在接收區塊鏈錢包階段設置。因此,可能存在更多或更少的它們,并且它們可以具有任何名稱。
建議將收到的值存儲在支付歷史中的比特幣中;但是,應該將其轉換為另一種貨幣(例如美元),由用戶系統使用。如果系統僅適用于比特幣,則無需轉換任何內容。
有單獨的匯率API文檔,用于將比特幣轉換為其他貨幣。用戶必須指定兩個參數:
貨幣名稱(貨幣列表在文檔中可用,用戶也可以使用調用Print_r($ Exchange_data_obj)
獲取它。
用戶想要兌換的比特幣數量。
今天,有許多公司開發提供應用程序開發工具的平臺和項目。Blockchain.info有許多區塊鏈信息API,用于處理他們的電子錢包服務(這是最大的電子錢包服務之一),旨在發送和接收付款并執行其他操作。該鏈創建了用于訪問分布式記錄注冊表的完整節點中包含的數據的接口,以及標準信息請求:例如,關于你的比特幣余額。此外,你可以在特定地址執行操作時發送通知。
Stellar是一個半去中心化的(由網關組織服務,而不是礦工),可公開訪問的日志和統一開發環境(區塊鏈API,多簽名API)綁定到Stripe支付網絡。還有其他公司擁有帶有多邊簽名的區塊鏈錢包API,例如Block.io,Gem,BlockCypher等。
將來,需要更加統一的區塊鏈API開發環境,包括區塊鏈生態系統的各種不斷變化的組件(存儲,文件維護,錢包交互,移動支付,身份驗證和聲譽)。智能合約將允許我們創建一個全球氣象數據市場meteorological data market
,消費者將在其中請求實時數據并以通用格式接收數據(使用區塊鏈信息API)。
集中數據提供商可以告別自己的格式和銷售活動,而是將數據傳送到全球可訪問的氣象市場dApp。可以將區塊鏈的開發環境與其他大型網段聯系起來:例如,機器到機器(M2M)通信和物聯網網絡的基礎設施,用于快速應用程序開發。在遙遠的未來,這種類型的高級集成應用程序的一個例子可以是與智能城市基礎設施內的交通傳感器交互的智能手表,以便使用比特幣中的智能合約自動預留和支付流量。
幾乎所有操作系統(UNIX,Windows,OS X等)都有一個API,程序員可以使用該API為操作系統創建應用程序。主API操作系統是一組系統調用。應該注意的是,開發人員通常有幾種不同的API來實現相同的結果。此外,每個API通常使用較低抽象級別的API程序組件來實現。例如:為了看到“Hello,world!”這一行,在瀏覽器中,你只需創建一個具有最小標題的HTML文檔和包含給定行的最簡單的主體。
當瀏覽器打開此文檔時,瀏覽器程序會將文件的名稱(或已打開的文件描述符)傳輸到處理HTML文檔的庫,而庫文件將使用操作API系統讀取此文件,然后通過“clear window”類型的標準圖形/基本操作的API庫調用它。在所選字體中寫下“Hello,world!”。在執行這些操作期間,圖形基元庫將使用相應的請求訪問窗口接口庫。該庫已經與操作系統API聯系,將數據寫入視頻卡緩沖區。
與此同時,幾乎每個級別實際上都有幾種可能的替代API。例如,我們可以不在HTML上編寫源文檔,而是在LaTeX上編寫。我們可以使用任何瀏覽器進行顯示。一般來說,不同的瀏覽器使用不同的HTML庫,所有這些都可以使用不同的原始庫和不同的操作系統進行編譯。
因此,現有多級API系統的主要困難是:
將軟件代碼從一個API系統移植到另一個API系統的復雜性(例如,更改操作系統時)。
從較低級別移動到較高級別時的功能喪失。粗略地講,每個API“層”被創建以促進一些標準操作集的執行。但同時,它真的很難,或者它根本不可能執行由較低API級別提供的其他操作。
從一個API移動到另一個API時移植程序代碼的困難。將模塊傳輸到其他操作系統時經常會出現這些問題。
從低級管理到高級管理時,降低接口功能的范圍。在這種情況下,促進了嚴格定義的任務類別的實施。與此同時,訪問其他監管機構的控制權已經失去了。畢竟,較低級別允許你輕松管理程序的基本組件。
軟件接口的分類與通過它們控制的應用程序的目的和功能密切相關。事實上,在運行復雜系統時,通常有其他API可以通過其他方式解決相同的問題。
單獨的組分配用于管理軟件模塊(wxWidgets,Qt,GTK等),操作系統(Amiga ROM內核,Cocoa,Linux內核API,OS/2 API,POSIX,Windows API),聲音(DirectMusic /)的圖形組件的接口DirectSound,OpenAL),窗口接口等。它們的分離取決于層次結構和功能中的應用程度。計算機游戲的用戶通常不會懷疑這個圖形API為他們提供如此快速的圖片繪制和驚人的圖像亮度。
全局區塊鏈API通常包括各個編程語言的接口。在他們的幫助下,你可以管理非常具體和本地任務的解決方案。這一切都取決于具體算法的實現。
關于“怎么更好的使用區塊鏈API”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“怎么更好的使用區塊鏈API”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。