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

refactor Topology
author akahori
date Tue, 11 Dec 2018 15:46:09 +0900
parents eab161e557bd
children 0ef25958ac04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
110
eab161e557bd fix Refactor
akahori
parents:
diff changeset
1 package christie.blockchain;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
2
eab161e557bd fix Refactor
akahori
parents:
diff changeset
3 import java.io.ByteArrayOutputStream;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
4 import java.io.IOException;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
5 import java.math.BigInteger;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
6
eab161e557bd fix Refactor
akahori
parents:
diff changeset
7 // インターフェイスにしたほうがいいかもしれない. 後からdataの内容変える可能性がある.
eab161e557bd fix Refactor
akahori
parents:
diff changeset
8 public class Transaction {
eab161e557bd fix Refactor
akahori
parents:
diff changeset
9 private byte[] hash;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
10
eab161e557bd fix Refactor
akahori
parents:
diff changeset
11 private long nonce;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
12
eab161e557bd fix Refactor
akahori
parents:
diff changeset
13 private byte[] sendAddress;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
14
eab161e557bd fix Refactor
akahori
parents:
diff changeset
15 private byte[] receiveAddress;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
16
eab161e557bd fix Refactor
akahori
parents:
diff changeset
17 private byte[] data;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
18
eab161e557bd fix Refactor
akahori
parents:
diff changeset
19 private long timestamp;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
20
eab161e557bd fix Refactor
akahori
parents:
diff changeset
21 private byte[] signature;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
22
eab161e557bd fix Refactor
akahori
parents:
diff changeset
23 //public ArrayList<TransactionInput> inputs = new ArrayList<TransactionInput>();
eab161e557bd fix Refactor
akahori
parents:
diff changeset
24 //public ArrayList<TransactionOutput> outputs = new ArrayList<TransactionOutput>();
eab161e557bd fix Refactor
akahori
parents:
diff changeset
25
eab161e557bd fix Refactor
akahori
parents:
diff changeset
26
eab161e557bd fix Refactor
akahori
parents:
diff changeset
27 public Transaction(byte[] sendAddress, byte[] receiveAddress, byte[] data){
eab161e557bd fix Refactor
akahori
parents:
diff changeset
28 this.sendAddress = sendAddress;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
29 this.receiveAddress = receiveAddress;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
30 this.data = data;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
31
eab161e557bd fix Refactor
akahori
parents:
diff changeset
32 }
eab161e557bd fix Refactor
akahori
parents:
diff changeset
33 /*
eab161e557bd fix Refactor
akahori
parents:
diff changeset
34 public Transaction(byte[] from, byte[] to, byte[] value, ArrayList<TransactionInput> inputs) {
eab161e557bd fix Refactor
akahori
parents:
diff changeset
35 this.sendAddress = from;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
36 this.receiveAddress = to;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
37 this.value = value;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
38 this.inputs = inputs;
eab161e557bd fix Refactor
akahori
parents:
diff changeset
39 }
eab161e557bd fix Refactor
akahori
parents:
diff changeset
40 */
eab161e557bd fix Refactor
akahori
parents:
diff changeset
41 public byte[] calcHash(){
eab161e557bd fix Refactor
akahori
parents:
diff changeset
42 HashUtil hashUtil = new HashUtil();
eab161e557bd fix Refactor
akahori
parents:
diff changeset
43
eab161e557bd fix Refactor
akahori
parents:
diff changeset
44 byte[] timestampByte = BigInteger.valueOf(this.timestamp).toByteArray();
eab161e557bd fix Refactor
akahori
parents:
diff changeset
45
eab161e557bd fix Refactor
akahori
parents:
diff changeset
46 byte[] nonceByte = BigInteger.valueOf(this.nonce).toByteArray();
eab161e557bd fix Refactor
akahori
parents:
diff changeset
47
eab161e557bd fix Refactor
akahori
parents:
diff changeset
48 ByteArrayOutputStream output = new ByteArrayOutputStream();
eab161e557bd fix Refactor
akahori
parents:
diff changeset
49
eab161e557bd fix Refactor
akahori
parents:
diff changeset
50 try {
eab161e557bd fix Refactor
akahori
parents:
diff changeset
51 output.write(hash);
eab161e557bd fix Refactor
akahori
parents:
diff changeset
52 output.write(timestampByte);
eab161e557bd fix Refactor
akahori
parents:
diff changeset
53 output.write(nonceByte);
eab161e557bd fix Refactor
akahori
parents:
diff changeset
54 } catch (IOException e) {
eab161e557bd fix Refactor
akahori
parents:
diff changeset
55 e.printStackTrace();
eab161e557bd fix Refactor
akahori
parents:
diff changeset
56 }
eab161e557bd fix Refactor
akahori
parents:
diff changeset
57
eab161e557bd fix Refactor
akahori
parents:
diff changeset
58 return hashUtil.sha256(output.toByteArray());
eab161e557bd fix Refactor
akahori
parents:
diff changeset
59
eab161e557bd fix Refactor
akahori
parents:
diff changeset
60 }
eab161e557bd fix Refactor
akahori
parents:
diff changeset
61
eab161e557bd fix Refactor
akahori
parents:
diff changeset
62 }