Gem Wallet is a fully open source multichain mobile wallet with transparent revenue reporting. Built for iOS and Android with a focus on security and user sovereignty.
Platforms: on mobile.
Stage Progress
The wallet's source code can be reviewed by the public.
1/1 โ
The wallet's source code can be reviewed by the public.
- Source visibility โ The wallet's source code is publicly available. โ
The wallet provides a basic level of security.
0/3 โ
The wallet provides a basic level of security.
- Security audits โ The wallet has passed a security audit within the last year. โ
- The wallet supports hardware wallets from at least three manufacturers. โ
- Chain verification โ The wallet verifies the integrity of the L1 chain. โ
The wallet offers a minimal level of privacy to its users.
0/1 โ
The wallet offers a minimal level of privacy to its users.
- Private token transfers โ Token transfers and balances are private by default. โ
The wallet does not lock the user in and lets the user remain in full control of their account.
1/2 ๐ก
The wallet does not lock the user in and lets the user remain in full control of their account.
- Account portability โ The user can freely export their account to another wallet. โ
- The wallet allows the user to use their own node when interacting with the L1 chain. โ
The wallet's development process and internal workings are transparent to the user.
1/1 โ
The wallet's development process and internal workings are transparent to the user.
- Source code license โ The wallet is licensed under a Free and Open Source Software (FOSS) license. โ
The wallet is aligned with basic Ethereum ecosystem best practices for usability.
1/1 โ
The wallet is aligned with basic Ethereum ecosystem best practices for usability.
- Address resolution โ The wallet can send funds to human-readable Ethereum addresses. โ
- Browser integration โ The wallet complies with web browser integration standards. โ
The wallet provides a strong level of security.
0/1 โ
The wallet provides a strong level of security.
- The wallet is part of a funded Bug Bounty program. โ
The wallet collects no more information about its users by default than a web browser does.
0/2 โ
The wallet collects no more information about its users by default than a web browser does.
- Wallet address privacy โ Wallet addresses are not correlatable with other user information. โ
- Multi-address privacy โ Multiple wallet addresses are not correlatable with one another. โ
The wallet does not lock the user in and lets the user remain in full control of their account.
0/2 โ
The wallet does not lock the user in and lets the user remain in full control of their account.
- Transaction inclusion โ The wallet can withdraw L2 funds to Ethereum L1 without relying on intermediaries. โ
- The wallet allows the user to use their own node when interacting with any chain. โ
The wallet's development process and internal workings are transparent to the user.
2/2 โ
The wallet's development process and internal workings are transparent to the user.
- Funding โ The wallet's funding sources and revenue model are public and transparent. โ
- Fee transparency โ The fees charged by the wallet are made transparent to the user at all times. โ
The wallet is aligned with advanced Ethereum ecosystem best practices for usability.
0/2 โ
The wallet is aligned with advanced Ethereum ecosystem best practices for usability.
- Account Abstraction โ The wallet is Account Abstraction ready. โ
- Transaction batching โ The wallet supports atomic batched transactions. โ
Security
Has the wallet's source code been reviewed by security auditors? UNRATED
Why does this matter?
Wallets are high-stakes pieces of software that deal with sensitive user data and funds. To ensure that their code is secure, industry best practices involve regularly submitting the wallet's source code for audit by an independent security auditor. These companies specialize in reviewing source code with an eye for security vulnerabilities. They report their findings to the wallet's development team for consideration, pointing out both flaws and potential security improvements.
These security audits matter in order to ensure the wallet's source code is secure, and remains that way over time. Wallet development teams typically publish such audits so that wallet users can feel safer knowing that the wallet's source code was independently audited.
How is a wallet's security auditing track record evaluated?
Does the wallet warn the user about potential scams? PARTIAL
Why should I care?
Transactions in Ethereum are very difficult to reverse, and there is no shortage of scams. Wallets have a role to play in helping users avoid known scams ahead of the user making the transaction.
How is scam prevention evaluated?
What can Gem Wallet do about its scam prevention?
Gem Wallet should implement the following features:
- Warning you when connecting to potential scam applications
Does the wallet verify the integrity of the chain(s) it interacts with? FAIL
Why should I care?
"Trust but verify" is one of the foundational principles of blockchains. It refers to the ability for participants to verify that the chain data is valid when they interact with it.
Without such verification, users rely on trusted external providers to tell them what the state of the blockchain is, similar to the web2 trust model. This allows such external providers to trick wallet users into signing transactions that do not end up having the user's intended effect.
To avoid this, Ethereum was designed to be verifiable on commodity hardware. Using a light client, this verification is possible without having to download the entire blockchain.
How is chain verification evaluated?
What can Gem Wallet do about its chain verification?
Gem Wallet should integrate light client functionality to verify the integrity of Ethereum chain data.
When signing a transaction, does the wallet show transaction details clearly? UNRATED
Why does this matter?
Transaction legibility is a critical security feature for wallets that allows users to verify transaction details directly on their wallet's screen/window before signing. This verification step is crucial for preventing attacks where malicious software might attempt to trick users into signing transactions with different parameters than what they intended.
Without this, users are at the mercy of the app they are interacting with sending them a bad transactions, either because they have a bug, were hacked, or are malicious. Without a signer being able to verify if their transaction is correct, user should not send such a transaction.
Full transaction legibility implementations ensure that all relevant transaction details (recipient address, amount, fees, etc.) are clearly displayed on the wallet screen, EIP-712 message hashes, and decoded calldata, allowing users to make informed decisions before authorizing transactions.
How is a wallet evaluated for clearly showing what users are signing?
Does the wallet support connecting to hardware wallets? UNRATED
Why does this matter?
Hardware wallets are physical devices that store a user's private keys offline, providing an additional layer of security against online threats. By keeping private keys isolated from internet-connected devices, hardware wallets protect users from malware, phishing attacks, and other security vulnerabilities that could compromise their funds.
When a software wallet supports hardware wallets, users can enjoy the convenience and features of the software wallet while maintaining the security benefits of keeping their private keys offline. This combination offers the best of both worlds: a user-friendly interface with enhanced security.
How is a wallet's hardware wallet support evaluated?
Does Gem Wallet use a secure and efficient passkey verification library? FAIL
Why should I care?
Passkeys provide a secure and phishing-resistant way to authenticate users without relying on seed phrases. Using gas-efficient and well-audited libraries for verification is crucial both for security and cost-effectiveness.
P256 signature verification is computationally expensive on-chain, so using optimized libraries reduces transaction costs.
Some verification libraries have undergone multiple security audits while others may have fewer or no publicly available audits.
How is a wallet's passkey implementation evaluated?
What can Gem Wallet do to improve its passkey implementation?
Gem Wallet should implement passkeys using a well-audited verification library such as Smooth Crypto Lib 159K gas.
How easy does the wallet make it to recover your account? UNRATED
Why does this matter?
What if you forget your seed phrase?
Self-custody is difficult and complicated for most normal users, relative to typical web2 accounts which often feature easy account recovery features. Moreover, losing one's seed phrase can be a devastating and irrecoverable financial loss. Some users avoid self-custody due to this concern.
Guardian-based recovery (also known as "Social recovery") helps make self-custody safe and practical for everyday users. Properly implemented, this keeps users safer while still providing the self-sovereignty benefits of self-custody in the day-to-day.
How is account recovery evaluated?
Privacy
Is your wallet address linkable to other information about yourself? UNRATED
Why does this matter?
How is wallet address privacy evaluated?
Can your multiple wallet addresses be correlated with one another? UNRATED
Why does this matter?
How is multi-address privacy evaluated?
Can you send and receive tokens without revealing your transaction history to others? FAIL
As all token transfers will be recorded publicly onchain forever, Gem Wallet should only be used for transactions where privacy is not and will never be needed, such as public DAO treasury operations.
Gem Wallet should not be used for peer-to-peer transfers, and users should keep their addresses to themselves to avoid creating permanent associations between their public transactions and their personal identity.
Usage of Gem Wallet for conducting real-world transactions is especially not advisable, as it exposes the user to the risk of the merchant looking up their customer's balance and initiating a wrench attack on the user. This puts users of Gem Wallet at risk of physical and financial harm.
Why should I care?
Data posted on public blockchains like Ethereum is publicly available to everyone. This means that anyone can see your transaction history. You would not voluntarily post your bank statements or private purchase history online, yet this is what happens by default when transacting on public blockchains.
Many privacy solutions have emerged to solve this problem. However, to be actually usable by users, these solutions must be tightly integrated in wallets and easy to use. Walletbeat looks at whether wallets let users send, receive, and spend tokens privately by default.
How is token transfer privacy evaluated?
What can Gem Wallet do about its token transfer privacy?
Gem Wallet should support some form of private token transfers, such as ERC-5564: Stealth Addresses, and should make this the primary way to perform token transfers. Public token transfers should either be hidden under a power-user-only menu, come with important user safety warnings, or deleted from the wallet's feature set.
If you connect to an app, will it be able to learn your past activity
from other apps by default?
UNRATED
Why does this matter?
On the web, website A is not allowed to query your browsing history from
website B by default. This ensures your browsing activity remains private
across websites. This principle is enshrined in the HTTP protocol as the
Same-Origin Policy:
by default, each website has its own isolated data about a user,
and may not obtain any other information without explicit consent.
In web3, address reuse allows app to correlate your usage and browsing history across other apps. While this can be a useful feature that enables easy composability, it is also an irreversible privacy problem and a regression from web2-level privacy.
For web3 to avoid perpetuating this privacy problem, users need to be able to control the amount of information each new app may learn about their past onchain history.
Maintaining per-app accounts creates complex fragmentation and UX issues which are difficult to abstract away from users. Nonetheless, address reuse creates an indelible data trail for users.
How is app isolation evaluated?
Self-sovereignty
Can you use the wallet without relying on its default provider for
interacting with the L1 chain?
UNRATED
Why does this matter?
Ethereum's design goes to painstaking lengths to ensure that users can run an Ethereum L1 node on commodity consumer-grade hardware and residential Internet connections, and use it for interacting with L1.
Running your own node gives you several important benefits:
- Privacy: Because the wallet can work directly on your own hardware with no outside dependencies, the wallet can query chain data without revealing private details (wallet address, IP address, etc.) to an external RPC provider.
- Integrity: Relying on an external RPC provider means that this provider may return incorrect data about the state of the chain, tricking you into signing a transaction that ends up having a different effect than intended. Your own L1 node will verify the integrity of the chain, so such attacks cannot occur when using a self-hosted node.
- Censorship resistance: Because an L1 node may broadcast transactions into a shared mempool directly to other nodes in the network, your transactions are not censorable by an external RPC provider that would otherwise act as an intermediary.
- No downtime: Because the L1 node is running on your own hardware, you are not at risk of losing funds or opportunities due to downtime from an external RPC provider.
However, these advantages only matter if wallet users can actually take advantage of them. Thus, wallets must allow users to use a self-hosted node for these benefits to be realized in practice, and must not critically depend on external services to perform basic L1 interactions such as balance lookups and sending tokens.
How is L1 provider independence evaluated?
Are you locked into this wallet?
Or can you permissionlessly import your Ethereum account into another wallet?
PASS
Why does this matter?
Question: What if a wallet's dev team walked away or turned evil one day?
One of Ethereum's core promises as an Internet upgrade is to avoid the possibility for user lock-in of web2. This is achieved by ensuring accounts are permissionlessly portable across wallets.
Ensuring that accounts remain portable avoids wallets becoming lock-in vectors in web3. Permissionless account portability also keeps the wallet ecosystem healthy through open competition.
How is account portability evaluated?
Can the wallet withdraw L2 funds to Ethereum L1 without relying on intermediaries? UNRATED
Why does this matter?
One of the core tenets of Ethereum is censorship resistance. This means that users must be able to reliably get transactions included onchain, without the ability for intermediaries to prevent this from happening.
This property is critical to ensure that all Ethereum participants are provided equal-opportunity, unfettered access to Ethereum, and to ensure that Ethereum is resilient to attackers that would want to prevent others from using Ethereum on such footing.
In order to uphold this property on Ethereum L2s, users must be able to force transactions to be included on L2 chains as well. Most L2s implement such functionality by allowing L2 transactions to be submitted on the L1, and enforcing that their sequencing logic must respect such L1 force-inclusion requests by including them on the L2 chain, typically within some fixed duration.
By verifying that the wallet supports L2 force-withdrawal transactions, this attribute verifies censorship resistance at both levels: L1 and L2.
How is transaction inclusion evaluated?
Can the wallet developer take over your account without your consent? UNRATED
Why does this matter?
The promise of crypto is to make your accounts and your funds truly yours. This is what is most commonly referred to when discussing "self-sovereignty".
The underlying property that makes an account truly yours is the inability for anyone other than yourself to act on your behalf or to take over your account without prior consent.
How is account unruggability evaluated?
Transparency
Does the user have the ability to avoid lock-in and freely audit,
modify, and redistribute the wallet's source code?
PASS
Why does this matter?
Free & Open Source Software (FOSS) licensing allows a software project's source code to be freely used, modified and distributed. This allows better collaboration, more transparency into the software development practices that go into the project, and allows security researchers to more easily identify and report security vulnerabilities. In short, it turns software projects into public goods.
How is source code license evaluated?
Is the source code for the wallet visible to the public? PASS
Why does this matter?
How is source visibility evaluated?
How is the wallet's development team funded? PASS
Why does this matter?
How is funding evaluated?
Does the wallet clearly display all transaction fees and their purpose? PASS
Why does this matter?
Fee transparency is crucial for users to understand the full cost of their transactions. Without clear fee information, users may be surprised by high transaction costs or hidden fees charged by the wallet.
Transparent fee disclosure helps users make informed decisions about when to transact and which wallet to use. It also builds trust between users and wallet providers by ensuring that all costs are clearly communicated upfront.
How is a wallet's fee transparency evaluated?
Ecosystem
Is the wallet Account Abstraction ready? FAIL
Users cannot use Account Abstraction features. However, accounts created in this wallet can be imported in other wallets that do support EIP-7702: Account Abstraction via smart contract authority delegation.
Why should I care?
User experience on Ethereum has historically suffered from the limitations of Externally-Owned Accounts (EOAs), which is the type of account most Ethereum users use today. By contrast, smart wallet accounts offer many UX and security improvements, such as the ability to:
- Batch multiple transactions, removing the need for separate "token approval" transactions before every other token operation.
- Pay gas fees in other tokens than Ether, or support sponsored transaction fees (with ERC-4337: Account Abstraction for smart contract wallets)
- Delegate some operation to trusted provider, such as allowing onchain games to withdraw small amounts of tokens without signing pop-ups for each and every transaction.
- Change transaction authorization logic, enabling the use of Passkeys (and cellphone authentication methods) for signing transactions.
- Update the set of keys used to control the wallet, enabling the switch to quantum-resistant encryption algorithms in the future.
- Define account recovery rules, reducing the risk of losing access to your account when losing a private key or a device.
However, smart wallet accounts have historically been an all-or-nothing, wallet-specific proposition for users. There was no transition path to such wallets.
As part of the Pectra upgrade, EIP-7702: Account Abstraction via smart contract authority delegation fixes this problem. It create a clean path for existing EOAs to obtain all the UX benefits of smart wallet accounts and account abstraction, without the need for users to switch to a different account address. This represents a large User Experience upgrade for all Ethereum EOA users.
How is account abstraction support evaluated?
What can Gem Wallet do about its account abstraction support?
Gem Wallet should implement support for Account Abstraction features, such as EIP-7702 Account Abstraction via smart contract authority delegation.
Can you send funds to human-readable Ethereum addresses? PASS
Why does this matter?
Ethereum addresses are hexadecimal strings (0x...) which are
unreadable to humans. Phishing scams and exploits have used this to
trick users into sending funds to invalid addresses, for example by
generating lookalike-addresses and tricking users into copy/pasting
them without noticing the difference.
Additionally, Ethereum's transition to layer 2 chains has changed user needs when sending funds. The hexadecimal address isn't sufficient anymore; the user needs to ensure that they are sending funds to the correct hexadecimal address on the correct chain, increasing the potential for mistakenly sending funds to the wrong place or the wrong chain.
Address naming registries like ENS partially solve this problem by
allowing more human-readable names like username.eth to be
automatically turned into the hexadecimal address. This is easier to
share and to accurately transfer by humans. Additionally, some address
format standards improve upon this further by including the destination
chain information as part of the address itself. Such standards include:
- ERC-7828 Chain-specific addresses using ENS:
user@l2chain.eth - ERC-7831 Multi-chain addresses:
user.eth:l2chain
Wallets that support either of these standards are able to automatically determine the destination address and chain from a human-readable string, and can bridge funds across chains as appropriate. This improves the user experience of Ethereum and its layer 2 ecosystem while reducing the potential for mistakes when sending funds.
How is address resolution evaluated?
What can Gem Wallet do about its address resolution?
Gem Wallet may want to add support for sending funds to chain-specific human-readable addresses, as specified by either:
- ERC-7828 Chain-specific addresses using ENS:
user@l2chain.eth - ERC-7831 Multi-chain addresses:
user.eth:l2chain
Does the wallet smooth out the complexities of dealing with multiple chains? UNRATED
Why does this matter?
Ethereum activity is not limited to the main L1 chain; a lot of activity has moved onto rollups and Layer 2 chains. This has allowed Ethereum to scale beyond what its L1 chain can handle, but has also introduced complexity and fragmentation for users and wallets to deal with. They must now deal with token balances fragmented across multiple chains.
To address the UX impact of this complexity, wallets should provide features to abstract away these issues, while remaining transparent to the user when cross-chain bridging risks or fees are involved.
How is chain abstraction evaluated?
Does the wallet support bundling multiple operations as a single transaction? UNRATED
Why does this matter?
Transaction batching is one of the longstanding features without which Ethereum user experience (UX) has suffered. One of the most common pain points for DeFi, for example, has been the need to perform separate "token approval" transactions, followed by a separate transaction to actually execute the user's original intent.
How is transaction batching evaluated?
Does the wallet support directly connecting to hardware wallets from a plurality of manufacturers?
UNRATED
Why does this matter?
Hardware wallets are physical devices that store a user's private keys offline, providing an additional layer of security against online threats. By keeping private keys isolated from internet-connected devices, hardware wallets protect users from malware, phishing attacks, and other security vulnerabilities that could compromise their funds.
Supporting multiple hardware wallet manufacturers preserves a healthy, open, competitive, interoperable market for hardware wallets. It also increases the total addressable market of users for the software wallet, as users that already own a specific hardware wallets will want to use a software wallet that supports it.