A notary sends out a document signing invite which when accepted by involved parties generates a unique doc token. Transactions on the contract represent state updates corresponding to each party adding their signature to the document. The signing by the notary is the last step in the lifecycle once other parties have confirmed their signatures. Upon finalization, the signature proof hashes from each party are appended to the original document and the resulting document persisted on IPFS as encrypted contents, and mailed to all parties. An open sourced verification tool reconstructs the expected proofs and checks them against an uploaded file that represents the finalized state
How It's Made
The project uses Ethereum smart contract using MaticVigil.com APIs, Fleek for hosting/storage and Space Daemon + Textile buckets to store encrypted files. It allow custodial signing with verifiable timestamps which enabled any non web3 users to follow a familiar lifecycle and take advantage of decentralized storage and network. A notary uploads a template PDF and adds signatures (signature_pad) blocks to allow touch friendly signatures. An identifier is added to the PDF to make the document unique and the hash is stored on an ethereum smart contract. The document itself is encrypted via Space Daemon + Textile and stored on IPFS for previewing by all parties. Upon mining, an event call is caught by a webhook which then fires signature requests to all signers. Each signature request is accompanied by a unique token generated by an email oracle to verify the authenticity. Upon a "draw" signature, the data is encrypted and stored on IPFS. Once all signatures proofs have propagated on chain, the smart contract fires a "notarization request". The email oracle now generated a new token and sends to notary for signing. Upon propagation of notary's signature, the backend orcale makes a final document with all signatures and stores the final hash on chain - each party received the final document with metadata for verifying proofs. The open sourced proof page on IPFS allows any party to verify the authenticity of the document and timestamp of signatures by using a web3 browser like Metamask. Even if the project/backend ceases to exist, the proofs on chain and files on IPFS allows independent verification of legal documents.