我正在写一个临时的小私人“区块链”,用于说明目的,用作教学工具。我已经解决了所有的核心功能,但我正在考虑区块链的一些更奇特的方面,并发现自己想知道Java中的多头。我在应用程序中内置的“矿工”方法使用 ++运算符递增一个 long 类型的随机数值,直到满足条件。我的问题是,如果我想避免(或至少大大延长)耗尽整数随机数空间(2147483647)的机会,如果我初始化起始随机数值,我将传递给Nonce = 0L的miner方法;我可以使用 ++运算符递增它并利用完整的长文本范围吗?我的理解是,比特币在交易中使用了特殊的输入值,并且/或者一些矿工会稍微改变“ExtraNonce”的时间戳,但由于这只是为了说明目的,我不想在应用程序中包含类似的东西。如果有人出于任何原因想看到它们,我可以提供代码片段,任何想法将不胜感激!代码如下:(请不要在我可疑的if/else控制逻辑上嘲笑我,这不是一个合法的生产应用程序,我仍然是java的新手)这是来自调用矿工方法的启动器类的代码: } else if (cliInput.contentEquals("mine")) { Scanner howMany = new Scanner(System.in); System.out.println("\n"); System.out.println("Enter number of blocks to mine: \n"); int howManyBlocks = howMany.nextInt(); int numBlocksMined = 0; while (howManyBlocks >= numBlocksMined) { MainChain mc = new MainChain(); long indexValue = (HashArray.hashArray.size() / 8); long timeStamp = mc.getUnixTimestamp(); String data = helpers.SHA256.generateHash(pubKey + addressKey); String previousHash = mc.getPreviousBlockHash(); ChainBuilder cb = new ChainBuilder(); cb.miner(indexValue, timeStamp, data, 0, previousHash, 5); numBlocksMined++; }以下是矿工方法的核心:public void miner(long index, long currentTimeMillis, String data, long Nonce, String previousBlockHash, int difficulty) throws InterruptedException { this.index = index; this.currentTimeMillis = currentTimeMillis; this.pszTimeStamp = pszTimeStamp; this.Nonce = Nonce; this.previousBlockHash = previousBlockHash; this.difficulty = difficulty; this.data = data; boolean iterator = true;我想知道的是,如果我将0L而不是0传递给矿工方法,我是否可以访问整个范围?
添加回答
举报
0/150
提交
取消