区块链技术(爱丁堡硕士课程记录)

区块链和分布式账本 Blockchains & Distributed Ledgers

中央控制系统 Centrally-controlled systems

●一个人(政党/节点)控制谁可以读/写/删除数据

●如果person/party/node死掉/不诚实/崩溃,系统就会崩溃

(所谓的单点故障,一个节点不可靠)

●一个人(政党/节点)控制谁可以读/写/删除数据

●如果person/party/node死掉/不诚实/崩溃,系统就会崩溃

(所谓的单点故障,一个节点不可靠)

 

受控访问分布式系统 Controlled-access distributed systems

●节点共同控制系统 Nodes collectively control the system

●仅少数节点故障时,系统仍可正常运行 If only few nodes faulty, system remains operational

●受控参与-仅授权方 Controlled participation - only authorized parties

(多个节点协作工作,一个坏了,不影响系统使用,其他节点仍可以运行)

开放分布式系统 Open-access distributed systems

●节点共同控制系统 Nodes collectively control the system

●仅少数节点故障时,系统仍可正常运行 If only few nodes faulty, system remains operational

●任何人都可以随意参加、加入或离开 Anyone can participate, join or leave as they please

Open-access distributed systems和Controlled-access distributed systems前面都一样,就是第三条不一样,Open-access distributed systems的改进是任何人都可以参加进来或者离开

 

区块链是什么

● A blockchain is a distributed database that satisfies a unique set of safety and liveness properties

区块链是一个分布式数据库,它满足一组独特的安全性和活性属性

● Distributed ledgers use a blockchain protocol as one means of implementation

分布式账本使用区块链协议作为实现手段之一

● To understand it, we will focus on its first application

为了理解它,我们将关注它的第一个应用

区块链是一个分布式的共享账本或数据库,存储于其中的数据或信息,具有去中心化、不可篡改等特点。

狭义的来讲,区块链是就是一种按照时间顺序来将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。

而从广义来讲,区块链其实是一种分布式基础架构与计算方式,它是用于保证数据传输和访问的安全的。

本质上是一种去中心化的分布式数据库。任何人只要架设自己的服务器,接入区块链网络,都可以成为这个庞大网络的一个节点,人人可加入。

Why study blockchains? 为什么研究blockchains ?

 

这页ppt没啥用就说了区块链的一些应用,能学习一些知识......

 

了解区块链,先看一本书的问题

现在有一本永无止境的书,开始这个书只有一个封面,每个人都可以写书追加一页,只要抄写员有兴趣,新页就会无限地产生,每创建一个新页面都需要抄写员的一些努力。

 

现在你写了一页书,发现有三本书都可以附加在后面,你准备把你写的这页加哪?老师说选一本页数最多的加到后面。如果页数一样就随机选一本就好。对于每个人来说,看到的书可能书不一样的,因为每个人的选择是不一样的,你创建了一个页面,把它和前一个页链接起来,然后通过串起最长的页面序列来组合这本书,这样你就能创建出最长的书,如果有些页面最后不是这个版本的,也没关系。这就是我们所说的孤儿页。

 

其实就是123页都正常有人写了第4页,有人写了4‘页,第5个人可以接着4页那个人写,也可以接着4’那个人那页写,但是这个人就是随机选了接着4页的写,同理第6个人可以选择接着4‘写,也可以选择接着5写,但是第5页比较长,所以他就接着第5个人的写,写了6,.....后面就同理,1-8越写越长,但是4’,6‘,7’这些页没人接着写,就把这几个页叫孤儿页(orphan page)

 

这里需要注意,创建一个页面,需要做一些努力。你需要投入一些能量,可以把它想象成有一对骰子,然后你掷它。一旦你找到了正确的组合,才能开始。如果掷骰子不是正确的组合就不能创建页面。

 

这里需要掷骰子决定能不能写下一页,目的是为了打破平衡,打破对称性,你有两本或更多的书以相同的速度膨胀。你想以某种方式把它分开。你希望在某种程度上让这两种观点中的一种获得优势,因为这样一来,你就能够集中在同一种版本的书中,每个人都将其作为标准版本,就是说如果两本书都一样厚,没办法给他们分开,不能够集中到同一个版本的书中,如果掷骰子决定的话一定会有一本书比其他书要厚,以后大家就都会去那个书上写东西,其他的书就成为了孤儿页。这就是作者想达到的目的,所以不是想写就写的,需要掷骰子决定能不能写下一页。这样的话其实也就比较有秩序了,大家不会一起写好多页,谁扔骰子到某个点数,谁才能写。

记住,我们并不关心书中包含什么。我们只关心每个人对这本书有相同的看法(就是每个人都可以写书,每个人权力一样大,都要靠掷骰子决定能不能写下一页)。它们的书是一样的,骰子允许你把这种对称打破为。允许你用一个版本进行交流。

如何成为一个抄写员 Being a scribe

任何人都可以成为这本书的抄写员

只要有一套骰子

一个人拥有的骰子越多,摇出一页的获胜组合的可能性就越大

 

书就是相当于区块链,存放数据,每一页相当于一个小区块。其中的每个块,都有数据库的数据。当你遍历所有的区块时,你最终得到了数据库。

抄写员,那些能够创建页面的人他们被允许创建页面并将其添加到书中,他们就是矿工。真实情况下矿工系统是机器,可以创建区块并将它们添加到区块链中。

为了创建一个区块作为矿工,你必须解决一个中等难度的难题。今天我们会看到这个谜题是什么样的。这个谜题应该有概率的概念。它应该允许每个人参与,只要他们有一定的计算能力。它应该能够打破这种对称性。这里解决的难题就比喻成掷骰子达到某一个点数。

要创建你想要的新页面,你必须付出一些努力。这意味着能量。这意味着材料,为什么要这么做?为什么会有人想这么做呢?为什么他们要花费金钱和精力来维护这个分布式数据库?

第一个应用就是比特币

人们为什么愿意参与进来。说白了还是因为奖励...还扯了一些经济学家进来,主要还是因为有奖励

比特币是什么

比特币试图成为两件事。首先,它试图成为一个支付系统

○ Competing with cash, bank deposit operation network, Visa, Mastercard, etc

与现金、银行存款运营网络、Visa、Mastercard等竞争(Visa或MasterCard会遇到一些问题,不连续工作,会瘫痪)

○ High throughput (large volume of transactions/sec) 实现高吞吐量(每秒大量事务)

○ Low latency (fast transaction settlement) 低延时

○ Uninterrupted service 连续运行;不间断服务

比特币试图成为的另一件事是数字资产(我理解的就是能花 能和货币一样有价值)

比特币是一种虚拟的,没有发行人的一种加密数字货币,比特币是区块链的其中一种应用,比特币的交易会形成一个交易记录链条,不同区块之间的连接形成区块链。比特币本质上是一种加密的信息块,由于没有被普遍认可的发行官方,因此比特币并是不某一个国家官方货币,也没有被所有的国家认可。

比特币(bitcoin,简称BTC)的概念最初由中本聪在 2008 年提出,是一种点对点,去中心化的数字资产,并在 2009 年,比特币网络诞生由其创始人开创了第一个比特币区块。比特币是一种 P2P 形式的数字加密货币。预计 2140 年发行完毕,共 2100 万枚,具有极强的稀缺性。德国为首个认可比特币的国家,微软,戴尔也纷纷接受比特币支付。

2010 年 5 月 22 日,一位名叫拉斯洛·汉耶茨(Laszlo Hanyecz)的程序员在网上发布了一条消息,表示他愿意花 1 万枚比特币买两个披萨,结果真的有人跟他交易,因此他成功换得两个披萨。这是自比特币诞生以来产生的首笔交易,当时一枚比特币相当于 0.003 美分。 感觉正是有人愿意交易,才赋予了价值。

特点:

  • 去中心化:不依赖任何一个中心记账,没有中央银行,而是由所有人一起来维护一个账本,任何人都可以去抢记账权。去中心化是比特币安全与自由的保证。

  • 不可篡改:每一个区块都被盖上了时间戳,所有区块首尾相连,一旦想更改区块内的数据,时间戳就对不上了;而且所有人都在盯着,想篡改至少要有超过一半的人愿意跟你一起操作。

  • 公开透明:任何一个账户的往来账目都可以在区块链上查到。当你转账给别人时,不用担心对方收了钱不认账,区块链上都记得一清二楚。

  • 国际化,无国界流通:因为比特币只存在于互联网,如果想转账、支付、购买比特币,只需要联网操作就可以。全世界有近一半的国家接受比特币,比美元、人民币等货币都更加国际化。跨国汇款,会经过层层外汇管制机构,而且交易记录会被多方记录在案。但如果用比特币交易,直接输入数字地址,点一下鼠标,等待 p2p (点对点)网络确认交易后,大量资金就过去了。不经过任何管控机构。

  • 抗通胀:银行发布的货币总量是没有上限的,政府每年都在大量印钱,比特币的上限是 2100 万,任何人不得更改。

  • 专属所有权:操控比特币需要私钥,它可以被隔离保存在任何存储介质。除了用户自己之外无人可以获取。

比特币的优点

恢复力

这本书(账本)是通过网络共享的

即使部分节点崩溃或损坏,系统仍可正常运行(因为人手一个账本)

审查阻力 Censorship resistance

censorship resistance的特性意味着任何人都可以拥有比特币的价值,且没有被恶意者如机构或管理者等剥夺的风险

人人都能参与

不受地理影响。不管你是哪个国家的。他们不需要经常遵守他们的规定或某一个国家的管辖。

数字化并且开放

它是开放的。所以现在任何人都可以成为用户。只要他们的应用程序遵循一些非常合理的基本规则,他们就可以在上面构建任何他们想要的东西

最主要的好处是去中心化了,人对人,不需要第三方机构了,更加安全

比特币的缺点

不适合作为钱

价格波动和流通不随经济增长而变化,比特币的价格每天波动大,一天高一天低,第二天的价格没法预测。

没有任何东西是用比特币定价的 没有人说一个衣服多少多少比特币

最后,从某种意义上说,它不是一个很好的交换媒介,因为它是系统,因为数据库很慢。这是因为吞吐量小,吞吐量低。它不允许每秒处理5到8个事务;延迟意味着从您发出交易的那一刻起,您必须等待多长时间,直到完成。在比特币中,这是60分钟。所以,你必须在超市等待一个小时,直到交易完成。

Irreversibility 不可逆性

一旦你发布了交易,交易就在那里,你发布了它,你不能收回它。如果你在交易中出于某种原因犯了错,比如说,你不小心把钱寄给了另一个人,而不是寄给了你要寄的人,那么这笔钱也不能收回。

如果用户的比特币被盗或丢失密钥,没有恢复机制存在

environmental inefficiency. 环境效率低下

矿工必须在能源,材料和稀土材料上投入精力来建造他们的计算机,等等。比特币对环境的影响是荒谬的。例如,整个比特币系统的二氧化碳足迹大约和希腊一样多。就是挖矿要消耗资源,有点破坏环境。浪费资源。

值得思考的问题

一个页面如何正确地引用前一个页面? (区块如何连在一起) Hash functions

如何创建页面?我们如何执行和验证付出的努力,我们如何打破对称性? (如何创建区块?如何打破对称?) Proof-of-Work

如何证明数字资产的所有权? Digital signatures

Hash Functions 哈希函数

Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。

哈希函数(散列函数)能够将任意长度的输入值(可以是一个大文件)转变成固定长度的值输出,该值称为散列值,输出值通常为字母与数字组合。例如如下,就是一串哈希结果

00740f40257a13bf3b40f54a9fe398c79a664bb21cfa2870abe7888b21eeba8

单向函数 (One-way function)是一种具有下述特点的单射函数:对于每一个输入,函数值都容易计算,但是给出一个随机输入的函数值,算出原始输入却比较困难。显然,单向函数不能直接用作密码体制,因为如果用单向函数对明文进行加密,即使是合法的接收者也不能还原出明文了,因为单向函数的逆运算是困难的。

还没有人能够从理论上证明单向函数是存在的。单向函数存在性的证明将意味着计算机科学中一个最具挑战性的猜想

 

P=NP就是数学界的一个难题,不用管是啥,反正就是无法证明单向函数是存在的。

哈希函数密码注意事项

Collision attack 碰撞攻击

碰撞攻击:求x, y: H(x) = H(y)

hash是密码学和平时的程序中经常会用到的一个功能,如果hash算法设计的不好,会产生hash碰撞,甚至产生碰撞攻击。

所谓碰撞攻击指的是对于同一个hash函数来说,两个不同的input通过hash计算得到了同样的hash值。用公式来说就是:

 

这种概率其实很低,但也有小概率存在

Pre-image attack 原像攻击

原像攻击(Pre-Image Attack)是指定一个散列值,找出具有该散列值的任意消息

Second pre-image attack 第二原像攻击

是指定一条消息1,找出另外一条消息2,消息2的散列值和消息1相同。就是给定一个x,找到一个y,使得hash(x) = hash(y)

一个好的hash算法要抵御以上三种攻击。哈希函数应该抵抗所有这些攻击,也就是说,任何(有计算界的)攻击者都不可能执行这些攻击。

老师还举例子

367个人在一起,一定有人的生日会碰撞上,因此在概率学上,哈希的结果也一定是会碰撞上的。

哈希函数实例化

Retired. MD5, SHA1.

MD5, SHA1哈希已经退休了,2005年山东大学的王小云教授发布算法可以轻易构造MD5碰撞实例,此后2007年,有国外学者在王小云教授算法的基础上,提出了更进一步的MD5前缀碰撞构造算法“chosen prefix collision”,此后还有专家提供了MD5碰撞构造的开源的库。 所以MD5碰撞很容易构造,基于MD5来验证数据完整性已不可靠,考虑到近期谷歌已成功构造了SHA1的碰撞实例,所以MD5, SHA1不安全,退休了

Current. SHA2, SHA3, available for {224, 256, 384, 512}-bit fingerprints.

MD5 与 SHA-1 算法已被攻破,不应该被用于新的用途;SHA-2 与 SHA-3 还是安全的,可以使用。

Bitcoin. Uses SHA2 with 256 bits output, SHA-256

比特币。使用256位输出的SHA2,即SHA-256。

工作量证明Proof-of-Work

所谓工作量证明即是要求用户进行一些耗时且复杂的运算获得问题答案,并且答案能被快速验证的活动。整个比特币网络即是以工作量证明这种机制运行的。

之前举得例子就是掷骰子,但是实际中不可能掷骰子,要求用户进行一些耗时且复杂的运算获得问题答案,获得答案的才能获得奖励。并且答案能被快速验证。

工作量证明(Proof of Work)是由于成本高或耗时长而难以生成、但却易于他人验证的一段数据。工作量证明的产生通常涉及着一项计算任务,这个计算任务里有一个成功概率较低的随机过程,因此平均来说,在生成有效的工作量证明之前,需要进行大量的反复试错试验。在比特币中,工作量证明机制是基于 SHA-256 哈希算法的。说白了比特币工作量证明算法试图解决一个单次成功概率很低的难题。

int w

w ≔ 0

while Hash(d, w) > Target

increment w

return w

相当与给你一个d,你去不断的寻找w,使得Hash(d, w) <=Target 不停的去试,知道最终满足,谁先找到w,谁先拿到奖励。

数字签名 Digital Signatures

●可由一个指定实体生产。

●可由任何人验证。

●即使发送了多个签名,也不能在新消息上伪造。

未完,待续。。。。。 

第一篇博客,许多不足,多多指教!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值