区块链 主要信任机制 目前使用范围在交易方面,而且交易费几乎为0,交易过程中传输数据量小,因为收费网络传输是按照字节收费的
比特币:一种点对点电子现金系统
区块链概念(中国区块链应用技术发展白皮书进行定义):
狭义来讲,是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种 链式数据结构
分布式账本
广义来讲 基于信用的一般会采用区块链
分布式基础架构与计算范式
区块链是比特币的底层技术,比特币是第一个应用
p2p 去中心的 分布式的
区块链(重点在交易)系统的基础数据
一个时间段内的交易数据形成一个账单, 成为 区块
每个区块都包含前一个区块的hash值(账单编号),形成一个链式结构的账本 成为区块链
这个链式结构的账本存储在多个不同的比特币网络节点中 分布式基础架构与计算范式
区块链能够实现的原因,是有奖励 (又快又准确的人把记录的数据放在区块链上,这样才能得到记账权,这样才会有奖励)
区块链记账的准确保证:
每一个节点依据综合标准对每个交易进行独立验证,保证只有 有效的交易 才会在网络中传播 无效的交易将会在第一节点处被废弃
会进行一系列的验证(需要通过6次验证,10分钟一次 主要是考虑成本问题,打假不是真的电费付不起), 确保只有有效的区块会在网络中传播
保证交易不被篡改 --- 签名和验证
在数学和密码学中,有一个数字签名的概念
为了对数据进行签名,我们需要下面两样东西,要签名的数据(发送方)
私钥和公钥
私钥和公钥是成对出现
私钥是256个随机数 私钥根据算法得到公钥 公钥经hash生成 公钥哈希 公钥哈希经过可逆算法base58(去混淆)得到地址
私钥是取钱的凭证,和人没有关系(书介绍存私钥)
比特币的交易流程
交易产生 被签名加密 全网广播 全网点
区块链的分类
公有 联盟 私有
世界不可信 组织不可信 队友不可信
系统级开发 go c++
go语言性能相对较高
区块链实现的技术难点
区块链基础技术架构
激励层
共识层
网络层()
数据层(区块数据 链式结构 数字签名 哈希函数 merkle树 非堆成加密)
数据层
哈希算法: 不可逆
唯一
很小的不同计算得到的结果大不同
区块链使用的sha256 可以确保保密性
merkle树 快速检查是否在区块中包含某交易
区块链中的每个区块都包含了产生于改
比特币交易结构
比特币交易是可追溯的
篡改一个时其他节点的数据也需要修改,没有私钥就没办法进行下笔交易的篡改
未花费交易输出,王五的钱可能不再一个节点上 这样就需要遍历所有节点,才能查到王五的交易余额
UTXO集:
这个集合是未花费交易输出的总集合。
从所有区块链交易中构建(对区块进行迭代,但是只需做一次)而来的缓存,然后用它计算余额和验证新的交易
和区块链交易数据的同步
数据的存储:
使用KV型数据库(Level DB) 缺点空间浪费 映射好处在于快速查找
序列化和反序列化 结构体到字节数组(序列化),字节数组到结构体(反序列化)
网络层:
p2p网络环境中,彼此连接的多台
分布式
共识层:
1 工作量问题
拜占庭将军问题实质就是在分布式的网络中如何在有不明数量的作恶节点的情况下仍然达成共识
工作量证明机制:所有节点都平等的计算一个数学
2 去中心化的共识机制
工作量大的节点上
3 区块链的分叉
从理论上来说,两个区块的分叉是有可能的
交易的速度 和 区块链的分叉 进行平衡 目前10分钟是比较少分叉
比特币:一种点对点电子现金系统
区块链概念(中国区块链应用技术发展白皮书进行定义):
狭义来讲,是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种 链式数据结构
分布式账本
广义来讲 基于信用的一般会采用区块链
分布式基础架构与计算范式
区块链是比特币的底层技术,比特币是第一个应用
p2p 去中心的 分布式的
区块链(重点在交易)系统的基础数据
一个时间段内的交易数据形成一个账单, 成为 区块
每个区块都包含前一个区块的hash值(账单编号),形成一个链式结构的账本 成为区块链
这个链式结构的账本存储在多个不同的比特币网络节点中 分布式基础架构与计算范式
区块链能够实现的原因,是有奖励 (又快又准确的人把记录的数据放在区块链上,这样才能得到记账权,这样才会有奖励)
区块链记账的准确保证:
每一个节点依据综合标准对每个交易进行独立验证,保证只有 有效的交易 才会在网络中传播 无效的交易将会在第一节点处被废弃
会进行一系列的验证(需要通过6次验证,10分钟一次 主要是考虑成本问题,打假不是真的电费付不起), 确保只有有效的区块会在网络中传播
保证交易不被篡改 --- 签名和验证
在数学和密码学中,有一个数字签名的概念
为了对数据进行签名,我们需要下面两样东西,要签名的数据(发送方)
私钥和公钥
私钥和公钥是成对出现
私钥是256个随机数 私钥根据算法得到公钥 公钥经hash生成 公钥哈希 公钥哈希经过可逆算法base58(去混淆)得到地址
私钥是取钱的凭证,和人没有关系(书介绍存私钥)
比特币的交易流程
交易产生 被签名加密 全网广播 全网点
区块链的分类
公有 联盟 私有
世界不可信 组织不可信 队友不可信
系统级开发 go c++
go语言性能相对较高
区块链实现的技术难点
区块链基础技术架构
激励层
共识层
网络层()
数据层(区块数据 链式结构 数字签名 哈希函数 merkle树 非堆成加密)
数据层
哈希算法: 不可逆
唯一
很小的不同计算得到的结果大不同
区块链使用的sha256 可以确保保密性
merkle树 快速检查是否在区块中包含某交易
区块链中的每个区块都包含了产生于改
比特币交易结构
比特币交易是可追溯的
篡改一个时其他节点的数据也需要修改,没有私钥就没办法进行下笔交易的篡改
未花费交易输出,王五的钱可能不再一个节点上 这样就需要遍历所有节点,才能查到王五的交易余额
UTXO集:
这个集合是未花费交易输出的总集合。
从所有区块链交易中构建(对区块进行迭代,但是只需做一次)而来的缓存,然后用它计算余额和验证新的交易
和区块链交易数据的同步
数据的存储:
使用KV型数据库(Level DB) 缺点空间浪费 映射好处在于快速查找
序列化和反序列化 结构体到字节数组(序列化),字节数组到结构体(反序列化)
网络层:
p2p网络环境中,彼此连接的多台
分布式
共识层:
1 工作量问题
拜占庭将军问题实质就是在分布式的网络中如何在有不明数量的作恶节点的情况下仍然达成共识
工作量证明机制:所有节点都平等的计算一个数学
2 去中心化的共识机制
工作量大的节点上
3 区块链的分叉
从理论上来说,两个区块的分叉是有可能的
交易的速度 和 区块链的分叉 进行平衡 目前10分钟是比较少分叉