OMG Labs: Engineering Update #1

In Engineering, Blog by OMG Network


Welcome to the first engineering update from OMG Labs. We’re fortunate to have a great community (you!) with unusual depth of skills. We are looking forward to your help, ideas, and feedback. But of course, that requires you to have a good sense of what we are working on, and struggling with.

  • Informal. By design these updates will be informal and technical - please don’t expect polished marketing materials. From an engineering perspective, it’s much more important for you to see all the details!

  • Practical. This is not the place for vision statements or vague roadmaps - this is where you will get to see what we are working on, problems and all.

  • Work in Progress. Expect anything/everything we cover here, or write here, to change (or break) quickly and without notice.

1. Hashcast - Release Shortly

Hashcast is a simple broadcasting/messaging layer for plasma - it allows people on the Childchain to e.g. communicate and exchange transaction bodies for signing - this is critical for atomic swaps and DeFi. Hashcast is currently being tested internally and will be released shortly. Basically, you can use it to message wallets, push content to channels, subscribe to channels, and scan plasma for interesting events, messages, and payloads.

We lost a day because BigIntegers were being chewed up in transit, which corrupted transaction bodies prior to signing by all the parties. Problem fixed by being consistent about BigInt handling.

2. Improved On-boarding - Release Shortly

UI flow changes to the onboarding experience for new users, to make the process of working on the Childchain less confusing.

3. Flushes of private repos to public repos

Adding GPLv3 headers to all new code in preparation for the public release of new source code.

4. Childchain v1​

4.1 Block Trigger/Writing logic; Adaptive Chain timing

The block trigger logic is currently very basic (and static). However, gas costs are skyrocketing and also vary throughout the day. If two transactions arrive 16 seconds apart, does it really make sense to write two blocks (at a cost of $110)? Probably not.

ToDo: Improve the chain timing to (1) guarantee that your TX will be written within X seconds while (2) at the same time improving fuel economy.

4.2 Ability to bulk-write transactions into specific blocks

Coming soon - the ability to write TXs into plasma in bulk, i.e. in batches of 100 or more per block. Not everyone is time-sensitive, but almost everyone is cost-sensitive.

4.3 Atomic Swaps

Atomic Swaps right now work great, but the documentation is very limited, and there are critical nuances that can make it hard to use atomic swaps in practice:

  1. Outputs limited to 4;

  2. Lack of a system to exchange transaction bodies for signing by all parties. This has now been fixed through plasma’s new Hashcast communications layer (see above).

Example (showing the simplified approach to atomic swap change-making):

ToDo: Better documentation of change calculations, transactionBody structures, and best design patterns for swapping on Childchain v1.

4.4 Fast Exit

A fast exit solution Quasar is being tested. Customers need to be able to get onto the Childchain easily, and likewise, need to have a good experience leaving the Childchain.

5. Childchain v2

Testing has started - using insights from working with v1 to make sure v2 has all the needed features. Important Features:

  1. Zero value (but not zero fee) transactions;

  2. Increase TX output limit to 5;

  3. Improve Chain <-> Watcher communications protocol;

  4. The expanded role of watchers, e.g. to provide storage for the Hashcast;

  5. Add resistance/robustness to the system - Hot spare/failover.