本文已参与「新人创作礼」活动,一起开启掘金创作之路。
概念
区块链是一个去中心化、分布式的数据库系统。本质可以理解为一个数据库系统。
结构
区块链逻辑上上看是,是一个个叫做区块的数据结构,按照先后顺序,每个区块指向前一个区块,依次链接起来成为链式的数据结构。 从物理上看,底层仍然是文件,存储在硬盘上。
数据库的分布
在电脑或服务器上安装了去区块链软件即可以称之为一个节点,每个节点都有区块链的完整数据存储称之为账本,节点接入网络,所有的节点账本才真正构成了区块链数据库系统。
写入权限
- 任何人都可以有申请写入区块链的权限,申请写入区块链的步骤称之为-交易,交易并未实际写入区块链。交易是经过密码学算法签名,不可篡改,并且可以验证的。
- 一部分人(矿工),经过一系列竞争或者机制(共识机制),才拥有将交易写入整个区块链系统权限,写入整个区块链系统是指,所有节点都认可(验证确认)这个区块,并写入自己本地账本
写入操作,交易和写入账本,会产生交易数据和区块数据,固定的数据结构,发送到其它节点(广播),让其它节点也可组装、写入账本数据,同步账本数据。
读取权限
任何人都可以读取区块链账本数据
区块的结构、以及如何构成的链
以比特币数据结构为例,其它区块链系统类似
大小 | 字段名 | 说明 |
---|---|---|
4 bytes | MgicNumber | 神奇数,固定值0xD9B4BEF9,作用是作为区块链间的分割符 |
4 bytes | Block Size | 区块大小,当前区块的大小 |
80 bytes | Block Heade | 区块头 |
可变大小 | Block Body | 区块体,存放交易信息(多个) |
区块头说明
大小 | 字段名 | 说明 |
---|---|---|
4 bytes | Vesrsion | 版本号 |
32 bytes | Previous Block Hash | 前一区块hash |
32 bytes | Merkle Root | 区块交易默克尔根hash |
4 bytes | Timestamp | 时间戳,产生区块时间 |
4 bytes | Difficult Target | 当前区块,工作量证明目标难度值 |
4 bytes | Nonce | 随机数,用作工作量证明计算 |
可扩展自定义逻辑
通过智能合约实现逻辑并写入数据到区块链,智能合约可以理解为 区块链数据库系统的 复杂sql语句,发送交易申请执行智能合约,写入数据到区块链数据库系统。