区块链技术基础

价值互联网概论区块链,缘起比特币,从本质上来说,它是一个( 去中心化的 )分布式账本( 数据库 )

基于 Golang,从 0 到 1 实现区块链模型

  • 其数据结构,就是按时间顺序,将数据区块( block )进行连接的一条链表( chain )
    • 区块,一般是通过 Merkle Tree 将多笔交易数据打包,形成一个汇总哈希值,加上时间戳,形成区块的唯一索引
  • 其技术特点包括:去中心化、透明性、开放性、自治性、信息不可篡改、匿名性

从某种意义上来说,区块链,是一种促进人类大规模协作的技术手段,解决了多点之间相互信任和利益分配的问题


「 开发工具 」由于一些原因,创建和维护一个区块链系统( 尤其是公有链 ),并不容易

  • 安全:数据,即资产  &  代码开源,若区块链系统中存在 Bug,其代价是巨大的,So,区块链应该是堡垒
  • 资源管理( 通信 ):应对远程访问和本地查询,不能滞后 / 跟不上其他的网络请求,So,网络通信的节奏很重要
  • 隔离  &  性能:区块链中的一些操作,必须是确定性的,如交易、智能合约,唯一的解决方案是隔离,一些编程语言可以满足部分需求;同时,区块链必须始终以尽可能高的能力执行( even,并行执行 )

So,进行区块链编码,所选择的开发工具( 编程语言 & 框架、IDE、API、SDK、测试环境 ... ),必须是非常通用的

// 从某种角度来说,通用,意味着安全  — 「 密码学基础 」你会选择通用的加密算法,还是一些偏门,甚至自己做的呢 ?


  • 密码
    • 对称加密                                                消息认证码
    •                                                                  ↓                                          证书( X.509 )
    • 非对称加密                                               数字签名
  • 哈希( 散列值 )函数

「 技术原理 」从技术角度来说,我们可以将区块链看作是:一种 “ 网络底层协议 ”,或者说是:

一种整合了分布式数据存储、点对点传输、共识机制、加密算法等多种技术的分布式基础架构模型

  • 数据层、网络层和共识层,是构建区块链技术的必要元素,缺少任何一层,都不能称之为真正意义上的区块链技术
  • 激励层、合约层和应用层,则不是必须的,一些区块链应用( 平台 )并不完全包含这三层结构