[Blockchain]淺述區塊鏈上嘅REST API

Pug'Maw
·
·
IPFS
·
淺述區塊鏈上嘅REST API

今日想講下Blockchain上嘅REST API,但首先要明白咩係 API 同 REST 先。

client - server

Application Programming Interface (API)

API

API 全名係 Application Programming Interface( 應用程式介面 ),主要充當客戶端和服務器發送請求和響應之間的中介。

如果 UI 係 User Interface ( 用戶介面 ),俾人通過簡單嘅介面操作,去用唔同嘅軟件或者APPs,即係平時你用 Gmail 個時嘅一系列Click Click Click 或者 係 Twitter 度留言嘅操作。

咁 API 就會係俾電腦或者程式使用嘅介面,通過一串預先定義嘅交互標準,由客戶端提交請求(Request)俾服務器,或服務器響應(Response)客戶端請求。


Representational State Transfer (REST)

REST Triangle

REST 全名係 Representational State Transfer,係一種軟體架構風格( Style )。

佢唔係一種好硬性嘅標準或者規定,反而係一種設計模式或者概念。

上圖為 REST Triangle,講左一D REST 係實作上使用嘅 Nouns, Verbs 與 Content types。

  • Nouns = Identification of resources( 唯一的資源識別方法 ),例如:網址URL 或者你嘅身份證號碼。
  • Verbs = Manipulation of resources through representations ( 操作方法 ),例如:HTTP嘅GET, POST, PUT, DELETE Methods,想對呢樣嘢做乜?
  • Content types = Self-descriptive messages( 自我描述資訊 ),例如:HTTP嘅Content-Type,即係你係咩,你係人(That's the answer)

詳細可以參考:Here 同佢嘅Reference,有興趣自己睇。


REST API

REST API MODEL

而運用左REST設計風格嘅API,就可以叫做REST API。

REST API 出色嘅靈活性可以幫助開發人員快速簡單咁以他們的格式實現需求。

REST API 請求結構包括:

  1. HTTP method,即HTTP嘅GET(獲取), POST(創建), PUT(更新), DELETE(刪除) Method
  2. Endpoints(端點),即網址URL
  3. Headers,即用作提供一些身份驗證數據,如:API 密鑰,IP 地址,瀏覽器類型
  4. Body,即想要添加或替換嘅數據或資源
  5. Request parameters,即額外參數

Blockchain REST API

Blockchain REST API

通過REST API,我地可以得知鏈上嘅數據或者狀態,從而係我地嘅應用程式度更新或顯示。

咁唔同嘅公鏈都有佢嘅REST API及格式,例如:以太坊,COSMOS,波卡等等,俾開發者去使用。


COSMOS REST API

COSMOS REST API

通過REST API,我地可以查詢一D鏈上嘅數據,例如:你戶口嘅Token balanace,節點資訊。

Query

咁本人就查下自己有幾多ATOM啦,打番自己wallet address。

https://api.cosmos.network/bank/balances/{your wallet address}

Result:

{
 "height": "10615933",
 "result": [
   {
    "denom": "uatom",
    "amount": "357285"
   }
 ]
}

咁本窮人就只有0.357285粒ATOM,解釋下先:

  • height (區塊高度) = 10615933 ,你可以當係鏈上嘅時間
  • denom (代幣標識符) = uatom ,即係ATOM
  • amount (數量) = 357285,得0.357285粒ATOM,窮

放條link,俾大家試下:https://v1.cosmos.network/rpc/v0.41.4

另外,所有cosmos chain 都適用相關REST API,但要改番做相關公開Endpoint,例如:

ATOM = api.cosmos.network

SECRET = secretapi.io

Terra = lcd.terra.dev

OSMO = osmosis.stakesystems.io

呢類公開API通常速度一般,主要俾開發者調試,想要生產級嘅設施就要課水租用。


ETHEREUM REST API

ETHEREUM REST API

都係一樣,咁本人就查下自己有幾多ETH啦,打番自己wallet address。

https://api.blockcypher.com/v1/eth/main/addrs/{your wallet address}/balance

Result:

Query
{
  "address": "0x30XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "total_received": 555323330413034546,
  "total_sent": 549157516754017841,
  "balance": 9365007499214872,
  "unconfirmed_balance": 0,
  "final_balance": 9365007499214872,
  "n_tx": 32,
  "unconfirmed_n_tx": 0,
  "final_n_tx": 32,
  "nonce": 23,
  "pool_nonce": 23
}

咁本窮人就只有0.00936粒ETH,解釋下先:

  • address (位址) = 0x30XXX...... ,你個wallet address(即係你個account)
  • total_received (收款總數) = 555323330413034546,即係總數收過幾多ETH
  • total_sent (付款總數) = 549157516754017841,即係總數俾過幾多ETH
  • balance (現時賬戶餘額) = 9365007499214872,即係你有幾錢(ETH)
  • unconfirmed_balance (未確定賬戶餘額),有時有D transaction未確定就會顯示係到
  • final_balance (最終賬戶餘額) = 9365007499214872,即係你最終有幾錢(ETH)
  • n_tx (交易次數) = 32,即係呢個Wallet交易總次數
  • unconfirmed_n_tx (未確定交易次數) = 0,有時有D transaction未確定就會顯示係到
  • final_n_tx (最終交易次數) = 32,即係你最終交易次數
  • nonce (雜湊值)= 23
  • pool_nonce (雜湊值)= 23

放條link,俾大家試下:https://www.blockcypher.com/dev/ethereum/#block-height-endpoint


本文其不構成任何財務建議,僅請咁多位注意。

以及,本文並不深入探討任何一種技術及其優劣,可能會有一定錯誤,還請閣下提出及指正。







CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!