Update memo to accept bytes instead of a string.
This commit is contained in:
parent
9cb178d6fb
commit
7e9127538f
|
@ -37,8 +37,7 @@ class RustBackendTest {
|
||||||
0,
|
0,
|
||||||
"dummykey",
|
"dummykey",
|
||||||
"ztestsapling1fg82ar8y8whjfd52l0xcq0w3n7nn7cask2scp9rp27njeurr72ychvud57s9tu90fdqgwdt07lg",
|
"ztestsapling1fg82ar8y8whjfd52l0xcq0w3n7nn7cask2scp9rp27njeurr72ychvud57s9tu90fdqgwdt07lg",
|
||||||
210_000,
|
210_000
|
||||||
""
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ data class PendingTransactionEntity(
|
||||||
override val id: Long = 0,
|
override val id: Long = 0,
|
||||||
override val toAddress: String = "",
|
override val toAddress: String = "",
|
||||||
override val value: Long = -1,
|
override val value: Long = -1,
|
||||||
override val memo: String? = null,
|
override val memo: ByteArray? = byteArrayOf(),
|
||||||
override val accountIndex: Int,
|
override val accountIndex: Int,
|
||||||
override val minedHeight: Int = -1,
|
override val minedHeight: Int = -1,
|
||||||
override val expiryHeight: Int = -1,
|
override val expiryHeight: Int = -1,
|
||||||
|
@ -88,11 +88,10 @@ data class PendingTransactionEntity(
|
||||||
override val createTime: Long = System.currentTimeMillis(),
|
override val createTime: Long = System.currentTimeMillis(),
|
||||||
|
|
||||||
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
||||||
override val raw: ByteArray = ByteArray(0),
|
override val raw: ByteArray = byteArrayOf(),
|
||||||
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
@ColumnInfo(typeAffinity = ColumnInfo.BLOB)
|
||||||
override val rawTransactionId: ByteArray? = null
|
override val rawTransactionId: ByteArray? = byteArrayOf()
|
||||||
) : PendingTransaction {
|
) : PendingTransaction {
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
override fun equals(other: Any?): Boolean {
|
||||||
if (this === other) return true
|
if (this === other) return true
|
||||||
if (other !is PendingTransactionEntity) return false
|
if (other !is PendingTransactionEntity) return false
|
||||||
|
@ -100,7 +99,10 @@ data class PendingTransactionEntity(
|
||||||
if (id != other.id) return false
|
if (id != other.id) return false
|
||||||
if (toAddress != other.toAddress) return false
|
if (toAddress != other.toAddress) return false
|
||||||
if (value != other.value) return false
|
if (value != other.value) return false
|
||||||
if (memo != other.memo) return false
|
if (memo != null) {
|
||||||
|
if (other.memo == null) return false
|
||||||
|
if (!memo.contentEquals(other.memo)) return false
|
||||||
|
} else if (other.memo != null) return false
|
||||||
if (accountIndex != other.accountIndex) return false
|
if (accountIndex != other.accountIndex) return false
|
||||||
if (minedHeight != other.minedHeight) return false
|
if (minedHeight != other.minedHeight) return false
|
||||||
if (expiryHeight != other.expiryHeight) return false
|
if (expiryHeight != other.expiryHeight) return false
|
||||||
|
@ -123,7 +125,7 @@ data class PendingTransactionEntity(
|
||||||
var result = id.hashCode()
|
var result = id.hashCode()
|
||||||
result = 31 * result + toAddress.hashCode()
|
result = 31 * result + toAddress.hashCode()
|
||||||
result = 31 * result + value.hashCode()
|
result = 31 * result + value.hashCode()
|
||||||
result = 31 * result + (memo?.hashCode() ?: 0)
|
result = 31 * result + (memo?.contentHashCode() ?: 0)
|
||||||
result = 31 * result + accountIndex
|
result = 31 * result + accountIndex
|
||||||
result = 31 * result + minedHeight
|
result = 31 * result + minedHeight
|
||||||
result = 31 * result + expiryHeight
|
result = 31 * result + expiryHeight
|
||||||
|
@ -137,6 +139,7 @@ data class PendingTransactionEntity(
|
||||||
result = 31 * result + (rawTransactionId?.contentHashCode() ?: 0)
|
result = 31 * result + (rawTransactionId?.contentHashCode() ?: 0)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -152,7 +155,7 @@ data class PendingTransactionEntity(
|
||||||
data class ConfirmedTransaction(
|
data class ConfirmedTransaction(
|
||||||
override val id: Long = 0L,
|
override val id: Long = 0L,
|
||||||
override val value: Long = 0L,
|
override val value: Long = 0L,
|
||||||
override val memo: ByteArray? = null,
|
override val memo: ByteArray? = ByteArray(0),
|
||||||
override val noteId: Long = 0L,
|
override val noteId: Long = 0L,
|
||||||
override val blockTimeInSeconds: Long = 0L,
|
override val blockTimeInSeconds: Long = 0L,
|
||||||
override val minedHeight: Int = -1,
|
override val minedHeight: Int = -1,
|
||||||
|
|
|
@ -101,14 +101,14 @@ class RustBackend : RustBackendWelding {
|
||||||
extsk: String,
|
extsk: String,
|
||||||
to: String,
|
to: String,
|
||||||
value: Long,
|
value: Long,
|
||||||
memo: String
|
memo: ByteArray?
|
||||||
): Long = createToAddress(
|
): Long = createToAddress(
|
||||||
dbDataPath,
|
dbDataPath,
|
||||||
account,
|
account,
|
||||||
extsk,
|
extsk,
|
||||||
to,
|
to,
|
||||||
value,
|
value,
|
||||||
memo,
|
memo ?: ByteArray(0),
|
||||||
"${paramDestinationDir}/$SPEND_PARAM_FILE_NAME",
|
"${paramDestinationDir}/$SPEND_PARAM_FILE_NAME",
|
||||||
"${paramDestinationDir}/$OUTPUT_PARAM_FILE_NAME"
|
"${paramDestinationDir}/$OUTPUT_PARAM_FILE_NAME"
|
||||||
)
|
)
|
||||||
|
@ -216,17 +216,6 @@ class RustBackend : RustBackendWelding {
|
||||||
|
|
||||||
@JvmStatic private external fun initLogs()
|
@JvmStatic private external fun initLogs()
|
||||||
|
|
||||||
private external fun createToAddress(
|
|
||||||
dbDataPath: String,
|
|
||||||
account: Int,
|
|
||||||
extsk: String,
|
|
||||||
to: String,
|
|
||||||
value: Long,
|
|
||||||
memo: String,
|
|
||||||
spendParamsPath: String,
|
|
||||||
outputParamsPath: String
|
|
||||||
): Long
|
|
||||||
|
|
||||||
@JvmStatic private external fun deriveExtendedSpendingKeys(seed: ByteArray, numberOfAccounts: Int): Array<String>
|
@JvmStatic private external fun deriveExtendedSpendingKeys(seed: ByteArray, numberOfAccounts: Int): Array<String>
|
||||||
|
|
||||||
@JvmStatic private external fun deriveExtendedFullViewingKeys(seed: ByteArray, numberOfAccounts: Int): Array<String>
|
@JvmStatic private external fun deriveExtendedFullViewingKeys(seed: ByteArray, numberOfAccounts: Int): Array<String>
|
||||||
|
|
|
@ -39,7 +39,7 @@ interface RustBackendWelding {
|
||||||
extsk: String,
|
extsk: String,
|
||||||
to: String,
|
to: String,
|
||||||
value: Long,
|
value: Long,
|
||||||
memo: String
|
memo: ByteArray? = byteArrayOf()
|
||||||
): Long
|
): Long
|
||||||
|
|
||||||
fun deriveSpendingKeys(seed: ByteArray, numberOfAccounts: Int = 1): Array<String>
|
fun deriveSpendingKeys(seed: ByteArray, numberOfAccounts: Int = 1): Array<String>
|
||||||
|
|
|
@ -64,7 +64,7 @@ class PersistentTransactionManager(
|
||||||
var tx = PendingTransactionEntity(
|
var tx = PendingTransactionEntity(
|
||||||
value = zatoshiValue,
|
value = zatoshiValue,
|
||||||
toAddress = toAddress,
|
toAddress = toAddress,
|
||||||
memo = memo,
|
memo = memo.toByteArray(),
|
||||||
accountIndex = fromAccountIndex
|
accountIndex = fromAccountIndex
|
||||||
)
|
)
|
||||||
try {
|
try {
|
||||||
|
@ -110,7 +110,7 @@ class PersistentTransactionManager(
|
||||||
spendingKey,
|
spendingKey,
|
||||||
tx.value,
|
tx.value,
|
||||||
tx.toAddress,
|
tx.toAddress,
|
||||||
tx.memo ?: "",
|
tx.memo,
|
||||||
tx.accountIndex
|
tx.accountIndex
|
||||||
)
|
)
|
||||||
twig("successfully encoded transaction for ${tx.memo}!!")
|
twig("successfully encoded transaction for ${tx.memo}!!")
|
||||||
|
|
|
@ -10,7 +10,7 @@ interface TransactionEncoder {
|
||||||
spendingKey: String,
|
spendingKey: String,
|
||||||
zatoshi: Long,
|
zatoshi: Long,
|
||||||
toAddress: String,
|
toAddress: String,
|
||||||
memo: String,
|
memo: ByteArray? = byteArrayOf(),
|
||||||
fromAccountIndex: Int
|
fromAccountIndex: Int = 0
|
||||||
): EncodedTransaction
|
): EncodedTransaction
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ class WalletTransactionEncoder(
|
||||||
spendingKey: String,
|
spendingKey: String,
|
||||||
zatoshi: Long,
|
zatoshi: Long,
|
||||||
toAddress: String,
|
toAddress: String,
|
||||||
memo: String,
|
memo: ByteArray?,
|
||||||
fromAccountIndex: Int
|
fromAccountIndex: Int
|
||||||
): EncodedTransaction = withContext(IO) {
|
): EncodedTransaction = withContext(IO) {
|
||||||
val transactionId = createSpend(spendingKey, zatoshi, toAddress, memo)
|
val transactionId = createSpend(spendingKey, zatoshi, toAddress, memo)
|
||||||
|
@ -53,7 +53,7 @@ class WalletTransactionEncoder(
|
||||||
spendingKey: String,
|
spendingKey: String,
|
||||||
value: Long,
|
value: Long,
|
||||||
toAddress: String,
|
toAddress: String,
|
||||||
memo: String = "",
|
memo: ByteArray? = byteArrayOf(),
|
||||||
fromAccountIndex: Int = 0
|
fromAccountIndex: Int = 0
|
||||||
): Long = withContext(IO) {
|
): Long = withContext(IO) {
|
||||||
twigTask("creating transaction to spend $value zatoshi to" +
|
twigTask("creating transaction to spend $value zatoshi to" +
|
||||||
|
|
|
@ -381,7 +381,7 @@ pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_RustBackend_createToAddress(
|
||||||
extsk: JString<'_>,
|
extsk: JString<'_>,
|
||||||
to: JString<'_>,
|
to: JString<'_>,
|
||||||
value: jlong,
|
value: jlong,
|
||||||
memo: JString<'_>,
|
memo: jbyteArray,
|
||||||
spend_params: JString<'_>,
|
spend_params: JString<'_>,
|
||||||
output_params: JString<'_>,
|
output_params: JString<'_>,
|
||||||
) -> jlong {
|
) -> jlong {
|
||||||
|
@ -398,7 +398,7 @@ pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_RustBackend_createToAddress(
|
||||||
if value.is_negative() {
|
if value.is_negative() {
|
||||||
return Err(format_err!("Amount is negative"));
|
return Err(format_err!("Amount is negative"));
|
||||||
}
|
}
|
||||||
let memo = utils::java_string_to_rust(&env, memo);
|
let memo_bytes = env.convert_byte_array(memo).unwrap();
|
||||||
let spend_params = utils::java_string_to_rust(&env, spend_params);
|
let spend_params = utils::java_string_to_rust(&env, spend_params);
|
||||||
let output_params = utils::java_string_to_rust(&env, output_params);
|
let output_params = utils::java_string_to_rust(&env, output_params);
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ pub unsafe extern "C" fn Java_cash_z_wallet_sdk_jni_RustBackend_createToAddress(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let memo = Memo::from_str(&memo);
|
let memo = Memo::from_bytes(&memo_bytes);
|
||||||
|
|
||||||
let prover = LocalTxProver::new(Path::new(&spend_params), Path::new(&output_params));
|
let prover = LocalTxProver::new(Path::new(&spend_params), Path::new(&output_params));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue