cerc-io/watcher-ts

Port go-nitro payment channels to TypeScript

ashwinphatak opened this issue · 0 comments

  • Setup monorepo
    • Add package for go-nitro library
    • Add web-app using go-nitro library
    • Add tests to run in CI
    • Implement CI
  • Port types and interfaces
  • Port classes and implementations
    • Port classes with empty methods
    • Port implementation
      • Methods required for commands (direct-fund, virtual-fund, pay, virtual-defund, direct-defund)
  • DurableStore implementation
  • Metrics implementation
    • Implement RecordQueueLength method
    • Implement RecordObjectiveStarted and RecordObjectiveCompleted methods
    • Implement RecordFunctionDuration method
  • Test command flows
    • direct-fund
    • get-ledger-channel
    • virtual-fund
      • Test command in node environment
      • Handle nil pointer case for bigint serialization
    • get-payment-channel
    • pay
      • Test command in node environment
    • virtual-defund
      • Test command in node environment
    • direct-defund
      • Test command in node environment
      • Debug empty slice serialization mismatch
    • Match serialization for objects stored in memstore
    • Payments through intermediaries
    • End-to-end integration tests for CI
  • Implement message service for browser
    • Browser <-> Browser
      • Relayed connection
      • Direct WebRTC connection
    • Browser <-> NodeJS
    • Browser <-> go-nitro
    • Use @cerc-io/peer in ts-nitro
  • Integrate ts-nitro in mobymask-v2
    • Run ts-nitro client along with watcher server
    • Payments
      • For watcher queries
      • For phisher reports
      • For p2p network services (data forwarding)
    • Wallet/key/signature management (MetaMask snaps)
    • Routing of nitro messages in federated relay network
  • Update ts-nitro with latest go-nitro changes