diff --git a/khipu-eth/src/main/scala/khipu/Khipu.scala b/khipu-eth/src/main/scala/khipu/Khipu.scala index af0f8f5..6a4b311 100644 --- a/khipu-eth/src/main/scala/khipu/Khipu.scala +++ b/khipu-eth/src/main/scala/khipu/Khipu.scala @@ -21,10 +21,10 @@ import khipu.jsonrpc.Web3Service import khipu.jsonrpc.http.JsonRpcHttpServer import khipu.keystore.KeyStore import khipu.mining.BlockGenerator +import khipu.network.KnownNodesService +import khipu.network.OutgoingPeer +import khipu.network.Peer import khipu.network.handshake.EtcHandshake -import khipu.network.rlpx.KnownNodesService -import khipu.network.rlpx.OutgoingPeer -import khipu.network.rlpx.Peer import khipu.network.rlpx.RLPx import khipu.network.rlpx.auth.AuthHandshake import khipu.network.rlpx.discovery.NodeDiscoveryService diff --git a/khipu-eth/src/main/scala/khipu/blockchain/sync/FastSyncService.scala b/khipu-eth/src/main/scala/khipu/blockchain/sync/FastSyncService.scala index ccdaba8..b35b286 100644 --- a/khipu-eth/src/main/scala/khipu/blockchain/sync/FastSyncService.scala +++ b/khipu-eth/src/main/scala/khipu/blockchain/sync/FastSyncService.scala @@ -17,10 +17,10 @@ import khipu.config.KhipuConfig import khipu.crypto import khipu.domain.BlockHeader import khipu.domain.Receipt +import khipu.network.Peer import khipu.network.handshake.EtcHandshake.PeerInfo import khipu.network.p2p.messages.PV62 import khipu.network.p2p.messages.CommonMessages.Status -import khipu.network.rlpx.Peer import khipu.network.rlpx.RLPxStage import khipu.util.SimpleMap import scala.collection.immutable diff --git a/khipu-eth/src/main/scala/khipu/blockchain/sync/HandshakedPeersService.scala b/khipu-eth/src/main/scala/khipu/blockchain/sync/HandshakedPeersService.scala index a4682c2..c461115 100644 --- a/khipu-eth/src/main/scala/khipu/blockchain/sync/HandshakedPeersService.scala +++ b/khipu-eth/src/main/scala/khipu/blockchain/sync/HandshakedPeersService.scala @@ -4,13 +4,13 @@ import akka.pattern.AskTimeoutException import khipu.blockchain.sync.SyncService.SuspendPeerTick import khipu.config.KhipuConfig import khipu.domain.BlockHeader +import khipu.network.IncomingPeer +import khipu.network.Peer +import khipu.network.PeerEntity +import khipu.network.PeerManager +import khipu.network.OutgoingPeer import khipu.network.handshake.EtcHandshake.PeerInfo import khipu.network.p2p.messages.WireProtocol.Disconnect -import khipu.network.rlpx.IncomingPeer -import khipu.network.rlpx.OutgoingPeer -import khipu.network.rlpx.Peer -import khipu.network.rlpx.PeerEntity -import khipu.network.rlpx.PeerManager import khipu.storage.AppStateStorage import scala.collection.mutable import scala.concurrent.duration._ diff --git a/khipu-eth/src/main/scala/khipu/blockchain/sync/HostService.scala b/khipu-eth/src/main/scala/khipu/blockchain/sync/HostService.scala index 2b648c1..9c05be0 100644 --- a/khipu-eth/src/main/scala/khipu/blockchain/sync/HostService.scala +++ b/khipu-eth/src/main/scala/khipu/blockchain/sync/HostService.scala @@ -2,11 +2,11 @@ package khipu.blockchain.sync import akka.util.ByteString import khipu.domain.Blockchain +import khipu.network.PeerConfiguration import khipu.network.p2p.Message import khipu.network.p2p.MessageSerializable import khipu.network.p2p.messages.PV62 import khipu.network.p2p.messages.PV63 -import khipu.network.rlpx.PeerConfiguration import scala.concurrent.ExecutionContext import scala.concurrent.Future diff --git a/khipu-eth/src/main/scala/khipu/blockchain/sync/RegularSyncService.scala b/khipu-eth/src/main/scala/khipu/blockchain/sync/RegularSyncService.scala index 9039d25..242d5ce 100644 --- a/khipu-eth/src/main/scala/khipu/blockchain/sync/RegularSyncService.scala +++ b/khipu-eth/src/main/scala/khipu/blockchain/sync/RegularSyncService.scala @@ -16,11 +16,11 @@ import khipu.ledger.Ledger.BlockExecutionError import khipu.ledger.Ledger.BlockResult import khipu.ledger.Ledger.MissingNodeExecptionError import khipu.ledger.Ledger.ValidationBeforeExecError +import khipu.network.Peer +import khipu.network.PeerEntity import khipu.network.handshake.EtcHandshake.PeerInfo import khipu.network.p2p.messages.CommonMessages.NewBlock import khipu.network.p2p.messages.PV62 -import khipu.network.rlpx.Peer -import khipu.network.rlpx.PeerEntity import khipu.transactions.PendingTransactionsService import khipu.ommers.OmmersPool import scala.annotation.tailrec diff --git a/khipu-eth/src/main/scala/khipu/blockchain/sync/SyncService.scala b/khipu-eth/src/main/scala/khipu/blockchain/sync/SyncService.scala index ddac62b..6caf5e7 100644 --- a/khipu-eth/src/main/scala/khipu/blockchain/sync/SyncService.scala +++ b/khipu-eth/src/main/scala/khipu/blockchain/sync/SyncService.scala @@ -20,10 +20,10 @@ import khipu.config.KhipuConfig import khipu.crypto import khipu.domain.Block import khipu.domain.BlockHeader +import khipu.network.Peer import khipu.network.p2p.Message import khipu.network.p2p.messages.PV62 import khipu.network.p2p.messages.PV63 -import khipu.network.rlpx.Peer import khipu.ommers.OmmersPool import khipu.service.ServiceBoard import khipu.transactions.PendingTransactionsService diff --git a/khipu-eth/src/main/scala/khipu/config/KhipuConfig.scala b/khipu-eth/src/main/scala/khipu/config/KhipuConfig.scala index 4a03006..93ad732 100644 --- a/khipu-eth/src/main/scala/khipu/config/KhipuConfig.scala +++ b/khipu-eth/src/main/scala/khipu/config/KhipuConfig.scala @@ -8,9 +8,9 @@ import khipu.DataWord import khipu.domain.Address import khipu.jsonrpc.JsonRpcController.JsonRpcConfig import khipu.jsonrpc.http.JsonRpcHttpServer.JsonRpcHttpServerConfig -import khipu.network.rlpx.FastSyncHostConfiguration -import khipu.network.rlpx.PeerConfiguration -import khipu.network.rlpx.RLPxConfiguration +import khipu.network.FastSyncHostConfiguration +import khipu.network.PeerConfiguration +import khipu.network.RLPxConfiguration import scala.concurrent.duration._ import scala.util.Try diff --git a/khipu-eth/src/main/scala/khipu/jsonrpc/NetService.scala b/khipu-eth/src/main/scala/khipu/jsonrpc/NetService.scala index 25f904c..6aa261d 100644 --- a/khipu-eth/src/main/scala/khipu/jsonrpc/NetService.scala +++ b/khipu-eth/src/main/scala/khipu/jsonrpc/NetService.scala @@ -7,7 +7,7 @@ import khipu.jsonrpc.NetService.NetServiceConfig import com.typesafe.config.Config import khipu.NodeStatus import khipu.ServerStatus.{ Listening, NotListening } -import khipu.network.rlpx.PeerManager +import khipu.network.PeerManager import khipu.service.ServiceBoard import scala.concurrent.Future import scala.concurrent.duration._ diff --git a/khipu-eth/src/main/scala/khipu/network/rlpx/KnownNodesService.scala b/khipu-eth/src/main/scala/khipu/network/KnownNodesService.scala similarity index 99% rename from khipu-eth/src/main/scala/khipu/network/rlpx/KnownNodesService.scala rename to khipu-eth/src/main/scala/khipu/network/KnownNodesService.scala index 761ddcb..17be42b 100644 --- a/khipu-eth/src/main/scala/khipu/network/rlpx/KnownNodesService.scala +++ b/khipu-eth/src/main/scala/khipu/network/KnownNodesService.scala @@ -1,4 +1,4 @@ -package khipu.network.rlpx +package khipu.network import akka.actor.{ Actor, ActorLogging, Props, Scheduler, ActorSystem, ActorRef, PoisonPill } import akka.cluster.client.ClusterClientReceptionist diff --git a/khipu-eth/src/main/scala/khipu/network/rlpx/Peer.scala b/khipu-eth/src/main/scala/khipu/network/Peer.scala similarity index 98% rename from khipu-eth/src/main/scala/khipu/network/rlpx/Peer.scala rename to khipu-eth/src/main/scala/khipu/network/Peer.scala index 81e2a29..6639f64 100644 --- a/khipu-eth/src/main/scala/khipu/network/rlpx/Peer.scala +++ b/khipu-eth/src/main/scala/khipu/network/Peer.scala @@ -1,4 +1,4 @@ -package khipu.network.rlpx +package khipu.network import akka.actor.ActorRef import java.net.InetSocketAddress diff --git a/khipu-eth/src/main/scala/khipu/network/rlpx/PeerEntity.scala b/khipu-eth/src/main/scala/khipu/network/PeerEntity.scala similarity index 99% rename from khipu-eth/src/main/scala/khipu/network/rlpx/PeerEntity.scala rename to khipu-eth/src/main/scala/khipu/network/PeerEntity.scala index 3cadd51..4a83a42 100644 --- a/khipu-eth/src/main/scala/khipu/network/rlpx/PeerEntity.scala +++ b/khipu-eth/src/main/scala/khipu/network/PeerEntity.scala @@ -1,4 +1,4 @@ -package khipu.network.rlpx +package khipu.network import akka.actor.Actor import akka.actor.ActorLogging diff --git a/khipu-eth/src/main/scala/khipu/network/rlpx/PeerManager.scala b/khipu-eth/src/main/scala/khipu/network/PeerManager.scala similarity index 98% rename from khipu-eth/src/main/scala/khipu/network/rlpx/PeerManager.scala rename to khipu-eth/src/main/scala/khipu/network/PeerManager.scala index 88a4088..8cf2902 100644 --- a/khipu-eth/src/main/scala/khipu/network/rlpx/PeerManager.scala +++ b/khipu-eth/src/main/scala/khipu/network/PeerManager.scala @@ -1,4 +1,4 @@ -package khipu.network.rlpx +package khipu.network import akka.actor.Actor import akka.actor.ActorLogging @@ -9,9 +9,10 @@ import akka.pattern.ask import akka.pattern.pipe import akka.util.Timeout import java.net.URI +import khipu.network.PeerEntity.Status.Handshaked import khipu.network.handshake.EtcHandshake import khipu.network.p2p.MessageSerializable -import khipu.network.rlpx.PeerEntity.Status.Handshaked +import khipu.network.rlpx.RLPx import khipu.network.rlpx.auth.AuthHandshake import khipu.network.rlpx.discovery.NodeDiscoveryService import khipu.service.ServiceBoard diff --git a/khipu-eth/src/main/scala/khipu/network/handshake/EtcHandshake.scala b/khipu-eth/src/main/scala/khipu/network/handshake/EtcHandshake.scala index d17673e..101573f 100644 --- a/khipu-eth/src/main/scala/khipu/network/handshake/EtcHandshake.scala +++ b/khipu-eth/src/main/scala/khipu/network/handshake/EtcHandshake.scala @@ -7,6 +7,7 @@ import khipu.DataWord import khipu.config.KhipuConfig import khipu.domain.Blockchain import khipu.network.ForkResolver +import khipu.network.PeerConfiguration import khipu.network.p2p.Message import khipu.network.p2p.MessageSerializable import khipu.network.p2p.messages.CommonMessages.NewBlock @@ -14,7 +15,6 @@ import khipu.network.p2p.messages.CommonMessages.Status import khipu.network.p2p.messages.PV62 import khipu.network.p2p.messages.Versions import khipu.network.p2p.messages.WireProtocol.{ Capability, Disconnect, Hello } -import khipu.network.rlpx.PeerConfiguration import khipu.storage.AppStateStorage import scala.concurrent.duration._ diff --git a/khipu-eth/src/main/scala/khipu/network/package.scala b/khipu-eth/src/main/scala/khipu/network/package.scala index 899338e..ea0baf7 100644 --- a/khipu-eth/src/main/scala/khipu/network/package.scala +++ b/khipu-eth/src/main/scala/khipu/network/package.scala @@ -1,8 +1,38 @@ package khipu +import scala.concurrent.duration.FiniteDuration + package object network { sealed trait Control case object Tick extends Control case object WireDisconnected extends Control + + trait RLPxConfiguration { + val waitForHandshakeTimeout: FiniteDuration + val waitForTcpAckTimeout: FiniteDuration + } + + trait PeerConfiguration { + val connectRetryDelay: FiniteDuration + val connectMaxRetries: Int + val disconnectPoisonPillTimeout: FiniteDuration + val waitForHelloTimeout: FiniteDuration + val waitForStatusTimeout: FiniteDuration + val waitForChainCheckTimeout: FiniteDuration + val fastSyncHostConfiguration: FastSyncHostConfiguration + val rlpxConfiguration: RLPxConfiguration + val maxPeers: Int + val maxIncomingPeers: Int + val networkId: Int + val updateNodesInitialDelay: FiniteDuration + val updateNodesInterval: FiniteDuration + } + + trait FastSyncHostConfiguration { + val maxBlocksHeadersPerMessage: Int + val maxBlocksBodiesPerMessage: Int + val maxReceiptsPerMessage: Int + val maxMptComponentsPerMessage: Int + } } diff --git a/khipu-eth/src/main/scala/khipu/network/rlpx/BluePrint.scala b/khipu-eth/src/main/scala/khipu/network/rlpx/BluePrint.scala index 551cbe4..a83e143 100644 --- a/khipu-eth/src/main/scala/khipu/network/rlpx/BluePrint.scala +++ b/khipu-eth/src/main/scala/khipu/network/rlpx/BluePrint.scala @@ -8,7 +8,9 @@ import akka.stream.scaladsl.GraphDSL import akka.stream.scaladsl.MergePreferred import akka.stream.scaladsl.Source import akka.util.ByteString -import khipu.network +import khipu.network.Control +import khipu.network.Peer +import khipu.network.Tick import khipu.network.handshake.EtcHandshake import khipu.network.p2p.Message import khipu.network.p2p.MessageDecoder @@ -35,12 +37,12 @@ object BluePrint { Flow.fromGraph(GraphDSL.create() { implicit builder => import GraphDSL.Implicits._ - val control = builder.add(Source.tick(0.seconds, 1.millis, Left(network.Tick)).buffer(1, OverflowStrategy.dropNew)) + val control = builder.add(Source.tick(0.seconds, 1.millis, Left(Tick)).buffer(1, OverflowStrategy.dropNew)) val incoming = builder.add(Flow[ByteString]) val wireStage = builder.add(new WireStage()) val rlpxFlow = builder.add(Flow.fromGraph(new RLPxStage(peer, messageDecoder, protocolVersion, authHandshake, handshake))) - val merge = builder.add(MergePreferred[Either[network.Control, ByteString]](1)) + val merge = builder.add(MergePreferred[Either[Control, ByteString]](1)) incoming ~> wireStage ~> merge.preferred control ~> merge.in(0) diff --git a/khipu-eth/src/main/scala/khipu/network/rlpx/RLPx.scala b/khipu-eth/src/main/scala/khipu/network/rlpx/RLPx.scala index 0e86c88..e997023 100644 --- a/khipu-eth/src/main/scala/khipu/network/rlpx/RLPx.scala +++ b/khipu-eth/src/main/scala/khipu/network/rlpx/RLPx.scala @@ -7,7 +7,9 @@ import akka.stream.scaladsl.Sink import akka.stream.scaladsl.Source import akka.stream.scaladsl.Tcp import java.net.InetSocketAddress -import khipu.network +import khipu.network.IncomingPeer +import khipu.network.OutgoingPeer +import khipu.network.Peer import khipu.network.handshake.EtcHandshake import khipu.network.p2p.Message import khipu.network.p2p.MessageDecoder diff --git a/khipu-eth/src/main/scala/khipu/network/rlpx/RLPxStage.scala b/khipu-eth/src/main/scala/khipu/network/rlpx/RLPxStage.scala index 5f265be..7084bac 100644 --- a/khipu-eth/src/main/scala/khipu/network/rlpx/RLPxStage.scala +++ b/khipu-eth/src/main/scala/khipu/network/rlpx/RLPxStage.scala @@ -17,6 +17,12 @@ import akka.util.ByteStringBuilder import java.util.concurrent.atomic.AtomicInteger import khipu.blockchain.sync.SyncService import khipu.network.Control +import khipu.network.IncomingPeer +import khipu.network.KnownNodesService +import khipu.network.OutgoingPeer +import khipu.network.Peer +import khipu.network.PeerEntity +import khipu.network.PeerManager import khipu.network.Tick import khipu.network.WireDisconnected import khipu.network.handshake.EtcHandshake diff --git a/khipu-eth/src/main/scala/khipu/network/rlpx/package.scala b/khipu-eth/src/main/scala/khipu/network/rlpx/package.scala index 147ada3..1921441 100644 --- a/khipu-eth/src/main/scala/khipu/network/rlpx/package.scala +++ b/khipu-eth/src/main/scala/khipu/network/rlpx/package.scala @@ -1,7 +1,6 @@ package khipu.network import org.spongycastle.crypto.digests.KeccakDigest -import scala.concurrent.duration.FiniteDuration package object rlpx { final case class Secrets( @@ -11,32 +10,4 @@ package object rlpx { egressMac: KeccakDigest, ingressMac: KeccakDigest ) - - trait RLPxConfiguration { - val waitForHandshakeTimeout: FiniteDuration - val waitForTcpAckTimeout: FiniteDuration - } - - trait PeerConfiguration { - val connectRetryDelay: FiniteDuration - val connectMaxRetries: Int - val disconnectPoisonPillTimeout: FiniteDuration - val waitForHelloTimeout: FiniteDuration - val waitForStatusTimeout: FiniteDuration - val waitForChainCheckTimeout: FiniteDuration - val fastSyncHostConfiguration: FastSyncHostConfiguration - val rlpxConfiguration: RLPxConfiguration - val maxPeers: Int - val maxIncomingPeers: Int - val networkId: Int - val updateNodesInitialDelay: FiniteDuration - val updateNodesInterval: FiniteDuration - } - - trait FastSyncHostConfiguration { - val maxBlocksHeadersPerMessage: Int - val maxBlocksBodiesPerMessage: Int - val maxReceiptsPerMessage: Int - val maxMptComponentsPerMessage: Int - } } diff --git a/khipu-eth/src/main/scala/khipu/service/ServiceBoard.scala b/khipu-eth/src/main/scala/khipu/service/ServiceBoard.scala index 4209ec0..f91d63f 100644 --- a/khipu-eth/src/main/scala/khipu/service/ServiceBoard.scala +++ b/khipu-eth/src/main/scala/khipu/service/ServiceBoard.scala @@ -23,10 +23,10 @@ import khipu.crypto import khipu.domain.Blockchain import khipu.ledger.Ledger import khipu.network.ForkResolver +import khipu.network.KnownNodesService.KnownNodesServiceConfig +import khipu.network.PeerManager import khipu.network.p2p.MessageDecoder import khipu.network.p2p.messages.Versions -import khipu.network.rlpx.KnownNodesService.KnownNodesServiceConfig -import khipu.network.rlpx.PeerManager import khipu.network.rlpx.discovery.DiscoveryConfig import khipu.storage.Storages import khipu.storage.datasource.KesqueLmdbDataSources diff --git a/khipu-eth/src/main/scala/khipu/transactions/PendingTransactionsService.scala b/khipu-eth/src/main/scala/khipu/transactions/PendingTransactionsService.scala index 197364d..3fa0a10 100644 --- a/khipu-eth/src/main/scala/khipu/transactions/PendingTransactionsService.scala +++ b/khipu-eth/src/main/scala/khipu/transactions/PendingTransactionsService.scala @@ -15,8 +15,8 @@ import khipu.ProcessedTransactions import khipu.blockchain.sync import khipu.config.TxPoolConfig import khipu.domain.SignedTransaction +import khipu.network.PeerEntity import khipu.network.p2p.messages.CommonMessages.SignedTransactions -import khipu.network.rlpx.PeerEntity import scala.concurrent.duration._ object PendingTransactionsService {