Blockchain
learn in non-consulting way
October 31, 2008
Basic Concepts
-
一种完全面向p2p的电子货币系统
-
采用数字签名解决安全性(SHA256)
-
解决p2p系统中存在的double-spend攻击问题
Basic Concepts
-
一种完全面向P2P的电子货币系统
-
采用数字签名解决安全性(SHA256)
-
解决同类系统中存在的double-spend攻击问题
Q1. 什么是电子货币?
-
现行在线金融交易体制是以可信的第三方机构(如银行)作为中间人进行各类交易
-
中间人的信用等级影响了交易的安全性
-
中间人为交易带来了额外的成本,导致小额交易成本过高
-
电子货币是完全不依赖第三方的货币持有形式,具有低成本和即时性的特征(举例?)
Q2. 为什么需要P2P(去中心化)?
-
电子货币的交易支持中心化和去中心化两种形式
-
当提供“不可逆服务”时,完全“不可逆”的在线支付是不存在的,这样就对商家带来风险(除非使用现金)
-
为了保证支付的“不可逆”性,交易中心必须付出一定成本(最终将转嫁到使用方),但技术上无法100%避免支付失败的可能(例如Paypal)
-
点对点交易能够实现完全的“不可逆”支付,而支持P2P的电子货币和现金的效果一致
Q3. 什么是double-spend?
- 借用CAP原则(Consistency, Availability, Partition tolerance)
- P2P电子货币系统在形式上是一个AP系统
- 节点A有{a}个币,在短时间内分别向节点B和C购买价值{a}的货物,这样A就有可能花{a}个币,买了价值2{a}的货物,即一钱二用(double-spend attack)
- 其实质是交易顺序的一致性共识问题
Q4. 如何解决double-spend?
-
Byzantine Generals Problem [1982]
Leslie Lamport (1941-), Turing Award 2013
Q4. 如何解决double-spend?
- 假设节点的总数为N,其中问题节点数量为F,则理论上可能满足一致性的条件是:
N ≥ 3F + 1
- 即当问题节点数少于总数三分之一时,全局一致性被证明是理论可解的(但怎么解?)
- Bitcoin不仅提出了具体解法,还结合了经济学理论cheating从而将系统的容错性提升至N ≥ 2F + 1(但尚不完美)
Blockchain就是构成Bitcoin电子货币体系的核心解法
Imperfect bitcoin
前置知识 1. Proof of Work (PoW) 工作量证明机制
- 为了解决“拒绝服务攻击”的问题,Cynthia Dwork and Moni Naor[1993]提出运用经济手段对访问者进行限制的思想
- 为了证明自己的真实性,使用者必须完成某个任务,从而获取token,完成该任务需要一定的经济投入(如CPU、内存和网络等)
- 与要求输入“验证码”的方法不同的是,PoW要求提供充分的计算能力证明,而非采用人工识别的方法
- Hal Finney[1999, 2005]提出了一种reusable PoW方法,使PoW可以被重复利用(Hashcash算法),从而解决了传统POW需要不断重复生成全新token(即重复铸“币”)的问题
前置知识2. Bitcoin状态转换系统
- 与rPoW的思路类似,Bitcoin采用了Hashcash算法解决交易合法性验证的问题,区别是后者建立在一个完全去中心化的交易跟踪协议之上
- bitcoin的当前“状态”是所有出现的,且没有被花费的币(技术上称为“未花费的交易输出,unspent transaction outputs 或UTXO”)的集合
- bitcoin系统的整体状态转换就是一个在每笔交易中验证输入UTXO,最终得出所有输出UTXO的过程
基于rPoW的Bitcoin状态转换系统实现 1
- bitcoin的实质是一个由数字签名所连成的“链”,每个交易的发起方payer都需要对前次交易的Hash和接收方payee的公钥“签名”,这样payee就能够验证该链的所属权是自己,则交易成功
- payee需要确保没有发生double-spend,一种方法是采用可信的第三方验证,这在前面已经讨论了优缺点。而对于P2P方法来说,如何证明当前交易是“最早发生的”,则成为关键
- 为了得到上述证明,bitcoin网络中的每笔交易都会被全网广播,payee需要得到网络中的大多数节点的保证,从而验证该交易是最早发生的(即合法而非double-spend的无效交易)
基于rPoW的Bitcoin状态转换系统实现 2
bitcoin网络中的每个节点需要不断地把在网络中接收到的交易打包成block,整个网络大约每10分钟生成一个block,包含时间戳、随机数和上一个block的hash,以及自上一block以来所有发生的交易列表,节点大致的打包算法如下:
1. 验证阶段:需要验证上一block的有效性、block中每笔交易时间戳的有效性以及rPoW证明的有效性
2. 状态转换阶段:以上一block的计算结果作为输入,对当前block的交易列表中的每笔交易依次进行状态转换计算,任何计算出错都退出程序,否则返回结果,并将其作为当前block的最终状态
基于rPoW的Bitcoin状态转换系统实现 3
bitcoin的rPoW证明机制:
- 对每个block进行SHA256处理,将得到的hash视为长度为256bits的数值,该数值必须小于不断动态调整的目标数值
- 因为SHA256是完全不可预测的伪随机函数,创建有效block的唯一方法就是简单地不断试错,不断地增加随机数的数值,查看新的hash数值是否小于目标数值。如果当前的目标数值是2^192,就意味着平均需要尝试2^64次才能生成有效的block
- 一般而言,网络每隔2016个block重新设定目标数值,保证平均每十分钟生成一个block
基于rPoW的Bitcoin状态转换系统实现 4
bitcoin的rPoW证明机制:
- 当节点获得rPoW证明,则将当前block广播,否则只会不停寻找rPoW,直到接收到别人广播的block
- 当接收到一个新block,节点会验证其中所有交易的有效性,选择是否接受
- 当接受新的block后,节点会把该block的hash作为下一个块的输入,从而形成链
基于rPoW的Bitcoin状态转换系统实现 5
bitcoin的激励机制:
- 当节点成功获得rPoW,则当前block会包含一笔付给生成节点的BTC交易(25BTC),同时还会收取一笔少量的交易费用
- 计算block获得奖励是bitcoin唯一的发行方式,即俗称“mining挖矿”。奖励额度每隔4年减半,2140年将降至0,共计发行2100万个
- 中本聪发起的创世block并没有币,但由于他作为第一任“矿工”,目前至少拥有100万个bitcoin,价值4亿美元
基于rPoW的Bitcoin状态转换系统实现 6
bitcoin的存储优化和简化确认机制:
- bitcoin目前所有的block占有字节数已经超过54GB(截止Jan 30th, 2016),每月增加约1GB
- 除了存储压力,block确认算法十分耗时。影响整个网络的可持续性
- 如果当前block中存储的bitcoin状态有效,那么它在过去block中的交易记录就可以被忽略,仅用hash值就可以用于正确性验证
- 采用Merkle Tree(Hash tree,被广泛应用于P2P系统)解决上述问题
基于rPoW的Bitcoin状态转换系统实现 7
bitcoin的存储优化和简化确认机制:
- Merkle tree把所有交易存储在叶节点中,并两两构成Hash tree
- Block header中只保存了Merkle tree根节点的Hash
- 要确认与自己相关的交易,只需要下载block header(约200bytes)以及相关Merkle tree分支即可用于正确性验证
基于rPoW的Bitcoin状态转换系统实现 8 结论
- bitcoin实现了完全匿名的、面向P2P的、基于Blockchain的电子货币系统
- bitcoin于2009年上线,至今运行将近7年,随着“矿工”涌入,已“挖出”超过1510万个BTC,这些bitcoin单价在$376(Jan 30th, 2016),总资产超过$57亿
- bitcoin的交易手续费为“自愿”设置,但由于block计算时,“矿工”会按照手续费的顺序从高到低把交易加入block,从而使得手续费越低,交易确认的速度就越慢。目前BTC平均手续费约为$10(原因附后)
结论(存在的问题)
- 随着bitcoin价格上涨,越来越多投机商加入,bitcoin的rPoW算法主要是要求高cpu时间,而专用矿机的飞速研制导致了算力的可集中性
- bitcoin的奖励机制的确保证了整个网络的算力,但矿工的逐利性导致大型矿池接连出现(矿池会向网络内广播一个最新的block hash,池内矿工会接着该block计算,这样每位矿工挖到矿的概率是均等的,从而具有更加稳定的收益),从而导致生成的合法block分支减少,交易生成缓慢,交易手续费增加
- 由于涉及大量矿工利益,bitcoin的技术改进工作目前几乎已经停滞不前(因为矿工拒绝使用升级的bitcoin软件,从而改善网络环境),核心开发者面临大量流失
结论(存在的问题)
- bitcoin的匿名性保护了相关用户,但也为金融犯罪活动提供了一定空间,各国政府已经加紧制定对电子货币的监管法律,例如中国政府针对bitcoin的反洗钱规定
- bitcoin已经出现了多家巨型矿池,其中前两名合计算力超过50%,创始人都是chinese
- bitcoin的自由发展属性,造成整个网络规模至今仍然有限,使得抵抗拒绝服务攻击的能力很弱
- 目前bitcoin网络中前十家左右矿池掌握了95%以上的算力,以及相应的社区投票权,实际上已经成为有钱人+投机客的游戏
结论(blockchain面临的机遇)
- bitcoin采用rPoW首次实现了完全面向P2P的电子货币,尽管存在很多现实问题,但在技术上无疑是一次巨大的进步,特别是向世界贡献了blockchain技术
- blockchain使得金融行业面临新一轮技术革新和创业潮,以智能合约为代表的新型应用将很快得到推出和普及,但这只是开始
- 在不受瞩目的非金融行业,blockchain目前也发展迅速,例如网络投票,进而推广到去中心化的自治组织应用等将可能改变未来的信息承载方式,形成真正的“万物互联与共生”,从而撼动自2008年以来“唯云计算至上”的行业神话(数十年内可能性不大,量子计算除外)
吹牛?现实?
Blockchain:
Challenges & Applications
工业化的挑战
- 什么是工业化?
- 理想国还是工业化?
- 如何驾驭技术、政治、经济、法律、道德、人性?
- bitcoin: 当代“共产主义”复辟
- 民主与低效
工业化的挑战:技术视角
- 承载全人类高频行为信息量的可行性
- 目前根本无法抵御洪水攻击
- 块生成速度越来越慢
- 块生成速度严重限制吞吐能力
工业化的挑战:解决途径
- 拥抱中心化,付出成本,但依然可以进行“不可逆交易”(即使实现交易中心化,想达到支付宝的规模都很难)
- 增加网络设计的健壮性,例如引入路由节点,变成混合型网络,避免广播带来的破坏性(Bitcoin其实本质类似混合型网络,后面分析)
- 持续改进共识机制
- 建立私有网络
切入点1:混合网络和分布式网络
切入点2:可实用的拜占庭容错机制(PBFT)
- Proof of Work已经掀开了冰山一角
- 共识机制成为研究热点:跨越多个高难度学科(Consensus Research)
- CaaS,Consensus as a Service:慢下来的GDP又能翻番了?
- PBFT的下一颗明珠:Proof of Stake/Delegated Proof of Stake
明珠 --> 权益证明(Proof of Stake)
- bitcoin的rPoW实质是让大家同时解一个Hash问题,算力高则胜率大,算力最高的链获胜(特有激励机制导致投机者倾向于研制矿机)
- PoS则是让大家同时给出一个一定数量货币的拥有证明,可证明货币数量最多的链获胜
- Peercoin(2012.8), 基于币龄的块选择机制
- Blackcoin, Nxt, 基于Stake+随机块选择
- Reddcoin, 基于货币运动速度快慢的块选择
- BitShare, 基于Stake+股东投票+101个董事会席位的块选择(Delegated PoS)
- 为真正的去中心化而努力奋斗!
切入点3:建立私有链
- 更加现实有效的选择,并且有望在当下立即商用
- 国家、巨头紧盯的目标
- 银行间清算/结算(R3已在顶级银行联盟间测试中)
- 股权结构的透明化(Nasdaq试点中)
- 产权证明(基于blockchain的产权公证创业已经遍地开花)
- 国家数字货币发行/交易(中国央行正在研究发行数字货币)
- 巨头们(顶级投行、商业银行、证券交易所、R3、IBM、思科、埃森哲、Intel、VMware等各行各业的龙头企业)已齐聚Linux基金会,希望能率先统一行业标准——Hyperledger
- 屌丝机会渺茫
Blockchain架构的应用方向
侧链side chain — 胸怀野心的玩具
- 采用Two way Peg双向楔入把父链上的BTC转移到侧链,从而实现全新的区块链,同时又具有自身定义的功能
- 转移到侧链上的BTC在父链被冻结,直到被侧链返还到最初的区块链中
- 侧链Side chain的实质是一个全新的链,只是利用Bitcoin网络提供证明,自身网络可实现超出Bitcoin范畴的功能(被认为可以和Ethereum实现等价的功能)
平民机会何在?
以太坊的理念
- 把bitcoin script变成图灵完备的语言
- 成为最大的开放式共识服务平台
- 同步构建形式化证明的精确系统(Yellow paper)
- “三备份”工程可行性证明
为什么需要图灵完备的语言?
- 中本聪为什么要创建bitcoin script?
- 为了在一个开放网络保证安全性,bitcoin script没有定义循环操作
- Ethereum Virtual Machine (EVM)
- 在EVM上同时设计了三种语言:
- Solidity,like Javascript
- Serpent, like python
- LLL, like Lisp
如何在EVM上支持图灵完备的语言?
- 关键在安全性
- 引入Gas——采用经济手段抵御攻击者
- Gas可以和以太币兑换
- 交易代码的每一步计算都需要消耗Gas,直到消耗完毕,由EVM控制
账户
-
账户类型
-
外部账户(由用户私钥控制)
-
内部合约账户(由合约代码控制)
-
-
账户的构成
-
随机数,用于确定每笔交易只能被处理一次的计数器
-
账户目前的以太币余额
-
账户的合约代码,如果有的话
-
账户的存储(默认为空)
-
共识机制
-
目前依然是PoW机制
-
已经在研发PoS,并且计划采用“硬分叉”方式切换至PoS
性能优化
-
由于合约语言和Gas的引入,导致区块确认效率低于Bitcoin
-
采用Patricia Trie对bitcoin的Merkle Tree进行优化,支持插入和删除操作
发行
- 每BTC合1337-2000以太币的价格发售,项目的众筹用户会享受较大的折扣,发售所得的BTC将完全用来支付开发者和研究者的工资和悬赏,以及投入密码学货币生态系统的项目
- 0.099x (x为发售总量)将被分配给BTC融资或其它的确定性融资成功之前参与开发的早期贡献者,另外一个0.099x将分配给长期研究项目
- 自上线时起每年都将有0.26x(x为发售总量)被矿工挖出
Ethereum到底能做些什么?
-
从图灵完备的角度,理论上任何应用都可以实现
-
与私有链不同的是,Ethereum是完全的开放式公有链,合约编写者可以发布任何应用到网络中,例如:
-
任何人可以自由发行货币(彩色币),并制定协作博弈规则以稳定汇价
-
域名注册系统
-
去中心化存储,与dropbox相反的是,通过制定某种合约,使用户把数据分散存储在其它节点,同时需要支付一定费用,并且按照合约赎回自身的数据
-
家庭储蓄帐户(比钱包复杂性高)
-
各类保险、金融衍生品
-
Ethereum到底能做些什么?
-
续
-
不需要高级进程间通信的松散云计算场景
-
点到点的无欺诈赌博
-
去中心化的网络bbs
-
提供网页服务
-
Bitcoin 1.0, 2.0, 3.0
Bitcoin & Virtual currencies
Smart Contract
What's next ?
Blockchain
By hanyi8000
Blockchain
- 2,751