比特币的挖矿原理,简单来说就是一个数据的记录过程。
我们都知道,比特币其实是区块链技术最知名的一个应用,而区块链的本质,又是一个人人都可以参与数据处理的数据库,比如数据更新、记录这些事。
那么每隔一段时间,就需要有人将之前没有经过到底确认的交易数据收集起来,进行处理。问题就来了,因为区块链是一个去中心化的体系,也意味着不存在一个所谓的公司或者团队来主动维护网络的运行。
区块链最初的创始人中本聪就设计了一个特殊的机制。到底都能参与进来做数据处理,谁处理的最快最好,谁就能获得数据的记账权,并获得相应的比特币奖励(这实际也是比特币的发行过程),所以挖矿机制的实质就是解决上面的两个问题。
但是里面这个“最快最好”是明确要经历一系列流程的。首先矿工们(处理数据的人)要收集还没有被记录的原始交易信息,检查一下这些信息是否有问题,并将其归集到一个数据块中。
而每隔一段时间(大约10分钟左右),就需要到底来进行数据处理,而且只有一个人可以记账成功。矿工们在打包好数据块之后,就需要通过解决一系列密码学难题,来争夺唯一记账的权力。
每一个比特币的节点都会收集所有尚未确认的交易,并将其归集到一个数据块中,这个数据块会和前面一个数据块集成在一起。矿工节点会附加一个随机调整数,并计算前一个数据块的SHA-256哈希运算值。挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。
当矿工找到了符合要求的哈希值之后,就可以向全网广播自己的处理结果。其他的矿工则接收并检验这个数据块是否符合规则。
如果大部分觉得没有什么问题,满足要求的话,那么这个矿工打包好的数据块就会连接到整个区块链上,被所有人接受,并获得相应的比特币奖励,这就是比特币挖矿的工作原理。
总的来说,挖矿是区块链生态中的重要环节,不仅解决了谁来处理数据的问题,更重要的是,它让越来越多的人参与进了区块链网络的建设,参与进来的人越多,整个区块链就越加的去中心化,参与数据确认的人也就越多,我们的信息数据也就越安全。
比特币矿工挖矿的本质是争夺比特币的记账权。
之前的文章里我们介绍过,比特币的本质是一本账单。每个人比特币账户的余额并非存在你的电脑或者网络中的某个账户里,而是从比特币区块链里存储的所有比特币交易账单里面一笔笔算出来的。这个账单(区块链)会存储在所有接入比特币网络的节点中。
因此比特币的每一笔交易都需要被记录,账单才不会错。矿工争夺的就是记录这些账单的权利。
账单是被记录在比特币的区块链上的,但是已存在的区块链(账单)是不可更改的,哪怕只是想加入一笔新的交易记录。所以,如果产生了新的比特币交易,那么就必须要有新的区块来记录这些账单。
矿工就是通过挖矿创造新的区块来延长区块链(账本)以便记录新产生的比特币交易。所以可以理解为挖矿其实在挖区块或创造区块来记录比特币交易的过程。
挖矿是有损耗的(需要算力庞大的计算机,消耗电力能源),那就需要通过一种激励方式奖励矿工,以维护比特币的区块链网络。
因此为了鼓励更多人挖矿,比特币系统设定了挖矿奖励:每挖出一个区块记账成功,就奖励矿工一定数量的比特币。同时,矿工也会收取自己需要记录的账单中比特币交易的手续费。
实际上对于任何一个去中心化的区块链应用,需要许多人加入并参与维护才能运转起来,讲解设置激励机制使用户愿意主动参与维护是核心难题。
挖矿其实是所有比特币矿工通过计算机运算一道足够复杂的数学题,先解出来的就是挖矿胜利者(挖出新区块并夺得记账权,获得比特币奖励和交易手续费)。
有些人忍不住就想问了,这是一道什么数学题?
具体的数学过程不算很复杂但真要讲明白肯定是一言难尽,波比哥尽量用简化的语言把这个数学题的逻辑给到底讲明白,方便到底理解比特币。
比特币挖矿就是基于哈希(HASH)算法进行的一系列哈希运算,得到匹配条件的新的区块哈希值的过程。
哈希运算逻辑很简单,就是根据已知参数利用哈希算法得出一个哈希值,如果哈希值满足条件则挖矿成功,不满足则继续改变参数进行运算并得到新的哈希值,直到满足条件为止。因为哈希算法中输入的参数与输出的哈希值没有任何逻辑关系,所以想要得到正确的结果只能不停的改变输入参数进行计算,不停地试错,直到找到正确的值。
哈希运算的固定参数包括:
版本号(固定):验证版本号确保了参与挖矿的比特币程序的版本是一致的。
前一个区块的哈希值(固定):这就限制了任何人都没法提前解题,必须等上一题解完拿到上一题的答案基础上做下一题。
交易Merkle根(固定):这个概念比较复杂,可以简单理解为区块内需要写入的所有比特币交易的哈希值运算结果。代表了矿工要记录的所有的比特币交易账单。
时间戳(变化):当前的时间。
难度(固定):这里的难度并非是真正的难度,而是一个哈希运算期望得出的正确运算结果的目标值。只有计算的哈希结果小于目标值时,挖矿才算成功。而这个目标值与挖矿的难度又成反比关系,即目标值越小,挖矿难度越大。所以也可以把这个目标值理解为难度。
随机数(变化):为了解出答案已经进行的哈希运算次数。每计算一次自动+1。
通过这6个参数不停的进行哈希运算然后与期望的结果匹配,直到找到正确的哈希值。
如果你想要转账比特币给别人,你需要在比特币交易平台、比特币钱包或者比特币客户端中,输入你的比特币地址、接收方地址、转账金额和手续费金额。
确定支付后交易信息会在比特币网络进行全网广播。矿工每隔10分钟会将比特币网络中未被记账的交易打包进一个区块,这就完成了一次确认,此时比特币已转到对方账户。
通常需要经过6次确认,确保交易记录不能被任何人窜改,转账才算真正完成。
在比特币的底层协议中,并没有规定这笔手续费具体的数额是多少,只是要求地址中总输入不小于总输出,即你钱包中比特币的总量必须大于你要转账的数额加上手续费数额。
比特币转账手续费是交易者付给矿工的一笔费用,用于激励矿工竞争记账,为比特币提供足够的算力,从而确保比特币网络的安全,有的地方也叫做矿工费。
通常,比特币交易按每1000字节默认收费0.0001BTC计算,普通的比特币转账费用大概在0.001-0.002个比特币之间;但是当单笔输入不足以支付输出时,就会出现上述的多个交易输入构成未花费输出的问题,此时其数据量就会变大。而未花费交易输出的构成越复杂,需要处理的字节就越多,手续费也就相应越高。
由于区块容纳交易记录的容量有限,矿工一般会优先打包手续费高的交易。当然,目前在使用比特币钱包进行转账时,大部分钱包可以根据网络数据,自动将手续费调整为最佳状态;但如果你的交易需要紧急确认,那么也可以选择自定义费用。
我们如果在银行间进行跨行转账,手续费约为5‰,异地转账的手续费为1‰-1%不等,而跨国转账除了支付上面这些手续费以外,还需支付50-200元每笔的电报费。
区块链资产之间的转账手续费与转账的金额大小无关,按字节收费。以比特币转账为例,一笔普通交易约占250字节,手续费约为0.001-0.0015个比特币(约20-30元)。如果你需要在一笔交易中同时转账给多个比特币地址,那么这笔交易所占字节数会更大,所以你需要多付一些手续费,才会有矿工及时打包你的交易。
即便如此,从转账成本来看,用区块链进行跨国转账还是有很大的优势。
免责声明: 文章源于会员发布,不作为任何投资建议
如有侵权请联系我们删除,本文链接:https://www.sws100.com/qukuai/110016.html