Web3 Fundamentals · 2 min read
Intents and Chain Signatures
How one NEAR account can act on Bitcoin, Ethereum, and Solana with Chain Signatures, and what NEAR Intents are for.
NEAR's big idea is chain abstraction: users should not have to care which chain they are on. Two building blocks make that real.
Chain Signatures
A NEAR account (or contract) can sign transactions for other chains. You ask the MPC signer contract (v1.signer-prod.testnet on testnet) to sign a payload with a derivation path. A network of nodes holds the key in shares (multi-party computation) and returns a signature. No single node ever has the full key.
- The same NEAR account derives deterministic addresses on Bitcoin, Ethereum, Solana, and more.
- A smart contract can own a Bitcoin address, which unlocks cross-chain apps without bridges.
js
// sketch: ask the MPC contract to sign an Ethereum tx hash
await wallet.signAndSendTransaction({
receiverId: "v1.signer-prod.testnet",
actions: [actionCreators.functionCall("sign",
{ request: { payload_v2: { Ecdsa: txHashHex }, path: "ethereum-1", domain_id: 0 } },
250_000_000_000_000n, 1n)],
});Intents
With NEAR Intents a user says what they want ("swap 10 USDC on Base for NEAR") instead of how. Solvers compete to fill the intent, and the intents.near contract settles it atomically. The user signs one message; the routing across chains is somebody else's problem.
| Chain Signatures | Intents | |
|---|---|---|
| Answers | How does NEAR act on other chains? | How does a user get an outcome without micro-managing? |
| Who signs | MPC network on behalf of your account | You sign an intent; solvers execute |
| Good for | Cross-chain wallets, contract-owned BTC | Swaps, payments, any-to-any transfers |
Exercise
In one paragraph, explain how Chain Signatures let a NEAR account sign something for Bitcoin or Ethereum without holding a native key on that chain.
Saved in this browser.