mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-02-22 14:33:06 +01:00
Made relay flag in version message configurable (#3416)
* relay flag in version message made configurable * modified test classes as well * Update configuration.md * reverted few files and cleaned up format * fixed mistake
This commit is contained in:
parent
b2b2ca45db
commit
1c6d728197
6 changed files with 27 additions and 11 deletions
|
@ -16,7 +16,7 @@ class NetworkPayloadTest extends BitcoinSUnitTest {
|
|||
payload.commandName must be(NetworkPayload.versionCommandName)
|
||||
val ipArr = Array(173.toByte, 31.toByte, 39.toByte, 168.toByte)
|
||||
val inet = InetAddress(ipArr)
|
||||
val testVersionMessage = VersionMessage(TestNet3, inet, inet)
|
||||
val testVersionMessage = VersionMessage(TestNet3, inet, inet, relay = false)
|
||||
payload.asInstanceOf[VersionMessage].addressReceiveIpAddress must be(
|
||||
testVersionMessage.addressReceiveIpAddress)
|
||||
payload.asInstanceOf[VersionMessage].addressReceivePort must be(
|
||||
|
|
|
@ -26,7 +26,7 @@ class VersionMessageTest extends BitcoinSUnitTest {
|
|||
val ipArr = Array(173.toByte, 31.toByte, 39.toByte, 168.toByte)
|
||||
val inet = InetAddress(ipArr)
|
||||
|
||||
val versionMessage = VersionMessage(MainNet, inet, inet)
|
||||
val versionMessage = VersionMessage(MainNet, inet, inet, relay = false)
|
||||
assert(versionMessage.addressReceiveServices.nodeNone)
|
||||
versionMessage.addressReceiveIpAddress must be(inet)
|
||||
versionMessage.addressReceivePort must be(MainNet.port)
|
||||
|
|
|
@ -1328,6 +1328,7 @@ trait VersionMessage extends ControlPayload {
|
|||
// what do these fields mean?
|
||||
override def toString(): String =
|
||||
s"VersionMessage($version, $services, epoch=${timestamp.toLong}, receiverServices=${addressReceiveIpAddress.bytes.toHex}, receiverAddress=${addressReceiveIpAddress.bytes.toHex}, receiverPort=$addressReceivePort), userAgent=$userAgent, startHeight=${startHeight.toInt}, relay=$relay)"
|
||||
|
||||
}
|
||||
|
||||
/** @see https://bitcoin.org/en/developer-reference#version
|
||||
|
@ -1391,12 +1392,14 @@ object VersionMessage extends Factory[VersionMessage] {
|
|||
def apply(
|
||||
network: NetworkParameters,
|
||||
receivingIpAddress: InetAddress,
|
||||
transmittingIpAddress: InetAddress): VersionMessage = {
|
||||
transmittingIpAddress: InetAddress,
|
||||
relay: Boolean): VersionMessage = {
|
||||
VersionMessage(network,
|
||||
ProtocolVersion.userAgent,
|
||||
Int32.zero,
|
||||
receivingIpAddress,
|
||||
transmittingIpAddress)
|
||||
transmittingIpAddress,
|
||||
relay)
|
||||
}
|
||||
|
||||
def apply(
|
||||
|
@ -1404,9 +1407,9 @@ object VersionMessage extends Factory[VersionMessage] {
|
|||
userAgent: String,
|
||||
startHeight: Int32,
|
||||
receivingIpAddress: InetAddress,
|
||||
transmittingIpAddress: InetAddress): VersionMessage = {
|
||||
transmittingIpAddress: InetAddress,
|
||||
relay: Boolean): VersionMessage = {
|
||||
val nonce = UInt64.zero
|
||||
val relay = false
|
||||
VersionMessage(
|
||||
version = ProtocolVersion.default,
|
||||
services = ServiceIdentifier.NODE_NONE,
|
||||
|
|
|
@ -163,6 +163,9 @@ bitcoin-s {
|
|||
|
||||
hikari-logging = true
|
||||
hikari-logging-interval = 10 minute
|
||||
|
||||
# whether to have p2p peers relay us unconfirmed txs
|
||||
relay = false
|
||||
}
|
||||
|
||||
proxy {
|
||||
|
|
|
@ -106,6 +106,14 @@ case class NodeAppConfig(
|
|||
}
|
||||
}
|
||||
|
||||
lazy val relay: Boolean = {
|
||||
if (config.hasPath("bitcoin-s.node.relay")) {
|
||||
config.getBoolean("bitcoin-s.node.relay")
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
/** Creates either a neutrino node or a spv node based on the [[NodeAppConfig]] given */
|
||||
def createNode(peer: Peer)(
|
||||
chainConf: ChainAppConfig,
|
||||
|
|
|
@ -64,7 +64,8 @@ case class PeerMessageSender(client: P2PClient)(implicit conf: NodeAppConfig)
|
|||
val versionMsg = VersionMessage(
|
||||
conf.network,
|
||||
InetAddress(client.peer.socket.getAddress.getAddress),
|
||||
InetAddress(local.getAddress))
|
||||
InetAddress(local.getAddress),
|
||||
relay = conf.relay)
|
||||
logger.trace(s"Sending versionMsg=$versionMsg to peer=${client.peer}")
|
||||
sendMsg(versionMsg)
|
||||
}
|
||||
|
@ -78,9 +79,10 @@ case class PeerMessageSender(client: P2PClient)(implicit conf: NodeAppConfig)
|
|||
"/Bitcoin-S:0.7.0/",
|
||||
Int32(height),
|
||||
InetAddress(localhost.getAddress),
|
||||
InetAddress(localhost.getAddress))
|
||||
InetAddress(localhost.getAddress),
|
||||
conf.relay)
|
||||
|
||||
logger.trace(s"Sending versionMsg=$versionMsg to peer=${client.peer}")
|
||||
logger.debug(s"Sending versionMsg=$versionMsg to peer=${client.peer}")
|
||||
sendMsg(versionMsg)
|
||||
}
|
||||
}
|
||||
|
@ -148,7 +150,7 @@ case class PeerMessageSender(client: P2PClient)(implicit conf: NodeAppConfig)
|
|||
|
||||
def sendTransactionMessage(transaction: Transaction): Future[Unit] = {
|
||||
val message = TransactionMessage(transaction)
|
||||
logger.trace(s"Sending txmessage=$message to peer=${client.peer}")
|
||||
logger.debug(s"Sending txmessage=$message to peer=${client.peer}")
|
||||
sendMsg(message)
|
||||
}
|
||||
|
||||
|
@ -159,7 +161,7 @@ case class PeerMessageSender(client: P2PClient)(implicit conf: NodeAppConfig)
|
|||
val inventories =
|
||||
hashes.map(hash => Inventory(typeIdentifier, hash))
|
||||
val message = GetDataMessage(inventories)
|
||||
logger.info(s"Sending getdata=$message to peer=${client.peer}")
|
||||
logger.debug(s"Sending getdata=$message to peer=${client.peer}")
|
||||
sendMsg(message)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue