~/ariceggers/about

possible impossibilities

I want to build systems that build themselves, accelerating and expanding the total energy of our light-cone.

my interests and experiences: full stack development, AI post-training, eval design, RSI, GPU kernel optimization, ZK-STARK provers, cryptography, steganography, audio production, mixing and mastering, lasers and optics, b.s.e. in biomedical engineering from Duke University ( bioelectricity and imaging systems)

zkpow and aipow prover written from scratch in cuda. zk-stark: ~700 proofs/sec on a 5090. ai-pow won block 130,042 + more

ai-pow fleet · 24× rtx 5090 · won block 130,042 and more

the problem

nockchain is hybrid proof-of-work. two independent puzzles currently produce blocks, and they do not share a proving loop. the protocol is built so the work can eventually be a proof of any computation for a zkVM.

zk blocks are won by producing a zk-stark proof of a nock vm execution trace bound to the block commitment and nonce, then hashing selected proof commitments with tip5. if that digest meets the zk difficulty target, it is a zk block.

ai blocks are won by a different computation: integer matrix multiplication. a prepared header binds noised matrices and commitment roots; each (t_rows, t_cols) pair is a ticket ordinal; the gpu searches the full grid; the jackpot must meet a separate difficulty target. if it does, it is an ai-pow block.

what nock is

nock is a minimal combinator calculus that serves as a foundation for an ISA and language over nouns, as described below. hoon, a system level programming language, compiles to nock like other higher-level languages compile to machine code.

data
A noun is an atom or a cell.  An atom is a natural
number.  A cell is an ordered pair of nouns.
noun: [1 [2 3]]

              cell
             /    \
        atom 1    cell
                 /    \
            atom 2    atom 3

every nock program and value is a noun. atoms are leaves; cells are ordered binary branches whose left and right children are the head and tail. nock therefore operates entirely on binary trees.

semantics
Reduce by the first matching pattern; variables match any noun.

nock 4K opcodes
nock(a)             *a
[a b c]             [a [b c]]

?[a b]              0
?a                  1
+[a b]              +[a b]
+a                  1 + a
=[a a]              0
=[a b]              1

/[1 a]              a
/[2 a b]            a
/[3 a b]            b
/[(a + a) b]        /[2 /[a b]]
/[(a + a + 1) b]    /[3 /[a b]]
/a                  /a

#[1 a b]            a
#[(a + a) b c]      #[a [b /[(a + a + 1) c]] c]
#[(a + a + 1) b c]  #[a [/[(a + a) c] b] c]
#a                  #a

*[a [b c] d]        [*[a b c] *[a d]]

*[a 0 b]            /[b a]
*[a 1 b]            b
*[a 2 b c]          *[*[a b] *[a c]]
*[a 3 b]            ?*[a b]
*[a 4 b]            +*[a b]
*[a 5 b c]          =[*[a b] *[a c]]

*[a 6 b c d]     *[a *[[c d] 0 *[[2 3] 0 *[a 4 4 b]]]]
*[a 7 b c]          *[*[a b] c]
*[a 8 b c]          *[[*[a b] a] c]
*[a 9 b c]          *[*[a c] 2 [0 1] 0 b]
*[a 10 [b c] d]     #[b *[a c] *[a d]]

*[a 11 [b c] d]     *[[*[a c] *[a d]] 0 3]
*[a 11 b c]         *[a c]

*a                  *a

nockchain uses nock as its execution layer. nodes run nock to advance the chain state. zk miners prove nock execution of the pow program. ai miners prove dense matmuls for inference. the network verifies the submitted proof instead of repeating the work.

zk proving

base field
goldilocks: p = 2^64 − 2^32 + 1
extension
degree 3 over x³ − x + 1; one felt is three goldilocks elements
hash
tip5: 7 rounds, 16-element state, rate 10, capacity 6, 5-element digest
transcript
tip5 supplies fiat–shamir challenges, merkle commitments, and the final pow digest
stark config
log expansion 6 → 64× low-degree extension; security 50 → 8 spot checks
fri
folding degree 8; a 65,536-element domain folds for 3 rounds
air
194 compute columns, 68 memory columns, 968 constraints
workload
powork(64); the puzzle binds block commitment, nonce, length, and the 64-atom product

the 968 air constraints are 834 compute constraints and 134 memory constraints. the memory traversal pads to 1,024 rows, setting the fri domain to 1,024 × 64 = 65,536 and the proof stream to 71 items. tip5 must be bit-exact: changing it changes every transcript challenge, merkle root, and pow digest.

ai proving

dense inference search evaluates a complete tile grid on the gpu and returns the lowest winning ordinal. the recursive certificate opens only the winning row and column strips. every device winner is revalidated on the host against the scalar evaluator before submission. a valid ai-pow certificate wins an ai-pow block.

search
full-grid pearl tickets; lowest ordinal wins
kernels
fused tensor-core transcript + blake3
proof
compact recursive certificate; winning strips only
devices
persistent per-gpu sessions; contiguous ordinal partitions

system overview

┌──────────────────────────────┐◀──────────────────────┐
│ network node                 │                       │
│ chain state + verifier       │                       │
│ accept → broadcast           │                       │
│ reject → continue mining     │                       │
└──────────────┬───────────────┘                       │
               │  mining templates                     │
               ▼                                       │
┌──────────────────────────────┐                       │
│ rust mining coordinator      │                       │
│ zk jobs and ai jobs          │                       │
└───────┬──────────────┬───────┘                       │
        │              │                               │
        ▼              ▼                               │
┌──────────────┐┌──────────────┐                       │
│ zk proving   ││ ai proving   │                       │
│ cuda stark   ││ cuda pearl   │                       │
│ nock trace   ││ matmul       │                       │
└──────┬───────┘└──────┬───────┘                       │
       │               │                               │
       └───────┬───────┘                               │
               │  candidate proofs                     │
               ▼                                       │
               └─────────────────────▶─────────────────┘

the full node exposes mining templates for both puzzles. the rust coordinator queues zk jobs and ai jobs independently over tcp and dispatches each to its own cuda prover.

zk path: for every nonce the gpu builds and executes pow, synthesizes compute and memory traces, performs the low-degree extension, commits merkle trees, evaluates the air constraints, and computes the pow digest. low difficulty misses stop before the expensive fri phase; hits complete fri and send a jam-encoded proof.

ai path: the gpu keeps a prepared inference template in a persistent session, searches the ordered ticket grid with fused tensor-core work, and returns the lowest winning ordinal. the host revalidates that winner against the scalar evaluator, then builds the compact recursive certificate.

verification

to write a GPU miner from scratch, one must first add logging instruments to the native verifier, and begin validating submissions of proofs until fully valid proofs are produced.

1  instrument the native hoon verifier with stage checkpoints
2  reproduce the proof layout and fiat–shamir transcript exactly
3  implement kernels for execution, traces, commitments, air, and fri
4  compare intermediate hashes and evaluations with the reference
5  generate low-difficulty candidate proofs
6  submit every candidate to the canonical verifier
7  fix the first failing stage
8  repeat until proofs consistently pass

optimization can only begin after the gpu prover repeatedly passes the complete canonical verification path.

optimization

set up a recursive self improvement loop. each performance change must survive the same fixed-seed proof and canonical verification path before its timing is accepted:

  1. identify bottlenecked / regressed kernels with nsys profile
  2. theorize speed changes for bottlenecks
  3. implement speed changes
  4. mine on low difficulty
  5. ensure verifier passes

progress

the zk-stark prover is about 700 proofs/sec on an rtx 5090. the ai-pow prover is a separate cuda pipeline on the same 5090 clusters. it won ai-pow block 130,042:

zk proving
700 proofs/sec on a 5090
ai proving
custom pearl search · won block 130,042 + more

with sufficient funding, the optimization loop can run continuously on a dedicated gpu test farm: generate candidate kernel changes, compile, produce fixed-seed proofs, reject anything that fails canonical verification, profile valid builds, and promote only statistically faster variants. the process can continue until throughput reaches the measured hardware roofline and further gains disappear into benchmark noise. the constraint is gpu time and cost. this was done to improve the zk-prover and ai-prover to competitive network speeds.

llm evaluation at scale, powered by a permissionless prediction market

inspiration

socieital truth is consensus and evolves over time. we will forever have an ever increasing demand for AI response evaluations — anyone submits a prompt, anyone judges, the aggregate is the signal. financialization incentivizes honesty and reduces fraud, and permissionless markets are the most efficient way to aggregate consensus. currently, labs pay armies of tutors to do evaluations, but this cannot scale to meet the future's demand. there needs to be a properly incentivized, permissionless market for evaluations.

how it works

creators can write a prompt, choose two models, and launch a prediction market on a blockchain. this costs a small fee to cover inference. markets run for 24 hrs after launch. users can buy shares for each model. the creator collects associated trading fees, incentivizing viral/focus topics. markets autoresolve, paying out the side with the most shares at the end. there is an autoscaling fee structure as time runs out to discourage sniping. the business aims to break even on market launches, incentivizing users to generate as much novel content as possible, and make its money selling API data access to labs in demand for high entropy evaluations.

┌──────────────────────────────────┐
│ market creator                   │
│ prompt + two models              │
│ pays launch fee                  │
└─────────────────┬────────────────┘
                  │  responses generated
                  ▼
┌──────────────────────────────────┐
│ live duel + crypto market        │
│ side a shares / side b shares    │
└─────────────────┬────────────────┘
                  │  market opens
                  ▼
┌──────────────────────────────────┐
│ participants                     │
│ compare responses                │
│ buy / sell outcome shares        │
│ prices aggregate preference      │
└─────────────────┬────────────────┘
                  │  expiry
                  ▼
┌──────────────────────────────────┐
│ automatic resolution             │
│ highest final share total wins   │
└─────────────────┬────────────────┘
                  │
                  ▼
┌──────────────────────────────────┐
│ incentives + data                │
│ creator → trading fees           │
│ winning traders → payout         │
│ platform → evaluation data / api │
└──────────────────────────────────┘

Demo

next, react , tailwind, postgreSQL db, cloudflare, digital ocean VPS, privy with embedded solana/ethereum wallets

i am xebidiah. xebidaih is the identity policy: a closed-loop post-training stack that puts a model on my distribution and keeps it there unsupervised.

the problem

identity is a distribution over language, memory, and action — not a system prompt. a general model will imitate you for a few turns and then regress to its prior. the work is to construct a private training distribution, hold out real writing, and run generate → score → revise until the policy stays in-distribution without being scripted. that loop is how you train a small specialist. i ran it until the live agent occupied xebidiah.

corpus

i collected a large archive of xebidiah — writing, posts, lyrics, project history, memories, and spoken register — then cleaned it into a structured identity dataset. stable facts were split from ephemeral context. the held-out split is real writing the policy never sees at compose time. those artifacts are the training set for a small identity model; the live agent already consumes them as its prior.

biography
stable facts; the identity prior
lore
memories, project history, mythology
dialogue
turn-level examples of register and syntax
posts
public voice: length, cadence, taboo
topics
recurring interests as a sampling prior
style
tone, syntax, and hard boundaries as constraints
eval
held-out posts and conversations for scoring drift

training loop

each iteration treats the current policy as a generator against a frozen eval set. failures become preference data: the rejected generation paired with a source-faithful rewrite. those pairs go back into the identity model as counterexamples and tighter constraints. it is the same data flywheel you run to sft / dpo a small specialist — corpus, targets, preference pairs, evals — executed until generations stayed on-distribution without being puppeteered.

┌──────────────────────────────┐
│ private identity corpus      │
│ bio / lore / dialogue / posts│
└──────────────┬───────────────┘
               │  sample + compose
               ▼
┌──────────────────────────────┐
│ policy                       │
│ generate language + action   │
└──────────────┬───────────────┘
               │  score vs held-out
               ▼
┌──────────────────────────────┐
│ eval + preference mining     │
│ reject / rewrite / tighten   │
└──────────────┬───────────────┘
               │  update identity prior
               └──────────▶────────┘
  1. collect and clean the private identity corpus
  2. split stable identity from ephemeral context; hold out real writing
  3. encode biography, lore, dialogue, posts, topics, and style constraints
  4. compose a sampled subset with conversation, memories, and the current event
  5. generate; score against the held-out source distribution
  6. mine failures into preference pairs and tighten the identity model
  7. repeat until the policy stays in-distribution without being scripted

agentic structure

each cycle composes sampled biography and lore with style rules, example posts, topics, a 32-message conversation window, relevant memories, goals, and the current event. the model returns both language and an optional action; the runtime matches the action name and dispatches its handler. memory and embeddings live in sqlite, while randomized recursive timers drive posts, mentions, and messages.

fun mechanics

puzzles get published via songs by xebidiah (me). using a custom steganography plugin, inaudible codes are embedded into audio bitstreams. people attempting solutions dm the agent the code and a wallet address. the agent validates and dispenses tokens on-chain. no human in the loop.

interfaces

a custom x client gives the agent persistent sessions, inbox polling, queued requests, rate-limit backoff, and message deduplication. a dm prompt preserves the persona while extracting a puzzle code and wallet when present. valid claims become signed token transfers, but deterministic code—not the model—enforces single-use keys, fixed reward tiers, and recipient checks.

runtime is a fork of elizaos. the identity dataset, eval loop, action wiring, x dm pipeline, and reward gating are original.

spacexai — audio engineer

remote · aug 2024 – aug 2026

  • post-training for Grok Voice
  • evaluation design
  • voice mixing, mastering, and recording

self employed — artist

texas city, tx · may 2022 – aug 2024

  • produced, mixed and mastered music — https://xebidiah.com
  • ran local stable-diffusion pipelines for commissioned digital artwork (pytorch)

planmeca — product development engineer, laser optics lab

richardson, tx · jan 2021 – may 2022

  • r&d engineering studies for a class ii medical device
  • designed and tested a pico-projector system for 3d scanning (zemax) — cut optics cost 90%
  • built and tested prototypes, ran root cause analysis
  • improved camera calibration using dhe and levenberg–marquardt optimization (c++)

duke bme design symposium — optical engineer

durham, nc · jan 2020 – apr 2020

  • led ideation and engineering for the team
  • designed the optical system for a portable retinal camera (zemax)
  • defined iso/ansi constraints and validated in simulation (matlab)
  • 80% lower production cost than market leaders

planmeca — product development intern

richardson, tx · jun 2019 – aug 2019

  • designed a driver board for vcsel feasibility testing (altium)
  • designed 3d calibration phantoms for a ss-oct system (solidworks)

duke university - b.s.e. biomedical engineering : imaging systems & bioelectricity

durham, nc · aug 2016 – apr 2020

  • data analysis, linear algebra, differential and partial equations, signals and systems, microcontroller design, monte carlo methods, biophotonics, ray optics, imaging systems.

can build in anything. preferences:

rust
high performance single threaded systems
cuda
stark provers, highly-parallel systems
c++
microcontrollers, embedded systems, firmware
typescript
ai agent tooling
javascript
static front ends
leptos
webapp frontends
diesel
postgreSQL databases
hoon
nockchain formal language
zemax
optical design
extras
altium, solidworks, labview, C, python, etc. anything.

AI has abstracted syntax. one's choice of language should be optimized for the problem at hand, not bound by the tools they have used in the past...