区块链
概览
区块链是什么
区块链,就是一些列的区块,链接起来,就叫区块链
blockchain is a chain of blocks that contains information
区块链最早是为了防篡改:用于给数字文档加时间戳,这样就不可能对其进行回溯或篡改,就像 notary(公证人)一个样,直到后来 比特币出来了
比特币出来后,区块链是一个 distribute ledger (分布式账本),且同样会非常难于篡改
区块链如何工作
-
Block 的结构
-
Data(栗如 比特币的一条交易记录:From 张三,To 李四,金额:100w)
-
Hash:是一个全局唯一的指纹,
- 在 Block 被创建时初始化
- Block 中的任何修改都会导致 Hash 的改变
- 可用于检测 篡改
-
上一个 Block 节点的 Hash,用于组链,确保安全
- 首节点被称为 genesis block 他没有 prevBlock
- 修改任何一个节点都会导致整个 chain 断掉
- 但是可以通过重新计算其他节点的 hash 来篡改整个区块链
-
-
Proof-of-Work
-
让篡改变得很难,栗如,每个 Block 需要修改 10 分钟
-
工作量证明最常用的技术原理是
哈希函数。由于输入散列函数h()的任意值n,会对应到一个h(n)结果,而n只要变动一个比特,就会引起 雪崩效应,所以几乎无法从h(n)反推回n,因此借由指定查找h(n)的特征,让用户进行大量的穷举运算,就可以达成工作量证明。我们若指定h(n)的
16进制值的前四值,求n,这样统计上平均约要运行2 的16次h(n)散列运算,才会得到答案,但验算只要进行一次就可以了。如果想要增加难度,那就增加指定的位数即可。以SHA256函数举例,假设我们要处理数据Hello World,并找出h(n)前四值为0000的n,如果从Hello World0开始加上一个十进制数ASCII进行穷举猜测,到Hello World107105时才会得到匹配条件的h(n):0000BFE6AF4232F78B0C8EBA37A6BA6C17B9B8671473B0B82305880BE077EDD9
Hello World107105
-
-
使用 pear-to-pear 分布式来保证安全
- 每个节点都有整个 block-chain
- 如果有人新建了一个 block,这个 block 会发布到网络中的每一个节点
- 每个节点都会验证,这个节点是否被篡改
- 篡改会被网络中的其他节点否决,除非你篡改 50% 以上的节点
-
其算法还在不断进步,最近好像为了防止挖矿,hash 算法被淘汰了
-
基于 Smart contracts
Hash 函数
将哈希表中元素的关键键值映射为元素存储位置的函数
- hash 算法的目标:在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应
Hash 表
- 直接定址
- 数字分析取键
- 平方取中:取关键字平方后的中间几位为哈希地址
- 折叠法
- 取余法
- 随机数法
Hash 函数
- 均匀性
- 复杂度
冲突处理
- 链接法
- 开放定址法
区块链能干嘛
-
更多应用场景
- 医疗记录
- 电子公证 E-notary
- 税务记录