Out-of-Band, Instant, Offline Blockchain Payments For Your Community
SmartCheque is an out-of-band and optionally offline payment system for digital assets deposited at a community bank (as a smart contract). Using cryptographic signatures, we're able to give the unbanked access to a product similar to a checking account and paper checks. A relationship and reputation of merchants and customers can be known and shared, also without constant internet and blockchain access. The banking system is implemented in Solidity but could work in other blockchains or centralized databases. Message signing is done by offline wallets and messages are negotiated using peer-to-peer communication like QR codes or NFC. Merchants can trigger settlement of checks rather than waiting for a clearing house like ACH.
We use a wallet web app framework similar to an integrated Metamask to create and manage accounts and sign messages as well as verify messages signed from merchants and banks. We use ethers.js for building up messages, signing them using EIP-191 and validating payment messages in Solidity, and validating merchant information signed by banks with expiration. We started integrating Web NFC to transmit messages but ran into hardware constraints with signature size. We use the browser's camera to scan QR codes to exchange messages and signatures. Banks use a bank registry contract and deploy their own contract for receiving customer deposits and registering merchants. We connect and deploy contracts to blockchains like Optimism, Polygon, Gnosis Chain.