annotate src/main/java/christie/blockchain/BlockHeader.java @ 121:8949d0ecf1f6

refactor Topology
author akahori
date Tue, 11 Dec 2018 15:46:09 +0900
parents eab161e557bd
children 694ea96a557a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
1 package christie.blockchain;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
2
110
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
3 import org.bouncycastle.util.BigIntegers;
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
4
109
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
5 import java.io.ByteArrayOutputStream;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
6 import java.io.IOException;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
7 import java.math.BigInteger;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
8 import java.nio.charset.Charset;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
9
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
10 public class BlockHeader {
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
11
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
12 private byte[] presentHash;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
13
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
14 private byte[] parentHash;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
15
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
16 private long timestamp;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
17
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
18 private long nonce;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
19
110
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
20 HashUtil hashUtil = new HashUtil();
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
21
109
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
22 public BlockHeader(byte[] parentHash, long timestamp) {
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
23 this.parentHash = parentHash;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
24 this.timestamp = timestamp;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
25 }
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
26
110
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
27 public byte[] getHash(boolean withNonce){
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
28
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
29 ByteArrayOutputStream output = new ByteArrayOutputStream();
109
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
30
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
31 byte[] timestampByte = BigInteger.valueOf(this.timestamp).toByteArray();
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
32
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
33 try {
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
34 output.write(parentHash);
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
35 output.write(timestampByte);
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
36 } catch (IOException e) {
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
37 e.printStackTrace();
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
38 }
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
39
110
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
40 if(withNonce){
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
41 byte[] nonceByte = BigInteger.valueOf(this.nonce).toByteArray();
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
42 try {
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
43 output.write(nonceByte);
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
44 } catch (IOException e) {
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
45 e.printStackTrace();
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
46 }
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
47 }
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
48
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
49 return output.toByteArray();
109
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
50
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
51 }
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
52
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
53 public byte[] getParentHash() {
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
54 return parentHash;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
55 }
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
56
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
57 public byte[] getPresentHash() {
110
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
58 return hashUtil.sha256(getHash(true));
109
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
59 }
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
60
110
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
61 public byte[] getPresentHashWithoutNonce(){
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
62 return getHash(false);
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
63 }
109
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
64
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
65 public long getTimestamp() {
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
66 return timestamp;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
67 }
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
68
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
69 public void setTimestamp(long timestamp) {
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
70 this.timestamp = timestamp;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
71 }
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
72
110
eab161e557bd fix Refactor
akahori
parents: 109
diff changeset
73 public void setNonce(long nonce) { this.nonce = nonce; }
109
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
74
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
75 public long getNonce(){
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
76 return this.nonce;
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
77 }
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
78
2e64b927388c fix add BlockHeader.java
akahori
parents:
diff changeset
79 }