1、 最基本的区块链是什么?其实就是链表,linkedlist.
2、 数据存储的两个方式:GFS,P2P。
3、 分布式数据库,持续的递增。
4、 一个区块中有block的索引,block的时间戳,block的具体的data,自己的hash(用的是sha256算法)用这个算法对区块进行签名,前一个区块的hash值,从而将区块串联了起来
5、 区块链的核心代码
Class Block{
Public index: number;
Public hash: string;
Public previoushash:string;
Public timestamp:number;
Public data:string;
}
6、 怎么保证数据不被篡改:这个时候我们用sha256算法。SHA256(index+previousHash+timestamp+data).toString();
7、 做区块的时候需要检查数据的有效性比如:区块之间的索引是+1的,当前区块的preioushash是否和前一个区块的hash是否相同。还有一个细节,检查区块内的数据结构是否正确js特有的。
8、 区块链分叉了怎么办?选择更长的链。听大多数人的。这个也需要代码来体现。
9、 节点之间如何通信:网络中有很多的节点 ,大家都有可能去创建区块,这需要大家通过协商通讯的方式达成共识这需要以下三个基本功能:1.当一个节点创建了一个区块,需要通知整个网络。2.当一个节点连接上了一个新的节点,需要主动询问对方最新的区块。3.当一个节点遇到一个新块的时候,它会根据判断的结果向网络请求更多的区块。
10、当你的节点和其他节点全部去操作的时候,就会碰到一个互相连接的情况这个往往通过webSocket协议来做的
11、得到区块链后有两个接口一个是http接口对它进行控制,另外一个是socket接口就是一个节点和很多节点连到一块去互相通讯的。
12、如何应对攻击:每个人都能加区块,这样会造成混乱,拼命加块也会造成网络堵塞。如何应对呢?我们限制每个人添加区块的能力。每次添加都需要做一道“难题”就行。这就是PoW的基本原理,这个解题过程也就被称之为挖矿。因此难题的设置会影响节点添加区块的难度。越难的题会让我们越难添加区块。
网友评论