From 504d5b5a6dd1e32062d26bd196968db1f185c93a Mon Sep 17 00:00:00 2001 From: abdrasulov Date: Tue, 5 Aug 2025 15:29:32 +0600 Subject: [PATCH] Pass source tag during send --- .../merkleiokit/MerkleRpcBlockchain.kt | 5 ++--- .../merkleiokit/MerkleSendRawTransactionJsonRpc.kt | 11 +++++++++++ .../merkleiokit/MerkleTransactionAdapter.kt | 6 ++++-- 3 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleSendRawTransactionJsonRpc.kt diff --git a/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleRpcBlockchain.kt b/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleRpcBlockchain.kt index 70ce92cc..0050fa00 100644 --- a/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleRpcBlockchain.kt +++ b/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleRpcBlockchain.kt @@ -4,7 +4,6 @@ import io.horizontalsystems.ethereumkit.api.core.IRpcSyncer import io.horizontalsystems.ethereumkit.api.jsonrpc.GetTransactionByHashJsonRpc import io.horizontalsystems.ethereumkit.api.jsonrpc.GetTransactionCountJsonRpc import io.horizontalsystems.ethereumkit.api.jsonrpc.JsonRpc -import io.horizontalsystems.ethereumkit.api.jsonrpc.SendRawTransactionJsonRpc import io.horizontalsystems.ethereumkit.api.jsonrpc.models.RpcTransaction import io.horizontalsystems.ethereumkit.core.INonceProvider import io.horizontalsystems.ethereumkit.core.TransactionBuilder @@ -32,11 +31,11 @@ class MerkleRpcBlockchain( return syncer.single(GetTransactionCountJsonRpc(address, defaultBlockParameter)) } - fun send(rawTransaction: RawTransaction, signature: Signature): Single { + fun send(rawTransaction: RawTransaction, signature: Signature, sourceTag: String): Single { val tx = transactionBuilder.transaction(rawTransaction, signature) val encoded = transactionBuilder.encode(rawTransaction, signature) - return syncer.single(SendRawTransactionJsonRpc(encoded)) + return syncer.single(MerkleSendRawTransactionJsonRpc(encoded, sourceTag)) .doOnSuccess { txHash -> manager.save(MerkleTransactionHash(txHash)) } diff --git a/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleSendRawTransactionJsonRpc.kt b/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleSendRawTransactionJsonRpc.kt new file mode 100644 index 00000000..54bbd9b4 --- /dev/null +++ b/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleSendRawTransactionJsonRpc.kt @@ -0,0 +1,11 @@ +package io.horizontalsystems.merkleiokit + +import io.horizontalsystems.ethereumkit.api.jsonrpc.DataJsonRpc + +class MerkleSendRawTransactionJsonRpc( + @Transient val signedTransaction: ByteArray, + @Transient val sourceTag: String +) : DataJsonRpc( + method = "eth_sendRawTransaction", + params = listOf(signedTransaction, sourceTag) +) diff --git a/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleTransactionAdapter.kt b/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleTransactionAdapter.kt index b5ff6366..47c6249e 100644 --- a/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleTransactionAdapter.kt +++ b/merkleiokit/src/main/java/io/horizontalsystems/merkleiokit/MerkleTransactionAdapter.kt @@ -19,9 +19,10 @@ class MerkleTransactionAdapter( val blockchain: MerkleRpcBlockchain, val syncer: MerkleTransactionSyncer, private val transactionManager: TransactionManager, + private val sourceTag: String, ) { fun send(rawTransaction: RawTransaction, signature: Signature): Single { - return blockchain.send(rawTransaction, signature) + return blockchain.send(rawTransaction, signature, sourceTag) .map { transactionManager.handle(listOf(it)).first() } } @@ -51,6 +52,7 @@ class MerkleTransactionAdapter( context: Context, walletId: String, transactionManager: TransactionManager, + sourceTag: String, ): MerkleTransactionAdapter? { val baseUrl = "https://mempool.merkle.io/rpc/" val blockchainPath = blockchainPathMap[chain] ?: return null @@ -82,7 +84,7 @@ class MerkleTransactionAdapter( transactionManager = transactionManager ) - return MerkleTransactionAdapter(blockchain, syncer, transactionManager) + return MerkleTransactionAdapter(blockchain, syncer, transactionManager, sourceTag) } } }