Crosslink Workshop: Wednesday, Oct 22nd at 5pm UTC

As part of Milestone 4 in Crosslink’s development, Shielded Labs will host a series of workshops (4a, 4b, 4c…) to gather more frequent feedback as the design continues to evolve.

The next workshop will take place on Wednesday, October 22 at 10AM PST / 1PM EST / 5PM UTC and will be held on Zoom. Meeting details will be shared prior to the session. Participants will be able to:

  • Join the BFT network without manual intervention from the team
  • Add, remove, and move stake between roster members
  • Observe their stake accumulate as PoW blocks are finalized

There is no need to share your IP address for this session. As before, you can join using just a laptop; however, running a publicly accessible server will improve network resiliency, since traffic currently routes through visible nodes.

Builds for Linux (Ubuntu 24.04) and macOS will be made available ahead of the workshop.

Let us know if you have any questions.

20 Likes

you require zoom, I cant attend that from any tor connection

hipster cypherpunks with google and zoom :rofl:

how can real privacy people attend with good opsec?

3 Likes

There is a function in Zoom that allows you to livestream simultaneously on Youtube, if that’s something you want to do @aquietinvestor

Will the session be recorded? I wont be able to make the time, but I would love to review the session!

2 Likes

Yes, it will be recorded and posted to our YouTube. I’ll look into live-streaming it as well.

1 Like

This kind of issue has always been a tension in Zcash development. There’s a variety of participants, and some prefer “easy to use mainstream stuff” while some prefer “hardened, FLOSS, privacy-centric”.

Over time we’ve tried a lot of different configurations. I’m personally always willing to try (or retry) different platforms that work better for the cautious-opsec crowd, but it’s likely too late for this workshop.

The way I think that needs to work is we do a “try out” or “dress rehearsal” with a representative sample of participants (including a variety of platforms and configurations, e.g. Tor access) and see how well it works for everyone. In fact, if we have a viable suggestion by the time of the workshop, then near the end I’d be interested to ask a sample of participants to try it out.

The main suggestion I recall for freer / FLOSSier is Jitsi and we’ve tried it maybe 2 or three times over the years. It definitely improved over time, but it was never glitch-free enough for a basic large group of less-opsec-experty participants to feel fully comfortable.

Any other setups we should investigate?

Edit: As to how a “privacy centric project could use such platforms”… we can only fight the good fight on so many fronts at once. :joy::sob:

4 Likes

If anyone needs a VPS for these purposes, don’t forget that we have partners who accept Orchard payments in ZEC!

:backhand_index_pointing_right:t3: https://mynymbox.net/

6 Likes

Some more pre-workshop good news is that zebra-crosslink works with Tailscale! You can connect a machine running zebra-crosslink to an exit node within your Tailnet and everything will work without additional configuration.

For anyone running this during the workshop, let me know if your mileage varies!

4 Likes

This time I can’t join, it’s my fifth wedding anniversary and I’ll having a special dinner with my wife… :heart: Good work to the whole crew!

3 Likes

On this thread I assume?

Correct. I’ll provide the details later today.

1 Like

Here’s the link for tomorrow’s workshop at 10am PST / 5pm UTC:

3 Likes

These are the builds for this workshop.

1 Like

Here are the current instructions for participating with a node observing the evolution:

I’m working on adding instructions on how you can add your node into the BFT roster to begin contributing to finality votes, and we’ll also cover that in the zoom.

3 Likes

CLI commands from the workshop:

  • zebra-crosslink-viz generate – prints a default configuration to the console, save this to a workshop.toml file
    • To enable the RPC server (allows commands from the command line):
      • Under [crosslink] add insecure_user_name = “your name here”
      • Under [rpc] add listen_addr = “127.0.0.1:8232”
  • zebra-crosslink-viz -c workshop.toml – runs zebra-crosslink with the configuration we generated

BFT commands:

  • ADD|<some_stake_integer>|<your_insecure_user_name> – Add stake + you to the roster
  • MOV|<some_stake_integer>|<recipient_name>|<your_insecure_user_name – Move stake from you to the recipient

To run BFT commands from the command line (via curl):

curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "set_tfl_command_buf", "params": ["<bft_command>"], "id": 1}' 127.0.0.1:8232
3 Likes

I give you crosslink. Thanks for the workshop! :heart_suit: :zebra: :shield:

8 Likes

647 :slight_smile:
we’re still in the process

4 Likes

Thanks to everyone who joined yesterday’s Crosslink Workshop for Milestone #4a. If you couldn’t make it, you can watch the recording here:

8 Likes

@shielded-nate
I haven’t had a single crash in all this time. I just launched it and it’s still working.

Test environment: MacOS Tahoe 26.0.1 Intel Core i9 16Gb

3 Likes

I wanted to check whether the top section (with the two forks) satisfies the Last Final Snapshot BFT rule. It does, but it’s very difficult to see how the forks go, partly because their bc-chains cross. Can there be some repulsion in the layout between bc-blocks and vertically between their labels, so that forks are more obvious?

Also: have you implemented the requirements that each bft-block points to a \sigma-confirmed bc-block (via a bc-header chain) and that each bc-block points to a bft-block that is final in a given context, or are those details left out for now?

Answering my own question, the visualization seems to reflect the trivial case \sigma = 1. In particular there are bc-blocks H for which \mathsf{snapshot}(\mathsf{LF}(H)) is only two blocks prior to H, which suggests by the argument quoted below from Questions about Crosslink that \sigma is probably 1, i.e. bft-blocks point to bc-blocks directly. It cannot be 0 because then \mathsf{headers\_bc} would be empty.

None of the block hashes in \mathsf{LF}(H)\mathsf{.headers\_bc} can point to H because that would be a hash cycle. In a typical case where no block withholding and no other rollback (not caused by the adversary) occurs on the honestly mined chain, the proposer of the last final block before a context bft‑block that H can point to will have, at the latest, H ⌈ {}_{\mathrm{bc}}^1 as \mathsf{tip}(B). Under these conditions, \mathsf{snapshot}(\mathsf{LF}(H)) will point, at the latest, to \sigma blocks before H ⌈ {}_{\mathrm{bc}}^1, i.e. \sigma+1 blocks before H.

9 Likes

Hmm, pinging @samhsmith @azmr , is it possible? :eyes: I think their visualizer is my favorite part of learning about Crosslink because its how I learn best! :smiling_face_with_three_hearts:

daira your book is amazing, still catching up :saluting_face: :heart_eyes:

2 Likes