区块链目前对于国内来说企业比较少,也比较少人知道区块链这个面向对象群体。
区块链的节点数据统一:
对于我目前的区块链知识,总结了区块链就是把收集起来的数据,通过算法加密成hash数据打包成块存储在各个节点之间,每个节点写入的数据都会同步到种子节点 (初始化节点) ,由主节点广播到各个子节点。种子节点 (初始化节点) 跨掉之后,子节点会自动在自己的路由表里面寻找其他节点对比数据块的一致性。有点类似分布式系统存储,但是与传统的分布式系统存储不同,传统的分布式储存是由各个节点数据拼接在一起,如果节点挂掉,会有多个节点校验丢失的数据,并且进行恢复,有点类似磁盘raid5阵列卡,新增节点只会进行新数据存储。区块链的分布式存储是所有节点有存储了所有的由矿工打包好的数据。并且每个完整的,不会缺失,在新增节点时会自动同步种子节点 (初始化节点) 的所有块。
区块链的组成可以分为三部分组成:
1、合约(约束数据结构,数据加密算法)
2、矿工(通过合约算法加密后的数据进行打包,以块的高度累加)
3、交易(记录所有的交易记录)
我对于区块链这个认识比较浅,先把区块链架起来作为入门吧。我的部署根据星云链的官网文档进行部署:
环境:
1、系统:ubuntu18.04
2、环境:go、ntp、rocksdb、Chrome的V8引擎
3、节点数量:1台种子节点(初始化节点),6台子节点。(配置要求: 4C(inter-x2680-e5) 16G(1600hz),SSD100G)
以下操作在7台节点执行 我这里使用ansible进行所有节点安装
ansible的hosts文件我自定义了一个配置hosts,内容如下:
$ cat hosts/hosts.chainnet
[chainnet-private]
node1
node2
node3
node4
node5
node6
node7
[chainnet:children]
chainnet-private
安装ntp时间同步服务器
$ ansible-playbook -i hosts/hosts.chainnet -v install/install-ntp.yml
ntp安装yml如下:
$ cat install/install-ntp.yml
- hosts: chainnet
remote_user: ubuntu
sudo: yes
tasks:
- name: install ntp.
apt:
name: ntp
- name: update config
script: ntp-time-channel.sh
- name: reload ntp.
shell: "/etc/init.d/ntp restart"
更改ntp时间同步服务配置脚本
$ cat install/ntp-time-channel.sh
time=`date +%Y%m%d%H`
sed -i.$time.bak '/pool ntp.ubuntu.com/a\server cn.pool.ntp.org' /etc/ntp.conf
安装go语言环境
$ ansible-playbook -i hosts/hosts.chainnet -v install/install-go.yml
安装go语言yml文件如下
$ cat install/install-go.yml
- hosts: chainnet
remote_user: ubuntu
sudo: yes
tasks:
- name: install go.
script: install-go.sh
- name: deploy go PATH.
copy:
src: go.sh
dest: /etc/profile.d/go.sh
owner: root
group: root
mode: 04
安装go语言环境脚本
$ cat install-go.sh
cd ~ && wget http