skip to content
Joey 起居注

在区块链上部署代理节点

/

Updated:

上周的博客中讲到了这个想法,所谓的机场就是卖服务器的ip和带宽,有没办法把自己闲置的vps上的闲置的带宽共享出来,自己用不完能让别人也能用呢?现在vps很廉价,很多人都买过vps,一个月二三十块钱,但是上面跑什么很多人是没想法的,配置好翻墙就放在那了,但是个人也用不满,白白浪费了计算资源。

共享经济很美好,但是要解决这个问题必须解决收费的问题,不可能白白分享我的带宽给别人用吧,那么收费的话该怎么收呢?我们都知道在15、16年互联网行业有个创新就是发明了共享经济,那时候出现了滴滴、外卖众包、共享单车、airbnb租房等,本质是出租闲置资源,然后获取收益。滴滴就是一个显著的例子,让车主把闲置的汽车,和他们闲置的时间贡献出来,注册成为快车司机,有了庞大的司机资源后,又向普通的乘客营销,让乘客多打快车,少打出租车。因为大家都信任平台,所以司机可以接受自己的收入只是APP上的一个数字,也许很久都不提到银行卡上。滴滴做的事情其实就是撮合、计费、维护网络。普通人要做一个类似的中介平台很难,但是结合区块链来做,难度就小多了。

因此我在这里提出一个想法,就是基于区块链来实现闲置VPS带宽资源的共享,用众筹的模式,让大家把闲置VPS贡献出来,组成一个大的网络,让客户付费后可以使用网络上的每个节点的带宽。

可行性分析

为什么会有人需要使用别人的VPS的带宽呢?有如下使用场景:

  1. 拿来翻墙,比如中国用户
  2. 拿来当IP代理,比如写爬虫的人
  3. 突破地域歧视,比如说openai, claude 不允许中国ip使用
  4. 隐藏身份,对于一些不喜欢暴露个人信息到社交网站的人来说,挂代理访问,可以让网站难以定位你的位置

上面几点都是真实存在的需求,用的人很多,相关的软件也很多,因此是有需求的。

为什么要基于区块链来做

只是想让人们把闲置VPS贡献出来,然后给其他人用从而赚钱,这里面最难的一点就是给服务端分配收益。就像滴滴,从几亿客户手中收到了钱,要给几百万车主打款,这个技术难度是很高的,业务难度也很复杂。但是在我这个业务里,通过区块链给几百个节点分配收益就很简单,只要在智能合约里面定义好规则,transfer 给每个地址就行。

为什么会有人愿意贡献自己的VPS

代理软件不像别的软件运行后会在本地占用很多硬盘空间或者内存,可以说代理软件是无状态的,就像一条水管一样,流量只是从你家的水管路过一下,不会写漏出来弄脏你家或者堵塞你的水管影响你自己的用水需求。我不会拿我的服务器去挖BTC,因为没那么多闲置的CPU资源,也不会拿去挖ETH,因为没有硬盘和内存资源,更不会拿去跑filecoin,因为它对硬盘的消耗更是巨大。但是跑个代理还是无所谓的,家用路由器,单核CPU,几百MB的内存,都能处理家庭多台设备的网络转发业务,更别说一个VPS了。

因此在自己的VPS上多跑一个代理软件,既不会浪费你的CPU,也不会浪费你的内存硬盘,如果还能顺便赚钱,为什么不试试呢?

什么是代理软件

说到代理软件,很多人想到的就是翻墙,什么shadowsocks, vless, singbox啥的,这种行为在中国是违法的,但是还有一种更通用的代理协议叫作 socks5,这是tcp应用层上的一种协议,应该在全球范围内都是合法的,因此我在本文说到的所有代理软件都是基于socks5协议的。

这是一个通过代理服务器转发http请求的命令行例子:

Terminal window
curl -x socks5://user:[email protected]:8080 https://baidu.com

在这里 123.1.2.3 是代理服务器的公网ip地址,8080 是代理服务器监听的端口,user:password 是用来鉴权的用户名和密码,https://baidu.com 是目标网站。通过这种方式访问百度,在百度的服务器上会以为是 123.1.2.3 这个ip在访问它,而不是你的真实ip。

因为 socks5 是通用的协议,而且内容也很简单,很多人都拿这个来当练手的项目,github一搜就能看到很多实现,基本几百行代码就能搞定。要改造一个socks5代理软件,让它能跟区块链交互,也不是很难,需要做的事情包括:

  1. 支持区块链鉴权,方便校验只有付费用户才能使用
  2. 定时上报心跳到区块链,避免造假以及领取收益

智能合约设计

上面说了代理软件要跟智能合约交互,因此智能合约必须包含以下方法:

  1. isMemberShip: 校验用户是否已经付过月费
  2. deposit: 用户付费,充值月费
  3. imOnline: 代理节点上报心跳包,获取收益

前2个方法实现起来都很简单,我充值5USDT,就能获取一个月的网络使用权,一个月后会员过期就不能再用了,很清晰的逻辑。

imOnline 的实现是最难的,因为:

  1. 要保证代理节点持续在线
  2. 要防止黑客伪造数据骗取收益
  3. 要计算应得收益

区块链为什么发明出了各种共识算法,为什么BTC要大家去算hash,都是为了解决恶意节点做恶的问题,如果没有恶意节点是不是就没这些问题了?我想是的,比如说以太坊的测试节点就是用的 PoA 共识算法,既节点都是可信的节点,每次随机选择一个节点来出块就行,不用担心做恶的问题。POA解决了恶意节点的问题,维护一个10人的善意节点很容易,但是维护一个1000人的善意节点很难,因为到了这个数量,很多陌生节点加入进来,很可能有人为了利益会去做恶。POS算是POA的升级版,因为这个算法认为网络的股东不会做恶,因此持股比例越高的节点,出块的概率越大。使用这个算法,以太坊网络已经扩展到了几千个验证人节点了。

在我这个业务场景中,我觉得添加一个白名单列表保存可信节点的地址就行,假设这些节点都是好的,不需要考虑信任问题了。至于如何判断节点是否恶意,放到线下去做就行,比如说做个telemetry监控节点是否持续在线,是否有真实的用户去使用。然后管理员再基于收集到的指标信息,判断有没有恶意节点,有的话就及时更新白名单。

这样使用白名单添加可信节点的方式,就算把信任问题解决了,接下来讨论一下收益分配问题。

收益分配

共享经济理想状态是按劳分配的,因此我这里理想状态也是谁贡献的带宽多,谁就应该多分钱。举个例子,用户A今天一天都在连服务端B的代理端口,那么A这一天的成本理论上都应该给B,就算网络中还有C,D,E,F… 等很多节点在线,因为他们没有为A服务,是不应该从 A 手中拿到钱的。但是实际上又不可以没有CDEF这些节点,因为你吃饭不是只靠最后一碗饭才吃饱的,前面几碗饭也做出了重大贡献,同理没有CDEF的话,可能用户直接就不付费了,让大家都没法分钱。

因此我提出一个最简单的均分原则,放弃按劳分配的思想,只要在网络中在线的服务节点,就是对这个网络做出了贡献的人,就属于这个网络的股东。可能有的人的VPS CPU低,内存低,带宽小,有的人的VPS性能高,但是他们都是贡献者,应该被算法平视。因此假设用户充值了5美金,30天的会员。在这30天内有5个节点一直在线,那么这5个节点最终应该都分到1美金。

总结

到现在基本可以开始做我设想的这个产品了,需要做的事情包括:

  1. 拿开源软件改造 socks5 代理,加上跟区块链和监控服务交互的功能
  2. 实现智能合约
  3. 实现一个官网用来宣传与收费

目前我看 base chain 的交易费很低,首先打算在这条链上实验,未来如果有需求再考虑上更多的链。