예제 #1
0
파일: Block.java 프로젝트: Qw0kka/creditsj
  /** Returns the merkle root in big endian form, calculating it from transactions if necessary. */
  public Sha256Hash getMerkleRoot() {
    maybeParseHeader();
    if (merkleRoot == null) {

      // TODO check if this is really necessary.
      unCacheHeader();

      merkleRoot = calculateMerkleRoot();
    }
    return merkleRoot;
  }
예제 #2
0
파일: Block.java 프로젝트: Qw0kka/creditsj
 private void unCacheTransactions() {
   maybeParseTransactions();
   transactionBytesValid = false;
   if (!headerBytesValid) bytes = null;
   // Current implementation has to uncache headers as well as any change to a tx will alter the
   // merkle root. In
   // future we can go more granular and cache merkle root separately so rest of the header does
   // not need to be
   // rewritten.
   unCacheHeader();
   // Clear merkleRoot last as it may end up being parsed during unCacheHeader().
   merkleRoot = null;
 }
예제 #3
0
파일: Block.java 프로젝트: Qw0kka/creditsj
 void setNonce(long nonce) {
   unCacheHeader();
   this.nonce = nonce;
   this.hash = null;
   this.scryptHash = null;
 }
예제 #4
0
파일: Block.java 프로젝트: Qw0kka/creditsj
 void setDifficultyTarget(long compactForm) {
   unCacheHeader();
   this.difficultyTarget = compactForm;
   this.hash = null;
   this.scryptHash = null;
 }
예제 #5
0
파일: Block.java 프로젝트: Qw0kka/creditsj
 void setTime(long time) {
   unCacheHeader();
   this.time = time;
   this.hash = null;
   this.scryptHash = null;
 }
예제 #6
0
파일: Block.java 프로젝트: Qw0kka/creditsj
 void setPrevBlockHash(Sha256Hash prevBlockHash) {
   unCacheHeader();
   this.prevBlockHash = prevBlockHash;
   this.hash = null;
   this.scryptHash = null;
 }
예제 #7
0
파일: Block.java 프로젝트: Qw0kka/creditsj
 /** Exists only for unit testing. */
 void setMerkleRoot(Sha256Hash value) {
   unCacheHeader();
   merkleRoot = value;
   hash = null;
 }