Making ethereum: URIs Actually Work: Proposal for ABI Discovery via ERC-5169 / 7738
We’re working on crypto-native NFC payment flows—think “Apple Pay for crypto.”
The ideal UX looks like this:
- Merchant enters amount
 
- User taps their phone on the NFC device
 
- Phone opens wallet with a pre-filled transaction
 
- User taps “Confirm” → done
 
To achieve this, we want to encode ethereum: payment URIs (EIP-681) into NFC tags.
 The Problem
While native token transfers work fine using ?value=..., smart contract calls break across nearly all major wallets (MetaMask, Rainbow, Trust, Coinbase Wallet, etc).
Example URI:
ethereum:0xABC123/transfer?address=0xDEF456&uint256=1.23
This silently fails or gets ignored. Why?
 Root Cause
- No ABI context — Wallets don’t know how to encode calldata without knowing parameter types.
 
- No standard ABI discovery — There’s no canonical way for a wallet to fetch a contract’s ABI.
 
- Wallet safety concerns — Guessing types is dangerous, so most wallets opt to ignore.
 
 Proposed Solution: ABI Discovery via scriptURI
We propose using ERC-5169 or ERC-7738 to let contracts expose ABI metadata to wallets.
Example:
function scriptURI(bytes4 selector) external view returns (string memory);
Wallets could:
- Query 
scriptURI() on the contract 
- Fetch the ABI from the returned URI
 
- Parse the URI params using that ABI
 
- Construct a valid 
data field and submit the transaction 
This restores the original vision of EIP-681—linking wallets, NFC devices, QR codes, and POS terminals in a seamless, standardized way.
 Sample Flow
- 
NFC tag encodes:
ethereum:0xABC123/transfer?address=0xDEF456&uint256=1.23
 
- 
Wallet calls:
scriptURI("0xa9059cbb")
 
- 
URI returns JSON:
{
  "name": "transfer",
  "inputs": [
    { "name": "to", "type": "address" },
    { "name": "value", "type": "uint256" }
  ]
}
 
- 
Wallet builds calldata, user confirms, done.
 
 Why this matters
If we want crypto to reach real-world adoption (cafés, transit, vending machines), we must:
- Make URI-triggered smart contract interactions reliable
 
- Avoid requiring dApps or custom flows
 
- Empower POS hardware with standards-compliant, low-cost NFC/QR workflows
 
 Call to Action
We’re calling on:
- Wallet developers
 
- ERC-681 / URI standards contributors
 
- Smart token and TokenScript builders
 
- Mobile UX & NFC ecosystem folks
 
Let’s collaborate on a lightweight, secure, standardized ABI-discovery flow so that ethereum: URIs can actually fulfill their promise.
Thoughts, feedback, or interest in prototyping with us? We’d love to hear from you.