AN ONCHAIN AGREEMENT BETWEEN TWO WALLETS
Mint only if
they both pay.
Wallet A opens the pair. Wallet B completes it. The second payment atomically sends one linked NFT to each wallet.
SEPARATE TOKENS.
PERMANENTLY RELATED.
Most mints prove that one wallet clicked.
COSIGN proves that
two wallets agreed.
01 / THE MECHANISM
Two payments.
One shared origin.
Create
Wallet A chooses Wallet B and deposits one side fee into the contract.
Share
Wallet A sends a wallet-gated link. Any other connected wallet is rejected.
Complete
Wallet B pays the second side fee. That transaction mints both NFTs.
Verify
Both tokens retain the same immutable pair ID, even after they are traded.
02 / PROTOCOL SPEC
Simple outside.
Verifiable inside.
The user only chooses a wallet, shares a link, and pays. The protocol handles wallet gating, deposit safety, one-wallet limits, token pairing, and refunds.
struct Invite {
address walletA;
address walletB;
uint256 feePerWallet;
uint256 deadline;
InviteState state;
}
function createInvite(
address walletB,
uint256 deadline,
bytes32 salt
) external payable returns (bytes32);
function acceptInvite(bytes32 inviteId)
external payable returns (uint256, uint256);
function pairedToken(uint256 tokenId)
external view returns (uint256);V2 is deployed on Robinhood Chain as a non-upgradeable contract with immutable onchain metadata.
03 / THE BATCH
10 pairs enter.
3 mint free.
Every completed pair joins a ten-pair batch. Three pairs receive both side fees back, one refund to each original payer. Gas stays paid to the network.
30% OF COMPLETED PAIRS04 / WHAT STAYS TRUE
The NFT can move.
The origin cannot.
- TRADABLEEach token is a standard ERC-721 built for secondary markets.
- LINKEDBoth tokens reference the same immutable pair ID.
- CONSENSUALNo pair exists until Wallet B accepts and pays.