Sending With Confirmation
Send transactions without test transactions
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
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.
- 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 0xab5801a7d398351b8be11c439e05c5b3259aec9b. There are 2 possibilities:
- A registered identity vitalik is found with the address 0xab5801a7d398351b8be11c439e05c5b3259aec9b. 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 0xab5801a7d398351b8be11c439e05c5b3259aec9b. 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 0xab5801a7d398351b8be11c439e05c5b3259aec9b 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.
- 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