.数据区块
#区块头:版本号、前一区块地址、时间戳、随机数、当前区块的目标hash值、merkle树根
另一说法:上一区块的hash值、时间戳、挖矿难度值、工作量证明随机数、merkle树根hash值
大小为80字节,可用于spv(简化支付验证)
#区块体:交易计数、交易详情
(merkle树会对每笔交易进行数字签名,保证真实和不重复)
#以太坊区块头:不同于比特币只包含一棵merkle,以太坊包含了三棵merkle(交易/收据(交易影响的数据条)/状态)
交易树:这笔交易被包含在区块中了吗
收据树:XX地址在过去XX时间中,发生了XX事件的数据
状态树:账户是否存在/当前余额多少/假装在这个合约中运行这笔数据,他的输出是什么
.挖矿与分叉
#工作量证明机制挖矿
#最长链解决分叉问题
.时间戳和不可篡改性
#时间维度使得数据易追溯
#数据在特定时间的存在,保证了不可篡改性
.分布式数据库
#单一节点数据被破坏不影响整体
.utxo交易模式
#未花费的交易输出,每笔交易都有若干输入(资金来源)+ 若干输出(资金去向)
#满足来源于utxo+数字签名的交易才是合法交易
#所以:判断交易的合法性不需要追溯整个交易历史
.哈希函数
#通过两次sha256哈希函数,生成长度为256的二进制数字进行识别和存储
#哈希的优点:
单向性:基本不会被发现原始值
耗费:处理数据耗费时间一致,且输出值定长
.merkle树
#可以是二叉树也可以是多叉树,比特币采用的是二叉树:
#实现:通过向上递归运算最终只剩树根存于区块头中
#优点:
运行效率:消息头只包含根的hash值,不必封装底层数据,将会高效运行在智能/物联网设备上
简化验证:不运行完整区块节点,也能对交易数据进行校验
.双重支付/双花支付
#时间戳+utxo(未花费的交易)+数字签名 保证不双重支付
.p2p网络
#对等网络
#每个节点都会承担网络路由、验证数据区块等功能
.加密算法
#1、sha256:上面介绍过的哈希,用于保证交易不可篡改
#2、非对称加密:用于交易不可伪造,使用的是椭圆曲线加密算法(ECC)
私钥加密(交易方用私钥签名),公钥解密(可通过交易方公钥进行验证)
公钥可以从私钥提取,反之不达
##私钥产生:
操作系统底层密码学安全的256随机数为私钥(总数为2256,难以破解)
通过sha256和base58转换为易书写和识别的50位长度私钥
##公钥产生:
私钥+secp256k1椭圆曲线算法生成65字节长度的随机数
##比特币钱包地址产生:
前缀+body+后缀,通过base58转换为易识别的地址
前缀:0x00(版本前缀)
body:公钥通过sha256+ripemd160双哈希,hash160生成20字节长度的摘要
后缀:对body进行两次sha256运算,取前四位
.数字签名
#签名:用hash算法处理信息得出hash值+私钥加密
#解密:用公钥对签名解密得出hash值,比对此hash值和自己另外通过hash算法得出的hash值
.比特币隐私模型
#传统隐私模型:
身份信息----交易----可信任的第三方----交易对手 | 公众
依靠第三方不暴露交易双方信息,使公众无从知晓
#比特币隐私模型:
身份信息 | 交易----公众
通过比特币地址和交易对手完成准匿名交易
准匿名:通过对交易地址和交易额等信息进行分析,可发现交易者的蛛丝马迹
【完】