Background resources
Sub-designs
Glossary
<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