Files
darkfi/todo.md
2021-09-12 15:05:38 +02:00

3.2 KiB

version 0

misc

  • random ID param for jsonrpc requests (bin/drk.rs)
  • merge cashier branch
  • update cashierd.rs to new config handling. note: password param in toml
  • sqlcipher: better document install process or otherwise remove friction of using bundled version
  • remove default config from binaries and add to the readme
  • delete zkvm
  • SOL bridge poc
  • Optional Cargo "features" for cashierd/darkfid, to {en,dis}able different chains
  • delete ALL old directories and files
  • fix spelling mistakes
  • make cashier asset vector

deposit

  • drk: key generation
  • drk: deposit cli option
  • darkfid: check addresses are valid
  • darkfid: send drk public key to cashierd.rs over tcp, triggered by drk.rs
  • cashierd: receive BTC, mint dBTC (see tx.rs)
  • cashierd: push tx to rocksdb (type: deposit, signed by cashier key)
  • cashierd: watch address for deposit
  • cashierd: resume watch after restart
  • darkfid: poll gateway for new tx
  • darkfid: for every new coin received, add to merkle tree
  • darkfid: decode tx
  • darkfid: perform state transition function
  • darkfid: compute merklepath need to spend coin (see tx.rs)

withdraw

  • drk: withdraw cli option
  • darkfid: check address is valid
  • darkfid: send cashout request to cashier with btc pub key
  • cashierd: receive cashout request, reply with drk pub key
  • darkfid: send dbtc to the cashier drk pub key
  • cashierd: send the received coins to the main address of cashierd
  • cashierd: burn dbtc, send back btc (see tx.rs)

drk -> drk

  • drk: transfer cli option
  • darkfid: construct a new spend tx
  • darkfid: check address is valid
  • darkfid: build tx
  • darkfid: verify tx
  • darkfid: state transition function
  • darkfid: send tx data to rocksdb

research

Open research questions.

light-clients

  • Fast efficient batch DH technique. Currently all new transactions need to be scanned. There should be a means of efficiently batching this test for light clients initially syncing against a server.
  • Anonymous fetch using an Oblivious-Transfer protocol. Light clients potentially leak info to servers based on the data they request, but with an OT protocol they do not reveal exactly what they are requesting.

cryptography

  • FFT for polynomial multiplication
  • finish bulletproofs impl
  • halo2 lookup
  • read groth permutation paper

blockchain

  • basic sequencer architecture design
  • basic DHT design
  • consensus algorithm
  • solve double verify problem (potentially need need a payment inside the contract to handle exceptions)
  • research polygon design
  • code up a simple demo

product

  • first MPC services
  • DAO
  • auctions
  • staking. Look up how TORN was distributed anonymously.
  • swaps
  • token issuance
  • NFTs

dev

  • make bitreich halo2 impl

halo2

  • mint circuit poc
  • burn circuit poc
  • research port from jubjub to pasta (success)
  • research port from blake2b to sinsemilla and/or poseidon
  • solve poseidon gadget to hash >2 elements at a time
  • integrate with actual codebase

org

  • clean up shared repo and migrate to wiki