如何在「链上」访问网站
最近发生的一件事件让笔者重新思考起了传统的域名访问服务,我们一直认为非常稳定的域名解析服务,居然也会有出问题的时候。这让笔者不禁在想,去中心化的方案或许是一个值得探索的替代方案呢?
思考了一下,在区块链上部署页面,它可能有以下几个好处:
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 的 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 域名的时候,首先会去链上查询对应 ANDL 地址,该地址可以简单理解为 WEB2 中的 IP 地址,在你部署网站的时候,会自动生成。这次的查询过程也可以类比为 DNS 查询过程。 之后根据 ANDL 的地址,请求会转发到你对应的机器上,这时候可以指定对应返回的页面。整体的过程和 WEB2 相当类似,主要区别在于地址和域名映射的查询方式不太一样。 最推荐的方式使用官网提供的代理工具 Tonutils Reverse Proxy。下载安装启动之后,会启动一个 8080 端口用于代理,之后就可以去访问 .ton 的域名了。 可以看到能够访问 .ton 的域名的网站了。 目前使用下来,遇到了以下几个问题: 对网站运行的环境有要求。你的系统需要支持 glibc 2.34 版本以上,所以在部署页面前,先检查一下自己的机器是否满足要求。 文档不是很清晰。有可能是因为这个 TON 运行网站的需求不是很多,所以文档写的不是很完善,需要自己摸索。另外中文的话更新不及时,落后于英文版本的内容。 访问的速度较慢。访问的速度会落后于传统的网站。当然这里面涉及到的因素会很多,只能说以后的进步空间很大。 没有被钱包支持。官方提供了一个简单的内嵌浏览器页面,你可以选择不安装代理就可以访问。但是目前这个网站被所有主流的钱包都认定为了钓鱼网站 o.0 。 总而言之,目前体验其实一般般,后面还有很多可以提升改进的地方,但是这个方向笔者觉得挺好挺创新的,尝试一下也是不错的。 准备前端页面
绑定页面到 .ton
请求 .ton 的过程
通过代理访问页面
使用总结