区块链技术与应用(1)

BTC-密码学原理

hash function

BTC中的hash function是SHA-256
cryptographic hash function 特性:

  • collision resistance
    并不是不允许发生碰撞,而是制造这样的碰撞的难度非常高,只能用暴力求解(brute-force)的方式。但是没有办法去证明一个函数是collision resistance的。
    用处:用来检测一个message的digest,没有办法篡改内容而不被检测出来
  • hiding
    x -> H(x),知道了hash值,但是没法反推出来x。并且输入空间要足够大并且输入比较均匀。如果输入空间没有足够大,那么就在输入之后拼接nonce。

前两个性质叠加在一起可以实现digital commitment,digital equipment o f sealed envelope,将预测结果取hash,hash值可以公开,因为无法得到输入x,之后还可以验证结果是否准确

  • puzzle friendly
    找nonce, nonce和block header的其他信息结合起来作为输入,使其小于target。
签名

去中心化的开账户:创建公钥私钥对,非对称的加密体系,加密用的是收方的公钥,解密用的是收方的私钥。
签名用的是自己的私钥,别人验证签名用的是公钥

BTC-数据结构

hash pointers

哈希指针和普通指针的区别:普通的指针存储的是一个结构体的位置,哈希指针不仅存储位置,还存储这个结构体的哈希值。这样做的好处:不仅可以找到位置,还可以检测该结构体有没有被篡改。
区块链:用哈希指针将结构体连接起来的链表。只要存储最后一个区块的哈希值,就可以检测整条链上的区块有没有被篡改
区块链中的箭头:代表的是该区块的哈希值依赖指针指向的区块

Merkle tree

区块链中的每个区块包含的交易组成了Merkle tree的形式
Merkle tree
Block header中存储的就是Merkle root hash,可以检测整棵树有没有地方被修改。block body中有交易的列表。
Merkle tree的用处是提供Merkle proof.

Merkle proof

比特币中的节点包括全节点和轻节点,全节点包括block header和block body,里面有交易的所有内容,轻节点里面只有block header。所以如果向轻节点证明一个交易上链了,就用Merkle proof。轻节点向全节点请求证明一个交易tx,那么全节点会发给轻节点红色的哈希值,轻节点再在本地计算绿色的哈希值,最后计算出来根哈希值和轻节点block header中的哈希值进行比较。

proof of membership

proof of non-membership

将叶节点取哈希值,然后排序,证明两个叶节点是相邻的,这样待证明的交易就不可能插入

BTC-协议

防范双花攻击

可以查看这篇博客双花攻击分析
BTC中主要解决的问题就是双花攻击
双花攻击要注意的问题是在该区块所在的分支上进行判断

这里的哈希指针有两种,一种是连接区块的指针,还有一种是指明币的来源
首先要说明每笔交易都有输入和输出,输入是付款方的签名和公钥&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值