zoukankan      html  css  js  c++  java
  • 比特币矿池

     全节点:一直在线

        在本地硬盘上维护完整的区块链信息

        在内存里维护UTXO集合,以便快速检验交易的正确性

        监听比特币网络上的交易信息,验证每个交易的合法性

        决定哪些交易会被打包到区块里

        监听别的矿工挖出来的区块,验证其合法性

        挖矿:决定沿着哪条链挖下去,当出现等长的分叉的时候选择哪一个分叉

    轻节点:不是一直在线

        不用保存整个区块链,只要保存每个区块的块头

        不用保存全部交易,只保存于自己相关的交易

        无法检验大多数交易的合法性,只能检验与自己相关的交易的非法性

        无法检验网上发布的区块的正确性(不保存交易)

        可以检验挖矿的难度(保存块头)

        只能检测哪个是最长链,不知道哪个是最长合法链

    挖矿的安全基础:一是密码学基础,二是共识机制。前者是建立再后者的基础之上。倘若矿工不遵守公识,对非法交易等视而不见,再多加密算法也无用。

    挖矿设备:CPU-->GPU-->ASIC(专用集成电路  Application Specific Integrated Circuit)

    由通用趋于专用化,最初的普通计算机设备,到专于计算功能的设备,再到仅用来挖矿的设备

    专用于挖矿的芯片迭代速度较快,往往当出现计算机突然上涨的情况,可能是新型芯片投入使用。因此可能芯片厂商完成芯片后,先自己挖矿,由于计算力优势,赚取一波红利后再出售给矿工。

    矿池:pool

    挖矿本身具有memoryless的特点,当新的区块被挖出来后,其他正在计算的矿机相应的计算结果就会作废,因此一个矿机可能一两年才能挖出一个区块来,导致矿工的收入极不稳定。因此,演化出矿池的概念。矿池由矿主(pool manager)来管理,矿主给手下的矿工分布任务,出块后给矿工分红,自己收取管理费用。矿工的任务是计算哈希值,矿主进行发布区块,验证管理等一系列顶层操作。

    为了解决吃大锅饭现象的矿工不作为现象,矿主需要矿工提供工作量证明。矿工在给定的nonce范围内计算哈希值,当计算出与目标target相似的目标值时,将其提供给矿主作为proof of work,矿主收到提交值后,仅能将其作为工作量证明,别无他用,最后出块时,根据手下矿工提交的近似值按比例分配奖励。矿池的出现使得原本的个人矿工很难获得一大笔奖励,变成定期获得一小笔奖励。

    对于矿工可能的安全因素,因为要计算的区块包含收款方即为矿池,因此矿工不可能私自盗窃区块或者提交不符的近似值。由于miner被分配到各自的nonce尝试范围,因此若有恶意miner计算出目标值后,故意不提交给矿池,尽管他自己也无法获得该出块奖励,但是这可能是来自矿池间的恶意竞争。

    矿池的出现更容易造成恶意的集群的攻击。由于矿工只负责底层的计算工作,因此矿池顶部对区块进行的一系列操作对miner是不可见的,矿主可能让一群不明真相的矿工来完成自己的攻击,例如51%攻击。值得注意的是,51%并非实际发动攻击的必要因素。本身出块等等操作都是概率问题,51%只是必然攻击成功的数字。本身矿池的计算力比例就在不断地浮动中。

    中国矿池占总矿池的绝大比例

     

  • 相关阅读:
    监控服务器的各种方法
    测试用例之翻页功能
    Python:基础知识
    一篇看懂Docker
    Web测试和app测试区别?
    用经济学的思维来看待安全测试的学习
    Moco测试知多少?
    「网易官方」极客战记(codecombat)攻略-沙漠-先有付出 才有回报-no-pain-no-gain
    「网易官方」极客战记(codecombat)攻略-沙漠-山谷的风与牛-canyon-of-storms
    「网易官方」极客战记(codecombat)攻略-沙漠-复查-double-cheek
  • 原文地址:https://www.cnblogs.com/faded828x/p/13056681.html
Copyright © 2011-2022 走看看