Luna Protocol Update 1

Extra TX Data and Support for Safari & Edge

Luna has run for about 10 days now without any major issues. Today we announce a protocol update fixing various minor bugs and introducing some new features:

Mempool syncing

Nodes now sync their mempool after establishing consensus. This ensures transactions won’t get lost if nodes frequently enter and leave the network.

Sending multiple transactions at once

The order of transactions in blocks is designed for efficient inclusion proofs. This order is not necessarily the order in which transaction have to be applied to be valid. If someone sends multiple transactions with consecutive nonces the transactions are now applied in the order of the nonces.

WebRTC in Safari and Edge

Safari and Edge have shipped WebRTC support but we couldn’t use it in our previous version yet. We used the generateCertificate method which is specified by the API but unfortunately not implemented in Safari/Edge. To support them we can’t use the WebRTC certificate hash as peer id anymore. Now a peer signs its messages outside of the browser API and the hash of the corresponding public key is his peer id.

Extra Data

Miners can now fully use the extra data field to write additional data in blocks they’ve mined. In particular for our ideas regarding decentralized pool mining this will become important in the future.

Legacy Browser Support

There’s a bug in babelify because of which we could not support legacy browsers in Luna yet. We’ve built a temporary workaround to fix that bug and transpile Luna’s code down to a JavaScript version that runs on legacy browsers, too.

How to update

This update is incompatible with the previous version so nodes should update as soon as possible. As always, NodeJS nodes should be updated via git while browser miners just need to refresh the page.

What’s next?

A generic structure for further account and transaction types to support multi-signature wallets, vested accounts and hash time-locked contracts for payment channels.

Nano client protocol optimizations. The performance bottle neck is rooted in the structure of the compressed headers chain. By tweaking the interlink vector we’ll be able to download less while verifying faster.

Nano clients should have a way to prove transaction inclusion and examine their transaction history.

Thousands of little performance improvements and tweaks for corner cases.

General hardening of the protocol. Even deeper test coverage, bug bounty program and peer reviews.

Happy Hardfork Sunday,

— Team Nimiq