Skip to content

Commit 105e664

Browse files
authored
Merge pull request #252 from synonymdev/close-addresses
fix: save addresses only when used for closing a channel
2 parents 7902df4 + b69de59 commit 105e664

File tree

12 files changed

+68
-18
lines changed

12 files changed

+68
-18
lines changed

.github/workflows/e2e-android.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ on:
1010

1111
jobs:
1212
e2e-android:
13-
runs-on: macos-12
13+
runs-on: macos-13
1414
timeout-minutes: 120
1515

1616
steps:

example/ios/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ PODS:
316316
- React-jsinspector (0.72.4)
317317
- React-logger (0.72.4):
318318
- glog
319-
- react-native-ldk (0.0.143):
319+
- react-native-ldk (0.0.145):
320320
- React
321321
- react-native-randombytes (3.6.1):
322322
- React-Core
@@ -621,7 +621,7 @@ SPEC CHECKSUMS:
621621
React-jsiexecutor: c7f826e40fa9cab5d37cab6130b1af237332b594
622622
React-jsinspector: aaed4cf551c4a1c98092436518c2d267b13a673f
623623
React-logger: da1ebe05ae06eb6db4b162202faeafac4b435e77
624-
react-native-ldk: 12d78fe1141ad4343a2842340f7ebf8539dcc3b0
624+
react-native-ldk: 496216796eafbd77c43cd5228342460a242cf7ed
625625
react-native-randombytes: 421f1c7d48c0af8dbcd471b0324393ebf8fe7846
626626
react-native-tcp-socket: c1b7297619616b4c9caae6889bcb0aba78086989
627627
React-NativeModulesApple: edb5ace14f73f4969df6e7b1f3e41bef0012740f

example/ios/exmpl.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@
433433
baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-exmpl-exmplTests.debug.xcconfig */;
434434
buildSettings = {
435435
BUNDLE_LOADER = "$(TEST_HOST)";
436+
DEVELOPMENT_TEAM = KYH47R284B;
436437
GCC_PREPROCESSOR_DEFINITIONS = (
437438
"DEBUG=1",
438439
"$(inherited)",
@@ -516,6 +517,7 @@
516517
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
517518
CLANG_ENABLE_MODULES = YES;
518519
CURRENT_PROJECT_VERSION = 1;
520+
DEVELOPMENT_TEAM = KYH47R284B;
519521
INFOPLIST_FILE = exmpl/Info.plist;
520522
IPHONEOS_DEPLOYMENT_TARGET = 13;
521523
LD_RUNPATH_SEARCH_PATHS = (

lib/android/src/main/java/com/reactnativeldk/LdkModule.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ enum class EventTypes {
5454
network_graph_updated,
5555
channel_manager_restarted,
5656
backup_state_update,
57-
lsp_log
57+
lsp_log,
58+
used_close_address
5859
}
5960
//*****************************************************************
6061

@@ -242,7 +243,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
242243
}
243244

244245
@ReactMethod
245-
fun initKeysManager(seed: String, destinationScriptPublicKey: String, witnessProgram: String, witnessProgramVersion: Double, promise: Promise) {
246+
fun initKeysManager(seed: String, address: String, destinationScriptPublicKey: String, witnessProgram: String, witnessProgramVersion: Double, promise: Promise) {
246247
if (keysManager != null) {
247248
return handleResolve(promise, LdkCallbackResponses.keys_manager_init_success)
248249
}
@@ -259,11 +260,11 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
259260
seedBytes,
260261
seconds,
261262
nanoSeconds.toInt(),
263+
address,
262264
destinationScriptPublicKey.hexa(),
263265
witnessProgram.hexa(),
264266
witnessProgramVersion.toInt().toByte()
265267
)
266-
//keysManager = KeysManager.of(seedBytes, seconds, nanoSeconds.toInt())
267268

268269
handleResolve(promise, LdkCallbackResponses.keys_manager_init_success)
269270
}

lib/android/src/main/java/com/reactnativeldk/classes/CustomKeysManager.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class CustomKeysManager(
2222
seed: ByteArray,
2323
startingTimeSecs: Long,
2424
startingTimeNanos: Int,
25+
val address: String,
2526
val destinationScriptPublicKey: ByteArray,
2627
val witnessProgram: ByteArray,
2728
val witnessProgramVersion: Byte
@@ -68,6 +69,7 @@ class CustomSignerProvider : SignerProviderInterface {
6869
val res = ShutdownScript.new_witness_program(witness)
6970

7071
return if (res.is_ok) {
72+
LdkEventEmitter.send(EventTypes.used_close_address, customKeysManager.address)
7173
Result_ShutdownScriptNoneZ.ok((res as Result_ShutdownScriptInvalidShutdownScriptZ.Result_ShutdownScriptInvalidShutdownScriptZ_OK).res)
7274
} else {
7375
Result_ShutdownScriptNoneZ.err()

lib/ios/Classes/CustomKeysManager.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ import LightningDevKit
1111
class CustomKeysManager {
1212
let inner: KeysManager
1313
let signerProvider: CustomSignerProvider
14+
let address: String
1415
let destinationScriptPublicKey: [UInt8]
1516
let witnessProgram: [UInt8]
1617
let witnessProgramVersion: UInt8
1718

18-
init(seed: [UInt8], startingTimeSecs: UInt64, startingTimeNanos: UInt32, destinationScriptPublicKey: [UInt8], witnessProgram: [UInt8], witnessProgramVersion: UInt8) {
19+
init(seed: [UInt8], startingTimeSecs: UInt64, startingTimeNanos: UInt32, address: String, destinationScriptPublicKey: [UInt8], witnessProgram: [UInt8], witnessProgramVersion: UInt8) {
1920
self.inner = KeysManager(seed: seed, startingTimeSecs: startingTimeSecs, startingTimeNanos: startingTimeNanos)
21+
self.address = address
2022
self.destinationScriptPublicKey = destinationScriptPublicKey
2123
self.witnessProgram = witnessProgram
2224
self.witnessProgramVersion = witnessProgramVersion
@@ -61,6 +63,8 @@ class CustomSignerProvider: SignerProvider {
6163
override func getShutdownScriptpubkey() -> Bindings.Result_ShutdownScriptNoneZ {
6264
let res = ShutdownScript.newWitnessProgram(witnessProgram: .init(version: customKeysManager!.witnessProgramVersion, program: customKeysManager!.witnessProgram))
6365
if res.isOk() {
66+
//To record which addresses should be watched for close channel funds
67+
LdkEventEmitter.shared.send(withEvent: .used_close_address, body: customKeysManager!.address)
6468
return Bindings.Result_ShutdownScriptNoneZ.initWithOk(o: res.getValue()!)
6569
}
6670

lib/ios/Ldk.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ @interface RCT_EXTERN_MODULE(Ldk, NSObject)
1616
RCT_EXTERN_METHOD(initChainMonitor:(RCTPromiseResolveBlock)resolve
1717
reject:(RCTPromiseRejectBlock)reject)
1818
RCT_EXTERN_METHOD(initKeysManager:(NSString *)seed
19+
address:(NSString *)address
1920
destinationScriptPublicKey:(NSString *)destinationScriptPublicKey
2021
witnessProgram:(NSString *)witnessProgram
2122
witnessProgramVersion:(NSInteger *)witnessProgramVersion

lib/ios/Ldk.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ enum EventTypes: String, CaseIterable {
2626
case channel_manager_restarted = "channel_manager_restarted"
2727
case backup_state_update = "backup_state_update"
2828
case lsp_log = "lsp_log"
29+
case used_close_address = "used_close_address"
2930
}
3031
//*****************************************************************
3132

@@ -210,7 +211,7 @@ class Ldk: NSObject {
210211
}
211212

212213
@objc
213-
func initKeysManager(_ seed: NSString, destinationScriptPublicKey: NSString, witnessProgram: NSString, witnessProgramVersion: NSInteger, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
214+
func initKeysManager(_ seed: NSString, address: NSString, destinationScriptPublicKey: NSString, witnessProgram: NSString, witnessProgramVersion: NSInteger, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
214215
if keysManager != nil {
215216
//If previously started with the same key (by backup client) return success.
216217
return handleResolve(resolve, .keys_manager_init_success)
@@ -228,6 +229,7 @@ class Ldk: NSObject {
228229
seed: String(seed).hexaBytes,
229230
startingTimeSecs: seconds,
230231
startingTimeNanos: nanoSeconds,
232+
address: String(address),
231233
destinationScriptPublicKey: String(destinationScriptPublicKey).hexaBytes,
232234
witnessProgram: String(witnessProgram).hexaBytes,
233235
witnessProgramVersion: UInt8(witnessProgramVersion)
@@ -661,7 +663,7 @@ class Ldk: NSObject {
661663
droppedPeerTimer = Timer.scheduledTimer(
662664
timeInterval: 5.0,
663665
target: self,
664-
selector: #selector(handleDroppedPeers),
666+
selector: #selector(self.handleDroppedPeers),
665667
userInfo: nil,
666668
repeats: true
667669
)

lib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@synonymdev/react-native-ldk",
33
"title": "React Native LDK",
4-
"version": "0.0.143",
4+
"version": "0.0.145",
55
"description": "React Native wrapper for LDK",
66
"main": "./dist/index.js",
77
"types": "./dist/index.d.ts",

lib/src/ldk.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,15 @@ class LDK {
9595
*/
9696
async initKeysManager({
9797
seed,
98+
address,
9899
channelCloseDestinationScriptPublicKey,
99100
channelCloseWitnessProgram,
100101
channelCloseWitnessProgramVersion,
101102
}: TInitKeysManager): Promise<Result<string>> {
102103
try {
103104
const res = await NativeLDK.initKeysManager(
104105
seed,
106+
address,
105107
channelCloseDestinationScriptPublicKey,
106108
channelCloseWitnessProgram,
107109
channelCloseWitnessProgramVersion,

0 commit comments

Comments
 (0)