我把個(gè)人博客搭到了區(qū)塊鏈上
時(shí)間:2023-08-16 08:09:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-08-16 08:09:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
我把個(gè)人博客搭到了區(qū)塊鏈上:區(qū)塊鏈?zhǔn)强梢杂脕?lái)建立獨(dú)立博客的。
春節(jié)期間,想著利用長(zhǎng)假來(lái)學(xué)學(xué)之前關(guān)注已久的幾個(gè)技術(shù)項(xiàng)目。最高效的學(xué)習(xí),就是直接投入使用,邊用邊查文檔,容易產(chǎn)生最直觀的理解。整個(gè)學(xué)習(xí)過(guò)程,就是一個(gè)把博客內(nèi)容搬進(jìn)區(qū)塊鏈?zhǔn)澜绲膶?shí)驗(yàn)。
當(dāng)然,最終實(shí)驗(yàn)挺成功,我的新博客可以通過(guò)
https://victor42.eth.limo/訪問(wèn)??赡茉谖磥?lái)的某一天,區(qū)塊鏈瀏覽器普及的時(shí)候,博客鏈接可以去掉.limo小尾巴,回歸
https://victor42.eth/,這才是鏈接本體。
文章很長(zhǎng),預(yù)先說(shuō)明一下各章包含什么信息,以及看懂它有什么前提:
- 傳統(tǒng)網(wǎng)絡(luò):讓你大致理解一個(gè)網(wǎng)站是如何被打開(kāi)的,現(xiàn)有網(wǎng)絡(luò)世界如何工作。沒(méi)什么閱讀前提,大家都能看懂,我希望如此。熟悉網(wǎng)絡(luò)技術(shù)的朋友就跳過(guò)吧。
- 傳統(tǒng)網(wǎng)絡(luò)的歸屬:讓你明白作為網(wǎng)站主人,發(fā)布一個(gè)網(wǎng)站該做些什么,各環(huán)節(jié)的控制權(quán)到底在誰(shuí)手里。也沒(méi)什么前提,如果你自己就是站長(zhǎng),那更容易懂了。
- 新技術(shù)原理:讓你理解區(qū)塊鏈?zhǔn)澜绲木W(wǎng)站是如何部署和工作的,和傳統(tǒng)網(wǎng)絡(luò)有何不同。要看懂這部分,你需要大致明白區(qū)塊鏈的原理,知道以太坊,接觸過(guò)BT種子下載。
- 新技術(shù)實(shí)踐:告訴你用什么工具可以親自部署區(qū)塊鏈網(wǎng)站,過(guò)程大概是什么樣的。想做成這一步,你要有傳統(tǒng)網(wǎng)站的建站經(jīng)歷,知道域名解析具體該怎么做,搭建過(guò)Github靜態(tài)網(wǎng)站。如果想使用區(qū)塊鏈域名(非必須),你還需要了解加密貨幣錢(qián)包是怎么回事,轉(zhuǎn)賬是怎么進(jìn)行的,并且有實(shí)際渠道能買(mǎi)到以太幣。
傳統(tǒng)網(wǎng)絡(luò)
這次研究的技術(shù)是ENS和IPFS,后面會(huì)詳細(xì)解釋。為方便對(duì)比,先大篇幅科普一下我的博客以前是怎么工作的。
這里面涉及到幾個(gè)主要環(huán)節(jié):域名、DNS、IP、服務(wù)器。在這種傳統(tǒng)網(wǎng)絡(luò)架構(gòu)中,任何人訪問(wèn)一個(gè)網(wǎng)站的過(guò)程,類(lèi)比到現(xiàn)實(shí)世界,相當(dāng)于往一個(gè)地方寄包裹。
比如你有朋友在故宮博物院工作,你要給他寄個(gè)小禮物,出于驚喜只能另想辦法搞到他的地址。他收到后,作為答謝回贈(zèng)了你一套故宮明信片。
域名
以前,我的博客可以通過(guò)
https://colachan.com/這個(gè)域名訪問(wèn)。當(dāng)然,接下來(lái)大半年也可以,只是之后我不打算續(xù)費(fèi)這個(gè)域名了。
域名是網(wǎng)站的一個(gè)代號(hào),這樣比較好記。通過(guò)分享域名,可以很容易地告訴別人如何打開(kāi)一個(gè)網(wǎng)站。
一個(gè)網(wǎng)站可以有多個(gè)域名,這和現(xiàn)實(shí)很像。反過(guò)來(lái)就不一樣,一個(gè)域名只能對(duì)應(yīng)一個(gè)網(wǎng)站,拒絕同名同姓,先到先得。
類(lèi)比現(xiàn)實(shí)世界,域名就相當(dāng)于“故宮博物院”這個(gè)名字,名滿天下,家喻戶(hù)曉。但你如果你走進(jìn)杭州一家茶樓,隨機(jī)問(wèn)正在吃早茶的叔叔阿姨們,怎么往故宮博物院寄東西,你可能會(huì)收獲許多關(guān)愛(ài)的眼神。
所以,只知道名字,你是夠不著那個(gè)地方的。
DNS、IP與服務(wù)器
DNS全稱(chēng)是Domain name system,它通過(guò)一系列的操作,把域名指向某個(gè)具體的IP地址。
DNS只是一個(gè)虛的概念,它需要靠DNS服務(wù)器來(lái)維持運(yùn)轉(zhuǎn)。DNS服務(wù)器是一類(lèi)特殊的服務(wù)器,把它想象成機(jī)房里那種大鐵疙瘩好了,只有主機(jī)沒(méi)有屏幕鍵盤(pán)鼠標(biāo)的那種電腦。這種服務(wù)器電腦,一般是通過(guò)個(gè)人電腦遠(yuǎn)程連接來(lái)控制的。
IP地址在你生活中最常出現(xiàn)的場(chǎng)合是路由器,192.168.1.1。這一串不好記的數(shù)字,代表了路由器在你家這個(gè)小小網(wǎng)絡(luò)中的位置。通常,你在電腦瀏覽器里輸入這個(gè)IP地址,就能打開(kāi)路由器的后臺(tái)管理界面。在整個(gè)互聯(lián)網(wǎng)中,IP地址可以代表各種各樣的東西:一臺(tái)個(gè)人電腦、一部手機(jī)、一個(gè)通信基站、一個(gè)交通攝像頭、一臺(tái)機(jī)房里的大鐵疙瘩(沒(méi)錯(cuò)它又來(lái)了)……
以訪問(wèn)一個(gè)網(wǎng)站為例,IP通常是代表大鐵疙瘩服務(wù)器,網(wǎng)站的代碼和數(shù)據(jù)就在這里面(簡(jiǎn)單理解)。你的瀏覽器通過(guò)DNS順藤摸瓜找到IP地址,告訴服務(wù)器,把網(wǎng)站內(nèi)容發(fā)過(guò)來(lái)。發(fā)來(lái)的內(nèi)容呈現(xiàn)在瀏覽器上,因此你才看到這個(gè)網(wǎng)站。
對(duì)照現(xiàn)實(shí)世界,DNS服務(wù)器相當(dāng)于幫你找地址的人。你在街上隨便逮個(gè)人問(wèn),怎么往故宮博物院寄東西啊?那人是買(mǎi)菜路過(guò)一大爺,大爺說(shuō)我哪知道啊,你們年輕人辦法多,你找個(gè)年輕人問(wèn)問(wèn)。你問(wèn)一個(gè)星巴克服務(wù)員,她說(shuō)這是杭州啊,你好歹找個(gè)杭州人問(wèn)問(wèn)啊。你問(wèn)公司里一個(gè)從杭州來(lái)的同事,他說(shuō),你可算問(wèn)對(duì)人嘍,故宮博物院地址很多杭州人都不知道,不是長(zhǎng)安街多少號(hào),準(zhǔn)確地址是杭州市東城區(qū)景山前街4號(hào)。
知道的人直接告訴你,不知道的告訴你應(yīng)該問(wèn)誰(shuí)。就這樣,在眾人接力下,你最終僅憑一個(gè)名字,成功找到了準(zhǔn)確地址,找到了故宮博物院這個(gè)大鐵疙瘩。這就是DNS服務(wù)器的工作方式,而IP也就相當(dāng)于現(xiàn)實(shí)世界的門(mén)牌號(hào)地址,加上省市區(qū),絕對(duì)不會(huì)重復(fù)。然后,你把禮品發(fā)了個(gè)快遞到這個(gè)地址。朋友收到了,給你寄回了一套明信片。你通過(guò)明信片上的照片,看到了故宮四季的美景(這就相當(dāng)于服務(wù)器發(fā)你的網(wǎng)站內(nèi)容)。
需要注意的是,IP地址是雙向唯一的。一個(gè)地址只能代表一個(gè)地方,一個(gè)地方也只能有一個(gè)地址。這和現(xiàn)實(shí)世界一樣。
傳統(tǒng)網(wǎng)絡(luò)的歸屬
打開(kāi)一個(gè)網(wǎng)站的過(guò)程大致如上,但在這個(gè)過(guò)程中的各環(huán)節(jié)都是受誰(shuí)控制、誰(shuí)在負(fù)責(zé)維護(hù)呢?
之前我們是從網(wǎng)站訪客的角度來(lái)看?,F(xiàn)在轉(zhuǎn)換一下視角,看看作為一個(gè)網(wǎng)站的主人,要做些什么,才能讓你的網(wǎng)站被世界看見(jiàn)。
域名
首先,域名的知識(shí)我展開(kāi)說(shuō)下。先看一個(gè)你鐵定熟悉的網(wǎng)址:
http://www.baidu.com
它分為4個(gè)部分:
- http://
- www
- baidu
- com
http:// 是協(xié)議,全稱(chēng)叫
Hyper
Text
Transfer
Protocol,超文本傳輸協(xié)議。不講虛的,它是你的瀏覽器和網(wǎng)線那頭的服務(wù)器之間的一個(gè)約定,約好以一個(gè)雙方都理解的格式來(lái)傳輸信息。
也有其他類(lèi)型的協(xié)議,用來(lái)做別的事情。不過(guò)訪問(wèn)網(wǎng)站的主流做法就是使用HTTP協(xié)議,所以我們談?wù)摼W(wǎng)址時(shí),經(jīng)常把協(xié)議的部分省略掉,直接說(shuō) www.baidu.com。
剩下3部分我們要把順序倒過(guò)來(lái)講。
com 是頂級(jí)域名,Top-level Domain,常縮寫(xiě)為T(mén)LD。這種域名最初設(shè)計(jì)出來(lái)可以起到一定的分類(lèi)作用,不能單獨(dú)使用。比如.com代表company,適合商業(yè)公司;.edu代表education,適合教育機(jī)構(gòu);不常見(jiàn)的.mil,代表military,適合軍事組織。還有兩個(gè)字母的頂級(jí)域名代表地理區(qū)域,.cn代表中國(guó)的網(wǎng)站,.uk代表英國(guó)的網(wǎng)站。
頂級(jí)域名的控制權(quán)在一個(gè)叫ICANN的國(guó)際組織手中,它決定了哪些名稱(chēng)可以作為頂級(jí)域名使用,其他的都不可以。這是ICANN允許的頂級(jí)域名清單:
https://data.iana.org/TLD/tlds-alpha-by-domain.txt。雖然ICANN是非盈利組織,但你如果愿意付給它一年幾十萬(wàn),還真有可能讓它開(kāi)放一個(gè)專(zhuān)屬于你的頂級(jí)域名。
比如蘋(píng)果就注冊(cè)了.apple域名,注意這和
http://apple.com不一樣,是xxx.apple喔!只要蘋(píng)果愿意,它可以把官網(wǎng)的頻道調(diào)整成這種體系:iphone.apple、ipad.apple……這其實(shí)比
http://apple.com/iphone 、
http://apple.com/ipad 短,按理說(shuō)更好記。
但蘋(píng)果為什么沒(méi)有這么做呢?因?yàn)?com已經(jīng)深入人心了,大家張口就來(lái),不用記。這樣一來(lái),只需要記住apple這個(gè)品牌名稱(chēng)就行了,后面肯定是加.com。注冊(cè).apple主要是起到一個(gè)品牌保護(hù)的作用,防止別人注冊(cè)來(lái)干壞事。
至于為什么.com深入人心,使用頻率遠(yuǎn)超.net、.org等其他頂級(jí)域名,乃至一些非公司(比如個(gè)人博客)注冊(cè)域名時(shí)也會(huì)選.com,我認(rèn)為這純粹是商業(yè)的力量啊。你想啊,最熱衷于注冊(cè)和維護(hù)域名的是什么群體?是商人!商業(yè)企業(yè)做好品牌建設(shè)和宣傳,對(duì)營(yíng)收是有直接幫助的。它們比教育機(jī)構(gòu)、非營(yíng)利組織更有動(dòng)力注冊(cè)域名、搭建網(wǎng)站。自然地,.com成了被使用最多的頂級(jí)域名,以至于它的含義被廣泛化了。
baidu 是主域名的一部分,加上后面的頂級(jí)域名構(gòu)成了完整的主域名,主域名才是一個(gè)完整可訪問(wèn)的域名。通常網(wǎng)站主是找一個(gè)現(xiàn)成的頂級(jí)域名,在它下面買(mǎi)一個(gè)主域名。
http://baidu.com翻譯成人話,就是“一家叫baidu的company”。顯然,百度公司買(mǎi)了這個(gè)主域名,并指向了裝有自家的核心產(chǎn)品(搜索引擎)的大鐵疙瘩。
主域名的控制權(quán)在各種域名和云服務(wù)商手中,按年收費(fèi)。國(guó)際上較出名的是Godaddy,國(guó)內(nèi)則有萬(wàn)網(wǎng)、易名中國(guó)。當(dāng)然,阿里云、騰訊云等綜合云服務(wù)商也有域名注冊(cè)業(yè)務(wù)。你在這些平臺(tái)上選好一個(gè)心儀的主域名,花錢(qián)買(mǎi)它幾年。然后,這段時(shí)間內(nèi)域名的使用權(quán)就歸你了,你可以把它指向你想要的地方。不過(guò),域名的所有權(quán)仍然在服務(wù)商手中,因?yàn)闃O端情況下它們有能力收回你的域名。
www 叫做二級(jí)域名,或者子域名。很多人可能不了解一個(gè)事實(shí),
http://www.baidu.com和
http://baidu.com雖然打開(kāi)同一個(gè)網(wǎng)站,但本質(zhì)是不同的。
當(dāng)你擁有了主域名(
http://baidu.com)后,你可以在域名服務(wù)商或者DNS服務(wù)商(后面會(huì)講)那里隨意添加子域名。比如創(chuàng)建
http://help.baidu.com,指向客服板塊;或者創(chuàng)建
http://map.baidu.com,指向百度地圖產(chǎn)品。至于www,百度也把它指向了搜索引擎,和主域名一樣。
這不多此一舉嗎?里面有歷史原因。因?yàn)閣ww代表的是World Wide Web,萬(wàn)維網(wǎng)。在互聯(lián)網(wǎng)誕生早期,網(wǎng)站并非互聯(lián)網(wǎng)的核心,域名還用來(lái)做很多其他的事情,郵件服務(wù)、文件傳輸服務(wù)之類(lèi)。在當(dāng)時(shí)觀念里,網(wǎng)站只是和郵件、文件并列的業(yè)務(wù),而沒(méi)有像今天這樣成為品牌入口而凌駕于其他服務(wù)至上。所以,為了區(qū)分,當(dāng)時(shí)人加上www專(zhuān)門(mén)表示官方網(wǎng)站,用它而非主域名對(duì)外宣傳。久而久之,不明就里的后繼者們也都這么做,哪怕他們只有官網(wǎng),沒(méi)有其他網(wǎng)絡(luò)業(yè)務(wù)。幾十年過(guò)去了,大家仍然這么做,卻忘了為什么。
子域名從屬于主域名,所以和主域名一樣,你掌握它的使用權(quán),所有權(quán)仍屬于域名服務(wù)商。
插個(gè)題外話,了解了域名每部分代表什么,是不是就覺(jué)得它很別扭,為什么順序是倒過(guò)來(lái)的?你想,互聯(lián)網(wǎng)是什么人發(fā)明的?西方人,尤其是英語(yǔ)國(guó)家。在英語(yǔ)中地址是怎么表達(dá)的?
#20A, 2345 Belmont Avenue, Durham, NC, 27700
某某建筑多少號(hào),某某大街多少號(hào),某市,某州。在英語(yǔ)中習(xí)慣由小到大表達(dá),文化差異而已。
DNS
有了主域名之后,還不能急于昭告天下。因?yàn)檫@時(shí)候大家(也包括你自己)在瀏覽器里輸入這個(gè)域名,什么也打不開(kāi),它還沒(méi)有被指向任何服務(wù)器。指向的過(guò)程也叫域名解析。
記得前面說(shuō)一個(gè)域名只能指向一個(gè)網(wǎng)站吧?所以域名是個(gè)稀缺資源,這時(shí)候解析權(quán)就非常重要了。誰(shuí)掌握了,誰(shuí)就能決定這個(gè)域名用在哪兒。
通常情況,初始的解析權(quán)在你購(gòu)買(mǎi)域名的服務(wù)商那里。不過(guò)術(shù)業(yè)有專(zhuān)攻,有一些專(zhuān)業(yè)的DNS服務(wù)商,可以提供更靈活穩(wěn)定的解析服務(wù)。國(guó)際上有Cloudflare,國(guó)內(nèi)有DNSPod等。使用這些服務(wù)時(shí),你得先去域名服務(wù)商那邊設(shè)置一下,放棄域名服務(wù)商自身的解析權(quán),轉(zhuǎn)交給DNS服務(wù)商。然后在DNS服務(wù)商的管理界面中,設(shè)置域名的指向。DNS服務(wù)往往是基礎(chǔ)功能免費(fèi),高級(jí)功能收費(fèi)。
這樣一來(lái),解析權(quán)就來(lái)到了DNS服務(wù)商手中。雖然它受你控制,你有權(quán)告訴世界,這個(gè)域名指向哪臺(tái)服務(wù)器,但解析權(quán)并不100%屬于你。DNS服務(wù)商的某個(gè)員工,或者某個(gè)黑客,也有本事把你的域名指向別處,因?yàn)樗麄兡懿倏v你的DNS賬號(hào)。這就好像優(yōu)惠券使用規(guī)則末尾的小字,最終解釋權(quán)歸xxx(DNS服務(wù)商)所有。
IP與服務(wù)器
現(xiàn)在,最后的環(huán)節(jié),你得把網(wǎng)站代碼和數(shù)據(jù)放在某一臺(tái)服務(wù)器上,域名才能通過(guò)DNS指向服務(wù)器上的網(wǎng)站。就假設(shè)你的網(wǎng)站比較簡(jiǎn)單,只用到一臺(tái)服務(wù)器。
常見(jiàn)的做法是在阿里云、騰訊云等云服務(wù)商租用服務(wù)器。服務(wù)器通常按月出賬單,計(jì)費(fèi)因素較多。網(wǎng)站數(shù)據(jù)占用的磁盤(pán)空間越多,就要付越多錢(qián);服務(wù)器往外發(fā)送的數(shù)據(jù)量越大,也要付越多錢(qián)。
服務(wù)器這頭弄好了,你就會(huì)知道它的IP地址,通過(guò)DNS把你的域名指到這里來(lái)就可以了。到此為止,你的網(wǎng)站可以正式對(duì)外開(kāi)放。
既然服務(wù)器是租的,控制權(quán)自然也不在你手上,你只有使用權(quán)。在極端情況下,云服務(wù)商有權(quán)把你的服務(wù)器給關(guān)了,或者把其中的內(nèi)容刪掉。
不過(guò)有一種情況例外,你也可以自己買(mǎi)一臺(tái)大鐵疙瘩放在辦公室,我以前一家公司就這么干過(guò)。這種情況下,服務(wù)器以及上面所有內(nèi)容都完全受你的控制了。但這對(duì)你公司網(wǎng)絡(luò)要求很高,訪客涌到你公司的小小網(wǎng)絡(luò)里,那速度就別想快了。小網(wǎng)站不太有這么干的。
新技術(shù)原理
以上,傳統(tǒng)網(wǎng)絡(luò)的科普告一段落,這里開(kāi)始要使用新技術(shù)了。
ENS
前面講到,頂級(jí)域名控制權(quán)在國(guó)際組織ICANN手中。但是,半路殺出了很多團(tuán)隊(duì),想要挑戰(zhàn)它。這些團(tuán)隊(duì)認(rèn)為,域名作為互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施,關(guān)乎全人類(lèi)福祉,不能讓它掌握在一個(gè)中心化組織手中,由少數(shù)人決定其命運(yùn),非營(yíng)利組織也不行。他們主張,用區(qū)塊鏈的智能合約來(lái)管理域名,既包括頂級(jí)域名,也包括主域名、子域名。這樣才能保證域名的管理公開(kāi)透明、可信賴(lài)。
提供域名服務(wù)的區(qū)塊鏈項(xiàng)目主要有4個(gè):HandShake(HNS)、DecentraWeb(DWEB)、Ethereum Name Service(ENS)、Unstoppable Domains。前2個(gè)提供頂級(jí)域名注冊(cè)和交易;后2個(gè)自己掌握了部分頂級(jí)域名,開(kāi)放相應(yīng)的主域名注冊(cè)。
在區(qū)塊鏈的世界中,你可以看到許多千奇百怪的頂級(jí)域名,.x、.eth、.coin、.wallet、.888……還有用Emoji表情的。無(wú)論哪家,提供的域名都不在ICANN許可范圍內(nèi),他們繞開(kāi)ICANN,開(kāi)辟了一個(gè)不受它管轄的域名世界。這些域名的控制權(quán)、所屬權(quán)都記錄在區(qū)塊鏈上,并不受創(chuàng)始團(tuán)隊(duì)控制,而是依據(jù)智能合約中的規(guī)則在運(yùn)轉(zhuǎn)著。
我的域名(victor42.eth)來(lái)自ENS,這是一個(gè)基于以太坊區(qū)塊鏈的域名服務(wù),這里的域名都以.eth結(jié)尾。購(gòu)買(mǎi)之后,智能合約的規(guī)則被觸發(fā),在以太坊網(wǎng)絡(luò)里記上一筆,“victor42.eth這個(gè)域名從此刻起屬于錢(qián)包xxxxxxxxx,為期20年”,這筆交易被整個(gè)以太坊網(wǎng)絡(luò)承認(rèn)和保護(hù)。其中錢(qián)包xxxxxxxxx,就是我的以太坊錢(qián)包地址。
ENS同時(shí)還附帶了域名解析功能。實(shí)際上,在區(qū)塊鏈?zhǔn)澜缋?,已?jīng)不太需要DNS這一個(gè)環(huán)節(jié)了。因?yàn)閭鹘y(tǒng)網(wǎng)絡(luò)中,專(zhuān)業(yè)DNS服務(wù)商一個(gè)很大作用是保證解析過(guò)程的安全,不被篡改指到別處去,不被惡意攔截阻斷,不被截獲提取私密信息。但在區(qū)塊鏈?zhǔn)澜缰?,網(wǎng)絡(luò)本身是安全的,這些情況不會(huì)發(fā)生。域名解析回歸了它純粹的指向作用,變得簡(jiǎn)單多了。所以域名服務(wù)商順手提供一下就夠了。
這樣注冊(cè)下來(lái)的域名,在使用期內(nèi),沒(méi)人可以繞過(guò)我而把它轉(zhuǎn)走,或者把它指向別處,哪怕以太坊的創(chuàng)始人Vitalik也不行。使用期過(guò)后,如果我沒(méi)有續(xù)費(fèi),它會(huì)被智能合約回收,可以再次被別人買(mǎi)走。
區(qū)塊鏈域名和傳統(tǒng)域名使用上有什么區(qū)別呢?我簡(jiǎn)短講一下傳統(tǒng)網(wǎng)絡(luò)和區(qū)塊鏈網(wǎng)絡(luò)的區(qū)別,可能讓你有概念。
傳統(tǒng)網(wǎng)絡(luò)是為了傳輸信息而存在的,域名是為了給內(nèi)容起代號(hào)。我們雖然可以用微信支付轉(zhuǎn)賬,那也是把貨幣價(jià)值以一種信息化的方式來(lái)傳輸了,需要有銀聯(lián)這樣的機(jī)構(gòu)來(lái)驗(yàn)證價(jià)值的轉(zhuǎn)移。
區(qū)塊鏈網(wǎng)絡(luò)是為了傳輸價(jià)值而存在的,是一個(gè)由密碼學(xué)維持的經(jīng)濟(jì)系統(tǒng),系統(tǒng)本身就能驗(yàn)證價(jià)值的轉(zhuǎn)移。錢(qián)包賬戶(hù)是這里的基礎(chǔ)設(shè)施。域名的出現(xiàn),是為了給錢(qián)包地址起個(gè)代號(hào),這是它的初衷。至于指向某個(gè)網(wǎng)站,或者說(shuō)某個(gè)內(nèi)容,是它的附加功能。
以太坊錢(qián)包地址是這樣一個(gè)東西,比IP可難記多了,你現(xiàn)在可能清楚為什么它需要域名了。
區(qū)塊鏈域名厲害之處在于,它可以同時(shí)指向錢(qián)包和內(nèi)容。轉(zhuǎn)賬時(shí),填入域名會(huì)轉(zhuǎn)給錢(qián)包賬戶(hù);在瀏覽器里打開(kāi)時(shí),則會(huì)展示內(nèi)容。
IPFS
上一節(jié)已經(jīng)搞定了區(qū)塊鏈域名,所有權(quán)歸我,且已經(jīng)準(zhǔn)備好指向某個(gè)網(wǎng)站了。接下來(lái)要做的,就是找一個(gè)去中心化的方案來(lái)存放我的網(wǎng)站,讓域名有地方可以指。
不過(guò),具體操作我在后面的章節(jié)講,這節(jié)介紹IPFS本身技術(shù)原理。因?yàn)樗墓ぷ鞣绞铰晕X,不是你習(xí)慣的那種C盤(pán)、某某文件夾、某某子文件夾的存儲(chǔ)邏輯。
能翻墻、英語(yǔ)無(wú)障礙的朋友可以先看視頻,比我用文字講直觀多了:
https://www.youtube.com/watch?v=5Uj6uR3fp-U。
IPFS里也有IP兩個(gè)字母,但和那個(gè)傳統(tǒng)IP沒(méi)有半毛錢(qián)關(guān)系,撞臉純屬巧合。它全稱(chēng)是InterPlanetary File System,星際文件系統(tǒng),口氣不小。IPFS上的內(nèi)容,只要世上有一個(gè)人覺(jué)得這內(nèi)容有價(jià)值,愿意把它保留下來(lái),其他任何人都無(wú)法在網(wǎng)絡(luò)里消滅這些內(nèi)容,也不能阻止它傳播。
這聽(tīng)起來(lái)好像沒(méi)什么了不起,傳統(tǒng)網(wǎng)絡(luò)不也是這樣嗎?哪個(gè)官方微博號(hào)發(fā)了什么不當(dāng)言論,哪怕第一時(shí)間刪除,只要有人截圖了,傳開(kāi)了,它也沒(méi)法抵賴(lài)?;ヂ?lián)網(wǎng)的開(kāi)放精神就體現(xiàn)在這。
但是別忘了,有一種操作叫公關(guān)。網(wǎng)絡(luò)世界中,絕大部分內(nèi)容是在極少數(shù)幾個(gè)社交媒體上傳播的。只要搞定了這些平臺(tái),讓它們配合把服務(wù)器上的相應(yīng)內(nèi)容刪除,大規(guī)模傳播也就停止了。公關(guān)不能在全世界抹掉這些內(nèi)容,但可以讓大多數(shù)人無(wú)法看到。你要拿個(gè)U盤(pán)拷來(lái)拷去我管不著,但沒(méi)見(jiàn)過(guò)的人想看一眼時(shí),八成不知道該去哪找。
不過(guò)……等等,好像事情也不像我說(shuō)的這樣吧?要不然盜版電影是怎么傳出來(lái)的,制片方不也沒(méi)本事阻止嗎?沒(méi)錯(cuò),這就說(shuō)在點(diǎn)子上了。盜版電影的傳播,并不完全是靠傳統(tǒng)網(wǎng)絡(luò)完成的,它用到了分布式網(wǎng)絡(luò)。
當(dāng)你用迅雷下載盜版電影時(shí),是不是要先下載個(gè)BT種子文件?種子文件打開(kāi),迅雷才把它變成一個(gè)視頻。界面上還顯示當(dāng)前有多少種子。種子多下載就快,沒(méi)有種子則下不動(dòng)。這是一種分布式網(wǎng)絡(luò)的特征,每個(gè)種子背后都有一臺(tái)存儲(chǔ)了這個(gè)內(nèi)容的設(shè)備,背后大多數(shù)是像你這樣正在下載這部電影的人。你下載的過(guò)程并不是從什么盜版電影網(wǎng)站的服務(wù)器下載數(shù)據(jù),而是從其他種子那里下載。在這樣的傳輸網(wǎng)絡(luò)里,想要徹底阻斷一個(gè)內(nèi)容傳播,只能把所有種子找出來(lái),挨個(gè)消滅掉,這幾乎不現(xiàn)實(shí)。
IPFS的文件傳輸就是用的這個(gè)原理,但它走得比這更遠(yuǎn),沒(méi)有止步于傳輸。它想直接把這種網(wǎng)絡(luò)作為一種存儲(chǔ)方式。不知道你有沒(méi)有想過(guò)一個(gè)問(wèn)題,網(wǎng)絡(luò)是怎么知道每個(gè)種子設(shè)備上存放的是同一部電影呢?有的是完整版,有的是刪減版;有的是原聲版,有的是譯制版。
答案很簡(jiǎn)單,在文件這一層就把內(nèi)容分開(kāi),不同BT種子文件下載下來(lái)的是不同的版本。這背后用到的技術(shù)叫做哈希算法,是一種加密技術(shù),能夠把一個(gè)無(wú)論多大的完整內(nèi)容,編碼成一串特定長(zhǎng)度的字符,類(lèi)似這樣:
23db6982caef9e9152f1a5b2589e6ca3
它經(jīng)常在各種下載網(wǎng)站出現(xiàn)。網(wǎng)站把文件的MD5編碼(哈希算法有不止一種,MD5是其中之一)貼出來(lái),提醒你下載后用工具驗(yàn)證該文件有沒(méi)有被篡改過(guò),有沒(méi)有被加入木馬病毒。
之所以能這么干,是哈希算法的一個(gè)技術(shù)特征決定的。同一個(gè)內(nèi)容,用同一種哈希算法來(lái)加密,只會(huì)得到一個(gè)結(jié)果。你白天算也好,晚上算也好,在杭州算也好,在新加坡算也好,都只能得到同一個(gè)編碼。如果內(nèi)容稍微改動(dòng)一丁點(diǎn),哪怕把一個(gè)中文句號(hào)改成英文句號(hào),得到的編碼也會(huì)完全不同。有這個(gè)特征,哈希編碼和內(nèi)容就有對(duì)應(yīng)關(guān)系,雙向唯一對(duì)應(yīng)。因此,哈希算法不僅可以加密,還可為任何內(nèi)容賦予一個(gè)唯一代號(hào),就像身份證號(hào)一樣。
這樣一來(lái),IPFS就可以作為一種很高效的存儲(chǔ)基礎(chǔ)設(shè)施。傳播內(nèi)容時(shí),使用內(nèi)容的哈希編碼。要呈現(xiàn)內(nèi)容了,再到IPFS網(wǎng)絡(luò)里把它完整取出來(lái)。
有個(gè)很實(shí)際的例子,就是存儲(chǔ)NFT數(shù)字藏品。數(shù)字藏品的所有權(quán)是記在區(qū)塊鏈上的,“內(nèi)容xxxxxx的所有權(quán)歸誰(shuí)誰(shuí)誰(shuí)”。數(shù)字藏品可能是一張圖、一段音樂(lè)、甚至一段影片,可能會(huì)有幾十個(gè)G那么大,區(qū)塊鏈一個(gè)區(qū)塊幾MB空間,怎么存得下這么大的信息量,不得原地爆炸啊?所以區(qū)塊鏈上記錄的不是完整內(nèi)容,而是哈希編碼,與內(nèi)容唯一對(duì)應(yīng),照樣能起到確權(quán)效果。順便說(shuō)一句,ENS域名也是一種NFT,只不過(guò)相比大多數(shù)圖片、音樂(lè)類(lèi)藏品,它有實(shí)際作用,并非用于觀賞。
IPFS就是用了這種原理來(lái)構(gòu)建它的存儲(chǔ)系統(tǒng),下面講講它與傳統(tǒng)存儲(chǔ)的本質(zhì)不同。傳統(tǒng)存儲(chǔ)通過(guò)位置來(lái)獲取內(nèi)容,就像之前往故宮博物院寄包裹一樣,你得知道這個(gè)內(nèi)容在哪里,才能從那兒取出來(lái),現(xiàn)實(shí)生活也如此,很好理解。IPFS存儲(chǔ)則通過(guò)內(nèi)容本身來(lái)獲取內(nèi)容,有點(diǎn)繞哈,這意思是說(shuō),只要你知道內(nèi)容(的哈希編碼身份證)是什么,就能直接獲取到它。你在IPFS里吼一嗓子,“我要23db6982caef9e9152f1a5b2589e6ca3這個(gè)內(nèi)容”,IPFS看誰(shuí)有這個(gè)內(nèi)容,就近調(diào)配給你。
這種存儲(chǔ)有幾個(gè)優(yōu)勢(shì):
- 可靠:只要有你要的內(nèi)容,任何設(shè)備都可以把它傳輸給你。即使哪天世界大戰(zhàn)了,亞馬遜云、微軟云、阿里云、騰訊云機(jī)房全被炸了,微博、微信、抖音服務(wù)器也全掛了。只要網(wǎng)是通的,你隔壁小區(qū)某住戶(hù)有這個(gè)內(nèi)容,你也可以通過(guò)IPFS從他那里下載到。
- 快速:總是給你找最近的,傳輸當(dāng)然就快了。這和BT種子下載沒(méi)什么兩樣。
- 省資源:這里指的是節(jié)省全人類(lèi)的服務(wù)器資源。傳統(tǒng)網(wǎng)絡(luò)里,你在朋友圈、微博、抖音都發(fā)了同一條視頻,它們就會(huì)分別存到3家的服務(wù)器上,各一份。你發(fā)多少個(gè)平臺(tái),就存多少份。有多少人發(fā)這同一條內(nèi)容,那再翻多少倍,這個(gè)數(shù)字是很恐怖的。但在IPFS的世界,發(fā)的次數(shù)再多,發(fā)的人再多,理論上只需要少量分散存一些在服務(wù)器上兜個(gè)底,大多是通過(guò)個(gè)人設(shè)備存儲(chǔ)和傳輸。
- 防篡改:一個(gè)內(nèi)容一個(gè)編碼,即使有人想混淆視聽(tīng)、歪曲歷史,他篡改過(guò)的內(nèi)容也會(huì)產(chǎn)生新的編碼。你拿著原始編碼始終能找到最初的內(nèi)容。所以這個(gè)系統(tǒng)很適合忠實(shí)記錄人類(lèi)信息時(shí)代的歷史,避免我另一篇博文里提到的數(shù)字年代的歷史斷層問(wèn)題。
當(dāng)然,也不是沒(méi)有劣勢(shì):
- 對(duì)冷門(mén)內(nèi)容不友好。如果一個(gè)內(nèi)容無(wú)人問(wèn)津,存儲(chǔ)它的設(shè)備很少,而且不巧都離線了,你可能一時(shí)就獲取不到。但只要上傳者認(rèn)為這個(gè)內(nèi)容重要,他自然會(huì)想辦法讓內(nèi)容保持在線。
- IPFS是開(kāi)放網(wǎng)絡(luò),不能存私密信息。你不能把IPFS當(dāng)私人網(wǎng)盤(pán)或記事本用,發(fā)上去的內(nèi)容全網(wǎng)可見(jiàn)。
- 發(fā)布需三思而后行,因?yàn)闆](méi)有撤回修改的余地。你的任何修改只會(huì)額外產(chǎn)生新內(nèi)容,并不會(huì)覆蓋掉舊內(nèi)容。
- 內(nèi)容版本碎片化。每更新一下就產(chǎn)生一版新內(nèi)容,怎么知道最新的是哪個(gè)?這個(gè)問(wèn)題后面會(huì)講,有辦法解決。
回到它的名稱(chēng),星際文件系統(tǒng),可真不是在吹牛。如果未來(lái)人類(lèi)在火星建立城市,兩邊要如何傳輸信息?地球到火星距離不固定,轉(zhuǎn)到太陽(yáng)同一側(cè)時(shí),無(wú)線通信時(shí)間單程短至4分鐘;轉(zhuǎn)到太陽(yáng)兩側(cè)時(shí),通信時(shí)間長(zhǎng)至24分鐘。如果剛好被太陽(yáng)擋在中間,通信還沒(méi)法進(jìn)行,太陽(yáng)的電磁干擾太強(qiáng)了,就像天問(wèn)一號(hào)遇到日凌那樣。
要是采用傳統(tǒng)網(wǎng)絡(luò),火星城市的人想打開(kāi)百科查個(gè)資料,光是從地球服務(wù)器上獲取個(gè)內(nèi)容,每次來(lái)回都要至少等8分鐘。注意,是每打開(kāi)一個(gè)頁(yè)面就等8分鐘喔,你受不受得了?如果是48分鐘呢?
你可能會(huì)問(wèn),為什么不把百科的數(shù)據(jù)在火星也存一份呢?很現(xiàn)實(shí)的問(wèn)題是,火星的殖民必然是漸進(jìn)式的,剛開(kāi)始一定是個(gè)小城市。而地球互聯(lián)網(wǎng)存儲(chǔ)著人類(lèi)幾千年文明史的大量資料,數(shù)據(jù)量是不可想象的,全部復(fù)制到火星嗎?初期的火星城市有那么多基礎(chǔ)設(shè)施、有那么多服務(wù)器嗎?既然不能全部帶走,只帶走重要的唄。至于冷門(mén)資料,比如巴斯克語(yǔ),肯定留在地球的網(wǎng)絡(luò)里呀,需要時(shí)再臨時(shí)獲取。
如果用IPFS,會(huì)有什么不同呢?對(duì)火星上第一個(gè)查詢(xún)巴斯克語(yǔ)的人來(lái)說(shuō),沒(méi)什么不同,他還是得等上8-48分鐘。這個(gè)問(wèn)題沒(méi)法解決,是物理限制,不服你找愛(ài)因斯坦去。但只要火星上有人打開(kāi)過(guò)巴斯克語(yǔ)的百科頁(yè)面,其他火星居民查詢(xún)時(shí),就是直接從第一個(gè)人的設(shè)備上獲取了,那速度就和地球居民打開(kāi)地球網(wǎng)頁(yè)一樣快。假如第一個(gè)查詢(xún)者是火星上一個(gè)語(yǔ)言學(xué)教授,這些資料對(duì)他很重要,他就會(huì)想辦法通過(guò)IPFS把這些資料放在火星的服務(wù)器上,從此巴斯克語(yǔ)資料就在火星落地生根了。
需要注意的是,IPFS自身不是區(qū)塊鏈,只是一個(gè)類(lèi)似于BT下載網(wǎng)絡(luò)的東西。但I(xiàn)PFS的創(chuàng)作團(tuán)隊(duì)也創(chuàng)造了Filecoin,這就是區(qū)塊鏈了。它通過(guò)區(qū)塊鏈和加密貨幣,獎(jiǎng)勵(lì)那些愿意提供閑置存儲(chǔ)空間來(lái)存放他人內(nèi)容的人,以此保持IPFS存儲(chǔ)的持續(xù),提高整個(gè)網(wǎng)絡(luò)的可靠性,這方面就不深入展開(kāi)了。加之IPFS網(wǎng)絡(luò)是區(qū)塊鏈?zhǔn)澜绮豢苫蛉钡幕A(chǔ)設(shè)施,傳統(tǒng)網(wǎng)絡(luò)則不太用得著它,因此我也把它當(dāng)作區(qū)塊鏈?zhǔn)澜绲囊粏T。我把部署在IPFS之上的網(wǎng)站稱(chēng)為區(qū)塊鏈網(wǎng)站,并不嚴(yán)謹(jǐn),在此解釋一下,只是為了科普方便。
IPNS
現(xiàn)在,似乎萬(wàn)事俱備了。ENS負(fù)責(zé)域名+DNS,IPFS負(fù)責(zé)IP+服務(wù)器,這已經(jīng)齊活了嘛,我們可以搭建區(qū)塊鏈網(wǎng)站了。且慢,還有個(gè)重要問(wèn)題沒(méi)解決,這是傳統(tǒng)存儲(chǔ)中不存在的問(wèn)題,是IPFS帶來(lái)的新問(wèn)題。
在傳統(tǒng)存儲(chǔ)中,要更新一個(gè)內(nèi)容,只要到對(duì)應(yīng)的存儲(chǔ)位置把舊內(nèi)容替換掉。之后人們?cè)俚竭@個(gè)位置來(lái),直接就看到新內(nèi)容了??墒窃贗PFS的世界里,人們是通過(guò)哈希編碼來(lái)找內(nèi)容的,更新產(chǎn)生了一個(gè)新內(nèi)容,舊內(nèi)容的哈希編碼又不會(huì)變。對(duì)于一個(gè)持續(xù)更新的網(wǎng)站來(lái)說(shuō),如何讓人總是看到最新版的內(nèi)容?總不能每次更新都向全世界發(fā)消息,說(shuō)我網(wǎng)站更新了,下次來(lái)看要用這個(gè)新的哈希編碼,這顯然不可接受。
為解決這個(gè)問(wèn)題,IPFS系統(tǒng)也內(nèi)置了一個(gè)類(lèi)似于DNS的機(jī)制,叫IPNS,InterPlanetary Name System。這個(gè)NS的含義和DNS里是一樣的。它自身也是一個(gè)類(lèi)似于哈希編碼的東西,但可以指向不同的內(nèi)容,自身編碼卻不會(huì)改變。把IPNS和某個(gè)IPFS內(nèi)容關(guān)聯(lián)上,每次更新內(nèi)容時(shí),IPNS會(huì)自動(dòng)指向新版內(nèi)容的哈希編碼,這種方式就很像我們熟悉的傳統(tǒng)網(wǎng)址了。
巧妙的是,ENS域名也是可以指向IPNS的。這樣一來(lái)就全部串起來(lái)了,整個(gè)網(wǎng)站訪問(wèn)過(guò)程,在區(qū)塊鏈?zhǔn)澜缋锟梢酝暾咄?,如下?br>
ENS域名——>ENS指向——>IPNS——>最新IPFS內(nèi)容——>網(wǎng)站
新技術(shù)實(shí)踐
原理已經(jīng)到位,終于開(kāi)始實(shí)踐了,這部分反倒很簡(jiǎn)單。
區(qū)塊鏈?zhǔn)澜缃?jīng)過(guò)了十多年的發(fā)展,如今已不是投機(jī)炒幣的大賭場(chǎng)了。出現(xiàn)了許多有實(shí)際作用的區(qū)塊鏈應(yīng)用,它們正試圖構(gòu)建新一代網(wǎng)絡(luò)基礎(chǔ)設(shè)施的方方面面。懂了原理,不必真的從零開(kāi)始白手起家,用一個(gè)現(xiàn)成的應(yīng)用來(lái)幫你完成部署,很方便。
區(qū)塊鏈域名
提示一下,域名和存儲(chǔ)是兩件相互獨(dú)立的事情。區(qū)塊鏈域名可以指向傳統(tǒng)網(wǎng)站,
傳統(tǒng)域名也可以指向區(qū)塊鏈網(wǎng)站。所以你也不是非得注冊(cè)區(qū)塊鏈域名。
這應(yīng)該是區(qū)塊鏈建站唯一需要花錢(qián)的地方,你要在ENS購(gòu)買(mǎi)一個(gè)域名,用以太幣支付。這一步可能會(huì)難倒一些人,畢竟大陸對(duì)加密貨幣交易的管制很?chē)?yán)格。不過(guò)我覺(jué)得,既然你都堅(jiān)持看到這兒了,八成也是買(mǎi)過(guò)幣的人,應(yīng)該不在話下。
如果真沒(méi)買(mǎi)過(guò),我建議
先別嘗試。動(dòng)手買(mǎi)幣之前,
務(wù)必弄清楚加密貨幣錢(qián)包的工作方式。錢(qián)包賬戶(hù)是怎么回事,轉(zhuǎn)賬是怎么進(jìn)行的,不要隨便找個(gè)野雞交易所就買(mǎi)了。這些不弄清楚,容易造成財(cái)產(chǎn)損失。
等你弄明白之后,也基本知道怎么買(mǎi)、去哪買(mǎi)了。學(xué)習(xí)這些的前提是能翻墻,用Google,僅憑墻內(nèi)世界很難找到門(mén)路。
購(gòu)買(mǎi)的操作步驟非常容易,就不手把手貼圖教了,跟傳統(tǒng)域名購(gòu)買(mǎi)差不多??傊?,最終結(jié)果是,你會(huì)擁有一個(gè)以太坊錢(qián)包,錢(qián)包里有一個(gè)屬于你的.eth域名。注意多留一點(diǎn)以太幣,之后做域名指向時(shí)還要付一些手續(xù)費(fèi)。
Fleek
域名以外的事情,都交給Fleek即可。它能在IPFS上部署網(wǎng)站,并且?guī)湍愀愣ㄓ蛎赶?。?duì)于數(shù)據(jù)少、流量小的個(gè)人網(wǎng)站,它完全免費(fèi)。
在Fleek,有兩種上傳文件的方式。一種叫做Storage,就像百度網(wǎng)盤(pán),選本地文件,上傳,它就被存儲(chǔ)到IPFS里了。你會(huì)得到一個(gè)像這樣的鏈接,可以在任何網(wǎng)絡(luò)環(huán)境和瀏覽器里直接打開(kāi):
https://storageapi.fleek.co/0a3a8890-e65e-47ce-93d7-0442b9209d38-bucket/blog/tools/ps-bulkrename.png
但這種方式不能綁定域名,只能用于分享個(gè)別文件。我則是把它當(dāng)圖床用了,獲得的鏈接插入到博客文章里。
另一種叫Hosting,這種可以關(guān)聯(lián)上你的GitHub賬戶(hù),從中讀取某個(gè)倉(cāng)庫(kù)的代碼。
然后需要選擇你使用的靜態(tài)網(wǎng)站系統(tǒng)。
我原先博客用的是Hexo,這套博客系統(tǒng)其實(shí)不錯(cuò)的。但是它的創(chuàng)作者和使用者主要是華人圈子,海外知名度不高。Fleek是個(gè)海外產(chǎn)品,還不支持Hexo。我只好選了Hugo,重新在GitHub搭了一套博客,把內(nèi)容搬過(guò)來(lái)。其實(shí)Hugo也很好用,在此推薦。至于怎么用Hugo建站,就請(qǐng)自行研究吧,這不是區(qū)塊鏈?zhǔn)澜绲氖虑?,傳統(tǒng)網(wǎng)絡(luò)里也可以。
下一步選擇部署在什么網(wǎng)絡(luò)上,默認(rèn)是IPFS。
還有另一個(gè)選項(xiàng)叫Internet Computer,那也是一個(gè)可以部署網(wǎng)絡(luò)服務(wù)的區(qū)塊鏈,采用了與IPFS不同的技術(shù)原理,各有優(yōu)劣。不過(guò)它比較新,生態(tài)還較為孤立,有興趣也可以創(chuàng)建一個(gè)玩玩。我試過(guò),感覺(jué)也挺有意思。
這幾步做完,網(wǎng)站一小會(huì)兒就部署好了。Fleek把GitHub里的內(nèi)容抓過(guò)來(lái),部署到了IPFS上,還送你一個(gè)子域名。你的區(qū)塊鏈網(wǎng)站已經(jīng)可以訪問(wèn)了,就這么簡(jiǎn)單。
至于域名指向IPFS,在Fleek里的Domain Management操作即可。傳統(tǒng)域名它會(huì)教你解析記錄怎么填,在域名或DNS服務(wù)商那邊設(shè)置。ENS域名照著它的指示來(lái),沒(méi)幾步,過(guò)程中要用到你的以太坊錢(qián)包,并且支付少量的以太幣作為手續(xù)費(fèi)。
里面還可以添加HNS域名,這是之前提過(guò)的一個(gè)區(qū)塊鏈頂級(jí)域名服務(wù)商。它們家的域名所有權(quán)記錄在比特幣區(qū)塊鏈上,可在Namebase公開(kāi)競(jìng)拍獲得,以比特幣支付。但你獲得了頂級(jí)域名后,還得生成一個(gè)完整的主域名才使用,這個(gè)過(guò)程是怎樣的我沒(méi)試過(guò),有興趣請(qǐng)自己嘗試。
eth.limo
到此為止,你的區(qū)塊鏈網(wǎng)站已經(jīng)全部就緒。域名有了,網(wǎng)站內(nèi)容也部署到IPFS,域名也指向網(wǎng)站了。但如果你用了區(qū)塊鏈域名,就會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,在瀏覽器里輸入xxxx.eth根本打不開(kāi)。
這不能怪區(qū)塊鏈?zhǔn)澜?。這是因?yàn)槟壳笆忻嫔辖^大多數(shù)瀏覽器都是傳統(tǒng)網(wǎng)絡(luò)時(shí)代的產(chǎn)物,它們只認(rèn)識(shí)ICANN許可的協(xié)議和域名。你輸入一個(gè)非HTTP協(xié)議、不在ICANN許可列表里的域名,瀏覽器自然是打不開(kāi)的。傳統(tǒng)網(wǎng)絡(luò)世界與區(qū)塊鏈?zhǔn)澜缰g有一道鴻溝,你的網(wǎng)站在區(qū)塊鏈?zhǔn)澜缋镆呀?jīng)成形,但傳統(tǒng)網(wǎng)絡(luò)世界夠不著它。
這么嚴(yán)重的問(wèn)題,當(dāng)然有人解決,eth.limo就是連接兩個(gè)世界的橋梁。想要使用它,你什么也不用做,只要對(duì)外宣傳你的網(wǎng)站時(shí),在域名后再加個(gè).limo。就像我的域名,我對(duì)外宣傳都用的是
https://victor42.eth.limo/,這個(gè)網(wǎng)址能被任何瀏覽器打開(kāi)。如果你裝了Brave等支持區(qū)塊鏈網(wǎng)絡(luò)的瀏覽器,不帶.limo也能打開(kāi)。但你不能指望你網(wǎng)站的訪客都裝了這些新式瀏覽器。
這個(gè)解決方案很神奇,個(gè)人覺(jué)得腦洞很大。那么,eth.limo到底做了什么呢?
在傳統(tǒng)網(wǎng)絡(luò)域名那一節(jié)認(rèn)真聽(tīng)講的朋友,應(yīng)該馬上就能反應(yīng)過(guò)來(lái),victor42.eth和victor42.eth.limo有本質(zhì)區(qū)別啊。victor42.eth是以.eth為頂級(jí)域名,在下面注冊(cè)了一個(gè)名稱(chēng)叫victor42,我擁有的是主域名。victor42.eth.limo是以.limo為頂級(jí)域名,主域名eth.limo也不是我的,只有這個(gè)名為victor42的子域名才是我的網(wǎng)站。
顯然,eth.limo他們家的服務(wù)器做了一些努力,使自己具備進(jìn)入?yún)^(qū)塊鏈?zhǔn)澜绲哪芰Α.?dāng)你試圖訪問(wèn)它們家的子域名時(shí),eth.limo的服務(wù)器走過(guò)橋梁,進(jìn)入?yún)^(qū)塊鏈?zhǔn)澜纾丫W(wǎng)站的內(nèi)容打包回來(lái),呈遞到你面前,像一個(gè)外賣(mài)小哥。
我畫(huà)了個(gè)圖給大家解釋一下,3行分別代表:傳統(tǒng)網(wǎng)站、傳統(tǒng)域名+區(qū)塊鏈網(wǎng)站、區(qū)塊鏈域名+區(qū)塊鏈網(wǎng)站。
- 域名被DNS指向服務(wù)器,打開(kāi)網(wǎng)站。
- 域名被DNS指向Fleek的服務(wù)器,F(xiàn)leek進(jìn)入?yún)^(qū)塊鏈?zhǔn)澜缯业絀PFS上的內(nèi)容,打開(kāi)網(wǎng)站。
- 訪問(wèn)傳統(tǒng)域名,外賣(mài)小哥進(jìn)入?yún)^(qū)塊鏈?zhǔn)澜缭L問(wèn)區(qū)塊鏈域名,區(qū)塊鏈域名指向IPFS上的內(nèi)容,打開(kāi)網(wǎng)站。
紅藍(lán)線表示的,就是傳統(tǒng)網(wǎng)絡(luò)和區(qū)塊鏈網(wǎng)絡(luò)的邊境,穿過(guò)去,就進(jìn)入一個(gè)新世界。
提供這種服務(wù)的也不止eth.limo這一家,使用更廣泛的是eth.link,這域名看起來(lái)正常多了。limo是什么東西,莫名其妙。
其實(shí)limo是指這個(gè),檔次一下子就上去了,但還是莫名其妙。
我最初用的也是eth.link,它是著名DNS服務(wù)商Cloudflare提供的服務(wù)。eth.link是中心化的,用的是Cloudflare自家的傳統(tǒng)服務(wù)器。作為海外產(chǎn)品,在國(guó)內(nèi)水土不服,用了一段時(shí)間,發(fā)現(xiàn)它偶爾會(huì)掛。eth.limo則使用了許多不同服務(wù)器,有多座橋通往區(qū)塊鏈?zhǔn)澜?,可以避免訪問(wèn)網(wǎng)站的旅程倒在這最后一公里。
結(jié)語(yǔ)
以上,我覺(jué)得值得講的事情已經(jīng)全部講完了。
透過(guò)ENS和IPFS兩個(gè)技術(shù),看見(jiàn)了它們背后所代表的世界,新技術(shù)在那邊正成長(zhǎng)為參天大樹(shù)。提醒我們,永遠(yuǎn)不要停下探索的腳步。