Create sequence diagrams with simple online tool is a free webapp for making sequence diagrams. You simply edit the text on the left and the diagram is updated in real time. You can download your sequence diagrams as images or distribute with a link.

Title: Affinidi: DID Anchoring NOTE: 1. Seed generating on client Side. 2. 2 pair of keys deriving from that seed (using bip32 lib), one Ethereum key - for eth transaction (anchor DID, update DID Document), second one - user DID related key. 3. Create DID Document NOTE: DID is a hash (keccak256) from publicKey - for the case when Jolo DID method is used Client/SDK -> Registry abstraction: `PutDocumentInIpfs(signedDidDocument)` NOTE ALL: [IPFS]( - distributed storage of documents Registry abstraction -> IPFS: `put signedDidDocument` Registry abstraction <-- IPFS: `200 [Hash]` NOTE: Hash in response its IPFS id/address Client/SDK <-- Registry abstraction: `200 [hash]` Client/SDK -> Registry abstraction: `CreateAnchorTransaction(did, didDocumentAddress)` NOTE: didDocumentAddress is a hash/ipfs address of DID document Client/SDK <-- Registry abstraction: `200 [digestHex]` NOTE: Create signature for eth did anchor transaction on client side (using eth privateKey) Client/SDK -> Registry abstraction: `AnchorDid(did, didDocumentAddress, ethereumPublicKeyHex, transactionSignatureJson)` Registry abstraction -> Facuet: `fuelEtheriumAddress(ethAddress)` Registry abstraction <-- Facuet: `200 [Ok]` NOTE: ethAddress deriving from ethereumPublicKeyHex. NOTE ALL: Faucet its source which fill/send required amount of eth for one transaction to the provided ethAddress Registry abstraction -> Ethereum: `sendSignedTransaction(did, didDocumentAddress)` NOTE: For Comunication with Ethereum using [Infura]( NOTE: Ordering execution of smart contract, which anchor his updated state. State of smart contract - its map, where key - is did, value - is didDocumentAddress (IPFS id). User eth address/wallet will be charged for this execution. Smart contract define, that only that eth address who put that new did would be able to update it. [Example of smart contract]( Registry abstraction <-- Ethereum: `Ok` Client/SDK <-- Registry abstraction: `200 [Ok]`