Coda Protocol Testnet [Beta] Retrospective — Winter Special
by Christine Yip
2020-01-11

Last month, we had a Winter Special testnet event. The event kicked off with a soft-fork from the Phase 2.4 testnet and we hoped to achieve a new milestone for keeping the network up and running for longer than ever before on the Testnet Beta. The community exceeded all our expectations — read on about all the milestones, the impressive numbers on the community’s achievements, and the new guides and tools that they created. Sign up here for testnet related updates so you won’t miss out on the next big events that are coming up in 2020.

winter-special-twitter-card

Table of Contents

Retrospective and Technical Finding

Community: Sharing Knowledge and Tools

Winter Special Testnet Winners

Retrospective and Technical Findings

Retrospective Winter Special

The Winter Special sure was a special testnet event. Together with the avid testnet users, who possessed the majority of the stake on the blockchain, we hit new milestones over the course of the four weeks during the event. We feel very honoured and proud of the community’s achievements:

  • over 12,000 blocks on the longest chain (the longest to date and it’s still growing at the time of writing!) — the top 11 stakers from the community each produced over 100 blocks!
  • fierce competition on the Snarketplace — about 150,000 zk-SNARKs were accepted in blocks and the most successful snark worker sold over 20,000 zk-SNARKs to block producers
  • high activity on the blockchain — the top 2 users each got over 26,000 transactions included in the succinct blockchain
  • over 40 testnet users participated in the Winter Special event and created at least one block
  • the network is live for exactly two months at the time of writing — the longest to date and it’s still up and running
  • the community racked up over 275,000 testnet points* together on the leaderboard
  • passionate community members took the collaboration to the next level by helping each other out and sharing a new set of guides/tools (read on for more details)

Technical Findings

The community also helped us with discovering issues. Some testnet users might have encountered reoccurring crashes during the event. We looked into the bug reports that the users submitted and the cause of the crashes, and found the following:

  • Race condition: Some of the crashes (for example this one) led us to find a race condition. We are looking into the right fix for it, if you’re interested — this is one of the proposed fixes. In the meantime, we intend on shipping a Coda-wrapper to optionally use. It will restart the node for testnet users when a crash occurs as long as the crashes aren’t happening too often. Hopefully, this will improve the testnet experience for the users until the fix for the race condition is implemented, stay tuned for more information on this. (Community members also found other ways to handle these situations, read on for their solutions.)
  • Asynchronous work on the OCaml Async IO thread: Another crash that caught our attention is an issue associated with a build up of asynchronous work on the OCaml Async IO thread, that is causing a buffer to backed up for a long time. Our plan to dig into this one, is to add more context to our Asyc binds, you can follow this issue here.

We would like to thank all users who shared their findings by submitting bug reports. This helps us greatly with identifying vulnerabilities and hardening the protocol.

The Community Ran the Show

During the Winter Special, the majority of our core team was away on holidays around Christmas and New Year. It is humbling to see the community keeping the testnet running smoothly.

At one point, our O(1) Labs SNARK worker box ran out of disk space — but the community kept up the slack! All the testnet users produced sufficient SNARK work to keep the network running smoothly. For example, just stevenhq and Kunkomu alone created over 40,000 SNARK works that were accepted into blocks over the course of the network.

The community not only kept the testnet up and running by producing blocks, creating zk-SNARKs and sending transactions, but many of the members also stepped up to help out newcomers and other users that got stuck. A heartfelt thanks to all of you for marching with us on this journey!

Community: Sharing Knowledge and Tools

“Each one of us can make a difference. Together we make change.” — Barbara Mikulski

As our team is steadily marching towards a mainnet candidate, amazing testnet users in the community are working hard at testing the protocol on Testnet Beta, and sharing tips and tools with each other. See below for the useful tools that testnet members created during the last period. Many are real lifesavers!

Guide: Monitoring the Node Status

The progress of Testnet Beta comes with ups and downs. Node crashes are not uncommon in this stage, however, it would be very helpful if there was a way that node operators would be notified when their nodes crash so they can act on it. High performer niuniu | Bit Cat came to the rescue with a guide how to solve this. He wrote a guide on how to monitor the status of the testnet nodes by using an open-source monitoring software tool. His guide is available in Chinese and English.

monitor-node-tool

Guide: How to Import Private Keys

Sometimes, you’d want to upgrade your hardware or try fresh builds. When you do, it would be nice if you could import your key pairs to the new build and keep using the same keys.

Testnet veteran Kunkomu rebuilt his machine many times and successfully got his node back and running with the same key that he started with. He is sharing his quick-and-dirty, but effective method with the community. His advice to other testnet users: “save a copy of your private key file off system in a static drive of some sort, trust me it will save you in the long run.” Check out the full explanation here.

A Man Can Dream: Coda Wallet

Alexander, who has been with us since Testnet Beta Phase 1, is one of the most enthusiastic members in the Coda community. He has been fantasising how a Coda wallet could look like. You can see the functionalities that he envisioned the wallet to have here. Is this also how you’d like the wallet to be? Let us know and discuss with the community on the forum!

coda-wallet

Script: Always Have Your Node Up

Two other community members, windows | Nodeasy and new member tcrypt, also shared scripts that can help testnet users to always have their nodes up, handy to have if you’re running a staking node so you won’t miss out on your next opportunity to produce blocks! Check out their codes here.

Other Useful Tools and Resources

For other useful tools and resources (including a blockchain explorer) created by the community, check out this list.

Winter Special Testnet Winners

Please join us in congratulating Coda’s Testnet Beta Winter Special winners!

Winter Special Winners

Final Top 10 positions on the Winter Special Leaderboard:

1st niuniu | Bit Cat

2nd Kunkomu

3rd Prague

4th Sparkpool

5th stevenhq

6th Alexander

7th Matt Harrop / Figment Network

8th Igor888

9th Greg

10th Star.LI , Viktor, and CrisF

MVP: dsrv labs — for growing Coda’s presence and technical community in Korea. They helped with organizing an event for node operators in Korea and are translating different kinds of resources related to Coda to Korean. Major standouts!

Winter Special Challenge

1st (5000 pts* + NVIDIA 2080Ti GTX Graphics Card) niuniu | Bit Cat — Monitor Coda’s Node Status (Chinese and English)

2nd (4000 pts*) Kunkomu — How to Import Private Keys

3rd (3000 pts*) Alexander — Mockup Coda Wallet

(1000 pts*) Windows | nodeasy and tcrypt for sharing scripts to always have nodes up and running on the testnet

Staking Challenge

1st (6000 pts*) Sparkpool | WilliamGuozi (produced 141 blocks!)

2nd (5000 pts*) niuniu | Bit Cat (135 blocks)

3rd (4000 pts*) Matt Harrop / Figment Network (123 blocks)

SNARK Challenge

1st (6000 pts*) stevenhq (produced 20,734 zk-SNARKs!)

2nd (5000 pts*) Kunkomu (19,397 zk-SNARKs)

3rd (4000 pts*) niuniu | Bit Cat (18,122 zk-SNARKs)

Transactions Challenge

1st (6000 pts*) Prague (sent 26,656 txns!)

2nd (5000 pts*) niuniu | Bit Cat (26,341 txns)

3rd (4000 pts*) Kunkomu (14,944 txns)

Community MVP Challenge

Winter Special Bonus (1500 pts*): Kunkomu — for always being around, helping out other community members and setting the tone of being one of the friendliest member in the community.

Major (1000 pts*): niuniu | Bit Cat — for providing detailed reports on testnet issues, and always being around for the broader community and the Chinese community.

Minor (500 pts*): Greg, whataday2day, Igor888 — for helping out other testnet users when they are stuck. prague for reporting irregularities on the testnet.

Bug Bounties

(500 pts*) — Star.LI, Igor888, Greg, skultra, Prague, niuniu | Bit Cat, Viktor, CrisF

We feel extremely grateful for all contributions and participation from the community — thank you for joining us in the mission to decentralize the future. Stay tuned for more exciting things in 2020, this will be an important year for Coda! See you over on Discord!

*Testnet Points (abbreviated pts) are designed solely to track contributions to the Testnet and Testnet Points have no cash or other monetary value. Testnet Points are not transferable and are not redeemable or exchangeable for any cryptocurrency or digital assets. We may at any time amend or eliminate Testnet Points.