This is constructed almost like an electrical circuit, where each gate takes two inputs, adds or multiplies them, and then sends an output to the next gate.
PLONK requires that each gate satisfies the following condition:
Ax + By + Cz + Dxy = 0
A - D are pre-chosen, while x - z are the values we’re verifying. This can be decomposed into a series of “custom” gates representing addition, multiplication, and boolean truth/false:
A (x + y - z) + B w (xy - z) + C w² (x² - x) = 0
There are two types of “wires” connecting the gates - wires that represent witness values, and wires with values fixed by the overall system.
This is all done over some finite field.
Circuits can be represented as tables, where each column can be represented as Lagrange interpolation polynomial. Circuits can get quite large - some circuits in Zcash are up to 2²⁵ rows. Circuits can be divided into regions, which are composed of logically related gates that don’t depend on I/O from other regions.
Circuits need to be linear; things like hash functions are possible in this context, but expensive. To get around this, UltraPLONK implements pre-computed lookup tables.
Lookup tables can be thought of as a generalization of permutations - instead of enforcing equality, we simply enforce inclusion in a set.
Apparently Chrome-based web browsers support serial connections over HTTP, and some microcontrollers (like Arduinos) can be flashed this way.
CircuitPython can be used on microcontrollers. After flashing the appropriate firmware, the microcontroller will appear as a USB mass storage device that Python scripts can just be written to.
MicroPython is an older project than CircuitPython that is not nearly as easy to use and has a lack of (recent) documentation, but supports a much wider range of boards.
Be aware that some of the ultra-cheap microcontrollers (for example, the Attiny85) are so cheap that they won’t always have evenly-spaced USB traces - while they might look like they’d work in a normal USB port, they won’t.
Taking a step up to something like the Atmega32u4 will vastly improve your experience, if just because of the manufacturing process is more reliable.
The ESP8266 has a lot of features (including USB and Wi-Fi) and seems to be the Swiss army knife of microcontrollers. Lots of projects for this. However, there’s not enough memory to store entire wireless packets, which limits its ability to attack targets (though some interception attacks are possible, and surveillance is eminently feasible).
Interesting idea: Wi-Fi network passwords are presented as hashes, and these can be harvested and then cracked offline using fake access points.
An ESP32 is a bit more capable than the ESP8266 (among other things, it has enough memory to actually grab full Wi-Fi packets); however, it does not support CircuitPython.
The ESP32cam contains a camera and can do facial recognition!!!
The ESP32s2 is the most recent version of the ESP32 and is better in almost every way… Except that the manufacturer removed the ability to send arbitrary Wi-Fi packets, so attack potential is limited.
The ESP32c6 is a really new microcontroller with a 32-bit RISC-V microprocessor! It’s so new that there’s not a lot of developer support… Yet.
Cory Doctorow is advocating for a Fediverse-like approach to moderation, where communities/individuals have the power to moderate themselves as they see fit. Doctorow is open that such an approach will be fragmented and will still allow offensive speech to persist, but believes that overall such a system will be better at moderating the content that is actually problematic for that community within that community. (I personally reached the same conclusion a few years ago - I have no idea when Doctorow came to think this - but do think that this framing profoundly calls into question the viability/wisdom of the very idea that a “global community” is possible… Or even desirable.)
Interesting idea (attributed to Lawerence Lessig): There are four overlapping forms of governance - (computer) code, law, (social) norms, and markets.
HOPE attendees only used ~600 Mbps of bandwidth at peak. (I wonder if this had to do with coverage. For example, I wan’t able to reliably connect to Wi-Fi in the workshop rooms; I didn’t try elsewhere, however, as I didn’t have a strong use case for networking outside of the workshops this year.)
There were just over 900 conference attendees this year. It’s implied that overall ticket sales were lower this year than for past HOPEs, but it sounds like there may have been a number of folks who bought tickets and then didn’t show up…