如何更好的利用區塊鏈API

區塊鏈容許數據提供者和消費者直接在單個開放系統中交易信息,而不是訂閱世界各地的數十個集中服務,並編寫他們的軟件來與每一個API進行通訊。閱讀此區塊鏈API教程,瞭解如何根據你的特定需求使用它。php

API(應用程序編程接口)是單個計算機程序能夠用來與另外一個程序交互的方法(類,過程,函數,結構或常量)的描述。它一般包含在任何Internet協議(例如RFC)的描述中,軟件框架或對操做系統函數的標準調用。它一般由單獨的軟件庫或操做系統服務實現。開發人員一般使用區塊鏈API來編寫各類應用程序。html

API定義程序(模塊,庫)提供的功能,並容許從該功能的實現方式中抽象出來。軟件組件經過API相互交互。在這種狀況下,組件一般造成層次結構:高級組件使用低級組件的API,而這些組件又使用甚至更低級別組件的API。經過因特網進行數據傳輸的協議是根據該原理構建的。前端

標準協議棧(OSI網絡模型)包含7層(從物理位傳輸層到應用協議層,相似於HTTP和IMAP協議)。每一個級別使用先前底層數據傳輸級別的功能,併爲下一個覆蓋級別提供必要的功能。java

注意:協議的概念與API的概念意義相近。二者都是功能的抽象,除了協議涉及數據傳輸,而API與應用程序的交互相關。node

區塊鏈API品種

區塊鏈軟件的開發一般包括各類困難部分。其中最重要的是建立區塊鏈API接口。有些項目經過提供如下API服務來幫助用戶和開發人員:python

網站收到比特幣付款的難以置信的簡便方式。這種服務是徹底安全的,是商務或我的使用的理想選擇:android

  • 區塊鏈連接的錢包服務。
  • 用於從區塊鏈錢包發送和接收付款的API。
  • 每一個塊和交易的數據請求的JSON。
  • 用於請求的簡單區塊鏈API:用於查詢區塊鏈數據的文本格式的簡單API。
  • Web套接字:具備低延遲的流式套接字,爲新塊和交易提供數據。

讓咱們從區塊鏈錢包API評論開始。區塊鏈Wallet API提供了一個簡單的界面。要使用此API,你須要啓動一個負責管理錢包的小型本地服務。你的應用程序經過HTTP API調用在本地與此服務進行交互。程序員

如今,你能夠重新的區塊鏈錢包API轉移比特幣。全部交易均價值0.0001 BTC礦工的費用。這是它在PHP中的樣子:web

<?
$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

接受比特幣支付變得愈來愈受歡迎和需求。在網站上接受比特幣支付的方法有不少種。最方便的方法之一是區塊鏈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)獲取它。
  • 用戶想要兌換的比特幣數量。

區塊鏈開發平臺和API

今天,有許多公司開發提供應用程序開發工具的平臺和項目。Blockchain.info有許多區塊鏈信息API,用於處理他們的電子錢包服務(這是最大的電子錢包服務之一),旨在發送和接收付款並執行其餘操做。該鏈建立了用於訪問分佈式記錄註冊表的完整節點中包含的數據的接口,以及標準信息請求:例如,關於你的比特幣餘額。此外,你能夠在特定地址執行操做時發送通知。

Stellar是一個半去中心化的(由網關組織服務,而不是礦工),可公開訪問的日誌和統一開發環境(區塊鏈API,多簽名API)綁定到Stripe支付網絡。還有其餘公司擁有帶有多邊簽名的區塊鏈錢包API,例如Block.io,Gem,BlockCypher等。

未來,須要更加統一的區塊鏈API開發環境,包括區塊鏈生態系統的各類不斷變化的組件(存儲,文件維護,錢包交互,移動支付,身份驗證和聲譽)。智能合約將容許咱們建立一個全球氣象數據市場meteorological data market,消費者將在其中請求實時數據並以通用格式接收數據(使用區塊鏈信息API)。

集中數據提供商能夠告別本身的格式和銷售活動,而是將數據傳送到全球可訪問的氣象市場dApp。能夠將區塊鏈的開發環境與其餘大型網段聯繫起來:例如,機器到機器(M2M)通訊和物聯網網絡的基礎設施,用於快速應用程序開發。在遙遠的將來,這種類型的高級集成應用程序的一個例子能夠是與智能城市基礎設施內的交通傳感器交互的智能手錶,以便使用比特幣中的智能合約自動預留和支付流量。

API操做系統和多樣性問題

幾乎全部操做系統(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,區塊鏈信息API,區塊鏈錢包API,交易腳本語言,P2P節點通訊API和用於檢查網絡中的交易的客戶端API。
  • 應用程序編程接口(API)如今包含在密碼保護的公共基礎結構中(區塊鏈)。
  • 區塊鏈被用做數據庫的一種新形式:例如,做爲永久存儲不可變密碼區塊鏈API密鑰(或哈希)的分佈式哈希表(DHT),與大量存儲的數據鏈相關聯。
  • 一種新型瀏覽器將容許用戶運行去中心化式應用程序(Dapps),而不只僅是網頁(例如,以太坊中的Mist)。

它還能夠解決許多更棘手的問題。其中之一是集中化。區塊鏈技術在將來的世界中可能很是有用,在這個世界中,集中式和去中心化式模型都將獲得應用。它不只會破壞現有的陳規定型觀念和計劃,還有助於發展結合了舊的和創新的方法的大型生態系統。

若是你須要有關區塊鏈技術的更多信息,請聯繫應用團隊。

==================================================================

若是你想學習區塊鏈並在Blockchain Technologies創建職業生涯,那麼請查看咱們分享的一些以太坊、比特幣、EOS、Fabric等區塊鏈相關的交互式在線編程實戰教程:

  • java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • php以太坊,主要是介紹使用php進行智能合約開發交互,進行帳號建立、交易、轉帳、代幣開發以及過濾器和交易等內容。
  • 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • ERC721以太坊通證明戰,課程以一個數字藝術品創做與分享DApp的實戰開發爲主線,深刻講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約代碼庫二次開發,實戰項目採用Truffle,IPFS,實現了通證以及去中心化的通證交易所。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括帳戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
  • c#比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在C#代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是C#工程師不可多得的比特幣開發學習課程。
  • EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、帳戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
  • 深刻淺出玩轉EOS錢包開發,本課程以手機EOS錢包的完整開發過程爲主線,深刻學習EOS區塊鏈應用開發,課程內容即涵蓋帳戶、計算資源、智能合約、動做與交易等EOS區塊鏈的核心概念,同時也講解如何使用eosjs和eosjs-ecc開發包訪問EOS區塊鏈,以及如何在React前端應用中集成對EOS區塊鏈的支持。課程內容深刻淺出,很是適合前端工程師深刻學習EOS區塊鏈應用開發。
  • Hyperledger Fabric 區塊鏈開發詳解,本課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、信道配置與啓動、鏈碼通訊接口等核心概念,也包含Fabric網絡設計、nodejs鏈碼與應用開發的操做實踐,是Nodejs工程師學習Fabric區塊鏈開發的最佳選擇。
  • Hyperledger Fabric java 區塊鏈開發詳解,課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、信道配置與啓動、鏈碼通訊接口等核心概念,也包含Fabric網絡設計、java鏈碼與應用開發的操做實踐,是java工程師學習Fabric區塊鏈開發的最佳選擇。
  • tendermint區塊鏈開發詳解,本課程適合但願使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。

匯智網原創翻譯,轉載請標明出處。這裏是如何更好的利用區塊鏈API

相關文章
相關標籤/搜索