Many years of hard work went into the Poseidon family of hashes, and they have provided great real-world value on Ethereum and elsewhere and will continue to do so for several years. They are the reason why it's fast to generate a client-side SNARK for a modern privacy-protocol.
The fact that we have ultra-fast general-purpose STARKs (mid-three-digit overhead for basically any batched computation) and may well soon drop to double-digit or even lower is more amazing than anything that we had been hoping for in the early 2020s.
Big congratulations to all involved in Poseidon, and all involved in STARKs.
https://t.co/cdERDYkj6n
Here is a concise overview in English of the major state-sponsored genocides, ethnic massacres, and forced population transfers committed under the Soviet regime (USSR):
Genocides & State-Engineered Mass Atrocities
* Holodomor (1932–1933): Man-made famine in Ukraine resulting from forced collectivization and targeted grain requisitions. Officially recognized as genocide by dozens of nations, it killed an estimated 3.5–5 million Ukrainians.
* Kazakh Famine / Asharshylyq (1930–1933): Famine caused by forced sedentarization and livestock confiscation, killing over 1.5 million Kazakhs (roughly 38–42% of the ethnic Kazakh population).
Massacres & Operations Targeting Specific Ethnicities
* The Polish Operation of the NKVD (1937–1938): Part of the Great Purge explicitly targeting ethnic Poles in the USSR. Over 111,000 ethnic Poles were executed by firing squad.
* Katyn Massacre (1940): Execution of approximately 22,000 Polish officers, intellectuals, and prisoners of war by the NKVD in Katyn forest and other sites.
* Ethnic Operations during the Great Purge (1937–1938): Targeted execution of tens of thousands of USSR citizens based on national background, including ethnic Germans, Finns, Latvians, Estonians, Koreans, and Greeks.
Forced Mass Deportations of Entire Ethnic Groups (Ethnic Cleansing)
Between 1937 and 1949, the Soviet government forcibly deported whole ethnic populations to Central Asia and Siberia under harsh conditions, leading to massive mortality rates (often 20–40% dead from hunger, exhaustion, and disease):
* Korean Deportation (1937): ~170,000 Koryo-saram moved from the Far East to Central Asia.
* Poles and Western Ukrainians/Belarusians (1940–1941): ~300,000–1,000,000 people deported following the Soviet annexation of Eastern Poland.
* Volga Germans (1941): ~400,000 to 900,000 Soviet Germans deported after the German invasion.
* Kalmyks (Operation Ulussy, 1943): ~93,000 Kalmyks deported; nearly one-third died.
* Karachays & Balkars (1943–1944): ~100,000 North Caucasian inhabitants deported.
* Chechens & Ingush (Operation Lentil, 1944): ~500,000 people removed from their native lands in a single week; tens of thousands perished. Recognized as genocide by the European Parliament in 2004.
* Crimean Tatars (Sürgün, 1944): Entire population (~190,000) deported to Uzbekistan and Ural region; over 18–45% died during transit and early exile. Officially recognized as genocide by Ukraine and several other countries.
* Meskhetian Turks, Kurds, and Hemshins (1944): ~115,000 deported from southern Georgia.
* Operation Priboi (1949): Mass deportation of ~90,000 Estonians, Latvians, and Lithuanians to remote parts of Siberia to break resistance to Sovietization.
One positive consequence of all the recent detailed thinking about transaction formats - not just 8141, also "future of state" discussions eg. UTXOs, PBT, keyed nonces, and also recursive STARK mempool - is that we have a much more explicit understanding of how transactions have "actions" and "dependencies", and we can engineer around optimizing the two separately.
An action is an effect that a transaction has.
A dependency is a fact about the transaction and/or the state that must be true for the transaction to be valid.
eg. a signature is a dependency, a Merkle proof of a UTXO is a dependency, a ZK-SNARK (or STARK) is a dependency, a call that sends ETH is an action
Dependencies can be processed in parallel. Dependencies that involve state can be reasoned about by a mempool, especially if the specific state accessed is statically declared. Dependencies that are pure (no state calling allowed) can be processed once at the mempool layer and never need to be processed again - and potentially even replaced with a STARK verifying them, allowing not just execution but also data to be elided.
In principle, dependencies and actions can all be expressed as calls (if needed, calls to precompiles). This would make the transaction format itself very bare-bones and minimalist (a list of calls, flags for the type of each call eg. dependencies would be static or pure calls, and origin, nonce, etc) and allows maximum cross-compatibility even if different EVM chains have different features.
In 2015-era Ethereum, thinking explicitly about these differences was not very important: execution was execution, there were few enough transactions that we could process them all serially, and single-key ECDSA accounts were good enough for everyone.
Ethereum's current scaling strategy, however, requires moving beyond that paradigm. Ethereum is beloved by many developers because the execution and state model is so dynamic and flexible. But dynamic and flexible is not friendly to scaling. Fortunately, >90% of Ethereum's activity by volume does not require anything dynamic and flexible. So, we require contracts, accounts and transactions to more explicitly specify what is dynamic and flexible and what is more statically-analyzable but more restrictive, and more statically-analyzable things get the lowest gas cost and thus scale the most. Effectively, learning from the best of both the 2015-era Ethereum model and a more Bitcoin-like model (reminder: Bitcoin has had what I call account abstraction since the beginning), and making a mixture of both (really, the full spectrum between both) available, with gas costs appropriate for the level of scale involved.
New state types, the recursive STARK mempool, keyed nonces, etc all go in this direction.
This all relates to transaction types, because a general-purpose transaction type is a very natural interface layer on top of which all of this can be implemented, and the current thinking around the EIP-8141 transaction type is going in this exact direction that is friendly to these kinds of future generalizations.
So in that sense, 8141 done well is not just a culmination of 10 years of account abstraction work, it's also preparation for the next few years of responsible decentralization-friendly hyper-scaling.
A lot of important progress on Frames (EIP-8141) has been quietly happening over the last few months. Highly recommend reading this, also the updated EIP https://t.co/jYqeS55j6P
https://t.co/CPYONKnWZc
Tuta (then Tutanota) is not immune to court orders either: in 2020 the Cologne Regional Court required it to capture the unencrypted incoming and outgoing mail of one specific mailbox in a German blackmail case, and later rulings confirmed that duty for accounts the provider can still see in plaintext. End-to-end encrypted messages could not be decrypted, but the case undercuts the idea that Tuta is uniquely beyond legal process while Proton is uniquely compromised.
🛑Age verification is not a child safety measure.
It is a identity infrastructure project.
Being built by the same companies that profit from identity data.
Funded by the same donors who lobby for data retention laws.
Framed as child protection so you don't look too closely.
👁🗨Look closely.
I must say, you guys are doing a great job!
Adding two modes to your app—both a standard fast VPN and a VPN for the mixnet—is super convenient.
It would be awesome to add crypto payments directly inside the app instead of routing through the website, as well as expanding the list of available countries
One compliment, two omissions, one misleading claim, and one glaring mistake that will come to bite back:
One Compliment:
Going for STARKs (“hash based SNARKs”) is the right move, congrats!
Two omissions:
(1) This conclusion is reached after a long debate over STARKs vs SNARKs. We know this debate well since much of the research into Poseidon was led by StarkWare, and funded by the EF. It's good to see the industry converging around STARKs
(2) Small binary fields were introduced into the world of ZK proofs long before Binius and Flonk, in the ZK STARK paper of 2018. It was already shown there that certain *standard* cryptographic primitives are efficient over it.
One misleading claim:
Prime field STARKs need not be over *large* primes. FYI - Stwo is over M31, a 31-bit field, making it very efficient.
One glaring mistake that’ll bite back:
Binary field multiplication is inefficient over GPUs, whereas small prime multiplication (like Stwo/M31) is.
Will this mean that GPUs binary field based constructions will face challenges that won’t be that easy to overcome? You tell me.
Overall, glad to see this direction.
Go ZK-STARKs!