就是要学社区 QQ群组:646854445
你并非已无懈可击,所以你不能逃避问题,拒绝学习!

001孤荷凌寒从零开始学区块链第一天认识什么是区块链

|阅读量:111 |发布于2020-07-05 16:36:22


正文内容

github:

https://github.com/lhghroom/Self-learning-blockchain-from-scratch


【学习笔记】

一、区块链为何而生

以下文字摘录自著名的来自十年前的比特币白皮书:

“本文提出了一种完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。虽然数字签名(Digital signatures)部分解决了这个问题,但是如果仍然需要第三方的支持才能防止双重支付(double-spending)的话,那么这种系统也就失去了存在的价值。我们在此提出一种解决方案,使现金系统在点对点的环境下运行,并防止双重支付问题。该网络通过随机散列(hashing)对全部交易加上时间戳(timestamps),将它们合并入一个不断延伸的基于随机散列的工作量证明(proof-of-work)的链条作为交易记录,除非重新完成全部的工作量证明,形成的交易记录将不可更改。”

我的理解是,区块链技术的诞生,是因为它要解决的问题是:

在不需要任何中心化机构——如银行——的情况下,仍然可以实现对双重支付(有的文档中称之为:双花)问题的解决。

(一)什么叫双重支付?

假设:在一次交易中,A要支付一元货币给B

这时,B收到了A的一元货币,但由于这一元货币是可以无限且低成本复制的,因此 当B收到A的这一元货币的时候,B不能确定A是不是自己就删除(销毁)了自己手上的一元货币,如果 A没有删除(销毁)自己手上的一元货币,(A支付给B的只是复制出来的一元货币),同时A自己手上就也保有同一元货币,这样是在实际交易中不被 允许 的。

如果此时,在另一次交易中,A又用同样的方法将这一元货币支付给了C,此时这一元货币就实现了双重支付,这在实际交易中是不被允许的。

(二)我们过去是怎么解决双重交易的

我们拥有以国家信任背书名义成立的中心化金融机构,由这些中心化的机构来进行货币发行、货币真伪裁定,货币流通控制,因为有国家机构作为信任背书,这些中心化的金融机构可以被所有人所信任,因此就可以解决双重支付的问题。在这里的核心是:中心化的金融机构能够被 绝大多数人所信任。

(三)为什么中本聪要提出区块链技术

关于这个问题,在比特币白皮书中,中本聪也进行了比较详细的说明,原文如下:

“互联网上的贸易,几乎都需要借助金融机构作为可资信赖的第三方来处理电子支付信息。虽然这类系统在绝大多数情况下都运作良好,但是这类系统仍然内生性地受制于“基于信用的模式”(trust based model)的弱点。我们无法实现完全不可逆的交易,因为金融机构总是不可避免地会出面协调争端。而金融中介的存在,也会增加交易的成本,并且限制了实际可行的最小交易规模,也限制了日常的小额支付交易。并且潜在的损失还在于,很多商品和服务本身是无法退货的,如果缺乏不可逆的支付手段,互联网的贸易就大大受限。因为有潜在的退款的可能,就需要交易双方拥有信任。而商家也必须提防自己的客户,因此会向客户索取完全不必要的个人信息。而实际的商业行为中,一定比例的欺诈性客户也被认为是不可避免的,相关损失视作销售费用处理。而在使用物理现金的情况下,这些销售费用和支付问题上的不确定性却是可以避免的,因为此时没有第三方信用中介的存在。

所以,我们非常需要这样一种电子支付系统,它基于密码学原理而不基于信用,使得任何达成一致的双方,能够直接进行支付,从而不需要第三方中介的参与。杜绝回滚(reverse)支付交易的可能,这就可以保护特定的卖家免于欺诈;而对于想要保护买家的人来说,在此环境下设立通常的第三方担保机制也可谓轻松加愉快。”

原文读起来那是相当杀伤 脑细胞的感觉,其实我读了几遍后,认为其实就是一句话,它要解决的问题是:人与人之间(特别是陌生人之间,因为是网络交易为主嘛)的信任问题。

当然中心化的金融机构也解决了这个问题啊?在这里,中本聪已经明确的指出:中心化的第三方金融机构的存在会增加交易成本,这个在现实生活中大家是有所感觉的了吧!而去中心化的区块链解决方案才是最为经济的解决方案,“它基于对密码学的技术的依赖”而不是“基于对中心化的第三方金融支付机构的信用”,这意味着:

1.它更高效,因为是点(可以理解为交易卖买双方中的其中一方)对点(可以理解为交易 卖买双方中的另一方)进行的,没有经过中心化的第三方金融支付机构。

2.它更经济,如上,交易 是点对点直接进行的,可以实现无手续费等好处(当然现在的数字货币支付也是需要微量矿工费的,当然这对于传统第三方支付机构收取的手续费来说,就微不足道了。)

3.更公平,公开也安全,因为它的设计理念是任何人是不可能对已存在的交易进行删除和更改操作的。(当然这不是绝对 的,只是设计意向是这样的,实际运用中,基本上是做到了这样的要求。)(对于它实现这一点的具体原理,作为初学者我也没有完全理解,但我将努力去一点一点学习理解它。)

二、一次去中心化的区块链交易是怎么完成的(粗略勾勒)

一个节点(可以理解为交易卖买双方中的其中一方)发起支付或收款,这次请求被广播给使用此区块链网络中的每一个节点,然后接收到此广播的每一个节点,通过大家都认可的验证交易有效性的算法进行验证此次交易申请是否合法且用户状态是否正常,如果经验证合法,则此次交易申请会被整个区块链网络确认,并完成交易(就是说支付的一方会被 记录下扣除了指定交易所需数量的数字货币,而收款的一方会被记录下收到了指定交易所需数量的数字货币)。此时这个记录下的交易信息会形成一个【区块】(也可能是与其它正完成交易的记录的信息合并成一个【区块】),此【区块】会被并入之前已存在的所有区块组成的链条中,就再也不能被修改与删除了。

示例图示如下:

与传统中心化机构信任担保交易相对比:(如下图)

我认为去中心化的交易有以下特征:

1.交易记录是分布存储的,并不像传统中心化机构的信任担保交易那样所有的交易 记录都存放在中心化机构中。这意味着:很难有任何个人或节点可以随意修改和删除交易 记录(而中心化机构担保的交易因为所有交易信息都存放在同一个中心中,因此很容易发生交易被篡改的问题)

2.一个交易节点与另一个交易节点之间的相互信任不是由中心化机构进行担保的(中心化的担保交易如支付宝担保交易),而是通过整个区块链网络来进行交易合法性确认的(判断是否合法是由区块链的合约算法规定的,具体我也还没有完全弄明白)

3.每个交易记录或同时的多个交易记录会被记录为一个区块,逐步追加到之前的区块之后,从而形成区块链条,我想这就是“区块链”这个名称的由来,这个链条只会越变越长,而不会被删除,之前的区块也无法修改。(这是目前我的理解,具体情况可能比这个复杂,但这算是比较精略的理解吧)

【今天学习中我没有理解的内容】

矿工的作用。所读博客原文如下:

“工作量证明(PoW):网络中一种特殊类型的参与者称为矿工,他们竞争搜索加密难题的解决方案,该解决方案允许他们向比特币的区块链添加一个交易区块,此过程称为工作量证明,它能确保系统安全。”

这是在交易中要起到作用的矿工,在数字货币的交易中,我们也需要支付小额矿工费,但由于个人知识基础可能比较薄弱,今天并没有理解矿工是如何参与到每一笔交易的确认以及发挥其它重要作用的。若有朋友 能够以浅显的语言加以解释,将不胜感激。

三、新了解的相关词汇

(一)哈希(Hash

Hash 音译为:哈希

 意译为:散列

(二)哈希函数(散列函数)

哈希函数是任何可以用来将任意大小的数据映射到固定大小的数据的函数。哈希函数返回的值称为Hash值。哈希函数通常用于通过检测重复的记录来加速数据库查找,它们在密码学中也被广泛使用。

哈希函数允许我们轻松地验证某些输入数据映射到给定的散列值,但是如果输入数据是未知的,那么通过存储的散列值来重构它是很困难的。

以我之前的知识认为,编程中经常用到的md5函数就是一种哈希函数。

(三)Nonce

NonceNumber once的缩写,在密码学中Nonce是一个只被使用一次的任意或非重复的随机数值。


【同步语音笔记】

https://www.ximalaya.com/keji/19103006/252804857

【学习过程屏幕录屏】

链接:https://pan.baidu.com/s/1QrcHCXlWLvzEAwsljNxeoA

提取码:64it

【就是要学】社区
一个平等,纯粹的社群
本社群旨在为真正愿意不断学习,终身成长的朋友提供一个平等互助互相鼓励的清洁纯粹的学习交流的平台。
加入社群将获得
1、与真正终身学习者为伍
2、在榜样带领下坚持每天学习,终身成长
3、养成记录时间日志,成功日记的习惯


【就是要学】社区QQ群:646854445





【返回首页】