区块链技术基础
「 价值互联网概论 」区块链,缘起比特币,从本质上来说,它是一个( 去中心化的 )分布式账本( 数据库 )
基于 Golang,从 0 到 1 实现区块链模型
- 其数据结构,就是按时间顺序,将数据区块( block )进行连接的一条链表( chain )
- 区块,一般是通过 Merkle Tree 将多笔交易数据打包,形成一个汇总哈希值,加上时间戳,形成区块的唯一索引
- 其技术特点包括:去中心化、透明性、开放性、自治性、信息不可篡改、匿名性
从某种意义上来说,区块链,是一种促进人类大规模协作的技术手段,解决了多点之间相互信任和利益分配的问题
「 开发工具 」由于一些原因,创建和维护一个区块链系统( 尤其是公有链 ),并不容易
- 安全:数据,即资产 & 代码开源,若区块链系统中存在 Bug,其代价是巨大的,So,区块链应该是堡垒
- 资源管理( 通信 ):应对远程访问和本地查询,不能滞后 / 跟不上其他的网络请求,So,网络通信的节奏很重要
- 隔离 & 性能:区块链中的一些操作,必须是确定性的,如交易、智能合约,唯一的解决方案是隔离,一些编程语言可以满足部分需求;同时,区块链必须始终以尽可能高的能力执行( even,并行执行 )
So,进行区块链编码,所选择的开发工具( 编程语言 & 框架、IDE、API、SDK、测试环境 ... ),必须是非常通用的
// 从某种角度来说,通用,意味着安全 — 「 密码学基础 」你会选择通用的加密算法,还是一些偏门,甚至自己做的呢 ?
- 密码
- 对称加密 消息认证码
- ↓ 证书( X.509 )
- 非对称加密 数字签名
- 哈希( 散列值 )函数
「 技术原理 」从技术角度来说,我们可以将区块链看作是:一种 “ 网络底层协议 ”,或者说是:
一种整合了分布式数据存储、点对点传输、共识机制、加密算法等多种技术的分布式基础架构模型
- 数据层、网络层和共识层,是构建区块链技术的必要元素,缺少任何一层,都不能称之为真正意义上的区块链技术
- 激励层、合约层和应用层,则不是必须的,一些区块链应用( 平台 )并不完全包含这三层结构
- 通用的区块链架构模型:以太坊( 世界上第一个可编程的区块链 )、HyperLedger Fabric ...
