A trader connects a wallet to what appears to be Uniswap, approves a token swap, and the transaction goes through. Days later, the purchased tokens prove worthless, or worse, the wallet is drained. The interface looked correct, the token names matched, and there was no obvious warning. Yet the trader was never interacting with Uniswap’s official smart contracts. Instead, they were using a fork—a cloned version of the protocol that mimics the interface but runs on a different set of contracts controlled by unknown parties. This scenario has cost users millions in stolen funds and serves as a reminder that in decentralized finance, the legitimacy of the underlying smart contract matters more than the appearance of the interface.
Uniswap itself is an open-source decentralized exchange protocol where users retain self custody of their assets and trade directly through automated market maker smart contracts without intermediaries or KYC verification. The protocol’s strength lies in its transparent code and audited factory contracts, which create and manage liquidity pools across Ethereum and multiple Layer 2 networks. Yet that same open-source nature—the code is publicly available for anyone to study and deploy—has enabled malicious actors to create convincing replicas. Understanding the difference between official Uniswap factory contracts and unauthorized forks is essential for safe trading, and it requires knowing where to look, what to verify, and how to confirm that a swap is happening on the legitimate protocol.
How Uniswap’s factory contracts work and why they matter
Uniswap operates through a factory contract—a smart contract that creates and manages liquidity pools for token pairs. When a user or liquidity provider initiates a trade or deposit, they interact with a pool contract deployed by the official factory. The factory’s role is to ensure that pools are created consistently, follow the same logic, and operate according to the protocol’s design. For Uniswap V3, the factory controls concentrated liquidity ranges and fee tier structures; for V4, the architecture becomes even more modular, allowing custom hooks and execution logic.
The key security property is that the official factory contract address is fixed and immutable on each blockchain. On Ethereum mainnet, Uniswap V3’s factory is deployed at a specific address that has been audited, tested with billions of dollars in volume, and verified by the community. Layer 2 networks such as Arbitrum, Optimism, Base, and Polygon each have their own official Uniswap factory addresses. This immutability is fundamental: once deployed, the factory contract cannot be changed. Its code is transparent, its behavior is deterministic, and anyone can verify exactly how it creates pools and processes trades.
A malicious fork uses a different factory contract address—one controlled by the attacker. Even if the fork’s code is copied from Uniswap’s open-source repository, the factory runs the attacker’s instructions. It may charge hidden fees, route swaps through contracts that steal tokens, or allow the deployer to pause trades and freeze funds. From a user’s perspective, the interface might look identical to the legitimate Uniswap website, but the underlying smart contract risk is total. The transaction is not executed by Uniswap’s audited code; it is executed by whatever code the fork’s deployer has inserted.
Official factory addresses across blockchains
Uniswap maintains official documentation and verified contract lists for each supported network. On Ethereum mainnet, the Uniswap V3 factory is at address 0x1F98431c8aD98523631AE4a59f267346ea3113F. This address appears consistently across Etherscan, official Uniswap documentation, and trusted block explorers. Arbitrum has its own V3 factory at 0x1F98431c8aD98523631AE4a59f267346ea3113F (the same address due to deterministic deployment), while Optimism, Base, Polygon, and other supported chains each have their own official factory addresses.
Verifying the factory address is the first and most important security check. When a user connects to a Uniswap interface, they can inspect the browser’s network tab or use a transaction decoder to see which contract is being called. Legitimate trades call the official router or swap aggregator, which then interacts with pools created by the official factory. A fork’s transaction will show a different factory address or router contract. Some forks may even use the name “Uniswap” in their contract comments while running entirely different code underneath.
The official Uniswap team regularly publishes verified contract addresses and maintains a smart contract risk assessment framework. Users can cross-reference any address they encounter against these official sources. Block explorers such as Etherscan display verification badges for audited and openly published contracts, which adds another layer of confirmation. If a contract claims to be Uniswap but has no verification badge, appears on no official documentation, or has a deployer address that is unknown, it is almost certainly a fork.
Why open-source code does not guarantee security in practice
Uniswap’s open-source design is a strength for transparency and decentralized governance. The code is available for anyone to read, audit, and improve. This visibility has led to significant security discoveries and optimizations by independent researchers. However, open-source code is not a guarantee of safety when deployed by unknown actors. The distinction is crucial: the code quality and the code deployment are separate questions. Official Uniswap code running on the official factory is secure because it has been audited, tested, and deployed by the protocol’s core team with the community’s oversight. The same code running on a fork’s factory is only as trustworthy as the fork’s deployer.
Attackers exploit this confusion by copying Uniswap’s legitimate code, deploying it to their own factory contract, and then inserting malicious additions such as fee extraction, token theft, or account lockups. The fork may start as a perfect clone, gradually modified to serve the attacker’s interests. To a casual user, the experience is indistinguishable: tokens are deposited, a swap is executed, and the transaction appears to succeed. But the tokens are routed through the attacker’s contracts, which collect them before they reach the intended destination.
A defi protocol’s security is not measured by the code alone but by the combination of code, deployment, governance, and community oversight. Uniswap has community governance through the UNI token, allowing token holders to propose and vote on changes to the protocol. Forks typically have no governance or governance controlled by the fork’s creator, meaning changes can be made unilaterally without community input. This governance difference is worth verifying: if you are trading on a protocol that calls itself Uniswap, check whether it has open governance, transparent governance decisions, and community participation in security choices.
Spotting common fork and phishing tactics
Malicious forks and phishing attacks follow predictable patterns. A domain that looks almost identical to uniswap.org but uses a slightly different spelling—such as uniswapp.org, unswap.org, or uniswap-official.com—is a common red flag. Legitimate Uniswap maintains only a handful of official domains, and these are listed in the protocol’s official documentation and social media. If a user is uncertain about which domain to use, the safest approach is to navigate to Uniswap through a trusted source: a bookmark, a link from an official announcement, or by typing the address into Google and verifying the official search result.
Wallet interactions are another point of attack. A fake Uniswap site may request permission to access a wallet’s tokens through an “Approve” transaction, then immediately drain the wallet using a separate “Transfer” transaction. This is not a flaw in Uniswap itself but a consequence of how ERC-20 token approvals work: when a user grants a contract permission to spend tokens, they are relying on that contract to use the permission only for its stated purpose. A malicious contract has no such limitation. Users should never approve large amounts to an unknown contract, should verify the contract address before approving, and should use tools like Revoke.cash to inspect existing approvals and revoke unnecessary permissions.
Social engineering is equally dangerous. Scammers use compromised social media accounts, fake announcements, and coordinated messaging to direct users to fraudulent sites. They may impersonate Uniswap developers, promise yield farming rewards, or claim to offer early access to new features. If an opportunity seems unusual or too good to be true, it almost certainly is. Official Uniswap communications come through verified channels: the main website, official social media accounts with verified badges, and community governance proposals visible on-chain. Any other source should be treated with extreme skepticism.
Verification methods for traders
Before executing a trade on what appears to be Uniswap, a trader can perform several verification checks. First, confirm the domain: it should be uniswap.org with an HTTPS connection (the lock icon in the browser). Second, inspect the wallet connection prompt: the connected address should be a well-known router or aggregator contract, and the user can verify this address against official documentation. Third, use a transaction decoder such as Tenderly or Etherscan’s decoder function to preview the transaction before signing. This shows the exact contract being called, the function being executed, and the token flows involved.
For users trading on uniswap, the interface itself has security features. UniswapX, for example, provides intent-based swaps with MEV protection, routing trades through a decentralized network of fillers rather than a centralized orderbook. This means that even if a user’s order is visible on the blockchain, the fill can be atomic and not front-run. However, UniswapX still depends on the official router contract and cannot be used if the user is on a phishing site. The protocol’s security measures are only effective if the user is actually using the protocol.
A final check is to verify the transaction on a block explorer after it is confirmed. Search for the transaction hash on Etherscan or the appropriate Layer 2 explorer, then confirm that it interacted with the official Uniswap router and factory. The transaction details will show inputs, outputs, and all contract calls, leaving no room for hidden behavior. If the transaction routed through an unexpected contract, the user should investigate further before executing similar trades in the future. This post-trade verification is valuable for spotting patterns and learning to recognize legitimate behavior.
Self custody responsibility and contract verification
Uniswap’s design gives users self custody—they control their private keys and are responsible for their own security. This is a feature, not a limitation. Self custody means no intermediary can freeze or misappropriate funds. It also means the user is accountable for verifying that they are interacting with the right contracts. This is not a flaw in decentralized systems; it is a necessary consequence of removing trusted intermediaries. When you trade on the official Uniswap protocol, you are verifying and executing a transaction yourself, which requires diligence.
The open-source nature of Uniswap means that the code and security measures are transparent to anyone who wants to study them. Users do not have to trust Uniswap’s marketing or claims; they can audit the code themselves. However, most users lack the expertise to read smart contract source code, so community audits, published security reports, and verified contract badges serve as proxies. These signals are not guarantees, but they significantly reduce the risk compared to using an unverified fork.
Exchanges and custodial services cannot provide the same level of transparency. A centralized exchange’s smart contract risk may be lower because all trades occur within the exchange’s own infrastructure, not on the public blockchain. However, the user does not have self custody; they trust the exchange with their funds. With Uniswap, users accept the responsibility of verifying the contract, but they gain the benefit of controlling their assets directly. This trade-off is part of the design and should influence how carefully users approach each trade.
Governance and protocol evolution
Uniswap’s governance through the UNI token adds a crucial layer of security and legitimacy. Significant protocol changes, such as the upgrade from V3 to V4, are voted on by token holders. This means that changes cannot be imposed unilaterally by developers; they require community consensus. Forks typically lack this governance structure, which means that code changes, fee structures, and security decisions are made by the fork’s creator without community input or transparency.
When evaluating a protocol or a fork, check whether it has transparent governance processes. Uniswap publishes governance proposals, voting results, and implementation timelines on platforms such as Snapshot and through on-chain governance contracts. Forks may claim to be community-driven but have no verifiable voting mechanism. This governance structure is not just about fairness; it is a security feature. A protocol that makes major changes through community voting is accountable to its users. A protocol that makes changes in secret or through a single developer’s discretion is a liability.
The protocol’s evolution also matters for security. Uniswap’s transition from V2 to V3 introduced concentrated liquidity, which changed how the protocol manages capital efficiency and risk. V4 introduced further customization through hooks, allowing for new trading mechanics while maintaining the core security properties. Forks that fail to keep pace with these upgrades become increasingly risky because they lack the benefit of ongoing security improvements and bug fixes. This is another reason why using the official protocol is safer than using a fork: you are not just trusting the original code, you are trusting the protocol’s ongoing maintenance and evolution.
What to do if you suspect a fork or phishing attempt
If a user suspects they have visited a fraudulent Uniswap site or interacted with a fake contract, the first action is to stop and verify. Close the browser tab, clear the browser cache and cookies, and navigate to Uniswap through a known safe method. If tokens were already approved to an unknown contract, revoke the approval immediately using Revoke.cash or a similar tool. If tokens were transferred, check the wallet’s transaction history and, if the loss is significant, report the incident to Uniswap’s community channels and any relevant law enforcement or blockchain security teams.
Prevention is more effective than recovery. Bookmark the legitimate Uniswap domain, use hardware wallet security features such as signing confirmations that display contract addresses, and adopt the habit of verifying contract addresses before approving any transaction. Educate yourself on how to read transaction data and block explorer output. These skills take time but are invaluable for anyone using decentralized finance protocols regularly.
Community members and security researchers play a role in identifying and shutting down forks and phishing attempts. If you encounter a suspicious site or contract claiming to be Uniswap, report it to the official Uniswap team through their security channels, block explorers, and social media. Coordinated reporting can help take down malicious sites and prevent others from falling victim. The Uniswap protocol itself is secure, but the security of individual user interactions depends on collective vigilance and individual verification.
Frequently asked questions
How can I verify that I am using the official Uniswap and not a fork?
Check the domain name (should be uniswap.org), confirm the browser shows a secure HTTPS connection, and verify the contract address being called against the official Uniswap documentation. You can also use a transaction decoder to preview the transaction before signing, confirming that it calls the official Uniswap router and factory contract on your chosen blockchain.
What is the difference between Uniswap’s official contracts and a forked version?
Official Uniswap contracts are deployed at fixed, verified addresses by the protocol’s core team and are governed by community voting through the UNI token. Forked versions run on different contract addresses controlled by the fork’s creator, with no community governance or transparency. Even if a fork uses identical code, the deployment and control structure make it entirely different and typically much less secure.
If Uniswap’s code is open-source, why can’t everyone just deploy their own version safely?
Open-source code is transparent and auditable, but deploying it yourself means you are responsible for all aspects of deployment, upgrades, governance, and security. Most users lack the expertise to maintain a smart contract fork securely. Official Uniswap benefits from extensive audits, community governance, and ongoing maintenance. Users are safest using the official protocol rather than attempting to run their own version or trusting someone else’s fork without verification.