From d133140f3ad6a073f94f0d743006951da5093ae9 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 16 Oct 2024 17:58:49 +0100 Subject: [PATCH] Ignore address field in `GetAddressUtxos` response (#1607) The only thing we were doing with it was passing it through to Rust and parsing it (panicking if parsing failed). The actual address is fetched from the UTXO itself, and the Rust code was not doing anything to ensure the two matched. Given that there seem to be bugs upstream in the address data, we now just ignore it. --- .../src/main/java/cash/z/ecc/android/sdk/internal/Backend.kt | 1 - .../java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt | 3 --- backend-lib/src/main/rust/lib.rs | 3 --- .../lightwallet/client/model/GetAddressUtxosReplyUnsafe.kt | 2 -- .../src/androidTest/java/cash/z/ecc/fixture/FakeRustBackend.kt | 1 - .../z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt | 1 - .../java/cash/z/ecc/android/sdk/internal/TypesafeBackend.kt | 1 - .../cash/z/ecc/android/sdk/internal/TypesafeBackendImpl.kt | 2 -- 8 files changed, 14 deletions(-) diff --git a/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/Backend.kt b/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/Backend.kt index cf2a3b021..ca5b8f857 100644 --- a/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/Backend.kt +++ b/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/Backend.kt @@ -222,7 +222,6 @@ interface Backend { @Suppress("LongParameterList") @Throws(RuntimeException::class) suspend fun putUtxo( - tAddress: String, txId: ByteArray, index: Int, script: ByteArray, diff --git a/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt b/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt index ce36184fc..ef7aef277 100644 --- a/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt +++ b/backend-lib/src/main/java/cash/z/ecc/android/sdk/internal/jni/RustBackend.kt @@ -389,7 +389,6 @@ class RustBackend private constructor( } override suspend fun putUtxo( - tAddress: String, txId: ByteArray, index: Int, script: ByteArray, @@ -398,7 +397,6 @@ class RustBackend private constructor( ) = withContext(SdkDispatchers.DATABASE_IO) { putUtxo( dataDbFile.absolutePath, - tAddress, txId, index, script, @@ -722,7 +720,6 @@ class RustBackend private constructor( @Suppress("LongParameterList") private external fun putUtxo( dbDataPath: String, - tAddress: String, txId: ByteArray, index: Int, script: ByteArray, diff --git a/backend-lib/src/main/rust/lib.rs b/backend-lib/src/main/rust/lib.rs index 3655b2282..14dfc65e4 100644 --- a/backend-lib/src/main/rust/lib.rs +++ b/backend-lib/src/main/rust/lib.rs @@ -1589,7 +1589,6 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_putUtxo<' mut env: JNIEnv<'local>, _: JClass<'local>, db_data: JString<'local>, - address: JString<'local>, txid_bytes: JByteArray<'local>, index: jint, script: JByteArray<'local>, @@ -1609,8 +1608,6 @@ pub extern "C" fn Java_cash_z_ecc_android_sdk_internal_jni_RustBackend_putUtxo<' let script_pubkey = Script(env.convert_byte_array(script).unwrap()); let mut db_data = wallet_db(env, network, db_data)?; - let addr = utils::java_string_to_rust(env, &address); - let _address = TransparentAddress::decode(&network, &addr).unwrap(); let output = WalletTransparentOutput::from_parts( OutPoint::new(txid, index as u32), diff --git a/lightwallet-client-lib/src/main/java/co/electriccoin/lightwallet/client/model/GetAddressUtxosReplyUnsafe.kt b/lightwallet-client-lib/src/main/java/co/electriccoin/lightwallet/client/model/GetAddressUtxosReplyUnsafe.kt index 2876f90ed..563e450c5 100644 --- a/lightwallet-client-lib/src/main/java/co/electriccoin/lightwallet/client/model/GetAddressUtxosReplyUnsafe.kt +++ b/lightwallet-client-lib/src/main/java/co/electriccoin/lightwallet/client/model/GetAddressUtxosReplyUnsafe.kt @@ -6,7 +6,6 @@ import cash.z.wallet.sdk.internal.rpc.Service * It is marked as "unsafe" because it is not guaranteed to be valid. */ class GetAddressUtxosReplyUnsafe( - val address: String, val txid: ByteArray, val index: Int, val script: ByteArray, @@ -16,7 +15,6 @@ class GetAddressUtxosReplyUnsafe( companion object { fun new(getAddressUtxosReply: Service.GetAddressUtxosReply): GetAddressUtxosReplyUnsafe { return GetAddressUtxosReplyUnsafe( - address = getAddressUtxosReply.address, txid = getAddressUtxosReply.txid.toByteArray(), index = getAddressUtxosReply.index, script = getAddressUtxosReply.script.toByteArray(), diff --git a/sdk-lib/src/androidTest/java/cash/z/ecc/fixture/FakeRustBackend.kt b/sdk-lib/src/androidTest/java/cash/z/ecc/fixture/FakeRustBackend.kt index 406187018..da36f2b1d 100644 --- a/sdk-lib/src/androidTest/java/cash/z/ecc/fixture/FakeRustBackend.kt +++ b/sdk-lib/src/androidTest/java/cash/z/ecc/fixture/FakeRustBackend.kt @@ -57,7 +57,6 @@ internal class FakeRustBackend( } override suspend fun putUtxo( - tAddress: String, txId: ByteArray, index: Int, script: ByteArray, diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt index 84ad749ea..ef96a28f2 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/block/processor/CompactBlockProcessor.kt @@ -1006,7 +1006,6 @@ class CompactBlockProcessor internal constructor( // from what is _not_ returned as a UTXO, or alternatively fetch TXOs from lightwalletd instead of just UTXOs. Twig.debug { "Found UTXO at height ${utxo.height.toInt()} with ${utxo.valueZat} zatoshi" } backend.putUtxo( - utxo.address, utxo.txid, utxo.index, utxo.script, diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/TypesafeBackend.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/TypesafeBackend.kt index 57d0dd127..e74c21f7d 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/TypesafeBackend.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/TypesafeBackend.kt @@ -75,7 +75,6 @@ internal interface TypesafeBackend { @Suppress("LongParameterList") suspend fun putUtxo( - tAddress: String, txId: ByteArray, index: Int, script: ByteArray, diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/TypesafeBackendImpl.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/TypesafeBackendImpl.kt index a56c41b1b..88b93ef11 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/TypesafeBackendImpl.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/internal/TypesafeBackendImpl.kt @@ -141,7 +141,6 @@ internal class TypesafeBackendImpl(private val backend: Backend) : TypesafeBacke @Suppress("LongParameterList") override suspend fun putUtxo( - tAddress: String, txId: ByteArray, index: Int, script: ByteArray, @@ -149,7 +148,6 @@ internal class TypesafeBackendImpl(private val backend: Backend) : TypesafeBacke height: BlockHeight ) { return backend.putUtxo( - tAddress, txId, index, script,