最近發生的一件事件讓筆者重新思考起了傳統的網域存取服務,我們一直認為非常穩定的網域解析服務,居然也會有出問題的時候。這讓筆者不禁在想,去中心化的方案或許是值得探索的替代方案呢?
思考了一下,在區塊鏈上部署頁面,它可能有以下幾個好處:
1.去中心化:所有的修改都需要大家共同同意才能進行,沒有一個單獨的機構能說了算。
2.無需憑證:因為區塊鏈本身就用了加密技術,所以不需要額外的憑證配置。
筆者之前看過TON 上的網域方案,當時覺得似乎只是好玩,實用性一般,畢竟傳統的存取方式已經很穩定、常用了。但現在想想,可能真的會有用到它的地方,所以筆者打算再好好研究一下。
在區塊鏈中創建網站
本文將在這裡嘗試將一個網站部署在TON 中,並且可以讓使用者在瀏覽器中存取這個頁面。流程分為三步驟: 1. 購買網域名稱;2. 準備前端頁面;3. 綁定頁面到網域名稱。
區塊鏈中的網域名稱和WEB2 世界中的網域概念其實是類似的,都是對某一複雜不易記的位址的別名,在區塊鏈中是代表了用戶的位址,在WEB2 中則是服務的IP 位址。
購買域名
以TON 為例,網域的官方購買地址是https://dns.ton.org/ ,以TON 來計價。和WEB2 一樣,字元越短的網域價格越貴,價格在1 - 100 TON 不等。
如果該網域沒有被任何人擁有,那麼你就可以以低價進行出價,並且在出價之後進入倒數計時,在倒數計時內所有人都可以競價,直到倒數結束。在拍攝的網域之後,網域會以NFT 的方式存到用戶的錢包裡。域名NFT 可以進行交易。網域的有效時間是1 年,到期後會被收回。
總結一下就是,購買網域可以透過在官網拍賣來獲得,也可以從別的用戶那邊交易得到。
準備前端頁面
在這一步驟需要準備一個前端頁面來作為展示。為了簡單,本文只準備一個html 檔案加上nginx 來將頁面暴露出去,當然,專案還需要一台雲端伺服器來運行前端頁面。這一步和傳統的前端應用部署一樣。
綁定頁面到.ton
在擁有一個.ton 網域之後,可以在TON 的DNS 官網綁定你的ANDL 位址。當然你也可以使用TON 提供的綁定工具,按照官網的介紹去綁定你的頁面。
在綁定完成之後,你還需要在伺服器上啟動一個監聽的端口,用於監聽http 請求並轉發成udp。這裡可以使用官方提供的rldp-http-proxy工具,輸入下面的指令就可以啟動了:
rldp-http-proxy/rldp-http-proxy -p 8080 -c 3333 -C global.config.json
其中, 8080 是將在本地主機上監聽傳入HTTP 查詢的TCP 端口,而 3333 是將用於所有出站和入站RLDP 和ADNL 活動的UDP 端口(即透過TON 網路連接到TON 網站)。 global.config.json 是 TON 全域設定的檔案名,可以在這裡下載。
造訪.ton 域名
想要直接在瀏覽器中敲.ton 的網域去訪問網站是沒有效果的,因為瀏覽器不知道要將這個網域解析到哪裡。所以這裡還需要做一些額外的操作。
請求.ton 的過程
在請求.ton 網域的時候,首先會去鏈上查詢對應ANDL 位址,該位址可以簡單理解為WEB2 中的IP 位址,在你部署網站的時候,會自動產生。這次的查詢過程也可以類比為DNS 查詢過程。
之後根據ANDL 的位址,請求會轉送到你對應的機器上,這時候可以指定對應回傳的頁面。整體的過程和WEB2 相當類似,主要差異在於地址和網域對映的查詢方式不太一樣。
透過代理訪問頁面
最推薦的方式使用官方網站提供的代理工具Tonutils Reverse Proxy 。下載安裝啟動之後,會啟動一個8080 連接埠用於代理,之後就可以去訪問.ton 的網域了。
可以看到能夠訪問.ton 的網域的網站了。
使用總結
目前使用下來,遇到了以下幾個問題:
對網站運作的環境有要求。你的系統需要支援glibc 2.34 版本以上,所以在部署頁面前,先檢查一下自己的機器是否符合要求。
文件不是很清晰。有可能是因為這個TON 經營網站的需求不是很多,所以文件寫的不是很完善,需要自己摸索。另外中文的話更新不及時,落後於英文版本的內容。
訪問的速度較慢。造訪的速度會落後於傳統的網站。當然這裡面牽涉到的因素會很多,只能說以後的進步空間很大。
沒有被錢包支持。官方提供了一個簡單的內嵌瀏覽器頁面,你可以選擇不安裝代理程式就可以存取。但是目前這個網站被所有主流的錢包都認定為了釣魚網站o.0 。
總而言之,目前體驗其實一般般,後面還有很多可以提升改進的地方,但是這個方向筆者覺得挺好挺創新的,嘗試一下也是不錯的。