January, 2019 - Dev Update

New year, new resolutions.

After our first swap and making the whole COMIT code open source we thought you would enjoy regular updates of what is happening at CoBloX. Hence we will be starting a series of dev update posts, published roughly monthly, containing a summary of the latest COMIT advancements.

If you simply cannot wait for the dev update, feel free to check out our scrum board and GitHub organisations.

During the holidays, some of us were still coding and mainly focused in completing the code for ERC20<->BTC and ETH<->BTC swaps.

ER20 to BTC atomic swap;

In January, we finalised our first RFCs drafts, this is a milestone for the COMIT protocol as a lot of work has happened since we released the first COMIT white paper. We are aiming to provide a comprehensive and clear documentation on how this open protocol operates. Feel free to provide feedback by commenting on the relevant RFCs tracking issues.

Part of the discussion to define COMIT protocols was the option problem brought by a basic HTLC atomic swap. Lloyd wrote a response on the Lightning mailing list about the American Swap Option.

We also had our first major external contribution with the modularising of our JavaScript test suite. Thank you elpiel!

Interesting reads from the team


Here is the list of items closed by sprint (public repositories only):

External Contributors - Thank you!
Sprint 7 (23 to 29 Jan)
  • (20) Add Tracking issues links
  • (25) Minor changes
  • (439) Refactor headers in BAM to use bam::Header struct from comit-rs
  • (476) Validation of ERC20 funding transaction
  • (497) ⚗️ More (debug) information returned by HTTP API GET swap/:id
  • (563) Use new LQS Parameter to retrieve ETH/ERC20 Refund/Redeem tx
  • (646) Cleanup Bitcoin LQS
  • (654) ⚗️ Decentralised orderbook - tech investigation
  • (666) ⚗️How to realize same chain trades on Bitcoin 👹
  • (673) Make actions returned from HTTP API self-descriptive
  • (690) Logs repeat themselves
  • (702) Maybe not print settings because of private keys?...
  • (709) decide whether we want to serialize this directly...
  • (713) replace with AtomicU32 once stable https://doc.rust-lang.org/std/sync/atomic/struct.AtomicU32.html...
  • (715) set derivation path for Ethereum to m/44'/60'/a'/0/n, see #291...
Sprint 6 (16 to 22 Jan)
  • (32) ⚗️ Test coverage in Travis
  • (412) Allow filtering of "log" in Ethereum blocks
  • (494) ⚗️ Actions returned from HTTP should be self-descriptive
  • (596) cargo make e2e something_that_doesnt_exist behaves unexpectedly
  • (617) Update testcontainers to use parity 2.1.3 across the board
  • (637) ⚗️ COMIT nodes need an identifying key
  • (648) Replacement PR for #616
  • (676) Remove IsEmpty trait
  • (7) [RFC-003] Write up current atomic swap protocol
  • (8) Move this repository to the COMIT organization
Sprint 5 (9 to 15 Jan)
  • (12) Update jsonrpc requirement from 8 to 9
  • (13) Update jsonrpc-http-server requirement from 8 to 9
  • (14) Update env_logger requirement from 0.5 to 0.6
  • (26) implement getbalance rpc call
  • (304) Enable more clippy lints
  • (318) Add inbound connections to client pool
  • (440) Make rfc003::SecretHash implement Copy
  • (45) Upgrade to bitcoind 0.17.0 and implement getbalance call
  • (555) Allow COMIT node to talk to more than one COMIT node!
  • (575) Split test_lib.js
  • (628) cargo make js-format task does not work in Travis
  • (629) From trait implementation should not panic
  • (641) Find a better way for handling mergify
Sprint 4 (Up to 8 Jan)
  • (381) Implement "decline" action on started state for Bob
  • (416) Validate secret length in Bitcoin HTLC
  • (433) Validate secret length in ETH&ERC20 HTLC
  • (498) Create State Machine Factory
  • (499) [ETH->BTC] From Start to BothFunded
  • (506) [ETH->BTC] From BothFunded to BothRedeemed
  • (559) Use futures::stream in LQS
  • (561) Alice should not have Accept/Decline actions
  • (568) ⚗️ Evaluate Typescript & Flow
  • (576) ⚗️ Re-architecting state machine
  • (585) Correct Travis condition (again)
  • (588) Revert "Bob can decline a swap request"
  • (589) [ERC20->BTC] From Start to BothRedeemed
  • (594) Implement PR suggestions in a different PR because you forget to push changes before merging
  • (597) Missing feedback from last PR
  • (6) [RFC-002] Write up SWAP message design
  • (600) Update mergify to merge only if RTM
  • (601) cargo make build fails
  • (602) Bob can decline post mortem
  • (610) cargo make requires libssl-dev
  • (611) Moving to GPLv3
  • (615) Cargo make + emoji reviews
  • (618) Add contributor license agreement
  • (619) Fix typo in issue template
  • (620) GET http API to list current node connections
  • (621) Adds commonly used cargo make tasks
  • (624) Meta: Race Condition in Hashed Time Lock Scheme