1.为什么要调整挖矿难度
挖矿的本质是不断调整block header中的nonce值,使得整个block header的哈希值小于等于给定的目标阈值。H(block header)<=target. 1)出块时间越来越短是好事吗? ???????出块时间缩短,那么交易可以很快被写入区块链,并且提高了系统响应时间,增加了区块链系统效率。但是,出块时间并不是越短越好。首先,区块在网络上传播具有时延,假如出块时间为一秒,但网络传播需要十秒,则会使系统中节点经常性处于不一致的状态,增加了系统的不稳定性,且系统经常性位于分叉状态。分叉如果太多,则不利于系统达成共识,造成算力分散,使得黑客攻击成本大大降低。 2)10min的出块间隔是最优吗? ???????并不是,但是系统出块时间需要维持在一个定值附近。 以太坊中平均出块时间仅为15秒左右,但同样在以太坊中也有相应调整算法维持其平均出块时间,以太坊设置了共识协议Ghost。
2.BTC系统如何调整挖矿难度
每隔2016个区块需要调整一次难度,根据10min产生一个新区块可以得到,大概需要14天的时间。如果实际比较大,target会比较大,相应的挖矿难度会降低;如果实际比较短,target会比较小,相应的挖矿难度会增大。 ??上调和下调都有四倍的限制。 ????如果有恶意节点故意不调,其所产生的区块不会被大多数诚实的节点承认。在block header中有一个nbits的域,它是对target的编码存储,其他节点在合法性验证时候会yanznbits域是否合法,不合法则对该区块不予以承认。
3.全节点和轻节点
全节点 | 轻节点 |
---|
一直在线 | 不是一直在线 | 在本地硬盘上维护完整区块链信息 | 不保存整个区块链,只需要保存每个区块块头 | 在内存中维护UTXO集合,以便于快速检验交易合法性 | 不保存全部交易,只保存和自己有关的交易 | 监听比特币网络中交易内容,验证每个交易合法性 | 无法验证大多数交易合法性,只能检验和自己相关的交易合法性 | 决定哪些交易会打包到区块中 | 无法检测网上发布的区块正确性 | 监听其他矿工挖出的区块,验证其合法性 | 可以验证挖矿难度 | 挖矿:1.决定沿着哪条链挖下去 2.当出现等长分叉,选择哪一个分叉 | 只能检测哪个是最长链,不知道哪个是最长合法链 |
在比特币网络中,大多数节点都是轻节点。如果只是想进行转账操作,不需要挖矿,就无需运行一个全节点。在挖矿过程中,如果监听到别人已经挖出区块延申了最长合法链,此时应该立刻放弃当前区块,在本地重新组装一个指向最后这个新合法区块的候选区块,重新开始挖矿。
4.比特币系统的安全性
- 一是密码学的保证:别人没有自己的私钥,就无法伪造其合法签名,从而无法将账户上的BTC转走
- 二是共识机制:保证了恶意交易不被系统承认。
5.大矿池
????目前,挖矿设备逐渐趋于专业化,其经历了三个过程,总体趋势从通用到越来越专用。 ????普通CPU -> GPU ->ASIC芯片(挖矿专用矿机) ????对于单个矿工来说,即使使用了ASIC矿机,其算力在整个系统中仍然只占据很少一部分,即使从平均收益看有利可图,但收入很不稳定。 此外,单个矿工除挖矿还要承担全节点其他责任,造成了算力的消耗。 ????矿池的概念:一个全节点驱动多台矿机。矿工只需要不停计算哈希值,而全节点其他职责由矿主来承担。ASIC芯片只能计算哈希值,不能实现全节点其他功能。
6.矿池利益分配方法
- 思路一:平均分配,所有人平分出块奖励
- 思路二:降低挖矿难度
假设原本挖矿难度要求,计算所得126位的哈希值前70位都必须为0,现在降低要求,只需要前60位为0,这样挖矿会更容易挖到。当然,这个哈希是不会被区块链所承认的,我们将其称为一个share,或almost valid share。矿工每挖到一个share,将其提交给矿主,矿主对其进行记录,作为矿工工作量的证明。等到某个矿工真正挖到符合要求的的区块后,根据所有矿工提交的share数量进行分配。 因为每个矿工尝试的nonce越多,挖到矿的可能性越大,所能得到的share也会越多,所以这种方案作为工作量证明方案是可行的。
7. 51%算力矿池可以发动哪些攻击
1)分叉攻击 对已经经过6次确认的交易分叉,利用51%算力将交易记录回滚 2)封锁交易 假如攻击者不喜欢某个账户A,不想让A的交易上区块链,在监听到有其他人将A的交易发布到区块链上时,立刻发动分叉攻击,使A所在链无法成为”最长合法链“。这样,便实现了对A账户的封锁。 3)盗币(将他人账户BTC转走) 这个是不可能的,因为其并没有他人账户私钥。如果依仗算力强,强行将没有签名的转账发布到区块链,正常节点不会认为其合法,这样,即使这条链再长,其他人也不会认为其是最长合法链。
8. 矿池出现的优劣
- 优点:解决了矿工收入不稳定的问题,减轻了矿工的负担
- 威胁到了区块链系统的安全,使得51%攻击变得容易起来。
|