Commit Graph

641 Commits

Author SHA1 Message Date
Sale Djenic dcef87af3f fix_: token store clearing
This commit fixes issue with having a multiple contract addresses for the same symbols at the same networks.
An issue we had with this was that when we're searching for a token by symbol, always the first one from the
list was returned. That thing may result later in not having enough balance for that token on certain network,
even the user actually has it.
2024-05-23 14:39:46 +02:00
Ivan Belyakov 16171c9dc8 fix(wallet)_: fix crash on cbridge fee calculation 2024-05-20 06:38:35 +02:00
Sale Djenic 4a1a29b6a5 chore_: checks per sending type added (part3) 2024-05-18 00:00:23 +02:00
Sale Djenic 7a016d0859 chore_: router moved to router package (part2) 2024-05-18 00:00:23 +02:00
Sale Djenic 4894808839 chore_: review comments applied (part1) 2024-05-18 00:00:23 +02:00
Sale Djenic 08fef4afde chore_: the router implementation simplification 2024-05-18 00:00:23 +02:00
Sale Djenic 437ad499c8 chore_: `SendType` moved to another file 2024-05-18 00:00:23 +02:00
Michal Iskierko c3ab8bd658 feat_: add l1 transaction fee to community token contracts operations
Move estimation funtions to a estimations.go
Compute gas, suggested fees and l1 fee in one status-go call

Issue #14166
2024-05-17 09:57:03 +02:00
Michal Iskierko 574450289c feat_: Move community tokens transaction listening to status-go
Use EventWatcher to catch wallet events.
Handling all community tokens wallet events in communitytokens service (database and messenger operations).
Adding new signal to nim: CommunityTokenTransactionSignal, which is emitted everytime when the event is received.

Issue #4351
2024-05-16 16:18:15 +02:00
Cuteivist 6b680f0722
feat_: Correct opt short names (#5163) 2024-05-16 16:01:30 +02:00
Sale Djenic c9ee0e04c2 fix_: logic for checking if the route can be established updated 2024-05-15 17:36:28 +02:00
Ivan Belyakov 5be610e653 fix(wallet)_: reduce block range size for `eth_getLogs` request for
Sepolia
2024-05-15 17:24:06 +02:00
Ivan Belyakov c0e922f0af fix(wallet)_: fix crash on nil db for statusd if wallet is enabled
Fixed some other issues with prevented startup of statusd:
- ensure paths for DBs are created
- ensure DBs are opened before calling `StartNode`
- ignore error if multiacc database is not available

Updates #14693
2024-05-15 10:19:25 +02:00
Cuteivist 838311e902
fix_: Prioritize tokens on eth platform (#5151) 2024-05-15 07:33:12 +02:00
Khushboo-dev-cpp 867cd1f14b
feat(api)_: add api and functionality to get collection website and twitter handle from alchemy (#5007) 2024-05-14 08:58:08 +02:00
Ivan Belyakov 3b6b38a414 chore(wallet)_: Fix tests after wallet api sign and send clean up
- Get rid of InsertTestMultiTransaction function in test utils and
use InsertMultiTransaction method of transaction manager
- Use MultiTransaction type instead of TestMultiTransaction

Added a missing wallet DB migration file for multi transactions
2024-05-09 18:11:58 +02:00
Ivan Belyakov ed164e4ac5 chore(wallet)_: clean up wallet API send and sign transactions 2024-05-09 18:11:58 +02:00
Dario Gabriel Lipicar 8a0b7ddbb5 feat(wallet)_: switch rarible client to eth sepolia 2024-05-03 08:49:20 -03:00
Ivan Belyakov 12d2a1ac2d fix(wallet)_: fixed crash when bridging and chain id not set 2024-04-26 09:45:40 +02:00
Cuteivist eb1ed696f6
fix_: Fix timestamo integer cast (#5092) 2024-04-25 14:15:07 +02:00
Siddarth Kumar d6c4682479
chore_: bump go to 1.20 (#5027)
This commit attempts to upgrade go version to 1.20.12
This commit also removes the following items from lint checks :
* `goconst`
* `structcheck`
* `deadcode`
* `golint`
* `varcheck`

Mobile PR for QA purposes -> https://github.com/status-im/status-mobile/pull/19564
2024-04-18 18:48:02 +02:00
Ivan Belyakov 12deb23360 chore(wallet)_: removed all addresses parameter as redundant.
Instead we check directly if passed addresses are all wallet addresses that
we have in accounts DB.
2024-04-12 14:36:44 +02:00
Ivan Belyakov a549529637 fix(wallet)_: balances were not updated for accounts not checked during
initial balance fetch, as cache was considered valid and in case
balance was previously stored in DB for this account, it was returned
though it was not up to date.
2024-04-11 19:29:55 +02:00
Patryk Osmaczko 759e5e5c7b fix_: improve `fetchCommunityAssets` performance
fixes: #5038
2024-04-10 21:00:28 +02:00
Patryk Osmaczko 1ceb180e8a fix: fetch community only when assets metadata is missing
fixes: status-im/status-desktop#14296
2024-04-09 10:51:21 -04:00
Cuteivist d3d155a5b2
Added soulbound field for collectibles (#5026) 2024-04-09 16:16:20 +02:00
Anthony Laibe 6823870b01 fix: update ramp network link
fix: https://github.com/status-im/status-desktop/issues/14359
2024-04-09 11:39:37 +02:00
Sale Djenic 7b09ee073d feat: swap via paraswap 2024-04-08 10:14:48 +02:00
Michal Iskierko debc1485de fix: omit l1GasFee in json 2024-04-07 20:58:17 +02:00
Stefan 9986125982 chore(wallet) minor improvement to matching transactions
Made while hunting for the hash used for matching ID madness.

Updates: #14071
2024-04-05 11:04:13 +02:00
Stefan 62405b4def fix(wallet): activity duplicate in case of non-native transfer
The "hash" (a.k.a. ID) column was used for matching transfer entry which
works only for native transfers which have the `ID` same as hash.

Closes: #14071
2024-04-05 11:04:13 +02:00
Anthony Laibe e1cd91fafe Fix for erc20 transfer + other type of tx
This is 2 fix:
- ENS interaction + stickers don't need L1 fees as they are only executed on mainnet
- ERC20 data needs to be built when making the tx
2024-04-04 13:40:04 +02:00
Stefan ef0e17e0f5 fix(wallet) fix erc721 transfer router
Changes

- Use token's contract address for `ERC1155TransferTxArgs.to` because it
is used as such later on.
- Extract Token ID from the symbol as we encoded and set the corresponding
value in the `ERC1155TransferTxArgs`.
- Set ChainID in `ERC1155TransferTxArgs`

Updates status-desktop #14212
2024-04-01 15:17:41 +02:00
Stefan ff6fb81beb fix(wallet) fix erc721 transfer router
Changes

Use token's contract address for `ERC721TransferTxArgs.to` because it
is used as such later on.
Extract Token ID from the symbol as we encoded and set the corresponding
value in the `ERC721TransferTxArgs`.
Set ChainID in `ERC721TransferTxArgs`
Fix wrong order of arguments in `BuildTx`.

Updates status-desktop #14212
2024-04-01 15:17:41 +02:00
Ivan Belyakov e9a2f19c17 fix(wallet): cleanup multi_transactions table on account removed
Updates #4937
2024-03-27 14:54:30 +01:00
Ivan Belyakov c21e6430a2 fix(wallet): cleanup token_balances table on account removed
Updates #4937
2024-03-27 14:54:30 +01:00
Ivan Belyakov cc839ad7bc fix(wallet): cleanup balance_history table on account removed
Updates #4937
2024-03-27 14:54:30 +01:00
Stefan 48af7a6f49 chore(wallet) remove unused multi-transaction-update event
A leftover after migrating to incremental activity updates session-based
We now use pending instead of `multi-transaction-update`, there is no
multi-transaction update without an equivalent pending or transfer update
2024-03-27 13:36:40 +01:00
Sale Djenic 98c3be55b9 feat: l1 gas price estimation when placing l2 transaction 2024-03-27 08:24:39 +01:00
Cuteivist 2aa306ef4c
fix: Pass additional data when community token is received (#4954) 2024-03-25 18:30:59 +01:00
Roman Volosovskyi 8086b24a9e
Refresh balance cache on login (#4950) 2024-03-20 12:32:04 +01:00
Dario Gabriel Lipicar bcca75dc9d feat(wallet): add EURC to the tokenstore 2024-03-19 12:56:15 -03:00
Dario Gabriel Lipicar 58b57b12a3 feat: implement search api
Issue #13921
2024-03-18 10:22:00 -03:00
Dario Gabriel Lipicar 6e5c91f2d7 fix(wallet): flaky test TestUpdateCollectiblesData 2024-03-18 10:05:46 -03:00
Ivan Belyakov b0a0f078c4 feat(wallet): refactored collectibles manager using circuit breaker
Removed goerli from rarible and opt-goerli from alchemy clients as
not supported any more
2024-03-18 11:49:03 +01:00
Ivan Belyakov 224103d036 fix(wallet): crash on access nil block 2024-03-18 10:56:19 +01:00
Cuteivist d35a73a94f
chore: Optimize number of sql calls (#4928) 2024-03-18 09:37:05 +01:00
Roman Volosovskyi 38183ab335
Fix balance cache on switching to testnet (#4924) 2024-03-15 13:37:00 +01:00
Ivan Belyakov 2c634a2b45 fix(wallet): flaky test TestUpdateCollectionsData 2024-03-15 13:35:32 +01:00
Cuteivist afd72ace28
Chore: Remove fetching community data (#4794) 2024-03-13 17:33:01 +01:00
Sale Djenic f69ee07593 fix: calculating next nonce for optimism chain improved to align with calculation on mainnet and arbitrum 2024-03-13 15:21:33 +01:00
Roman Volosovskyi 2be9bfc304
Fix balances cache (#4890) 2024-03-11 14:48:40 +01:00
Anthony Laibe 2dfbe3099a fix: swap and send to l1 2024-03-11 12:04:14 +01:00
Stefan e1c7c715aa fix(wallet): fix activity filter updates special case
This commit fixes a special case where the activity filter incremental
updates were reported as new even that they were present in a previous
update.

Updates status-desktop #12120
2024-03-11 09:37:05 +01:00
Dario Gabriel Lipicar fcde7ccafe fix: ensure no duplicate results when checking for missing collectible/collection ids in the db 2024-03-08 10:49:06 -03:00
Cuteivist 6c792a0e73
feat: Pass 1 day balance change (#4858) 2024-03-08 13:52:39 +01:00
Anthony Laibe 477283e960 fix: buying ens from sepolia 2024-03-08 09:43:26 +01:00
Roman Volosovskyi 6f753617de
[#4774] Use findNewBlocksCommand for checking recent history (#4795) 2024-03-07 15:51:21 +01:00
Dario Gabriel Lipicar 4bf6f27b26 fix: handle collectibles owned by multiple accounts 2024-03-06 20:45:42 -03:00
Dario Gabriel Lipicar 55e8fd4554 fix: ensure atomic collectibles ownership updates 2024-03-06 20:45:42 -03:00
Dario Gabriel Lipicar 71377a50d7 feat: fetch collectibles balances 2024-03-06 20:45:42 -03:00
Sale Djenic 846a59b40f chore: tokenstore details for usdc for sepolia and arbitrum sepolia updated 2024-03-06 19:38:35 +01:00
Khushboo-dev-cpp 580f697f57
fix: Fix send Erc 1155 flow (#4865) 2024-03-06 11:16:20 +01:00
Ivan Belyakov 440779fc8c fix: flaky test TestController_watchAccountChanges by making sure
to check the database transfer after removal event is processed.
2024-03-04 10:36:33 +01:00
Anthony Laibe 011a170a03 fix: dup tx
Remove duplicate gas only TX
Remove Send and Receive from self, only the send row is kept
2024-03-01 09:43:47 +01:00
Stefan a63d33e04a feat(wallet) process all the events and debounce updates
Process missing events

Throttle down downloader's events to avoid overloading the CPU with
change detection.

Updates status-desktop #12120
2024-02-29 17:06:40 +01:00
Stefan eecde4c27f feat(wallet) activity filter incremental updates on filter clear
Add an intermediary state to the session to keep track of the changes
made when the filter was applied.

Updates status-desktop #12120
2024-02-29 13:27:05 +01:00
Cuteivist 03b903fd64
feat: Pass community id for wallet activity (#4757) 2024-02-29 11:22:14 +01:00
Sale Djenic bb3006d747 feat: rpc request limiter 2024-02-29 08:26:10 +01:00
Stefan ae9b697eda feat(wallet) implement mixed incremental updates for activity filter
Refactor the activity filter session API to account for the new structure

Also:

- Refactor test helpers to mock for different chains with mixed answers
- Test implementation

Updates status-desktop #12120
2024-02-28 22:14:21 +01:00
Dario Gabriel Lipicar 9fef2d3558 fix: properly setup collectible providers exponential backoff 2024-02-27 18:26:55 -03:00
Dario Gabriel Lipicar 54ea0981a5 fix: properly handle tokenID 0 when filtering activity by collectibles 2024-02-23 09:43:20 -03:00
Anthony Laibe 972a4f9df9 feat: sepolia default 2024-02-23 11:26:31 +01:00
Cuteivist 83678042f4
chore: Pass tx ID instead of hash (#4769) 2024-02-22 23:40:36 +01:00
Sale Djenic 0e8143db76 feat(savedaddresses): mixedcase address added to the saved address struct 2024-02-22 10:16:12 +01:00
Mikhail Rogachev eb5bad4868
Feat: Profile showcase validate collectible ownership (#4737)
* feat: profile showcase checks then presenting collectibles

* chore: more obvious CollectiblesManager configuration
2024-02-22 11:08:58 +03:00
Anthony Laibe 0856efff6f fix: resolve first tx of block
This is a workaround when fetching unknown tx without receiver
2024-02-21 13:28:26 +01:00
Roman Volosovskyi cc708ce0ce
[#4690] Nilable block range values for proper ranges management (#4691) 2024-02-19 16:50:07 +01:00
Cuteivist a866b8025e
feat: Community token received notification (#4682) 2024-02-19 14:55:38 +01:00
Roman Volosovskyi 9e36df449e
Fix range for ERC20/1155/721 tx detection (#4746) 2024-02-19 11:50:03 +01:00
Igor Sirotin 789ee81201
fix: saved addresses sync (`TestSyncDeletesOfSavedAddresses` flaky test) (#4742) 2024-02-16 09:45:10 +00:00
Dario Gabriel Lipicar 12d70e0ce4 fix: notify collectible data update when transferID is set 2024-02-15 12:05:07 -03:00
Roman Volosovskyi 7f6f8b3f7c
Add tokens metadata on FetchOrGetCachedWalletBalances call 2024-02-15 14:19:19 +01:00
Anthony Laibe e0814a488f feat: add sepolia token 2024-02-14 11:11:46 +01:00
Sale Djenic 598d58f0d6 fix: a proper clock set when dispatching saved addresses 2024-02-13 17:39:10 +01:00
Stefan e9ff0fbefe feat(wallet) add GetMoreForFilterSession API method
Also fix StopFilterSession to always notify client

Updates #12120
2024-02-13 17:37:44 +01:00
Stefan ca973b4aa6 feat(wallet) use sql activity filter for incremental updates
Switch from the prototype of duplicating the SQL filter as a runtime
and keeping them in sync on each event that might invalidate the current
filtered entries to a simpler approach of requesting the filter again
and doing the diff to detect the new changes.

Also add a new reset API to model the new entries design requirements.

The new approach shows less corner-case to handle and follows one source
of truth concept making debugging and future maintenance easier.

Other changes

- Fix pending mocking to work with multiple calls
- Refactor tests to account for the new changes

Updates status-desktop #12120
2024-02-12 19:29:15 +01:00
Roman Volosovskyi af16669787
Fetch balances when db cache doesn't exist (second attempt) (#4714) 2024-02-12 13:29:31 +01:00
Roman Volosovskyi 76d58ba7f0
Fetch balances when db cache doesn't exist (#4710) 2024-02-12 10:10:28 +01:00
Roman Volosovskyi 005e7e6ee4
Fix nonce change detection (#4679) 2024-02-08 12:54:04 +01:00
Dario Gabriel Lipicar 9c89409c94 fix: use opensea only as last resort collectibles provider
Fixes #13442
2024-02-07 12:27:23 -03:00
Anthony Laibe 101f1aeca3 feat: add support for erc1155 2024-02-07 11:59:32 +01:00
Dario Gabriel Lipicar 058fa629a0 feat(wallet): add contract type to collectibles 2024-02-06 13:35:01 -03:00
Roman Volosovskyi d5a10a97f1
[#4646] Return l2 block number when calling BalanceChecker on Arbitrum (#4668) 2024-02-02 12:52:52 +01:00
Roman Volosovskyi 9b10b29da2
[#4630] Add wallet_fetchOrGetCachedWalletBalances method (#4666) 2024-02-02 11:42:56 +01:00
Anthony Laibe 9c131edfaa feat: token list updated at global 2024-02-02 11:30:42 +01:00
Stefan 812910f087 feat(wallet): Add session-based activity API for dynamic updates
This commit introduces the first steps towards implementing a session-based activity API to support dynamic updates of the current visualized filter in the wallet activity service. This change is necessary to move away from static paginated filtering, which was previously done in SQL, to a more dynamic approach that can handle updates in real-time.

The main changes include:
- Add basic `EventActivitySessionUpdated` support for pending transactions.
- Added a `TODO.md` file outlining the plan and requirements for dynamic activity updates.
- New session-related API to the `activity.Service`
- `session.go` contains the logic for session management and event processing related to activity updates.
- Add test case for incremental filter updates.

The commit also includes:

- various other minor changes and refactoring to support the new session-based approach.
- Deprecation notices added to the `api.go` file for methods that are no longer used by the status-desktop application.
- Clarification comments added to the `scheduler.go` file regarding replacement policies.

Updates: #12120

ghstack-source-id: a61ef74184
Pull Request resolved: https://github.com/status-im/status-go/pull/4480
2024-02-01 19:55:06 +01:00
Stefan 21e6914a3c fix(wallet) fix reading amount for pending transactions
The reading of the amount for pending transactions was done in the same
way as for transfers table. However, the transfers table has a string
hex representation of the amount, while the pending transactions table
has a binary representation of the amount (*big.Int). This was
triggering the not int warning and value was missing.

Updates status-desktop #12120
2024-02-01 18:28:55 +01:00
Roman Volosovskyi 241595a871
[#4649] Do not restart reactor when it is already running (#4663) 2024-02-01 17:26:40 +01:00
Stefan 31a2d403ef fix(wallet) prioritize type SendAT for pending entries in activity
In case both to/from addresses are present in the list we were using
the same logic as for transfers. However, this doesn't make sense given
that we can have only one entry in pending activity.

The following cases are still covered

- When the receiver is in addresses we get received
- When both receiver and sender are in the list will get sent
- When the sender is on the list we will get sent

Updates status-desktop #12120
2024-02-01 16:59:09 +01:00