HOME/Articles/

虚拟机不虚

Article Outline

虚拟机不虚

虚拟机和编译器最大的区别是一个在运行时,一个在编译时。但也有人说他俩区别不大,有很多重和的地方。这不是重点。

虚拟机的对立面就是物理机了,小时候家里买不起游戏机,我到新华书店花了15块钱买了一个马里奥游戏光盘。这绝对是我这辈子花得最值的15块钱,光盘里有FC,GBA,N64等等几款模拟器,加上几十款马力奥游戏。而且N64模拟器还支持自定义键盘和多人分屏游戏,键盘安排好,4个人同时玩一点问题没有。

模拟器是一种虚拟机,在PC上模拟出来一个虚拟的游戏级硬件,使得ROM文件可以被执行。

在程序员之间最著名的虚拟机应该就是JVM了,一次编写,到处运行的口号深入人心。Chrome 的 V8 一般被成为 JavaScript 引擎,但在功能上和 JVM 很类似,也可以被归为是一种虚拟机。

也许是从以太坊开始,区块链领域也开始流行虚拟机的概念。智能合约的代码不可以直接操作节点的硬件资源,而是例如 “Gas” 这样的虚拟资源。所以说是虚拟机也算是非常合理了. 事实上, 早在比特币设计之初, 就已经具有了虚拟机的的重要组成部分 ---- OP_Codes. 高级语言可以被编译到 OP_Codes 然后以交易的形式发送到比特币网络中执行. 有人可能会说, 比特币的 OP_Codes 不可以循环, 无法实现复杂的功能. 这一点就错了, 使用 OP_CHECKSIG 系列操作符, 是可以在锁定脚本(lock script)里去限制下一笔交易的完整内容的, 因为签名是需要由完整的交易的摘要产生的.

文件存储

为什么突然扯到文件存储呢, 因为代码是文件, 数据是文件, 账本也是文件. 文件存储也是区块链领域挺火的一个应用. 纯存储真不是区块链的优势, 亚马逊 S3 可以处理得很好, 价格便宜, 怕丢就多备份. 区块链主要就是给文件加上时间戳, 打个不可篡改的印子, 完事了矿工就可以把文件删除了, 没有必要一直保存着. 存储的事情, 会有各种长尾的公司去做.

Filecoin 路子就歪了. 首先在 Filecoin 上存文件不可能比 S3 便宜, (但是在ICO 的钱烧完之前可能可以通过补贴矿工来做到很便宜) 因为复杂的挖矿机制要求同一份数据在硬盘上有多份完整拷贝, 而且需要通过网络经常去确认文件的存在. 不过对于自己不理解的事情还是少说两句好了, 我真的看不太懂 Filecoin 的运作方式.

这个世界上我不理解的事情有很多, 大多数是由于我太愚钝, 比如数论, 我很难理解数学家们作出的各种各样的猜想究竟有什么用. 比如一个数的因子之和(不包括它自己)等于它本身,那么就叫它完美数。比如 6 的因子是 1,2,3,它们的和也是6.

智能合约

最近看到一个说法: 匿名币不能实现智能合约. 想一想确实有道理,你连对方是谁都不知道,怎么签合同。区块链不能解决全部问题,现实世界里的问题的复杂度远高于虚拟世界,必须和现实世界结合起来。

最近还看到一些有趣的应用,之前在以太坊上也出现过。就是虚拟物品通过token的方式实现唯一化。以前,像音乐文件,图片,电影这些东西,在网上是可以随意复制的,token化之后每个文件有了唯一的归属,token可以放在用户的钱包里面,然后浏览器、播放器等软件,在用户登陆之后去它的钱包里面获取token,如果没有,就说明用户没有购买多媒体文件的版权,软件直接拒绝播放。这套流程以目前的技术能够完全实现,但标准化可能要等上10年左右。

总而言之,智能合约必须和真实的人的身份绑定。否则没卵用。

点对点屁对屁

“去中心化”这个词已然被玩坏了。从一开始它只是一个技术名词,描述有了比特币之后,不再需要一个第三方的公认可信的审计机构去帮你保存账本,因为比特币自己就是公认可信的。慢慢地变成了一个宗教名词。好像点石成金的咒语,不管是鹅卵石还是花岗岩,食指按住,念上一句“实现了去中心化的xx保证了用户的xx”,就统统变成了金子。

很多人说互联网一开始的设计就是点对点的,这是没错,因为一开始并没有很多人会用网络,网站也只是各种大学和科研机构。所以点对点是很经济的做法。等到互联网热潮来临,出现了大批的互联网公司,用户想要24小时都可以收到邮件,收到即时消息,但用户不会24小时在线,所以中心化服务器成为必然选择。在马太效应下,能得到用户青睐的互联网公司越来庞大。

比特币的去中心化包含两层意思:1。审计机构的去中心化。2.网络的去中心化。而后者是比特币里最不重要的部分。之所以各种区块链项目选择买椟还珠,某种程度上是源于对有限责任公司的概念的漠视,认为使用去中心化的经营方式就可以完全逃避法律责任。实际上,不使用公司的模式去经营,只会给经营者带来更大的风险,因为此时责任是直接落在经营者本人身上的,而非公司。

又在我不了解的领域多嘴了,请见谅。

目前点对点通信又开始兴起,主要是由于移动设备的普及,手机基本是整天开着。但主要障碍是IPv6仍未普及,全世界IPv6覆盖率最高的国家是非洲的法属马约特岛也只有 62.8%。像人人都有一个唯一的手机号一样,人人都有一个唯一的IP地址,估计要等到21世纪的第三个十年了。

目前像 libp2p 这样的解决方案也只是实现了NAT这样的内网与外网的端口映射,依旧没有解决ip地址短缺的问题。所以客户端-服务器模式依旧会是不可撼动的主流。

Fren 2 Fren

Fren 特指关系密切的朋友。虽然机器之间的点对点暂时不太好实现, 但朋友对朋友的交易可以在任何通信渠道下完成。因为朋友之间是相互信赖的 :D