全节点
节点一直在线,并监听交易信息验证合法性 、验证区块(有无篡改、区块难度是否符合要求,难度目标阈值设置是否正确)
需要维护完整的区块链信息(包括所有UTXO集合)
挖矿:一般是验证最长的链挖下去(比特币只有最长的链被视为主链有效)
当等长的分叉链出现的时候,该节点会把第一个接收到新区块的链视为最长链
轻节点
不是一直在线 只需要检验自己相关交易的合法性
不需要维护完整区块链信息,只需要保存区块头
无法验证区块,但是可以验证挖矿难度,只能检测哪个是最长链 而不知道哪个是最长合法链
挖矿-pow工作量证明
工作量证明(挖矿):
找到一个 nonce 串(随机串)放到区块里,使得区块结构的哈希结果满足一定条件(比如小于某个值)
这个计算 nonce 串的过程,即俗称的“挖矿”,nonce 串的查找需要花费一定的计算力。一旦节点找到了满足条件的 nonce 串,这个区块在格式上就“合法”了,成为候选区块,节点将其在网络中广播出去。
其它节点收到候选区块后进行验证,发现确实合法,就承认这个区块是一个新的合法区块,并添加到自己维护的本地区块链结构上
当大部分节点都接受了该区块后,意味着区块被网络接受,区块中所包括的交易 也就得到确认
同时节点在挖矿的时候需要承担检验交易合法性、验证区块等的任务
挖矿趋势(通用=>专用):
CPU => GPU => 定制ASIC芯片(专为挖矿设计的芯片,一般来说 一个芯片只能挖一种币)
矿池:
把矿工组织起来作为一个整体,
架构:一个全节点驱动很多矿机,也就是一个矿主管理员pool manager连接管理着很多只需要计算哈希值的矿工,其他操作由矿主完成
利益由矿工贡献大小分配 (工作量 矿主计算各个矿工给矿主提交了多少个接近快符合但是没有符合nonce难度的区块)一般来说矿主要收取一定比例的利益当作管理费
大型矿池的缺点:51%的攻击更加容易了
如果有矿池掌握大于50%算力可能会出现:分叉攻击、boycott(封锁账户,所有和这个账户有关的交易不纳入区块,如果纳入区块中就会进行分叉攻击,从而保证区块中没有这个账户的交易)