mirror of
https://github.com/ACINQ/eclair.git
synced 2025-03-14 03:48:13 +01:00
fixup! Update android branch (#1162)
This commit is contained in:
parent
8ca798176d
commit
fb8ae0cd59
3 changed files with 20 additions and 25 deletions
eclair-core/src
main/scala/fr/acinq/eclair/db
test/scala/fr/acinq/eclair/db
|
@ -19,11 +19,8 @@ package fr.acinq.eclair.db
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.sql.{Connection, DriverManager}
|
import java.sql.{Connection, DriverManager}
|
||||||
|
|
||||||
import fr.acinq.bitcoin.Block
|
|
||||||
import fr.acinq.eclair.NodeParams
|
|
||||||
import fr.acinq.eclair.db.sqlite._
|
import fr.acinq.eclair.db.sqlite._
|
||||||
import grizzled.slf4j.Logging
|
import grizzled.slf4j.Logging
|
||||||
import org.sqlite.SQLiteException
|
|
||||||
|
|
||||||
trait Databases {
|
trait Databases {
|
||||||
|
|
||||||
|
@ -75,7 +72,7 @@ object Databases extends Logging {
|
||||||
}
|
}
|
||||||
|
|
||||||
def databaseByConnections(auditJdbc: Connection, networkJdbc: Connection, eclairJdbc: Connection) = new Databases {
|
def databaseByConnections(auditJdbc: Connection, networkJdbc: Connection, eclairJdbc: Connection) = new Databases {
|
||||||
override val network = new SqliteNetworkDb(networkJdbc, Block.RegtestGenesisBlock.hash)
|
override val network = new SqliteNetworkDb(networkJdbc)
|
||||||
override val audit = new SqliteAuditDb(auditJdbc)
|
override val audit = new SqliteAuditDb(auditJdbc)
|
||||||
override val channels = new SqliteChannelsDb(eclairJdbc)
|
override val channels = new SqliteChannelsDb(eclairJdbc)
|
||||||
override val peers = new SqlitePeersDb(eclairJdbc)
|
override val peers = new SqlitePeersDb(eclairJdbc)
|
||||||
|
|
|
@ -20,20 +20,19 @@ import java.sql.Connection
|
||||||
|
|
||||||
import fr.acinq.bitcoin.Crypto.PublicKey
|
import fr.acinq.bitcoin.Crypto.PublicKey
|
||||||
import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, Satoshi}
|
import fr.acinq.bitcoin.{ByteVector32, ByteVector64, Crypto, Satoshi}
|
||||||
import fr.acinq.eclair.{Features, ShortChannelId}
|
|
||||||
import fr.acinq.eclair.db.NetworkDb
|
import fr.acinq.eclair.db.NetworkDb
|
||||||
import fr.acinq.eclair.router.Router.PublicChannel
|
import fr.acinq.eclair.router.Router.PublicChannel
|
||||||
import fr.acinq.eclair.wire.LightningMessageCodecs.{channelAnnouncementCodec, channelUpdateCodec, nodeAnnouncementCodec}
|
import fr.acinq.eclair.wire.LightningMessageCodecs.nodeAnnouncementCodec
|
||||||
import fr.acinq.eclair.wire.{ChannelAnnouncement, ChannelUpdate, NodeAnnouncement}
|
import fr.acinq.eclair.wire.{ChannelAnnouncement, ChannelUpdate, NodeAnnouncement}
|
||||||
|
import fr.acinq.eclair.{Features, ShortChannelId}
|
||||||
import grizzled.slf4j.Logging
|
import grizzled.slf4j.Logging
|
||||||
import scodec.Codec
|
import scodec.Codec
|
||||||
import scodec.bits.ByteVector
|
|
||||||
|
|
||||||
import scala.collection.immutable.SortedMap
|
import scala.collection.immutable.SortedMap
|
||||||
|
|
||||||
class SqliteNetworkDb(sqlite: Connection, chainHash: ByteVector32) extends NetworkDb with Logging {
|
class SqliteNetworkDb(sqlite: Connection) extends NetworkDb with Logging {
|
||||||
import SqliteUtils._
|
|
||||||
import SqliteUtils.ExtendedResultSet._
|
import SqliteUtils.ExtendedResultSet._
|
||||||
|
import SqliteUtils._
|
||||||
|
|
||||||
val DB_NAME = "network"
|
val DB_NAME = "network"
|
||||||
val CURRENT_VERSION = 2
|
val CURRENT_VERSION = 2
|
||||||
|
@ -60,7 +59,7 @@ class SqliteNetworkDb(sqlite: Connection, chainHash: ByteVector32) extends Netwo
|
||||||
channelAnnouncementWitnessCodec).as[ChannelAnnouncement]
|
channelAnnouncementWitnessCodec).as[ChannelAnnouncement]
|
||||||
|
|
||||||
val channelUpdateWitnessCodec =
|
val channelUpdateWitnessCodec =
|
||||||
("chainHash" | provide(chainHash)) ::
|
("chainHash" | provide(null.asInstanceOf[ByteVector32])) ::
|
||||||
("shortChannelId" | shortchannelid) ::
|
("shortChannelId" | shortchannelid) ::
|
||||||
("timestamp" | uint32) ::
|
("timestamp" | uint32) ::
|
||||||
(("messageFlags" | byte) >>:~ { messageFlags =>
|
(("messageFlags" | byte) >>:~ { messageFlags =>
|
||||||
|
|
|
@ -26,10 +26,9 @@ import fr.acinq.eclair.db.sqlite.SqliteNetworkDb
|
||||||
import fr.acinq.eclair.db.sqlite.SqliteUtils._
|
import fr.acinq.eclair.db.sqlite.SqliteUtils._
|
||||||
import fr.acinq.eclair.router.Announcements
|
import fr.acinq.eclair.router.Announcements
|
||||||
import fr.acinq.eclair.router.Router.PublicChannel
|
import fr.acinq.eclair.router.Router.PublicChannel
|
||||||
import fr.acinq.eclair.wire.{ChannelAnnouncement, ChannelUpdate, Color, NodeAddress, Tor2}
|
import fr.acinq.eclair.wire._
|
||||||
import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, LongToBtcAmount, ShortChannelId, TestConstants, randomBytes32, randomKey}
|
import fr.acinq.eclair.{ActivatedFeature, CltvExpiryDelta, Features, LongToBtcAmount, ShortChannelId, TestConstants, randomBytes32, randomKey}
|
||||||
import org.scalatest.funsuite.AnyFunSuite
|
import org.scalatest.funsuite.AnyFunSuite
|
||||||
import scodec.bits.HexStringSyntax
|
|
||||||
|
|
||||||
import scala.collection.{SortedMap, mutable}
|
import scala.collection.{SortedMap, mutable}
|
||||||
|
|
||||||
|
@ -39,8 +38,8 @@ class SqliteNetworkDbSpec extends AnyFunSuite {
|
||||||
|
|
||||||
test("init sqlite 2 times in a row") {
|
test("init sqlite 2 times in a row") {
|
||||||
val sqlite = TestConstants.sqliteInMemory()
|
val sqlite = TestConstants.sqliteInMemory()
|
||||||
val db1 = new SqliteNetworkDb(sqlite, Block.RegtestGenesisBlock.hash)
|
val db1 = new SqliteNetworkDb(sqlite)
|
||||||
val db2 = new SqliteNetworkDb(sqlite, Block.RegtestGenesisBlock.hash)
|
val db2 = new SqliteNetworkDb(sqlite)
|
||||||
}
|
}
|
||||||
|
|
||||||
test("migration test 1->2") {
|
test("migration test 1->2") {
|
||||||
|
@ -82,7 +81,7 @@ class SqliteNetworkDbSpec extends AnyFunSuite {
|
||||||
|
|
||||||
test("add/remove/list nodes") {
|
test("add/remove/list nodes") {
|
||||||
val sqlite = TestConstants.sqliteInMemory()
|
val sqlite = TestConstants.sqliteInMemory()
|
||||||
val db = new SqliteNetworkDb(sqlite, Block.RegtestGenesisBlock.hash)
|
val db = new SqliteNetworkDb(sqlite)
|
||||||
|
|
||||||
val node_1 = Announcements.makeNodeAnnouncement(randomKey, "node-alice", Color(100.toByte, 200.toByte, 300.toByte), NodeAddress.fromParts("192.168.1.42", 42000).get :: Nil, Features.empty)
|
val node_1 = Announcements.makeNodeAnnouncement(randomKey, "node-alice", Color(100.toByte, 200.toByte, 300.toByte), NodeAddress.fromParts("192.168.1.42", 42000).get :: Nil, Features.empty)
|
||||||
val node_2 = Announcements.makeNodeAnnouncement(randomKey, "node-bob", Color(100.toByte, 200.toByte, 300.toByte), NodeAddress.fromParts("192.168.1.42", 42000).get :: Nil, Features(Set(ActivatedFeature(VariableLengthOnion, Optional))))
|
val node_2 = Announcements.makeNodeAnnouncement(randomKey, "node-bob", Color(100.toByte, 200.toByte, 300.toByte), NodeAddress.fromParts("192.168.1.42", 42000).get :: Nil, Features(Set(ActivatedFeature(VariableLengthOnion, Optional))))
|
||||||
|
@ -107,7 +106,7 @@ class SqliteNetworkDbSpec extends AnyFunSuite {
|
||||||
|
|
||||||
test("correctly handle txids that start with 0") {
|
test("correctly handle txids that start with 0") {
|
||||||
val sqlite = TestConstants.sqliteInMemory()
|
val sqlite = TestConstants.sqliteInMemory()
|
||||||
val db = new SqliteNetworkDb(sqlite, Block.RegtestGenesisBlock.hash)
|
val db = new SqliteNetworkDb(sqlite)
|
||||||
val sig = ByteVector64.Zeroes
|
val sig = ByteVector64.Zeroes
|
||||||
val c = Announcements.makeChannelAnnouncement(Block.RegtestGenesisBlock.hash, ShortChannelId(42), randomKey.publicKey, randomKey.publicKey, randomKey.publicKey, randomKey.publicKey, sig, sig, sig, sig)
|
val c = Announcements.makeChannelAnnouncement(Block.RegtestGenesisBlock.hash, ShortChannelId(42), randomKey.publicKey, randomKey.publicKey, randomKey.publicKey, randomKey.publicKey, sig, sig, sig, sig)
|
||||||
val c_shrunk = shrink(c)
|
val c_shrunk = shrink(c)
|
||||||
|
@ -118,10 +117,10 @@ class SqliteNetworkDbSpec extends AnyFunSuite {
|
||||||
|
|
||||||
def shrink(c: ChannelAnnouncement) = c.copy(bitcoinKey1 = null, bitcoinKey2 = null, bitcoinSignature1 = null, bitcoinSignature2 = null, nodeSignature1 = null, nodeSignature2 = null, chainHash = null, features = null)
|
def shrink(c: ChannelAnnouncement) = c.copy(bitcoinKey1 = null, bitcoinKey2 = null, bitcoinSignature1 = null, bitcoinSignature2 = null, nodeSignature1 = null, nodeSignature2 = null, chainHash = null, features = null)
|
||||||
|
|
||||||
def shrink(c: ChannelUpdate) = c.copy(signature = null)
|
def shrink(c: ChannelUpdate) = c.copy(signature = null, chainHash = null)
|
||||||
|
|
||||||
def simpleTest(sqlite: Connection) = {
|
def simpleTest(sqlite: Connection) = {
|
||||||
val db = new SqliteNetworkDb(sqlite, Block.RegtestGenesisBlock.hash)
|
val db = new SqliteNetworkDb(sqlite)
|
||||||
|
|
||||||
def sig = Crypto.sign(randomBytes32, randomKey)
|
def sig = Crypto.sign(randomBytes32, randomKey)
|
||||||
|
|
||||||
|
@ -229,7 +228,7 @@ class SqliteNetworkDbSpec extends AnyFunSuite {
|
||||||
|
|
||||||
test("remove many channels") {
|
test("remove many channels") {
|
||||||
val sqlite = TestConstants.sqliteInMemory()
|
val sqlite = TestConstants.sqliteInMemory()
|
||||||
val db = new SqliteNetworkDb(sqlite, Block.RegtestGenesisBlock.hash)
|
val db = new SqliteNetworkDb(sqlite)
|
||||||
val sig = Crypto.sign(randomBytes32, randomKey)
|
val sig = Crypto.sign(randomBytes32, randomKey)
|
||||||
val priv = randomKey
|
val priv = randomKey
|
||||||
val pub = priv.publicKey
|
val pub = priv.publicKey
|
||||||
|
@ -250,7 +249,7 @@ class SqliteNetworkDbSpec extends AnyFunSuite {
|
||||||
|
|
||||||
test("prune many channels") {
|
test("prune many channels") {
|
||||||
val sqlite = TestConstants.sqliteInMemory()
|
val sqlite = TestConstants.sqliteInMemory()
|
||||||
val db = new SqliteNetworkDb(sqlite, Block.RegtestGenesisBlock.hash)
|
val db = new SqliteNetworkDb(sqlite)
|
||||||
|
|
||||||
db.addToPruned(shortChannelIds)
|
db.addToPruned(shortChannelIds)
|
||||||
shortChannelIds.foreach { id => assert(db.isPruned((id))) }
|
shortChannelIds.foreach { id => assert(db.isPruned((id))) }
|
||||||
|
|
Loading…
Add table
Reference in a new issue