区块链技术原理
我尽量不涉及太多细节,把区块链大概的工作原理用尽可能简单的语言描述一下,相信你能
很快对区块链有所了解。
以比特币的区块链为例,你可以把区块链想象成一个比特币的公共账本,这个账本:
1.存放在互联网的各个比特币节点上,每个节点 都有一份完整的备份
2.里面记录着自比特币诞生以来的所有比特币转账交易
3.账本是分区块存储的,每一块包含一部分交易记录。每一个区块都会记录着前一区块的
id,形成一个链状结构,因而称为区块链
4.当你要发起一笔比特币交易的时候只需把交易信息广播到p2p网络中,矿工把你的交易信息
记录成一个新的区块连到区块链上,交易就完成了。
这里有几个问题:
1.如何保证用户有足够的余额,例如你只有十个币,而你居然发起了一笔转20个币的交易怎
么办。
这个问题很好解决,因为区块链上记录了所有的比特币交易记录,只需要回溯所有的和你账
户相关的历史交易就能知道你这个账户上到底有多少余额,余额不对矿工是会拒绝记录你的
交易的。
由此你可能又会产生一个疑问,那么最初的比特币是从哪里来的呢?
最初的比特币是由系统奖励给记录区块的矿工的。每一个区块在生成的时候就会在生成这个
区块的矿工的账户上生成一定数量的新比特币作为奖励。
2.如何保证你的账户不被冒名顶替
这问题也很好解决,用数字签名技术就好了。每个比特币账户都有公钥和私钥。你发起交易
的时候用私钥对交易信息签名,矿工收到信息后用公钥检查一下签名就好了。
3.那么多矿工,如何决定该由哪个矿工生成下一个区块?
解决方案是这样的:
中本聪设计了一个数学问题,这个数学问题会耗费大量的计算机cpu时间才能得出答案,同
时每一次得出的答案都会作为下一次计算的初始条件进行技术。全世界的矿工一起来计算这
个问题,谁先得出答案,他就可以用这个答案生成一个新的区块,再广播到网络中。收到这
个新块数据的矿工会立即停止当前的计算,用新块里的数据重新进行下一次计算。这就是所
谓的“挖矿”。矿工产生的区块一旦被网络接受,他就能获得一笔比特币作为酬劳。
这时要考虑一种情况:如果同时有两个矿工各自得到一个正确答案,并各自生成了一个区块
广播出去会发生什么呢?
这时候在区块链上同一个位置就有了两个区块,所谓的“分叉”就出现了。
分叉是绝对不允许的,所以当矿工发现区块链分叉之后,会选择最长的一条继续计算,短的
那条区块链会被丢弃。
仔细思考下这个体系,你会发现它几乎无懈可击。首先你不能凭空造出比特币,只能挖矿获
得;其次你无法伪造交易,无法控制不属于你的账户。一旦交易被确认,几乎无法取消。我
这里说“几乎”,是因为有“51%攻击”的存在。51%攻击条件非常苛刻,这里就不扩展开讲
了。感兴趣的朋友可以自行查阅相关资料。
----------------------
好吧,现在你应该大概明白了区块链是怎么回事。一个公开透明的可信赖的帐务系统,听起
来还不错,是吧? 不过,我想告诉你区块链远远不止是一个帐务系统那么简单,它的意义
之重大、用途之广泛,一旦你意识到,你一定会像我一样激动万分的。
区块链技术使得DAC成为可能。DAC是一种能够从根本上颠覆人类社会组织模式的东西。我相
信它对社会的影响,会超过工业革命,成为互联网给世界带来的最为深刻的变革。
----------------------
区块链技术的用途和意义
(未完待续)
赞同(305)评论(82)
相关问题
现在的 SSL 加密技术,预计多少年以后会被轻易破解? 20 个回答
如何将手中 20 多台旧电脑,组建一台超级计算机? 53 个回答
在金融公司做 IT 是什么感觉? 93 个回答
随机确定密文的加密方式,密码有办法被破解吗? 12 个回答
暴力密码破解器 ocl-Hashcat-plus 支持每秒猜测最多 80 亿个密码,意味着什么? 16 个
回答
有了分布式计算平台后,像天河这种超级计算机还有存在的必要吗? 23 个回答
其它回答
文浩
区块链攻城狮,http://blockchaindev.org
#1. 区块链技术是什么?
我在面试时为了让应聘者快速理解区块链,是这么打比方的:
想象有一个100台的分布式数据库集群,现在的情况是这100个节点实际上的拥有者是一个机
构,并且所有节点处在该机构的内网当中,所以这个机构想让这100个数据库节点干嘛就干
嘛,换句话说这100个节点之间是处于一个可信任的环境,并且受控于一个实体,这个实体
具有绝对仲裁分配权。
现在的情况是这样的,想象这100个节点分别归不同的人所有,且每个人的节点数据都是一
样的,即完全冗余,并且所有的节点是处在广域网当中,换句话说就是这100个节点之间是
不信任的,且不存在一个实体,它拥有绝对仲裁权。
现在考虑第二种情况,采用什么样的算法(共识模型)能够提供一个可信任的环境,使:
每个节点交换数据过程不被篡改;
交换历史记录不可被篡改;
每个节点的数据会同步到最新数据,且承认经过共识的最新数据;
基于少数服从多数的原则,整体节点维护的数据本身客观反映了交换历史。
以上为背景,
现在来谈谈区块链,区块链本质上就是要解决以上第二种情况的一种技术方案,更确切的说
应该叫分布式的冗余的链式总帐本方案。
只要包含了以:
一种P2P的角度,链式的,只维护一本总帐的,能解决以上问题的技术方案,称之为区块链
技术方案。
有关区块链的一些要素,在我的文章里有总结过一些:
包含一个分布式数据库
分布式数据库是BC的物理载体,BC是交易的逻辑载体,所有核心节点都应包含该条BC数据的
全副本
BC按时间序列化Block,且是整个网络交易数据的主体
BC只对添加有效,对其他操作无效
基于非对称加密的公私钥验证
记账节点要求拜占庭将军问题可解/避免
共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩
溃。