区块链的学习让身边朋友投资重庆获得了很大的收益。
跟风接触区块链后,发现是由比特币引申出来的。
追本溯源,整理了一些关于“比特币”的基础知识,分享于此。
(虽然比特币已经涨到了3W,但商业逻辑的本质是一样的,肯定能在以后的日子里参悟。)
1. 比特币的本质:
一堆复杂算法所生成的特解。特解是指方程组所能得到无限个(其实比特币是有限个,数量极限是2140年的2100W枚)解中的一组。而每一个特解都能解开方程并且是唯一的。
以人民币来比喻的话,比特币就是人民币的序列号,你知道了某张钞票上的序列号,你就拥有了这张钞票。
而挖矿的过程就是通过庞大的计算量不断的去寻求这个方程组的特解,这个方程组被设计成了只有 2100 万个特解,所以比特币的上限就是 2100 万。
2. 比特币网络:
比特币网络是一个在线系统,比特币本身作为一串数(特解)离开了比特币网络一点用处也没有,这些数只有放进比特币网络里才能正常运作。换句话说,在这里将比特币比作下片的种子,将比特币网络比作下载用的网络,离开了下载工具,徒留你一大把种子也下不到泷泽萝拉不是么?
比特币网络被设计成了一种分布式存储数据库(分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量),换句话说,就像你在银行存了钱,银行将这些钱拿出去借贷了但是你仍然能够在你的网银账户里看到钱数,其实就是银行在数据库里写下了你的账户金额。比特币也存在这么一个数据库,但是这个数据库并不存在某个中心的服务器里而是面向所有人公开:每一个比特币钱包都是一个节点,这些节点用类似于
BT 下载的 P2P 网络相连,现在比特币钱包安装后下载的数据大约为
7G,记录着全世界所有人比特币钱包里的数据。当然,如果以后发展比特币钱包继续增大也可以抛弃一些陈旧且无意义的交易细节。
3. 交易流程:
还记得比特币只是一串数吗?为什么能保证这串数在同一时刻只会拥有一个合法的主人呢?
答案来了:关于交易:
每当你发起一次交易的时候,都会向整个比特币网发出广播,内容如下:
“我是节点 A,有特解 123,现在要转账给节点(钱包)B,你们看好了昂?”
比特币网络里的其他节点收到这个信息纷纷与自己的本地数据库进行比对,并回应:
“我带入方程算了下,这确实是个解,而且我看到了 A 是有 123,B 节点也存在,我承认这笔交易。”
当确认的节点数达到一定量的时候(取决于收款方想要有多稳妥),交易就成功发生了。
接下来,越来越多的节点收到了这个消息,并且没有人提出异议,这个交易记录就被整个比特币网络所接受,从此特解 123 成为了 B 钱包里的所有物。
如果你在交易结束之后,欺骗本地客户端,又让 A 钱包发出信息:
“我是节点 A,有特解 123,现在要转账给节点 C,你们看好了昂?”(即之前提到的记人民币号手法)。
其他节点收到信息与本地数据库一对比:
“不对,我这写着特解 123 在 B 手里,不承认交易。”
越来越多的节点拒绝了交易,于是你的交易就失败了。
关于挖矿:
挖矿也是同样的原理,利用大量的计算力去计算方程组特解,而你的矿机程序会先与本地的数据库进行对比,发现自己这里从来没有这个特解,于是向全网广播:
“我是 A,我这有个新比特币,叫 234,你们要没见过我可就收下了?”
之后的原理与交易就相同了。
比特币网络有一定的容错机制,可以保证即便是有一定的欺诈者(一直发发布虚假信息)和捣乱者(一直拒绝承认别人的交易)也不会影响到整个网络的运转。
也因此,比特币虽然是匿名的但是也是完全透明的,只要你想的话,你可以在本地的数据库中追查到某个比特币从被发现之时起所有交易经过的节点。通过这些交易记录与那些各大比特币交易所的市场深度进行对比,其实要人肉某个账户相对来说也是比较容易的。
有人又会问:既然比特币的算法是开源的,数据库是开放的,网络是无人控制的,那么难道不能以举国之力来“破解”比特币网络么?
知乎上有这么一个问题:“如果用天河二号做比特币挖矿机效果如何?”
简而言之就是比特币网络中现有的计算量已经非常庞大,即便是让国家级超级计算机加入比特币网络也不一定能获得优势,考虑到比特币的价格不稳定说不定还付不起超算的电费。而且在算法上,比特币保证了当整个网络的计算量提升的时候运算难度也会相应的提升,超算加入比特币网络大概也就只能领先一周左右。
4. 上限的问题:
还有同样的来自开源的问题:如果比特币的算法是开源的,那么怎么能够保证它的上限只有 2100 万,为什么不能修改?
谁告诉你不能修改的?当然可以修改
比特币官方客户端源代码中这个文件的第 998 行附近:
int64_t GetBlockValue(int nHeight, int64_t nFees)
{int64_t nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
nSubsidy >>= (nHeight / Params().SubsidyHalvingInterval());
return nSubsidy + nFees;
}只要修改那个50,就可以增加比特币上限值,但是问题是比特币是开源的,标准是开放的,网络是没有中心管理的。“官方”客户端改了用户不一定愿意用,第三方客户端一看用户不愿意用人家也不跟进,所以某一家改了这个数字一点意义都没有。除非有足够大足够多的节点统一采用了新上限的客户端才会导致比特币网络的货币存量上限上升。
所以,比特币的 2100 万上限不会增加并不是一个不能的问题,而是一个大家都不想于是达不成统一意见的问题(客观上确实就是增加不了)。
针对商业上的逻辑就不好分析了,是不是旁氏骗局仁者见仁,不过比特币所浪费的计算力确实是货真价实的浪费,可不是像SETI@Home那样给什么研究机构做了贡献。不过因为比特币算法发明人中本聪身世扑朔迷离,发表了开头的那篇比特币初始算法和体系的论文之后就人间蒸发了,也说不定人家是某个神秘科学家正在利用大家的计算量和宇宙未知力量作战。
不过,有一点到值得一提,现在中美都有金融界的相关学者提到了这样一个有趣的用途:比特币的这套系统和算法可以被用来代替现有的 SWIFT 国际资金清算系统,它的结算速度比现有的结算系统更快速,而且也十分安全可靠(这里是指算法可靠)。
【SWIFT(Society for Worldwide Interbank FinancialTelecommunications---环球同业银行金融电讯协会),是一个国际银行间非盈利性的国际合作组织,总部设在比利时的布鲁塞尔,同时在荷兰阿姆斯特丹和美国纽约分别设立交换中心(Swifting Center),并为各参加国开设集线中心(National Concentration),为国际金融业务提供快捷、准确、优良的服务。SWIFT运营着世界级的金融电文网络,银行和其他金融机构通过它与同业交换电文(Message)来完成金融交易。除此之外,SWIFT还向金融机构销售软件和服务,其中大部分的用户都在使用SWIFT网络。】
但是,即便真的比特币算法被当作一种新型的国际间结算标准使用,也不会使用现有的比特币网络来做。就像同样采用BitTorrent标准,国内的某些下载客户端可以保证只给自己的客户端供源而无视其他客户端一样。银行肯定会修改一定的算法作为一种银行业专用的私有系统进行结算,现有的比特币也肯定不会得到这个新私有网络的认可,所以和大众也没什么关系,这并不算是一个十足的利好消息。
如何挖矿图解:
http://jingyan.baidu.com/article/fec7a1e52db8751191b4e76c.html