# 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/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ez-wallet.gitbook.io/docs/products/sending-with-confirmation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
