Skip to main content

How to connect a wallet to a dApp

As a dapp developer, you must integrate a web3 wallet with your application to enable users to interact with your application. Upon integration, you may retrieve account information of the connected user or request to sign & send transactions from the user's account.

Wallets on gno.land

Here is a list of available wallets for Gnoland. Note that none of these wallets are official or exclusive, so please use them at your own diligence:

Adena Wallet

Adena is a web extension wallet that supports the Gnoland blockchain. Below is the basic Adena APIs that you can use for your application. For more detailed information, check out Adena's developer's docs to integrate Adena to your application.

Adena Connect For React App

Check if Adena wallet exists.

// checks the existence of the adena object in window

const existsWallet = () => {
if (window.adena) {
return true;
}
return false;
};

Register your website as a trusted domain.

// calls the AddEstablish of the adena object

const addEstablish = (siteName) => {
return window?.adena?.AddEstablish(siteName);
};

Retrieve information about the connected account.

// calls the GetAccount function of the adena object

const getAccount = () => {
return window.adena?.GetAccount();
};

Request approval of a transaction that transfers tokens.

// Execute the DoContract function of the adena object to request transaction.

const sendToken = (fromAddress, toAddress, sendAmount) => {
const message = {
type: "/bank.MsgSend",
value: {
from_address: fromAddress,
to_address: toAddress,
amount: sendAmount
}
};

return window.adena?.DoContract({
messages: [message],
gasFee: 1,
gasWanted: 3000000
});
};

Request approval of a transaction that calls a function from a realm.

// Execute the DoContract function of the adena object to request transaction.

const doContractPackageFunction = (caller, func, pkgPath, argument) => {

// Setup Transaction Message
const message = {
type: "/vm.m_call",
value: {
caller,
func,
send: "",
pkg_path: pkgPath,
args: argument.split(',')
}
};

// Request Transaction
return window.adena?.DoContract({
messages: [message],
gasFee: 1,
gasWanted: 3000000
});
};