区块链基本概念1
Flag概念分类优势技术框架参考文献Flag
本来说每天都要学习,每两天出一篇博客……emmm, flag没立住,回家之后就看了一次书,今天把这一点点内容稍作整理放上来吧~
概念
区块链并不是一个新技术,而是一个新的技术组合。
其核心特征是Decentralized,最好翻译成分散式而不是去中心化,因为Decentralized只是表明不是单中心,且实践表明完全去中心化是不可行的(The DAO)。
区块链技术的核心就是通过Decentralized方法建立信任。
区块链本质上是一个对等网络 (peer-to-peer) 的分布式账本数据库。由一串链接的数据区块组成。
分类
公共链Public Blockchain (非许可链 Permissionless Blockchain)对外公开,无需注册/授权,直接访问,自由出入
真正意义上的完全去中心化区块链。
e.g. 比特币,以太坊联盟链Consortium Blockchain (许可链 Peimissioned Blockchain)
仅限联盟成员,共识过程由预先选好的节点控制。
(一般不采用挖矿机制而是用权益证明或共识算法)
e.g. R3联盟的Corda分布式账本私有链Private Blockchain
也是许可链。私有组织使用,自定义规则。
e.g. 币科学 (Coin Science) 推出的多链(Multichain) 平台;央行数字货币也可能是
(从链与链关系看,可分为主链&侧链)
侧链
以主链为基础,重构一条区块链,使用新的规则,能与主链交互并挂钩的区块链。
可拓展功能,提高效率
e.g. 基于比特币的各种代币系统
(链与链之间互通,还可以产生)
互联链Interchain
各自垂直领域的区块链可以通过某种互联协议连接起来形成互联链。
优势
简化流程,提升效率降低交易对手的信用风险减少结算或清算时间(区块链速度慢是一个误解,实际上现在银行清算的效率很低)增加资金流动性,提升资产利用效率提升透明度和监管效率技术
数据区块区块头 Header:版本号 Version,前一区块地址 Prev-block,时间戳 Timestamp,随机数 Nonce,当前区块目标哈希值 Bits,Merkle树根植 Merkle-root …
区块体 Body:交易计数,交易详情 (即记账本)Merkle树?挖矿
穷举随机数算法,将上个区块链的哈希值加上10min内所有交易单打包。(竞争-工作量证明机制)时间戳
区块头中加盖时间戳,形成时间递增的链条。分布式数据库
每个节点存放全部(或部分?Correct me if I’m wrong)数据,所有节点组成分布式数据库系统。
每个节点存放所有区块?Correct me if I’m wrong
(任何一个节点数据被破坏不会影响整个数据库,因其它健康节点中有全部数据)
今天除夕哦,先写到这里?UTXO交易模式
UTXO = Unspent Transaction Outputs,即未花费交易输出。
某笔交易的输入必须是另一笔交易未被室友的输出(用上笔交易的输出地址所对应的私钥进行签名)。哈希函数
单向性
处理时间 正比于 输入数据长度
最常用:双SHA256哈希函数Merkle树
区块链中采用Merkle二叉树(可以为多叉树),用于快速归纳和校验区块数据的完整性。
向上递归运算最终只剩一个Merkle根存在区块头中,从而可运行于轻设备中。双重支付
解决方法:分布式节点间的相互验证和共识机制。
避免方法:时间戳,UTXO和数字签名。(同一UTXO的交易-之转发先侦听的那个;多次确认后双花几率很低)P2P网络(对等网络)
P2P = peer-to-peer
应用层的组网或网络形式,所有节点具有同等地位,承担网络路由、验证数据区块等功能。
全节点:所有区块链数据
轻量级节点:存储部分数据信息(像临近节点请求)加密算法
非对称加密算法(椭圆曲线加密算法 CC)。区块链上的有效交易有一个用一个发起方私钥签名有效的数字签名,该交易的签名可以通过发起方公钥验证。公钥可以从私钥中计算得出,反之则不行。
比特币采用的加密方法如下:
首先使用从操作系统中取出256位随机数作为私钥。
公钥也为随机数
公钥哈希为摘要结果,作为比特币地址的主体(body)信息,构成地址校验码
地址校验码进行其它计算和连接,形成比特币字符地址数字签名
信息 →(哈希算法)→ 哈希值 →(私钥加密)→ 签名
将信息和签名一起发送,用发送者公钥对签名解密,验证哈希值与信息的哈希值是否一致。比特币的隐私模型
准匿名(pseudo-anonymous)交易机制:只提供比特币地址(采用与用户公钥挂钩的地址做用户标识,用户只需公开地址,无需公开身份,可不断变更地址),不需提供任何身份信息。(但对交易地址和交易额做关联分析后也可获得交易者信息)
框架
应用层可编程货币 + 可编程金融 + 可编程社会
(智能合约)数据层
公共总帐本 + 共识算法 + 密码学
只可追加,不可更改的分布式数据库系统。网络层
TCP/IP协议 + P2P对等网络协议
每个节点都参与消息的转发,均保存整个系统的状态信息。(轻量级节点只有部分?Correct me if I’m wrong)
参考文献
区块链技术指南 邹均等