> For the complete documentation index, see [llms.txt](https://ez-wallet.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ez-wallet.gitbook.io/docs/products/sending-with-confirmation.md).

# Sending With Confirmation

## Goal

The goal of this doc is to design the **“send with confirmation”** feature for EZ Wallet (one of the solutions related to identity)

* Design the architecture of identity and EZ identity services **(EZ Identity)**
* To build the SDK/API to support the “send with confirmation” feature for EZ Wallet
* The SDK/API can be used to support other non-custodial wallets and custodial wallets (optional)
* Design the architecture of the services that **EZ Confirm** can support
* Design the business model for **EZ Confirm**

## Send with confirmation Protocol

We are introducing a protocol to help users have confidence when sending crypto funds, and this protocol can be applied to all types of wallets.

* Flow
  * Alice tries to send Bob 1000 USDC. To do that, Bob has to give Alice his address, say: *0xab5801a7d398351b8be11c439e05c5b3259aec9b*.
  * Alice copies and pastes the address into her wallet app and the wallet app talks to the send with confirmation service to look up *<mark style="color:purple;">0xab5801a7d398351b8be11c439e05c5b3259aec9b</mark>*. There are 2 possibilities:
    * A registered identity **vitalik** is found with the address *<mark style="color:purple;">0xab5801a7d398351b8be11c439e05c5b3259aec9b</mark>*. Alice’s wallet app will show the identity and Bob confirms **vitalik** is his identity. With this, Alice has the confidence she needs to send the funds to Bob.
    * No registered identity is found with the address *<mark style="color:purple;">0xab5801a7d398351b8be11c439e05c5b3259aec9b</mark>*. To carry on sending the funds, Alice utilizes the SDK to test with a random memo, for example ‘banana’, together with a signed transfer transaction in the mainnet . Because Bob’s wallet address is *<mark style="color:purple;">0xab5801a7d398351b8be11c439e05c5b3259aec9b</mark>* his wallet app should receive the test from Alice address with memo ‘banana’. The context here is that Alice and Bob verbally communicate to exchange the test with memo ‘banana’. As Bob receives the test with ‘banana’, Bob confirms by sending back an agreed test with the memo ‘banana’. As Alice receives the agreed test confirmation with the verified transaction she can confirm sending the signed transaction to the blockchain to make the real transaction final.

<figure><img src="/files/a2woc3x2Bt0A4xHOqoPy" alt=""><figcaption></figcaption></figure>

### EZ confirm SDK/API

* Lookup(chain, address)
  * Return the identity of the given address
* test(address, memo)
* listen(my\_address, callback)
  * Websocket endpoint to receive all broadcast messages to the given address
* confirm(verified\_transaction)
* send\_agreed\_test

### Business Model

* **EZ Identity** can be monetized like DNS or <https://unstoppabledomains.com/>
