導航:首頁 > 礦池算力 > 礦池rpc介面

礦池rpc介面

發布時間:2023-06-01 10:36:00

1. RPC 調用和 HTTP 調用的區別

在說RPC和HTTP的區別之前,我覺的有必要了解一下OSI的七層網路結構模型。

實際應用過程中,五層協議結構裡面是沒有表示層和會話層的。應該說它們和應用層合並了。
我們應該將重點放在 應用層 傳輸層 這兩個層面。

 

RPC需要從三個角度來介紹RPC:

先說說RPC服務的基本架構吧,見下圖:

一個完整的RPC架構裡麵包含了四個核心的組件,分別是Client , Server, Client Stub以及Server Stub。
這個Stub大家可以理解為存根。

什麼是同步調用?什麼是非同步調用?
同步調用就是客戶端等待調用執行完成並返回結果。
非同步調用就是客戶端不等待調用執行完成返回結果,不過依然可以通過回調函數等接收到返回結果的通知。如果客戶端並不關心結果,則可以變成一個單向的調用。
這個過程有點類似於Java中的callable和runnable介面,我們進行非同步執行的時候,如果需要知道執行的結果,就可以使用callable介面,並且可以通過Future類獲取到非同步執行的結果信息。如果不關心執行的結果,直接使用runnable介面就可以了,因為它不返回結果,當然啦,callable也是可以的,我們不去獲取Future就可以了。

目前流行的開源RPC框架還是比較多的。下面重點介紹三種:

 

大部分企業開發的模式一直為HTTP介面開發,也就是我們常說的RESTful風格的服務介面。
的確,對於在介面不多、系統與系統交互較少的情況下,解決信息孤島初期常使用的一種通信手段;
優點就是簡單、直接、開發方便。
利用現成的http協議進行傳輸。
比如下面這個例子:
POST http://www.httpexample.com/restful/buyer/info/shar
介面可能返回一個JSON字元串或者是XML文檔。然後客戶端再去處理這個返回的信息,從而可以比較快速地進行開發。

對於大型企業來說,內部子系統較多、介面非常多的情況下,RPC框架的好處就顯示出來了

 

RPC服務和HTTP服務還是存在很多的不同點的。
一般來說,RPC服務主要是針對大型企業的
HTTP服務主要是針對小企業的,因為RPC效率更高,而HTTP服務開發迭代會更快。

總之,選用什麼樣的框架不是按照市場上流行什麼而決定的,而是要對整個項目進行完整地評估,
從而在仔細比較兩種開發框架對於整個項目的影響,最後再決定什麼才是最適合這個項目的。
一定不要為了使用RPC而每個項目都用RPC,而是要因地制宜,具體情況具體分析。

2. 以太坊stratum協議原理

參照比特幣的 stratum協議 和 NiceHash的stratum協議規范 編寫了一版以太坊版本的stratum協議說明.

stratum協議是目前最常用的礦機礦池之間的TCP通訊協議。

以太坊是一個去中心化的網路架構,通過安裝Mist客戶端的節點來轉發新交易和新區塊。而礦機、礦池也同時形成了另一個網路,我們稱之為礦工網路。

礦工網路分成礦機、礦池、錢包等幾個主要部分,有時礦池軟體與錢包安裝在一起,可合稱為礦池。

礦機與礦池軟體之間的通訊協議是 stratum ,而礦池軟體與錢包之間的通訊是 bitcoinrpc 介面。

stratum是 JSON 為數據格式.

礦機啟動,首先以 mining.subscribe 方法向礦池連接,用來訂閱工作。

礦池以 mining.notify 返回訂閱號、ExtraNonce1和ExtraNonce2_size。

Client:

Server:

其中:

是 訂閱號 ;

080c是 extranonce ,Extranonce可能最大3位元組;

礦機以 mining.authorize 方法,用某個帳號和密碼登錄到礦池,密碼可空,礦池返回 true 登錄成功。該方法必須是在初始化連接之後馬上進行,否則礦機得不到礦池任務。

Client:

Server:

難度調整由礦池下發給礦機,以 mining.set_difficulty 方法調整難度, params 中是難度值。
Server:

礦機會在下一個任務時採用新難度,礦池有時會馬上下發一個新任務並且把清理任務設為true,以便礦機馬上以新難度工作。

該命令由礦池定期發給礦機,當礦機以 mining.subscribe 方法登記後,礦池應該馬上以 mining.notify 返回該任務。

Server:

任務ID : bf0488aa ;

seedhash : 。每一個任務都發送一個seedhash來支持盡可能多的礦池,這可能會很快地在貨幣之間交換。

headerhash : 。

boolean cleanjobs : true 。如果設為true,那麼礦工需要清理任務隊列,並立即開始從事新提供的任務,因為所有舊的任務分享都將導致陳舊的分享錯誤。如果是 false 則等當前任務結束才開始新任務。

礦工使用seedhash識別DAG,然後帶著headerhash,extranonce和自己的minernonce尋找低於目標的share(這是由提供的難度而產生的)。

礦機找到合法share時,就以」 mining.submit 「方法向礦池提交任務。礦池返回true即提交成功,如果失敗則error中有具體原因。

Client:

任務ID : bf0488aa

minernonce : 6a909d9bbc0f 。注意minernonce是6個位元組,因為提供的extranonce是2個位元組。如果礦池提供3位元組的extranonce,那麼minernonce必須是5位元組

Server:

一般的礦機與礦池通訊過程就如下所示:

3. 如何利用共享內存 實現rpc調用

關於RPC 路由器的實現主要分布在smd_rpcrouter.c、smd_rpcrouter_device.c、smd_rpcrouter_servers.c、smd_rpcrouter_clients.c等文件中。RPC路由器起著RPC伺服器查詢、RPC伺服器和RPC客戶端的注冊和銷毀,以及底層通信的封裝功能,類似於TCP協議。

在實際的實現中,RPC路由器和RPC伺服器均是作為一個虛擬的字元型設備來存在的。

下面是RPC路由器的創建過程:

代碼3-11 RPC 路由器的創建過程

int msm_rpcrouter_init_devices(void)

{

int rc;

int major;

msm_rpcrouter_class=class_create(THIS_MODULE,

"oncrpc"); //創建設備節點

if (IS_ERR(msm_rpcrouter_class)) {

rc=-ENOMEM;

printk(KERN_ERR

"rpcrouter: failed to create oncrpc class ");

goto fail;

}

rc=alloc_chrdev_region(&msm_rpcrouter_devno,

0, //作為字元型設備分配資源

RPCROUTER_MAX_REMOTE_SERVERS + 1, "oncrpc");

if (rc<0) {

printk(KERN_ERR

"rpcrouter: Failed to alloc chardev region (%d) ", rc);

goto fail_destroy_class;

}

major=MAJOR(msm_rpcrouter_devno);

rpcrouter_device=device_create(msm_

rpcrouter_class, NULL, //創建設備

msm_rpcrouter_devno, NULL, "%.8x:%d",

0, 0);

if (IS_ERR(rpcrouter_device)) {

rc=-ENOMEM;

goto fail_unregister_cdev_region;

}

cdev_init(&rpcrouter_cdev, &rpcrouter_

router_fops); //字元型設備初始化

rpcrouter_cdev.owner=THIS_MODULE;

rc=cdev_add(&rpcrouter_cdev, msm_rpcrouter_devno, 1);

if (rc<0)

goto fail_destroy_device;

return 0;

fail_destroy_device:

device_destroy(msm_rpcrouter_class,

msm_rpcrouter_devno);//銷毀設備

fail_unregister_cdev_region:

unregister_chrdev_region(msm_rpcrouter_devno, //去注冊

RPCROUTER_MAX_REMOTE_SERVERS + 1);

fail_destroy_class:

class_destroy(msm_rpcrouter_class);

fail:

return rc;

}

4. 什麼是RPC

RPC是遠程過程調用(Remote Procere Call)的縮寫形式。SAP系統RPC調用的原理其實很簡單,有一些類似於三層構架的C/S系統,第三方的客戶程序通過介面調用SAP內部的標准或自定義函數,獲得函數返回的數據進行處理後顯示或列印。

進程間通信(IPC)在多任務操作系統或聯網的計算機之間運行的程序和進程所用的通信技術。有兩種類型的進程間通信(IPC)。

本地過程調用(LPC)LPC用在多任務操作系統中,使得同時運行的任務能互相會話。這些任務共享內存空間使任務同步和互相發送信息。遠程過程調用(RPC)RPC類似於LPC,只是在網上工作。RPC開始是出現在Sun微系統公司和HP公司的運行UNⅨ操作系統的計算機中。

(4)礦池rpc介面擴展閱讀

通過IPC和RPC,程序能利用其它程序或計算機處理的進程。客戶機/伺服器模式計算把遠程過程調用與其它技術(如消息傳遞)一道,作為系統間通信的一種機制。客戶機執行自己的任務,但靠伺服器提供後端文件服務。

RPC為客戶機提供向後端伺服器申請服務的通信機制,如圖R-4所示。如果你把客戶機/伺服器應用程序想作是一個分離的程序,伺服器能運行數據訪問部分,因為它離數據最近,客戶機能運行數據表示和與用戶交互的前端部分。這樣,遠程過程調用可看作是把分割的程序通過網路重組的部件。LPC有時也稱耦合(Coupling)機制。

用這種方式分割程序,當用戶要訪問數據時就無需每次拷貝整個資料庫或它的大部分程序到用戶系統。其實,伺服器只處理請求,甚至只執行一些數據計算,把得出的結果再發送給用戶。因為當數據存放在一個地方時,資料庫同步很容易實現,所以多個用戶可同時訪問相同的數據。

分布式計算環境是由一個通信系統——網路連接的計算機集群。很容易把這個網路看成一個計算平台,若是對等方式,其中任何一台計算機都能成為客戶機或伺服器。

一些處理任務可被分成獨立運行程序在不同的網路計算機上並行處理,而獨立的程序被交給最適合這個任務的計算機處理。這種策略可利用計算機空閑資源,提高網路的效益。一個典型的企業網包括許多運行著不同操作系統的異構計算機系統。

5. 如何學習區塊鏈

你是想學習區塊鏈開發技術還是只是想要了解區塊鏈是什麼,如果是前者,可以看看其他區塊鏈項目的代碼,先了解。如果是後者,可以關注一些好區塊鏈自媒體。區塊鏈是新興的產業,沒有現成的培訓班,全靠自己探索領悟。

6. 有什麼可以投資的虛擬貨幣

新一代比特幣-比特盛世誕生

大背景:區塊鏈技術的金融應用帶來極高投資價值

2018中國國際大數據產業博覽會26日在貴州省貴陽市開幕,會上指出我國未來會大力發展數字經濟,深入實施大數據和雲計算發展行動計劃,深入研究區塊鏈技術及應用。尤其在金融領域的落地應用,更是成為科技界和金融界共同關注的焦點。

1、區塊鏈的價值來源在於其能完美解決當下金融行業痛點:

當今資產證券化、保險、供應鏈金融、大宗商品交易、資產託管等多個金融場景中,由於參與主體眾多、信用評估代價高昂、中介機構結算效率低下等原因,傳統的金融服務手段難以有效解決行業長期存在的諸如信息不對稱、流程繁復冗餘、信息驗真成本高等核心痛點。

2、區塊鏈為什麼能解決上述痛點:

區塊鏈技術集成了分布式記賬、不可篡改、內置合約等多項基礎技術,構建了一種以更低成本建立信任的機制。基於區塊鏈技術的金融應用,可以實現所有市場參與人無差別獲取市場中所有交易信息和資產歸屬記錄的能力,有效解決了信息不對稱問題;智能合約嵌入減少了支付結算環節的出錯率,簡化了流程並提高效率;同時各參與方之間基於透明的信息和全新的信任機制無需再耗費人力、物力、財力去進行信息確認,這將大大降低各機構之間的信任成本進而降低金融服務價格和交易成本。

3、區塊鏈技術在金融領域的應用主要有以下方面:

數字貨幣

其中以比特幣最為出名。而在比特幣基礎上,又衍生出了大量其他種類的去中心化數字貨幣。如:比特盛世。

② 支付清算

與傳統支付體系相比,區塊鏈支付可以為交易雙方直接進行端到端支付,無需藉助銀行體系,在提高速度和降低成本方面能得到大幅的改善。

③ 數字票據

④ 銀行徵信管理:區塊鏈的優勢在於可依靠程序演算法自動記錄信用相關信息,並存儲在區塊鏈網路的每一台計算機上,信息透明、不可篡改、使用成本低。

⑤ 權益證明和交易所證券交易

歐美各大金融機構和交易所紛紛探索以區塊鏈技術為藍本打造下一代金融資產交易平台的應用研究。

4、區塊鏈發展前景

區塊鏈技術與金融領域結合的深度和廣度還遠未飽和,應用前景廣闊。未來發展區塊鏈技術以聯盟鏈為切入點將最具生命力,並對傳統金融行業痛點的改造產生重大效果和深遠影響。

響應區塊鏈的良好投資前景,國內企業阿里巴巴、京東、網路均已入局。以區塊鏈技術為依託的金融場景應用帶給我們安全與便利的同時,更會提供給我們更廣闊的投資空間。以比特幣為代表的數字貨幣的興起和價格暴漲(比特幣2009年剛上市時約人民幣2角錢,現今價格7300美元左右!)就是最好的證明,嗅覺敏銳的人已從中獲利頗豐。

新一代比特盛世幣的理念及技術實現

摘要:這是一款以中本聰所開發的比特幣為基礎,改進並添加了諸如雙層獎勵制網路—也稱為主節點網路,等多項新功能的加密數字貨幣。其中還包含為提高可互換性的匿名支付(比特盛世),和在不依賴中心權威下實現即時交易確認的即時支付功能對接(p2p商城)。

1. 介紹

2009年,中本聰提出比特幣的概念,自那以後,比特幣已迅速在主流應用和商業用途中傳播開來,成為首個吸引大量用戶的數字貨幣,是數字貨幣史上的里程碑。不過從完成交易的角度來看比特幣接收的情形,我們可以發現一個重要問題,就是比特幣區塊確認交易的時間過長,而傳統的支付公司已找出使買賣雙方實現比特幣交易零確認的解決方案,但這一解決方案通常是要在協議之外採用可信賴的第三方完成交易。

比特幣提供假名交易,實現發送者和接受者之間一對一交易的關系,並能永遠記錄全網發生過的交易。比特幣只提供低層次的隱私保護,這點在學術界眾所周知,盡管有此不足,許多人仍然相信區塊鏈記錄的轉賬歷史。

基於中本聰成果,比特盛世以保護隱私為要旨的加密數字貨幣。我們在比特幣概念的基礎上進行了一系列的改進,由此誕生出一個去中心化的和具備良好匿名性的加密數字貨幣,它支持防篡改的即時交易,又有能為比特盛世網路提供服務獎勵制的點對點次級網路。

2. 主節點網路

全節點是運行在 p2p 網路上的伺服器,讓小節點使用它們來接受來自全網的動態變化。這些全節點需要顯著的流量和要消耗大量成本的其它資源,由此在一段時間內會觀察到比特幣網路上的這些節點數量呈現穩步下降的趨勢,使區塊廣播的時間需要額外增加40秒。為解決這問題,提出了許多方案,例如引入微軟研究的新獎勵計劃和 Bitnodes激勵計劃。

圖6:挖礦獎勵模型

7. 比特幣礦池的協議stratum

轉自: https://zhuanlan.hu.com/p/23558268
getblocktemplate協議誕生於2012年中葉,此時礦池已經出現。礦池採用getblocktemplate協議與節點客戶端交互,採用stratum協議與礦工交互,這是最典型的礦池搭建模式。

與getwork相比,getblocktemplate協議最大的不同點是:getblocktemplate協議讓礦工自行構造區塊。如此一來,節點和挖礦完全分離。對於getwork來說,區塊鏈是黑暗的,getwork對區塊鏈一無所知,他只知道修改data欄位的4個位元組。對於getblocktemplate來說,整個區塊鏈是透明的,getblocktemplate掌握區塊鏈上與挖礦有關的所有信息,包括待確認交易池,getblocktemplate可以自己選擇包含進區塊的交易。

挖礦有兩種方式,一種叫SOLO挖礦,另一種是去礦池挖礦。前文所述的在節點客戶端直接啟動CPU挖礦,以及依靠getwork+cgminer驅動顯卡直接連接節點客戶端挖礦,都是SOLO挖礦,SOLO好比自己獨資買彩票,不輕易中獎,中獎則收益全部歸自己所有。去礦池挖礦好比合買彩票,大家一起出錢,能買一堆彩票,中獎後按出資比率分配收益。理論上,礦機可以藉助getblocktemplate協議鏈接節點客戶端SOLO挖礦,但其實早已沒有礦工會那麼做,在寫這篇文章時,比特幣全網算力1600P+,而當前最先進的礦機算力10T左右,如此算來,單台礦機SOLO挖到一個塊的概率不到16萬分之一,礦工(人)投入真金白銀購買礦機、交付電費,不會做風險那麼高的投資,顯然投入礦池抱團挖礦以降低風險,獲得穩定收益更加適合。因此礦池的出現是必然,也不可消除,無論是否破壞系統的去中心化原則。

礦池的核心工作是給礦工分配任務,統計工作量並分發收益。礦池將區塊難度分成很多難度更小的任務下發給礦工計算,礦工完成一個任務後將工作量提交給礦池,叫提交一個share。假如全網區塊難度要求Hash運算結果的前70個比特位都是0,那麼礦池給礦工分配的任務可能只要求前30位是0(根據礦工算力調節),礦工完成指定難度任務後上交share,礦池再檢測在滿足前30位為0的基礎上,看看是否碰巧前70位都是0。

礦池會根據每個礦工的算力情況分配不同難度的任務,礦池是如何判斷礦工算力大小以分配合適的任務難度呢?調節思路和比特幣區塊難度一樣,礦池需要藉助礦工的share率,礦池希望給每個礦工分配的任務都足夠讓礦工運算一定時間,比如說1秒,如果礦工在一秒之內完成了幾次任務,說明礦池當前給到的難度低了,需要調高,反之。如此下來,經過一段時間調節,礦池能給礦工分配合理難度,並計算出礦工的算力。

礦池通過getblocktemplate協議與網路節點交互,以獲得區塊鏈的最新信息,通過stratum協議與礦工交互。此外,為了讓之前用getwork協議挖礦的軟體也可以連接到礦池挖礦,礦池一般也支持getwork協議,通過階層挖礦代理機制實現(Stratum mining proxy)。須知在礦池剛出現時,顯卡挖礦還是主力,getwork用起來非常方便,另外早期的FPGA礦機有些是用getwork實現的,stratum與礦池採用TCP方式通信,數據使用JSON封裝格式。

先來說一下getblocktemplate遺留下來的幾個問題:

礦工驅動:在getblocktemplate協議里,依然是由礦工主動通過HTTP方式調用RPC介面向節點申請挖礦數據,這就意味著,網路最新區塊的變動無法及時告知礦工,造成算力損失。

數據負載:如上所述,如今正常的一次getblocktemplate調用節點都會反饋回1.5M左右的數據,其中主要數據是交易列表,礦工與礦池需頻繁交互數據,顯然不能每次分配工作都要給礦工附帶那麼多信息。再者巨大的內存需求將大大影響礦機性能,增加成本。

Stratum協議徹底解決了以上問題。

Stratum協議採用主動分配任務的方式,也就是說,礦池任何時候都可以給礦工指派新任務,對於礦工來說,如果收到礦池指派的新任務,應立即無條件轉向新任務;礦工也可以主動跟礦池申請新任務。

現在最核心的問題是如何讓礦工獲得更大的搜索空間,如果參照getwork協議,僅僅給礦工可以改變nNonce和nTime欄位,則交互的數據量很少,但這點搜索空間肯定是不夠的。想增加搜索空間,只能在hashMerkleroot下功夫,如果讓礦工自己構造coinbase,那麼搜索空間的問題將迎刃而解,但代價是必要要把區塊包含的所有交易都交給礦工,礦工才能構造交易列表的Merkleroot,這對於礦工來說壓力更大,對於礦池帶寬要求也更高。

Stratum協議巧妙解決了這個問題,成功實現既可以給礦工增加足夠的搜索空間,又只需要交互很少的數據量,這也是Stratum協議最具創新的地方。

再來回顧一下區塊頭的6個欄位80位元組,這個很關鍵,nVersion,nBits,hashPrevBlock這3個欄位是固定的,nNonce,nTime這兩個欄位是礦工現在就可以改變的。增加搜索空間只能從hashMerkleroot下手,這個繞不過去。Stratum協議讓礦工自己構造coinbase交易,coinbase的scriptSig欄位有很多位元組可以讓礦工自由填充,而coinbase的改動意味著hashMerkleroot的改變。從coinbase構造hashMerkleroot無需全部交易,

如上圖所示,假如區塊將包含13筆交易,礦池先對這13筆交易進行處理,最後只要把圖中的4個黑點(Hash值)交付給礦工,同時將構造coinbase需要的信息交付給礦工,礦工就可以自己構造hashMerkleroot(圖中的綠點都是礦工自行計算獲得,兩兩合並Hash時,規定下一個黑點代表的hash值總是放在右邊)

。按照這種方式,假如區塊包含N筆交易,礦池可以濃縮成log2(N)個hash值交付給礦工,這大大降低了礦池和礦工交互的數據量。

Stratum協議嚴格規定了礦工和礦池交互的介面數據結構和交互邏輯,具體如下:

1. 礦工訂閱任務

啟動挖礦機器,使用mining.subscribe方法鏈接礦池

返回數據很重要,礦工需本地記錄,在整個挖礦過程中都用到,其中:

Extranonce1,和 Extranonce2對於挖礦很重要,增加的搜索空間就在這里,現在,我們至少有了8個位元組的搜索空間,即nNonce的4個位元組,以及 Extranonce2的4個位元組。

2. 礦池授權

在礦池注冊一個賬號 ,添加礦工,礦池允許每個賬號任意添加礦工數,並取不同名字以區分。礦工使用mining.authorize方法申請授權,只有被礦池授權的礦工才能收到礦池指派任務。

3. 礦池分配任務

以上每個欄位信息都是必不可少,其中:

有了以上信息,再加上之前拿到的Extranonce1 和Extranonce2_size,就可以挖礦了。

4. 挖礦

1) 構造coinbase交易

用到的信息包括Coinb1, Extranonce1, Extranonce2_size 以及Coinb2,構造很簡單:

為啥可以這樣,因為礦池幫礦工做了很多工作,礦池已經構建了coinbase交易,系列化後在指定位置分割成coinb1和coinb2,coinb1和coinb2包含指定信息,比如coinb1包含區塊高度,coinb2包含了礦工的收益地址和收益額等信息,但是這些信息對於礦工來說無關緊要,礦工挖礦的地方只是Extranonce2 的4個位元組。另外Extranonce1是礦池寫入區塊的指定信息,一般來說,每個礦池會寫入自己礦池的信息,比如礦池名字或者域名,我們就是根據這個信息統計每個礦池在全網的算力比重。

2) 構建Merkleroot

利用coinbase和merkle_branch,按照上圖方式構造hashMerkleroot欄位。

3) 構建區塊頭

填充餘下的5個欄位,現在,礦池可以在nNonce和Extranonce2 里搜索進行挖礦,如果嫌搜索空間還不夠,只要增加Extranonce2_size為多幾個位元組就可輕而易舉解決。

5. 礦工提交工作量

當礦工找到一個符合難度的shares時,提交給礦池,提交的信息量很少,都是必不可少的欄位:

礦池拿到以上5個欄位後,首先根據任務號ID找出之前分配任務前存儲的信息(主要是構建的coinbase交易以及包含的交易列表等),然後重構區塊,再驗證shares難度,對於符合難度要求的shares,再檢測是否符合全網難度。

6. 礦池給礦工調節難度

礦池記錄每個礦工的難度,並根據shares率不斷調節以指定合適難度。礦池可以隨時通過mining.set_difficulty方法給礦工發消息另其改變難度。

如上,Stratum協議核心理念基本解析清楚,在getblocktemplate協議和Stratum協議的配合下,礦池終於可以大聲的對礦工說,讓算力來的更猛烈些吧。

8. 求教,比特幣錢包怎麼與php建立連接

就目前來說如果有開發文檔你需要根據開發文檔來弄,如果不是那就沒有辦法了。

希望我的回答可以幫到你,如果有什麼不懂可以追問。

9. 什麼是API介面,具體是什麼意思

作為軟體應用而毀逗言漏余旁,很多資源和數據不一定就是由其自身提供的,某些功能還是需要調用第三方提供的服務,這其中就涉及到API介面的調用。

什麼是API介面?

API是指應用程序編程介面,我們通過API介面可以實現特定的功能,而不需要了解其內部實現細節。可以把API介面理解為是特定服務的一種封裝,將服務封裝起來提供給他人調用,這樣一來很多功能不需要從新開發。

舉個例子,我們想要知道一周天氣如何,如果由返橡自己來實現這個功能很難,因為天氣數據只有氣象部門才知道。那該如何知道天氣信息呢?氣象部分提供數據API給我們使用,我們只要輸入地區就會知道該地區一周的天氣情況,但我們並不需要了解這天氣預報是如何實現的。

另外,不同系統和編程語言之間的數據通訊往往也採用API形式進行數據交接。

常見的API形式有哪些?

上面我們說到了,API其實就是一類服務的封裝。我們可以使用不同的編程語言編寫API,開發習慣和編程語言的不同導致API風格也存在差異。常見的API有以下幾種形式:

1、HTTP類型介面

基於HTTP協議提供的API,這類API常常以「網址」形式提供的,像現在主流的RESTful就屬於這類介面。

2、RPC介面

RPC它是指遠程過程調用,將一部分代碼邏輯放在遠程伺服器上部署,然後在需要的地方調用即可(調用遠程方法就像調用本地方法一樣),本質上是Client/Server模式,而且支持多種協議和數據傳輸方式。

3、WebService介面

WebService並不具象地指某種API,我們將以WEB形式提供的服務都稱之為WebService,像RESTful也屬於WebService。

閱讀全文

與礦池rpc介面相關的資料

熱點內容
一美元能買多少比特幣 瀏覽:155
比特幣利好區域連 瀏覽:766
各國對比特幣態度 瀏覽:806
etcbtc什麼意思 瀏覽:709
比特幣錢包請求付款的消息作什麼用 瀏覽:466
挖礦一般用哪些卡 瀏覽:888
比特幣偷挖 瀏覽:390
btc前十的交易平台 瀏覽:579
r9270挖礦驅動 瀏覽:139
以太坊中的uncle 瀏覽:746
冒險與挖礦魔呂屬性 瀏覽:44
半仙和多米和暗墨一起去挖礦 瀏覽:598
奶塊暮色森林挖礦210層 瀏覽:398
砍樹挖礦擴建種菜游戲叫什麼 瀏覽:576
螞蟻礦機期貨如何交易 瀏覽:182
比特幣就一垃圾 瀏覽:824
以太坊沒有到賬 瀏覽:259
虛擬貨幣賺錢嗎6 瀏覽:373
brooke區塊鏈 瀏覽:752
btc上次減半漲了多少 瀏覽:596