Saravanan Vijayakumaran

My PPoT Participation Experience

In June, I listened to Episode 133 of the Zero Knowledge podcast about trusted setup ceremonies. In that episode, Wei Jie mentioned that the Perpetual Powers of Tau ceremony was still ongoing. They were still looking for participants.

I decided to participate. Wei Jie mentions the following participation requirements in the podcast.

On June 22, I sent Wei Jie (@weijie_eth) a direct message on Twitter. He sent me a link to a Telegram channel. I joined the group and announced my intention to participate. The coordinator, Elizabeth, informed me that there were four participants in the queue ahead of me. She would let me know when it was my turn.

In the participant instructions, I noticed that participants were expected to document their process and sign the document with a Keybase account or GPG key. I had a Keybase account but I could not find the private keys I had created before. I reset my Keybase account, which takes three days to come into effect.

On July 8, Elizabeth informed me that it was my turn to participate if I was ready. In addition to reminding me that I would need 150 GB of disk space, she asked for my geographical location. I think the location information is used to put the 97 GB challenge file in a data center which is close to the participant.

I live on an academic campus. Due to the pandemic, I was working from home on a laptop. I decided to run the PPoT computation on the desktop in my office, which is also located in the same campus. I had SSH access to my office desktop from home.

On July 9, Elizabeth sent me a link to the challenge file. It took 3 hours to download it onto my desktop. I followed the instructions and was presented with a prompt like this.

  Will contribute to accumulator for 2^28 powers of tau
In total will generate up to 536870912 powers
Type some random text and press [ENTER] to provide additional entropy...

I invited my kids to type the random text. They obliged with glee as I don't let them type on the keyboard while I am working. Their random keystrokes somehow turned on the Universal Access Zoom feature in my Ubuntu laptop (which had a tmux session into my desktop). At that time, I did not understand what had happened. So I aborted the computation and used my phone to figure out how to turn off the Zoom.

When I started computation again, it once again prompted me to type some random text. I entered some text and hit ENTER. The program stopped immediately with the following message.

  thread 'main' panicked at 'unable to create `./response` in this
directory: Os { code: 17, kind: AlreadyExists, message: "File exists" }',
src/bin/compute_constrained.rs:92:18

The solution was to delete the response file in the working directory and restart the computation. For the final random text, I asked my kids to type some text while staying away from the special keys.

The computation took about 13 hours to complete. It generated the 49 GB response file. The BLAKE2b hash of this file was printed on the screen at the end of the computation. I copied the hash into a text file as I had seen the other participants post it in the Telegram channel. I posted on the Telegram channel that I was ready with the response. Elizabeth setup an FTP server for me to upload the response file. The upload took about an hour to complete.

Elizabeth asked me to look at the attestation samples in the GitHub repository and send her mine via Telegram. She would push it to the repository. I browsed a few attestations and picked the one from Ben Edgington as my template. My attestation can be found here. I signed my attestation using the following keybase command.

 keybase sign -i saravanan_attestation_0047.md -o saravanan_attestation_0047.md.sig

I sent my attestation file and the signature file to Elizabeth. It was added to the GitHub repository a few days later. When I looked at the attestation file, I realized that I had made a mistake in the challenge URL. When I had used Ben Edgington's attestation as my template, I had modified only the suffix of the challenge URL, which had the attestation number. I had failed to notice that the URL prefix was location dependent (ppotuk vs ppotin).

-*Challenge*: URL: https://ppotuk.blob.core.windows.net/public/challenge\_0047
+*Challenge*: URL: https://ppotin.blob.core.windows.net/public/challenge_0047

I made the change and signed the attestation file again using keybase. I sent the files to Elizabeth. She committed them to the repository.

Thanks to Elizabeth and Wei Jie for reading a draft of this post.