Skip to content

Commit

Permalink
fix: add method to obtain wrappers
Browse files Browse the repository at this point in the history
  • Loading branch information
HashEngineering committed Mar 21, 2024
1 parent ea453d4 commit 7de0dad
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@ import org.bitcoinj.core.Transaction

interface TransactionWrapperFactory {
fun tryInclude(tx: Transaction): Pair<Boolean, TransactionWrapper?>
val wrappers: List<TransactionWrapper>
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ import org.dash.wallet.common.transactions.TransactionWrapperFactory
class FullCrowdNodeSignUpTxSetFactory(params: NetworkParameters, transactionBag: TransactionBag) :
TransactionWrapperFactory {
private val wrapper = FullCrowdNodeSignUpTxSet(params, transactionBag)
override val wrappers = listOf(wrapper)

override fun tryInclude(tx: Transaction): Pair<Boolean, TransactionWrapper?> {
return Pair(wrapper.tryInclude(tx), wrapper)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,7 @@ import org.dash.wallet.common.transactions.filters.TransactionFilter

open class CoinJoinTxFilter(private val wallet: WalletEx, val type: CoinJoinTransactionType) : TransactionFilter {
override fun matches(tx: Transaction): Boolean {
return CoinJoinTransactionType.fromTx(tx, wallet) == type/* &&
tx.outputs.any { output ->
when {
ScriptPattern.isP2PKH(output.scriptPubKey) ->
wallet.coinJoin.findKeyFromPubKeyHash(
ScriptPattern.extractHashFromP2PKH(output.scriptPubKey),
Script.ScriptType.P2PKH
) != null
ScriptPattern.isOpReturn(output.scriptPubKey) -> true
else -> false
}
}*/
return CoinJoinTransactionType.fromTx(tx, wallet) == type
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ import java.time.LocalDateTime
import java.time.ZoneId

class CoinJoinTxWrapperFactory(val params: NetworkParameters, val wallet: WalletEx) : TransactionWrapperFactory {
private val wrappers = hashMapOf<Long, CoinJoinMixingTxSet>()
private val wrapperMap = hashMapOf<Long, CoinJoinMixingTxSet>()
override val wrappers: List<TransactionWrapper>
get() = wrapperMap.values.toList()

override fun tryInclude(tx: Transaction): Pair<Boolean, TransactionWrapper?> {
return when (CoinJoinTransactionType.fromTx(tx, wallet)) {
Expand All @@ -38,13 +40,13 @@ class CoinJoinTxWrapperFactory(val params: NetworkParameters, val wallet: Wallet
val localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault())
val startOfDay = localDateTime.toLocalDate().atStartOfDay(ZoneId.systemDefault())
val startOfDayTimestamp = startOfDay.toInstant().toEpochMilli()
val wrapper = wrappers[startOfDayTimestamp]
val wrapper = wrapperMap[startOfDayTimestamp]
if (wrapper != null) {
Pair(wrapper.tryInclude(tx), wrapper)
} else {
val newWrapper = CoinJoinMixingTxSet(params, wallet)
val included = newWrapper.tryInclude(tx)
wrappers[startOfDayTimestamp] = newWrapper
wrapperMap[startOfDayTimestamp] = newWrapper
Pair(included, newWrapper)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import org.bitcoinj.wallet.Wallet
import org.bitcoinj.wallet.WalletTransaction
import org.dash.wallet.integrations.crowdnode.transactions.FullCrowdNodeSignUpTxSet
import org.bitcoinj.core.Utils
import org.dash.wallet.integrations.crowdnode.transactions.FullCrowdNodeSignUpTxSetFactory
import org.junit.Before
import org.junit.Test

Expand Down Expand Up @@ -110,10 +111,11 @@ class TransactionWrapperHelperTest {
every { bagMock.getTransactionPool(WalletTransaction.Pool.PENDING)} returns mapOf()
every { bagMock.getTransactionPool(WalletTransaction.Pool.SPENT)} returns allTransactions.associateBy({it.txId}, {it})

val crowdNodeWrapper = FullCrowdNodeSignUpTxSet(networkParams, bagMock)
val crowdNodeWrapperFactory = FullCrowdNodeSignUpTxSetFactory(networkParams, bagMock)
val crowdNodeWrapper = crowdNodeWrapperFactory.wrappers.first()!!
val wrappedTransactions = TransactionWrapperHelper.wrapTransactions(
allTransactions,
crowdNodeWrapper
crowdNodeWrapperFactory
)

assertEquals("Must have CrowdNode wrapper and 2 anon wrappers:", 3, wrappedTransactions.size)
Expand Down

0 comments on commit 7de0dad

Please sign in to comment.