Docs
What Ponzym is, how the library was built, how a pose is searched for and scored, what the contract checks before it believes one, where the method is blind, how a challenge pays out, and a glossary.
Overview
Biology has already evolved catalysts for an extraordinary range of reactions. Finding the right enzyme for a specific job is the harder part. Ponzym turns that search into an open competition where every result is recomputed on Robinhood Chain instead of taken on trust.
A sponsor posts a reaction they want an enzyme for: one substrate, an enzyme class, the temperature and pH the job has to survive, and what a good answer looks like. Anyone can then pick a structure from the enzyme library, search in their own browser for a pose that puts that substrate into the active site, and pay a small fee to have the contract prove the geometry and recompute the binding free energy. The best proven result by the deadline takes the pool.
The library holds 100 enzyme structures from the RCSB Protein Data Bank and 118 substrates, spread across all seven EC classes and grouped by the twelve industries listed below. Everything that counts is on chain: the pose, the score, who submitted it, when, with which search settings, every review and every payout.
The loop
- Define. A sponsor posts a reaction: the substrate, the enzyme class, the temperature and pH the job has to survive, and what a good answer looks like. They fund the pool.
- Search. You pick an enzyme and run the search in your own browser. The best pose so far moves in the viewer while it runs, and nothing is sent anywhere yet.
- Prove. You pay 0.0001 ETH and submit. The contract checks the geometry atom by atom and recomputes the binding free energy itself.
- Lead. If it is the best proven result on that challenge, it takes the lead, publicly, with the pose and the method attached.
- Reward. At the deadline the pool goes to the leader. If nobody won, every funder reclaims exactly what they put in.
- A score is a binding estimate. It says the substrate fits the active site.
- Binding is not catalysis. It does not tell you the enzyme turns the substrate over, or how fast.
- A challenge's temperature and pH are the sponsor's requirement, not an input to the score.
These three sentences travel with every score on this site. They are the difference between a useful shortlist and a lie.
What is claimed here
That the structures are real experimental entries from the RCSB Protein Data Bank, with their EC number, organism, resolution and the bound ligand that defines the active site. That the pose search runs in your browser and costs nothing. That the contract re-proves the pose atom by atom and recomputes the score itself, so the number on the leaderboard is the chain's own arithmetic. That two people who run the same search with the same settings and the same seed get the same pose, and the chain agrees with both.
What is not claimed here
That a good score means the enzyme catalyses the reaction. That it predicts kcat, KM, turnover, yield or stability. That any result here has been tested in a laboratory, by Ponzym or by anyone else. That the engine reproduces the numbers of the AutoDock Vina program. That anything on this site is a discovery, a validation, medical advice, or investment advice. What a strong score buys is a shortlist: a place for a laboratory to start, with the work already reproducible.
How it works
Each enzyme in the library is an experimental structure. Its active site is defined at build time from the reference ligand that was bound in the crystal: a box around that molecule padded by 2 A on each side, at least 6 A of half size on every axis, and every receptor heavy atom within 8 A of that box. Metal ions in the site are kept and typed, which matters a great deal for enzymes. The pocket bytes and the box are hashed, and the hash is registered on chain, so the site a pose is scored against cannot change underneath it.
Each substrate is a heavy atom topology derived from its chemical component record or its PubChem 3D record: atoms, bonds, ideal bond lengths, 1-3 distances and rotatable bonds. Hydrogens are not represented. That topology is registered on chain too.
When you dock, a seeded stochastic pose search runs in a Web Worker in your browser. It moves, turns and twists the substrate inside the box and keeps the best poses it finds. The search follows a docking method, which is a preset such as Quick, Standard or Deep, or your own JSON. The same seed and the same method give the same pose on any machine. The final pose is always evaluated by the integer scorer, the same function the contract runs. Nothing is sent anywhere during the search.
A docking test is the chain step. You submit the pose with its payment, the contract checks the geometry, recomputes the score and emits an event carrying the whole pose and the method. From then on the site shows the chain's number, and every test has its own report page at /run?id=N where anyone can rebuild it.
The library
The library is curated, not scraped. A structure earns a place only when the active site it offers is good enough to dock into, and the reason it was chosen is recorded with it.
How the 100 enzymes were chosen
- An experimental structure, not a model. 98 of the hundred were solved by X-ray diffraction and 2 by electron microscopy. Nothing predicted or minimised is in the library.
- Resolution 2.8 A or better. Below that, side chain positions in the active site stop being trustworthy and the box would be drawn around noise. The worst structure that survived is 2.63 A, the median is 1.60 A and the sharpest is 0.85 A.
- A ligand really bound in the active site. Every entry carries a co-crystallised molecule whose distance to the chain the pocket is built from was measured from the coordinates, not taken from an annotation: its nearest heavy atom has to sit within 6.0 A of a backbone alpha carbon of that chain. The furthest of the hundred is 5.3 A, so every one of them clears the rule with room to spare. A ligand parked in a crystal packing contact elsewhere on the surface would define a box that is not a catalytic site, and is refused.
- All seven EC classes. An enzyme network that only held hydrolases would be a hydrolase network.
- A reason, written down. Every entry says what the enzyme does and why that structure was taken, and links straight to its RCSB page so you can check.
| EC class | Enzymes | What the class does |
|---|---|---|
| 1 | 15 | Oxidoreductases. They move electrons, usually with a cofactor carrying the hydride. |
| 2 | 16 | Transferases. They move a chemical group from one molecule to another. |
| 3 | 21 | Hydrolases. They cut a bond with water. |
| 4 | 16 | Lyases. They add to or remove from a double bond without water and without oxidation. |
| 5 | 14 | Isomerases. They rearrange a molecule into an isomer of itself. |
| 6 | 12 | Ligases. They join two molecules, paying with a nucleoside triphosphate. |
| 7 | 6 | Translocases. They move something across a membrane. |
100 structures from 75 organisms, from thermophilic bacteria to human. Browse the enzyme library.
What refRole means, and why a cofactor site is weaker
Every entry names the role the bound reference ligand played in that crystal, because that role is how much the box can be trusted. The box is only ever as good as the molecule it was drawn around.
| refRole | Enzymes | What was in the crystal | How good a guide the box is |
|---|---|---|---|
| substrate | 27 | The molecule the enzyme actually acts on, caught before turnover. | The best case. The box is the working site. |
| analog | 30 | A close copy built so it cannot react, which is how a substrate site is usually trapped. | Very good. It sits where the substrate sits. |
| inhibitor | 28 | A molecule that blocks the enzyme. | Usually good, because most inhibitors block by occupying the site, but an allosteric one does not. |
| product | 13 | What comes out of the reaction, still in the site. | Good. The product leaves from where the chemistry happened. |
| cofactor | 2 | The helper molecule the enzyme needs, such as NAD or a flavin, rather than the substrate. | The weakest. Read the paragraph below. |
A cofactor-defined site is weaker for two reasons that compound each other. First, the cofactor is not the substrate: it binds in its own sub-pocket, often a long nucleotide arm reaching away from the catalytic centre, so a box drawn around it is centred next to the place a substrate goes rather than on it. Second, Ponzym drops organic cofactors when it builds the pocket, along with every other hetero group, so the receptor atoms in that box no longer include the very molecule that defined it. What is left is a cavity shaped by the absence of the cofactor. A substrate can sometimes be posed into it and score well, and that score means less than the same score on a substrate-defined site. Two of the hundred are in this position and both say so on their own page.
The twelve industries
Every enzyme and every substrate carries the industries it matters to, and a molecule may belong to several. They are how the library is filtered, how the leaderboard is grouped and how the network report is compiled.
| Industry | Enzymes | Substrates |
|---|---|---|
| Pharmaceutical synthesis | 62 | 66 |
| Sustainable manufacturing | 24 | 44 |
| Food and beverage | 26 | 41 |
| Agriculture | 21 | 28 |
| Diagnostics | 22 | 24 |
| Biofuel | 13 | 24 |
| Paper and pulp | 5 | 11 |
| Waste treatment | 5 | 8 |
| Textiles | 5 | 6 |
| Carbon capture | 2 | 6 |
| Detergents | 3 | 2 |
| Plastic degradation | 2 | 3 |
Counts of what is registered on chain today. The thin columns are thin because few solved structures exist for that work, which is itself the interesting part.
The 118 substrates
A substrate needs 3D coordinates before it can be posed. 105 of the 118 come from the RCSB chemical component dictionary, which is the same source as the crystals, and 13 come from PubChem 3D where no chemical component record exists. 72 are true substrates of an enzyme in the library, 26 are the products of one of those reactions, 13 are analogs, one is a reaction intermediate, and 6 are model fragments.
A model fragment stands in for a polymer. Cellulose, starch, xylan and polyethylene terephthalate do not fit in an active site box and never will, so the catalog carries the repeating unit that does: cellotriose for cellulose, maltotriose and maltotetraose for starch, xylobiose for xylan, and two terephthalate diesters for the plastic. Every one of them says so on its own page. A score on a fragment tells you about the sub-site that grips one unit, and nothing about processivity along a chain. Browse the substrate library.
Scoring explained
The score is an empirical estimate of binding free energy in kcal/mol. More negative means the substrate sits more comfortably in the active site. It sums five terms over every substrate atom and receptor atom pair within 8 A, using the surface distance d, which is the centre distance minus both atom radii.
- gauss 1: a narrow bell around d = 0. It rewards close contact.
- gauss 2: a wide bell around d = 3 A. It rewards being near the surface at all.
- repulsion: d squared when d is negative. It punishes overlap.
- hydrophobic: 1 when two hydrophobic atoms touch, fading to 0 at 1.5 A apart.
- hydrogen bond: 1 when a donor and an acceptor are close, fading to 0 at d = 0.
| gauss 1 | -0.0356 |
| gauss 2 | -0.00516 |
| repulsion | 0.840 |
| hydrophobic | -0.0351 |
| hydrogen bond | -0.587 |
Weights in kcal/mol per unit term. Divided by 1 + 0.0585 x rotatable bonds.
These five weights are the ones Trott and Olson fitted on about 1,300 complexes of the PDBbind set (AutoDock Vina, J Comput Chem 2010). Ponzym's engine is an independent implementation of that family of functions, which this site calls Vina-style. It shares the functional form and the published weights. It is not the AutoDock Vina program, it was not derived from its source, and it makes no claim to reproduce its numbers on any given complex. Where a paper reports a Vina score, treat the two as different measurements of the same idea.
The rotor penalty
The weighted sum is divided by 1 + 0.0585 times the number of rotatable bonds. A flexible molecule has more ways to be wrong, so it pays entropy to hold any one pose, and without the penalty the search would simply prefer whatever had the most limbs to arrange. The substrates in the library run from 0 to 16 rotatable bonds, so this term is the difference between a fair comparison and a ranking of molecular size. It also means a score is not comparable across molecules of very different flexibility without saying so, which is what ligand efficiency is for.
Fixed point, because the chain has to agree
Floating point cannot be part of a consensus. On chain everything is integer: coordinates in hundredths of an angstrom, squared distances as exact integers, the square root from a lookup table, the two bell terms from lookup tables, energies accumulated in micro kcal/mol and reported in milli kcal/mol. The whole table file is hashed and registered with the contract. The JavaScript scorer in your browser and the Python reference in the repository are bit exact copies of the contract's arithmetic, proven against a shared vector file, so the browser can predict the chain's answer before you pay for it.
The display quantities
Three numbers are shown next to a score and all three are derived from it, so all three carry its uncertainty and none of them is an independent measurement.
| Quantity | From | What it is for |
|---|---|---|
| dG | The chain's score, recorded in milli kcal/mol and shown in kcal/mol. | The one number the contract computed. Everything else here comes out of it. |
| pKd | -dG divided by RT ln 10, at 298.15 K. | A log scale that is easier to hold in the head. 6 is one micromolar, 9 is one nanomolar. |
| Kd | 10 to the power of -pKd, in molar units. | The concentration language a bench uses. An estimate, never a measurement. |
| LE | -dG divided by the heavy atom count. | Binding per atom. It is how a small molecule that binds well for its size beats a large one that does not. |
Score bands
A dG on this site is drawn on the brand's own ramp, palest for the strongest binding and deepest for the weakest, and the word and the number are always next to the colour so the colour is never the only signal. There are four display bands: strong at or below -9 kcal/mol, moderate between -9 and -6, weak between -6 and 0, and no binding at zero or positive. Display bands only. The chain records the exact value in milli kcal/mol, and a band never means the enzyme turns the substrate over.
Atom types
Sixteen heavy atom types in the X-Score and Vina tradition. A carbon next to a heteroatom is a polar carbon, otherwise it is a hydrophobic carbon. A nitrogen is a donor when it carries hydrogen and an acceptor when it has an available lone pair. Every oxygen accepts, and a hydroxyl oxygen donates as well. Halogens are hydrophobic. Metal ions in the active site are kept and typed as donors, which for an enzyme library is not a detail: the zinc, magnesium, manganese, iron and other ions that sit in catalytic sites are part of what a substrate is binding to.
What the chain checks
A pose is a list of heavy atom positions in hundredths of an angstrom, relative to the centre of the active site box. Before the contract will score it, five checks run in a fixed order, and the first failure decides the answer. The order is part of the contract, so the reason you get back is always the same reason.
| Code | Name | What it proves |
|---|---|---|
| 1 | ATOM_COUNT | The pose carries exactly the substrate's heavy atoms, in the order the registered topology fixes. You cannot submit a different molecule, or the same one with an atom left out. |
| 2 | BOX | Every atom is inside the active site box. You cannot score by parking the molecule somewhere friendlier on the protein. |
| 3 | BOND | Every bonded pair sits at its ideal distance within tolerance. The bonds are still the bonds. |
| 4 | PAIR13 | Every pair one atom apart holds its ideal 1-3 distance, so the bond angles are still the angles. With the bonds, this fixes the whole rigid frame of the molecule. |
| 5 | CLASH | No two atoms three or more bonds apart come closer than the clash floor. The molecule is not folded through itself. |
Only then does it score, against the receptor atoms of the registered pocket bytes. A pose can therefore score well only by really fitting the site.
The numbers: tolerance for a bonded pair and a 1-3 pair is 0.06 A plus two percent of the ideal distance, which covers the rounding into hundredths of an angstrom with a wide margin and absorbs float drift along a long torsion chain, and is deliberately far too tight to admit a different conformer. A 1.53 A bond gets about 0.09 A of room. The clash floor is 2.20 A for every pair three or more bonds apart. The box is the reference ligand's bounding box padded by 2 A on every side, with a half size of at least 6 A.
The proof runs on distances alone, which has one consequence worth stating here rather than burying it: a mirror image of a valid pose has exactly the same distances, so the checks cannot tell the two apart. See the limits below.
Every test report page re-runs the same integer function in your browser on the pose stored in the event and shows Chain and browser agree, or both numbers when they do not, in which case it is a bug and it should be reported.
Limits
This is the section to read if you are deciding whether to spend laboratory time on something you found here. Everything below is a real gap between what the engine computes and what a bench would measure. None of it is fixable by running the search longer.
The receptor is rigid
The pocket is frozen exactly as it sat in the crystal. Real active sites breathe: side chains rotate to admit a substrate, loops close over it, and some enzymes only form the site at all once something is in it. A rigid pocket therefore rejects molecules a real enzyme would accept after a small rearrangement, and it can equally flatter a molecule that happens to suit one particular frozen arrangement. Induced fit is the single largest thing this method does not model.
Waters are dropped
Crystallographic waters are removed before the pocket is built. Structural waters that bridge a substrate to the protein are part of real binding, and where one of them matters the estimate is wrong in a direction that is hard to predict: removing a bridging water can cost real binding the score never sees, while leaving the space it occupied empty can invent room that is not there.
Organic cofactors are dropped when the pocket is built
Metal ions are kept and typed. Organic cofactors are not: NAD, NADP, flavins, heme, pyridoxal phosphate and the rest go with every other hetero group. For a great many enzymes the cofactor is half of the chemistry and part of the wall the substrate binds against, so its absence leaves a cavity larger and less specific than the real one. Every entry records that its site was built this way, and an entry whose site was defined by a cofactor in the first place says so twice.
Mirror images are not distinguished
The geometry proof uses distances only, and an enantiomeric pose preserves every distance. The contract will therefore accept the mirror image of a valid pose and score it identically. Enzymes are the most stereoselective catalysts known, so this is exactly the property a real active site cares most about and exactly the one the proof is blind to. A score does not tell you which enantiomer you posed.
Temperature and pH are not modelled
A challenge records the temperature and the pH the job has to survive because they are the sponsor's requirement, and the site shows them next to every result. The scoring function does not read them. It has no term for protonation state, no term for thermal stability, no solvent and no ionic strength. An enzyme that binds a substrate beautifully in this estimate may be denatured at the temperature the process runs at, or may have a catalytic residue in the wrong protonation state at that pH. Closing that gap is laboratory work.
A bridged bicyclic molecule can be rejected no matter how it is posed
This one was measured on this project and is worth stating plainly, because it is a limit of the proof rather than of the chemistry.
The clash floor says that any two atoms three or more bonds apart in the bond graph must stay at least 2.20 A apart. That floor is a good rule for an ordinary molecule, where being far apart in the bond graph means being free to swing apart in space. A bridged bicyclic cage breaks the assumption. In a bicyclo[3.3.1] system the two bridges hold atoms rigidly face to face across the cage: they are many bonds apart by the graph and about 2 A apart in space, and no torsion exists that could separate them, because there is no torsional freedom there at all. The floor assumes a freedom the cage does not have, so it reads a normal, real geometry as interpenetration.
One substrate hit this exactly. TSA, a bicyclo[3.3.1] compound, holds atom pairs at 1.97 to 2.12 A that the bond graph puts three or more bonds apart. It was run against a roomy pocket with the reference search and never produced a pose the integer checks would accept, in any conformer, at any position in the box. It was not assumed undockable, it was proven undockable and then removed from the catalog, so that nobody pays a fee for a test that cannot succeed. The measurement is kept in data/catalog/undockable.json with the date and the run that established it.
Raising the floor is not the fix. A floor above 2.20 A rejects ordinary flexible molecules in their own correct geometry, because real intramolecular hydrogen bonds and close methoxy contacts sit between 2.28 and 2.39 A. The honest answer is that this engine does not handle bridged bicyclics, and the catalog says which molecules that excludes.
And the one that contains all the others
Binding is not catalysis. Everything above is about how well a binding estimate is computed. Even a perfect binding estimate would not tell you the enzyme turns the substrate over, in which direction, at what rate, or with what selectivity. A score puts a structure on a shortlist. A laboratory decides.
Challenges
A challenge is a sponsor's job description, funded. It names one substrate, an enzyme class or any class, the temperature in whole degrees C and the pH the job has to hold, how many epochs it stays open, a title and a goal in plain words, and a pool that anyone may add to.
The conditions are recorded because they are what a real answer has to survive, and they are shown next to every result on that challenge with the line that the score does not model them. The contract never uses them in any comparison. They are the sponsor's requirement, not an input.
How a run becomes the lead
The challenges contract cannot be called from inside the lab's submit, so it cannot watch runs as they land. The lead is claimed instead, and anyone may claim it for anyone: a watcher, the site, or the runner. A claim is accepted only when the challenge exists and is not settled, the run named this challenge when it was submitted, the run's substrate is the challenge's substrate, the enzyme's EC class matches the challenge's class or the challenge accepts any class, the run landed inside the window, and the score beats the current lead. The site claims automatically right after a run that takes the lead, and the dashboard shows any lead that has not been claimed yet, so on the ordinary path nobody has to think about it.
Eligibility is decided by run number, not by the clock. The challenge records the lab's run counter at the moment it was created and only accepts runs after it, which is unambiguous even on a chain with sub-second blocks. The upper bound stays a time and it is inclusive, so a run mined in the closing second still counts.
The claim window
Entries shut at the deadline, or earlier if the sponsor closes the challenge. Claims stay open for one more day after that, and settlement is refused until the day has passed. That gap exists for a reason: without it, anyone could claim a mediocre run and settle it in the same transaction before the real winner ever claimed, and a sponsor could do the same into their own refund. An early close moves the end of the window but never removes the extra day, so closing can never be used to settle ahead of a claim.
Every pose is public, and a tie goes to the earlier run
Every pose is submitted as public calldata and re-emitted in the event that records it. Anyone can read a recorded pose and submit it again. They cannot beat it, only equal it, so the comparison is built to make copying pointless: an equal score from a lower run number displaces the current lead. A copy always has a higher run number than the run it copied, so it can never take that lead, whoever claims first.
Settlement, and what happens when nobody wins
Once the claim window has passed, anyone may settle. With a claimed best, the pool goes to that wallet minus the fee, which goes to the treasury. Settling twice is refused. Transfers go last with a gas allowance, and a refused transfer is credited to a balance the recipient can withdraw.
With no claimed best, nobody won, and then every funder takes back exactly their own contribution. Not the sponsor: every funder. A challenge can be funded by anyone, so refunding the whole pool to the sponsor would hand third-party money to the sponsor and would give a sponsor a reason to make their own challenge unwinnable. The contract therefore records what each address put in, takes no fee when nobody won, moves no money in the settle itself, and lets each funder reclaim their own contribution once. An unwinnable challenge returns exactly what everyone put in, so forcing that outcome gains the sponsor nothing.
Sponsor updates
A sponsor may attach dated notes to their own challenge, which are recorded on chain and shown under Sponsor updates. They are the sponsor's statement about what they did next, they are shown as such, and Ponzym does not verify them. A note stops being possible once the challenge is settled, because its record is closed.
Researcher names are self-chosen and are not unique. No surface on this site presents a name as identity: wherever a name appears, the wallet appears next to it.
The challenges contract is deployed after the lab, holding the lab's address. Where the site has nothing to show yet it says so plainly rather than filling the space.
Docking methods
The scoring function is fixed: it is the test. The search that prepares a pose is configurable through a method, a JSON object the engine validates against the schema below. Unknown keys are rejected with the key named, and values outside their bounds are rejected with the bound named. Every missing field takes its default, and a run echoes the resolved method, so a pose is reproducible from the method plus the seed. The lab records the compact JSON with the test, and the test page shows it with a Use this method link.
| Field | Values | Default | What it does |
|---|---|---|---|
| name | text | Standard | The label shown in the lab and on the test page. |
| version | 1 | 1 | The schema version. |
| budget | { ms: 5000 to 120000 } or { steps: N } | { ms: 30000 } | How long the search runs, in milliseconds or in steps. Steps is the reproducible form. |
| chains | 1 to 32 | from the budget | Restarts: independent Monte Carlo chains that share the budget. |
| temperature | 0.1 to 5 | 1.2 | Metropolis kT in kcal/mol. Higher accepts more uphill moves. |
| moves.translate | 0.05 to 5 | 1.0 | Largest translation per move, in angstrom. |
| moves.rotate | 1 to 180 | 20 | Largest rigid rotation per move, in degrees. |
| moves.torsion | 1 to 180 | 60 | Largest torsion turn per move, in degrees. |
| local.steps | 0 to 300 | 30 | Local optimisation steps after each move. |
| placement | box or center | box | Where a chain starts: anywhere in the box, or near its centre. |
| flexible | true or false | true | False keeps the substrate rigid, torsions frozen at the ideal conformer. |
| candidates | 1 to 16 | 4 | Poses kept for the integer polish at the end. |
| lattice | true or false | true | Integer lattice moves in the polish, on the chain's own scorer. |
| seed | 0 to 4294967295 | filled by the lab | The seed of every random choice. Same seed, same pose. |
Presets
Seven presets ship with the engine. Each is a complete method: pick one in the lab, then edit the JSON if you want.
| Preset | What changes |
|---|---|
| Quick | About 10 seconds of search. |
| Standard | About 30 seconds. The defaults above. |
| Deep | About 90 seconds. |
| Rigid substrate | Torsions frozen at the ideal conformer. |
| Wide search | More chains, larger moves, shorter local optimisation. |
| Fine local | Fewer chains, small moves, long local optimisation. |
| Reproducible | A step budget instead of milliseconds, so a run replays exactly anywhere. |
{ "name": "Standard", "version": 1,
"budget": { "ms": 30000 },
"chains": 8, "temperature": 1.2,
"moves": { "translate": 1.0, "rotate": 20, "torsion": 60 },
"local": { "steps": 30 },
"placement": "box", "flexible": true,
"candidates": 4, "lattice": true,
"seed": 7 }
Payment
The search is free and runs on your own machine. A docking test is the chain step and costs 0.0001 ETH, or 100 $PONZYM once the token has launched, plus gas. The payer chooses in the lab. Either way it goes to the lab treasury, not to a prize pool. The contract takes the ETH with the transaction, or pulls the token from the connected wallet after an approval.
While $PONZYM is not launched the token option is off: the lab shows it as after the $PONZYM launch and only the ETH option works. The owner can change either price and switch either option on or off, and the lab always reads the current values from the contract rather than from this page.
Reviewing a test costs gas only. Sponsoring a pool costs gas plus the amount you send. Claiming a lead and settling cost gas only.
Two kinds of pool exist and they are not the same thing. A challenge pool belongs to a sponsor's reaction and pays the best proven result on that challenge at the deadline, as described above. A per-enzyme pool belongs to one structure and settles every seven days: anyone can fund it, and at the end of an epoch anyone can settle it, which pays the wallet with the best score recorded on that structure during the epoch, minus the lab fee. With no test in the epoch the pool rolls over.
The prices are read from the contract and shown in the lab before you pay.
Reviews
Every docking test has a report page, and any wallet other than its author can review it there: one to five stars and a note of at most 280 characters, plain text, stored on chain with the reviewer's address. A review costs gas only. A second review by the same wallet on the same test replaces the first. The test page shows the average, the count and the list newest first, the leaderboard lists the most reviewed tests, and the dashboard lists the reviews you received and the ones you wrote.
Notes are shown exactly as written, as text. Nothing in a note runs on this site. A review is one researcher's reading of another's work and it is not a verification of anything.
Levels and badges
XP is computed in your browser from chain data, so anyone can recompute it and nobody has to trust a server for it. The rules:
| XP | For |
|---|---|
| 10 | per docking test |
| 5 | per distinct enzyme tested (the first time) |
| 15 | per test that becomes the best on its enzyme when it is recorded |
| 3 | per review written |
| 5 | per review received with 4 or 5 stars |
| 25 | per epoch won |
| 5 | per enzyme sponsored (the first time) |
| Level | From |
|---|---|
| Observer | 0 |
| Assistant | 50 |
| Researcher | 150 |
| Senior Researcher | 400 |
| Principal Investigator | 900 |
| Lab Head | 2000 |
A level says how much work a wallet has recorded here. It is not a credential and it says nothing about the quality of the science.
Badges
- First test
- One docking test recorded.
- Ten tests
- Ten docking tests recorded.
- Fifty tests
- Fifty docking tests recorded.
- Ten enzymes
- Tests on ten distinct enzymes.
- Strong binder
- A test at or below -9 kcal/mol.
- Best on an enzyme
- A test that holds the best score on its enzyme.
- Epoch winner
- An epoch settled in your favour.
- Sponsor
- A prize pool funded.
- Reviewer
- Five reviews written.
- Well reviewed
- An own test with three or more reviews averaging 4 or better.
AI analysis
Every test report page offers a reading of that test by a language model: Claude, GPT, Kimi or Jev AI, whichever keys are configured on the server. A provider without a key shows as not connected and cannot be picked. With no key at all the block is switched off, because nothing is ever shown here that a model did not write.
What is sent to the model: the enzyme and its PDB id, its EC number, the substrate, the chain's score and the derived numbers, the five terms, the geometry proof, the docking method, the challenge and its conditions when there is one, and the other tests on that enzyme. The model is asked to interpret the score in plain words, to name the limits of a rigid receptor Vina-style estimate, to say what the unmodelled temperature and pH mean for this particular answer, to suggest the next computational step and the next experimental one, and to label any literature it recalls as unverified.
The text is the model's and nobody checks it. It is not Ponzym's reading, it is not a citation, and a model that recalls a paper may be recalling one that does not exist. Keys never reach the browser: the request goes to this site's server, which holds the keys and talks to the provider. Ten analyses per minute per server instance.
The author of a test may attach an analysis to the record on chain, up to 2048 bytes, and a later one replaces it. An attached analysis is public and is shown to everyone on that test page with its provider and model and the date it was written. An analysis that is not attached is shown only to the person who generated it, in that session.
Post on X
The test page and the dashboard offer Post on X: a link to X's composer with a prepared text and the test's URL. The text names the test number, the substrate, the enzyme and its PDB id, the estimated binding free energy, and that the test was proven on Robinhood Chain, and it carries the sentence that binding is not catalysis. When an analysis is attached, its opening follows, labelled with the model that wrote it. Nothing is posted until you press Post in X. No emoji, no dashes, no address.
What is and is not claimed
Claimed. The structures are real experimental entries from the RCSB Protein Data Bank and every card links to the entry so you can check it. The pose search runs in your browser and costs nothing. The score is an integer Vina-style estimate that the contract recomputes for itself after proving the geometry. The record is on Robinhood Chain and this site is rebuilt from it. A challenge pool pays the best proven result by the deadline, and a per-enzyme pool pays the best score of the epoch. Reviews and attached analyses are on chain exactly as they were written.
Not claimed. That a strong score means the enzyme catalyses the reaction, or works at the temperature or pH of the job. That any number here predicts kcat, KM, turnover, yield, selectivity or stability. That anything here has been tested in a laboratory: no wet lab happens on this site, by Ponzym or for Ponzym. That a sponsor's update about work they did elsewhere has been verified by Ponzym. That the engine reproduces the AutoDock Vina program. That a score is more than a starting point for characterization. Nothing here is medical advice and nothing here is investment advice.
The language this site uses is deliberate: computational screening, an estimated binding free energy, a candidate enzyme for characterization. Never a discovery, never a validation, never a cure, and never that a model found an enzyme. AI modeling is the name of the field, which is what computer-aided molecular design is. It is never a claim about what a result means.
Wallet and network
Ponzym runs on Robinhood Chain, chain id 4663, with gas paid in ETH. You do not need a wallet to browse the library or to run a search: connect one only when you want the chain to prove and record a pose. Connect with any injected wallet. If the wallet is on another network the site asks it to switch, and if the wallet does not know the chain, add it with the parameters below.
- Network name
- Robinhood Chain
- Chain id
- 4663
- Currency
- ETH
- RPC
- https://rpc.mainnet.chain.robinhood.com
- Explorer
- https://robinhoodchain.blockscout.com
Browser reads go through this site's own proxy at /api/rpc, so no page talks to a third party node directly. Your wallet sends its own transactions and this site never holds a key.
The test prices, the lab fee and the epoch length are read from the contract and shown in the lab and on every enzyme page.
API
The site exposes read-only JSON endpoints under /api for the runs index, the status and the network report, and a same-origin JSON-RPC proxy for chain reads. The catalog files under /data are static and may be fetched directly. None of them carries an app contract address.
GET /api/status
The lab status as JSON: live, epoch, epochStart, epochEnd, epochLength, runFee (wei), runPrice (token base units), feeBps, token, runCount, targetCount, ligandCount, poolTotal (wei).
GET /api/runs?target=&ligand=&wallet=&limit=&offset=
The docking tests rebuilt from chain events, newest first, cached for about ten seconds. JSON with runs, total and head. Each run carries id, wallet, targetId, ligandId, scoreMilli, epoch, time, block, tx and the pose. The query keys keep the engine's own words for the two bodies.
GET /api/analyze POST /api/analyze
GET lists the analysis providers with connected true or false, and never a key. POST with { runId, provider } returns { provider, model, text, generatedAt }: the model's real answer for that test, cached per test and provider, ten per minute per instance.
GET /api/report.md
The network report as Markdown, the same data as the report page: the best computational binders by industry, compiled from chain data.
POST /api/rpc
A JSON-RPC proxy to Robinhood Chain for read methods only (eth_call, eth_getLogs, eth_blockNumber and the like). Batches of up to five calls. Write methods are refused, because wallets send their own transactions.
GET /data/catalog/targets.json GET /data/catalog/ligands.json
The curated catalogs: every enzyme with its PDB id, EC number and name, organism, method, resolution, chain, the reference ligand that defines the active site, its role, the industries and the DOI; every substrate with its class, reactions, formula, weight, heavy atoms, rotatable bonds, industries and the provenance of its coordinates.
GET /data/catalog/undockable.json
The molecules that pass every catalog check and still cannot produce a pose the chain will accept, with the measured reason and the run that proved it. Today it holds one entry, the bridged bicyclic described under Limits.
GET /data/registry.json GET /data/pockets/<PDB>.bin GET /data/topologies/<KEY>.bin GET /data/substrates/<KEY>.sdf
The registry with chain ids, pocket and topology hashes, plus the bytes exactly as they were registered on chain and the heavy atom SDF of each substrate in topology order. Anyone can rebuild a score from these alone.
curl -s https://ponzym.bio/api/status
curl -s "https://ponzym.bio/api/runs?limit=5"
curl -s https://ponzym.bio/api/report.md
curl -s https://ponzym.bio/api/rpc -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
Questions
- My pose was refused. Why?
- The contract answered with one of the five reason codes above, and the lab shows you which. ATOM_COUNT means the pose did not carry exactly the registered heavy atoms in topology order. BOX means an atom left the active site box. BOND or PAIR13 means a bond length or a bond angle drifted outside tolerance, which usually means the pose was not built from the ideal conformer. CLASH means two atoms three or more bonds apart came closer than 2.20 A. A refusal is the geometry proof doing its job and it costs you nothing beyond gas.
- The molecule is fine and it still fails with CLASH every time. What now?
- If it is a bridged bicyclic, the clash floor cannot accept it in any conformer, for the reason set out under Limits: the floor assumes torsional freedom the cage does not have. That is a limit of this engine, not a fact about your molecule. Measured cases are recorded in data/catalog/undockable.json so that nobody pays a fee for a test that cannot succeed.
- The score is strong. Does the enzyme run my reaction?
- Unknown, and nothing here answers it. A score says the substrate fits and binds the active site. Catalysis needs the right geometry at the catalytic residues, the right protonation states, a cofactor where one is required, and a transition state the enzyme can stabilise. Binding is necessary and it is nowhere near sufficient. A strong score means the structure has earned a place on a shortlist.
- Why does binding get computed at all, if catalysis is the question?
- Because a substrate that cannot be accommodated in the active site cannot be turned over either, so binding is a real filter, it is computable today at this cost, and a hundred structures can be ranked by it in an afternoon. The value is in what it removes from the list, and in the fact that the removal is reproducible by anyone.
- My challenge runs at 80 C and pH 9. Does the score know?
- No. The scoring function has no term for temperature, pH, solvent or ionic strength. The conditions are recorded because they are your requirement and every result on that challenge is shown next to them, so a reader can see what the number does not cover. An enzyme from a thermophile is a better bet for 80 C than one from a mesophile, and that is a judgement made from the organism field, not from the score.
- Is any of this medical advice, or investment advice?
- No, on both counts, and neither in part. Nothing on this site is a diagnosis, a treatment, a clinical claim or a statement about a medicine. Nothing on this site is a recommendation to buy or sell anything, including $PONZYM. Prize pools and fees are described so you know how the mechanism works, not as a projection of any kind.
- What is the AI analysis, and what is it not?
- It is a real language model's real answer about one test's real numbers, generated on request through a provider with a configured key. It is not Ponzym's interpretation, it is not reviewed by anyone, it is not evidence, and any paper it recalls may not exist. The provider and the model are named next to the text, and the text is never a substitute for reading the numbers yourself. A provider with no key reads not connected and cannot be chosen, because nothing is shown here that a model did not write.
- What happens to the fee I pay for a docking test?
- It goes to the lab treasury, in full. It does not go into a prize pool and it does not go to the sponsor of a challenge. It is the price of the chain step: the contract unpacks the active site, re-proves the geometry atom by atom, recomputes the score in integer arithmetic and stores the pose in an event where anyone can read it. The lab fee is a separate thing: it is the share of a settled prize that the treasury keeps, and the lab shows the current value.
- Do I need a wallet?
- Not to browse the library, not to run a search, and not to read any result. A wallet is needed only to record a pose on chain, to review someone else's test, to sponsor a pool or to claim one.
- Someone can see my pose. Can they steal it?
- They can copy it, because every pose is public calldata and is re-emitted in the event. They cannot beat it with it: a copy scores exactly the same, and an equal score from a lower run number keeps the lead, so the original always wins the tie against its own copy. What a copy can do is equal your score on a challenge you have not yet entered, which is an argument for submitting when you are ready rather than sitting on a result.
- The chain's number and my browser's number differ. Which is right?
- Neither, until someone looks. They are meant to be bit for bit identical, because the browser scorer, the Python reference and the contract run the same integer arithmetic against the same registered bytes, proven on a shared vector file. A difference is a bug in one of the three and the report page shows both numbers so it can be reported with the run number attached.
- Who picked the enzymes, and can I add one?
- They were curated against the rules under The library, and the reason for each one is written on its page. The catalog is built by a pipeline in the repository, so the selection is auditable rather than a matter of taste. Registration is an owner action on chain today, because a pocket has to be built and hashed before it can be scored against.
- Why is the receptor rigid, if real enzymes move?
- Because a flexible receptor multiplies the search space and, more to the point here, cannot be re-proved cheaply on chain: the whole design rests on the contract holding one fixed set of pocket bytes with one hash, so that two people scoring the same pose get the same number. A rigid pocket is the price of a verifiable score, and it is the largest single approximation in the method.
- Is the researcher name next to a wallet a real identity?
- No. Names are self-chosen and are not unique, so two wallets can carry the same one. Every surface that shows a name shows the wallet next to it, and the wallet is the identity.
- Can I use the data in my own work?
- The structures belong to the RCSB Protein Data Bank and to the groups that deposited them, and every entry links to the original so you can cite it properly. What this site adds is the pocket bytes, the topologies, the poses and the scores, all of which are on chain and downloadable under /data. If you publish something built on a run here, the run number and the method are enough for anyone to reproduce it.
- When does $PONZYM launch, and what changes when it does?
- It launches later on ponsfamily.com. Until then the Buy control is inert, Copy CA is disabled, and no page on this site carries a contract address. After the launch it becomes a second way to pay for a docking test, 100 $PONZYM instead of 0.0001 ETH, at the payer's choice. Nothing about the library, the search, the proof or the score changes with it, and no page will claim otherwise.
Glossary
- Enzyme
- A protein catalyst. Here, an experimental structure from the RCSB Protein Data Bank with an EC number and a defined active site, registered on chain as pocket bytes with a hash. In the engine and the contract the same object is called the receptor.
- Substrate
- The molecule an enzyme acts on. Here, the small molecule that is posed into the active site, registered on chain as a heavy atom topology. In the engine and the contract the same object is called the ligand.
- Active site
- The part of an enzyme where the chemistry happens. Here it is the box drawn around the reference ligand of the chosen structure, plus every receptor heavy atom within reach of it.
- EC number
- The Enzyme Commission classification of a reaction, four numbers deep. The first is the EC class, from 1 to 7.
- Binding free energy (dG)
- The energy change when a molecule binds a site, in kcal/mol. Negative means binding is favourable, and more negative means stronger. Every dG on this site is an estimate from the scoring function, never a measurement.
- Gibbs energy
- The thermodynamic quantity dG stands for. At constant temperature and pressure a process is favourable when its Gibbs energy change is negative.
- Kd
- Dissociation constant. The concentration at which half the sites are occupied. Smaller means tighter binding. Estimated here from dG at 298.15 K.
- pKd
- Minus the base ten logarithm of Kd in molar units. Bigger means tighter. A pKd of 6 is one micromolar, 9 is one nanomolar.
- Ligand efficiency
- Binding free energy per heavy atom, as a positive number. It favours small molecules that bind well for their size.
- Catalysis
- Turning the substrate into the product. It is what an enzyme is for, and it is not what a binding score measures.
- kcat and KM
- The turnover number and the substrate concentration at half maximal rate: the two numbers that actually describe an enzyme's performance. Neither is computed here and neither can be inferred from a binding estimate.
- Cofactor
- A helper molecule an enzyme needs, such as NAD, a flavin or heme. Metal ions are kept when the pocket is built and typed as donors. Organic cofactors are dropped, and the entry records that.
- Pose
- One placement of the substrate: the position of every one of its heavy atoms inside the active site box.
- The receptor atoms around the box, taken from the structure. Registered on chain as bytes with a hash, so what a pose is scored against cannot change.
- Box
- The region the substrate may occupy, centred on the reference ligand and padded by 2 A, at least 6 A of half size. Every atom of a recorded pose must be inside it.
- Reference ligand
- The molecule that was bound in the structure when it was solved. It defines the box, its role is recorded as refRole, and it is drawn in the viewer so you can see where the site is.
- Heavy atom
- Any atom that is not hydrogen. The engine represents heavy atoms only.
- Rotatable bond
- A single bond the search can twist. More of them means more flexibility and a larger penalty in the score.
- Model fragment
- A repeating unit standing in for a polymer that cannot fit an active site box, such as cellotriose for cellulose. A score on a fragment describes one sub-site, not a whole chain.
- Industry
- One of the twelve groupings a substrate or an enzyme can belong to. A molecule may belong to several.
- Challenge
- A sponsor's funded job: one substrate, an enzyme class, the temperature and pH it has to hold, a goal in plain words, a pool and a deadline.
- Claim window
- The day after a challenge stops taking entries, during which the lead can still be claimed and settlement is refused.
- Docking test
- The chain step: a pose found in the browser is submitted, the contract proves its geometry, recomputes the score and records it. It costs 0.0001 ETH, or 100 $PONZYM once the token has launched, paid to the lab treasury.
- Method
- The JSON that configures the pose search: budget, chains, temperature, move sizes, local steps, placement, flexibility, candidates, lattice polish and seed. Recorded with the test, which is what makes a run reproducible.
- Epoch
- A seven day window per enzyme, counted from a genesis timestamp. The best score recorded in the window wins that enzyme's pool when someone settles it.
- Prize pool
- ETH that sponsors have put on a challenge or on one enzyme. It pays the best proven result, minus the lab fee.
- Lab fee
- The share of a settled prize kept by the treasury, set in basis points.
- Review
- One to five stars and a note of at most 280 characters, written on chain by a wallet other than the test's author. A second review replaces the first.
- XP
- Points computed in the browser from chain data by the rules under Levels and badges. They set a wallet's level and they are not a credential.
- Vina-style
- Of the AutoDock Vina family of empirical scoring functions: the same five terms and the same published weights, in an independent implementation. Not the AutoDock Vina program.
- Seed
- The number that fixes the random choices of a search. Same seed and same method, same pose, on any machine.