从零开始学习区块链

Posted 类人源

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始学习区块链相关的知识,希望对你有一定的参考价值。

转自 区块链大师

以比特币的区块链为例,你可以把区块链想象成一个比特币的公共账本,这个账本:

  1. 存放在互联网的各个比特币节点上,每个节点都有一份完整的备份

  2. 里面记录着自比特币诞生以来的所有比特币转账交易

  3. 账本是分区块存储的,每一块包含一部分交易记录。每一个区块都会记录着前一区块的id,形成一个链状结构,因而称为区块链

  4. 当你要发起一笔比特币交易的时候只需把交易信息广播到p2p网络中,矿工把你的交易信息记录成一个新的区块连到区块链上,交易就完成了。(生成一个新的区块)

这里有几个问题:

  1. 如何保证用户有足够的余额,例如你只有十个币,而你居然发起了一笔转20个币的交易怎么办。这个问题很好解决,因为区块链上记录了所有的比特币交易记录,只需要回溯所有的和你账户相关的历史交易就能知道你这个账户上到底有多少余额,余额不对矿工是会拒绝记录你的交易的。由此你可能又会产生一个疑问,那么最初的比特币是从哪里来的呢? 最初的比特币是由系统奖励给记录区块的矿工的。每一个区块在生成的时候就会在生成这个区块的矿工的账户上生成一定数量的新比特币作为奖励。(俗称挖矿)矿工是指具有挖矿能力的服务器,一般这类服务器会有极高的运算能力

  2. 如何保证你的账户不被冒名顶替这问题也很好解决,用数字签名技术就好了。每个比特币账户都有公钥和私钥。你发起交易的时候用私钥对交易信息签名,矿工收到信息后用公钥检查一下签名就好了。

  3. 那么多矿工,如何决定该由哪个矿工生成下一个区块?

解决方案是这样的:中本聪设计了一个数学问题,这个数学问题会耗费大量的计算机cpu时间才能得出答案,同时每一次得出的答案都会作为下一次计算的初始条件进行技术。全世界的矿工一起来计算这个问题,谁先得出答案,他就可以用这个答案生成一个新的区块,再广播到网络中。

收到这个新块数据的矿工会立即停止当前的计算,用新块里的数据重新进行下一次计算。这就是所谓的“挖矿”。矿工产生的区块一旦被网络接受,他就能获得一笔比特币作为酬劳。这时要考虑一种情况:如果同时有两个矿工各自得到一个正确答案,并各自生成了一个区块广播出去会发生什么呢?这时候在区块链上同一个位置就有了两个区块,所谓的“分叉”就出现了。

分叉是绝对不允许的,所以当矿工发现区块链分叉之后,会选择最长的一条继续计算,短的那条区块链会被丢弃。仔细思考下这个体系,你会发现它几乎无懈可击。首先你不能凭空造出比特币,只能挖矿获得;其次你无法伪造交易,无法控制不属于你的账户。一旦交易被确认,几乎无法取消。我这里说“几乎”,是因为有“51%攻击”的存在。51%攻击条件非常苛刻,这里就不扩展开讲了。感兴趣的朋友可以自行查阅相关资料:http://8btc.com/article-1949-1.html

 

现在你应该大概明白了区块链是怎么回事。一个公开透明的可信赖的帐务系统,听起来还不错,是吧? 不过,区块链远远不止是一个帐务系统那么简单,它的意义之重大、用途之广泛,一旦你意识到,你一定会像我一样激动万分的。区块链技术使得DAC成为可能。DAC是一种能够从根本上颠覆人类社会组织模式的东西。我相信它对社会的影响,会超过工业革命,成为互联网给世界带来的最为深刻的变革。

 

以上是关于从零开始学习区块链的主要内容,如果未能解决你的问题,请参考以下文章

用Python从零开始创建区块链

用Python从零开始创建区块链

用Python从零开始创建区块链

用Python从零开始创建区块链

使用Java语言从零开始创建区块链

用Python从零开始创建区块链