Sequence Diagrams

<aside> 💡 Sequences that appear in multiple places are broken into “blocks” for readability, since including all steps in each flow would make the diagrams unreasonably large. Anytime a block name (Block A, Block B1 etc.) appears in the Mermaid code it links directly to the detailed diagram for the sequence it references. The links are not supported in the diagrams themselves, and letters are assigned to blocks in no particular order.

</aside>

Summary

<aside> đź’ˇ Note that ASv2 issuers are able to define custom verification flows. The SMS verification flow provided below is for illustrative purposes only.

</aside>

sequenceDiagram
  actor user2
	actor user1
  participant issuer
	participant sms as SMS Provider
	participant ODIS
	participant ASv2 as FederatedAttestations.sol

	
	*rect rgb(230,240,240)
	note right of user1: example verification flow [(Block C)](<https://www.notion.so/ASv2-User-Flows-f508062cc99d4376af4e161859f2e745>)*
  user1 -->> issuer: provides phone number
	issuer -->> sms: SMSRequest{ phoneNumber, msg, apiKey }
  sms -->> user1: msg via SMS
	user1 -->> user1: sign msg
  user1 -->> issuer: SMSProof{ msg, sig }
	end

	*rect rgb(230,200,240, .4)
	note right of issuer: Publish verification [(Block D)](<https://www.notion.so/ASv2-User-Flows-f508062cc99d4376af4e161859f2e745>)*
	issuer -->> ODIS: get on-chain identifier [*(Block B1)](<https://www.notion.so/ASv2-User-Flows-f508062cc99d4376af4e161859f2e745>)*
	ODIS -->> issuer: 
	*issuer -->> issuer: sign attestation mapping on-chain identifier to user1's account*
  issuer -->> ASv2: publish attestation
	end

	*rect rgb(230,240,290, .7)
	note right of user1:* user2 interacts with user1's off-chain identifier (ex. send money to phone number)
	*user2 -->> issuer: user2 requests address mapped to user1's off-chain identifier*
	issuer -->> ODIS: get on-chain identifier [*(Block B1)](<https://www.notion.so/ASv2-User-Flows-f508062cc99d4376af4e161859f2e745>)*
	ODIS -->> issuer: 
	*issuer* -->> ASv2: lookup address mapped to on-chain identifier
	*ASv2* -->> issuer: 
	issuer -->> user2: return user1's account address
	user2 -->> user1: send money to user1's account
	end

Getting on-chain identifier

This is the recommended process for deriving on-chain identifiers, as a means of interoperability and preserving privacy. However, this is not enforced by ASv2 and technically mappings can be registered under any form of identifiers.

Onboarding

Lookups

Account Interactions

Account Modifications

Open Questions