本文整理汇总了Java中org.ethereum.crypto.ECKey.getNodeId方法的典型用法代码示例。如果您正苦于以下问题:Java ECKey.getNodeId方法的具体用法?Java ECKey.getNodeId怎么用?Java ECKey.getNodeId使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.ethereum.crypto.ECKey
的用法示例。
在下文中一共展示了ECKey.getNodeId方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: peerExplorer
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Bean
public PeerExplorer peerExplorer(RskSystemProperties rskConfig) {
ECKey key = rskConfig.getMyKey();
Node localNode = new Node(key.getNodeId(), rskConfig.getExternalIp(), rskConfig.listenPort());
NodeDistanceTable distanceTable = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, localNode);
long msgTimeOut = rskConfig.peerDiscoveryMessageTimeOut();
long refreshPeriod = rskConfig.peerDiscoveryRefreshPeriod();
List<String> initialBootNodes = rskConfig.peerDiscoveryIPList();
List<Node> activePeers = rskConfig.peerActive();
if(CollectionUtils.isNotEmpty(activePeers)) {
for(Node n : activePeers) {
InetSocketAddress address = n.getAddress();
initialBootNodes.add(address.getHostName() + ":" + address.getPort());
}
}
return new PeerExplorer(initialBootNodes, localNode, distanceTable, key, msgTimeOut, refreshPeriod);
}
示例2: startChallenge
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Test
public void startChallenge() {
ECKey key1 = ECKey.fromPrivate(Hex.decode(KEY_1)).decompress();
ECKey key2 = ECKey.fromPrivate(Hex.decode(KEY_2)).decompress();
ECKey key3 = ECKey.fromPrivate(Hex.decode(KEY_3)).decompress();
Node node1 = new Node(key1.getNodeId(), HOST_1, PORT_1);
Node node2 = new Node(key2.getNodeId(), HOST_2, PORT_2);
Node node3 = new Node(key3.getNodeId(), HOST_3, PORT_3);
NodeDistanceTable distanceTable = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node1);
PeerExplorer peerExplorer = new PeerExplorer(new ArrayList<>(), node1, distanceTable, new ECKey(), TIMEOUT, REFRESH);
peerExplorer.setUDPChannel(Mockito.mock(UDPChannel.class));
NodeChallengeManager manager = new NodeChallengeManager();
NodeChallenge challenge = manager.startChallenge(node2, node3, peerExplorer);
Assert.assertNotNull(challenge);
Assert.assertEquals(challenge.getChallengedNode(), node2);
Assert.assertEquals(challenge.getChallenger(), node3);
NodeChallenge anotherChallenge = manager.removeChallenge(UUID.randomUUID().toString());
Assert.assertNull(anotherChallenge);
anotherChallenge = manager.removeChallenge(challenge.getChallengeId());
Assert.assertEquals(challenge, anotherChallenge);
}
示例3: run3NodesFullTest
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Test
public void run3NodesFullTest() throws InterruptedException {
ECKey key1 = ECKey.fromPrivate(Hex.decode(KEY_1)).decompress();
ECKey key2 = ECKey.fromPrivate(Hex.decode(KEY_2)).decompress();
ECKey key3 = ECKey.fromPrivate(Hex.decode(KEY_3)).decompress();
List<String> node1BootNode = new ArrayList<>();
node1BootNode.add(HOST + ":5555");
node1BootNode.add(HOST + ":" + PORT_2);
List<String> node2BootNode = new ArrayList<>();
node2BootNode.add(HOST + ":" + PORT_3);
List<String> node3BootNode = new ArrayList<>();
Node node1 = new Node(key1.getNodeId(), HOST, PORT_1);
Node node2 = new Node(key2.getNodeId(), HOST, PORT_2);
Node node3 = new Node(key3.getNodeId(), HOST, PORT_3);
NodeDistanceTable distanceTable1 = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node1);
NodeDistanceTable distanceTable2 = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node2);
NodeDistanceTable distanceTable3 = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node3);
PeerExplorer peerExplorer1 = new PeerExplorer(node1BootNode, node1, distanceTable1, key1, TIMEOUT, REFRESH);
PeerExplorer peerExplorer2 = new PeerExplorer(node2BootNode, node2, distanceTable2, key2, TIMEOUT, REFRESH);
PeerExplorer peerExplorer3 = new PeerExplorer(node3BootNode, node3, distanceTable3, key3, TIMEOUT, REFRESH);
Assert.assertEquals(0, peerExplorer1.getNodes().size());
Assert.assertEquals(0, peerExplorer2.getNodes().size());
Assert.assertEquals(0, peerExplorer3.getNodes().size());
UDPServer udpServer1 = new UDPServer(HOST, PORT_1, peerExplorer1);
UDPServer udpServer2 = new UDPServer(HOST, PORT_2, peerExplorer2);
UDPServer udpServer3 = new UDPServer(HOST, PORT_3, peerExplorer3);
udpServer3.start();
TimeUnit.SECONDS.sleep(2);
peerExplorer3.cleanAndUpdate();
udpServer2.start();
TimeUnit.SECONDS.sleep(2);
peerExplorer2.cleanAndUpdate();
peerExplorer3.cleanAndUpdate();
udpServer1.start();
TimeUnit.SECONDS.sleep(2);
peerExplorer1.cleanAndUpdate();
peerExplorer2.cleanAndUpdate();
peerExplorer3.cleanAndUpdate();
TimeUnit.SECONDS.sleep(2);
List<Node> foundNodes1 = peerExplorer1.getNodes();
List<Node> foundNodes2 = peerExplorer2.getNodes();
List<Node> foundNodes3 = peerExplorer3.getNodes();
Assert.assertEquals(2, foundNodes1.size());
Assert.assertEquals(2, foundNodes2.size());
Assert.assertEquals(2, foundNodes3.size());
udpServer1.stop();
udpServer2.stop();
udpServer3.stop();
TimeUnit.SECONDS.sleep(5);
Assert.assertTrue(checkNodeIds(foundNodes1, NODE_ID_2, NODE_ID_3));
Assert.assertTrue(checkNodeIds(foundNodes2, NODE_ID_1, NODE_ID_3));
Assert.assertTrue(checkNodeIds(foundNodes3, NODE_ID_2, NODE_ID_1));
}
示例4: handlePingMessage
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Test
public void handlePingMessage() throws Exception {
List<String> nodes = new ArrayList<>();
ECKey key2 = ECKey.fromPrivate(Hex.decode(KEY_2)).decompress();
Node node = new Node(key2.getNodeId(), HOST_2, PORT_2);
NodeDistanceTable distanceTable = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node);
PeerExplorer peerExplorer = new PeerExplorer(nodes, node, distanceTable, key2, TIMEOUT, REFRESH);
Channel internalChannel = Mockito.mock(Channel.class);
UDPTestChannel channel = new UDPTestChannel(internalChannel, peerExplorer);
ChannelHandlerContext ctx = Mockito.mock(ChannelHandlerContext.class);
peerExplorer.setUDPChannel(channel);
Assert.assertTrue(CollectionUtils.isEmpty(peerExplorer.getNodes()));
ECKey key1 = ECKey.fromPrivate(Hex.decode(KEY_1)).decompress();
String check = UUID.randomUUID().toString();
PingPeerMessage nodeMessage = PingPeerMessage.create(HOST_1, PORT_1, check, key1);
DiscoveryEvent incomingPingEvent = new DiscoveryEvent(nodeMessage, new InetSocketAddress(HOST_1, PORT_1));
//A message is received
channel.channelRead0(ctx, incomingPingEvent);
//As part of the ping response, a Ping and a Pong are sent to the sender.
List<DiscoveryEvent> sentEvents = channel.getEventsWritten();
Assert.assertEquals(2, sentEvents.size());
DiscoveryEvent pongEvent = sentEvents.get(0);
PongPeerMessage toSenderPong = (PongPeerMessage) pongEvent.getMessage();
Assert.assertEquals(DiscoveryMessageType.PONG, toSenderPong.getMessageType());
Assert.assertEquals(new InetSocketAddress(HOST_1, PORT_1), pongEvent.getAddress());
DiscoveryEvent pingEvent = sentEvents.get(1);
PingPeerMessage toSenderPing = (PingPeerMessage) pingEvent.getMessage();
Assert.assertEquals(DiscoveryMessageType.PING, toSenderPing.getMessageType());
Assert.assertEquals(new InetSocketAddress(HOST_1, PORT_1), pingEvent.getAddress());
//After a pong returns from a node, when we receive a ping from that node, we only answer with a pong (no additional ping)
PongPeerMessage pongResponseFromSender = PongPeerMessage.create(HOST_1, PORT_1, toSenderPing.getMessageId(), key1);
DiscoveryEvent incomingPongEvent = new DiscoveryEvent(pongResponseFromSender, new InetSocketAddress(HOST_1, PORT_1));
channel.channelRead0(ctx, incomingPongEvent);
channel.clearEvents();
channel.channelRead0(ctx, incomingPingEvent);
sentEvents = channel.getEventsWritten();
Assert.assertEquals(1, sentEvents.size());
pongEvent = sentEvents.get(0);
toSenderPong = (PongPeerMessage) pongEvent.getMessage();
Assert.assertEquals(DiscoveryMessageType.PONG, toSenderPong.getMessageType());
Assert.assertEquals(new InetSocketAddress(HOST_1, PORT_1), pongEvent.getAddress());
Assert.assertEquals(NODE_ID_2, Hex.toHexString(toSenderPong.getKey().getNodeId()));
}
示例5: handlePongMessage
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Test
public void handlePongMessage() throws Exception {
List<String> nodes = new ArrayList<>();
nodes.add(HOST_1 + ":" + PORT_1);
nodes.add(HOST_3 + ":" + PORT_3);
ECKey key1 = ECKey.fromPrivate(Hex.decode(KEY_1)).decompress();
ECKey key2 = ECKey.fromPrivate(Hex.decode(KEY_2)).decompress();
Node node = new Node(key2.getNodeId(), HOST_2, PORT_2);
NodeDistanceTable distanceTable = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node);
PeerExplorer peerExplorer = new PeerExplorer(nodes, node, distanceTable, key2, TIMEOUT, REFRESH);
Channel internalChannel = Mockito.mock(Channel.class);
UDPTestChannel channel = new UDPTestChannel(internalChannel, peerExplorer);
ChannelHandlerContext ctx = Mockito.mock(ChannelHandlerContext.class);
peerExplorer.setUDPChannel(channel);
Assert.assertTrue(CollectionUtils.isEmpty(peerExplorer.getNodes()));
//A incoming pong for a Ping we did not sent.
String check = UUID.randomUUID().toString();
PongPeerMessage incomingPongMessage = PongPeerMessage.create(HOST_1, PORT_1, check, key1);
DiscoveryEvent incomingPongEvent = new DiscoveryEvent(incomingPongMessage, new InetSocketAddress(HOST_1, PORT_1));
channel.clearEvents();
channel.channelRead0(ctx, incomingPongEvent);
List<DiscoveryEvent> sentEvents = channel.getEventsWritten();
Assert.assertEquals(0, sentEvents.size());
Assert.assertEquals(0, peerExplorer.getNodes().size());
//Now we send the ping first
peerExplorer.startConversationWithNewNodes();
sentEvents = channel.getEventsWritten();
Assert.assertEquals(2, sentEvents.size());
incomingPongMessage = PongPeerMessage.create(HOST_1, PORT_1, ((PingPeerMessage) sentEvents.get(0).getMessage()).getMessageId(), key1);
incomingPongEvent = new DiscoveryEvent(incomingPongMessage, new InetSocketAddress(HOST_1, PORT_1));
channel.clearEvents();
List<Node> addedNodes = peerExplorer.getNodes();
Assert.assertEquals(0, addedNodes.size());
channel.channelRead0(ctx, incomingPongEvent);
Assert.assertEquals(1, peerExplorer.getNodes().size());
addedNodes = peerExplorer.getNodes();
Assert.assertEquals(1, addedNodes.size());
}
示例6: handleFindNodeMessage
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Test
public void handleFindNodeMessage() throws Exception {
List<String> nodes = new ArrayList<>();
nodes.add(HOST_1 + ":" + PORT_1);
nodes.add(HOST_3 + ":" + PORT_3);
ECKey key1 = ECKey.fromPrivate(Hex.decode(KEY_1)).decompress();
ECKey key2 = ECKey.fromPrivate(Hex.decode(KEY_2)).decompress();
Node node = new Node(key2.getNodeId(), HOST_2, PORT_2);
NodeDistanceTable distanceTable = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node);
PeerExplorer peerExplorer = new PeerExplorer(nodes, node, distanceTable, key2, TIMEOUT, REFRESH);
Channel internalChannel = Mockito.mock(Channel.class);
UDPTestChannel channel = new UDPTestChannel(internalChannel, peerExplorer);
ChannelHandlerContext ctx = Mockito.mock(ChannelHandlerContext.class);
peerExplorer.setUDPChannel(channel);
//We try to handle a findNode message from an unkown sender, no message should be send as a response
String check = UUID.randomUUID().toString();
FindNodePeerMessage findNodePeerMessage = FindNodePeerMessage.create(key1.getNodeId(), check, key1);
channel.clearEvents();
channel.channelRead0(ctx, new DiscoveryEvent(findNodePeerMessage, new InetSocketAddress(HOST_1, PORT_1)));
List<DiscoveryEvent> sentEvents = channel.getEventsWritten();
Assert.assertEquals(0, sentEvents.size());
//Now we send the ping first
peerExplorer.startConversationWithNewNodes();
PongPeerMessage incomingPongMessage = PongPeerMessage.create(HOST_1, PORT_1, ((PingPeerMessage) sentEvents.get(0).getMessage()).getMessageId(), key1);
DiscoveryEvent incomingPongEvent = new DiscoveryEvent(incomingPongMessage, new InetSocketAddress(HOST_1, PORT_1));
channel.channelRead0(ctx, incomingPongEvent);
incomingPongMessage = PongPeerMessage.create(HOST_3, PORT_3, ((PingPeerMessage) sentEvents.get(0).getMessage()).getMessageId(), key1);
incomingPongEvent = new DiscoveryEvent(incomingPongMessage, new InetSocketAddress(HOST_3, PORT_3));
channel.channelRead0(ctx, incomingPongEvent);
check = UUID.randomUUID().toString();
findNodePeerMessage = FindNodePeerMessage.create(key1.getNodeId(), check, key1);
channel.clearEvents();
channel.channelRead0(ctx, new DiscoveryEvent(findNodePeerMessage, new InetSocketAddress(HOST_1, PORT_1)));
sentEvents = channel.getEventsWritten();
Assert.assertEquals(1, sentEvents.size());
NeighborsPeerMessage neighborsPeerMessage = (NeighborsPeerMessage) sentEvents.get(0).getMessage();
Assert.assertEquals(1, neighborsPeerMessage.getNodes().size());
}
示例7: handleFindNodeMessageWithExtraNodes
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Test
public void handleFindNodeMessageWithExtraNodes() throws Exception {
List<String> nodes = new ArrayList<>();
nodes.add(HOST_1 + ":" + PORT_1);
nodes.add(HOST_3 + ":" + PORT_3);
ECKey key1 = ECKey.fromPrivate(Hex.decode(KEY_1)).decompress();
ECKey key2 = ECKey.fromPrivate(Hex.decode(KEY_2)).decompress();
ECKey key3 = ECKey.fromPrivate(Hex.decode(KEY_3)).decompress();
Node node = new Node(key2.getNodeId(), HOST_2, PORT_2);
NodeDistanceTable distanceTable = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node);
PeerExplorer peerExplorer = new PeerExplorer(nodes, node, distanceTable, key2, TIMEOUT, REFRESH);
Channel internalChannel = Mockito.mock(Channel.class);
UDPTestChannel channel = new UDPTestChannel(internalChannel, peerExplorer);
ChannelHandlerContext ctx = Mockito.mock(ChannelHandlerContext.class);
peerExplorer.setUDPChannel(channel);
Assert.assertTrue(CollectionUtils.isEmpty(peerExplorer.getNodes()));
//we send the ping first
peerExplorer.startConversationWithNewNodes();
List<DiscoveryEvent> sentEvents = channel.getEventsWritten();
Assert.assertEquals(2, sentEvents.size());
PongPeerMessage incomingPongMessage1 = PongPeerMessage.create(HOST_1, PORT_1, ((PingPeerMessage) sentEvents.get(0).getMessage()).getMessageId(), key1);
DiscoveryEvent incomingPongEvent1 = new DiscoveryEvent(incomingPongMessage1, new InetSocketAddress(HOST_1, PORT_1));
PongPeerMessage incomingPongMessage2 = PongPeerMessage.create(HOST_3, PORT_3, ((PingPeerMessage) sentEvents.get(1).getMessage()).getMessageId(), key3);
DiscoveryEvent incomingPongEvent2 = new DiscoveryEvent(incomingPongMessage2, new InetSocketAddress(HOST_3, PORT_3));
channel.clearEvents();
channel.channelRead0(ctx, incomingPongEvent1);
channel.channelRead0(ctx, incomingPongEvent2);
List<Node> foundNodes = peerExplorer.getNodes();
Assert.assertEquals(2, foundNodes.size());
Assert.assertEquals(NODE_ID_3, Hex.toHexString(foundNodes.get(0).getId()));
Assert.assertEquals(NODE_ID_1, Hex.toHexString(foundNodes.get(1).getId()));
String check = UUID.randomUUID().toString();
FindNodePeerMessage findNodePeerMessage = FindNodePeerMessage.create(key1.getNodeId(), check, key1);
channel.clearEvents();
channel.channelRead0(ctx, new DiscoveryEvent(findNodePeerMessage, new InetSocketAddress(HOST_1, PORT_1)));
sentEvents = channel.getEventsWritten();
Assert.assertEquals(1, sentEvents.size());
NeighborsPeerMessage neighborsPeerMessage = (NeighborsPeerMessage) sentEvents.get(0).getMessage();
Assert.assertEquals(2, neighborsPeerMessage.getNodes().size());
Assert.assertTrue(cotainsNode(NODE_ID_1, neighborsPeerMessage.getNodes()));
Assert.assertTrue(cotainsNode(NODE_ID_3, neighborsPeerMessage.getNodes()));
}
示例8: handleNeighbors
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
@Test
public void handleNeighbors() throws Exception {
List<String> nodes = new ArrayList<>();
nodes.add(HOST_1 + ":" + PORT_1);
ECKey key1 = ECKey.fromPrivate(Hex.decode(KEY_1)).decompress();
ECKey key2 = ECKey.fromPrivate(Hex.decode(KEY_2)).decompress();
Node node1 = new Node(key1.getNodeId(), HOST_1, PORT_1);
Node node2 = new Node(key2.getNodeId(), HOST_2, PORT_2);
NodeDistanceTable distanceTable = new NodeDistanceTable(KademliaOptions.BINS, KademliaOptions.BUCKET_SIZE, node2);
PeerExplorer peerExplorer = new PeerExplorer(nodes, node2, distanceTable, key2, TIMEOUT, REFRESH);
Channel internalChannel = Mockito.mock(Channel.class);
UDPTestChannel channel = new UDPTestChannel(internalChannel, peerExplorer);
ChannelHandlerContext ctx = Mockito.mock(ChannelHandlerContext.class);
peerExplorer.setUDPChannel(channel);
Assert.assertTrue(CollectionUtils.isEmpty(peerExplorer.getNodes()));
//We try to process a Message without previous connection
List<Node> newNodes = new ArrayList<>();
newNodes.add(new Node(Hex.decode(NODE_ID_3), HOST_3, PORT_3));
NeighborsPeerMessage neighborsPeerMessage = NeighborsPeerMessage.create(newNodes, UUID.randomUUID().toString(), key1);
DiscoveryEvent neighborsEvent = new DiscoveryEvent(neighborsPeerMessage, new InetSocketAddress(HOST_1, PORT_1));
channel.clearEvents();
channel.channelRead0(ctx, neighborsEvent);
List<DiscoveryEvent> sentEvents = channel.getEventsWritten();
Assert.assertEquals(0, sentEvents.size());
//we establish a connection but we dont send the findnode message.
peerExplorer.startConversationWithNewNodes();
PongPeerMessage incomingPongMessage = PongPeerMessage.create(HOST_1, PORT_1, ((PingPeerMessage) sentEvents.get(0).getMessage()).getMessageId(), key1);
DiscoveryEvent incomingPongEvent = new DiscoveryEvent(incomingPongMessage, new InetSocketAddress(HOST_1, PORT_1));
channel.channelRead0(ctx, incomingPongEvent);
channel.clearEvents();
channel.channelRead0(ctx, neighborsEvent);
sentEvents = channel.getEventsWritten();
Assert.assertEquals(0, sentEvents.size());
//We send a findNode first
channel.clearEvents();
peerExplorer.sendFindNode(node1);
FindNodePeerMessage findNodePeerMessage = (FindNodePeerMessage) channel.getEventsWritten().get(0).getMessage();
neighborsPeerMessage = NeighborsPeerMessage.create(newNodes, findNodePeerMessage.getMessageId(), key1);
neighborsEvent = new DiscoveryEvent(neighborsPeerMessage, new InetSocketAddress(HOST_1, PORT_1));
channel.clearEvents();
channel.channelRead0(ctx, neighborsEvent);
sentEvents = channel.getEventsWritten();
Assert.assertEquals(1, sentEvents.size());
DiscoveryEvent discoveryEvent = sentEvents.get(0);
Assert.assertEquals(new InetSocketAddress(HOST_3, PORT_3), discoveryEvent.getAddress());
Assert.assertEquals(DiscoveryMessageType.PING, discoveryEvent.getMessage().getMessageType());
}
示例9: Handshaker
import org.ethereum.crypto.ECKey; //导入方法依赖的package包/类
public Handshaker() {
myKey = new ECKey();
nodeId = myKey.getNodeId();
System.out.println("Node ID " + Hex.toHexString(nodeId));
}