Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prevent that a wrong tx is set as deposit tx #4883

Conversation

chimp1984
Copy link
Contributor

Fixes #4873

Beside what is mentioned in #4873 I found another (minor) issue. We use an immutable list for address entries but the coinLockedInMultiSig value was set in the object via a setter. This change would be lost when accessed as when one open the wallet tool with cmd+j (after take offe the value was 0 there instead of the locked up funds). As the field is only used for lookup for locked funds from failed trades the bug was not very visible.
coinLockedInMultiSig is now a final field set by the constructor.

We check if the txIds of the inputs matches our maker fee tx and taker fee tx and if the depositTxAddress we
use for the confidence lookup is use as an output address.
This prevents that past txs which have the our depositTxAddress as input or output (deposit or payout txs) could
be interpreted as our deposit tx. This happened because if a bug which caused re-use of the Multisig address
entries and if both traders use the same key for multiple trades the depositTxAddress would be the same.
We fix that bug as well but we also need to avoid that past already used addresses might be taken again
(the Multisig flag got reverted to available in the address entry).

- Add check to swapTradeEntryToAvailableEntry to not swap MULTI_SIG entries.

- Remove swap for MULTI_SIG entries at resetAddressEntriesForPendingTrade

- Add check to swapToAvailable to not swap MULTI_SIG entries.

- Remove swaps for MULTI_SIG entries

- Add setCoinLockedInMultiSigAddressEntry method

- Make coinLockedInMultiSig final and remove setter but use it in constructor.

- Rename getCoinLockedInMultiSig to getCoinLockedInMultiSigAsCoin
We use an immutable list when operating on AddressEntry so changes on the
object would not be reflected in the list.
The only mutable field (beside non critical cache fields) is the keyPair.
Might be good to refactor that as well at some point.

- Add setCoinLockedInMultiSigAddressEntrymethods

- Apply API changes:
-- resetCoinLockedInMultiSigAddressEntry
-- setCoinLockedInMultiSigAddressEntry
-- renamed methods
@ghost
Copy link

ghost commented Dec 3, 2020

ACK (re-tested). ☑️

Copy link
Member

@ripcurlx ripcurlx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK

@ripcurlx ripcurlx merged commit 96f7535 into bisq-network:hotfix/v1.5.1 Dec 3, 2020
@chimp1984 chimp1984 deleted the prevent-that-a-wrong-tx-is-set-as-deposit-tx branch December 3, 2020 20:06
@ripcurlx ripcurlx added this to the 1.5.1 milestone Dec 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants