Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

《Nodejs开发加密货币》之十三:加密货币就是货币

$
0
0

这是一篇加密货币的入门文章,是写给没有接触过比特币、加密货币的小伙伴的入门指南,接下来的内容,都将与加密货币相关。

前言

“加密货币就是货币”听起来挺“白痴的”。想想背后的意思,言外之意就是“加密货币可能不是货币”,就非常值得玩味了。事实上,在我接触的很多朋友当中,一开始认为后者的更多。包括我自己,也是经过探究一段时间之后,才认定这个结论的。

惯性定律不仅存在于物质世界,也存在于人类的认知世界。人类的经验越丰富,理解新事物的阻力就会越大。特别是当一个新事物出现在面前,它的名字没有什么特别,技术本身也不是什么新奇玩意的时候,说它是颠覆性创新,即将改变未来,着实让人费解。

这里,针对没有接触过加密货币的人,试图用最直白的语言,写一篇通俗、简单的入门文章,架起人类思考和接纳加密货币的桥梁。如果看完之后,你有了那么点激动,想要继续探究下去,本文就算成功了。

本文,会涉及到入门者一开始就碰到的一些概念,比如:什么是加密货币?与大家日常使用的各种数字币有什么区别?有什么优势,为什么会如此受到吹捧?等等。基本上,都是我一个程序员最通俗的理解。

加密货币最简史

加密货币首先是一种数字货币。早在比特币出现之前,“数字货币”、“虚拟货币”、“电子货币”等就已经出现了,特别以“虚拟货币”居多,最简单的理解就是“货币数字化或虚拟化”。这里的货币是现实的法币,比如美元、人民币,数字化就是不用拿钞票,直接通过网银、某宝等就可以支付。

后来,在游戏平台,最早提出了游戏币的概念,通过法币直接兑换,然后,玩家使用它购买各种装备。接着,很多网站也推出了各种币,通过游戏的思维,用以吸引用户。这些所谓的数字货币,最直观的解释,其实就是“代币”。

近年来,比特币出现,一种真正的可以称为“货币”的数字货币诞生,人们却很难把它与其他数字货币区分开。原因很简单,一方面,不接受的惯性非常强:大部分人都有丰富的数字币使用经验,满世界都是“数字货币”,偏偏它就不同吗?

另一方面,接受的阻力非常大:理解加密货币需要知道点P2P网络是怎么回事,知道有加密解密技术这么回事,最好还能了解点数据库技术,每一样都不是普通人所具备的。

即便这些技术都具备了,但是要想实现像法币一样的功能和特点,也不是几个人脑洞大开,想想就能明白的。所以,在人们的思维里一切“数字货币”并不是真正的货币,而仅仅是“代币”而已,“加密货币就是货币”反而令人费解,让人难以接受。

什么是加密货币?

我把这个问题,通过某度搜索了一下,非常奇葩的是,直接回答这个问题的竟然是一个传销币(把加密货币当作核心产品,通过传销发行的加密货币),当然,内容也没有直接回答,只是谈了谈与法币(像美元、人民币等由银行或国家发行的纸币)的区别。可见,界定一下这个概念,还是非常必要的。

我们所说的“加密货币”,英文是“Cryptocurrency”,也有人在百科上翻译成“密码货币”,可以解释为一种加密电子货币(或数字货币),典型的例子就是比特币。所以,我们不妨使用比特币来给加密货币下个定义:

加密货币,是一种基于点对点网络(P2P网络)、没有发行机构、总量基本固定的加密电子通货。

解读

(1)P2P网络:这个不是什么新鲜玩意,最早我们使用的Bit下载,就是基于P2P网络的,现在很多下载工具都支持。它的好处就是“去中心化”,也就是没有中央服务器,要下载的文件都在用户自己电脑上,而且下载速度更快;

(2)没有发行机构:就是说,不是那个公司、银行或国家控制发行的。要做到这一点,同时防止通货膨胀等因素,需要在编程中使用非常复杂的机制和规则来实现。

(3)总量基本固定:这是保证加密货币价值的一种策略,“物以稀为贵”,任何东西没有上限就会失去它的吸引力。这一点,区别于很多网络社区使用的积分,比如:A币、C币、Q币、S币等。

(4)加密:这里说的加密,不是用户使用的输入用户名、密码那种简单的权限控制,而是对每一个产生的电子货币本身的交易与传输的加密。密码学本身很复杂,但是使用它并不复杂,明白这个就足够了。

(5)电子通货:也就是说加密货币就是货币,跟法币一样,可以自由交易,只不过是一种电子(数字)形式而已。那么什么A币、Q币之类的不是货币吗?不是,下面详细解释这一点。

加密货币就是货币

加密货币就是货币,这是一个近乎“瞎掰”的奇葩结论,当我们了解了上面的历史和概念定义之后,就容易理解多了。但是如果你不是技术人员,理解起来还是有点困难,那么现在我们再来类比一下法币,找点与“货币”的共同点。

(1)定量:法币通常与背后的黄金或者所谓的GDP挂钩,算是相对固定(经济低迷时的过量发行暂且别考虑了)。加密货币,可以算作绝对的固定数量,或者少量的增发(可以弥补一些丢失的币等),防止通货膨胀。

但是,一些网站提供的数字币,是没有固定数量的,一般作为法币的代币,用户购买了多少,总量就有多少。

(2)加密:法币是有防伪的,应该说实物防伪的最高级别的技术就是在法币上(不过,仍然可以伪造,假币并不少见),通过验钞机等专门的验钞设备可以验证。加密货币的加密技术就相当于防伪技术,每一笔交易都会被严格加密,专家解释说,破解加密货币是理论上可行、成本上绝对不可行的事情,因此很难伪造,同时,验证机制要远胜法币,简单、快速且准确。

那么,个别网站的数字币,就不是这样,仅仅是一串数字而已,管理员可以修改、冻结,他们的加密也仅仅是用户登录时的权限控制。

(3)交易:法币,也称为通货,被称为一般等价物,是可以与任何商家交换,购买任何东西的,这是货币的最基本属性。加密货币,也是如此,你可以支付给任何一方,加密货币会安全到达,不用担心被黑客劫持、破解,也不用担心价值会减少或蒸发。

但是,一些网站的数字币,是绝对没有这种功能的,只能在网站内部交易,离开网站就没有了任何价值。有些商城可以使用积分购物,看似可以在很多网站之间交易,其实仍然是他们自己的网站。当然,网站如果与第三方签订了协议,规定它的数字币值多少法币,也就可以与其他网站交易,但是这种交易,本质仍然是法币交易。不过,即便如此,这个协议,估计没有人愿意签订,至少,我不会,因为无法监督、控制,无法保证绝对信任。

加密货币靠谱吗

从上面的讨论,我们可以了解加密货币是怎么回事了,但是可能仍然怀疑加密货币的实用性,靠谱吗?这是最初很多人都会问的问题。结论当然是靠谱,但是解释为什么,就要动用很多技术和理论。还好,这些技术和理论,都是目前成熟的技术。你只要认为他们靠谱,那么下面的解释,就很好理解,不然,想说服自己,说加密货币比一些网站的数字币更靠谱,还是很难的。

(1)去中心化

这个很好理解,首先明白什么是“中心化”。目前,我们通过浏览器浏览的各大网站,都是中心化的,必须有一台或多台服务器,把我们浏览的内容整理好,供我们浏览。服务器坏了的话,我们也就无法访问了。中心化的东西,一切都被某个组织或公司控制着。

去中心化,是基于P2P网络的,没有一台机器作为中心化的服务器的功能,网络中的每一台电脑都是平等的,任何一台掉线、拓机,都不会影响整个网络继续运行。如果大家都信任这个网络,这个网络基本上永远都不会死掉,现在的比特币网络基本上如此。具体看《一个精巧的p2p网络实现》一篇的源码分享。

这是加密货币的交易通道。是网络基础,可以实现无障碍交易。只要可以上网,任何时间、任何地点,就可以介入这个交易网络,把加密货币支付到世界的任何一个角落。

(2)加密解密

我们有了可以自由通行的路线或航道,但是这些航道安全吗?有没有强盗?被劫持了、破解了,怎么办?更何况,我们这条航道,要通过一家家私人住所(个人或组织的电脑),或许有个黑客正时刻等待出击呢。

这就需要使用严格的加密解密技术。还好,加密解密技术,也是网络世界普遍使用的技术,已经成熟使用了这么多年。从理论上讲,加密货币的交易地址、每一笔交易等都是加密解密中的一部分,破解一个毫无意义,全部破解相当不易,加之P2P网络节点众多,破解一个节点也没有任何价值,所以加密货币的安全级别应该是目前最高的。

这是加密货币的安全保障。有了这一点,我们才能放心的把加密货币支付出去,而不担心丢失、被盗,买家才能有支付交易的基础动力。关于加密解密技术,可以阅读《在Node.js中使用加密解密技术》,以及开发实践《三张图让你全面掌握加密解密技术》。

(3)区块链

我们可以顺利支付了,但是另一个担心又来了,怎么保证卖家一定收到了或者一定没有收到?万一,卖家赖帐,死活说没有收到钱怎么办?这种信任感,谁来保证?

回答是,区块链。这个才是加密货币的独创,比特币的创新发明,不过使用的技术却是简单的数据库技术(当然,也可以使用文件存储,不过多数应该都是数据库)而已。区块链的本质就是存储在数据库里的交易数据,其结构不过是每一条记录都会记录前一条区块头的哈希值,从而可以实现往前追溯,直到第一个创世区块。

更重要的是,这个数据库,在P2P网络中分布式存储,每一个节点都会保存一份拷贝,每一个人都可以公开访问,查看交易记录。也就是说,交易双方不仅能看到交易结果,整个网络节点都能看到,公开、透明、可追溯,让你不得不信。

这是加密货币的信用保障。任何经济行为,没有信任作为基础,都不可能达成。加密货币这个独创性,为构建公开、透明、可追溯的信用体系打开了一扇大门,各大公司、组织、个人为加密货币痴迷,都是因为这个创新技术背后的无限可能性。后面,我会继续分享亿书区块链的实现,《神秘的区块链》(待完成)

(4)共识机制

有航道、安全、可信,是不是就足够了?一个关键的问题是,这么多的节点维护一个相同的数据库,到底那个节点写入的数据库被接受,该如何有序的运作呢?还有,发行的加密货币是固定数量的,怎么保证某个节点不调皮捣蛋自己增加数量呢?在利益面前,什么人、什么事情都可能出现的奥。

这个问题的解决,就是所谓的“共识机制”,也是算法机制,包括工作量证明机制(POW)、股权证明机制(POS)、授权股权证明机制(DPOS)等,类似于大家商讨问题,集体决策时的原则和规矩。这才是加密货币需要重点编码的地方,也是加密货币开发的难点。

特别是DPOS机制,基本上就是股份制公司的股东投票机制,亿书使用的就是这种算法机制。后面,我也会继续分享相关文章,包括亿书的《DPOS机制的实现》(待完成)。

这是加密货币的运行规则。是把前面的通用技术进行融合创新的地方,不了解这个部分,就无从谈起加密货币开发。

最后,上述技术并非相互独立的,而是相互支撑,通过共识机制成为一个整体,实现了加密货币绝对不用某个机构发行、也能保证绝对安全的支付和交易。

总结

想象一下,一个高度自治的网络,会给我们的未来带来什么样的变革(未来趋势)?我们能使用加密货币做点什么(应用场景)?如果进入这个行业投资或创业,有什么需要注意的(风险和方法提示)?这些问题,请看下一篇:《利益,魔鬼与天使的共同目标》

链接

本系列文章即时更新,若要掌握最新内容,请关注下面的链接

本源文地址: https://github.com/imfly/bitcoin-on-nodejs

首发区块链俱乐部: http://chainclub.org

亿书白皮书: http://ebookchain.org/ebookchain.pdf

亿书官网: http://ebookchain.org

亿书官方QQ群:185046161(亿书完全开源开放,欢迎各界小伙伴参与)

作者微信:kubying

参考


Viewing all articles
Browse latest Browse all 14821

Trending Articles