Independent DeFi security desk · Status: operationalMethodology & corrections · Submit an incident
DeFi Safety · Fact checked

How to Check a DeFi App Before the First Connection

A cautious first-use sequence for reviewing domain, documentation and wallet prompts.

This article may contain affiliate links. Commercial relationships are disclosed in the affiliate policy.

DeFi Safety — illustration keyed to this article's identifier. Source documents are listed under Sources and are not reproduced here.

The first time you connect a wallet to a DeFi application is the moment with the most irreversible downside, and it is also the moment people rush. The checks here are ordered so that the ones which can stop a loss happen before the ones that only improve confidence.

Before you connect anything

Find the application’s real domain from a source it did not control. A project’s own tweet can link to a compromised site; an entry in a block explorer’s verified-apps list cannot be edited by the project. Cross-reference at least two independent sources before treating a URL as correct.

Decide in advance what you will connect. Read-only connections can be granted a balance of zero. A full connection to a front end is a different commitment. If you only need to read a position, there is no reason to approve the full account.

Know which chain you intend to use. Most DeFi applications exist on several chains at the same address. The chain your wallet is on decides which contracts you can reach, and switching networks later does not undo approvals you already granted.

At the connection prompt

Check the spender address, not the app name. Your wallet will show a contract or address with the request. Find that address in the application’s published documentation. If the wallet shows a friendly name, that name is chosen by the requesting site and is not evidence — the underlying address is the only thing that matters.

Note whether the request is eth_sign or a typed-data permit. A free-form signature request with a blank or vague message is materially riskier than a structured permit, because it can be used to authorise anything. Legitimate DeFi flows do not need it.

Set an allowance, not unlimited, when the option exists. Most interfaces offer an amount field. Entering a specific figure costs nothing if you later need to raise it, and it bounds the damage if the spender turns out to be wrong.

After connecting, before transacting

Read the first transaction request in full, including the simulation. Modern wallets decode what a transaction will do. If the simulation shows an unexpected token transfer or a delegatecall, that is the moment to stop — the interface is doing something you did not ask for.

Check that the destination of any outgoing action is displayed and matches your intent. A swap that routes through an unfamiliar intermediary, or a deposit whose recipient is not the contract you researched, is worth declining regardless of how the interface is worded.

Bookmark the app. Subsequent visits should come from your own bookmark, not from a search result or a link in a message.

What none of this proves

These checks establish that you are talking to the application you think you are, and that you have not granted a permission you did not intend. They say nothing about whether the protocol’s contracts are correct. A domain that is genuinely the project’s can still front a protocol with a flawed liquidation mechanism, and no amount of interface inspection will reveal that. For that question you need audits, deployed source, and time.

Sources