org.bitcoinj.core.Block.getHashAsString()方法的使用及代码示例

x33g5p2x  于2022-01-17 转载在 其他  
字(13.8k)|赞(0)|评价(0)|浏览(148)

本文整理了Java中org.bitcoinj.core.Block.getHashAsString()方法的一些代码示例,展示了Block.getHashAsString()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Block.getHashAsString()方法的具体详情如下:
包路径:org.bitcoinj.core.Block
类名称:Block
方法名:getHashAsString

Block.getHashAsString介绍

[英]Returns the hash of the block (which for a valid, solved block should be below the target) in the form seen on the block explorer. If you call this on block 1 in the mainnet chain you will get "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048".
[中]以块资源管理器上显示的形式返回块的哈希值(对于有效的已求解块,该哈希值应低于目标值)。如果在主网链中的块1上调用此函数,则会得到“00000000 839A8E6886AB5951D76F411475428AFC90947EE320161BBF18EB6048”。

代码示例

代码示例来源:origin: HashEngineering/dashj

@Override
  public void onBlocksDownloaded(Peer peer, Block block, @Nullable FilteredBlock filteredBlock, int blocksLeft) {
    // Check if we already ran. This can happen if a block being received triggers download of more
    // blocks, or if we receive another block whilst the peer group is shutting down.
    if (latch.getCount() == 0) return;
    System.out.println(block.getHashAsString());
    latch.countDown();
  }
});

代码示例来源:origin: cash.bitcoinj/bitcoinj-core

/**
 * Returns a multi-line string containing a description of the contents of
 * the block. Use for debugging purposes only.
 */
@Override
public String toString() {
  StringBuilder s = new StringBuilder();
  s.append(" block: \n");
  s.append("   hash: ").append(getHashAsString()).append('\n');
  s.append("   version: ").append(version);
  String bips = Joiner.on(", ").skipNulls().join(isBIP34() ? "BIP34" : null, isBIP66() ? "BIP66" : null,
      isBIP65() ? "BIP65" : null);
  if (!bips.isEmpty())
    s.append(" (").append(bips).append(')');
  s.append('\n');
  s.append("   previous block: ").append(getPrevBlockHash()).append("\n");
  s.append("   merkle root: ").append(getMerkleRoot()).append("\n");
  s.append("   time: ").append(time).append(" (").append(Utils.dateTimeFormat(time * 1000)).append(")\n");
  s.append("   difficulty target (nBits): ").append(difficultyTarget).append("\n");
  s.append("   nonce: ").append(nonce).append("\n");
  if (transactions != null && transactions.size() > 0) {
    s.append("   with ").append(transactions.size()).append(" transaction(s):\n");
    for (Transaction tx : transactions) {
      s.append(tx);
    }
  }
  return s.toString();
}

代码示例来源:origin: greenaddress/GreenBits

@Override
public Block getGenesisBlock() {
  synchronized (RegTestParams.class) {
    if (genesis == null) {
      genesis = super.getGenesisBlock();
      genesis.setNonce(2);
      genesis.setDifficultyTarget(0x207fFFFFL);
      genesis.setTime(1296688602L);
      checkState(genesis.getHashAsString().toLowerCase().equals("0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"));
    }
    return genesis;
  }
}

代码示例来源:origin: fr.acinq/bitcoinj-core

@Override
public Block getGenesisBlock() {
  synchronized (RegTestParams.class) {
    if (genesis == null) {
      genesis = super.getGenesisBlock();
      genesis.setNonce(2);
      genesis.setDifficultyTarget(0x207fFFFFL);
      genesis.setTime(1296688602L);
      checkState(genesis.getHashAsString().toLowerCase().equals("0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"));
    }
    return genesis;
  }
}

代码示例来源:origin: cash.bitcoinj/bitcoinj-core

@Override
public Block getGenesisBlock() {
  synchronized (RegTestParams.class) {
    if (genesis == null) {
      genesis = super.getGenesisBlock();
      genesis.setNonce(2);
      genesis.setDifficultyTarget(0x207fFFFFL);
      genesis.setTime(1296688602L);
      checkState(genesis.getHashAsString().toLowerCase().equals("0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"));
    }
    return genesis;
  }
}

代码示例来源:origin: Multibit-Legacy/multibit-hd

private static void sanityCheck(File file, int expectedSize) throws IOException {
    CheckpointManager manager = new CheckpointManager(PARAMS, new FileInputStream(file));
    checkState(manager.numCheckpoints() == expectedSize);

    if (PARAMS.getId().equals(NetworkParameters.ID_MAINNET)) {
      StoredBlock test = manager.getCheckpointBefore(1390500000); // Thu Jan 23 19:00:00 CET 2014
      checkState(test.getHeight() == 280224);
      checkState(test.getHeader().getHashAsString()
          .equals("00000000000000000b5d59a15f831e1c45cb688a4db6b0a60054d49a9997fa34"));
    } else if (PARAMS.getId().equals(NetworkParameters.ID_TESTNET)) {
      StoredBlock test = manager.getCheckpointBefore(1390500000); // Thu Jan 23 19:00:00 CET 2014
      checkState(test.getHeight() == 167328);
      checkState(test.getHeader().getHashAsString()
          .equals("0000000000035ae7d5025c2538067fe7adb1cf5d5d9c31b024137d9090ed13a9"));
    }
  }
}

代码示例来源:origin: fr.acinq/bitcoinj-core

@Override
  public String toString() {
    return String.format(Locale.US, "Block %s at height %d: %s",
        getHeader().getHashAsString(), getHeight(), getHeader().toString());
  }
}

代码示例来源:origin: greenaddress/GreenBits

@Override
  public String toString() {
    return String.format(Locale.US, "Block %s at height %d: %s",
        getHeader().getHashAsString(), getHeight(), getHeader().toString());
  }
}

代码示例来源:origin: HashEngineering/dashj

@Override
  public String toString() {
    return String.format(Locale.US, "Block %s at height %d: %s",
        getHeader().getHashAsString(), getHeight(), getHeader().toString());
  }
}

代码示例来源:origin: cash.bitcoinj/bitcoinj-core

@Override
  public String toString() {
    return String.format(Locale.US, "Block %s at height %d: %s",
        getHeader().getHashAsString(), getHeight(), getHeader().toString());
  }
}

代码示例来源:origin: cash.bitcoinj/bitcoinj-core

/** Returns true if the hash of the block is OK (lower than difficulty target). */
protected boolean checkProofOfWork(boolean throwException) throws VerificationException {
  // This part is key - it is what proves the block was as difficult to make as it claims
  // to be. Note however that in the context of this function, the block can claim to be
  // as difficult as it wants to be .... if somebody was able to take control of our network
  // connection and fork us onto a different chain, they could send us valid blocks with
  // ridiculously easy difficulty and this function would accept them.
  //
  // To prevent this attack from being possible, elsewhere we check that the difficultyTarget
  // field is of the right value. This requires us to have the preceeding blocks.
  BigInteger target = getDifficultyTargetAsInteger();
  BigInteger h = getHash().toBigInteger();
  if (h.compareTo(target) > 0) {
    // Proof of work check failed!
    if (throwException)
      throw new VerificationException("Hash is higher than target: " + getHashAsString() + " vs "
          + target.toString(16));
    else
      return false;
  }
  return true;
}

代码示例来源:origin: greenaddress/GreenBits

/** Returns true if the hash of the block is OK (lower than difficulty target). */
protected boolean checkProofOfWork(boolean throwException) throws VerificationException {
  // This part is key - it is what proves the block was as difficult to make as it claims
  // to be. Note however that in the context of this function, the block can claim to be
  // as difficult as it wants to be .... if somebody was able to take control of our network
  // connection and fork us onto a different chain, they could send us valid blocks with
  // ridiculously easy difficulty and this function would accept them.
  //
  // To prevent this attack from being possible, elsewhere we check that the difficultyTarget
  // field is of the right value. This requires us to have the preceeding blocks.
  BigInteger target = getDifficultyTargetAsInteger();
  BigInteger h = getHash().toBigInteger();
  if (h.compareTo(target) > 0) {
    // Proof of work check failed!
    if (throwException)
      throw new VerificationException("Hash is higher than target: " + getHashAsString() + " vs "
          + target.toString(16));
    else
      return false;
  }
  return true;
}

代码示例来源:origin: fr.acinq/bitcoinj-core

/** Returns true if the hash of the block is OK (lower than difficulty target). */
protected boolean checkProofOfWork(boolean throwException) throws VerificationException {
  // This part is key - it is what proves the block was as difficult to make as it claims
  // to be. Note however that in the context of this function, the block can claim to be
  // as difficult as it wants to be .... if somebody was able to take control of our network
  // connection and fork us onto a different chain, they could send us valid blocks with
  // ridiculously easy difficulty and this function would accept them.
  //
  // To prevent this attack from being possible, elsewhere we check that the difficultyTarget
  // field is of the right value. This requires us to have the preceeding blocks.
  BigInteger target = getDifficultyTargetAsInteger();
  BigInteger h = getHash().toBigInteger();
  if (h.compareTo(target) > 0) {
    // Proof of work check failed!
    if (throwException)
      throw new VerificationException("Hash is higher than target: " + getHashAsString() + " vs "
          + target.toString(16));
    else
      return false;
  }
  return true;
}

代码示例来源:origin: HashEngineering/dashj

/** Returns true if the hash of the block is OK (lower than difficulty target). */
protected boolean checkProofOfWork(boolean throwException) throws VerificationException {
  // This part is key - it is what proves the block was as difficult to make as it claims
  // to be. Note however that in the context of this function, the block can claim to be
  // as difficult as it wants to be .... if somebody was able to take control of our network
  // connection and fork us onto a different chain, they could send us valid blocks with
  // ridiculously easy difficulty and this function would accept them.
  //
  // To prevent this attack from being possible, elsewhere we check that the difficultyTarget
  // field is of the right value. This requires us to have the preceeding blocks.
  BigInteger target = getDifficultyTargetAsInteger();
  BigInteger h = getHash().toBigInteger();
  if (h.compareTo(target) > 0) {
    // Proof of work check failed!
    if (throwException)
      throw new VerificationException("Hash is higher than target: " + getHashAsString() + " vs "
          + target.toString(16));
    else
      return false;
  }
  return true;
}

代码示例来源:origin: dogecoin/libdohj

/**
 * Extract from Litecoin source code, definition of regtest params.
 * https://github.com/litecoin-project/litecoin/blob/edc66b374ea68107c721062152dd95e6aa037d53/src/chainparams.cpp
 */
@Override
public Block getGenesisBlock() {
  synchronized (LitecoinRegTestParams.class) {
    if (genesis == null) {
      genesis = super.getGenesisBlock();
      genesis.setNonce(0);
      genesis.setDifficultyTarget(0x207fffffL);
      genesis.setTime(1296688602L);
      checkState(genesis.getVersion() == 1);
      checkState(genesis.getMerkleRoot().toString().equals("97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9"));
      checkState(genesis.getHashAsString().toLowerCase().equals("530827f38f93b43ed12af0b3ad25a288dc02ed74d6d7857862df51fc56c416f9"));
      genesis.verifyHeader();
    }
    return genesis;
  }
}

代码示例来源:origin: greenaddress/GreenBits

@Test
public void testCoinbaseHeightTestnet() throws Exception {
  // Testnet block 21066 (hash 0000000004053156021d8e42459d284220a7f6e087bf78f30179c3703ca4eefa)
  // contains a coinbase transaction whose height is two bytes, which is
  // shorter than we see in most other cases.
  Block block = TestNet3Params.get().getDefaultSerializer().makeBlock(
    ByteStreams.toByteArray(getClass().getResourceAsStream("block_testnet21066.dat")));
  // Check block.
  assertEquals("0000000004053156021d8e42459d284220a7f6e087bf78f30179c3703ca4eefa", block.getHashAsString());
  block.verify(21066, EnumSet.of(Block.VerifyFlag.HEIGHT_IN_COINBASE));
  // Testnet block 32768 (hash 000000007590ba495b58338a5806c2b6f10af921a70dbd814e0da3c6957c0c03)
  // contains a coinbase transaction whose height is three bytes, but could
  // fit in two bytes. This test primarily ensures script encoding checks
  // are applied correctly.
  block = TestNet3Params.get().getDefaultSerializer().makeBlock(
    ByteStreams.toByteArray(getClass().getResourceAsStream("block_testnet32768.dat")));
  // Check block.
  assertEquals("000000007590ba495b58338a5806c2b6f10af921a70dbd814e0da3c6957c0c03", block.getHashAsString());
  block.verify(32768, EnumSet.of(Block.VerifyFlag.HEIGHT_IN_COINBASE));
}

代码示例来源:origin: greenaddress/GreenBits

@Test
public void testBlockVerification() throws Exception {
  Block block = PARAMS.getDefaultSerializer().makeBlock(blockBytes);
  block.verify(Block.BLOCK_HEIGHT_GENESIS, EnumSet.noneOf(Block.VerifyFlag.class));
  assertEquals("00000000a6e5eb79dcec11897af55e90cd571a4335383a3ccfbc12ec81085935", block.getHashAsString());
}

代码示例来源:origin: greenaddress/GreenBits

/**
 * Get 1 header of the block number 1 (the first one is 0) in the chain
 */
@Test
public void testHeaders1() throws Exception {
  MessageSerializer serializer = MainNetParams.get().getDefaultSerializer();
  byte[] headersMessageBytes = HEX.decode("f9beb4d9686561" +
      "646572730000000000520000005d4fab8101010000006fe28c0ab6f1b372c1a6a246ae6" +
      "3f74f931e8365e15a089c68d6190000000000982051fd1e4ba744bbbe680e1fee14677b" +
      "a1a3c3540bf7b1cdb606e857233e0e61bc6649ffff001d01e3629900");
  HeadersMessage headersMessage = (HeadersMessage) serializer.deserialize(ByteBuffer.wrap(headersMessageBytes));
  // The first block after the genesis
  // http://blockexplorer.com/b/1
  Block block = headersMessage.getBlockHeaders().get(0);
  assertEquals("00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048", block.getHashAsString());
  assertNotNull(block.transactions);
  assertEquals("0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098", Utils.HEX.encode(block.getMerkleRoot().getBytes()));
  ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  serializer.serialize(headersMessage, byteArrayOutputStream);
  byte[] serializedBytes = byteArrayOutputStream.toByteArray();
  assertArrayEquals(headersMessageBytes, serializedBytes);
}

代码示例来源:origin: greenaddress/GreenBits

private static Block getBlock2() throws Exception {
  Block b2 = new Block(testNet, Block.BLOCK_VERSION_GENESIS);
  b2.setMerkleRoot(Sha256Hash.wrap("addc858a17e21e68350f968ccd384d6439b64aafa6c193c8b9dd66320470838b"));
  b2.setNonce(2642058077L);
  b2.setTime(1296734343L);
  b2.setPrevBlockHash(Sha256Hash.wrap("000000033cc282bc1fa9dcae7a533263fd7fe66490f550d80076433340831604"));
  assertEquals("000000037b21cac5d30fc6fda2581cf7b2612908aed2abbcc429c45b0557a15f", b2.getHashAsString());
  b2.verifyHeader();
  return b2;
}

代码示例来源:origin: greenaddress/GreenBits

private static Block getBlock1() throws Exception {
  Block b1 = new Block(testNet, Block.BLOCK_VERSION_GENESIS);
  b1.setMerkleRoot(Sha256Hash.wrap("0e8e58ecdacaa7b3c6304a35ae4ffff964816d2b80b62b58558866ce4e648c10"));
  b1.setNonce(236038445);
  b1.setTime(1296734340);
  b1.setPrevBlockHash(Sha256Hash.wrap("00000007199508e34a9ff81e6ec0c477a4cccff2a4767a8eee39c11db367b008"));
  assertEquals("000000033cc282bc1fa9dcae7a533263fd7fe66490f550d80076433340831604", b1.getHashAsString());
  b1.verifyHeader();
  return b1;
}

相关文章