1 概述
為解決各區(qū)塊鏈網(wǎng)絡(luò)之間無法有效地進(jìn)行價(jià)值傳輸?shù)耐袋c(diǎn)谚鄙,基于異構(gòu)森林網(wǎng)絡(luò)架構(gòu)绽快,提出價(jià)值傳輸協(xié)議(VTP, Value Transport Protocol)芥丧。該協(xié)議涵蓋了對(duì)鏈上資產(chǎn)的統(tǒng)一標(biāo)識(shí),對(duì)資產(chǎn)查找的路由策略坊罢,是一套完整的用于區(qū)塊鏈價(jià)值網(wǎng)絡(luò)的傳輸協(xié)議续担。
2 命名機(jī)制
對(duì)于區(qū)塊鏈網(wǎng)絡(luò),其上的數(shù)據(jù)都是資產(chǎn)活孩,對(duì)每個(gè)資產(chǎn)進(jìn)行命名物遇,標(biāo)識(shí)其唯一性,對(duì)于資產(chǎn)的注冊(cè)憾儒、發(fā)現(xiàn)询兴、轉(zhuǎn)移和轉(zhuǎn)換都具有極大的意義『蕉幔基于 VTP 協(xié)議蕉朵,我們定義了統(tǒng)一資產(chǎn)標(biāo)識(shí)命令規(guī)范(UAI, Uniform Asset Identifier)崔涂,對(duì)資產(chǎn)采用分層結(jié)構(gòu)化命名阳掐,方便人的認(rèn)知、記憶冷蚂,同時(shí)具備了唯一性缭保、可用性、可擴(kuò)展性等特征. 例如 CHAIN://edu.pku.cs/account/data蝙茶,其中 CHAIN://是默認(rèn)的協(xié)議頭艺骂,edu,pku 和 cs 是從高到低的各個(gè)層次的鏈標(biāo)識(shí),account 是鏈上的賬戶(或者合約)隆夯,data 該賬戶的某個(gè)信息钳恕,data 可以是賬戶的余額别伏、備注、甚至是個(gè)合約的接口等忧额。在異構(gòu)森林網(wǎng)絡(luò)中厘肮,兄弟鏈之間采用不同的命名空間,具有相同的父鏈命名空間睦番,通過父子關(guān)系可以方便地進(jìn)行內(nèi)容的尋址和路由类茂。
3 內(nèi)容尋址
每條鏈都提供子鏈地址查詢服務(wù),由系統(tǒng)合約實(shí)現(xiàn)托嚣,在建鏈時(shí)進(jìn)行初始化巩检。當(dāng)新增子鏈時(shí),子鏈向父鏈發(fā)送注冊(cè)請(qǐng)求示启,父鏈記錄子鏈地址兢哭。”元鏈”是全局配置鏈夫嗓,管理整個(gè)森林網(wǎng)絡(luò)體系所有的入口地址厦瓢,當(dāng)查詢一個(gè)信息時(shí),根據(jù) UAI 首先從元鏈找到入口啤月,再依次往下查找煮仇,直到找到所要的子鏈,然后根據(jù)account 和 data 字段的內(nèi)容定位到特定的資產(chǎn)谎仲≌愕妫“元鏈”不會(huì)成為性能瓶頸,因?yàn)槁酚蓾M足局部性原理郑诺,可以被緩存處理夹姥。
4 路由緩存
為保證更高效的網(wǎng)絡(luò)利用率、提高數(shù)據(jù)的可用性和訪問效率辙诞,提升上層服務(wù)體驗(yàn)辙售,引入路由緩存機(jī)制。在每條鏈上飞涂,由內(nèi)置系統(tǒng)合約管理路由緩存旦部,在建鏈時(shí)進(jìn)行初始化。對(duì)于緩存的替換策略较店,主要有如下幾種方式:
基于上一次被訪問時(shí)間間隔的替換策略士八;
基于訪問頻率的替換策略;
同時(shí)基于上一次訪問間隔和訪問頻率的策略梁呈;
基于隨機(jī)的替換策略婚度; 通過緩存路由尋址失敗則立即清理緩存。當(dāng)新的子鏈加入到異構(gòu)森林網(wǎng)絡(luò)官卡,須向元鏈注冊(cè)信息蝗茁,由元鏈向下層傳遞消息以進(jìn)行路由的更新醋虏。
5 VHTTP
為方便上層應(yīng)用實(shí)現(xiàn)簡(jiǎn)便的跨鏈訪問,借鑒傳統(tǒng)互聯(lián)網(wǎng)的 HTTP 協(xié)議哮翘,提出
用于價(jià)值互聯(lián)網(wǎng)的跨鏈傳輸協(xié)議 VHTTP(Value HTTP protocol)灰粮。該傳輸協(xié)議實(shí)現(xiàn)鏈與鏈之間、鏈內(nèi)和鏈外之間的價(jià)值交換忍坷。VHTTP 兼容 HTTP 協(xié)議粘舟,能夠識(shí)別 HTTP 請(qǐng)求包格式,也即鏈外用戶可以直接通過 HTTP 協(xié)議訪問鏈內(nèi)資產(chǎn)和數(shù)據(jù)佩研。對(duì)于進(jìn)入?yún)^(qū)塊鏈網(wǎng)絡(luò)的 HTTP 請(qǐng)求柑肴,自動(dòng)建立方法之間的映射。
VHTTP 協(xié)議請(qǐng)求由三部分組成:請(qǐng)求包頭旬薯、消息報(bào)頭晰骑、正文。 請(qǐng)求包頭以一方法名稱開頭绊序,以空格分開硕舆,后面是請(qǐng)求的以 UAI 標(biāo)識(shí)的資產(chǎn)地址和版本,格式如下:
Method UAI Version CRLF
請(qǐng)求方法類型如下:
GET:請(qǐng)求獲取 UAI 所標(biāo)識(shí)的資源信息
POST:創(chuàng)建資產(chǎn)(資產(chǎn)上鏈)
TRANSFER:在二個(gè) UAI 之間進(jìn)行資產(chǎn)轉(zhuǎn)移