FantomSign is a web3 implementation of esignature collection built on Fantom smart contracts and IPFS.
Enables Docusign-like capabilities and takes advantage of the low costs, speed, and throughput of the Fantom blockchain to facilitate secure esigning on web3 infrastructure.
Submitted to the Fantom Q1 hackathon 2023 on devpost.
Try it out here! (note: requires Metamask connected to Fantom testnet or Fantom Opera).
Demo video: https://youtu.be/v6PPFMlGXYA
- FantomSign enables anyone to create and collect esignature against documents without a vendor agreement. A fantom smart contract is deployed for each request.
- Each packet of documents for esignature is made accessible at an IPFS url.
- When the esignature is completed, an NFT is generated that links both the signer's signature and the documents being agreed on.
- Hosted documents and the request are immutable.
- Smart contract deployed on Fantom which marks the progress/fulfillment of the esignature request. The contract can only be marked completed by the designated signer address at time of final signature.
- View history of requests and completed esignatures using the covalent chain history API directly from the app.
- An individual in the context of the FantomSign application is the pairing of a canvas (handwritten) signature and wallet signature/address.
- Covalent: Enables in-app history queries of past esignature requests and fulfillment for a given fantom address.
- NFTPort: Generation of the esignature record / proof. Attaches the final esignature/agreement to an NFT and saves a link to it in the smart contract.
- Metamask: Wallet connection. Follow guides to connect your metamask account here: https://docs.fantom.foundation/wallet/set-up-metamask
- Fantom: In-app deployment of the request smart contract and marked completed upon completion of the each request based on receival of signer's signature. A new Fantom contract is deployed for each new esignature request.
To run/demo the project locally, FantomSign requires the following environment variables.
REACT_APP_COVALENT_KEY={YOUR_COVALENT_API_KEY} # Covalent key for the transaction history page. See https://www.covalenthq.com/docs/networks/fantom/ REACT_APP_NFT_PORT_KEY={YOUR_NFT_PORT_API_KEY} # NFT port api key for receipt creation (nftport.com) REACT_APP_STORAGE_KEY={YOUR_WEB3_STORAGE_KEY} # web3.storage key for web3-based file hosting.
After declaring the above environment variables, use the below command to start the project:
yarn; yarn start
Recompiling FantomSign contract:
cd contracts; npx hardhat compile
Example esignature requests contract: https://testnet.ftmscan.com/address/0xDDC2Fd0930150dA06f9FEC09c77aAd1675fB49a0
First transaction shown is the deployment, second is the signing.
Example request url: https://fantomsign.surge.sh/sign/bafybeibm22omnto4xi7by6vvkrkzni3tw6c5rkwk3nrpkbhl5q62qkkiia.
Example hosted document artifacts: https://bafybeibm22omnto4xi7by6vvkrkzni3tw6c5rkwk3nrpkbhl5q62qkkiia.ipfs.w3s.link/
- Testnet faucet: https://faucet.fantom.network/
- Covalent blockchain history (compatible with Fantom): https://www.covalenthq.com/docs/networks/fantom/
- Fantom dev docs: https://docs.fantom.foundation/
- Integration with additional blockchain networks to expand the availability of the platform and its features.
- Adding support for multi-party signature requests to facilitate document collaboration.
- Enhancing the user interface to make it more intuitive and user-friendly, with features such as document templates, drag-and-drop functionality, and customizable branding.
- Developing an API to allow businesses to integrate FantomSign with their existing workflows and systems.
- Building advanced security features, such as two-factor authentication, encryption, and access controls, to enhance the platform's security.
- Integrating with third-party identity verification services to further strengthen the platform's authentication process.
- Native app support to allow users to connect to Fantom and complete signatures from an app
- Expanding the platform's capabilities to include additional document types, such as contracts and legal agreements.
- Building analytics and reporting features to provide users with insights into their esignature requests and usage.
- Developing a feature that allows users to send reminders and follow-ups to signers who have not yet completed their signature requests. These reminders could be facilitated on web3 push networks.