比特币背后的区块链技术

2018-02-22  本文已影响0人  4f6e65db83a7

上一周因为春节的原因停更了一周。

今天就跟大家来聊下 比特币背后的区块链技术。

如上一篇文章所述,比特币是一种P2P形式的匿名数字货币。

而支撑这一匿名数字货币交易在无第三方信任机构下顺利运转的背后技术就是,区块链技术。

那区块链技术到底是什么以及区块链应用到底有什么前景呢?今天就来跟大家浅谈下区块链技术。

区块链如其名,由两个部分组成。

一个是区块, 另外一个是链。

如上一篇文章所讲,每一个区块包含诸如张三于2018年3月27日下午三点十分五秒转账100比特币到李四账户,

诸如此类。

我们可以简单的把每一个交易数据理解为每一个区块,且根据时间轴每一个区块都指向上一个区块,形成一个链条。

在比特币的区块链中,这些通过SHA256计算的区块哈希链就是比特币账本不可篡改的基础。

如上图所示是两笔相连接的交易区块。

如果我们仔细观察每一笔交易,可以发现,除了第一笔交易是矿工的挖矿所得外,每一笔交易都拥有一个或多个输入(TxIn),以及一个或多个输出(TxOut)

第一笔矿工挖矿的收入交易通常被称为Coinbase,它没有输入,所以TxIn的Hash总是被标记为00000000...0000

其他的交易,任何一个TxIn都会唯一追溯到区块链上在本区块之前的某个交易Hash,以及索引:

通过交易Hash和索引(从0开始),即可唯一确定一个未花费的交易输出——UTXO(Unspent Transaction Output)。这样,每一个Tx Input都和之前的某个Tx Output关联了起来。

简单来讲,每一个接续的方块都会包含前一个方块的哈希,所以这个就是(强制性的)将它们绑到一起的纽带。如果有人擅自篡改了第一个方块,加入了一些其他交易数据,那么哈希值会变,结果就是这种不匹配就会把链条打断。所以哈希的目的就是确保没有人可以篡改区块。

那你可能会问了:

那如果有人修改了一个方块的内容,然后把后面的接续方块的哈希也一并更新会如何呢? 

这也是有可能的,不过有一件事情我还没有告诉你。区块链的数据并不只是存在于仅仅一台计算机里面。一台计算机里面的区块链数据并不能骗到人,因为它会被复制到网络中每一个用户的计算机里面去。如果你加入了一个区块链网络,那么你的计算机就会去下载这些区块数据,如果有人篡改了他拥有的版本,整个网络也会考虑占多数的人的计算机上所拥有的版本才是正确的。

还有一件事,在一个区块链网络中,不仅是数据,就连整个系统的程序都被复制到了所有的电脑中。大多数互联网应用都是集中化的,比如 Facebook,它的数据和程序都被放在了它的服务器上,你的计算机会从 Facebook 的服务器上获取到你一个人需要知道的信息。但在区块链的世界里,就没有存在于中心的东西,它依赖的是用户的计算机来容纳自己的程序。是的,这就意味着,如果整个区块链网络中的每一台电脑都关机了,那么这个区块链系统就死翘翘了。

区块链现在大致分为三大类:


公共区块链:完全去中心化,所以用户都可以读取

我们所熟知的比特币就是基于公共区块链的。

简单来讲就是参与到比特币的每一个人都可以参与读写区块链账本的书写。

其中对于那些贡献了他们自己的算力用来验证整个区块的人被称为矿工。系统会给他们提供比特币作为奖励。


联盟链:部分去中心化,写入参与者被提前筛选,读写权限由被选定的参与者们决定

如前阵子用于日韩汇款用的瑞波(XRP Ripple)区块链就是联盟链,只有加入该联盟,并获得多数联盟成员

同意后才有资格写入数据。其链上数据读的权限其实也是由联盟决定权限。

私有区块链:部分去中心化,写入权限仅在一个组织手里,读写权限由该组织决定

私有区块链与联盟链差不多,一般用于公司内部或者组织内部使用没有联盟的概念就是了。

Bitcoin, Ethereum 等等这些都是公共区块链的例子,任何人都可以成为其中的一分子。那如果我们想要有一个私有的区块链网络该如何呢?有些人想要一个私有的区块链是想干嘛呢?那就来瞧瞧下面的故事吧。

文章中列子转载于 区块链新手指南

Mark 和 Sara

Mark 已经五个月没交房租了,当 Sara 找他要的时候,他就说晚点会给她。她付不起律师费,而法院强制执行诉讼就需要8个月甚至一年,所以唯一的选择就是去说服 Mark。

Joe 的生意

Joe 是一个商人,他经常要跟不同的公司做生意。几个月之前他和一家零售商签了一份合同,尽管合同条款都已经履约了,可零售商确拒绝付款。这帮人利用法律制度中的漏洞来游说 Joe,想以此达到少付钱的目的。Joe 在这以前就是有这方面经验的,在某些情况下,他会找法院求助,但这样做所耗费的时间和金钱却要损失他自己的利润。

我们该如何帮助 Sara 和 Joe 呢?

我们是不是能在其它地方解决这个问题呢? 在 Sara 遇到的这种情况中,我们需要让 Mark  按月支付房租,这其实就是一个基于时间的触发机制。你的日历程序使用这样的触发器来给你提供预设事件的通知。

在 Joe 遇到的场景中,一旦合约中的条款都满足了,当事人就得付款,这其实就是一个基于条件的触发机制。你想想上次从 Amazon 买电子书的时候,是不是得先确认付款了,Amazon 才会把电子书发给你?

重点是,计算机程序会始终如一的执行诸如此类的指令。当你点击着这篇文章,向下滚动,诸如这类的操作,它也会照着执行不误。为了能帮助到 Sara ,我们需要将合同的条款转变成代码。

Sara 和 Mark 之间所订立的智能合同的伪代码

If today’s date is 30th and rent is not paid then

Transfer $500 from Mark’s account to Sara’s account

可是我们在哪儿部署这些代码呢? 它就应该被部署到所有参与者的计算机上。Sara 的还有 Mark 的银行都会是这一个私有区块链网络的一部分。Joe 和 Sara 会签署一份编码的协议(也就是智能合同),然后这份协议会被分发到网络中去,Mark 的和 Sara 的银行都会有一份拷贝。在每个月的 30 号,当时钟跳动到 12 点整,协议好的金额就会从 Mark 的账户转移到 Sara 的账户上去。Joe 也开始使用智能合同来强制让他的客户支付协议好的货款。

Sara 高兴了,因为她再也不用去烦心 Mark 会不会如约付房租了。Joe 也高兴,因为他也不用找法院要说法了,省下这些精力,他可以继续发展自己的生意了。

私有区块链只限于业务中涉及到的相关各方,因此 Joe 不会是 Sara 和 Mark 所属区块链网络的一部分。

上一篇下一篇

猜你喜欢

热点阅读