305 Commits
Author SHA1 Message Date
Igor Sirotin ece9dde16a refactor: fold networkhelper into the networks service (#7750)
params/networkhelper only ever served the network manager and the
default network table, both of which now live in pkg/services/networks.

Eight of its ten functions are unexported now that their callers are in
the same package. OverrideBasicAuth and GetEmbeddedProviders stay
exported: tests in other packages build networks with them.

The two test files become internal tests, since what they cover is no
longer exported.
2026-08-26 18:05:04 +01:00
Igor Sirotin c66ed5f558 refactor: move network defaults into the networks service (#7749)
params/networkdefaults holds the embedded network table and builds the
default network list. It belongs with the service that owns networks,
not in params.

Dissolved into the networks package rather than kept as a subpackage:
BuildDefaultNetworks reads better than defaults.BuildDefaultNetworks,
and the next commit unexports the helpers both halves share.
2026-08-26 18:05:03 +01:00
Igor Sirotin d1e9ae5225 refactor: extract a networks service (#7748)
The network manager lived in internal/rpc and was constructed, started
and stopped by rpc.Client, which reached back into it to route calls by
chain. It is now a service of its own at pkg/services/networks.

StatusNode owns the manager and hands it to rpc.Client through
ClientConfig, so the client depends on ManagerInterface rather than the
concrete type. The service owns the manager lifecycle.

The four live network RPC methods are registered under the networks_
namespace. The wallet_ ones are left in place so nothing breaks before
the app migrates; they are removed at the end of the stack.
2026-08-26 18:05:03 +01:00
Igor Sirotin cfeef44f27 refactor: build default networks from params.WalletConfig (#7747)
BuildDefaultNetworks took requests.WalletSecretsConfig, the raw wire
struct, reaching past the translation that already exists in
buildWalletConfig. It now takes params.WalletConfig, which already
carried six of the seven fields it needs.

PoktAPIKey is added to params.WalletConfig alongside the other provider
keys; it was the only field missing.

This drops networkdefaults' dependency on internal/protocol/requests,
and with it the whole protocol package graph.
2026-08-26 18:05:02 +01:00
Igor Sirotin f9cc782a6f refactor: move services to pkg/services
Part of the Go project layout migration, item 31.

Pure move plus import-path rewrite across 687 files. No API or behaviour
change.

The services keep their grouping under pkg/services/<name> rather than
being promoted to pkg/<name>: 27 top-level directories in pkg/ would read
worse than what we have, and the grouping is what makes "an RPC service"
identifiable at a glance.

Paths that follow the move: the logosstorage test target and generate
step, the two wallet token-list tools, the migration-order check (and the
pre-rebase hook symlinked to it), and the storage env helper.

refs #7067
2026-08-21 10:11:05 +02:00
Igor Sirotin f3e4363808 refactor: move protocol to internal/protocol
Part of the Go project layout migration, item 27.

Pure move plus import-path rewrite across 502 files. No API or behaviour
change. `internal/` keeps the messaging application logic unimportable
from outside the module, which is what the issue asks for -- status-go is
consumed through the C-bindings in mobile/, not as a Go library.

Things that had to follow the move, beyond the Go imports:

- tools/generate-handlers/template.txt. messenger_handlers.go is
  generated, and the template hard-codes the imports it emits, so the
  generated file kept importing protocol/common and failed typecheck.
- .gitignore. The ignore rule for that generated file was pinned to the
  old path; without moving it, a 1486-line generated file starts being
  tracked.
- Makefile: the logosstorage and torrent test targets (both the archive
  packages and ./protocol itself), the archive README, migration-protocol.
- scripts/run_unit_tests.sh, which names the protocol package explicitly
  to shard its tests.
- scripts/cleanup_generated_files.sh and .golangci.yml.

scripts/migration_check.sh also needed a fix that is not specific to this
move: it validated every file the branch touched under a migration dir
against the timestamp naming rule, and a directory rename makes every
migration in it look newly added. It now excludes renames, so moving a
migration is not mistaken for adding one.

refs #7067
2026-08-21 10:11:05 +02:00
Igor Sirotin 23febf1645 refactor: dissolve the root common package
`common` was a grab-bag with no domain: the issue's own preamble names
it as the kind of package that must not exist. Every symbol moves to the
package that owns it, and the directory is deleted.

  common/dbsetup            -> internal/db/dbsetup
  common/devices.go         -> internal/platform
  common/pausable*.go       -> internal/pausable
  LogOnPanic                -> internal/panics
  TruncateWithDot(N)        -> internal/logutils
  RecoverKey, ValidateDisplayName, display-name errors -> protocol/common
  IpfsGatewayURL            -> internal/ipfs.GatewayURL
  Archives/TorrentTorrentsRelativePath, MainnetEthereumNetworkURL -> params
  StatusService             -> pkg/backend/node
  ErrBigIntSetFromString    -> services/wallet
  IsNil, Ptr                -> inlined at their call sites
  IsENSName                 -> deleted, it had no callers

Notes:
- LogOnPanic gets its own package rather than living in logutils. It
  reports to Sentry, and logutils is imported by nearly everything: put
  the guard in logutils and the Sentry SDK lands in every dependency
  graph in the tree (213 -> 250 packages). internal/panics imports
  logutils and sentry, which is the direction root `common` had.
- TruncateWithDot is log redaction, not string formatting: every one of
  its 121 call sites is inside a log or error message, so it belongs
  next to the logger.
- Moving RecoverKey and ValidateDisplayName into protocol/common removes
  the common -> protocol layering inversion; all their callers were
  already inside protocol/.
- Makefile lint-panics target follows LogOnPanic to its new path.

refs #7067
2026-08-20 20:59:45 +02:00
osmaczkoandIgor Sirotin 67f8720f54 refactor: remove deadcode (#7279)
Remove code reported by golang.org/x/tools/cmd/deadcode.

Co-authored-by: Igor Sirotin <igor@logos.co>
2026-08-14 09:36:13 +01:00
Jonathan Rainville e2a4024ea0 chore(store): remove code related to msg send confirmation using stores
Part of https://github.com/status-im/status-app/issues/21598
2026-08-03 16:01:16 -04:00
Jonathan Rainville 20f8cdafc8 feat(messages): change sending status to use publishing state and delivered uses SDS
Part of https://github.com/status-im/status-app/issues/21598

Updated outgoing message status handling so `sent` is confirmed immediately after successful Waku publishing, eliminating store-node confirmation requests and retaining only MVDS ACKs (1:1/private groups) and SDS `message_sent` callbacks (communities) for `delivered`. Community SDS IDs are now tracked as internal aliases of the UI message ID, preventing alias messages from appearing in the UI while translating SDS delivery callbacks to the existing delivered signal.
2026-08-03 16:01:16 -04:00
Sale Djenic 6eb1a72905 feat: a new chain added - Robinhood Chain 2026-08-03 14:02:27 +02:00
Igor SirotinandClaude Opus 4.8 ca5c6a9be0 feat(messaging): resolve store nodes inside the Waku node (#7599)
The store nodes belong to the fleet, and the waku node already knows its
fleet, so it now resolves them itself (fleets.StoreNodes) at Start and feeds
its StoreClient — instead of the messenger resolving them and pushing them
down via SetStorenodes.

- wakuv2 resolves + dials the fleet's store nodes in Start; the
  StoreNode -> peer.AddrInfo conversion moves from messaging.API into the node.
- Remove the SetStorenodes push chain: the Waku interface method, the transport
  and messaging.API wrappers, and the messenger's AllMailservers/SetStorenodes call.
- The history-sync gate no longer checks storenode availability: the waku node
  always has the fleet's store nodes, so shouldSync just honors the
  mailservers-enabled setting.
- Drop the now-orphaned params.DefaultStoreNodes and the messenger's
  AllMailservers / allMailserversByFleet / getFleet helpers.
- Stop populating MessengerResponse.StoreNodes (the client-visible "mailservers"
  list); store nodes no longer leave the waku node.

Part of pm#380 / status-go#7589 — store-node peer selection was the last piece
of peer management still done above the Waku object.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 12:56:18 +01:00
Igor SirotinandClaude Opus 4.8 0bf5bfe420 feat(messaging): resolve fleet + mode inside the Waku node (#7592)
* feat(messaging): resolve fleet + mode inside the Waku node

CoreParams now carries Fleet + Mode instead of a pre-resolved ClusterConfig.
The waku node resolves its peers from the fleet name via the fleets registry
and derives the peer-exchange / discv5 policy from the mode (Core = full/relay,
Edge = light) — moving peer management into the Waku object and giving the
messaging API its Start(fleet, mode) shape.

- New wakuv2.Mode (Core = relay, the default; Edge = light). It is the single
  internal source of truth for the light-vs-full distinction and fully replaces
  the former wakuv2.Config.LightClient flag (Config.IsLightClient() derives from
  Mode). Unknown mode values are rejected by Config.Validate. Re-exported as
  messaging.Mode; the app-facing WakuV2Config.LightClient bool and its DB column
  are kept unchanged for backwards compatibility (bridged via ModeFromLightClient).
- wakuv2.Config gains Fleet + Mode; setDefaults resolves the fleet and derives
  the node-type flags. An empty fleet leaves WakuNodes / DiscV5BootstrapNodes /
  ClusterID as set directly (waku unit tests point at ephemeral nodes).
- services/ext and push-notification-server pass fleet + mode; the app no longer
  pre-resolves node lists for the messaging path.
- Break the pkg/messaging/types -> waku import edge (Shard.PubsubTopic computes
  its pubsub topic directly) so the waku node can own fleet resolution without
  an import cycle.

Behaviour-preserving for the app: named fleets resolve to the same peers /
clusterID, and Core/Edge derives the same flags as the old LightClient path.
Note: DefaultConfig now defaults to Core, so the shared in-process test waku
enables discv5 (idle, no bootnodes) where it previously did not.

Part of pm#380 / status-go#7589 (Phase 2b).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(params): drop dead peer fields from ClusterConfig

Now that the waku node resolves its peers from the fleet name (this PR),
ClusterConfig.WakuNodes / DiscV5BootstrapNodes have no readers and were
never persisted, and ClusterConfig.ClusterID is only written to and
reloaded from the DB, never consumed. Drop all three from the struct
(keeping Enabled + Fleet) and the orphaned DefaultWakuNodes /
DefaultDiscV5Nodes re-exports.

The cluster_id DB column is kept (no migration): it is written from the
selected fleet on save (params.DefaultClusterID) and no longer loaded back
into the struct.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* refactor(messaging): build waku config from fleet+mode in newWaku

newWaku no longer takes the whole params.WakuV2Config. Its wakuParams now
carries only what a caller actually configures — fleet + mode, plus the
port / udpPort / nameserver that some deployments set — and the waku node
builds the rest of its config from fleet+mode (peers, cluster id) and the
waku layer's setDefaults (host, discovery limit, max message size, default
shard topic).

Removed from the config build:
- identity: never read by newWaku (dead wakuParams field).
- Host / DiscoveryLimit / MaxMessageSize: only ever the waku defaults;
  setDefaults fills them.
- DefaultShardPubsubTopic: setDefaults fills it.
- EnableStoreConfirmationForMessagesSent: unconditionally overridden by the
  mode inside gowaku (Core -> true, Edge -> false), so the passed value was
  already a no-op.
- AutoUpdate is now a fixed policy (always true, as every caller set it).

The public CoreParams (WakuConfig) is unchanged; only the messaging-internal
newWaku boundary is slimmed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 09:45:34 +01:00
Igor SirotinandClaude Opus 4.8 075510ce3b feat(messaging): extract Waku fleet registry into pkg/messaging/waku/fleets (#7590)
Move the fleet definitions (waku nodes, discv5 bootstrap nodes, cluster
IDs, store nodes) out of params/cluster.go into a new leaf package
pkg/messaging/waku/fleets, behind the Waku layer. It exposes a registry
API (Supported / IsSupported / WakuNodes / DiscV5Nodes / ClusterID /
StoreNodes / LoadFromFile) plus Register() so local/interop harnesses
can register an ephemeral network as a named fleet.

params/cluster.go keeps back-compat re-exports (type aliases, fleet-name
constants, delegating helpers) so existing callers are unchanged. The
registry is a lightweight leaf package (deps: enr, multiaddr,
messaging/types only) so params does not pull in the go-waku runtime.

Part of pm#380 / status-go#7589 (Phase 2a).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 11:33:05 +01:00
Marcin Czenko e956b77fcb feat: logos storage for History Archives (#7486)
* chore: adds setting file for NeoVim

* feat: wires up LogosStorageConfig db setup

* feat: adds implementation of ArchiveManagerLogosStorage and wires it up

* feat: wire LogosStorage history archive runtime control

* feat: expose history archive index completion signal

* feat: expose LogosStorage debug and connect APIs

* feat: add history archive timing knobs

* chore: align functional archive build toggles

* chore: refactors token permissions tests

* feat: wire LogosStorage archive APIs, request plumbing, and functional test

* fix: use UniversalChatID() for archive link distribution

* fix: functional archive tests

* feat: respecting online status in history archive task

* feat: more control over "ratchetNotFoundDelay"

* test: run storage-related functional tests only when USE_LOGOS_STORAGE is true

* test: adds LogosStorage backend tests

* build: updates testing on CI

* build: updates linting on CI

* fix: make sure archive_manager_torrent_test has use_torrent guard

* fix: formatting

* chore: updates nvim settings to include CGO paths

* chore: removes redundant "special disabled" files

* fix: Python linting issues

* build: use system Nim for libstorage native and Docker builds

* fix: initialize LogosStorage node config in DefaultNodeConfig

* fix: rebase

* fix: final review

* build: cleans up the vars in test storage and torrent targets in Makefile

* fix: stop unseeding before calling CreateHistoryArchiveFromDB (logos)

* test: cleans up some noise when closing websockets in functional tests

* test: further increase test coverage

* fix: linting

* chore: update local project nvim config

* chore: refactors ArchiveManagerLogosStorage

* chore: updates CONTRIBUTING.md

* build: temporarily add mc2 convenience scripts

* build: reset shared dependency repos before checkout in Makefile

Adds `git reset --hard` before `git checkout` in the `clone-nim-sds`
and `clone-storage` Makefile targets. Prevents CI failures when the
shared `../nim-sds` or `../logos-storage-nim` directories contain
unexpected local modifications from previous builds.

* fix: use shorter waku message retention policy only for LogosStorage tests

* fix: rename COMMUNITY_IMPORTING_HISTORY_ARCHIVE_MESSAGES_FINISHED to COMMUNITY_HISTORY_ARCHIVES_DOWNLOAD_AND_IMPORT_FINISHED

* build: move STORAGE and TORRENT envs close to their respective targets

* build: more robust cloning target for sds and storage
2026-06-23 18:03:37 +02:00
Igor SirotinandClaude Opus 4.8 1f90610645 chore(messaging): remove missing message verification (#7559)
logos-delivery owns missed-message recovery (RecvService) internally, so
status-go no longer needs to periodically query store nodes to retrieve
missing messages. Remove the MissingMessageVerifier and its surrounding
machinery:

- The MissingMessageVerifier and its driving loop (checkForMissingMessagesLoop),
  along with the SetCriteriaForMissingMessageVerification call chain through
  the messaging API, transport and waku layers.
- The now-dead EnableMissingMessageVerification config flag and its plumbing
  (params, waku config, create-account request, node-config persistence).

Sent-message store confirmation (MessageSentCheck /
EnableStoreConfirmationForMessagesSent) is intentionally left in place.

Refs: logos-messaging/pm#380

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 22:41:47 +01:00
Anthony Laibe f7a2a0b679 feat: ensv2 2026-06-15 16:05:41 +02:00
Andrey Bocharnikov addeb657cd fix(rpc): add katana fallback providers and drop bokuto proxy
- official
- Conduit
- Tenderly
2026-06-12 16:54:14 +02:00
Andrey Bocharnikov b5a5fd1db1 fix(rpc): remove proxy provider for katana
* not supported by alchemy, infura

fixes status-im/status-app#21143
2026-06-09 18:52:46 +02:00
Andrey Bocharnikov aa38019623 fix: address pr comment 2026-06-09 18:52:46 +02:00
Andrey Bocharnikov 6a671d582c chore: drop unused Default*URL network fields
DefaultRPCURL/DefaultFallbackURL/DefaultFallbackURL2 were only ever populated by the removed embedded-proxy path and are read nowhere, so drop them from the Network struct and the assertions that checked they stayed empty.
2026-06-09 18:52:46 +02:00
Andrey Bocharnikov 7ae74594e0 chore: remove legacy embedded proxy provider
Remove embedded-proxy provider generation and related auth/config plumbing, keeping smart proxy and direct providers as the supported RPC paths.
2026-06-09 18:52:46 +02:00
Andrey Bocharnikov 0f8ac5b12d chore: remove CryptoCompare market provider
Drop CryptoCompare provider wiring and its tests, and remove market proxy credentials that were only used by the CryptoCompare proxy path.
2026-06-09 18:52:46 +02:00
Anastasiya 46e9406e13 test: use force reevaluation for community tests (#7488)
* test: use force reevaluation for community tests

* test: add tests for new function to improve code coverage
2026-06-01 17:42:39 +03:00
8082fea1d4 chore: merge branch 'release/10.34.x' into develop (#7453)
* chore: remove Polygon zkEVM chain (#7429)

* chore: remove status l2 sepolia (#7431)

* fix(wallet-connect): advertise wallet_switchEthereumChain (#7432)

Fixes #20697

* fix(connector): EIP-5792 methods + trusted-only eth_accounts auto-share on requestPermissions (#7428)

fix(connector): partial permissions revocation
fix(connector): parallel dapp requests races

fixes status-im/status-app#20591

* feat(connector): ephemeral dApp records (#7435)

* feat(connector): ephemeral dapp records

refs status-im/status-app#20676

* fix: copilot comments

* chore: more descriptive logging added to router package

* feat: implemented log file rotation for new sessions

Added functionality to rotate log files when a new session starts, while the logs from previous sessions
are also kept.

* fix: puzzle-auth providers should not depend on the presence/absence of basic-auth credentials (#7437)

* fix: puzzle-auth providers should not depend on the presence/absence of basic-auth credentials

If the same network has puzzle-auth and basic-auth providers an incorrect enable flag might be used
if there is no ethrpc/status proxy credentials set.

* chore: sync balance/activity fetching (#7438)

* chore: trigger activity fetch when balance updated

* chore: trigger balance update when activity fetched

* fix(wc): reconnect broken pipe

fixes status-app/status-im#20767

* fix(wc): recreate ws connection on start

* fixes broken wc after restoring from the background

fixes status-app/status-im#20767

* fix: copilot comments

* fix: shrink tests

* fix: use WCClientGetter

* wcclient is recreated when service is paused

* fix: readability

* fix: pr comments

* fix: flaky test

* fix: push notification migration

If the latest migration ran is not present then remove it

* perf: Enrich community members and contacts with visual identity (#7430)

For each community member and contact Status needs to wire another 4 RPCs to fully resolve the members and contacts. This commit adds the necessary info in the community members and contacts response directly.

Needed for: https://github.com/status-im/status-app/issues/20228

* fix(collectibles): disable ink, katana

fixes status-im/status-app#20717

* fix(collectibles): pr comments

* feat(wallet): skip TANGYUAN and POSI tokens on BSCMainnet

Added token keys for TANGYUAN and POSI to the SkippedTokenKeys list.

Closes #20860

* perf: Interrupt stats ticker and throttle mvds on messenger.pause

The messenger needs to keep only critical infrastructure while paused.
This commit stops the stats retrieval while paused - not used. And throttles the mvds datasync to 5 minutes. This means that the ack is confirmed once every 5 minutes (as opposed to 300ms) while paused.
Message sending is also disabled in this time frame.

---------

Co-authored-by: Anthony Laibe <491074+alaibe@users.noreply.github.com>
Co-authored-by: Andrey Bocharnikov <andrey.bocharnikov@gmail.com>
Co-authored-by: Alex Jbanca <47811206+alexjba@users.noreply.github.com>
Co-authored-by: Alex Jbanca <alexjb@status.im>
2026-05-20 09:54:59 +02:00
Andrey Bocharnikov 912e154c41 feat(rpc): puzzle auth (#7423)
* feat(rpc): puzzle auth

fixes #7261

* feat(rpc): fix copilot comments

* feat(rpc): fix copilot comments

* feat(rpc): treat 401 as non-critical errors

* fix: redundant code

* fix: redundant code

* fix: replace grove providers for bnb

* fix: copilot comments
2026-04-28 21:41:26 +04:00
saledjenic d12a6e7f59 chore: token addres/ui alignment (#7425)
* fix: usdc token address for polygon zkevm updated

* chore: an alignment with the official documentation on the chain name for ZKsync chain
2026-04-28 16:45:27 +02:00
Marcin Czenkoandjakub 5141a339a9 feat: libstorage support in build system (#7332)
* feat: support libstorage in the build system

* build: make sure linting includes logos-storage

* build: tweaking native build of libstorage that avoids calling make update (allowing to build on RYZEN processors)

* build: removes redundant scripts

* build: removes printing libstorage version on nix env

* test: more uniform naming (USE_LOGOS_STORAGE)

* build: bumps vendor hash

* test: include logosstorage tests in the coverage on the CI

* build: remove passing lib paths to the generate target

Co-authored-by: Jakub <jakub@status.im>

* build: Update Dockerfile - remove indentation

Co-authored-by: Jakub <jakub@status.im>

* build: remove redundant check in Makefile

Co-authored-by: Jakub <jakub@status.im>

* build: remove noise from Makefile

Co-authored-by: Jakub <jakub@status.im>

* build: remove redundant IFs from Makefile

* build: adds README to be used when printing logosstorage help messages

* build: move some Makefile vars to be better visible in context

---------

Co-authored-by: Jakub <jakub@status.im>
2026-04-22 17:45:04 +02:00
Anthony Laibe c01a0484b1 feat: add hoodi chain (#7384) 2026-04-05 10:42:37 +02:00
Andrey Bocharnikov 9edf223e3a feat(market): support demo/pro coingecko keys (#7400)
* feat(market): support demo/pro coingecko keys

fixes #7399

* feat(wallet): fix SendTransactionV2 api method
2026-04-01 20:53:56 +04:00
saledjenic eba639978d feat: add support for several new chains (#7288)
- Introduced the following mainnet chains with their testnets:
  - Polygon ZkEVM,
  - Unichain,
  - Katana,
  - Ink,
  - Abstract,
  - ZkSync Era,
  - Soneium,
  - Scroll,
  - Blast

Updated the code to accommodate the new chains.
2026-03-26 08:29:40 +01:00
Roman Zajic 630cedca0f chore: add community token deployer overrides (#7338) 2026-03-10 15:58:29 +08:00
Andrey BocharnikovandJonathan Rainville 451464d227 feat: wallet connect API (#7328)
* feat(walletconnect): WC v2 protocol implementation

* feat(walletconnect): integrate WC client into connector service

* refactor(walletconnect): remove legacy WC database layer and API

Fixes #19740

---------

Co-authored-by: Jonathan Rainville <rainville.jonathan@gmail.com>
2026-02-16 13:01:11 -05:00
Andrey BocharnikovandEgor Rachkovskii 66d2ea14af feat(wallet): add module for proof-of-work auth (#7321)
* feat(wallet): add module for proof-of-work auth

Add a new puzzleauth package that implements client-side proof-of-work
authentication using Argon2id hashing algorithm.
(https://github.com/status-im/proxy-common/tree/master/auth)

fixes #7320

* feat(collectibles): integrate nft-proxy with proof of work auth (#7322)

* feat(wallet): integrate nft-proxy with puzzle auth into collectibles

The alchemy client now supports three modes: alchemy api key, basic auth, proof-of-work

refs #7320

* feat(wallet): fix copilot comments

* feat(wallet): extract urls and auth logic for alchemy client

* test: Refactor `join_community` to improve handling of Waku propagation delays for light client mode

* test: Improve community join handling for Waku light client mode

- Add `waku_light_client` property to support light client mode checks.
- Introduce delays and retries to account for async filter subscriptions.
- Enhance error logging and re-send join requests in case of message loss.

---------

Co-authored-by: Egor Rachkovskii <egorrachkovskii@status.im>
2026-02-13 17:17:47 +04:00
saledjenic 8b27a0694d feat: add CommunitiesSupported flag for network configurations (#7283)
- Introduced CommunitiesSupportedOnChain function to determine if communities are supported on a given chain.
- Updated Network struct to include CommunitiesSupported field.
- Implemented networkhelper functions to apply community support status to networks.
- Modified BuildDefaultNetworks to utilize the new community support feature.
2026-01-16 08:47:23 +01:00
Igor Sirotin 30935148c4 refactor: project layout (crypto, logutils, rpc, accounts-management) (#7226)
* refactor: internal/crypto

* refactor: internal/logutils

* chore: internal/rpc

* refactor: internal/accounts-management
2025-12-18 12:24:40 +00:00
Igor Sirotin 0fcf4ceb8e refactor: project layout (messaging) (#7224)
* refactor: pkg/messaging

* fix: address non-go changes
2025-12-17 19:40:40 +00:00
5f53d31564 test: Token gated communities (#7113)
* test: service functions

* test: test_token_gated_community_membership

* fix: chain id

* test: test_token_gated_community_membership_with_valid_tokens

* fix: skip test because of issue 7114

* fix: refactor setup_backends
- test_admin_token_permissions_with_valid_tokens

* fix: add member permission to admin test
- cleanup and add additional logging

* fix: shutdown backends in parallel

* fix: comment

* fix: skip test for issue 7135

* test: for issue
- test_owner_edits_visible_before_and_after_minting_owner_token

* fix: skip test for issue 7139

* fix: reduce for PR size

* fix: undo parallel container shutdown

* fix: move enums to services wakuext

* fix: stop_messenger removed

* fix: use CommunityTokenPermissionType instead of int

* fix: add CommunityRoles enum

* fix: reduce test names

* fix: remove unnecessary get

* fix: wait times

* fix: enum values serialization

* fix: wrap generate tokens

* fix: log outside helper

* fix: get_erc20_balance method to Foundry

* fix: add assertions to balance

* fix: refactor create_token_gated_community

* fix: remove unnecessary reevaluation

* fix: make it prettier

* fix: remove unnecessary check

* test: refactor to use signals

* fix: add signal
- community.memberReevaluationStatus

* fix: skipp test because of issue 7161

* fix: properly wait for signals

* fix: remove unused self.non_member

Co-authored-by: Igor Sirotin <sirotin@status.im>

* fix: move fake_address

* fix: remove token overrides

* fix: refactor backend creation and token deployment

* feat: python restartWalletReloadTimer

* feat: wakuext community methods

* feat: request_to_join_community takes list of addresses

* feat: request_to_join_with_signatures

* chore: remove test_membership_no_valid_tokens

* fix: working version of test_membership_with_valid_tokens

* fix: linter

* test: improve test_admin_token_permissions_with_valid_tokens

* fix: reintroduce negative test
- test_membership_no_valid_tokens_fake_address

* test: use signed request for admin perm test

* fix: return admin perm test to be skipped

* feat: expose anvil port

* fix: token_overrides, multicall_contract_address

* fix: working test_admin_token_permissions_with_valid_tokens

* fix: request_to_join_community default arguments

* fix: refactor request_to_join_community for older tests

* test: git clone with recursive approach

* fix: snt_deployment once per session

* test: snt_deployment once per class

* test: conditional snt_deployment

* test: shared SNT deployment

* test: make get_erc20_balance call reliable

* fix: cleanup

* fix: undo clone_and_run.sh

* fix: undo docker compose for Anvil

* chore: add support for custom tokens in wallet configuration

Introduced CustomTokens field in WalletConfig to allow registration of custom tokens, mainly necessary for the functional tests.

Fixes #7184

* test: try to unclog the CI

* fix: rebase onto develop

---------

Co-authored-by: Igor Sirotin <sirotin@status.im>
Co-authored-by: Sale Djenic <aleksandardjenic@status.im>
2025-12-15 18:14:10 +08:00
Igor Sirotin ea40003a77 chore: project layout (api, node, multiformat, backup) (#7191)
* chore: delete StatusBackend interface

* chore: rename GethStatusBackend to StatusBackend

* chore: move to pkg/multiformat

* chore: move and rename pkg/backend

* fix(Makefile): lint-fix depends on generate

* chore: move services/pkg

* chore: pkg/backend/node

* chore: testdata/test-0.132.0-account

* fix: rename imports
2025-12-12 21:28:00 +00:00
osmaczko 0fc843266f feat: introduce opentelemetry tracing (#7172)
* feat: introduce opentelemetry tracing

* chore: return associated message hasheh from segmentation layer

Required to derive trace context when a message has been segmented.

* feat: add basic tracing
2025-12-08 20:31:32 +00:00
Sale Djenic 4f587c7114 feat!: a new token list approach - wallet sdk token lists integration 2025-12-08 15:16:45 +01:00
Igor Sirotin c610e571e1 fix: goimports configuration (#7004)
* fix: goimports only 1 local package

* fix: vscode settings goimports

* fix: un-gitignore IDEA code styles

* feat: goland code styles

* fix: remove generate_handlers nolint comment

* chore: lint-fix all files
2025-10-16 17:07:38 +01:00
Dario Lipicar 0ac383b8fb feat: clean up balance fetching from token manager (#6991)
* feat: improvemets to multistandardbalance controller

* feat: introduce tokenbalances package

* chore: replace balance fetching capabilities from reader and token manager with tokenbalances

* feat: allow overriding multicall3 contract address

* chore: fix tests

* chore: pr comments
2025-10-15 10:05:46 -03:00
Igor Sirotin 5bd4984a8c chore: deprecate command message (#6981)
* chore: deprecate command message

* fix: tests

* fix: test, lint

* chore: drop command columns

* test: remove transaction methods

* fix: move migration to protocol
2025-10-03 15:11:01 +01:00
Dario Gabriel Lipicar cad3569b74 fix: use proxy for mercuryo url signing 2025-09-30 14:35:41 +02:00
Sale Djenic 6218eabb84 chore: remove Celer bridge integration
- Deleted Celer bridge ABI and Go binding files.
- Removed related configurations and feature flags from wallet and protocol settings.
- Cleaned up wallet service code by eliminating references to Celer bridge processing.
- Updated path processor to remove Celer bridge transaction handling.
2025-09-22 17:19:23 +02:00
Igor Sirotin 08a5b8c405 refactor: instantiate RPC server directly (#6846)
* refactor: use rpc server directly instead of running geth node

* refactor: run rpc server in connector service

* fix: force single API instance in connector service

* refactor: move start of time source

* refactor: remove rpc client router blocked methods

* feat: eth service

* fix: remove connector service welcomeServer

* fix: connector allow all origins

* fix: log rpc calls

* fix: use EthClient directly from connector and eth services

* chore: cleanup client and route

* test: set 1 as default ChainID

* test: connector forbidden method

* fix: TestForwardedRPCs

* test: fix rebase issues

* test: Implement ConnectorApiError

* fix: connector api result unmarshal

* fix: TestForwardedRPCs

* chore: address pr comments

* test: fix rebase issues
2025-09-09 11:27:15 +01:00
Dario Gabriel Lipicar e2db0abe75 chore: drop opensea 2025-09-04 14:15:50 -03:00
Sale Djenic 3fe5ea0b03 refactor: DataDir removed from NodeConfig cause RootDataDir already has an absolute path to data dir
In some parts of the code, DataDir was an absolute, but in other parts a relative path to the data dir, while
RootDataDir is always an absolute path to the data dir. Since no need for such redundancy, DataDir is removed.
2025-09-04 16:28:42 +02:00
Dario Gabriel Lipicar d03b7b5ed0 chore!: use single alchemy api key for all chains 2025-08-29 08:51:05 -03:00