Skip to main content
DFNS supports direct smart contract interaction on EVM-compatible networks. You can call read-only functions (like checking a balance) and execute state-mutating functions (like minting tokens or approving spending), all with DFNS wallets handling key management and signing.

From the dashboard

The Bring Your Own ABI feature lets you import a contract’s ABI and interact with it directly from the dashboard. No code required.

Import a contract

1

Open smart contracts

Navigate to the Smart Contracts section in the dashboard sidebar.
Smart Contracts page with the Import Smart Contract button highlighted
2

Import your ABI

Click Import Smart Contract and fill in:
FieldDescription
Contract nameA label for this contract (lowercase, alphanumeric, hyphens)
Contract addressThe on-chain address of the deployed contract
NetworkThe EVM network the contract is deployed on
DescriptionOptional description
ABIThe contract’s ABI in JSON format, upload a file or paste it directly
Click Import to save.
Import Smart Contract form with ABI, name, network and address fields
You can find a contract’s ABI in the build artifacts of your Solidity project, or on a block explorer under the Contract tab for verified contracts.
Importing and deleting contracts is subject to your organization’s policies. If a policy applies, the action will require approval before it takes effect.

Read from a contract

Open your imported contract and go to the Read tab. Select a function, fill in any required inputs, and click Query. The result displays immediately. No wallet or gas needed.
Read tab with a function expanded, the Query button and its returned result

Write to a contract

Go to the Write tab. Select a function, fill in the inputs, and connect a wallet on the same network as the contract. Review the confirmation dialog carefully, then submit. The transaction is signed by your DFNS wallet, broadcast to the network, and its status is tracked in the dashboard.
Write tab transaction confirmation dialog with the Confirm button
Write transactions go through your wallet’s policies. If a policy applies, the transaction will require approval before it is broadcast.

From the API

Read-only calls

Use the Call Function endpoint to query view or pure functions. No wallet or signing is required.
POST /networks/Ethereum/call-function

{
  "contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
  "abi": {
    "type": "function",
    "name": "balanceOf",
    "stateMutability": "view",
    "inputs": [{ "name": "account", "type": "address" }],
    "outputs": [{ "name": "", "type": "uint256" }]
  },
  "calldata": {
    "account": "0xd964d741998edc275f3800eed113378a391951d9"
  }
}
A could not decode result data (value="0x") error means the call returned empty data: the contract address is not a deployed contract on that network. This usually happens when the address exists on a different network (for example, a mainnet contract called on a testnet) or is a regular wallet address. Note that the ABI input/output name fields are caller-defined labels and do not need to match the deployed contract.

State-mutating calls

Use the Sign & Broadcast Transaction endpoint with kind: FunctionCall. This signs the transaction with the specified wallet and broadcasts it to the network.
POST /wallets/{walletId}/transactions

{
  "kind": "FunctionCall",
  "call": {
    "contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "abi": {
      "type": "function",
      "name": "transfer",
      "stateMutability": "nonpayable",
      "inputs": [
        { "name": "to", "type": "address" },
        { "name": "value", "type": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "bool" }]
    },
    "calldata": {
      "to": "0xd964d741998edc275f3800eed113378a391951d9",
      "value": "1000000"
    }
  }
}
The abi field takes a single function definition (not the entire contract ABI). The calldata field maps input names to values.

Transactions overview

Understand the different transaction APIs

EVM networks

EVM-specific transaction details

Integrate with viem

TypeScript SDK for contract interaction

Fee sponsors

Sponsor gas fees for smart contract calls
Last modified on June 8, 2026