This page is a WalletConnect bridge between a dApp and your UP.
The dApp sees the UP address as the account. Every transaction is wrapped into
KeyManager.execute(UP.execute(...)) and signed by your controller in MetaMask: the call comes from
the UP and any value is paid from the UP's balance, while the controller pays the gas. Every message
signature is made by the controller and the UP recognises it as its own (ERC-1271). First of all, the page
checks that the UP and the controller are compatible on the chosen network. Every request is shown in full,
checked and (for transactions) simulated; nothing happens without your click and your confirmation in MetaMask.
⚠️ Read before using this page
Experimental tool, not audited. It may contain bugs.
Real, irreversible transactions. Nobody can undo a confirmed transaction. Use minimal amounts and
always start in simulation mode.
The page does not know the dApps. It decodes only part of the calls (standard tokens and common
cases); for the rest it shows you the raw data. If you do not understand what a request does, reject
it.
Message signatures. A signature can authorise actions even without a transaction: logins, orders,
permissions to spend tokens. The page shows the content and the result of the checks, but cannot know what the
signature will be used for.
Token approvals stay valid after you close the page: whoever receives them can move the UP's tokens
until you revoke them.
Responsibility. Bertrand Juglas takes no responsibility for signatures or transactions approved on
unclear content, nor for what dApps do with them. The software is provided "as is" (MIT license), without
warranty: you use it at your own risk.
What security relies on: the architecture (you always sign in your own wallet, permissions are
enforced by the UP's Key Manager) and the services used (WalletConnect/Reown domain verification, the
network's RPCs). The page shows the result of these checks but cannot guarantee them.
One controller per UP. If the same controller governs several UPs, a signature valid for this UP is
valid for the others too.
This page never asks for private keys or seed phrases.
Privacy: the WalletConnect connection goes through Reown's servers, which see the session metadata
(addresses, network). Checks use the chosen network's public RPC.
No affiliation with LUKSO, WalletConnect/Reown, MetaMask or the dApps you connect. This is not
financial advice.
Always rejected: eth_sign and legacy signature formats, contract
creation, transactions from the UP to itself or to its own Key Manager (they could change its controllers and
permissions), requests on a network other than the chosen one.
1 · Network
The network where the UP is deployed and where you want to use the dApp.
One network at a time: changing it closes the active WalletConnect sessions.
2 · Your UP
3 · Controller (MetaMask) and check
MetaMask with the UP controller's key, on the chosen network. It pays the
gas: it needs some of the network's coin. The compatibility check between UP and controller starts by itself and
runs again if you change network, UP, account or MetaMask's network.
The check starts by itself
once network, UP and MetaMask are set.
4 · Connect a dApp through WalletConnect
On the dApp choose to connect with WalletConnect, copy the
connection link (below the QR code, it starts with wc:) and paste it here. It is enabled only when
the check in panel 3 is green. Keep this page open while you use the dApp.
No session.
5 · Requests from the dApp
When checked, transactions are checked and
simulated, then the dApp is told it was a simulation: nothing is sent and nothing is spent. Message signatures
cannot be simulated: they are always shown and signed only if you press "Sign the message".
No pending request.
Read everything before deciding: checks, warnings and request
details. Nothing happens without your click and your confirmation in MetaMask. The request also stays in the
page's history.