/hardware_notes

Offline-first cryptocurrency transactions

Primary LanguageJava

hardware_notes

Offline-first cryptocurrency transactions. (reference: https://ethresear.ch/t/hardware-notes-a-physical-asset-backed-by-cryptocurrancy/6471) Allows parties with outdated states to transfer assets offline, with assurance that they can be withdrawn online within an agreed time window.

Join our Telegram group at https://t.me/hardware_notes

User stories

Card manufacturer

  • registers a batch of hardware notes by specifying their public keys in the smart contract
  • deposits value into hardware notes on the smart contract. Note that deposits can be made by third parties, in ETH or any ERC20 token.

Buyer / seller

  • hardware notes can be used as currency, e.g. exchange for goods and services.
  • before accepting a hardware note, the recipient should scan it to verify that it has not been withdrawn. If the recipient is using an outdated state, they should verify at least that the withdrawDelay period has not passed.
  • the user should periodically sync their blockchain state, since the frequency of syncs decides which notes they can accept. As an illustration: if they never sync their state, they should accept notes with infinite withdrawDelay; and if they are constantly syncing their state, they can accept notes with very small withdrawDelay.
  • a card holder can withdraw the note's value to their own account by signing a transaction with the card. Given a valid signature, the smart contract will release assets to whichever recipient account is specified.

TODOs (as of Feb 2020)

Please get in touch if you have further ideas or want to contribute.

User app

  • we do have working offline state storage that persists between syncs; however it uses SharedPreferences. there's probably a more scalable way to do it (e.g. SQLite)
  • we should implement the withdraw function

Manufacturer app

  • we currently don't have a manufacturer app
  • we need register and deposit functions

Notes