区块链·01概念

.数据区块

#区块头:版本号、前一区块地址、时间戳、随机数、当前区块的目标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值

.比特币隐私模型

#传统隐私模型:

        身份信息----交易----可信任的第三方----交易对手  |  公众

        依靠第三方不暴露交易双方信息,使公众无从知晓

#比特币隐私模型:

        身份信息  |  交易----公众

        通过比特币地址和交易对手完成准匿名交易

        准匿名:通过对交易地址和交易额等信息进行分析,可发现交易者的蛛丝马迹

 

【完】

posted @ 2018-05-17 10:23  小嘟嘟虫  阅读(214)  评论(0编辑  收藏  举报