WATS Wallet Info

WATS Wallet is a self-custody, multi-chain Web3 wallet built by Alltoscan LLC and shipped as three products under one brand: a Chrome extension, a mobile app and an NFC Metal Card. It covers Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Solana and TON. On EVM networks every action is charged in one token, ATS, through an ERC-4337 paymaster that debits a single balance on BSC; Solana transactions pay their own native fee in SOL, while fees on TON are paid in ATS too. WATS does not natively support Bitcoin, and it never holds your keys.

WATS Wallet Logo

TrustNet Score

The TrustNet Score evaluates crypto projects based on audit results, security, KYC verification, and social media presence. This score offers a quick, transparent view of a project's credibility, helping users make informed decisions in the Web3 space.

72.02
Poor Excellent

Real-Time Threat Detection

Real-time threat detection, powered by Cyvers.io, is currently not activated for this project.

This advanced feature provides continuous monitoring and instant alerts to safeguard your assets from potential security threats. Real-time detection enhances your project's security by proactively identifying and mitigating risks. For more information, click here.

Security Assessments

Select the audit
"Static Analysis Dynamic Analysis Symbolic Execution SWC Check Manual Review"
Contract address
0x785D...562A
Network
BNB Smart Chain - Mainnet
License MIT
Compiler v0.8.28+commit.7893614a
Type Gas Collector
Language Solidity
Onboard date 2026/10/17
Revision date 2026/10/22

Summary and Final Words

No crucial issues found

The contract does not contain issues of high or medium criticality. This means that no known vulnerabilities were found in the source code.

Ownership is not renounced

The owner retains significant control, which could potentially be used to modify key contract parameters.

Scope of Work

This audit encompasses the evaluation of the files listed below, each verified with a SHA-1 Hash. The team referenced above has provided the necessary files for assessment.

The auditing process consists of the following systematic steps:

  1. Specification Review: Analyze the provided specifications, source code, and instructions to fully understand the smart contract's size, scope, and functionality.
  2. Manual Code Examination: Conduct a thorough line-by-line review of the source code to identify potential vulnerabilities and areas for improvement.
  3. Specification Alignment: Ensure that the code accurately implements the provided specifications and intended functionalities.
  4. Test Coverage Assessment: Evaluate the extent and effectiveness of test cases in covering the codebase, identifying any gaps in testing.
  5. Symbolic Execution: Analyze the smart contract to determine how various inputs affect execution paths, identifying potential edge cases and vulnerabilities.
  6. Best Practices Evaluation: Assess the smart contracts against established industry and academic best practices to enhance efficiency, maintainability, and security.
  7. Actionable Recommendations: Provide detailed, specific, and actionable steps to secure and optimize the smart contracts.

A file with a different Hash has been intentionally or otherwise modified after the security review. A different Hash may indicate a changed condition or potential vulnerability that was not within the scope of this review.

Final Words

The following provides a concise summary of the audit report, accompanied by insightful comments from the auditor. This overview captures the key findings and observations, offering valuable context and clarity.


Smart Contract Analysis Statement

Contract Analysis

The ATSGasCollector v2 contract is a revision of the previously audited collector on BSC that takes ATS from a holder as payment for gas that is spent on another chain. Every collection now requires the holder's EIP-712 signature over the exact amount, a settlement id, the destination chain, the treasury and a deadline. The collector role decides only who may submit such a signature. The collected ATS goes directly to the treasury and never stays in the contract. For every settlement id the contract records who paid and how much, so each id can be used once and settlements can be reconciled on-chain. The re-audit covered the source verified on Sourcify with an exact match on BSC testnet.

Ownership Privileges

The ownership is held through a two-step handover. On the v2 testnet deployment the owner and the treasury are the deploying EOA; for mainnet the team intends the 2-of-3 Safe that owns the legacy contracts. The owner retains the following privileges:

  • Adding and removing collectors
  • Changing the treasury, which can be neither the zero address, nor the contract itself, nor the ATS token; a change invalidates all outstanding authorisations because the treasury is part of every signature
  • Setting the per-call cap, which can never exceed the hard-coded ceiling of 1,000 ATS
  • Pausing and resuming all collection
  • The owner and the collectors cannot move ATS without a matching holder signature, and the owner cannot renounce ownership
  • No owner action takes effect with a delay, as no timelock is in place

Security Features

The contract implements several positive security features:

  • Holder-signed EIP-712 authorisations bound to amount, settlement id, destination chain, treasury, deadline, chain id and contract address
  • Signatures are verified without reverting through ECDSA.tryRecover, malleable high-s signatures are rejected and compact EIP-2098 signatures are supported
  • A settlement id can be collected only once, and the payer and amount are recorded for every id
  • A hard-coded ceiling of 1,000 ATS per collection that even the owner cannot raise
  • Checks-effects-interactions order, SafeERC20 transfers, an immutable token address, custom errors and a pinned compiler version

Re-audit Outcome

The high-severity issue is fixed in the v2 contract: in testing, neither a collector key without the holder's signature nor an owner that redirects the treasury and whitelists itself could take any ATS, and tampered, replayed and expired authorisations all reverted. The settlement binding, the constructor naming, the English documentation and the custom errors are also fixed. A compromised collector key can still occupy an unused settlement id with a tiny self-signed payment, which the contract documents and which the payment record exposes. No new vulnerability was introduced by the changes, and Slither and Aderyn reported no new valid issue. Important for the live system: the v2 collector is so far only deployed on BSC testnet. The legacy collector on BSC mainnet is unchanged and still active, with its production collector key authorised and a per-call cap of 150 ATS; the revocation announced on 2026-10-18 removed a different, unused key. Until users have migrated and revoked their approvals to the legacy collector, the original risk to approved balances remains on mainnet.

Note - This re-audit report consists of a security analysis of the ATSGasCollector v2 smart contract. This analysis did not include economic analysis of the contract's tokenomics. Moreover, we only audited the main contract for the ATSGasCollector team. Other contracts associated with the project were not audited by our team. We recommend investors do their own research before investing.

Files and details

Findings and Audit result

high Issues | 1 findings

Resolved

#1 high Issue
Collector role and owner can pull every approving user's ATS
ATSGasCollector.sol
L52-66
L78-88
Description

collect is authorised only by the isCollector role, which is held by a hot backend key, and no individual collection needs the user's signature. maxPerCollect limits a single call but not the total, there is no per-user or per-period limit, and any fresh settlementId passes the replay check. Users are expected to grant this contract an unlimited allowance for gasless use. A compromised collector key can therefore move the full balance of every approving user to the treasury through repeated calls; in our testing 133 calls emptied a 20,000 ATS balance. With that key alone the attacker does not receive the funds, but users lose them without consent and can only be made whole by the project. The owner Safe can also change the treasury, whitelist any collector and lift maxPerCollect without limit or delay, which turns an owner compromise into direct theft of all approved balances in a single call. The contract comments name a leaked key as the threat these brakes are meant to contain, yet they only stop the drain from happening in one transaction.

optimization Issues | 1 findings

Resolved

#1 optimization Issue
Use custom errors instead of revert strings
ATSGasCollector.sol
L44-83
Description

The constructor, setTreasury and collect use require with revert strings. Custom errors are cheaper to deploy and to revert with.

informational Issues | 2 findings

Resolved

#1 informational Issue
settlementId is not bound to the user, amount or destination
ATSGasCollector.sol
L78-87
Description

The replay guard only records that an id was used. Which user, amount and destination chain belonged to an id is visible only in the event, and nothing on-chain links the id to the operation it pays for on the destination chain. Reconciliation and refunds for operations that never execute depend entirely on the backend.

Resolved

#2 informational Issue
Constructor parameter shadows an inherited name and documentation is Turkish only
ATSGasCollector.sol
L9-23
L43
Description

The constructor parameter _owner shadows the private _owner variable of Ownable. It has no functional effect, but it hurts readability. All NatSpec is in Turkish.