IFT提供標準的專案底層作業系統,可以作為基礎設施,在上面構建各種生態,延伸了各種商業的使用場景,為有需求的商業機構建立基於擔保支付的賬戶體系、加密數字子貨幣發行、支付交易結算系統及用於去中心化的數字貨幣交易所開源的程式碼及實施方案,實現自己的商業模式架構。
技術結構
1、共識機制
DPOS(授權股權證明)由受託人來建立區塊,受託人來自於普通使用者節點,需要首先進行註冊,然後透過宣傳推廣,尋求社羣信任並投票,獲得足夠排行到前101名的時候,才可以被系統接納為真正可以處理區塊的節點,並獲得鑄幣獎勵。比特幣是透過計算機算力來投票,算力高的自然得票較多,容易獲勝。DPOS機制是透過資產佔比(股權)來投票,更多的加入了社羣人的力量,人們為了自身利益的最大化會投票選擇相對可靠的節點,相比更加安全和去中心化。整個機制需要完成如下過程:
(1)註冊受託人,並接受投票
使用者註冊為受託人;
接受投票(得票數排行前101位);
(2)維持迴圈,調整受託人
塊週期:也稱為時段週期(Slot),每個塊需要10秒,為一個時段(Slot);
受託人週期:或叫迴圈週期(Round),每101個區塊為一個迴圈週期(Round)。
這些塊均由101個代表隨機生成,每個代表生成1個塊。一個完整迴圈週期大概需要1010秒(101x10),約16分鐘;每個週期結束,前101名的代表都要重新調整一次;
獎勵週期:根據區塊鏈高度,設定里程碑時間(Milestone),在某個時間點調整區塊獎勵。
2.註冊受託人
註冊受託人必須使用客戶端軟體,因此這項功能需要與節點進行互動,也就是說客戶端要呼叫節點Api。管理受託人的模組是 modules/delegates.js ,根據前面篇章的經驗,我們很容易找到該模組提供的Api:"put /": "addDelegate"
最終的Api資訊如下:
put /api/delegates
對應的方法是,modules/delegates.js模組的addDelegate()方法。該方法與註冊使用者別名地址等功能性交易沒有區別,註冊受託人也是一種交易,型別為“DELEGATE”(受託人)。
3.投票
該功能是普通使用者具備的功能,任何普通使用者都有投票權利,所以放在帳號管理模組,即“modules/accounts.js”檔案裡,是符合邏輯的。
4.塊(時段)週期(Slots)
(1)時間處理
創世時間beginEpochTime()和getEpochTime(time)兩個私有方法定義了首尾兩個時間點,其他的方法都是基於這兩個方法計算出來的時間段,所以不會出現時間上不統一的錯誤。
(2)編碼風險
但是,唯一可能出現錯誤的地方,就是getEpochTime(time)方法,看下面程式碼的16行,new Date() 方法獲得的是作業系統的時間,這個是可以人為改變的,一般情況下不會有什麼影響,但個別情況也可能引起分叉行為。
// helpers/slots.js
function getEpochTime(time) {
if (time === undefined) {
// 16行
time = (new Date()).getTime();
}
var d = beginEpochTime();
var t = d.getTime();
return Math.floor((time - t) / 1000);
}
(3)週期實現
從現在時間點到創世時間,有一個時間段,大小假設為 t,那麼 t/10 取整,就是當前時段數(getSlotNumber())),這裡的10是由 constants.slots.interval 設定的。
具體到一個受託人,它處理的區塊時段值相差應該是受託人總數,這裡是101, 這個值由 constants.delegates 設定。因此,getLastSlot()方法(helpers/slots.js)返回的是受託人最新時段值。
5.受託人(迴圈)週期(Round)
為了安全,受託人每輪都要變更,確保那些不穩定或者做壞事的節點被及時剔除出去。另外,儘管系統會隨機找尋受託人產生新塊,但是在一個輪次內,每個受託人都有機會產生一個新區塊(並獲得獎勵)並廣播,這一點與比特幣每個節點都要透過工作量證明機制(PoW)競爭獲得廣播權相比,要簡化很多。
6.獎勵週期(Milestones)
該週期主要針對塊獎勵進行設定,與比特幣的塊獎勵每4年減半類似,IFT的塊獎勵也會遵循一定規則。大致的情況是這樣的,第一階段(大概1年)獎勵5IFTC/塊,第二年獎勵4IFTC/塊,4年之後降到1IFTC/塊,以後永遠保持1IFTC/塊,所以總量始終在少量增發。
具體增髮量很容易計算,第一階段時間長度 = rewards.distance 10秒 / (24 6060) = 347.2天,增髮量 = rewards.distance 5 = 3000000 * 5 = 1500萬。第二階段1200萬,第三階段900萬,第四階段600萬,以後每階段300萬。這種適當通脹的情況是DPoS機制的一個特點,也是為了給節點提供獎勵,爭取更多使用者為網路做貢獻。
7.底層架構
IFT的底層架構如下圖所示。
SDK與BaaS平臺
IFT將為上層應用提供gRPC API,以及封裝了API的SDK供應用呼叫。應用可以透過 SDK 訪問IFT網路中的多種資源,包括IFTC賬戶、交易、賬本、智慧合約、監聽(由智慧合約傳送或區塊生成的)事件等。IFT SDK 同時將封裝更多IFT場景下的特有功能,包括IFTC錢包、IP內容查詢與訪問等。IFTSDK初期將包括NodeJs和Python版本。IFT將上線完全公開的區塊鏈服務(BaaS)平臺,提供一站式的測試網路搭建、分散式賬本內容視覺化呈現、智慧合約開發與測試、網路監控與分析等功能。BaaS平臺提供的區塊鏈模擬環境將貼近實際應用場景,使開發者可以將經過檢驗的業務模型很容易地遷移釋出到IFT主鏈。
8.全球分散式專案開發
聚全球開發者之力創造IFT平臺, 開源核心程式碼,全球的程式設計師都可以進行再次開發和bug修復提交。IFT平臺做的全球分散式開發系統,核心是提供了開發者一套參與開發的獎勵機制,運營者提供開發任務 ,由全球的開發者認領開發競爭,根據平臺規則在GitHub上每一條併入主線的任務程式碼都會獲得IFTC代幣獎勵,激勵全球更多優秀的開發者參與完善IFT平臺。
關於更多IFT資訊:
更多區塊鏈專案介紹:http://www.qukuaiwang.com.cn/news/xiangmu
風險提示:區塊鏈投資具有極大的風險,專案披露可能不完整或有欺騙。請在嘗試投資前確定自己承受以上風險的能力。區塊網只做專案介紹,專案真假和價值並未做任何稽覈。