-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConsortium_node.java
More file actions
127 lines (104 loc) · 3.37 KB
/
Consortium_node.java
File metadata and controls
127 lines (104 loc) · 3.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
import java.util.Date;
public class Consortium_node{
static node_info node_storage;
//???????????? ???? ->????? ?????????Id ????????? ex)soyang1 soyang2 soyang3...
static String consortiumName = "";
static int myPortNum;
static BlockChain chain;
static broker_node bk_node;
static ServerThread serverThread;
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
System.out.println("Consortium Node Start...");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
node_storage = new node_info();
chain = new BlockChain();
System.out.println(">> Enter your Port Number");
myPortNum = Integer.parseInt(bufferedReader.readLine());
//broker node??? port ??????? my_port + 1
bk_node = new broker_node(node_storage, myPortNum + 1, chain, "soyang");
serverThread = new ServerThread(myPortNum);
bk_node.serverThread = serverThread;
serverThread.start();
new Consortium_node().pullFromPeers(bufferedReader, serverThread);
}
public void pullFromPeers(BufferedReader bufferedReader, ServerThread serverThread) throws Exception{
System.out.println("pull From Peers");
//peer ip???? ???
String[] peers = new String[2];
int[] peerPorts = new int[2];
peers[0] = "175.208.245.129";
peers[1] = "221.167.222.167";
//peers[2] = "59.13.228.230";
peerPorts[0] = 30001;
peerPorts[1] = 30001;
//peerPorts[2] = 30006;
for(int i = 0; i < peers.length; ++i) {
Socket socket = null;
try {
socket = new Socket(peers[i], peerPorts[i]);
new PeerThread(socket, peers[i],myPortNum, chain, node_storage).start();
} catch(Exception e) {
if(socket != null) {
System.out.println("socketnull");
socket.close();
}
else
System.out.println("Invalid Input");
//e.printStackTrace();
//connection exception timeout
}
}
communicate(bufferedReader, serverThread);
}
public void communicate(BufferedReader bufferedReader, ServerThread serverThread) {
//msg snd interface
System.out.println("communicate");
try {
System.out.println(">> Send Message");
boolean flag = true;
while(flag) {
String msg = bufferedReader.readLine();
if(msg.equals("exit")){
flag = false;
System.out.println("Consortium Node Exit...");
serverThread.closeSocket();
break;
}else {
serverThread.sendMessage(msg);
}
}
System.exit(0);
}catch(Exception e) {
}
}
public String getConsortiumName() {
return consortiumName;
}
public void P2PTransaction(Transaction transaction) {
Date date = new Date();
//0 : ??, 1 : ??, 2 : ??
int myNum = 0;
int consortiumNum = 3;
while(true) {
int second = (int) ((date.getTime() / 10) % consortiumNum);
Block block = chain.queue.get(chain.queue.size() - 1);
if(second == myNum) {
//Peer?? transaction ??
serverThread.sendMessage(transaction);
//? ??? transaction ??
if(block.add_transaction_num == 4) {
chain.queue.add(new Block());
chain.queue.get(chain.queue.size() - 1).addTransaction(transaction);
}else {
block.addTransaction(transaction);
}
System.out.println("Transaction Added in Block!");
break;
}
}
}
}