区块链与比特币学习笔记一

“区块链技术来源于比特币,也因为比特币的疯狂而备受瞩目。区块链技术发展到现在,无论是在技术上的深度与广度,还是在应用场景上的宽度,均取得了较大突破。虽然比特币类加密数字货币在区块链领域依然备受关注,但是百花齐放的区块链应用,尤其是大量企业级区块链应用的出现正在催熟区块链技术,区块链技术正处于快速发展演化期,未来会拥有一个更大的可以施展拳脚的舞台。”——《区块链技术及应用 华为区块链技术开发团队编著》

比特币系统与区块链技术

本书通过一个通俗的故事介绍什么是比特币系统,从而引出区块链:

从前,有个古老的村落,里面住着一群古老的村民,这个村庄没有银行为大家存钱、记账。没有一个让所有村民都信赖的村长来维护和记录村民之间的财务往来。也就是没有任何中间机构或者个人来记账,于是,村民想出了一个不需要中间机构或个人,而是大家一起记账的方法。
比如,张三要给李四1000块钱,张三在村里大吼一声:大家注意了,我张三,给李四转了1000块钱。这时候附近的村民听到之后呢,需要做两件事:
1)通过声音确定这是张三喊的。而不是别人冒名张三喊的,从而防止别人去花张三的钱;
2)检查张三是否有足够的钱,每个村民都有个小账本记录各个村民有多少钱,当确认张三真的有1000块钱后,每个村民都会在这个账本上记录:“xxxx年xx月xx日,张三转给李四1000块钱。”
除此之外,这些村民口口相传,把张三转账的事情告诉了十里八村,当所有人都知道转账的事情后,大家就能够共同证明“张三转给李四1000块钱”。这样,一个不需要村长(中心节点)却能让所有村民都能达成一致的记账系统诞生了。这个记账系统就可以类比为我们今天常说的比特币系统。
在这里插入图片描述

这个故事也引出了三个值得思考的问题:
1.记的账在后面会不会被篡改?
2.村民有什么动力帮别人记账?
3.这么多人记账,万一记的不一致岂不是坏了,以谁记的为准?
而比特币则巧妙地解决了这三个问题。

第一,比特币采用两种策略保证账本不可篡改:①人人记账。人人手上都维护一本账本,这样即使某个人改了自己的账本,他也无权修改其他村民手上的账本,修改自己的账本相当于“掩耳盗铃”,他人并不会认可。②采用“区块+链”的特殊账本结构。在这种账本结构中,每一个区块保存着某段时间内所发生的的交易,这些区块通过链式结构连接在一起,形成了一个记录全部交易的完整账本。如果对区块内容进行了修改就会破坏整个区块链的链式结构,导致链条断了,从而很容易被检测到,这两个策略保证了从全局来看整个账本是不可修改的。

第二,前面一条提到了人人参与记账,这就产生疑问“凭什么我要帮别人记账呢?”。这涉及到比特币系统中的激励机制。参与记账的村民,被称作“矿工”。这些矿工中,首个记账被认可的人:①将获得一笔奖励,这笔奖励就是若干个比特币,这也是比特币发行的唯一来源,这种奖励措施使众多矿工积极参加记账;②谁在某一块账本被认可,其他人都会分别拷贝这一块账本,从而保证所有人维护的账本是完全一致的。这两点保证了区块链的自动安全运行。

第三,既然有了激励,大家就会争抢着记账并努力让自己的记账被认可,怎么确定以谁记的为准呢?为了能够确定以谁记的账为准,村民们想到了一个公平的办法;对每一块账本(类比为现实账本中的一页),他们从题库中找到一道难题,让所有参与记账的“矿工”都去破解这道难题,谁若最先破解了,该页/块就以他记的账为准。这个破解难题的过程就被称为“挖矿”,也即工作量证明的过程。(这个难题的解题过程需要不断尝试,较为困难,但是找到答案发给别人后,别人是很容易验证的)

比特币通过“区块+链”的分布式账本保障了交易不可篡改,通过发放比特币的激励措施激励了“矿工”的参与,通过计算难题(矿工挖矿)解决了记账一致性问题。这样完美形成了一个不依赖任何中间人即可完成记账的自动运行系统。这其中具有“区块+链”不可篡改账本、多方参与、结果共识的技术,就是比特币背后的区块链技术。在这里插入图片描述

比特币交易

想要参与比特币系统中的交易过程,需要一个类似现实世界中银行“账户”的实体。而实际上比特币的交易参与方实体为一组公私钥组合。私钥是由程序生成的一串随机数,而其公钥则是根据私钥经过一系列的计算生成的,公与私钥之间存在一一对应的关系。其中,公钥作为参与交易的“账户名”,在交易中被引用,用于指明一笔交易中资金的来源于去向,而私钥则作为交易过程中的“验证密码”,用于确认某一交易的合法性。
在比特币的设计中,私钥的长度被设定为256比特,取值范围在[0,2^256-1],在这么大的取值下,难以出现两个完全相同的私钥,这也是密码学的基础。
比特币的一对公私钥以及其对应的钱包地址是按如下流程产生的:
首先通过某种随机数生成算法产生出一个256比特串作为私钥,然后再使用椭圆曲线加密算法(ECC)对这个私钥计算生成公钥。此后公钥再通过一系列的哈希计算和Base58编码得到钱包地址。
而对于交易内容存储的介绍,在《区块链 智能合约与DApp应用实战》中有更详细的介绍:
在Bitcoin世界所谓的交易是指传输加密货币,然而完整的交易内容(例如A传100个比特币给B)并不会直接直接存储于区块中,所存放的仅为处理过后的交易哈希值。完整的交易内容存储于区块链节点得到数据库中,交易哈希值仅用于协助快速查找交易内容的数据索引值。
Bitcoin采用Merkle Tree算法来实现哈希值的处理。
在这里插入图片描述
Merkle树为二叉树结构,Bitcoin利用其特性将交易内容的哈希值存储在默克尔树的叶子节点,每层所得到的的哈希值再两两进行哈希运算,最终可得默克尔树的根节点,被存储于区块的数据即默克尔树的根哈希值。
Bitcoin使用Merkle树的目的之一是为了验证历史数据是否被篡改过。举例而言:假如有人尝试篡改某一笔交易,那么修改过后所计算出的哈希值绝对会与篡改前的不同,因此最终得到的Merkle树的根哈希值也会不同。通过这种对比,即可知道区块内的交易是否被动过手脚。但是比特币交易是否一定不会被人做手脚呢,其实也不是,这里推荐一篇知乎文章:
推荐文章
这篇文章里讨论了对比特币做手脚你可能需要付出的成本。
从某个Merkle树中快速查找一笔交易所需经过的路径长度即为Merkle路径。若Merkle树中有512笔交易,Merkle路径搜索的长度仅为9,若具有32768(2^15)笔交易时,Merkle的路径长度也只不过15。因此通过Merkle树可以快速找到交易的哈希值,进而判断区块是否包含特定交易的算法。

区块链问题澄清

在《区块链革命》的序章:从《失控》说起 中对大众对区块链的认知误区做出纠正:

区块链的核心技术是分布式而不是去中心

根据凯文·凯利的定义,分布式系统“没有强制性的中心控制”,这里的明显意思即分布式系统弱化了中心控制,而不是消灭了中心控制。区块链是若中心化的、分中心化的。在他眼中,去中心是一个过程而不是一个结果,而一个新的更具高效率和低成本的事物必将取代陈旧。区块链也许能使得公平与效率达到一个接近最优平衡,但至少目前的技术仍然消弭公平与效率之间间隙的可能性。区块链的希望中心分布式账本依靠去中心的共识算法来保持数据的高度一致性,这就无法照顾到效率,而公平与效率之间的宿命也就没有被区块链所打破。

区块链是分布式账本,但分布式账本不一定是区块链。

区块链的诞生,代表着技术极客们在网络空间、虚拟社会里建立一个去中心化的自治社区的愿景。比特币区块链作为一个小范围实验,在过去近十年的时间里证明了分布式网络确实有不少值得借鉴的技术优势。金融机构视图对比特币区块链去伪存真,他们对像比特币区块链那样的公共区块链进行了一番改造,去掉了原生数字货币。允许多中心机构的多节点的弱控制、改进了共识算法并加入了更强的隐私保护加密算法。为了强调与去中心化的公共区块链的区别,这个改造过的区块链,被刻意命名为分布式账本,而不再称为区块链了。

区块链在工程技术层面还不够成熟,离金融行业大面积应用还需要数年时间。

区块链上一直有两批人,在不同的方向上做着不同的事。一批人专注于挖矿、炒币甚至发行自己的数字货币筹资,业界称为“币圈”;另一批人专注于区块链技术的研发、应用,甚至从区块链底层协议编程开始做起,业界俗称“链圈”。区块链技术目前的成熟程度已经足够满足“币圈”的需求,但对于“链圈”而言,区块链技术目前还存在不少瓶颈,妨碍了各行各业的区块链+。比如现有共识算法如果不优化,按照比特币区块链每秒七笔交易的速度,金融交易层面就无法使用区块链技术;比如公共区块链账户余额是向全网公开的,而银行必然不能接受客户账户余额向全网公开的做法,这就需要新的隐私保护算法,而这方面的加密算法还没有达到生产级别的应用水平;再比如区块链的可编程性是各国央行发行数字货币得到最大吸引力,也是金融行业对区块链技术的最大期许。但TheDAO事件(北京时间2016年6月17日,黑客利用TheDAO编写的智能合约中的重大缺陷展开网络攻击,造成300多万以太币资产被分离出TheDAO资产池的财产损失事件)提醒我们,应该有一个能对智能合约进行事先检验的科学方法,但这方面的最先进的技术如形式化验证,目前还处于理论研究阶段。

“代码即法律”只是乌托邦理想,智能合约也只是帮助执行双方约定的计算机程序而已。

一旦把双方的约定写入智能合约,计算机程序在技术上可以保证做到不可反悔、不可篡改以及按照约定自动执行,但代码即法律就像网络社会完全自治一样,基本不可能见容于现实社会。缔结、编制智能合约的依据可能大部分还是要来源于现实世界的法律体制,比如产权的登记和确认;而网络世界里发生的纠纷,最终也会需要一个第三方机构来提供最后的司法仲裁和救济。

比数字货币范围更大、价值更大的数字资产。

数字资产是指在区块链上登记、发行、交易的资产;它往往以数字代币(token)的方式记录在分布式账本上,coin是它的货币单位。相较于数字货币,只有投身于区块链的应用研究中,才能有大视野与大事业。

猜你喜欢

转载自blog.csdn.net/qq_44229840/article/details/114192567