From b93677e173552a8492d96799e1629d33eda8decb Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Fri, 20 Jan 2023 09:30:23 +0100 Subject: [PATCH 1/9] ci: build custom docker image for alby --- .github/workflows/docker-image.yml | 33 ++++++++++++++---------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 602b224dcf..a495ee2a03 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -1,25 +1,22 @@ -name: Docker Image CI - +name: Docker build & push on: push: - branches: [ master ] - + release: + types: [published] jobs: - build: - + env: + REGISTRY: ghcr.io + IMAGENAME: ${{ github.event.repository.name }} runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: docker login - uses: docker/login-action@v2 + - uses: actions/checkout@v2 + name: Check out code + - name: Docker build + uses: mr-smithers-excellent/docker-build-push@v5 + id: build with: - username: ${{ secrets.DOCKER_USER }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: build the Docker image - run: docker build -t acinq/eclair . - - - name: docker push - run: docker push acinq/eclair + image: ${{ env.IMAGENAME }} + registry: ${{ env.REGISTRY }} + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 9b72c8b44cbe44fb6d709327bafea510526fb5a7 Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Fri, 20 Jan 2023 09:30:54 +0100 Subject: [PATCH 2/9] misc: gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index f72ed6206a..a0c5670a2d 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ DeleteMe*.* jdbcUrlFile_*.tmp .DS_Store +.vscode From bc25df3bc6b5420caae5f7171d746e33440f06ab Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Tue, 31 Jan 2023 14:46:47 +0100 Subject: [PATCH 3/9] change right file this time --- .../fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala index 484554deff..097e5f5cf9 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala @@ -28,7 +28,7 @@ object LocalNodeKeyManager { // Note that the node path and the above channel path are on different branches so even if the // node key is compromised there is no way to retrieve the wallet keys def keyBasePath(chainHash: ByteVector32): List[Long] = (chainHash: @unchecked) match { - case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => DeterministicWallet.hardened(46) :: DeterministicWallet.hardened(0) :: Nil + case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => List(1017, 1, 6) case Block.LivenetGenesisBlock.hash => DeterministicWallet.hardened(47) :: DeterministicWallet.hardened(0) :: Nil } } From e8862b9d2ea239a992cd628c35eeba46a2cc48c1 Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Tue, 31 Jan 2023 15:03:29 +0100 Subject: [PATCH 4/9] harden keys --- .../fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala index 097e5f5cf9..444b82e4d6 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala @@ -28,7 +28,7 @@ object LocalNodeKeyManager { // Note that the node path and the above channel path are on different branches so even if the // node key is compromised there is no way to retrieve the wallet keys def keyBasePath(chainHash: ByteVector32): List[Long] = (chainHash: @unchecked) match { - case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => List(1017, 1, 6) + case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => DeterministicWallet.hardened(1017) :: DeterministicWallet.hardened(1) :: DeterministicWallet.hardened(6) case Block.LivenetGenesisBlock.hash => DeterministicWallet.hardened(47) :: DeterministicWallet.hardened(0) :: Nil } } From 25ac6690e6404430cac825313fe3cb089e5ae385 Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Tue, 31 Jan 2023 15:41:54 +0100 Subject: [PATCH 5/9] I don't understand scala --- .../fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala index 444b82e4d6..c8ecf26a82 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala @@ -28,7 +28,7 @@ object LocalNodeKeyManager { // Note that the node path and the above channel path are on different branches so even if the // node key is compromised there is no way to retrieve the wallet keys def keyBasePath(chainHash: ByteVector32): List[Long] = (chainHash: @unchecked) match { - case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => DeterministicWallet.hardened(1017) :: DeterministicWallet.hardened(1) :: DeterministicWallet.hardened(6) + case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => List(DeterministicWallet.hardened(1017), DeterministicWallet.hardened(1), DeterministicWallet.hardened(6)) case Block.LivenetGenesisBlock.hash => DeterministicWallet.hardened(47) :: DeterministicWallet.hardened(0) :: Nil } } From 64c09ed686eb5199b743a7153d66bc653fae9b16 Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Tue, 31 Jan 2023 16:04:29 +0100 Subject: [PATCH 6/9] I don't understand scala --- .../fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala index c8ecf26a82..8b6da87403 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala @@ -28,7 +28,7 @@ object LocalNodeKeyManager { // Note that the node path and the above channel path are on different branches so even if the // node key is compromised there is no way to retrieve the wallet keys def keyBasePath(chainHash: ByteVector32): List[Long] = (chainHash: @unchecked) match { - case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => List(DeterministicWallet.hardened(1017), DeterministicWallet.hardened(1), DeterministicWallet.hardened(6)) + case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => List(DeterministicWallet.hardened(6), DeterministicWallet.hardened(1), DeterministicWallet.hardened(1017)) case Block.LivenetGenesisBlock.hash => DeterministicWallet.hardened(47) :: DeterministicWallet.hardened(0) :: Nil } } From 83a51d10a9563ce4700e0312442654892c52a0d1 Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Tue, 31 Jan 2023 17:10:28 +0100 Subject: [PATCH 7/9] just try to throw the book at it --- .../fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala index 8b6da87403..c611fe2641 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala @@ -42,7 +42,7 @@ object LocalNodeKeyManager { class LocalNodeKeyManager(seed: ByteVector, chainHash: ByteVector32) extends NodeKeyManager with Logging { private val master = DeterministicWallet.generate(seed) - override val nodeKey: ExtendedPrivateKey = DeterministicWallet.derivePrivateKey(master, LocalNodeKeyManager.keyBasePath(chainHash)) + override val nodeKey: ExtendedPrivateKey = DeterministicWallet.derivePrivateKey(master, "m/1017'/1'/6'/0") override val nodeId: PublicKey = nodeKey.publicKey override def signDigest(digest: ByteVector32, privateKey: PrivateKey = nodeKey.privateKey): (ByteVector64, Int) = { From 67aad19c4cbbe10726af443783eccf75258c71c3 Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Tue, 31 Jan 2023 17:24:07 +0100 Subject: [PATCH 8/9] just try to throw the book at it --- .../acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala index c611fe2641..fe1740cc22 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala @@ -17,7 +17,7 @@ package fr.acinq.eclair.crypto.keymanager import fr.acinq.bitcoin.scalacompat.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.scalacompat.DeterministicWallet.ExtendedPrivateKey +import fr.acinq.bitcoin.scalacompat.DeterministicWallet.{ExtendedPrivateKey, KeyPath} import fr.acinq.bitcoin.scalacompat.{Block, ByteVector32, ByteVector64, Crypto, DeterministicWallet} import fr.acinq.eclair.router.Announcements import grizzled.slf4j.Logging @@ -42,7 +42,7 @@ object LocalNodeKeyManager { class LocalNodeKeyManager(seed: ByteVector, chainHash: ByteVector32) extends NodeKeyManager with Logging { private val master = DeterministicWallet.generate(seed) - override val nodeKey: ExtendedPrivateKey = DeterministicWallet.derivePrivateKey(master, "m/1017'/1'/6'/0") + override val nodeKey: ExtendedPrivateKey = DeterministicWallet.derivePrivateKey(master, KeyPath("m/1017'/1'/6'/0")) override val nodeId: PublicKey = nodeKey.publicKey override def signDigest(digest: ByteVector32, privateKey: PrivateKey = nodeKey.privateKey): (ByteVector64, Int) = { From 32e6d0f76abb44b351a4c1b3d0eb0cadbc8dd8d5 Mon Sep 17 00:00:00 2001 From: kiwiidb Date: Tue, 31 Jan 2023 17:43:00 +0100 Subject: [PATCH 9/9] try something else again --- .../eclair/crypto/keymanager/LocalNodeKeyManager.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala index fe1740cc22..8d9ed455a1 100644 --- a/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala +++ b/eclair-core/src/main/scala/fr/acinq/eclair/crypto/keymanager/LocalNodeKeyManager.scala @@ -17,7 +17,7 @@ package fr.acinq.eclair.crypto.keymanager import fr.acinq.bitcoin.scalacompat.Crypto.{PrivateKey, PublicKey} -import fr.acinq.bitcoin.scalacompat.DeterministicWallet.{ExtendedPrivateKey, KeyPath} +import fr.acinq.bitcoin.scalacompat.DeterministicWallet.ExtendedPrivateKey import fr.acinq.bitcoin.scalacompat.{Block, ByteVector32, ByteVector64, Crypto, DeterministicWallet} import fr.acinq.eclair.router.Announcements import grizzled.slf4j.Logging @@ -28,7 +28,7 @@ object LocalNodeKeyManager { // Note that the node path and the above channel path are on different branches so even if the // node key is compromised there is no way to retrieve the wallet keys def keyBasePath(chainHash: ByteVector32): List[Long] = (chainHash: @unchecked) match { - case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => List(DeterministicWallet.hardened(6), DeterministicWallet.hardened(1), DeterministicWallet.hardened(1017)) + case Block.RegtestGenesisBlock.hash | Block.TestnetGenesisBlock.hash | Block.SignetGenesisBlock.hash => DeterministicWallet.hardened(1017) :: DeterministicWallet.hardened(1) :: DeterministicWallet.hardened(6) :: Nil case Block.LivenetGenesisBlock.hash => DeterministicWallet.hardened(47) :: DeterministicWallet.hardened(0) :: Nil } } @@ -42,7 +42,7 @@ object LocalNodeKeyManager { class LocalNodeKeyManager(seed: ByteVector, chainHash: ByteVector32) extends NodeKeyManager with Logging { private val master = DeterministicWallet.generate(seed) - override val nodeKey: ExtendedPrivateKey = DeterministicWallet.derivePrivateKey(master, KeyPath("m/1017'/1'/6'/0")) + override val nodeKey: ExtendedPrivateKey = DeterministicWallet.derivePrivateKey(master, LocalNodeKeyManager.keyBasePath(chainHash)) override val nodeId: PublicKey = nodeKey.publicKey override def signDigest(digest: ByteVector32, privateKey: PrivateKey = nodeKey.privateKey): (ByteVector64, Int) = {