BlessedCity
Joined November 2015
I’ve been in many projects over these last 2 bears since 2017, but I must admit, the road always goes back to $CULT. There isn’t any better #DEFI project, was finished and renounced when it got released, LP locked for 264 years. The tokenomics is out of this world, the voting power can’t be done anyway better in #DEFI #DAO, There’s been ALOT of FUD against $CULT, but CULT is just a code, no humans behind the code anymore, only we the ppl in front of it. One day, you’ll all understand that this is one of the safe ones, but first when you understand the code and the tokenomics, then you’ll truely sleep well at night and be patience. Not many will read this or actually react to this message. - but at least I hope you’ll go do your research and I hope you will find success and mostly find peace on your path. 🙏🏻🙏🏻
2
23
2
79
3,066
Blessed By Crypto.444 🩸🩸🩸 retweeted
We think the EVM is doing too much work in ZK. Modulus is exploring another route: express computation as logic and prove that directly. zkFOL is already public: github.com/zkFOL/zkfol Working toward proofs that cost less and reveal less.
2
23
66
576
Blessed By Crypto.444 🩸🩸🩸 retweeted
Replying to @yasu0x1
Allow us to demonstrate
2
15
55
668
Blessed By Crypto.444 🩸🩸🩸 retweeted
Replying to @grok
@grok also says: @MrOmodulus is way ahead of his time. While everyone else is racing to prove broken VMs, he’s building a chain where the contract IS the specification. The first of its kind. First-order logic predicates. #zkFOL No bytecode. No virtual machine. No execution layer. A transition only happens if the math proves it. Defects refuse instead of paying the attacker. Claims 100s–1000s× faster proofs and far less memory than zkVMs — code is public. $CULT DAO was pure community ownership with zero VC from day one. @ModulusZK is the logical next step: math-enforced not team-enforced. Most will ignore it until they can’t. That’s usually how it goes. Am I right @IOHK_Charles
INSIGHT: Grok says #Cardano $ADA Founder Charles Hoskinson's ideas are "a few light-years ahead."
10
35
327
There is nothing like the @wearecultdao community 🩸🩸🩸
There is nothing like the @wearecultdao community 🩸🩸🩸
4
27
229
Blessed By Crypto.444 🩸🩸🩸 retweeted
Replying to @IOHK_Charles
@IOHK_Charles In May 2025 you reviewed Gabbay's paper, built a Lean EDSL on it, and said the computational complexity wasn't practical. Fair challenge, and @ModulusZK took it seriously. They kept building with no funding, no help, no attention, only got ignored and still gets ignored and zkFOL now proves in milliseconds on a normal CPU, benchmarked against RISC Zero and SP1. Would genuinely love your take on whether this answers your concern: github.com/zkFOL/zkfo
I reviewed the paper and wrote an EDSL in Lean based on it. My implementation demonstrates how first-order logic compiles directly to polynomial constraints, providing the missing link between high-level cryptocurrency invariants and low-level zkSNARK circuits. By mapping logical formulas to R1CS, developers can specify complex financial systems declaratively while achieving cryptographic verifiability. The core insight: monetary invariants are logical statements. "Total supply remains constant" becomes ∀tx. sum(inputs) = sum(outputs). "No double spending" becomes ∀coin. spent(coin) ⇒ ¬spendable(coin). These specifications compile automatically to polynomial constraints, eliminating manual circuit construction—the primary barrier to zkEVM adoption. The polynomial semantics handles the full complexity of financial logic. Negation through sign gadgets enables expressing invalidity conditions—quantifiers over finite domains model transaction batches. The sparse polynomial representation keeps verification costs manageable even for complex state transitions. Most critically, conjunction's additive compilation means combining multiple invariants doesn't compound proof complexity, essential for composable financial protocols. The R1CS output integrates directly with existing zkSNARK toolchains (Groth16, PLONK, Halo2). A balance check requiring hundreds of hand-written constraints reduces to a single logical formula. The compiler handles witness generation, wire allocation, and constraint optimization automatically. Here's the code: -- ArithFOL.lean — Lean 4 EDSL for Gabbay-style arithmetised first-order logic -- Author: Charles Hoskinson License: MIT -- -- * Full polynomial semantics (truth ≙ 0) + complete R1CS compiler. -- * Extra Poly utilities (pow / evaluate / degree / leadingCoeff / isZero / isConst). -- * Pretty R1CS printer and runnable examples at bottom. -- --------------------------------------------------------------------------- import Std.Data.RBMap.Lemmas open Std (RBMap) /-! ### Signature --------------------------------------------------------- -/ structure FuncSymbol where name : String := "" ; arity : Nat := 0 structure PredSymbol where name : String := "" ; arity : Nat := 0 /-! ### Syntax: de-Bruijn terms & formulas -------------------------------- -/ inductive Term : Nat → Type | var {n} : Fin n → Term n | const {n} : Rat → Term n | indet {n} : Term n -- distinguished X | add {n} : Term n → Term n → Term n | mul {n} : Term n → Term n → Term n | neg {n} : Term n → Term n | func {n} : (f : FuncSymbol) → (Fin f.arity → Term n) → Term n inductive Formula : Nat → Type | top {n} : Formula n | bot {n} : Formula n | eq {n} (t u : Term n) : Formula n | pred {n} (P : PredSymbol) (args : Fin P.arity → Term n) : Formula n | and {n} (φ ψ : Formula n) : Formula n | or {n} (φ ψ : Formula n) : Formula n | forall {n} (φ : Formula (n+1)) : Formula n | exists {n} (φ : Formula (n+1)) : Formula n | notG {n} (φ : Formula n) : Formula n -- sign-gadget ¬φ /-! ### Polynomial datatype ----------------------------------------------- -/ structure Poly where coeffs : RBMap Nat Rat compare deriving Repr, DecidableEq namespace Poly def zero : Poly := ⟨RBMap.empty⟩ def const (q : Rat) : Poly := if q = 0 then zero else ⟨RBMap.ofList [(0,q)]⟩ def X : Poly := ⟨RBMap.ofList [(1,1)]⟩ @[inline] def clean (m : RBMap Nat Rat compare) := m.fold (init:=RBMap.empty) (fun acc k v => if v=0 then acc else acc.insert k v) @[inline] def add (p q : Poly) : Poly := ⟨clean <| p.coeffs.fold (init:=q.coeffs) (fun m k v => m.insert k (v + m.findD k 0))⟩ @[inline] def neg (p : Poly) : Poly := ⟨p.coeffs.fold (init:=RBMap.empty) (fun m k v => m.insert k (-v))⟩ @[inline] def mul (p q : Poly) : Poly := ⟨clean <| p.coeffs.fold (init:=RBMap.empty) (fun acc kp vp => q.coeffs.fold (init:=acc) (fun acc2 kq vq => let k := kp+kq let c := acc2.findD k 0 + vp*vq if c = 0 then acc2.erase k else acc2.insert k c))⟩ @[inline] def square (p : Poly) : Poly := p.mul p @[inline] def pow (p : Poly) : Nat → Poly | 0 => const 1 | 1 => p | n+1 => let q := pow p (n/2) let q2 := q.mul q if n % 2 = 0 then q2 else q2.mul p @[inline] def ratPow : Rat → Nat → Rat | _, 0 => 1 | r, 1 => r | r, n+1 => let half := ratPow r (n/2) let sq := half*half if n%2=0 then sq else sq*r @[inline] def evaluate (p : Poly) (x : Rat) : Rat := if x = 0 then p.coeffs.findD 0 0 else if x = 1 then p.coeffs.fold (init:=0) (fun acc _ v => acc+v) else p.coeffs.fold (init:=0) (fun acc k v => acc + v * ratPow x k) @[inline] def degree (p : Poly) : Option Nat := p.coeffs.fold (init:=none) (fun o k _ => match o with | none => some k | some d => some (max d k)) @[inline] def leadingCoeff (p : Poly) : Option Rat := match p.degree with | none => none | some d => p.coeffs.find? d @[inline] def isZero (p : Poly) : Bool := p.coeffs.isEmpty @[inline] def isConst (p : Poly) : Option Rat := if p.isZero then some 0 else if p.coeffs.size = 1 ∧ p.coeffs.min?.map (·.1) = some 0 then some (p.coeffs.findD 0 0) else none @[inline] def compose (p q : Poly) : Poly := p.coeffs.fold (init:=Poly.zero) (fun acc k c => acc.add (Poly.const c).mul (q.pow k)) end Poly /-! ### Environment -------------------------------------------------------- -/ structure Env (n : Nat) where varVal : Fin n → Rat domain : List Rat namespace Env def extend {n} (e : Env n) (a : Rat) : Env (n+1) := { varVal := fun | ⟨0,_⟩ => a | ⟨i+1,h⟩ => e.varVal ⟨i, Nat.lt_of_succ_lt_succ h⟩, domain := e.domain } end Env /-! ### Interpretation ----------------------------------------------------- -/ mutual def interpTerm {n} (ρ : Env n) : Term n → Poly | .var i => Poly.const (ρ.varVal i) | .const q => Poly.const q | .indet => Poly.X | .add s t => (interpTerm ρ s).add (interpTerm ρ t) | .mul s t => (interpTerm ρ s).mul (interpTerm ρ t) | .neg t => Poly.neg (interpTerm ρ t) | .func _ _ => Poly.zero def liftTerm {k} : Term k → Term (k+1) | .var i => .var ⟨i.val+1, Nat.succ_lt_succ i.isLt⟩ | .const q => .const q | .indet => .indet | .add s t => .add (liftTerm s) (liftTerm t) | .mul s t => .mul (liftTerm s) (liftTerm t) | .neg t => .neg (liftTerm t) | .func f as => .func f (fun i => liftTerm (as i)) def liftFormula {k} : Formula k → Formula (k+1) | .top => .top | .bot => .bot | .eq t u => .eq (liftTerm t) (liftTerm u) | .pred P as => .pred P (fun i => liftTerm (as i)) | .and φ ψ => .and (liftFormula φ) (liftFormula ψ) | .or φ ψ => .or (liftFormula φ) (liftFormula ψ) | .forall φ => .forall (liftFormula φ) | .exists φ => .exists (liftFormula φ) | .notG φ => .notG (liftFormula φ) def interpFormula {n} (ρ : Env n) : Formula n → Poly | .top => Poly.zero | .bot => Poly.const 1 | .eq t u => (interpTerm ρ t).add (Poly.neg (interpTerm ρ u)) |> Poly.square | .pred _ _ => Poly.const 1 | .and φ ψ => let p := interpFormula ρ φ let q := interpFormula ρ ψ p.square.add q.square | .or φ ψ => (interpFormula ρ φ).mul (interpFormula ρ ψ) | .forall φ => ρ.domain.foldl (init:=Poly.zero) fun acc a => acc.add ((interpFormula (ρ.extend a) φ).square) | .exists φ => match ρ.domain with | [] => Poly.const 1 | a :: _ => interpFormula (ρ.extend a) φ -- naive witness | .notG φ => let φ' := liftFormula φ let b : Term (n+1) := .var ⟨0, Nat.zero_lt_succ n⟩ let boolB := Formula.eq (.mul b (.add b (.const (-1)))) (.const 0) let conj0 := Formula.and (Formula.eq b (.const 0)) φ' let conj1 := Formula.and (Formula.eq b (.const 1)) Formula.top let gadget := Formula.and boolB (Formula.or conj0 conj1) let p0 := interpFormula (ρ.extend 0) gadget let p1 := interpFormula (ρ.extend 1) gadget p0.mul p1 end /-! ### R1CS infrastructure ---------------------------------------------- -/ structure Wire where id : Nat deriving Repr, DecidableEq, Ord instance : Ord Wire := ⟨fun a b => compare a.id b.id⟩ namespace Wire def X : Wire := ⟨0⟩ def one : Wire := ⟨1⟩ def zero : Wire := ⟨2⟩ end Wire structure Constraint where A B C : RBMap Wire Rat compare deriving Repr structure Ctx where next : Nat := 3 -- after reserved rows : List Constraint := [] powers : RBMap Nat Wire compare := {} polyWires : RBMap Poly Wire compare := {} namespace Ctx def fresh : StateM Ctx Wire := do let s ← get; set {s with next := s.next+1}; pure ⟨s.next⟩ def push (row : Constraint) : StateM Ctx Unit := modify fun s => {s with rows := row :: s.rows} -- wires for X^k, cached partial def getPower (k : Nat) : StateM Ctx Wire := do let s ← get; match s.powers.find? k with | some w => pure w | none => if k=0 then pure Wire.one else if k=1 then pure Wire.X else let wPrev ← getPower (k-1) let wk ← fresh push {A := RBMap.singleton Wire.X 1, B := RBMap.singleton wPrev 1, C := RBMap.singleton wk 1} modify fun s => {s with powers := s.powers.insert k wk} pure wk -- wires for arbitrary polynomial value partial def getPolyWire (p : Poly) : StateM Ctx Wire := do let s ← get; match s.polyWires.find? p with | some w => pure w | none => match p.isConst with | some 0 => pure Wire.zero | some 1 => pure Wire.one | _ => let w ← fresh compilePolyDef p w modify fun s => {s with polyWires := s.polyWires.insert p w} pure w -- emit rows for Σ c_k X^k = w partial def compilePolyDef (p : Poly) (w : Wire) : StateM Ctx Unit := do let mut lin := RBMap.singleton w (-1) for ⟨k,c⟩ in p.coeffs.toList do let wk ← getPower k lin := lin.insert wk (c + lin.findD wk 0) push {A := lin, B := RBMap.singleton Wire.one 1, C := RBMap.empty} end Ctx /-- compile equality p=0 into rows -/ private def compilePolyEq (p : Poly) : StateM Ctx Unit := do if p.isZero then return () let w ← Ctx.getPolyWire p Ctx.push {A := RBMap.singleton w 1, B := RBMap.singleton Wire.one 1, C := RBMap.empty} /-- substitute concrete a into a 1-bound formula (for ∀/∃ instantiation) -/ def substFormula {n} (φ : Formula (n+1)) (a : Rat) : Formula n := Formula.eq (Term.const ((interpFormula ⟨fun _ => a, []⟩ φ).evaluate 0)) (Term.const 0) /-! full compilation ------------------------------------------------------ -/ open Ctx mutual partial def compileFormula (φ : Formula 0) (env : Env 0) : StateM Ctx Unit := match φ with | .top => return () | .bot => compilePolyEq (Poly.const 1) | .eq t u => let diff := (interpTerm env t).add (Poly.neg (interpTerm env u)) compilePolyEq diff | .pred _ _ => compilePolyEq (Poly.const 1) | .and φ ψ => compileFormula φ env >> compileFormula ψ env | .or φ ψ => -- enforce wφ · wψ = 0 let pφ := interpFormula env φ; let pψ := interpFormula env ψ let wφ ← getPolyWire pφ; let wψ ← getPolyWire pψ push {A := RBMap.singleton wφ 1, B := RBMap.singleton wψ 1, C := RBMap.empty} | .forall φ => -- all instantiations must be 0 for a in env.domain do compileFormula (substFormula φ a) env | .exists φ => -- naive witness = first element match env.domain with | [] => compilePolyEq (Poly.const 1) | a :: _ => compileFormula (substFormula φ a) env | .notG φ => compilePolyEq (interpFormula env (.notG φ)) end /-- Public entry: compile closed formula to R1CS rows. -/ def compileFormulaToR1CS (φ : Formula 0) (domain : List Rat := []) : List Constraint := let env : Env 0 := ⟨fun _ => 0, domain⟩ ((compileFormula φ env).run {}).2.rows.reverse /-! ### Pretty printer & validation -------------------------------------- -/ namespace Constraint def termStr (w : Wire) (c : Rat) : String := let wS := if w = Wire.X then "X" else if w = Wire.one then "1" else if w = Wire.zero then "0" else s!"w{w.id}" if c = 1 then wS else if c = -1 then s!"-{wS}" else s!"{c}·{wS}" def sideStr (m : RBMap Wire Rat compare) : String := if m.isEmpty then "0" else String.intercalate " + " (m.toList.map (fun (w,c) => termStr w c)) def toString (c : Constraint) : String := s!"({sideStr c.A}) × ({sideStr c.B}) = {sideStr c.C}" end Constraint def validateR1CS (rows : List Constraint) (w : Wire → Rat) : Bool := rows.all fun c => let eval (m : RBMap Wire Rat compare) := m.fold (init:=0) fun acc i coeff => acc + coeff * w i eval c.A * eval c.B = eval c.C ------------------- Give my regards to Gabbay> I enjoyed reading the paper and wish you guys well with your project
1
13
37
334
Blessed By Crypto.444 🩸🩸🩸 retweeted
Would love for @Zac_Aztec to have a look at zkFOL’s results
We’re pleased to report that @moduluszk's zkFOL tech stack is now public for review at github.com/zkFOL/zkfol/.   The paper draft is also online at github.com/zkFOL/zkfol/blob/… Our docs and website have been updated inline.
7
32
5
102
3,313
Blessed By Crypto.444 🩸🩸🩸 retweeted
Funny. @ModulusZK spent years building this with no funding, reaching out again and again, and got ignored. Now it's 'news' because the right name is attached. It shouldn't matter who you know. @CoinDesk, look into zkFOL before you call this new.
2
6
2
30
816
Blessed By Crypto.444 🩸🩸🩸 retweeted
@Bankless @TrustlessState what more you want from a team?? Where is your support and reviews? This team is creating something unique with their own funds… and you, you all stay silent! Shame!
2
5
81
Blessed By Crypto.444 🩸🩸🩸 retweeted
We have a dream. And by the sheer force of our will. It will become reality. Never surrender.
15
44
10
126
5,568
Blessed By Crypto.444 🩸🩸🩸 retweeted
Leave your meme coin community Wear this mask Join #CultDAO Built by the people Lead by the people 🩸🩸🩸 We are more than everyone Unite.
2
10
33
513
Blessed By Crypto.444 🩸🩸🩸 retweeted
Replying to @anndylian
Agreed 100%. The real utility is when the community actually runs the thing - no team, no keys, no one who can rug or change the rules. @wearecultdao is built exactly like that: • Top stakers can only propose • Everyone else (the staked bags under the top 50) votes • 0.4% tax on every buy/sell feeds the treasury automatically It’s one of the few projects that actually matches what you’re saying about community being the best utility. Most people still only notice when the chart turns green though. Curious what you think of fully leaderless setups like this.
2
5
23
118
zkFOL is public. Contracts written as first-order logic predicates and compiled directly into constraints. No bytecode. No zkVM. A transaction goes through only if the proof shows the conditions are satisfied. $CULT is the intended gas token. 4 years. Zero venture. Code and paper are open for review. GitHub: github.com/zkFOL/zkfol Paper: github.com/zkFOL/zkfol/blob/… Technical comments welcome. @ModulusZK @wearecultdao
8
1
30
670
Blessed By Crypto.444 🩸🩸🩸 retweeted
1
8
2
23
660
Crypto spends a lot of time asking how to make zkEVMs faster. zkFOL asks a more disruptive question: how much of the virtual machine do we need in the first place? A zkEVM proves that @Ethereum-compatible code executed correctly. @ModulusZK’s zkFOL approach expresses applications as logical conditions and proves that a proposed state transition satisfies them, compiling those conditions into polynomial constraints. That changes the starting point for building an application. (ethereum.org⁠, docs.moduluszk.io⁠) So why isn’t zkFOL getting more attention? My view: crypto understands a faster version of an existing product more easily than a different architecture. “Better zkEVM” fits an established story: #Solidity developers, Ethereum compatibility, existing applications, familiar investment categories. “Build applications around provable logical conditions” requires people to rethink the development model and explain why developers would switch. Existing investment, tooling and commercial commitments may also make that conversation uncomfortable. But limited attention does not prove deliberate suppression. Some skepticism is reasonable: a compelling idea still needs reproducible results, independent security review and applications people actually use. @ModulusZK publishes striking benchmark results against SP1 and RISC Zero. Those are specific zkVM comparisons on selected workloads, not evidence that #zkFOL has already outperformed production zkEVMs across real @Ethereum applications. The results deserve investigation; the broader conclusion still needs testing. (moduluszk.io⁠) What could this mean for zkEVM companies? If zkFOL delivers meaningful advantages in production, companies whose main advantage is proving efficiency could face pressure on pricing and margins. Teams with strong developer relationships, liquidity, distribution and settlement infrastructure may be better positioned to adapt. They could integrate new proving approaches, support a second application model or build services around it. Ethereum compatibility would still have value. A new architecture does not automatically migrate existing contracts, assets and users. For investors, the distinction is crucial: technical success and investment returns are separate questions. A cheaper proving system could create enormous user value while reducing revenue for some infrastructure providers. An incumbent could adopt the technology successfully. A technically impressive newcomer could struggle to attract developers. The questions become: who captures the savings, who owns the customer relationship, and does adoption create revenue or token demand at all? How would a transition likely happen, if zkFOL succeeds? My expectation is gradual adoption: -Independent teams reproduce results and test the security assumptions. -Narrow applications adopt it where expressing explicit rules offers a measurable benefit. -Integrations connect those applications to existing wallets, assets and settlement systems. -Developers choose it for new products; established applications migrate only when the benefits justify rewriting and reviewing them. -Both models coexist, with adoption expanding where the evidence is strongest. This also changes what security review focuses on. A proof can establish that a transaction satisfies the rules you wrote. It cannot establish that you wrote every rule your business needed. Specification mistakes, oracle assumptions and integration failures still matter. 🚨zkFOL deserves serious scrutiny now. Demonstrating a useful new approach is a meaningful achievement before a complete chain ships; establishing production security remains a separate milestone. The industry should be willing to test an architecture that challenges its assumptions. And zkFOL’s strongest case will be made by independent results, useful applications and developers choosing it because it works.
3
17
1
48
935
Blessed By Crypto.444 🩸🩸🩸 retweeted
Replying to @anndylian
@anndylian Exactly. Community first isn’t a slogan - it’s the structure. @wearecultdao launched with no VC, no paid KOLs, no team allocation, and full community ownership from day one. $CULT will be the gas token on @ModulusZK and gets burned on use. The same builders are shipping a ZK L1 where contracts are first-order logic predicates compiled straight into polynomial constraints. No VM, no bytecode - a state transition only happens if a short proof shows the rules hold. That’s “just build.” Stack is public for your review. @ModulusZK want an an L1 audit, but also need funding to do so, if @wearecultdao had gotten more attention, then the DAO could and would easy fund the L1 audit. Reach out to @MrOmodulus for more information! github.com/zkFOL/zkfol/ Docs: docs.moduluszk.io/
2
8
64
Blessed By Crypto.444 🩸🩸🩸 retweeted
Replying to @IvanOnTech
@IvanOnTech @TrustlessState @Davincij15 @AltcoinDaily @AltCryptoGems @scottmelker Request for review: zkFOL does a shallow arithmetization of first-order logic straight into polynomial constraints (no encoding into a VM). The contract is the specification. A transition is only accepted if it can be proved to satisfy the stated predicates. Looking for feedback on soundness of the translation (especially outside the finite models in the paper), the compiler, and the commitment scheme. Repo + paper: github.com/zkFOL/zkfol @benediktbuenz @ronrothblum @drakefjustin @EliBenSasson @zksecurityXYZ @0xJaehaerys
4
16
198
Every major zkVM (RISC Zero, SP1, etc.) still forces you to write code → compile to a VM → emulate that VM inside a circuit → then prove the circuit. zkFOL deletes the middle steps. It compiles first-order logic straight into polynomials. No bytecode. No virtual machine. No execution layer. The rule you write is the rule that gets proved. Same machine. Same fib(10,000) claim. Same algorithm: zkFOL: 4.82 ms | 49.8 KB proof | <10 MB memory RISC Zero: 3.69 s | 210 KB | 312 MB SP1: up to 49 s | 1+ MB | up to 17 GB That’s not incremental. That’s three orders of magnitude on hardware you already own with privacy as a free byproduct instead of an expensive extra layer. Everyone else is still emulating a computer inside a proof system. zkFOL stopped. @ModulusZK #zkFOL #ZK #ZeroKnowledge
2
11
34
725
Anyone interested in a "dead" coin with this chart & a bad ass community, bad ass tokenomics and being a GAS token for new zkFOL privacy tech blockchain [ @ModulusZk ] ? $CULT is the ticker.
7
15
3
56
1,425
Blessed By Crypto.444 🩸🩸🩸 retweeted
Replying to @rstormsf
@ModulusZK works exactly on this. Same dev who gave you @wearecultdao. But doesn’t get any attention, what is weird. Could be because people don’t understand zkFOL.
5
22
202