首页 > 编程知识 正文

矿机挖矿的原理,检测是否挖矿的原理

时间:2023-05-04 17:45:35 阅读:175098 作者:1138

因为我刚研究区块链的原理,所以今天用Python介绍矿工是怎么开采的。

首先,让我们科普一下为什么矿工需要去开采。 区块链使所有交易都可靠。 这意味着所有发票都存储在网络的所有节点上。 这样每个人都可以知道资金的流向,买卖变得更透明,不需要监管部门来记录所有交易信息。

但是,这个账单需要生成。 这意味着矿工需要开采。 首先用户拿着货币进行交易。 此时,订单已生成。 矿工需要生成合法的发票信息才能获得订单信息。 在生成成功之前,矿工会在每个节点共享交易发票,以完成交易。 每张发票的信息包括发票编号、事务处理时间、事务处理内容、上一张发票的哈希和数字。 其中,不能更改发票编号,即块链中的块编号、事务处理时间、事务处理内容和上一张发票生成的散列。 因此,矿工可以更改的是最后一个数字(这里的信息不完整,详情请咨询百度或谷歌)。

我忘了介绍,矿工怎么生成合法的账单? 合法的账单由基于每个账单上的信息产生的哈希串确定,但是确定哈希串的标准以矿工开采的时间为基础,并且不同的难度被设置为使得矿工不能很快开采。 作为一个示例,散列256所生成的十六进制数共有64位,因为已经设定了规则,使得矿工不能很快地计算散列值,所以矿工不断地变更数字,以囊括基于账单信息所生成的散列字符串

以下代码:

#Hash库import Hashlib as hs #时间库import datetime as date#块classblock(:#如何构建。 导入的数据包括索引、时间戳、数据、上一张发票的hash字符串和可更改的数字def _ iii。timestamp、data、preHash、 number ) : self.index=index self.timestamp=timestamp self.data=dataself.number=number self.pre hash=pre hash 256 )生成sha.update(str ) self.index (str ) self.timestamp (str ) ).encode(utf-8 ) ) 初始块def initBlock ) 3360RST=block(0, 创建date )0) return rst#创建区块链block chain=[ init block (] pre block=block chain (0) # 测试执行所需的时间starttime=date.datetime.now )生成10 )修正:数字,生成Hash字符串forjinrange(0, 100000000 ) : )我很懒,时间戳、数据都使用前一块的数据,实际上需要交易时的数据next block=block (pre block.index1pre block.dex1) 区块链ifnextblock.hash[:6]==' 000000 ' :块chain.append (next block )成功加入预块=nextblockbreakprint (nextblockbreakprint )测试运行所需的时间结束

从图中可以看出,只把前6位作为0生成10个哈希串需要833秒,平均一个需要83.3秒,加在上面所需的时间增加了好几倍。

所以采掘的伙伴最好用C/C写,设备和网络信息收集等必须领导别人才能采掘。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。