From cd86d451a5d4837e62666a793c94f136bd13a7b2 Mon Sep 17 00:00:00 2001 From: t-bast Date: Tue, 15 Dec 2020 11:10:23 +0100 Subject: [PATCH 1/3] Fix duplicate implicit btc amount conversions Bitcoin-lib introduces conversions from `Long` to bitcoin amounts. It clashes with the ones previously defined in eclair. Fixes #1632 --- .../scala/fr/acinq/eclair/CoinUtils.scala | 7 --- .../blockchain/electrum/ElectrumWallet.scala | 12 ++-- .../blockchain/electrum/ElectrumWatcher.scala | 7 +-- .../blockchain/fee/FallbackFeeProvider.scala | 2 +- .../eclair/blockchain/fee/FeeProvider.scala | 3 +- .../fr/acinq/eclair/channel/Channel.scala | 7 ++- .../fr/acinq/eclair/channel/Commitments.scala | 13 +---- .../fr/acinq/eclair/db/pg/PgAuditDb.scala | 9 ++- .../eclair/db/sqlite/SqliteAuditDb.scala | 9 ++- .../main/scala/fr/acinq/eclair/io/Peer.scala | 2 +- .../main/scala/fr/acinq/eclair/package.scala | 14 ++--- .../acinq/eclair/payment/PaymentRequest.scala | 2 +- .../relay/PostRestartHtlcCleaner.scala | 2 +- .../acinq/eclair/payment/send/Autoprobe.scala | 2 +- .../send/MultiPartPaymentLifecycle.scala | 8 +-- .../payment/send/PaymentInitiator.scala | 6 +- .../scala/fr/acinq/eclair/router/Graph.scala | 2 +- .../fr/acinq/eclair/router/Monitoring.scala | 7 ++- .../eclair/router/RouteCalculation.scala | 4 +- .../fr/acinq/eclair/router/Validation.scala | 2 +- .../fr/acinq/eclair/wire/FailureMessage.scala | 2 +- .../fr/acinq/eclair/EclairImplSpec.scala | 5 +- .../fr/acinq/eclair/MilliSatoshiSpec.scala | 2 +- .../scala/fr/acinq/eclair/TestConstants.scala | 9 ++- .../acinq/eclair/blockchain/TestWallet.scala | 3 +- .../acinq/eclair/blockchain/WatcherSpec.scala | 3 +- .../bitcoind/BitcoinCoreWalletSpec.scala | 6 +- .../bitcoind/ExtendedBitcoinClientSpec.scala | 4 +- .../blockchain/bitcoind/ZmqWatcherSpec.scala | 7 +-- .../ElectrumWalletSimulatedClientSpec.scala | 9 ++- .../electrum/ElectrumWalletSpec.scala | 11 ++-- .../electrum/ElectrumWatcherSpec.scala | 9 ++- .../blockchain/fee/BitgoFeeProviderSpec.scala | 4 +- .../blockchain/fee/DbFeeProviderSpec.scala | 3 +- .../fee/EarnDotComFeeProviderSpec.scala | 3 +- .../fee/FallbackFeeProviderSpec.scala | 2 +- .../blockchain/fee/FeeProviderSpec.scala | 2 +- .../fee/SmoothFeeProviderSpec.scala | 2 +- .../eclair/channel/CommitmentsSpec.scala | 4 +- .../fr/acinq/eclair/channel/HelpersSpec.scala | 3 +- .../states/StateTestsHelperMethods.scala | 5 +- .../a/WaitForAcceptChannelStateSpec.scala | 4 +- .../a/WaitForOpenChannelStateSpec.scala | 4 +- .../b/WaitForFundingCreatedStateSpec.scala | 4 +- .../c/WaitForFundingConfirmedStateSpec.scala | 5 +- .../c/WaitForFundingLockedStateSpec.scala | 2 +- .../channel/states/e/NormalStateSpec.scala | 3 +- .../channel/states/e/OfflineStateSpec.scala | 2 +- .../channel/states/f/ShutdownStateSpec.scala | 30 ++-------- .../states/g/NegotiatingStateSpec.scala | 5 +- .../channel/states/h/ClosingStateSpec.scala | 7 +-- .../acinq/eclair/db/SqliteAuditDbSpec.scala | 5 +- .../eclair/db/SqliteFeeratesDbSpec.scala | 3 +- .../acinq/eclair/db/SqliteNetworkDbSpec.scala | 56 +++++++++---------- .../eclair/db/SqlitePaymentsDbSpec.scala | 5 +- .../integration/ChannelIntegrationSpec.scala | 7 +-- .../eclair/integration/IntegrationSpec.scala | 7 +-- .../integration/PaymentIntegrationSpec.scala | 7 +-- .../interop/rustytests/RustyTestsSpec.scala | 11 ++-- .../scala/fr/acinq/eclair/io/PeerSpec.scala | 2 +- .../eclair/payment/MultiPartHandlerSpec.scala | 2 +- .../payment/MultiPartPaymentFSMSpec.scala | 2 +- .../eclair/payment/PaymentInitiatorSpec.scala | 5 +- .../eclair/payment/PaymentLifecycleSpec.scala | 5 +- .../eclair/payment/PaymentPacketSpec.scala | 8 +-- .../eclair/payment/PaymentRequestSpec.scala | 12 ++-- .../payment/PostRestartHtlcCleanerSpec.scala | 26 +++++---- .../payment/relay/ChannelRelayerSpec.scala | 2 +- .../payment/relay/NodeRelayerSpec.scala | 5 +- .../AnnouncementsBatchValidationSpec.scala | 4 +- .../acinq/eclair/router/BaseRouterSpec.scala | 2 +- .../router/ChannelRangeQueriesSpec.scala | 6 +- .../fr/acinq/eclair/router/GraphSpec.scala | 4 +- .../eclair/router/NetworkStatsSpec.scala | 4 +- .../eclair/router/RouteCalculationSpec.scala | 4 +- .../fr/acinq/eclair/router/RouterSpec.scala | 6 +- .../transactions/CommitmentSpecSpec.scala | 4 +- .../eclair/transactions/TestVectorsSpec.scala | 4 +- .../transactions/TransactionsSpec.scala | 17 +++--- .../acinq/eclair/wire/ChannelCodecsSpec.scala | 13 ++--- .../wire/ExtendedQueriesCodecsSpec.scala | 2 +- .../wire/FailureMessageCodecsSpec.scala | 2 +- .../wire/LightningMessageCodecsSpec.scala | 6 +- .../acinq/eclair/wire/OnionCodecsSpec.scala | 2 +- .../acinq/eclair/router/FrontRouterSpec.scala | 4 +- .../controllers/OpenChannelController.scala | 9 +-- .../ReceivePaymentController.scala | 2 +- .../fr/acinq/eclair/api/ApiServiceSpec.scala | 5 +- 88 files changed, 241 insertions(+), 313 deletions(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/CoinUtils.scala b/eclair-core/src/main/scala/fr/acinq/eclair/CoinUtils.scala index 34421e38ea..1bd0fdd81b 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/CoinUtils.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/CoinUtils.scala @@ -176,13 +176,6 @@ object CoinUtils extends Logging { * @return a GUICoinAmount */ private def convertAmountToGUIUnit(amount: BtcAmount, unit: CoinUnit): BtcAmountGUILossless = (amount, unit) match { - // amount is msat, so no conversion required - case (a: MilliSatoshi, MSatUnit) => GUIMSat(a.toLong * MSatUnit.factorToMsat) - case (a: MilliSatoshi, SatUnit) => GUISat(a.toLong * MSatUnit.factorToMsat) - case (a: MilliSatoshi, BitUnit) => GUIBits(a.toLong * MSatUnit.factorToMsat) - case (a: MilliSatoshi, MBtcUnit) => GUIMBtc(a.toLong * MSatUnit.factorToMsat) - case (a: MilliSatoshi, BtcUnit) => GUIBtc(a.toLong * MSatUnit.factorToMsat) - // amount is satoshi, convert sat -> msat case (a: Satoshi, MSatUnit) => GUIMSat(a.toLong * SatUnit.factorToMsat) case (a: Satoshi, SatUnit) => GUISat(a.toLong * SatUnit.factorToMsat) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWallet.scala b/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWallet.scala index aa174d7661..d4a13be1b4 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWallet.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWallet.scala @@ -19,8 +19,7 @@ package fr.acinq.eclair.blockchain.electrum import akka.actor.{ActorRef, FSM, PoisonPill, Props} import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} import fr.acinq.bitcoin.DeterministicWallet.{ExtendedPrivateKey, derivePrivateKey, hardened} -import fr.acinq.bitcoin.{Base58, Base58Check, Block, ByteVector32, Crypto, DeterministicWallet, OP_PUSHDATA, OutPoint, SIGHASH_ALL, Satoshi, Script, ScriptElt, ScriptWitness, SigVersion, Transaction, TxIn, TxOut} -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.bitcoin.{Base58, Base58Check, Block, ByteVector32, Crypto, DeterministicWallet, OP_PUSHDATA, OutPoint, SIGHASH_ALL, Satoshi, SatoshiLong, Script, ScriptElt, ScriptWitness, SigVersion, Transaction, TxIn, TxOut} import fr.acinq.eclair.blockchain.bitcoind.rpc.Error import fr.acinq.eclair.blockchain.electrum.ElectrumClient._ import fr.acinq.eclair.blockchain.electrum.db.{HeaderDb, WalletDb} @@ -33,7 +32,8 @@ import scala.annotation.tailrec import scala.util.{Failure, Success, Try} /** - * Simple electrum wallet + * Simple electrum wallet. + * See the documentation at https://electrumx-spesmilo.readthedocs.io/en/latest/ * * Typical workflow: * @@ -43,10 +43,6 @@ import scala.util.{Failure, Success, Try} * client ---- history ----> wallet * client <--- ask tx ----- wallet * client ---- tx ----> wallet - * - * @param seed - * @param client - * @param params */ class ElectrumWallet(seed: ByteVector, client: ActorRef, params: ElectrumWallet.WalletParameters) extends FSM[ElectrumWallet.State, ElectrumWallet.Data] { @@ -894,7 +890,7 @@ object ElectrumWallet { * @param tx input transaction * @return an option: * - Some(received, sent, fee) where sent if what the tx spends from us, received is what the tx sends to us, - * and fee is the fee for the tx) tuple where sent if what the tx spends from us, and received is what the tx sends to us + * and fee is the fee for the tx) tuple where sent if what the tx spends from us, and received is what the tx sends to us * - None if we are missing one or more parent txs */ def computeTransactionDelta(tx: Transaction): Option[(Satoshi, Satoshi, Option[Satoshi])] = { diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWatcher.scala b/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWatcher.scala index 5a1fb2d5d9..3dab3151c2 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWatcher.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWatcher.scala @@ -16,16 +16,15 @@ package fr.acinq.eclair.blockchain.electrum -import java.util.concurrent.atomic.AtomicLong - import akka.actor.{Actor, ActorLogging, ActorRef, Stash, Terminated} -import fr.acinq.bitcoin.{BlockHeader, ByteVector32, Script, Transaction, TxIn, TxOut} +import fr.acinq.bitcoin.{BlockHeader, ByteVector32, SatoshiLong, Script, Transaction, TxIn, TxOut} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.electrum.ElectrumClient.computeScriptHash import fr.acinq.eclair.channel.{BITCOIN_FUNDING_DEPTHOK, BITCOIN_PARENT_TX_CONFIRMED} import fr.acinq.eclair.transactions.Scripts -import fr.acinq.eclair.{LongToBtcAmount, ShortChannelId, TxCoordinates} +import fr.acinq.eclair.{ShortChannelId, TxCoordinates} +import java.util.concurrent.atomic.AtomicLong import scala.collection.immutable.{Queue, SortedMap} diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/fee/FallbackFeeProvider.scala b/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/fee/FallbackFeeProvider.scala index d3eec6e4f2..80b064bd6a 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/fee/FallbackFeeProvider.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/fee/FallbackFeeProvider.scala @@ -16,7 +16,7 @@ package fr.acinq.eclair.blockchain.fee -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.bitcoin.SatoshiLong import grizzled.slf4j.Logging import scala.concurrent.{ExecutionContext, Future} diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/fee/FeeProvider.scala b/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/fee/FeeProvider.scala index 3c3e33c560..633421a79b 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/fee/FeeProvider.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/blockchain/fee/FeeProvider.scala @@ -16,8 +16,7 @@ package fr.acinq.eclair.blockchain.fee -import fr.acinq.bitcoin.Satoshi -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.bitcoin.{Satoshi, SatoshiLong} import scala.concurrent.Future diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/channel/Channel.scala b/eclair-core/src/main/scala/fr/acinq/eclair/channel/Channel.scala index de1da24a43..ba64cc03ac 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/channel/Channel.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/channel/Channel.scala @@ -20,7 +20,7 @@ import akka.actor.{ActorRef, FSM, OneForOneStrategy, Props, Status, SupervisorSt import akka.event.Logging.MDC import akka.pattern.pipe import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.{ByteVector32, OutPoint, Satoshi, Script, ScriptFlags, Transaction} +import fr.acinq.bitcoin.{ByteVector32, OutPoint, Satoshi, SatoshiLong, Script, ScriptFlags, Transaction} import fr.acinq.eclair.Logs.LogCategory import fr.acinq.eclair._ import fr.acinq.eclair.blockchain._ @@ -751,7 +751,7 @@ class Channel(val nodeParams: NodeParams, val wallet: EclairWallet, remoteNodeId context.system.eventStream.publish(ChannelSignatureSent(self, commitments1)) // we expect a quick response from our peer setTimer(RevocationTimeout.toString, RevocationTimeout(commitments1.remoteCommit.index, peer), timeout = nodeParams.revocationTimeout, repeat = false) - handleCommandSuccess(c, d.copy(commitments = commitments1)) storing() sending commit acking(commitments1.localChanges.signed) + handleCommandSuccess(c, d.copy(commitments = commitments1)) storing() sending commit acking (commitments1.localChanges.signed) case Left(cause) => handleCommandError(cause, c) } case Left(waitForRevocation) => @@ -1084,7 +1084,7 @@ class Channel(val nodeParams: NodeParams, val wallet: EclairWallet, remoteNodeId context.system.eventStream.publish(ChannelSignatureSent(self, commitments1)) // we expect a quick response from our peer setTimer(RevocationTimeout.toString, RevocationTimeout(commitments1.remoteCommit.index, peer), timeout = nodeParams.revocationTimeout, repeat = false) - handleCommandSuccess(c, d.copy(commitments = commitments1)) storing() sending commit acking(commitments1.localChanges.signed) + handleCommandSuccess(c, d.copy(commitments = commitments1)) storing() sending commit acking (commitments1.localChanges.signed) case Left(cause) => handleCommandError(cause, c) } case Left(waitForRevocation) => @@ -2385,6 +2385,7 @@ class Channel(val nodeParams: NodeParams, val wallet: EclairWallet, remoteNodeId /** * We don't acknowledge htlc commands immediately, because we send them to the channel as soon as possible, and they * may not yet have been written to the database. + * * @param cmd fail/fulfill command that has been processed */ def acking(channelId: ByteVector32, cmd: HtlcSettlementCommand): FSM.State[fr.acinq.eclair.channel.State, Data] = { diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/channel/Commitments.scala b/eclair-core/src/main/scala/fr/acinq/eclair/channel/Commitments.scala index 56755978ce..e78a369b01 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/channel/Commitments.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/channel/Commitments.scala @@ -18,7 +18,7 @@ package fr.acinq.eclair.channel import akka.event.LoggingAdapter import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey, sha256} -import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, Satoshi} +import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, Satoshi, SatoshiLong} import fr.acinq.eclair._ import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, OnChainFeeConf} import fr.acinq.eclair.channel.Monitoring.Metrics @@ -46,27 +46,20 @@ case class RemoteCommit(index: Long, spec: CommitmentSpec, txid: ByteVector32, r case class WaitingForRevocation(nextRemoteCommit: RemoteCommit, sent: CommitSig, sentAfterLocalCommitIndex: Long, reSignAsap: Boolean = false) // @formatter:on +// @formatter:off trait AbstractCommitments { def getOutgoingHtlcCrossSigned(htlcId: Long): Option[UpdateAddHtlc] - def getIncomingHtlcCrossSigned(htlcId: Long): Option[UpdateAddHtlc] - def localNodeId: PublicKey - def remoteNodeId: PublicKey - def capacity: Satoshi - def availableBalanceForReceive: MilliSatoshi - def availableBalanceForSend: MilliSatoshi - def originChannels: Map[Long, Origin] - def channelId: ByteVector32 - def announceChannel: Boolean } +// @formatter:on /** * about remoteNextCommitInfo: diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/db/pg/PgAuditDb.scala b/eclair-core/src/main/scala/fr/acinq/eclair/db/pg/PgAuditDb.scala index cc49257497..9e6654b8ec 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/db/pg/PgAuditDb.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/db/pg/PgAuditDb.scala @@ -16,18 +16,17 @@ package fr.acinq.eclair.db.pg -import java.util.UUID - import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{ByteVector32, Satoshi} +import fr.acinq.bitcoin.{ByteVector32, Satoshi, SatoshiLong} import fr.acinq.eclair.channel.{ChannelErrorOccurred, LocalError, NetworkFeePaid, RemoteError} import fr.acinq.eclair.db.Monitoring.Metrics.withMetrics import fr.acinq.eclair.db._ import fr.acinq.eclair.payment._ -import fr.acinq.eclair.{LongToBtcAmount, MilliSatoshi} +import fr.acinq.eclair.{MilliSatoshi, MilliSatoshiLong} import grizzled.slf4j.Logging -import javax.sql.DataSource +import java.util.UUID +import javax.sql.DataSource import scala.collection.immutable.Queue class PgAuditDb(implicit ds: DataSource) extends AuditDb with Logging { diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/db/sqlite/SqliteAuditDb.scala b/eclair-core/src/main/scala/fr/acinq/eclair/db/sqlite/SqliteAuditDb.scala index 082f8ff8fe..569b47a49b 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/db/sqlite/SqliteAuditDb.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/db/sqlite/SqliteAuditDb.scala @@ -16,18 +16,17 @@ package fr.acinq.eclair.db.sqlite -import java.sql.{Connection, Statement} -import java.util.UUID - import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.{ByteVector32, Satoshi} +import fr.acinq.bitcoin.{ByteVector32, Satoshi, SatoshiLong} import fr.acinq.eclair.channel.{ChannelErrorOccurred, LocalError, NetworkFeePaid, RemoteError} import fr.acinq.eclair.db.Monitoring.Metrics.withMetrics import fr.acinq.eclair.db._ import fr.acinq.eclair.payment._ -import fr.acinq.eclair.{LongToBtcAmount, MilliSatoshi} +import fr.acinq.eclair.{MilliSatoshi, MilliSatoshiLong} import grizzled.slf4j.Logging +import java.sql.{Connection, Statement} +import java.util.UUID import scala.collection.immutable.Queue class SqliteAuditDb(sqlite: Connection) extends AuditDb with Logging { diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/io/Peer.scala b/eclair-core/src/main/scala/fr/acinq/eclair/io/Peer.scala index e62526a8c9..e45e3915c4 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/io/Peer.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/io/Peer.scala @@ -22,7 +22,7 @@ import akka.event.{BusLogging, DiagnosticLoggingAdapter} import akka.util.Timeout import com.google.common.net.HostAndPort import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{ByteVector32, DeterministicWallet, Satoshi, Script} +import fr.acinq.bitcoin.{ByteVector32, DeterministicWallet, Satoshi, SatoshiLong, Script} import fr.acinq.eclair.Features.Wumbo import fr.acinq.eclair.Logs.LogCategory import fr.acinq.eclair.blockchain.EclairWallet diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/package.scala b/eclair-core/src/main/scala/fr/acinq/eclair/package.scala index bd7d4ca02a..f0fb8a71d4 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/package.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/package.scala @@ -16,13 +16,12 @@ package fr.acinq -import java.security.SecureRandom - import fr.acinq.bitcoin.Crypto.PrivateKey import fr.acinq.bitcoin._ import scodec.Attempt import scodec.bits.{BitVector, ByteVector} +import java.security.SecureRandom import scala.util.{Failure, Success, Try} package object eclair { @@ -98,13 +97,8 @@ package object eclair { } } - implicit class LongToBtcAmount(l: Long) { - // @formatter:off - def msat: MilliSatoshi = MilliSatoshi(l) - def sat: Satoshi = Satoshi(l) - def mbtc: MilliBtc = MilliBtc(l) - def btc: Btc = Btc(l) - // @formatter:on + implicit class MilliSatoshiLong(private val n: Long) extends AnyVal { + def msat = MilliSatoshi(n) } // We implement Numeric to take advantage of operations such as sum, sort or min/max on iterables. @@ -120,7 +114,7 @@ package object eclair { override def toFloat(x: MilliSatoshi): Float = x.toLong override def toDouble(x: MilliSatoshi): Double = x.toLong override def compare(x: MilliSatoshi, y: MilliSatoshi): Int = x.compare(y) - override def parseString(str: String): Option[MilliSatoshi] = ??? + override def parseString(str: String): Option[MilliSatoshi] = None // @formatter:on } diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/payment/PaymentRequest.scala b/eclair-core/src/main/scala/fr/acinq/eclair/payment/PaymentRequest.scala index 504f557b7a..2fea1bf16f 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/payment/PaymentRequest.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/payment/PaymentRequest.scala @@ -19,7 +19,7 @@ package fr.acinq.eclair.payment import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} import fr.acinq.bitcoin.{Base58, Base58Check, Bech32, Block, ByteVector32, ByteVector64, Crypto} import fr.acinq.eclair.payment.PaymentRequest._ -import fr.acinq.eclair.{CltvExpiryDelta, FeatureSupport, Features, LongToBtcAmount, MilliSatoshi, NodeParams, ShortChannelId, randomBytes32} +import fr.acinq.eclair.{CltvExpiryDelta, FeatureSupport, Features, MilliSatoshi, MilliSatoshiLong, NodeParams, ShortChannelId, randomBytes32} import scodec.bits.{BitVector, ByteOrdering, ByteVector} import scodec.codecs.{list, ubyte} import scodec.{Codec, Err} diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/payment/relay/PostRestartHtlcCleaner.scala b/eclair-core/src/main/scala/fr/acinq/eclair/payment/relay/PostRestartHtlcCleaner.scala index e67e8b8733..65c8227dc6 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/payment/relay/PostRestartHtlcCleaner.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/payment/relay/PostRestartHtlcCleaner.scala @@ -28,7 +28,7 @@ import fr.acinq.eclair.payment.Monitoring.Tags import fr.acinq.eclair.payment.{ChannelPaymentRelayed, IncomingPacket, PaymentFailed, PaymentSent} import fr.acinq.eclair.transactions.DirectedHtlc.outgoing import fr.acinq.eclair.wire.{FailureMessage, TemporaryNodeFailure, UpdateAddHtlc} -import fr.acinq.eclair.{CustomCommitmentsPlugin, LongToBtcAmount, NodeParams} +import fr.acinq.eclair.{CustomCommitmentsPlugin, MilliSatoshiLong, NodeParams} import scala.concurrent.Promise import scala.util.Try diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/Autoprobe.scala b/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/Autoprobe.scala index 76ef89b480..806dd17545 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/Autoprobe.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/Autoprobe.scala @@ -22,7 +22,7 @@ import fr.acinq.eclair.crypto.Sphinx.DecryptedFailurePacket import fr.acinq.eclair.payment.{PaymentEvent, PaymentFailed, RemoteFailure} import fr.acinq.eclair.router.{Announcements, Router} import fr.acinq.eclair.wire.IncorrectOrUnknownPaymentDetails -import fr.acinq.eclair.{LongToBtcAmount, NodeParams, randomBytes32, secureRandom} +import fr.acinq.eclair.{MilliSatoshiLong, NodeParams, randomBytes32, secureRandom} import scala.concurrent.duration._ diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/MultiPartPaymentLifecycle.scala b/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/MultiPartPaymentLifecycle.scala index a4fc2b3795..3412e69521 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/MultiPartPaymentLifecycle.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/MultiPartPaymentLifecycle.scala @@ -16,9 +16,6 @@ package fr.acinq.eclair.payment.send -import java.util.UUID -import java.util.concurrent.TimeUnit - import akka.actor.{ActorRef, FSM, Props, Status} import akka.event.Logging.MDC import fr.acinq.bitcoin.ByteVector32 @@ -34,10 +31,13 @@ import fr.acinq.eclair.payment.send.PaymentLifecycle.SendPaymentToRoute import fr.acinq.eclair.router.RouteCalculation import fr.acinq.eclair.router.Router._ import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{CltvExpiry, FSMDiagnosticActorLogging, Logs, LongToBtcAmount, MilliSatoshi, NodeParams} +import fr.acinq.eclair.{CltvExpiry, FSMDiagnosticActorLogging, Logs, MilliSatoshi, MilliSatoshiLong, NodeParams} import kamon.Kamon import kamon.context.Context +import java.util.UUID +import java.util.concurrent.TimeUnit + /** * Created by t-bast on 18/07/2019. */ diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/PaymentInitiator.scala b/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/PaymentInitiator.scala index f15b816528..88b9044497 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/PaymentInitiator.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/payment/send/PaymentInitiator.scala @@ -16,8 +16,6 @@ package fr.acinq.eclair.payment.send -import java.util.UUID - import akka.actor.{Actor, ActorLogging, ActorRef, Props} import fr.acinq.bitcoin.ByteVector32 import fr.acinq.bitcoin.Crypto.PublicKey @@ -34,7 +32,9 @@ import fr.acinq.eclair.router.RouteNotFound import fr.acinq.eclair.router.Router._ import fr.acinq.eclair.wire.Onion.FinalLegacyPayload import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, LongToBtcAmount, MilliSatoshi, NodeParams, randomBytes32} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, MilliSatoshi, MilliSatoshiLong, NodeParams, randomBytes32} + +import java.util.UUID /** * Created by PM on 29/08/2016. diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/router/Graph.scala b/eclair-core/src/main/scala/fr/acinq/eclair/router/Graph.scala index 75aeb144c7..e043a065e9 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/router/Graph.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/router/Graph.scala @@ -17,7 +17,7 @@ package fr.acinq.eclair.router import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{Btc, MilliBtc, Satoshi} +import fr.acinq.bitcoin.{Btc, MilliBtc, Satoshi, SatoshiLong} import fr.acinq.eclair._ import fr.acinq.eclair.router.Graph.GraphStructure.{DirectedGraph, GraphEdge} import fr.acinq.eclair.router.Router._ diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/router/Monitoring.scala b/eclair-core/src/main/scala/fr/acinq/eclair/router/Monitoring.scala index b6fc2513c4..c1067596f4 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/router/Monitoring.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/router/Monitoring.scala @@ -16,9 +16,10 @@ package fr.acinq.eclair.router +import fr.acinq.bitcoin.{BtcDouble, MilliBtcDouble, SatoshiLong} import fr.acinq.eclair.router.Router.GossipDecision import fr.acinq.eclair.wire.ChannelUpdate -import fr.acinq.eclair.{LongToBtcAmount, MilliSatoshi, getSimpleClassName} +import fr.acinq.eclair.{MilliSatoshi, getSimpleClassName} import kamon.Kamon import kamon.metric.{Counter, MeasurementUnit} @@ -92,8 +93,8 @@ object Monitoring { val reckless = "1 BTC < ???" amount match { case amount if amount < 1000.sat => tiny - case amount if amount < 1.mbtc => small - case amount if amount < 100.mbtc => medium + case amount if amount < 1.millibtc => small + case amount if amount < 100.millibtc => medium case amount if amount < 1.btc => big case _ => reckless } diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/router/RouteCalculation.scala b/eclair-core/src/main/scala/fr/acinq/eclair/router/RouteCalculation.scala index 9231a82f27..8fbaf558d8 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/router/RouteCalculation.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/router/RouteCalculation.scala @@ -19,8 +19,9 @@ package fr.acinq.eclair.router import akka.actor.{ActorContext, ActorRef, Status} import akka.event.DiagnosticLoggingAdapter import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Satoshi} +import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Satoshi, SatoshiLong} import fr.acinq.eclair.Logs.LogCategory +import fr.acinq.eclair._ import fr.acinq.eclair.payment.PaymentRequest.ExtraHop import fr.acinq.eclair.router.Graph.GraphStructure.DirectedGraph.graphEdgeToHop import fr.acinq.eclair.router.Graph.GraphStructure.{DirectedGraph, GraphEdge} @@ -28,7 +29,6 @@ import fr.acinq.eclair.router.Graph.{RichWeight, RoutingHeuristics, WeightRatios import fr.acinq.eclair.router.Monitoring.{Metrics, Tags} import fr.acinq.eclair.router.Router._ import fr.acinq.eclair.wire.ChannelUpdate -import fr.acinq.eclair.{ShortChannelId, _} import kamon.tag.TagSet import scala.annotation.tailrec diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/router/Validation.scala b/eclair-core/src/main/scala/fr/acinq/eclair/router/Validation.scala index 959890baa5..6a214952e7 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/router/Validation.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/router/Validation.scala @@ -28,7 +28,7 @@ import fr.acinq.eclair.router.Monitoring.Metrics import fr.acinq.eclair.router.Router._ import fr.acinq.eclair.transactions.Scripts import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{Logs, LongToBtcAmount, NodeParams, ShortChannelId, TxCoordinates} +import fr.acinq.eclair.{Logs, MilliSatoshiLong, NodeParams, ShortChannelId, TxCoordinates} import kamon.Kamon object Validation { diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/wire/FailureMessage.scala b/eclair-core/src/main/scala/fr/acinq/eclair/wire/FailureMessage.scala index 65db399166..318d90d0f5 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/wire/FailureMessage.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/wire/FailureMessage.scala @@ -21,7 +21,7 @@ import fr.acinq.eclair.crypto.Mac32 import fr.acinq.eclair.wire.CommonCodecs._ import fr.acinq.eclair.wire.FailureMessageCodecs.failureMessageCodec import fr.acinq.eclair.wire.LightningMessageCodecs.{channelUpdateCodec, meteredLightningMessageCodec} -import fr.acinq.eclair.{CltvExpiry, LongToBtcAmount, MilliSatoshi, UInt64} +import fr.acinq.eclair.{CltvExpiry, MilliSatoshi, MilliSatoshiLong, UInt64} import scodec.codecs._ import scodec.{Attempt, Codec} diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/EclairImplSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/EclairImplSpec.scala index 66b629f277..3fa8324992 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/EclairImplSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/EclairImplSpec.scala @@ -16,13 +16,11 @@ package fr.acinq.eclair -import java.util.UUID - import akka.actor.ActorRef import akka.testkit.TestProbe import akka.util.Timeout import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Crypto} +import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Crypto, SatoshiLong} import fr.acinq.eclair.TestConstants._ import fr.acinq.eclair.blockchain.TestWallet import fr.acinq.eclair.blockchain.fee.{FeeratePerByte, FeeratePerKw} @@ -44,6 +42,7 @@ import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, ParallelTestExecution} import scodec.bits._ +import java.util.UUID import scala.concurrent.Await import scala.concurrent.duration._ import scala.util.Success diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/MilliSatoshiSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/MilliSatoshiSpec.scala index ed65f2d389..89c50e5266 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/MilliSatoshiSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/MilliSatoshiSpec.scala @@ -16,7 +16,7 @@ package fr.acinq.eclair -import fr.acinq.bitcoin.Satoshi +import fr.acinq.bitcoin.{Satoshi, SatoshiLong} import org.scalatest.funsuite.AnyFunSuite /** diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/TestConstants.scala b/eclair-core/src/test/scala/fr/acinq/eclair/TestConstants.scala index 8fb214bb2e..ce2f3f884b 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/TestConstants.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/TestConstants.scala @@ -16,13 +16,9 @@ package fr.acinq.eclair -import java.sql.{Connection, DriverManager, Statement} -import java.util.UUID -import java.util.concurrent.atomic.AtomicLong - import com.opentable.db.postgres.embedded.EmbeddedPostgres import fr.acinq.bitcoin.Crypto.PrivateKey -import fr.acinq.bitcoin.{Block, ByteVector32, Script} +import fr.acinq.bitcoin.{Block, ByteVector32, SatoshiLong, Script} import fr.acinq.eclair.FeatureSupport.Optional import fr.acinq.eclair.Features._ import fr.acinq.eclair.NodeParams.BITCOIND @@ -38,6 +34,9 @@ import fr.acinq.eclair.wire.{Color, EncodingType, NodeAddress} import org.scalatest.Tag import scodec.bits.ByteVector +import java.sql.{Connection, DriverManager, Statement} +import java.util.UUID +import java.util.concurrent.atomic.AtomicLong import scala.concurrent.duration._ /** diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/TestWallet.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/TestWallet.scala index b28d36b6eb..9ee0c508bf 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/TestWallet.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/TestWallet.scala @@ -17,8 +17,7 @@ package fr.acinq.eclair.blockchain import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{ByteVector32, Crypto, OutPoint, Satoshi, Transaction, TxIn, TxOut} -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.bitcoin.{ByteVector32, Crypto, OutPoint, Satoshi, SatoshiLong, Transaction, TxIn, TxOut} import fr.acinq.eclair.blockchain.fee.FeeratePerKw import scodec.bits._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/WatcherSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/WatcherSpec.scala index edb68cfe36..cf80db636e 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/WatcherSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/WatcherSpec.scala @@ -19,8 +19,7 @@ package fr.acinq.eclair.blockchain import akka.actor.{ActorRef, ActorSystem} import akka.testkit.TestProbe import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.{Base58, OutPoint, SIGHASH_ALL, Satoshi, Script, ScriptFlags, ScriptWitness, SigVersion, Transaction, TxIn, TxOut} -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.bitcoin.{Base58, OutPoint, SIGHASH_ALL, Satoshi, SatoshiLong, Script, ScriptFlags, ScriptWitness, SigVersion, Transaction, TxIn, TxOut} import fr.acinq.eclair.blockchain.bitcoind.BitcoindService.BitcoinReq import org.json4s.JsonAST.{JString, JValue} import org.scalatest.funsuite.AnyFunSuiteLike diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/BitcoinCoreWalletSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/BitcoinCoreWalletSpec.scala index 11eb1aada0..317c248e5c 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/BitcoinCoreWalletSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/BitcoinCoreWalletSpec.scala @@ -21,14 +21,14 @@ import akka.pattern.pipe import akka.testkit.TestProbe import com.typesafe.config.ConfigFactory import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{Block, Btc, ByteVector32, MilliBtc, OutPoint, Satoshi, Script, Transaction, TxIn, TxOut} +import fr.acinq.bitcoin.{Block, Btc, BtcDouble, ByteVector32, MilliBtc, MilliBtcDouble, OutPoint, Satoshi, SatoshiLong, Script, Transaction, TxIn, TxOut} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.bitcoind.BitcoinCoreWallet.{FundTransactionResponse, SignTransactionResponse, WalletTransaction} import fr.acinq.eclair.blockchain.bitcoind.BitcoindService.BitcoinReq import fr.acinq.eclair.blockchain.bitcoind.rpc.{BasicBitcoinJsonRPCClient, ExtendedBitcoinClient, JsonRPCError} import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.transactions.Scripts -import fr.acinq.eclair.{LongToBtcAmount, TestKitBaseClass, addressToPublicKeyScript, randomKey} +import fr.acinq.eclair.{TestKitBaseClass, addressToPublicKeyScript, randomKey} import grizzled.slf4j.Logging import org.json4s.JsonAST.{JString, _} import org.json4s.{DefaultFormats, Formats} @@ -358,7 +358,7 @@ class BitcoinCoreWalletSpec extends TestKitBaseClass with BitcoindService with A assert(initialBalance.confirmed > 50.btc.toSatoshi) val address = "n2YKngjUp139nkjKvZGnfLRN6HzzYxJsje" - val amount = 150.mbtc.toSatoshi + val amount = 150.millibtc.toSatoshi wallet.sendToAddress(address, amount, 3).pipeTo(sender.ref) val txid = sender.expectMsgType[ByteVector32] diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/ExtendedBitcoinClientSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/ExtendedBitcoinClientSpec.scala index a6da24cc2f..71698064c4 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/ExtendedBitcoinClientSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/ExtendedBitcoinClientSpec.scala @@ -20,10 +20,10 @@ import akka.actor.Status.Failure import akka.pattern.pipe import akka.testkit.TestProbe import com.typesafe.config.ConfigFactory -import fr.acinq.bitcoin.{Btc, Transaction} +import fr.acinq.bitcoin.{Btc, BtcDouble, Transaction} +import fr.acinq.eclair.TestKitBaseClass import fr.acinq.eclair.blockchain.bitcoind.BitcoindService.BitcoinReq import fr.acinq.eclair.blockchain.bitcoind.rpc.{BasicBitcoinJsonRPCClient, ExtendedBitcoinClient} -import fr.acinq.eclair.{LongToBtcAmount, TestKitBaseClass} import grizzled.slf4j.Logging import org.json4s.JsonAST._ import org.json4s.{DefaultFormats, Formats} diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/ZmqWatcherSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/ZmqWatcherSpec.scala index 05b75ee617..d3d1d6bdb0 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/ZmqWatcherSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/bitcoind/ZmqWatcherSpec.scala @@ -16,13 +16,11 @@ package fr.acinq.eclair.blockchain.bitcoind -import java.util.concurrent.atomic.AtomicLong - import akka.Done import akka.actor.{ActorRef, Props} import akka.pattern.pipe import akka.testkit.{TestKit, TestProbe} -import fr.acinq.bitcoin.{OutPoint, Script, Transaction, TxOut} +import fr.acinq.bitcoin.{OutPoint, SatoshiLong, Script, Transaction, TxOut} import fr.acinq.eclair.blockchain.WatcherSpec._ import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.bitcoind.BitcoinCoreWallet.{FundTransactionResponse, SignTransactionResponse} @@ -32,12 +30,13 @@ import fr.acinq.eclair.blockchain.bitcoind.rpc.ExtendedBitcoinClient import fr.acinq.eclair.blockchain.bitcoind.zmq.ZMQActor import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.channel.{BITCOIN_FUNDING_DEPTHOK, BITCOIN_FUNDING_SPENT} -import fr.acinq.eclair.{LongToBtcAmount, TestKitBaseClass, randomBytes32} +import fr.acinq.eclair.{TestKitBaseClass, randomBytes32} import grizzled.slf4j.Logging import org.json4s.JsonAST.JValue import org.scalatest.BeforeAndAfterAll import org.scalatest.funsuite.AnyFunSuiteLike +import java.util.concurrent.atomic.AtomicLong import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Promise import scala.concurrent.duration._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWalletSimulatedClientSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWalletSimulatedClientSpec.scala index b068e68d85..732238379e 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWalletSimulatedClientSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWalletSimulatedClientSpec.scala @@ -16,23 +16,22 @@ package fr.acinq.eclair.blockchain.electrum -import java.net.InetSocketAddress -import java.sql.DriverManager - import akka.actor.{ActorRef, Terminated} import akka.testkit import akka.testkit.{TestActor, TestFSMRef, TestProbe} import fr.acinq.bitcoin.Crypto.PublicKey import fr.acinq.bitcoin.DeterministicWallet.derivePrivateKey -import fr.acinq.bitcoin.{Block, BlockHeader, ByteVector32, Crypto, DeterministicWallet, MnemonicCode, OutPoint, Satoshi, Script, Transaction, TxIn, TxOut} +import fr.acinq.bitcoin.{Block, BlockHeader, ByteVector32, Crypto, DeterministicWallet, MnemonicCode, OutPoint, Satoshi, SatoshiLong, Script, Transaction, TxIn, TxOut} +import fr.acinq.eclair.TestKitBaseClass import fr.acinq.eclair.blockchain.bitcoind.rpc.Error import fr.acinq.eclair.blockchain.electrum.ElectrumClient._ import fr.acinq.eclair.blockchain.electrum.ElectrumWallet._ import fr.acinq.eclair.blockchain.electrum.db.sqlite.SqliteWalletDb -import fr.acinq.eclair.{LongToBtcAmount, TestKitBaseClass} import org.scalatest.funsuite.AnyFunSuiteLike import scodec.bits.ByteVector +import java.net.InetSocketAddress +import java.sql.DriverManager import scala.annotation.tailrec import scala.concurrent.duration._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWalletSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWalletSpec.scala index e32f40a28b..32fa168e77 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWalletSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWalletSpec.scala @@ -16,14 +16,11 @@ package fr.acinq.eclair.blockchain.electrum -import java.net.InetSocketAddress -import java.sql.DriverManager -import java.util.concurrent.atomic.AtomicLong - import akka.actor.{ActorRef, Props} import akka.testkit.{TestKit, TestProbe} import com.whisk.docker.DockerReadyChecker -import fr.acinq.bitcoin.{Block, Btc, ByteVector32, DeterministicWallet, MnemonicCode, OutPoint, Satoshi, Script, ScriptFlags, ScriptWitness, SigVersion, Transaction, TxIn, TxOut} +import fr.acinq.bitcoin.{Block, Btc, BtcDouble, ByteVector32, DeterministicWallet, MnemonicCode, OutPoint, Satoshi, SatoshiLong, Script, ScriptFlags, ScriptWitness, SigVersion, Transaction, TxIn, TxOut} +import fr.acinq.eclair.TestKitBaseClass import fr.acinq.eclair.blockchain.bitcoind.BitcoinCoreWallet.{FundTransactionResponse, SignTransactionResponse} import fr.acinq.eclair.blockchain.bitcoind.BitcoindService.BitcoinReq import fr.acinq.eclair.blockchain.bitcoind.rpc.ExtendedBitcoinClient @@ -33,7 +30,6 @@ import fr.acinq.eclair.blockchain.electrum.ElectrumClientPool.ElectrumServerAddr import fr.acinq.eclair.blockchain.electrum.db.sqlite.SqliteWalletDb import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.transactions.{Scripts, Transactions} -import fr.acinq.eclair.{LongToBtcAmount, TestKitBaseClass} import fr.acinq.{bitcoin, eclair} import grizzled.slf4j.Logging import org.json4s.JsonAST.{JDecimal, JString, JValue} @@ -41,6 +37,9 @@ import org.scalatest.BeforeAndAfterAll import org.scalatest.funsuite.AnyFunSuiteLike import scodec.bits.ByteVector +import java.net.InetSocketAddress +import java.sql.DriverManager +import java.util.concurrent.atomic.AtomicLong import scala.concurrent.Await import scala.concurrent.duration._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWatcherSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWatcherSpec.scala index 5d9d2f97d3..de7295e01c 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWatcherSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/electrum/ElectrumWatcherSpec.scala @@ -16,12 +16,9 @@ package fr.acinq.eclair.blockchain.electrum -import java.net.InetSocketAddress -import java.util.concurrent.atomic.AtomicLong - import akka.actor.Props import akka.testkit.{TestKit, TestProbe} -import fr.acinq.bitcoin.{ByteVector32, Transaction, TxIn} +import fr.acinq.bitcoin.{ByteVector32, SatoshiLong, Transaction, TxIn} import fr.acinq.eclair.blockchain.WatcherSpec._ import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.bitcoind.BitcoindService @@ -30,13 +27,15 @@ import fr.acinq.eclair.blockchain.bitcoind.rpc.ExtendedBitcoinClient import fr.acinq.eclair.blockchain.electrum.ElectrumClient.SSL import fr.acinq.eclair.blockchain.electrum.ElectrumClientPool.ElectrumServerAddress import fr.acinq.eclair.channel.{BITCOIN_FUNDING_DEPTHOK, BITCOIN_FUNDING_SPENT} -import fr.acinq.eclair.{LongToBtcAmount, TestKitBaseClass, randomBytes32} +import fr.acinq.eclair.{TestKitBaseClass, randomBytes32} import grizzled.slf4j.Logging import org.json4s.JsonAST.JValue import org.scalatest.BeforeAndAfterAll import org.scalatest.funsuite.AnyFunSuiteLike import scodec.bits._ +import java.net.InetSocketAddress +import java.util.concurrent.atomic.AtomicLong import scala.concurrent.duration._ class ElectrumWatcherSpec extends TestKitBaseClass with AnyFunSuiteLike with BitcoindService with ElectrumxService with BeforeAndAfterAll with Logging { diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/BitgoFeeProviderSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/BitgoFeeProviderSpec.scala index dfe5ce6ef5..f1a43aead9 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/BitgoFeeProviderSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/BitgoFeeProviderSpec.scala @@ -19,8 +19,8 @@ package fr.acinq.eclair.blockchain.fee import akka.actor.ActorSystem import akka.util.Timeout import com.softwaremill.sttp.okhttp.OkHttpFutureBackend -import fr.acinq.bitcoin.Block -import fr.acinq.eclair.{LongToBtcAmount, TestTags} +import fr.acinq.bitcoin.{Block, SatoshiLong} +import fr.acinq.eclair.TestTags import org.json4s.DefaultFormats import org.scalatest.funsuite.AnyFunSuite diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/DbFeeProviderSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/DbFeeProviderSpec.scala index 3daaae5dd9..acb38d7016 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/DbFeeProviderSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/DbFeeProviderSpec.scala @@ -17,8 +17,9 @@ package fr.acinq.eclair.blockchain.fee import akka.util.Timeout +import fr.acinq.bitcoin.SatoshiLong +import fr.acinq.eclair.TestConstants import fr.acinq.eclair.db.sqlite.SqliteFeeratesDb -import fr.acinq.eclair.{LongToBtcAmount, TestConstants} import org.scalatest.funsuite.AnyFunSuite import scala.concurrent.Await diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/EarnDotComFeeProviderSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/EarnDotComFeeProviderSpec.scala index 6c94f9ad8f..d72d380fe2 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/EarnDotComFeeProviderSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/EarnDotComFeeProviderSpec.scala @@ -18,7 +18,8 @@ package fr.acinq.eclair.blockchain.fee import akka.util.Timeout import com.softwaremill.sttp.okhttp.OkHttpFutureBackend -import fr.acinq.eclair.{LongToBtcAmount, TestTags} +import fr.acinq.bitcoin.SatoshiLong +import fr.acinq.eclair.TestTags import grizzled.slf4j.Logging import org.json4s.DefaultFormats import org.scalatest.funsuite.AnyFunSuite diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/FallbackFeeProviderSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/FallbackFeeProviderSpec.scala index 9f03064059..00cc29c7df 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/FallbackFeeProviderSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/FallbackFeeProviderSpec.scala @@ -16,7 +16,7 @@ package fr.acinq.eclair.blockchain.fee -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.bitcoin.SatoshiLong import org.scalatest.funsuite.AnyFunSuite import scala.concurrent.duration._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/FeeProviderSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/FeeProviderSpec.scala index fc260be87c..be9c0e16a8 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/FeeProviderSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/FeeProviderSpec.scala @@ -16,7 +16,7 @@ package fr.acinq.eclair.blockchain.fee -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.bitcoin.SatoshiLong import fr.acinq.eclair.blockchain.fee.FeeratePerKw.MinimumFeeratePerKw import org.scalatest.funsuite.AnyFunSuite diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/SmoothFeeProviderSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/SmoothFeeProviderSpec.scala index ed62fcd9e5..0267b5b747 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/SmoothFeeProviderSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/blockchain/fee/SmoothFeeProviderSpec.scala @@ -16,7 +16,7 @@ package fr.acinq.eclair.blockchain.fee -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.bitcoin.SatoshiLong import org.scalatest.funsuite.AnyFunSuite import scala.concurrent.ExecutionContext.Implicits.global diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/CommitmentsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/CommitmentsSpec.scala index 870f94f009..413356c2d5 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/CommitmentsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/CommitmentsSpec.scala @@ -17,7 +17,7 @@ package fr.acinq.eclair.channel import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{DeterministicWallet, Satoshi, Transaction} +import fr.acinq.bitcoin.{DeterministicWallet, Satoshi, SatoshiLong, Transaction} import fr.acinq.eclair.TestConstants.TestFeeEstimator import fr.acinq.eclair.blockchain.fee.{FeeTargets, FeeratePerKw, FeerateTolerance, OnChainFeeConf} import fr.acinq.eclair.channel.Commitments._ @@ -33,7 +33,7 @@ import org.scalatest.{Outcome, Tag} import scodec.bits.ByteVector import scala.concurrent.duration._ -import scala.util.{Failure, Random, Success} +import scala.util.Random class CommitmentsSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with StateTestsHelperMethods { diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/HelpersSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/HelpersSpec.scala index 7f99f7a5b8..12a940611a 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/HelpersSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/HelpersSpec.scala @@ -17,13 +17,12 @@ package fr.acinq.eclair.channel import fr.acinq.bitcoin.{Btc, Transaction} -import fr.acinq.eclair.LongToBtcAmount +import fr.acinq.eclair.MilliSatoshiLong import fr.acinq.eclair.TestConstants.Alice.nodeParams import fr.acinq.eclair.TestUtils.NoLoggingDiagnostics import fr.acinq.eclair.channel.Helpers.Closing import org.scalatest.funsuite.AnyFunSuite -import scala.compat.Platform import scala.concurrent.duration._ class HelpersSpec extends AnyFunSuite { diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/StateTestsHelperMethods.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/StateTestsHelperMethods.scala index 25539be7b0..8639540f64 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/StateTestsHelperMethods.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/StateTestsHelperMethods.scala @@ -16,12 +16,10 @@ package fr.acinq.eclair.channel.states -import java.util.UUID - import akka.actor.ActorRef import akka.testkit.{TestFSMRef, TestKitBase, TestProbe} import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{ByteVector32, Crypto, ScriptFlags, Transaction} +import fr.acinq.bitcoin.{ByteVector32, Crypto, SatoshiLong, ScriptFlags, Transaction} import fr.acinq.eclair.TestConstants.{Alice, Bob, TestFeeEstimator} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.fee.FeeTargets @@ -35,6 +33,7 @@ import fr.acinq.eclair.wire._ import fr.acinq.eclair.{FeatureSupport, Features, NodeParams, TestConstants, randomBytes32, _} import org.scalatest.{FixtureTestSuite, ParallelTestExecution} +import java.util.UUID import scala.concurrent.duration._ /** diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForAcceptChannelStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForAcceptChannelStateSpec.scala index 073ed92209..517329ab5b 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForAcceptChannelStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForAcceptChannelStateSpec.scala @@ -17,7 +17,7 @@ package fr.acinq.eclair.channel.states.a import akka.testkit.{TestFSMRef, TestProbe} -import fr.acinq.bitcoin.{Block, Btc, ByteVector32, Satoshi} +import fr.acinq.bitcoin.{Block, Btc, ByteVector32, Satoshi, SatoshiLong} import fr.acinq.eclair.FeatureSupport.Optional import fr.acinq.eclair.Features.Wumbo import fr.acinq.eclair.TestConstants.{Alice, Bob} @@ -27,7 +27,7 @@ import fr.acinq.eclair.channel.Channel.TickChannelOpenTimeout import fr.acinq.eclair.channel.states.StateTestsHelperMethods import fr.acinq.eclair.channel.{WAIT_FOR_FUNDING_INTERNAL, _} import fr.acinq.eclair.wire.{AcceptChannel, ChannelTlv, Error, Init, OpenChannel, TlvStream} -import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, LongToBtcAmount, TestConstants, TestKitBaseClass} +import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, TestConstants, TestKitBaseClass} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, Tag} import scodec.bits.ByteVector diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForOpenChannelStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForOpenChannelStateSpec.scala index cbfc258f83..81905933f1 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForOpenChannelStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/a/WaitForOpenChannelStateSpec.scala @@ -17,7 +17,7 @@ package fr.acinq.eclair.channel.states.a import akka.testkit.{TestFSMRef, TestProbe} -import fr.acinq.bitcoin.{Block, Btc, ByteVector32} +import fr.acinq.bitcoin.{Block, Btc, ByteVector32, SatoshiLong} import fr.acinq.eclair.FeatureSupport.Optional import fr.acinq.eclair.Features.Wumbo import fr.acinq.eclair.TestConstants.{Alice, Bob} @@ -25,7 +25,7 @@ import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.channel._ import fr.acinq.eclair.channel.states.StateTestsHelperMethods import fr.acinq.eclair.wire.{AcceptChannel, ChannelTlv, Error, Init, OpenChannel, TlvStream} -import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, LongToBtcAmount, TestConstants, TestKitBaseClass, ToMilliSatoshiConversion} +import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, MilliSatoshiLong, TestConstants, TestKitBaseClass, ToMilliSatoshiConversion} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, Tag} import scodec.bits.ByteVector diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/b/WaitForFundingCreatedStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/b/WaitForFundingCreatedStateSpec.scala index d80454456a..2e3bb2bbd2 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/b/WaitForFundingCreatedStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/b/WaitForFundingCreatedStateSpec.scala @@ -18,14 +18,14 @@ package fr.acinq.eclair.channel.states.b import akka.actor.ActorRef import akka.testkit.{TestFSMRef, TestProbe} -import fr.acinq.bitcoin.ByteVector32 +import fr.acinq.bitcoin.{ByteVector32, SatoshiLong} import fr.acinq.eclair.TestConstants.{Alice, Bob} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.channel._ import fr.acinq.eclair.channel.states.StateTestsHelperMethods import fr.acinq.eclair.transactions.Transactions import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{LongToBtcAmount, TestConstants, TestKitBaseClass, ToMilliSatoshiConversion} +import fr.acinq.eclair.{TestConstants, TestKitBaseClass, ToMilliSatoshiConversion} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, Tag} diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/c/WaitForFundingConfirmedStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/c/WaitForFundingConfirmedStateSpec.scala index 2bb861c2fc..5288f644f8 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/c/WaitForFundingConfirmedStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/c/WaitForFundingConfirmedStateSpec.scala @@ -16,16 +16,15 @@ package fr.acinq.eclair.channel.states.c -import akka.actor.Status.Failure import akka.testkit.{TestFSMRef, TestProbe} -import fr.acinq.bitcoin.{ByteVector32, Script, Transaction} +import fr.acinq.bitcoin.{ByteVector32, SatoshiLong, Script, Transaction} import fr.acinq.eclair.TestConstants.{Alice, Bob} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.channel._ import fr.acinq.eclair.channel.states.StateTestsHelperMethods import fr.acinq.eclair.transactions.Scripts.multiSig2of2 import fr.acinq.eclair.wire.{AcceptChannel, Error, FundingCreated, FundingLocked, FundingSigned, Init, OpenChannel} -import fr.acinq.eclair.{LongToBtcAmount, TestConstants, TestKitBaseClass, randomKey} +import fr.acinq.eclair.{TestConstants, TestKitBaseClass, randomKey} import org.scalatest.Outcome import org.scalatest.funsuite.FixtureAnyFunSuiteLike diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/c/WaitForFundingLockedStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/c/WaitForFundingLockedStateSpec.scala index aba5a407b5..72a004b295 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/c/WaitForFundingLockedStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/c/WaitForFundingLockedStateSpec.scala @@ -23,7 +23,7 @@ import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.channel._ import fr.acinq.eclair.channel.states.StateTestsHelperMethods import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{LongToBtcAmount, TestConstants, TestKitBaseClass} +import fr.acinq.eclair.{MilliSatoshiLong, TestConstants, TestKitBaseClass} import org.scalatest.Outcome import org.scalatest.funsuite.FixtureAnyFunSuiteLike diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/e/NormalStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/e/NormalStateSpec.scala index eea64130bf..47897e7b0e 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/e/NormalStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/e/NormalStateSpec.scala @@ -19,7 +19,7 @@ package fr.acinq.eclair.channel.states.e import akka.actor.ActorRef import akka.testkit.TestProbe import fr.acinq.bitcoin.Crypto.PrivateKey -import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, ScriptFlags, Transaction} +import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, SatoshiLong, ScriptFlags, Transaction} import fr.acinq.eclair.Features.StaticRemoteKey import fr.acinq.eclair.TestConstants.{Alice, Bob} import fr.acinq.eclair.UInt64.Conversions._ @@ -30,7 +30,6 @@ import fr.acinq.eclair.channel.Channel._ import fr.acinq.eclair.channel.states.StateTestsHelperMethods import fr.acinq.eclair.channel.{ChannelErrorOccurred, _} import fr.acinq.eclair.crypto.Sphinx -import fr.acinq.eclair.db.PendingRelayDb import fr.acinq.eclair.io.Peer import fr.acinq.eclair.payment.OutgoingPacket import fr.acinq.eclair.payment.relay.Relayer._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/e/OfflineStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/e/OfflineStateSpec.scala index 5638fdc214..7f2d456d94 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/e/OfflineStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/e/OfflineStateSpec.scala @@ -28,7 +28,7 @@ import fr.acinq.eclair.channel.states.StateTestsHelperMethods import fr.acinq.eclair.router.Announcements import fr.acinq.eclair.transactions.Transactions.HtlcSuccessTx import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, LongToBtcAmount, TestConstants, TestKitBaseClass, randomBytes32} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, MilliSatoshiLong, TestConstants, TestKitBaseClass, randomBytes32} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, Tag} diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/f/ShutdownStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/f/ShutdownStateSpec.scala index 473a3aadc8..f5fc25a036 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/f/ShutdownStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/f/ShutdownStateSpec.scala @@ -16,29 +16,25 @@ package fr.acinq.eclair.channel.states.f -import java.util.UUID - -import akka.actor.ActorRef -import akka.actor.Status.Failure import akka.testkit.TestProbe import fr.acinq.bitcoin.Crypto.PrivateKey -import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, ScriptFlags, Transaction} +import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, SatoshiLong, ScriptFlags, Transaction} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, FeeratesPerKw} import fr.acinq.eclair.channel._ import fr.acinq.eclair.channel.states.StateTestsHelperMethods +import fr.acinq.eclair.payment.OutgoingPacket.Upstream import fr.acinq.eclair.payment._ -import fr.acinq.eclair.payment.relay.Relayer import fr.acinq.eclair.payment.relay.Relayer._ -import fr.acinq.eclair.payment.OutgoingPacket.Upstream import fr.acinq.eclair.router.Router.ChannelHop import fr.acinq.eclair.wire.Onion.FinalLegacyPayload import fr.acinq.eclair.wire.{CommitSig, Error, FailureMessageCodecs, PermanentChannelFailure, RevokeAndAck, Shutdown, UpdateAddHtlc, UpdateFailHtlc, UpdateFailMalformedHtlc, UpdateFee, UpdateFulfillHtlc} -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, LongToBtcAmount, TestConstants, TestKitBaseClass, randomBytes32} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, MilliSatoshiLong, TestConstants, TestKitBaseClass, randomBytes32} import org.scalatest.Outcome import org.scalatest.funsuite.FixtureAnyFunSuiteLike import scodec.bits.ByteVector +import java.util.UUID import scala.concurrent.duration._ /** @@ -148,7 +144,7 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv CMD_FULFILL_HTLC (acknowledge in case of success)") { f => import f._ val sender = TestProbe() - + // actual test begins val initialState = bob.stateData.asInstanceOf[DATA_SHUTDOWN] val c = CMD_FULFILL_HTLC(0, r1, replyTo_opt = Some(sender.ref)) @@ -174,7 +170,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv UpdateFulfillHtlc") { f => import f._ - val sender = TestProbe() val initialState = alice.stateData.asInstanceOf[DATA_SHUTDOWN] val fulfill = UpdateFulfillHtlc(ByteVector32.Zeroes, 0, r1) alice ! fulfill @@ -184,7 +179,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv UpdateFulfillHtlc (unknown htlc id)") { f => import f._ val tx = alice.stateData.asInstanceOf[DATA_SHUTDOWN].commitments.localCommit.publishableTxs.commitTx.tx - val sender = TestProbe() val fulfill = UpdateFulfillHtlc(ByteVector32.Zeroes, 42, ByteVector32.Zeroes) alice ! fulfill alice2bob.expectMsgType[Error] @@ -201,7 +195,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv UpdateFulfillHtlc (invalid preimage)") { f => import f._ val tx = alice.stateData.asInstanceOf[DATA_SHUTDOWN].commitments.localCommit.publishableTxs.commitTx.tx - val sender = TestProbe() alice ! UpdateFulfillHtlc(ByteVector32.Zeroes, 42, ByteVector32.Zeroes) alice2bob.expectMsgType[Error] awaitCond(alice.stateName == CLOSING) @@ -216,7 +209,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv CMD_FAIL_HTLC") { f => import f._ - val sender = TestProbe() val initialState = bob.stateData.asInstanceOf[DATA_SHUTDOWN] bob ! CMD_FAIL_HTLC(1, Right(PermanentChannelFailure)) val fail = bob2alice.expectMsgType[UpdateFailHtlc] @@ -247,7 +239,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv CMD_FAIL_MALFORMED_HTLC") { f => import f._ - val sender = TestProbe() val initialState = bob.stateData.asInstanceOf[DATA_SHUTDOWN] bob ! CMD_FAIL_MALFORMED_HTLC(1, Crypto.sha256(ByteVector.empty), FailureMessageCodecs.BADONION) val fail = bob2alice.expectMsgType[UpdateFailMalformedHtlc] @@ -288,7 +279,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv UpdateFailHtlc") { f => import f._ - val sender = TestProbe() val initialState = alice.stateData.asInstanceOf[DATA_SHUTDOWN] val fail = UpdateFailHtlc(ByteVector32.Zeroes, 1, ByteVector.fill(152)(0)) alice ! fail @@ -298,7 +288,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv UpdateFailHtlc (unknown htlc id)") { f => import f._ val tx = alice.stateData.asInstanceOf[DATA_SHUTDOWN].commitments.localCommit.publishableTxs.commitTx.tx - val sender = TestProbe() alice ! UpdateFailHtlc(ByteVector32.Zeroes, 42, ByteVector.fill(152)(0)) alice2bob.expectMsgType[Error] awaitCond(alice.stateName == CLOSING) @@ -313,7 +302,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv UpdateFailMalformedHtlc") { f => import f._ - val sender = TestProbe() val initialState = alice.stateData.asInstanceOf[DATA_SHUTDOWN] val fail = UpdateFailMalformedHtlc(ByteVector32.Zeroes, 1, Crypto.sha256(ByteVector.empty), FailureMessageCodecs.BADONION) alice ! fail @@ -322,7 +310,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv UpdateFailMalformedHtlc (invalid failure_code)") { f => import f._ - val sender = TestProbe() val tx = alice.stateData.asInstanceOf[DATA_SHUTDOWN].commitments.localCommit.publishableTxs.commitTx.tx val fail = UpdateFailMalformedHtlc(ByteVector32.Zeroes, 1, Crypto.sha256(ByteVector.empty), 42) alice ! fail @@ -383,7 +370,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv CommitSig") { f => import f._ - val sender = TestProbe() bob ! CMD_FULFILL_HTLC(0, r1) bob2alice.expectMsgType[UpdateFulfillHtlc] bob2alice.forward(alice) @@ -408,7 +394,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv CommitSig (invalid signature)") { f => import f._ val tx = bob.stateData.asInstanceOf[DATA_SHUTDOWN].commitments.localCommit.publishableTxs.commitTx.tx - val sender = TestProbe() bob ! CommitSig(ByteVector32.Zeroes, ByteVector64.Zeroes, Nil) bob2alice.expectMsgType[Error] awaitCond(bob.stateName == CLOSING) @@ -432,7 +417,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit import f._ fulfillHtlc(0, r1, bob, alice, bob2alice, alice2bob) fulfillHtlc(1, r2, bob, alice, bob2alice, alice2bob) - val sender = TestProbe() bob ! CMD_SIGN() bob2alice.expectMsgType[CommitSig] bob2alice.forward(alice) @@ -456,7 +440,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv RevokeAndAck (invalid preimage)") { f => import f._ val tx = bob.stateData.asInstanceOf[DATA_SHUTDOWN].commitments.localCommit.publishableTxs.commitTx.tx - val sender = TestProbe() bob ! CMD_FULFILL_HTLC(0, r1) bob2alice.expectMsgType[UpdateFulfillHtlc] bob2alice.forward(alice) @@ -478,7 +461,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv RevokeAndAck (unexpectedly)") { f => import f._ val tx = alice.stateData.asInstanceOf[DATA_SHUTDOWN].commitments.localCommit.publishableTxs.commitTx.tx - val sender = TestProbe() awaitCond(alice.stateData.asInstanceOf[DATA_SHUTDOWN].commitments.remoteNextCommitInfo.isRight) alice ! RevokeAndAck(ByteVector32.Zeroes, PrivateKey(randomBytes32), PrivateKey(randomBytes32).publicKey) alice2bob.expectMsgType[Error] @@ -494,7 +476,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv RevokeAndAck (forward UpdateFailHtlc)") { f => import f._ - val sender = TestProbe() bob ! CMD_FAIL_HTLC(1, Right(PermanentChannelFailure)) val fail = bob2alice.expectMsgType[UpdateFailHtlc] bob2alice.forward(alice) @@ -518,7 +499,6 @@ class ShutdownStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike wit test("recv RevokeAndAck (forward UpdateFailMalformedHtlc)") { f => import f._ - val sender = TestProbe() bob ! CMD_FAIL_MALFORMED_HTLC(1, Crypto.sha256(ByteVector.view("should be htlc.onionRoutingPacket".getBytes())), FailureMessageCodecs.BADONION) val fail = bob2alice.expectMsgType[UpdateFailMalformedHtlc] bob2alice.forward(alice) diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/g/NegotiatingStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/g/NegotiatingStateSpec.scala index 51a1beca33..0b94caa3a7 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/g/NegotiatingStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/g/NegotiatingStateSpec.scala @@ -18,7 +18,7 @@ package fr.acinq.eclair.channel.states.g import akka.event.LoggingAdapter import akka.testkit.TestProbe -import fr.acinq.bitcoin.{ByteVector32, ByteVector64} +import fr.acinq.bitcoin.{ByteVector32, ByteVector64, SatoshiLong} import fr.acinq.eclair.TestConstants.Bob import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, FeeratesPerKw} @@ -26,13 +26,12 @@ import fr.acinq.eclair.channel.Helpers.Closing import fr.acinq.eclair.channel._ import fr.acinq.eclair.channel.states.StateTestsHelperMethods import fr.acinq.eclair.wire.{ClosingSigned, Error, Shutdown} -import fr.acinq.eclair.{CltvExpiry, LongToBtcAmount, TestConstants, TestKitBaseClass} +import fr.acinq.eclair.{CltvExpiry, MilliSatoshiLong, TestConstants, TestKitBaseClass} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, Tag} import scodec.bits.ByteVector import scala.concurrent.duration._ -import scala.util.Success /** * Created by PM on 05/07/2016. diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/h/ClosingStateSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/h/ClosingStateSpec.scala index 19f92659e3..27f96350eb 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/h/ClosingStateSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/channel/states/h/ClosingStateSpec.scala @@ -18,7 +18,7 @@ package fr.acinq.eclair.channel.states.h import akka.testkit.{TestFSMRef, TestProbe} import fr.acinq.bitcoin.Crypto.PrivateKey -import fr.acinq.bitcoin.{ByteVector32, OutPoint, ScriptFlags, Transaction, TxIn} +import fr.acinq.bitcoin.{ByteVector32, OutPoint, SatoshiLong, ScriptFlags, Transaction, TxIn} import fr.acinq.eclair.TestConstants.{Alice, Bob} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, FeeratesPerKw} @@ -29,7 +29,7 @@ import fr.acinq.eclair.payment._ import fr.acinq.eclair.payment.relay.Relayer._ import fr.acinq.eclair.transactions.{Scripts, Transactions} import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{CltvExpiry, LongToBtcAmount, TestConstants, TestKitBaseClass, randomBytes32} +import fr.acinq.eclair.{CltvExpiry, MilliSatoshiLong, TestConstants, TestKitBaseClass, randomBytes32} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, Tag} import scodec.bits.ByteVector @@ -488,7 +488,6 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with test("recv BITCOIN_TX_CONFIRMED (local commit with htlcs only signed by local)") { f => import f._ - val sender = TestProbe() val listener = TestProbe() system.eventStream.subscribe(listener.ref, classOf[PaymentSettlingOnChain]) val aliceCommitTx = alice.stateData.asInstanceOf[DATA_NORMAL].commitments.localCommit.publishableTxs.commitTx.tx @@ -847,7 +846,6 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with private def testFutureRemoteCommitTxConfirmed(f: FixtureParam, channelVersion: ChannelVersion): Transaction = { import f._ - val sender = TestProbe() val oldStateData = alice.stateData assert(oldStateData.asInstanceOf[DATA_NORMAL].commitments.channelVersion === channelVersion) // This HTLC will be fulfilled. @@ -1177,7 +1175,6 @@ class ClosingStateSpec extends TestKitBaseClass with FixtureAnyFunSuiteLike with TestConstants.Bob.channelKeyManager.keyPath(bobCommitments.localParams, bobCommitments.channelVersion), bobCommitments.localCommit.index) - val sender = TestProbe() alice ! ChannelReestablish(channelId(bob), 42, 42, PrivateKey(ByteVector32.Zeroes), bobCurrentPerCommitmentPoint) val error = alice2bob.expectMsgType[Error] diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteAuditDbSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteAuditDbSpec.scala index dae1aebe8d..38f383a470 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteAuditDbSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteAuditDbSpec.scala @@ -16,10 +16,8 @@ package fr.acinq.eclair.db -import java.util.UUID - import fr.acinq.bitcoin.Crypto.PrivateKey -import fr.acinq.bitcoin.{ByteVector32, Transaction} +import fr.acinq.bitcoin.{ByteVector32, SatoshiLong, Transaction} import fr.acinq.eclair.TestConstants.{TestPgDatabases, TestSqliteDatabases, forAllDbs} import fr.acinq.eclair._ import fr.acinq.eclair.channel.{ChannelErrorOccurred, LocalError, NetworkFeePaid, RemoteError} @@ -29,6 +27,7 @@ import fr.acinq.eclair.payment._ import org.scalatest.Tag import org.scalatest.funsuite.AnyFunSuite +import java.util.UUID import scala.concurrent.duration._ import scala.util.Random diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteFeeratesDbSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteFeeratesDbSpec.scala index ed2db8e313..019f285a87 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteFeeratesDbSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteFeeratesDbSpec.scala @@ -16,10 +16,11 @@ package fr.acinq.eclair.db +import fr.acinq.bitcoin.SatoshiLong import fr.acinq.eclair._ import fr.acinq.eclair.blockchain.fee.{FeeratePerKB, FeeratesPerKB} -import fr.acinq.eclair.db.sqlite.SqliteUtils.{getVersion, using} import fr.acinq.eclair.db.sqlite.SqliteFeeratesDb +import fr.acinq.eclair.db.sqlite.SqliteUtils.{getVersion, using} import org.scalatest.funsuite.AnyFunSuite class SqliteFeeratesDbSpec extends AnyFunSuite { diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteNetworkDbSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteNetworkDbSpec.scala index ecbb1778eb..824e09bf4e 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteNetworkDbSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/db/SqliteNetworkDbSpec.scala @@ -17,7 +17,7 @@ package fr.acinq.eclair.db import fr.acinq.bitcoin.Crypto.PrivateKey -import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Crypto, Satoshi} +import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Crypto, Satoshi, SatoshiLong} import fr.acinq.eclair.FeatureSupport.Optional import fr.acinq.eclair.Features.VariableLengthOnion import fr.acinq.eclair.TestConstants.{TestDatabases, TestPgDatabases, TestSqliteDatabases} @@ -25,7 +25,7 @@ import fr.acinq.eclair.db.sqlite.SqliteUtils._ import fr.acinq.eclair.router.Announcements import fr.acinq.eclair.router.Router.PublicChannel import fr.acinq.eclair.wire.{Color, NodeAddress, Tor2} -import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, LongToBtcAmount, ShortChannelId, TestConstants, randomBytes32, randomKey} +import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, MilliSatoshiLong, ShortChannelId, TestConstants, randomBytes32, randomKey} import org.scalatest.funsuite.AnyFunSuite import scala.collection.{SortedMap, mutable} @@ -48,38 +48,38 @@ class SqliteNetworkDbSpec extends AnyFunSuite { case _: TestPgDatabases => // no migration case dbs: TestSqliteDatabases => - using(dbs.connection.createStatement()) { statement => - dbs.getVersion(statement, "network", 1) // this will set version to 1 - statement.execute("PRAGMA foreign_keys = ON") - statement.executeUpdate("CREATE TABLE IF NOT EXISTS nodes (node_id BLOB NOT NULL PRIMARY KEY, data BLOB NOT NULL)") - statement.executeUpdate("CREATE TABLE IF NOT EXISTS channels (short_channel_id INTEGER NOT NULL PRIMARY KEY, txid STRING NOT NULL, data BLOB NOT NULL, capacity_sat INTEGER NOT NULL)") - statement.executeUpdate("CREATE TABLE IF NOT EXISTS channel_updates (short_channel_id INTEGER NOT NULL, node_flag INTEGER NOT NULL, data BLOB NOT NULL, PRIMARY KEY(short_channel_id, node_flag), FOREIGN KEY(short_channel_id) REFERENCES channels(short_channel_id))") - statement.executeUpdate("CREATE INDEX IF NOT EXISTS channel_updates_idx ON channel_updates(short_channel_id)") - statement.executeUpdate("CREATE TABLE IF NOT EXISTS pruned (short_channel_id INTEGER NOT NULL PRIMARY KEY)") - } + using(dbs.connection.createStatement()) { statement => + dbs.getVersion(statement, "network", 1) // this will set version to 1 + statement.execute("PRAGMA foreign_keys = ON") + statement.executeUpdate("CREATE TABLE IF NOT EXISTS nodes (node_id BLOB NOT NULL PRIMARY KEY, data BLOB NOT NULL)") + statement.executeUpdate("CREATE TABLE IF NOT EXISTS channels (short_channel_id INTEGER NOT NULL PRIMARY KEY, txid STRING NOT NULL, data BLOB NOT NULL, capacity_sat INTEGER NOT NULL)") + statement.executeUpdate("CREATE TABLE IF NOT EXISTS channel_updates (short_channel_id INTEGER NOT NULL, node_flag INTEGER NOT NULL, data BLOB NOT NULL, PRIMARY KEY(short_channel_id, node_flag), FOREIGN KEY(short_channel_id) REFERENCES channels(short_channel_id))") + statement.executeUpdate("CREATE INDEX IF NOT EXISTS channel_updates_idx ON channel_updates(short_channel_id)") + statement.executeUpdate("CREATE TABLE IF NOT EXISTS pruned (short_channel_id INTEGER NOT NULL PRIMARY KEY)") + } - using(dbs.connection.createStatement()) { statement => - assert(dbs.getVersion(statement, "network", 2) == 1) - } + using(dbs.connection.createStatement()) { statement => + assert(dbs.getVersion(statement, "network", 2) == 1) + } - // first round: this will trigger a migration - simpleTest(dbs) + // first round: this will trigger a migration + simpleTest(dbs) - using(dbs.connection.createStatement()) { statement => - assert(dbs.getVersion(statement, "network", 2) == 2) - } + using(dbs.connection.createStatement()) { statement => + assert(dbs.getVersion(statement, "network", 2) == 2) + } - using(dbs.connection.createStatement()) { statement => - statement.executeUpdate("DELETE FROM nodes") - statement.executeUpdate("DELETE FROM channels") - } + using(dbs.connection.createStatement()) { statement => + statement.executeUpdate("DELETE FROM nodes") + statement.executeUpdate("DELETE FROM channels") + } - // second round: no migration - simpleTest(dbs) + // second round: no migration + simpleTest(dbs) - using(dbs.connection.createStatement()) { statement => - assert(dbs.getVersion(statement, "network", 2) == 2) - } + using(dbs.connection.createStatement()) { statement => + assert(dbs.getVersion(statement, "network", 2) == 2) + } } } diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/db/SqlitePaymentsDbSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/db/SqlitePaymentsDbSpec.scala index b8e95b4178..c87c010a5e 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/db/SqlitePaymentsDbSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/db/SqlitePaymentsDbSpec.scala @@ -16,8 +16,6 @@ package fr.acinq.eclair.db -import java.util.UUID - import fr.acinq.bitcoin.Crypto.PrivateKey import fr.acinq.bitcoin.{Block, ByteVector32, Crypto} import fr.acinq.eclair.TestConstants.{TestPgDatabases, TestSqliteDatabases, forAllDbs} @@ -26,9 +24,10 @@ import fr.acinq.eclair.db.sqlite.SqlitePaymentsDb import fr.acinq.eclair.payment._ import fr.acinq.eclair.router.Router.{ChannelHop, NodeHop} import fr.acinq.eclair.wire.{ChannelUpdate, UnknownNextPeer} -import fr.acinq.eclair.{CltvExpiryDelta, LongToBtcAmount, ShortChannelId, TestConstants, randomBytes32, randomBytes64, randomKey} +import fr.acinq.eclair.{CltvExpiryDelta, MilliSatoshiLong, ShortChannelId, TestConstants, randomBytes32, randomBytes64, randomKey} import org.scalatest.funsuite.AnyFunSuite +import java.util.UUID import scala.concurrent.duration._ class SqlitePaymentsDbSpec extends AnyFunSuite { diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/integration/ChannelIntegrationSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/integration/ChannelIntegrationSpec.scala index 85c48b5f30..a302b57724 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/integration/ChannelIntegrationSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/integration/ChannelIntegrationSpec.scala @@ -16,15 +16,13 @@ package fr.acinq.eclair.integration -import java.util.UUID - import akka.actor.ActorRef import akka.pattern.pipe import akka.testkit.TestProbe import com.google.common.net.HostAndPort import com.typesafe.config.ConfigFactory import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{Base58, Base58Check, Bech32, ByteVector32, Crypto, OP_0, OP_CHECKSIG, OP_DUP, OP_EQUAL, OP_EQUALVERIFY, OP_HASH160, OP_PUSHDATA, Script, ScriptFlags, Transaction} +import fr.acinq.bitcoin.{Base58, Base58Check, Bech32, BtcDouble, ByteVector32, Crypto, OP_0, OP_CHECKSIG, OP_DUP, OP_EQUAL, OP_EQUALVERIFY, OP_HASH160, OP_PUSHDATA, SatoshiLong, Script, ScriptFlags, Transaction} import fr.acinq.eclair.blockchain.bitcoind.BitcoindService.BitcoinReq import fr.acinq.eclair.blockchain.bitcoind.rpc.ExtendedBitcoinClient import fr.acinq.eclair.channel._ @@ -37,10 +35,11 @@ import fr.acinq.eclair.payment.send.PaymentInitiator.SendPaymentRequest import fr.acinq.eclair.router.Router import fr.acinq.eclair.transactions.{Scripts, Transactions} import fr.acinq.eclair.wire.{ChannelAnnouncement, ChannelUpdate, PermanentChannelFailure, UpdateAddHtlc} -import fr.acinq.eclair.{LongToBtcAmount, MilliSatoshi, randomBytes32} +import fr.acinq.eclair.{MilliSatoshi, MilliSatoshiLong, randomBytes32} import org.json4s.JsonAST.{JString, JValue} import scodec.bits.ByteVector +import java.util.UUID import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration._ import scala.jdk.CollectionConverters._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/integration/IntegrationSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/integration/IntegrationSpec.scala index 48d9c49204..cfc2221f7a 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/integration/IntegrationSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/integration/IntegrationSpec.scala @@ -16,9 +16,6 @@ package fr.acinq.eclair.integration -import java.io.File -import java.util.Properties - import akka.actor.ActorSystem import akka.testkit.{TestKit, TestProbe} import com.google.common.net.HostAndPort @@ -32,13 +29,15 @@ import fr.acinq.eclair.io.{Peer, PeerConnection} import fr.acinq.eclair.router.Graph.WeightRatios import fr.acinq.eclair.router.RouteCalculation.ROUTE_MAX_LENGTH import fr.acinq.eclair.router.Router.{MultiPartParams, RouteParams, NORMAL => _, State => _} -import fr.acinq.eclair.{CltvExpiryDelta, Kit, LongToBtcAmount, MilliSatoshi, Setup, TestKitBaseClass} +import fr.acinq.eclair.{CltvExpiryDelta, Kit, MilliSatoshi, MilliSatoshiLong, Setup, TestKitBaseClass} import grizzled.slf4j.Logging import org.json4s.JsonAST.JValue import org.json4s.{DefaultFormats, Formats} import org.scalatest.BeforeAndAfterAll import org.scalatest.funsuite.AnyFunSuiteLike +import java.io.File +import java.util.Properties import scala.concurrent.Await import scala.concurrent.duration._ import scala.jdk.CollectionConverters._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/integration/PaymentIntegrationSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/integration/PaymentIntegrationSpec.scala index b2cbc66a8e..0ca00e82b8 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/integration/PaymentIntegrationSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/integration/PaymentIntegrationSpec.scala @@ -16,13 +16,11 @@ package fr.acinq.eclair.integration -import java.util.UUID - import akka.actor.ActorRef import akka.testkit.TestProbe import com.typesafe.config.ConfigFactory import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.{Block, ByteVector32} +import fr.acinq.bitcoin.{Block, ByteVector32, SatoshiLong} import fr.acinq.eclair.blockchain.bitcoind.BitcoindService.BitcoinReq import fr.acinq.eclair.blockchain.bitcoind.rpc.ExtendedBitcoinClient import fr.acinq.eclair.blockchain.{Watch, WatchConfirmed} @@ -42,10 +40,11 @@ import fr.acinq.eclair.router.Graph.WeightRatios import fr.acinq.eclair.router.Router.{GossipDecision, PublicChannel} import fr.acinq.eclair.router.{Announcements, AnnouncementsBatchValidationSpec, Router} import fr.acinq.eclair.wire.{ChannelAnnouncement, ChannelUpdate, IncorrectOrUnknownPaymentDetails, NodeAnnouncement} -import fr.acinq.eclair.{CltvExpiryDelta, Kit, LongToBtcAmount, ShortChannelId, randomBytes32} +import fr.acinq.eclair.{CltvExpiryDelta, Kit, MilliSatoshiLong, ShortChannelId, randomBytes32} import org.json4s.JsonAST.{JString, JValue} import scodec.bits.ByteVector +import java.util.UUID import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration._ import scala.jdk.CollectionConverters._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/interop/rustytests/RustyTestsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/interop/rustytests/RustyTestsSpec.scala index 2329ff326a..d10831cb38 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/interop/rustytests/RustyTestsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/interop/rustytests/RustyTestsSpec.scala @@ -16,24 +16,23 @@ package fr.acinq.eclair.interop.rustytests -import java.io.File -import java.util.concurrent.atomic.AtomicLong -import java.util.concurrent.{CountDownLatch, TimeUnit} - import akka.actor.{ActorRef, Props} import akka.testkit.{TestFSMRef, TestKit, TestProbe} -import fr.acinq.bitcoin.ByteVector32 +import fr.acinq.bitcoin.{ByteVector32, SatoshiLong} import fr.acinq.eclair.TestConstants.{Alice, Bob, TestFeeEstimator} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.blockchain.fee.{FeeratePerKw, FeeratesPerKw} import fr.acinq.eclair.channel._ import fr.acinq.eclair.payment.receive.{ForwardHandler, PaymentHandler} import fr.acinq.eclair.wire.Init -import fr.acinq.eclair.{LongToBtcAmount, TestKitBaseClass, TestUtils} +import fr.acinq.eclair.{MilliSatoshiLong, TestKitBaseClass, TestUtils} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.matchers.should.Matchers import org.scalatest.{BeforeAndAfterAll, Outcome} +import java.io.File +import java.util.concurrent.atomic.AtomicLong +import java.util.concurrent.{CountDownLatch, TimeUnit} import scala.concurrent.duration._ import scala.io.Source diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/io/PeerSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/io/PeerSpec.scala index 547ca85a4d..7124dc8606 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/io/PeerSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/io/PeerSpec.scala @@ -21,7 +21,7 @@ import akka.actor.Status.Failure import akka.testkit.{TestFSMRef, TestProbe} import com.google.common.net.HostAndPort import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{Btc, Script} +import fr.acinq.bitcoin.{Btc, SatoshiLong, Script} import fr.acinq.eclair.FeatureSupport.Optional import fr.acinq.eclair.Features.{StaticRemoteKey, Wumbo} import fr.acinq.eclair.TestConstants._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/MultiPartHandlerSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/MultiPartHandlerSpec.scala index 53b607dc57..7fb5560ca8 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/MultiPartHandlerSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/MultiPartHandlerSpec.scala @@ -32,7 +32,7 @@ import fr.acinq.eclair.payment.receive.MultiPartPaymentFSM.HtlcPart import fr.acinq.eclair.payment.receive.{MultiPartPaymentFSM, PaymentHandler} import fr.acinq.eclair.wire.Onion.FinalTlvPayload import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{ActivatedFeature, CltvExpiry, CltvExpiryDelta, Features, LongToBtcAmount, NodeParams, ShortChannelId, TestConstants, TestKitBaseClass, randomBytes32, randomKey} +import fr.acinq.eclair.{ActivatedFeature, CltvExpiry, CltvExpiryDelta, Features, MilliSatoshiLong, NodeParams, ShortChannelId, TestConstants, TestKitBaseClass, randomBytes32, randomKey} import org.scalatest.Outcome import org.scalatest.funsuite.FixtureAnyFunSuiteLike diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/MultiPartPaymentFSMSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/MultiPartPaymentFSMSpec.scala index cbfa005ef8..50c3faf354 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/MultiPartPaymentFSMSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/MultiPartPaymentFSMSpec.scala @@ -22,7 +22,7 @@ import fr.acinq.bitcoin.ByteVector32 import fr.acinq.eclair.payment.receive.MultiPartPaymentFSM import fr.acinq.eclair.payment.receive.MultiPartPaymentFSM._ import fr.acinq.eclair.wire.{IncorrectOrUnknownPaymentDetails, UpdateAddHtlc} -import fr.acinq.eclair.{CltvExpiry, LongToBtcAmount, MilliSatoshi, NodeParams, TestConstants, TestKitBaseClass, randomBytes32, wire} +import fr.acinq.eclair.{CltvExpiry, MilliSatoshi, MilliSatoshiLong, NodeParams, TestConstants, TestKitBaseClass, randomBytes32, wire} import org.scalatest.funsuite.AnyFunSuiteLike import scodec.bits.ByteVector diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentInitiatorSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentInitiatorSpec.scala index 224ecce17c..23e58b099d 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentInitiatorSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentInitiatorSpec.scala @@ -16,8 +16,6 @@ package fr.acinq.eclair.payment -import java.util.UUID - import akka.actor.ActorRef import akka.testkit.{TestActorRef, TestProbe} import fr.acinq.bitcoin.Block @@ -38,11 +36,12 @@ import fr.acinq.eclair.router.Router._ import fr.acinq.eclair.wire.Onion.{FinalLegacyPayload, FinalTlvPayload} import fr.acinq.eclair.wire.OnionTlv.{AmountToForward, OutgoingCltv} import fr.acinq.eclair.wire.{Onion, OnionCodecs, OnionTlv, TrampolineFeeInsufficient, _} -import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, LongToBtcAmount, NodeParams, TestConstants, TestKitBaseClass, randomBytes32, randomKey} +import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, MilliSatoshiLong, NodeParams, TestConstants, TestKitBaseClass, randomBytes32, randomKey} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, Tag} import scodec.bits.HexStringSyntax +import java.util.UUID import scala.concurrent.duration._ /** diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentLifecycleSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentLifecycleSpec.scala index c8d4ac0a07..73a4fb833d 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentLifecycleSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentLifecycleSpec.scala @@ -16,14 +16,12 @@ package fr.acinq.eclair.payment -import java.util.UUID - import akka.actor.ActorRef import akka.actor.FSM.{CurrentState, SubscribeTransitionCallBack, Transition} import akka.testkit.{TestFSMRef, TestProbe} import fr.acinq.bitcoin.Crypto.PublicKey import fr.acinq.bitcoin.Script.{pay2wsh, write} -import fr.acinq.bitcoin.{Block, ByteVector32, Crypto, Transaction, TxOut} +import fr.acinq.bitcoin.{Block, ByteVector32, Crypto, SatoshiLong, Transaction, TxOut} import fr.acinq.eclair._ import fr.acinq.eclair.blockchain.{UtxoStatus, ValidateRequest, ValidateResult, WatchSpentBasic} import fr.acinq.eclair.channel.Register.ForwardShortId @@ -45,6 +43,7 @@ import fr.acinq.eclair.transactions.Scripts import fr.acinq.eclair.wire.Onion.FinalLegacyPayload import fr.acinq.eclair.wire._ +import java.util.UUID import scala.concurrent.duration._ /** diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentPacketSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentPacketSpec.scala index e4d80911cf..1e602a4516 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentPacketSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentPacketSpec.scala @@ -16,12 +16,10 @@ package fr.acinq.eclair.payment -import java.util.UUID - import akka.actor.ActorRef import fr.acinq.bitcoin.Crypto.PublicKey import fr.acinq.bitcoin.DeterministicWallet.ExtendedPrivateKey -import fr.acinq.bitcoin.{Block, ByteVector32, Crypto, DeterministicWallet, OutPoint, Satoshi, TxOut} +import fr.acinq.bitcoin.{Block, ByteVector32, Crypto, DeterministicWallet, OutPoint, Satoshi, SatoshiLong, TxOut} import fr.acinq.eclair.Features._ import fr.acinq.eclair.channel._ import fr.acinq.eclair.crypto.Sphinx @@ -33,12 +31,14 @@ import fr.acinq.eclair.transactions.Transactions.InputInfo import fr.acinq.eclair.wire.Onion.{FinalLegacyPayload, FinalTlvPayload, RelayLegacyPayload} import fr.acinq.eclair.wire.OnionTlv.{AmountToForward, OutgoingCltv, PaymentData} import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, LongToBtcAmount, MilliSatoshi, ShortChannelId, TestConstants, UInt64, nodeFee, randomBytes32, randomKey} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, MilliSatoshi, MilliSatoshiLong, ShortChannelId, TestConstants, UInt64, nodeFee, randomBytes32, randomKey} import org.scalatest.BeforeAndAfterAll import org.scalatest.funsuite.AnyFunSuite import scodec.Attempt import scodec.bits.{ByteVector, HexStringSyntax} +import java.util.UUID + /** * Created by PM on 31/05/2016. */ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentRequestSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentRequestSpec.scala index 5be0d34cff..a4e1dbb6be 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentRequestSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PaymentRequestSpec.scala @@ -16,18 +16,18 @@ package fr.acinq.eclair.payment -import java.nio.ByteOrder - import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.{Block, ByteVector32, Crypto, Protocol} +import fr.acinq.bitcoin.{Block, BtcDouble, ByteVector32, Crypto, MilliBtcDouble, Protocol, SatoshiLong} import fr.acinq.eclair.Features.{PaymentSecret, _} import fr.acinq.eclair.payment.PaymentRequest._ -import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, FeatureSupport, Features, LongToBtcAmount, ShortChannelId, TestConstants, ToMilliSatoshiConversion} +import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, FeatureSupport, Features, MilliSatoshiLong, ShortChannelId, TestConstants, ToMilliSatoshiConversion} import org.scalatest.funsuite.AnyFunSuite import scodec.DecodeResult import scodec.bits._ import scodec.codecs.bits +import java.nio.ByteOrder + /** * Created by fabrice on 15/05/17. */ @@ -48,8 +48,8 @@ class PaymentRequestSpec extends AnyFunSuite { assert('u' === Amount.unit((100 sat).toMilliSatoshi)) assert('n' === Amount.unit((101 sat).toMilliSatoshi)) assert('u' === Amount.unit((1155400 sat).toMilliSatoshi)) - assert('m' === Amount.unit((1 mbtc).toMilliSatoshi)) - assert('m' === Amount.unit((10 mbtc).toMilliSatoshi)) + assert('m' === Amount.unit((1 millibtc).toMilliSatoshi)) + assert('m' === Amount.unit((10 millibtc).toMilliSatoshi)) assert('m' === Amount.unit((1 btc).toMilliSatoshi)) } diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PostRestartHtlcCleanerSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PostRestartHtlcCleanerSpec.scala index ceb754a41d..1ded3591b6 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/PostRestartHtlcCleanerSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/PostRestartHtlcCleanerSpec.scala @@ -16,14 +16,12 @@ package fr.acinq.eclair.payment -import java.util.UUID - import akka.Done import akka.actor.ActorRef import akka.event.LoggingAdapter import akka.testkit.TestProbe import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{Block, ByteVector32, Crypto, Satoshi} +import fr.acinq.bitcoin.{Block, ByteVector32, Crypto, Satoshi, SatoshiLong} import fr.acinq.eclair.blockchain.WatchEventConfirmed import fr.acinq.eclair.channel._ import fr.acinq.eclair.channel.states.StateTestsHelperMethods @@ -35,11 +33,12 @@ import fr.acinq.eclair.router.Router.ChannelHop import fr.acinq.eclair.transactions.{DirectedHtlc, IncomingHtlc, OutgoingHtlc} import fr.acinq.eclair.wire.Onion.FinalLegacyPayload import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, CustomCommitmentsPlugin, LongToBtcAmount, MilliSatoshi, NodeParams, TestConstants, TestKitBaseClass, randomBytes32} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, CustomCommitmentsPlugin, MilliSatoshi, MilliSatoshiLong, NodeParams, TestConstants, TestKitBaseClass, randomBytes32} import org.scalatest.Outcome import org.scalatest.funsuite.FixtureAnyFunSuiteLike import scodec.bits.ByteVector +import java.util.UUID import scala.concurrent.Promise import scala.concurrent.duration._ @@ -552,31 +551,33 @@ class PostRestartHtlcCleanerSpec extends TestKitBaseClass with FixtureAnyFunSuit val trampolineRelayedPaymentHash = randomBytes32 val trampolineRelayed = Origin.TrampolineRelayedCold((channelId_ab_1, 0L) :: Nil) val relayedHtlc1In = buildHtlcIn(0L, channelId_ab_1, trampolineRelayedPaymentHash) - val relayedhtlc1Out = buildHtlcOut(50L, channelId_ab_2, trampolineRelayedPaymentHash) + val relayedHtlc1Out = buildHtlcOut(50L, channelId_ab_2, trampolineRelayedPaymentHash) val nonRelayedHtlc2In = buildHtlcIn(1L, channelId_ab_1, relayedPaymentHash) + // @formatter:off val pluginParams = new CustomCommitmentsPlugin { override def name = "test with incoming HTLC from remote" override def getIncomingHtlcs(np: NodeParams, log: LoggingAdapter): Seq[PostRestartHtlcCleaner.IncomingHtlc] = List(PostRestartHtlcCleaner.IncomingHtlc(relayedHtlc1In.add, None), PostRestartHtlcCleaner.IncomingHtlc(nonRelayedHtlc2In.add, None)) override def getHtlcsRelayedOut(htlcsIn: Seq[PostRestartHtlcCleaner.IncomingHtlc], np: NodeParams, log: LoggingAdapter): Map[Origin, Set[(ByteVector32, Long)]] = Map.empty } + // @formatter:on val nodeParams1 = nodeParams.copy(pluginParams = List(pluginParams)) - val c = ChannelCodecsSpec.makeChannelDataNormal(List(relayedhtlc1Out), Map(50L -> trampolineRelayed)) + val c = ChannelCodecsSpec.makeChannelDataNormal(List(relayedHtlc1Out), Map(50L -> trampolineRelayed)) nodeParams1.db.channels.addOrUpdateChannel(c) val channel = TestProbe() f.createRelayer(nodeParams1) register.expectNoMsg(100 millis) // nothing should happen while channels are still offline. - val cs = new AbstractCommitments { + // @formatter:off + val cs: AbstractCommitments = new AbstractCommitments { def getOutgoingHtlcCrossSigned(htlcId: Long): Option[UpdateAddHtlc] = None def getIncomingHtlcCrossSigned(htlcId: Long): Option[UpdateAddHtlc] = { if (htlcId == 0L) Some(relayedHtlc1In.add) else if (htlcId == 1L) Some(nonRelayedHtlc2In.add) else None } - def timedOutOutgoingHtlcs(blockheight: Long): Set[UpdateAddHtlc] = Set.empty def localNodeId: PublicKey = randomExtendedPrivateKey.publicKey def remoteNodeId: PublicKey = randomExtendedPrivateKey.publicKey def capacity: Satoshi = Long.MaxValue.sat @@ -586,6 +587,7 @@ class PostRestartHtlcCleanerSpec extends TestKitBaseClass with FixtureAnyFunSuit def channelId: ByteVector32 = channelId_ab_1 def announceChannel: Boolean = false } + // @formatter:on // Non-standard channel goes to NORMAL state: system.eventStream.publish(ChannelStateChanged(channel.ref, channelId_ab_1, system.deadLetters, a, OFFLINE, NORMAL, Some(cs))) @@ -602,11 +604,13 @@ class PostRestartHtlcCleanerSpec extends TestKitBaseClass with FixtureAnyFunSuit val relayedHtlcIn = buildHtlcIn(0L, channelId_ab_2, trampolineRelayedPaymentHash) val nonRelayedHtlcIn = buildHtlcIn(1L, channelId_ab_2, relayedPaymentHash) + // @formatter:off val pluginParams = new CustomCommitmentsPlugin { override def name = "test with outgoing HTLC to remote" override def getIncomingHtlcs(np: NodeParams, log: LoggingAdapter): Seq[PostRestartHtlcCleaner.IncomingHtlc] = List.empty override def getHtlcsRelayedOut(htlcsIn: Seq[PostRestartHtlcCleaner.IncomingHtlc], np: NodeParams, log: LoggingAdapter): Map[Origin, Set[(ByteVector32, Long)]] = Map(trampolineRelayed -> Set((channelId_ab_1, 10L))) } + // @formatter:on val nodeParams1 = nodeParams.copy(pluginParams = List(pluginParams)) val c = ChannelCodecsSpec.makeChannelDataNormal(List(relayedHtlcIn, nonRelayedHtlcIn), Map.empty) @@ -628,11 +632,13 @@ class PostRestartHtlcCleanerSpec extends TestKitBaseClass with FixtureAnyFunSuit val trampolineRelayedPaymentHash = randomBytes32 val relayedHtlc1In = buildHtlcIn(0L, channelId_ab_1, trampolineRelayedPaymentHash) + // @formatter:off val pluginParams = new CustomCommitmentsPlugin { override def name = "test with incoming HTLC from remote" override def getIncomingHtlcs(np: NodeParams, log: LoggingAdapter): Seq[PostRestartHtlcCleaner.IncomingHtlc] = List(PostRestartHtlcCleaner.IncomingHtlc(relayedHtlc1In.add, None)) override def getHtlcsRelayedOut(htlcsIn: Seq[PostRestartHtlcCleaner.IncomingHtlc], np: NodeParams, log: LoggingAdapter): Map[Origin, Set[(ByteVector32, Long)]] = Map.empty } + // @formatter:on val cmd1 = CMD_FAIL_HTLC(id = 0L, reason = Left(ByteVector.empty), replyTo_opt = None) val cmd2 = CMD_FAIL_HTLC(id = 1L, reason = Left(ByteVector.empty), replyTo_opt = None) @@ -714,9 +720,7 @@ object PostRestartHtlcCleanerSpec { LocalPaymentTest(parentId, Seq(id1, id2, id3), fails, fulfills) } - case class ChannelRelayedPaymentTest(origin: Origin.ChannelRelayedCold, - downstream: UpdateAddHtlc, - notRelayed: Set[(Long, ByteVector32)]) + case class ChannelRelayedPaymentTest(origin: Origin.ChannelRelayedCold, downstream: UpdateAddHtlc, notRelayed: Set[(Long, ByteVector32)]) def setupChannelRelayedPayments(nodeParams: NodeParams): ChannelRelayedPaymentTest = { // Upstream HTLCs. diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/relay/ChannelRelayerSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/relay/ChannelRelayerSpec.scala index 77cd2e3fed..a51846b271 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/relay/ChannelRelayerSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/relay/ChannelRelayerSpec.scala @@ -22,7 +22,7 @@ import akka.actor.typed.eventstream.EventStream import akka.actor.typed.scaladsl.adapter.TypedActorRefOps import com.typesafe.config.ConfigFactory import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Crypto, Satoshi} +import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Crypto, Satoshi, SatoshiLong} import fr.acinq.eclair.TestConstants.emptyOnionPacket import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.channel._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/payment/relay/NodeRelayerSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/payment/relay/NodeRelayerSpec.scala index 39c97574ac..28fcefdeec 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/payment/relay/NodeRelayerSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/payment/relay/NodeRelayerSpec.scala @@ -16,8 +16,6 @@ package fr.acinq.eclair.payment.relay -import java.util.UUID - import akka.actor.Status import akka.actor.testkit.typed.scaladsl.{ScalaTestWithActorTestKit, TestProbe} import akka.actor.typed.ActorRef @@ -38,11 +36,12 @@ import fr.acinq.eclair.payment.send.PaymentLifecycle.SendPayment import fr.acinq.eclair.router.Router.RouteRequest import fr.acinq.eclair.router.{BalanceTooLow, RouteNotFound} import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, LongToBtcAmount, MilliSatoshi, NodeParams, ShortChannelId, TestConstants, nodeFee, randomBytes, randomBytes32, randomKey} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, MilliSatoshi, MilliSatoshiLong, NodeParams, ShortChannelId, TestConstants, nodeFee, randomBytes, randomBytes32, randomKey} import org.scalatest.funsuite.FixtureAnyFunSuiteLike import org.scalatest.{Outcome, Tag} import scodec.bits.HexStringSyntax +import java.util.UUID import scala.concurrent.duration._ import scala.util.Random diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/router/AnnouncementsBatchValidationSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/router/AnnouncementsBatchValidationSpec.scala index 9fb8f1e661..2cf843be77 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/router/AnnouncementsBatchValidationSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/router/AnnouncementsBatchValidationSpec.scala @@ -21,14 +21,14 @@ import akka.pattern.pipe import akka.testkit.TestProbe import com.softwaremill.sttp.okhttp.OkHttpFutureBackend import fr.acinq.bitcoin.Crypto.PrivateKey -import fr.acinq.bitcoin.{Block, Satoshi, Script, Transaction} +import fr.acinq.bitcoin.{Block, Satoshi, SatoshiLong, Script, Transaction} import fr.acinq.eclair.blockchain.ValidateResult import fr.acinq.eclair.blockchain.bitcoind.BitcoinCoreWallet import fr.acinq.eclair.blockchain.bitcoind.rpc.{BasicBitcoinJsonRPCClient, ExtendedBitcoinClient} import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.transactions.Scripts import fr.acinq.eclair.wire.{ChannelAnnouncement, ChannelUpdate} -import fr.acinq.eclair.{CltvExpiryDelta, Features, LongToBtcAmount, ShortChannelId, randomKey} +import fr.acinq.eclair.{CltvExpiryDelta, Features, MilliSatoshiLong, ShortChannelId, randomKey} import org.json4s.JsonAST.JString import org.scalatest.funsuite.AnyFunSuite diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/router/BaseRouterSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/router/BaseRouterSpec.scala index f877f5b9c2..f4527ae31b 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/router/BaseRouterSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/router/BaseRouterSpec.scala @@ -20,7 +20,7 @@ import akka.actor.ActorRef import akka.testkit.TestProbe import fr.acinq.bitcoin.Crypto.PrivateKey import fr.acinq.bitcoin.Script.{pay2wsh, write} -import fr.acinq.bitcoin.{Block, ByteVector32, Transaction, TxOut} +import fr.acinq.bitcoin.{Block, ByteVector32, SatoshiLong, Transaction, TxOut} import fr.acinq.eclair.TestConstants.Alice import fr.acinq.eclair.blockchain.{UtxoStatus, ValidateRequest, ValidateResult, WatchSpentBasic} import fr.acinq.eclair.channel.{CommitmentsSpec, LocalChannelUpdate} diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/router/ChannelRangeQueriesSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/router/ChannelRangeQueriesSpec.scala index 537f867df4..1f07194f04 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/router/ChannelRangeQueriesSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/router/ChannelRangeQueriesSpec.scala @@ -16,23 +16,21 @@ package fr.acinq.eclair.router -import fr.acinq.bitcoin.{Block, ByteVector32} +import fr.acinq.bitcoin.{Block, ByteVector32, SatoshiLong} import fr.acinq.eclair.router.Router.{ChannelMeta, PublicChannel} import fr.acinq.eclair.router.Sync._ import fr.acinq.eclair.wire.QueryChannelRangeTlv.QueryFlags import fr.acinq.eclair.wire.ReplyChannelRangeTlv._ import fr.acinq.eclair.wire.{EncodedShortChannelIds, EncodingType, ReplyChannelRange} -import fr.acinq.eclair.{LongToBtcAmount, ShortChannelId, randomKey} +import fr.acinq.eclair.{MilliSatoshiLong, ShortChannelId, randomKey} import org.scalatest.funsuite.AnyFunSuite import scodec.bits.ByteVector import scala.annotation.tailrec import scala.collection.immutable.{SortedMap, SortedSet} import scala.collection.mutable.ArrayBuffer -import scala.compat.Platform import scala.util.Random - class ChannelRangeQueriesSpec extends AnyFunSuite { test("ask for update test") { diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/router/GraphSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/router/GraphSpec.scala index 6431cfacef..37fafa0fd5 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/router/GraphSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/router/GraphSpec.scala @@ -16,13 +16,13 @@ package fr.acinq.eclair.router -import fr.acinq.bitcoin.ByteVector32 import fr.acinq.bitcoin.Crypto.PublicKey +import fr.acinq.bitcoin.{ByteVector32, SatoshiLong} import fr.acinq.eclair.router.Graph.GraphStructure.{DirectedGraph, GraphEdge} import fr.acinq.eclair.router.Graph.RoutingHeuristics import fr.acinq.eclair.router.RouteCalculationSpec._ import fr.acinq.eclair.router.Router.{ChannelDesc, PublicChannel} -import fr.acinq.eclair.{LongToBtcAmount, ShortChannelId} +import fr.acinq.eclair.{MilliSatoshiLong, ShortChannelId} import org.scalatest.funsuite.AnyFunSuite import scodec.bits._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/router/NetworkStatsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/router/NetworkStatsSpec.scala index 27b17eb1d5..c276e97408 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/router/NetworkStatsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/router/NetworkStatsSpec.scala @@ -17,10 +17,10 @@ package fr.acinq.eclair.router import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.Satoshi +import fr.acinq.bitcoin.{Satoshi, SatoshiLong} import fr.acinq.eclair.router.Router.{ChannelMeta, PublicChannel} import fr.acinq.eclair.wire.{ChannelAnnouncement, ChannelUpdate} -import fr.acinq.eclair.{CltvExpiryDelta, LongToBtcAmount, MilliSatoshi, ShortChannelId, randomBytes32, randomBytes64, randomKey} +import fr.acinq.eclair.{CltvExpiryDelta, MilliSatoshi, MilliSatoshiLong, ShortChannelId, randomBytes32, randomBytes64, randomKey} import org.scalatest.funsuite.AnyFunSuite import scala.util.Random diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/router/RouteCalculationSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/router/RouteCalculationSpec.scala index 68b6ba466d..74d03748fd 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/router/RouteCalculationSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/router/RouteCalculationSpec.scala @@ -17,7 +17,7 @@ package fr.acinq.eclair.router import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Satoshi} +import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Satoshi, SatoshiLong} import fr.acinq.eclair.payment.PaymentRequest.ExtraHop import fr.acinq.eclair.router.Graph.GraphStructure.DirectedGraph.graphEdgeToHop import fr.acinq.eclair.router.Graph.GraphStructure.{DirectedGraph, GraphEdge} @@ -26,7 +26,7 @@ import fr.acinq.eclair.router.RouteCalculation._ import fr.acinq.eclair.router.Router._ import fr.acinq.eclair.transactions.Transactions import fr.acinq.eclair.wire._ -import fr.acinq.eclair.{CltvExpiryDelta, Features, LongToBtcAmount, MilliSatoshi, ShortChannelId, ToMilliSatoshiConversion, randomKey} +import fr.acinq.eclair.{CltvExpiryDelta, Features, MilliSatoshi, MilliSatoshiLong, ShortChannelId, ToMilliSatoshiConversion, randomKey} import org.scalatest.funsuite.AnyFunSuite import org.scalatest.{ParallelTestExecution, Tag} import scodec.bits._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/router/RouterSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/router/RouterSpec.scala index 291430394b..f917eb123a 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/router/RouterSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/router/RouterSpec.scala @@ -21,7 +21,7 @@ import akka.actor.Status.Failure import akka.testkit.TestProbe import fr.acinq.bitcoin.Crypto.PublicKey import fr.acinq.bitcoin.Script.{pay2wsh, write} -import fr.acinq.bitcoin.{Block, Transaction, TxOut} +import fr.acinq.bitcoin.{Block, SatoshiLong, Transaction, TxOut} import fr.acinq.eclair.blockchain._ import fr.acinq.eclair.channel.{AvailableBalanceChanged, BITCOIN_FUNDING_EXTERNAL_CHANNEL_SPENT, CommitmentsSpec, LocalChannelUpdate} import fr.acinq.eclair.crypto.TransportHandler @@ -32,8 +32,8 @@ import fr.acinq.eclair.router.BaseRouterSpec.channelAnnouncement import fr.acinq.eclair.router.RouteCalculationSpec.{DEFAULT_AMOUNT_MSAT, DEFAULT_MAX_FEE} import fr.acinq.eclair.router.Router._ import fr.acinq.eclair.transactions.Scripts -import fr.acinq.eclair.wire.{ChannelAnnouncement, ChannelUpdate, Color, NodeAnnouncement, QueryShortChannelIds} -import fr.acinq.eclair.{CltvExpiryDelta, Features, LongToBtcAmount, MilliSatoshi, ShortChannelId, TestConstants, randomKey} +import fr.acinq.eclair.wire._ +import fr.acinq.eclair.{CltvExpiryDelta, Features, MilliSatoshi, MilliSatoshiLong, ShortChannelId, TestConstants, randomKey} import scodec.bits._ import scala.concurrent.duration._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/transactions/CommitmentSpecSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/transactions/CommitmentSpecSpec.scala index b3c0c6b417..37e9cc0d3e 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/transactions/CommitmentSpecSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/transactions/CommitmentSpecSpec.scala @@ -16,10 +16,10 @@ package fr.acinq.eclair.transactions -import fr.acinq.bitcoin.{ByteVector32, Crypto} +import fr.acinq.bitcoin.{ByteVector32, Crypto, SatoshiLong} import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.wire.{UpdateAddHtlc, UpdateFailHtlc, UpdateFulfillHtlc} -import fr.acinq.eclair.{CltvExpiry, LongToBtcAmount, TestConstants, randomBytes32} +import fr.acinq.eclair.{CltvExpiry, MilliSatoshiLong, TestConstants, randomBytes32} import org.scalatest.funsuite.AnyFunSuite class CommitmentSpecSpec extends AnyFunSuite { diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TestVectorsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TestVectorsSpec.scala index 0b749f1a4b..cac933662a 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TestVectorsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TestVectorsSpec.scala @@ -17,14 +17,14 @@ package fr.acinq.eclair.transactions import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.{ByteVector32, Crypto, Script, ScriptFlags, Transaction} +import fr.acinq.bitcoin.{ByteVector32, Crypto, SatoshiLong, Script, ScriptFlags, Transaction} import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.channel.ChannelVersion import fr.acinq.eclair.channel.Helpers.Funding import fr.acinq.eclair.crypto.Generators import fr.acinq.eclair.transactions.Transactions._ import fr.acinq.eclair.wire.UpdateAddHtlc -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, LongToBtcAmount, MilliSatoshi, TestConstants} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, MilliSatoshi, MilliSatoshiLong, TestConstants} import grizzled.slf4j.Logging import org.scalatest.funsuite.AnyFunSuite import scodec.bits._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TransactionsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TransactionsSpec.scala index 1327abfcda..f6a9b8f7ab 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TransactionsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/transactions/TransactionsSpec.scala @@ -16,11 +16,9 @@ package fr.acinq.eclair.transactions -import java.nio.ByteOrder - import fr.acinq.bitcoin.Crypto.{PrivateKey, ripemd160, sha256} import fr.acinq.bitcoin.Script.{pay2wpkh, pay2wsh, write} -import fr.acinq.bitcoin.{Btc, ByteVector32, Crypto, MilliBtc, Protocol, SIGHASH_ALL, SIGHASH_ANYONECANPAY, SIGHASH_NONE, SIGHASH_SINGLE, Satoshi, Script, Transaction, TxOut, millibtc2satoshi} +import fr.acinq.bitcoin.{Btc, ByteVector32, Crypto, MilliBtc, MilliBtcDouble, Protocol, SIGHASH_ALL, SIGHASH_ANYONECANPAY, SIGHASH_NONE, SIGHASH_SINGLE, Satoshi, SatoshiLong, Script, Transaction, TxOut, millibtc2satoshi} import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.channel.Helpers.Funding import fr.acinq.eclair.transactions.CommitmentOutput.{InHtlc, OutHtlc} @@ -33,6 +31,7 @@ import grizzled.slf4j.Logging import org.scalatest.funsuite.AnyFunSuite import scodec.bits._ +import java.nio.ByteOrder import scala.io.Source import scala.util.Random @@ -186,7 +185,7 @@ class TransactionsSpec extends AnyFunSuite with Logging { } test("generate valid commitment with some outputs that don't materialize (default commitment format)") { - val spec = CommitmentSpec(htlcs = Set.empty, feeratePerKw = feeratePerKw, toLocal = 400.mbtc.toMilliSatoshi, toRemote = 300.mbtc.toMilliSatoshi) + val spec = CommitmentSpec(htlcs = Set.empty, feeratePerKw = feeratePerKw, toLocal = 400.millibtc.toMilliSatoshi, toRemote = 300.millibtc.toMilliSatoshi) val commitFee = commitTxFee(localDustLimit, spec, DefaultCommitmentFormat) val belowDust = (localDustLimit * 0.9).toMilliSatoshi val belowDustWithFee = (localDustLimit + commitFee * 0.9).toMilliSatoshi @@ -249,8 +248,8 @@ class TransactionsSpec extends AnyFunSuite with Logging { IncomingHtlc(htlc6) ), feeratePerKw = feeratePerKw, - toLocal = 400.mbtc.toMilliSatoshi, - toRemote = 300.mbtc.toMilliSatoshi) + toLocal = 400.millibtc.toMilliSatoshi, + toRemote = 300.millibtc.toMilliSatoshi) val outputs = makeCommitTxOutputs(localIsFunder = true, localDustLimit, localRevocationPriv.publicKey, toLocalDelay, localDelayedPaymentPriv.publicKey, remotePaymentPriv.publicKey, localHtlcPriv.publicKey, remoteHtlcPriv.publicKey, localFundingPriv.publicKey, remoteFundingPriv.publicKey, spec, DefaultCommitmentFormat) @@ -398,7 +397,7 @@ class TransactionsSpec extends AnyFunSuite with Logging { } test("generate valid commitment with some outputs that don't materialize (anchor outputs)") { - val spec = CommitmentSpec(htlcs = Set.empty, feeratePerKw = feeratePerKw, toLocal = 400.mbtc.toMilliSatoshi, toRemote = 300.mbtc.toMilliSatoshi) + val spec = CommitmentSpec(htlcs = Set.empty, feeratePerKw = feeratePerKw, toLocal = 400.millibtc.toMilliSatoshi, toRemote = 300.millibtc.toMilliSatoshi) val commitFee = commitTxFee(localDustLimit, spec, AnchorOutputsCommitmentFormat) val belowDust = (localDustLimit * 0.9).toMilliSatoshi val belowDustWithFeeAndAnchors = (localDustLimit + commitFee * 0.9).toMilliSatoshi @@ -475,8 +474,8 @@ class TransactionsSpec extends AnyFunSuite with Logging { IncomingHtlc(htlc6) ), feeratePerKw = feeratePerKw, - toLocal = 400.mbtc.toMilliSatoshi, - toRemote = 300.mbtc.toMilliSatoshi) + toLocal = 400.millibtc.toMilliSatoshi, + toRemote = 300.millibtc.toMilliSatoshi) val (commitTx, commitTxOutputs, htlcTimeoutTxs, htlcSuccessTxs) = { val commitTxNumber = 0x404142434445L diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/wire/ChannelCodecsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/wire/ChannelCodecsSpec.scala index 151618c9c3..f26f08a090 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/wire/ChannelCodecsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/wire/ChannelCodecsSpec.scala @@ -16,15 +16,12 @@ package fr.acinq.eclair.wire -import java.net.InetSocketAddress -import java.util.UUID - import akka.actor.ActorSystem import akka.testkit.TestProbe import com.google.common.net.HostAndPort import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} import fr.acinq.bitcoin.DeterministicWallet.KeyPath -import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Crypto, DeterministicWallet, OutPoint, Satoshi, Script, Transaction} +import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, Crypto, DeterministicWallet, OutPoint, Satoshi, SatoshiLong, Script, Transaction} import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.channel.Helpers.Funding import fr.acinq.eclair.channel._ @@ -43,6 +40,8 @@ import org.scalatest.funsuite.AnyFunSuite import scodec.bits._ import scodec.{Attempt, Codec, DecodeResult} +import java.net.InetSocketAddress +import java.util.UUID import scala.concurrent.duration._ import scala.io.Source import scala.util.Random @@ -257,9 +256,9 @@ class ChannelCodecsSpec extends AnyFunSuite { assert(originCodec.decodeValue(originCodec.encode(relayedCold).require).require === relayedCold) val adds = Seq( - UpdateAddHtlc(randomBytes32, 1L,1000 msat, randomBytes32, CltvExpiry(400000), TestConstants.emptyOnionPacket), - UpdateAddHtlc(randomBytes32, 1L,2000 msat, randomBytes32, CltvExpiry(400000), TestConstants.emptyOnionPacket), - UpdateAddHtlc(randomBytes32, 2L,3000 msat, randomBytes32, CltvExpiry(400000), TestConstants.emptyOnionPacket), + UpdateAddHtlc(randomBytes32, 1L, 1000 msat, randomBytes32, CltvExpiry(400000), TestConstants.emptyOnionPacket), + UpdateAddHtlc(randomBytes32, 1L, 2000 msat, randomBytes32, CltvExpiry(400000), TestConstants.emptyOnionPacket), + UpdateAddHtlc(randomBytes32, 2L, 3000 msat, randomBytes32, CltvExpiry(400000), TestConstants.emptyOnionPacket), ) val trampolineRelayedHot = Origin.TrampolineRelayedHot(replyTo, adds) val trampolineRelayedCold = Origin.TrampolineRelayedCold(trampolineRelayedHot.htlcs) diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/wire/ExtendedQueriesCodecsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/wire/ExtendedQueriesCodecsSpec.scala index a16714d05e..93c3b32a41 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/wire/ExtendedQueriesCodecsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/wire/ExtendedQueriesCodecsSpec.scala @@ -20,7 +20,7 @@ import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64} import fr.acinq.eclair.router.Sync import fr.acinq.eclair.wire.LightningMessageCodecs._ import fr.acinq.eclair.wire.ReplyChannelRangeTlv._ -import fr.acinq.eclair.{CltvExpiryDelta, LongToBtcAmount, ShortChannelId, UInt64} +import fr.acinq.eclair.{CltvExpiryDelta, MilliSatoshiLong, ShortChannelId, UInt64} import org.scalatest.funsuite.AnyFunSuite import scodec.bits._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/wire/FailureMessageCodecsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/wire/FailureMessageCodecsSpec.scala index 40b803f356..238ce220a8 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/wire/FailureMessageCodecsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/wire/FailureMessageCodecsSpec.scala @@ -19,7 +19,7 @@ package fr.acinq.eclair.wire import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64} import fr.acinq.eclair.crypto.Hmac256 import fr.acinq.eclair.wire.FailureMessageCodecs._ -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, LongToBtcAmount, MilliSatoshi, ShortChannelId, UInt64, randomBytes32, randomBytes64} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, MilliSatoshi, MilliSatoshiLong, ShortChannelId, UInt64, randomBytes32, randomBytes64} import org.scalatest.funsuite.AnyFunSuite import scodec.bits._ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/wire/LightningMessageCodecsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/wire/LightningMessageCodecsSpec.scala index 70e7678dd8..205d108635 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/wire/LightningMessageCodecsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/wire/LightningMessageCodecsSpec.scala @@ -16,10 +16,8 @@ package fr.acinq.eclair.wire -import java.net.{Inet4Address, InetAddress} - import fr.acinq.bitcoin.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64} +import fr.acinq.bitcoin.{Block, ByteVector32, ByteVector64, SatoshiLong} import fr.acinq.eclair._ import fr.acinq.eclair.blockchain.fee.FeeratePerKw import fr.acinq.eclair.router.Announcements @@ -28,6 +26,8 @@ import fr.acinq.eclair.wire.ReplyChannelRangeTlv._ import org.scalatest.funsuite.AnyFunSuite import scodec.bits.{ByteVector, HexStringSyntax} +import java.net.{Inet4Address, InetAddress} + /** * Created by PM on 31/05/2016. */ diff --git a/eclair-core/src/test/scala/fr/acinq/eclair/wire/OnionCodecsSpec.scala b/eclair-core/src/test/scala/fr/acinq/eclair/wire/OnionCodecsSpec.scala index 7e9419c6e8..44f8700f45 100644 --- a/eclair-core/src/test/scala/fr/acinq/eclair/wire/OnionCodecsSpec.scala +++ b/eclair-core/src/test/scala/fr/acinq/eclair/wire/OnionCodecsSpec.scala @@ -23,7 +23,7 @@ import fr.acinq.eclair.payment.PaymentRequest.ExtraHop import fr.acinq.eclair.wire.Onion._ import fr.acinq.eclair.wire.OnionCodecs._ import fr.acinq.eclair.wire.OnionTlv._ -import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, LongToBtcAmount, ShortChannelId, UInt64} +import fr.acinq.eclair.{CltvExpiry, CltvExpiryDelta, MilliSatoshiLong, ShortChannelId, UInt64} import org.scalatest.funsuite.AnyFunSuite import scodec.Attempt import scodec.bits.HexStringSyntax diff --git a/eclair-front/src/test/scala/fr/acinq/eclair/router/FrontRouterSpec.scala b/eclair-front/src/test/scala/fr/acinq/eclair/router/FrontRouterSpec.scala index 0e646b8d7e..d867689d17 100644 --- a/eclair-front/src/test/scala/fr/acinq/eclair/router/FrontRouterSpec.scala +++ b/eclair-front/src/test/scala/fr/acinq/eclair/router/FrontRouterSpec.scala @@ -20,12 +20,12 @@ import akka.actor.ActorSystem import akka.testkit.{TestKit, TestProbe} import fr.acinq.bitcoin.Crypto.PrivateKey import fr.acinq.bitcoin.Script.{pay2wsh, write} -import fr.acinq.bitcoin.{Block, Transaction, TxOut} +import fr.acinq.bitcoin.{Block, SatoshiLong, Transaction, TxOut} import fr.acinq.eclair.TestConstants.Alice import fr.acinq.eclair.blockchain.{UtxoStatus, ValidateRequest, ValidateResult} import fr.acinq.eclair.crypto.TransportHandler import fr.acinq.eclair.io.Peer.PeerRoutingMessage -import fr.acinq.eclair.router.Announcements.{makeChannelAnnouncement, makeChannelUpdate, makeNodeAnnouncement, signChannelAnnouncement} +import fr.acinq.eclair.router.Announcements.{makeChannelAnnouncement, makeChannelUpdate, makeNodeAnnouncement} import fr.acinq.eclair.router.Router._ import fr.acinq.eclair.transactions.Scripts import fr.acinq.eclair.wire.Color diff --git a/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/OpenChannelController.scala b/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/OpenChannelController.scala index e7a11a21ba..8f321ad646 100644 --- a/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/OpenChannelController.scala +++ b/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/OpenChannelController.scala @@ -16,17 +16,14 @@ package fr.acinq.eclair.gui.controllers -import java.lang.Boolean - import com.google.common.base.Strings -import fr.acinq.bitcoin.Satoshi -import fr.acinq.eclair._ +import fr.acinq.bitcoin.SatoshiLong import fr.acinq.eclair.blockchain.fee.{FeeratePerByte, FeeratePerKw} -import fr.acinq.eclair.channel.{Channel, ChannelFlags} +import fr.acinq.eclair.channel.ChannelFlags import fr.acinq.eclair.gui.utils.Constants import fr.acinq.eclair.gui.{FxApp, Handlers} import fr.acinq.eclair.io.{NodeURI, Peer} -import fr.acinq.eclair.{CoinUtils, MilliSatoshi} +import fr.acinq.eclair.{CoinUtils, MilliSatoshi, _} import grizzled.slf4j.Logging import javafx.beans.value.{ChangeListener, ObservableValue} import javafx.event.ActionEvent diff --git a/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/ReceivePaymentController.scala b/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/ReceivePaymentController.scala index 388cf57835..0d4438b805 100644 --- a/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/ReceivePaymentController.scala +++ b/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/ReceivePaymentController.scala @@ -18,7 +18,7 @@ package fr.acinq.eclair.gui.controllers import fr.acinq.eclair.gui.utils._ import fr.acinq.eclair.gui.{FxApp, Handlers} -import fr.acinq.eclair.{CoinUtils, LongToBtcAmount, MilliSatoshi} +import fr.acinq.eclair.{CoinUtils, MilliSatoshi, MilliSatoshiLong} import grizzled.slf4j.Logging import javafx.application.Platform import javafx.event.ActionEvent diff --git a/eclair-node/src/test/scala/fr/acinq/eclair/api/ApiServiceSpec.scala b/eclair-node/src/test/scala/fr/acinq/eclair/api/ApiServiceSpec.scala index 7cd5e61a08..247416c4aa 100644 --- a/eclair-node/src/test/scala/fr/acinq/eclair/api/ApiServiceSpec.scala +++ b/eclair-node/src/test/scala/fr/acinq/eclair/api/ApiServiceSpec.scala @@ -16,8 +16,6 @@ package fr.acinq.eclair.api -import java.util.UUID - import akka.actor.{ActorRef, ActorSystem} import akka.http.scaladsl.model.FormData import akka.http.scaladsl.model.StatusCodes._ @@ -28,7 +26,7 @@ import akka.stream.Materializer import akka.util.Timeout import de.heikoseeberger.akkahttpjson4s.Json4sSupport import fr.acinq.bitcoin.Crypto.PublicKey -import fr.acinq.bitcoin.{Block, ByteVector32} +import fr.acinq.bitcoin.{Block, ByteVector32, SatoshiLong} import fr.acinq.eclair.ApiTypes.ChannelIdentifier import fr.acinq.eclair.FeatureSupport.{Mandatory, Optional} import fr.acinq.eclair.Features.{ChannelRangeQueriesExtended, OptionDataLossProtect} @@ -51,6 +49,7 @@ import org.scalatest.funsuite.AnyFunSuite import org.scalatest.matchers.should.Matchers import scodec.bits._ +import java.util.UUID import scala.concurrent.Future import scala.concurrent.duration._ import scala.io.Source From 797841c8300de5df762bd21c23ed599abb5cc09b Mon Sep 17 00:00:00 2001 From: t-bast Date: Tue, 15 Dec 2020 11:17:57 +0100 Subject: [PATCH 2/3] fixup! Fix duplicate implicit btc amount conversions --- .../fr/acinq/eclair/gui/controllers/OpenChannelController.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/OpenChannelController.scala b/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/OpenChannelController.scala index 8f321ad646..ad915a45da 100644 --- a/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/OpenChannelController.scala +++ b/eclair-node-gui/src/main/scala/fr/acinq/eclair/gui/controllers/OpenChannelController.scala @@ -31,6 +31,7 @@ import javafx.fxml.FXML import javafx.scene.control._ import javafx.stage.Stage +import java.lang.Boolean import scala.concurrent.ExecutionContext import scala.concurrent.duration._ import scala.util.{Failure, Success, Try} From 9ebf61f61aba31ef08b4f295877f4f7b77c25272 Mon Sep 17 00:00:00 2001 From: t-bast Date: Tue, 15 Dec 2020 11:18:24 +0100 Subject: [PATCH 3/3] Revert `parseString` change --- eclair-core/src/main/scala/fr/acinq/eclair/package.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/package.scala b/eclair-core/src/main/scala/fr/acinq/eclair/package.scala index f0fb8a71d4..9f0c5a379b 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/package.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/package.scala @@ -114,7 +114,7 @@ package object eclair { override def toFloat(x: MilliSatoshi): Float = x.toLong override def toDouble(x: MilliSatoshi): Double = x.toLong override def compare(x: MilliSatoshi, y: MilliSatoshi): Int = x.compare(y) - override def parseString(str: String): Option[MilliSatoshi] = None + override def parseString(str: String): Option[MilliSatoshi] = ??? // @formatter:on }