Unaudited, unvetted, experimental. Do not use as a reference. AI-researched ratings that may be wrong; not advice or a statement of fact about any provider. Full disclaimer
Pending review. 1150 of 1150 ratings not yet checked by a human. Do not rely on unreviewed ratings.
Railgun
transfer Assessed on Ethereum (chain 1)railgun.org
Ratings apply to this deployment only. Treat them as unverified for other chains. Why this deployment: The deployments repo (Railgun-Community/deployments@68d93979 src/chains/ethereum.ts L1-L60) is the only chain with the governance stack (Delegator, Voting, Staking, ProxyAdmin) and empty L1Sender/L2Executor, so Ethereum governs the protocol; shared-models network-config.ts lists Ethereum first. Unit: RailgunSmartWallet proxy 0xFA70…a4b9 and its implementation, with the ProxyAdmin, Delegator and Voting contracts that control it. Excluded: the BSC, Polygon and Arbitrum deployments, the V3 contracts (supportsV3 false on Ethereum), RelayAdapt, and the RAIL token and treasury.
Offered everywhere, per the provider's code or documents. Checked 2026-10-09. Not scored.
The settlement contracts have no address or country checks, and neither the SDK nor Railway has a country gate in code; Railway's terms of use name no restricted countries. Edge filtering is by address list (SDK OFAC list, Railway's POI using Chainalysis's OFAC list), not by country.
Evidence (1)1 verified
Verified
A search of contracts/, engine/src, wallet/src and Railway desktop/mobile src for country, geolocation, ipinfo and geoblock found no country gate.
Can any privileged role stop, freeze, or block payments through the settlement contracts, and how is that role constrained? C1
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Pause, upgrade and token blocklisting sit with RAIL token governance: ProxyAdmin is owned by the Delegator, which is owned by the Voting contract, and no other address holds pause permission today (three EOA pausers granted in 2021 were revoked). A pause takes at least 7 days from the vote being called, and a pause would also stop unshielding. Nothing in the contracts blocks individual addresses. Judgment call: anchor 2 is written for a Safe; we treat public onchain token voting with a 7-day minimum execution delay as meeting it, since user exit (unshield) is immediate. No notice channel beyond the onchain proposal is named in the repo.
Evidence (4)4 verified
Verified
The proxy admin can upgrade, pause and unpause; while paused every call reverts (notPaused, L49-L53), including unshield. The implementation also has an owner-only TokenBlocklist (blocks tokens from being shielded, not addresses) and fee setters.
GrantPermission logs show pause/unpause on the ProxyAdmin granted at block 12977000 to EOAs 0x0219…873D, 0x17cF…De86 and 0xCC29…164a; checkPermission returns false for all three at block 26153471. Two VKeySetter contracts hold setVerificationKey permission, but can commit keys only after governance moves them to the COMMITTING state (VkeySetter.sol stateToCommitting is onlyDelegator).
Voting.EXECUTION_START_OFFSET = 604800 s (7 days after a vote is called; voting starts after 2 days), quorum 2M RAIL, sponsor threshold 500k RAIL (Voting.sol L16-L26); 33 proposals at this block.
Can a payer or payee complete settlement by calling the public contracts directly, without the provider's API, signer, or relayer? C2
3 Strong
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
A payer can shield, send privately to a payee's 0zk address and the payee can unshield by calling the proxy directly and self-signing; no broadcaster, API or provider signature is involved. Addresses and ABIs are published in the deployments repo. We did not run a transaction.
Evidence (3)3 verified
Verified
shield() and transact() (private transfer and unshield) are external with no caller check; validity rests on the token blocklist, commitment preimage checks and the SNARK proof.
Does the payment flow require a relayer, paymaster, bundler, or API that only the provider runs? C3
3 Strong
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Settlement needs only the contracts, the SDK, the proving artifacts and an RPC. Broadcasters, the hosted Subsquid indexer and the POI aggregator are optional, and each has public code. Judgment call: self-signing without a broadcaster exposes the gas-paying address; that is a privacy cost (P3), not a settlement dependency, so 3.
Evidence (2)2 verified
Verified
After the optional quick sync, the engine slow-syncs commitments from the contract's events over the user's RPC (getHistoricalEvents), so the hosted indexer is not required.
startRailgunEngine takes poiNodeURLs as optional and initialises POI only if they are given; broadcasters are an optional transport (waku-broadcaster-client, MIT).
Is the settlement layer free of address or geographic filtering, and is any filtering at the edge disclosed and avoidable? C4
3 Strong
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
The settlement contracts are neutral toward addresses and countries. Edge filtering is in public code with named list sources (an OFAC list in the SDK; Chainalysis's OFAC list for Railway's POI), and the direct contract path bypasses both (C2 = 3). npm @railgun-community/wallet 10.9.0 has gitHead 5c9d04c8, the pinned commit. All required components are public. Noted: the SDK check lower-cases the address but the list holds checksummed addresses, so at this commit it never matches; the filter is disclosed but ineffective.
Evidence (3)3 verified
Verified
The wallet SDK refuses recipients on OFAC_SANCTIONS_LIST_ADDRESSES (shared-models blocked-address.ts, 175 addresses, refreshed from Railgun-Community/ofac-scraper by update-ofac-list.cjs L12-L13); it is called in tx-generator.ts L200, L416, L456 and tx-shield.ts.
Railway explains that Private Proofs of Innocence use the OFAC list published by Chainalysis, and that blocked shields can only be unshielded to origin.
Are the tokens and chains the rail depends on enumerated, with their issuers' freeze powers and sequencer assumptions stated to payees? C5
0 Fails
Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Chains are enumerated in shared-models, but tokens are an open set, and we found no statement in the repos or docs that issuer freezes (USDC, USDT) can lock the RAILGUN contract's balance of a token. Judgment call: an open token set cannot be enumerated, and the anchor names "not enumerated" as 0; we take the lower anchor.
Evidence (1)1 verified
Verified
Any ERC20, ERC721 or ERC1155 token can be shielded unless governance has put it on the TokenBlocklist; there is no allowlist.
Are the SDK, frontend, backend or API, indexer, and deploy scripts all public? O2
2 Partial
Best evidence: VerifiedChecked 2026-10-09 10 days ago
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Every layer has public source, and the repos are active. We could not tie the hosted Subsquid deployment, the ppoi.fdi.network aggregator, or broadcaster builds to public commits, and the broadcaster server is public only as an example (ppoi-safe-broadcaster-example). Judgment call: 2 rather than 3 for that reason.
Evidence (1)1 verified
Verified
Public repos cover contracts and deploy tasks, circuits, engine and wallet SDK, the Subsquid indexer, the POI node, the broadcaster client and the Railway frontend.
Are ABIs, event schemas, an API schema, and a payee data export in a non-proprietary format all in the repo? O4
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
ABIs and event schemas are in the repos, and no API is required. We found no payee export in a non-proprietary format in the SDK; Railway and the docs point to viewing keys and a Koinly tax export, which we did not inspect. Scored 2.
Evidence (1)1 verified
Verified
Event schemas (Action, Transact, Shield, Unshield, Nullified) are defined in the contract; ABIs are in the deployments repo (src/abi).
Does every repository needed to run the product carry an OSI-approved license? F1
0 Fails
Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
The SDK repos are MIT and Railway is AGPL-3.0, but the settlement contracts and circuits, both required, carry no licence and explicitly grant none. Scored 0.
Evidence (2)2 verified
Verified
The contracts repo has no LICENSE file; package.json says "UNLICENSED" and 38 of 39 Solidity files carry SPDX UNLICENSED. A License.md added in 2021 (d2c63577) read "No License is provided for any party under any circumstances" and was removed in 77af7cf5 (2022).
Can the provider unilaterally relicense future versions, and has it committed not to? F2
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
No CLA, no relicensing event in the SDKs, and no licence-stability commitment. The contracts and circuits have never been licensed, which F1 records. Scored 2.
Evidence (1)1 verified
Verified
Engine and wallet LICENSE files are MIT with no change since 2022-09-29; no CLA or CONTRIBUTING file exists in contract, engine, wallet or shared-models.
Does a production deployment need a proprietary plugin or hosted-only service? F3
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
No proprietary plugin or hosted-only service is needed: the artifacts are content-addressed on IPFS and the indexer, POI node and broadcasters are optional. Judgment call: the code supports 3, but with no O3 reproduction we take 2. The contracts and circuits being unlicensed is scored under F1.
Evidence (1)1 verified
Verified
Proving artifacts are fetched by IPFS hash through the gateway ipfs-lb.com unless the integrator supplies an artifact store; the engine needs only an RPC.
Do the SDK, widget, or frontend ship analytics, telemetry, error reporting, or fingerprinting? P1
0 Fails
Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
The SDK ships no analytics or telemetry. Railway desktop includes a fingerprinting library; in the code we read it is used locally to derive an encryption key, and we saw no network send. Judgment call: the anchor names fingerprinting libraries as 0 regardless of use, so we take 0; on the SDK alone this cell would score higher.
Evidence (2)2 verified
Verified
Railway desktop loads @fingerprintjs/fingerprintjs (package.json L36, resolved 3.4.2) and uses the browser fingerprint visitorId as the AES key for the locally stored password hash.
Does the flow collect anything beyond addresses, amounts, token, and chain? P2
3 Strong
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
The flow collects only what settlement needs; there is no sign-up, KYC or form. A broadcaster, if used, sees the transaction it relays and its fee; a POI node sees blinded commitments. Railway states it collects no logs, a claim we did not verify.
Evidence (1)1 verified
Verified
A shield request carries a commitment preimage (npk, token, value) and an encrypted ciphertext; transactions carry proofs, nullifiers, commitments and encrypted ciphertexts. There is no account, identity or contact field.
What do calldata and events reveal about who paid whom for what? P3
3 Strong
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Shielding is public (who, which token, how much) and unshielding is public (to whom, which token, how much), but a private transfer between 0zk addresses reveals no sender, recipient, token or amount onchain; ciphertexts are encrypted to the parties. Linkage can come from the shield/unshield amounts and timing, and from self-signing with a known gas address (the Action event names the caller). Judgment call: behavioural linkage is noted, not scored; on what the code reveals, 3.
Evidence (1)1 verified
Verified
Shield emits commitment preimages (token, amount, note public key) and ciphertext; Transact emits only commitment hashes and ciphertext; Unshield emits recipient, token, amount and fee; Action emits the caller (gas payer or broadcaster).
Which third parties see a request during a payment, and can they be swapped out? P4
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Beyond the RPC, the SDK's default path touches a hosted Subsquid indexer and an IPFS gateway, and Railway adds price, config and POI services. All are named in code. The indexer and gateway can be replaced only in code (engine init functions, artifact store); the RPC and POI node URLs are configurable. Scored 2.
Evidence (1)1 verified
Verified
The wallet SDK hardcodes the Subsquid endpoint rail-squid.squids.live for quick sync, and artifact-util.ts L7 hardcodes the ipfs-lb.com gateway; Railway adds price APIs (CoinGecko, CoinPaprika, DefiLlama), its remote config at railway.xyz and the POI aggregator ppoi.fdi.network.
Can RPC and indexer URLs be changed, and is the indexer code public? P5
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
RPC is configurable in the UI and SDK; the indexer is configurable only in code, though its code is public and the engine can fall back to RPC scanning. Scored 2.
Evidence (1)1 verified
Verified
Railway has a custom RPC modal; the indexer endpoint is fixed in the wallet SDK's generated GraphQL client, replaceable only by passing a different quickSync function to the engine; the indexer code is public (subsquid-integration, MIT).
Who holds funds between payer and payee, and can the provider redirect them? S1
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Funds sit in one upgradeable contract, controlled by the note owner's keys; nobody can move them under the current code. An upgrade could, but only after a public RAIL vote and at least 7 days, while users can unshield at any time. Judgment call: we read this as "escrow with a provider role bounded by a timelock and a documented exit" (2), not "upgradeable escrow" without a delay (1).
Evidence (2)2 verified
Verified
Tokens leave the contract only through unshield in a transaction carrying a valid proof over the note owner's keys; no admin function moves user balances. Fees go to the treasury at shield and unshield (25 bps each at block 26153471).
ProxyAdmin owner() = Delegator 0xB6d5…B53B (governance), so the upgrade that could change custody needs a RAIL vote with a 7-day minimum before execution.
Who can change the contract code, and with how much notice? S2
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
The RailgunSmartWallet is upgradeable by RAIL governance only: ProxyAdmin → Delegator → Voting, with at least 7 days between a vote being called and execution, longer than the immediate user exit. There is no Safe; the voters are onchain. The repo names no user notice channel beyond the onchain proposal, and governance can also set verification keys via the VKeySetters. Judgment call: 2 (delay longer than exit, no notice channel named).
Evidence (2)2 verified
Verified
Delegator owner() = Voting 0xc480…A3CC; executeProposal runs through the Delegator after EXECUTION_START_OFFSET (7 days) from callVote.
How large an allowance does the SDK ask users to grant, and for how long? S3
0 Fails
Sets the pillar ratingBest evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Railway asks for an unlimited allowance to the upgradeable RAILGUN proxy when shielding, and we found no disclosure of that in the UI code. The SDK has no approval helper; integrators choose. Scored 0 on the reference wallet.
Evidence (1)1 verified
Verified
Railway's shield flow sets the approval amount to maxBigIntForTransaction() (2^256-1, util.tsx L254-L256) for the RAILGUN proxy; no "unlimited" label was found in the approval screens.
If the provider disappears tomorrow, do payees keep their funds and the ability to keep settling? S4
2 Partial
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
Derived from S1=2, C2=3, C3=3, O3=1. Funds are held by keys the user controls, behind an upgrade path that needs a 7-day governance process (S1). A user can unshield and keep sending privately by calling the contract directly with the public SDK and an RPC (C2, C3). A public frontend exists (Railway), but no build was reproduced (O3=1). Judgment call: 2, not 3, for that reason.
Evidence (1)1 verified
Verified
The proxy is unpaused (paused slot 0) and transact/unshield is callable by anyone with a valid proof (C2).
Are secrets kept out of client bundles and are webhooks signed and verified? S5
3 Strong
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
No secrets ship in the SDK or the Railway source, and the protocol has no merchant keys or webhooks. User secrets stay client-side. The npm package 10.9.0 was published from the pinned commit (gitHead 5c9d04c8). Scored 3.
Evidence (1)1 verified
Verified
The SDK takes no API keys; wallet keys are derived from a locally stored mnemonic. A search of Railway desktop and mobile src for API_KEY, apiKey and REACT_APP_*KEY found none, and there are no webhooks.
Has the code been audited at a pinned commit, were findings fixed traceably, and is there a live bounty? S6
1 Weak
Best evidence: VerifiedChecked 2026-10-19 today
UnreviewedAssessed by AI research agent (seed), 2026-10-09
An audit report exists for an early version of the contracts and circuits; it does not cover the deployed implementation (deployed at block 25641630, with Action events and TokenBlocklist). We found no audit report, SECURITY file or bounty programme in the Railgun repos or docs. Judgment call: 1 for an audit of a prior version, as for Tornado Cash; no audit of the deployed code was found.
Evidence (1)1 verified
Verified
ABDK's Circom and Solidity review covers contract commit 6281cb (Commitments, RailgunLogic, Snark, TokenWhitelist, Types, Verifier) and circuits commit 2c3c31, an early version; findings are listed as Opened in this report.
Published audits and similar reviews of this provider's code, newest first. Context for the Audits and bug bounty rating, which scores them; this list does not change any rating, and an audit of older code says little about what is deployed now.
Cross-chain governance relay contracts Sender.sol and Executor.sol, which carry Ethereum governance actions to Railgun's L2 deployments. at a49a82d158 Governance plumbing for other chains rather than the Ethereum settlement contracts; the arbitrum and opStack Sender and Executor files changed after this commit.
Unknown
No critical; medium issues marked resolved, plus low and informational
Commitments, RailgunLogic and RailgunSmartWallet (the v3 settlement contracts). at 4385ec73bf The deployed implementation descends from these contracts, but contracts/logic changed in the 131 commits between this commit and the assessed commit 36bcf5ed (Action events, TokenBlocklist).
Partly
No critical; medium issues marked resolved; some informational items marked invalid or unresolved
Governance Voting.sol. The report names last commit d73c1da6, which does not exist in Railgun-Privacy/contract; Voting.sol changed after the audit and we did not compare it with the deployed Voting contract.
Unknown
No critical; low and informational issues, resolved or acknowledged
Globals, Snark, Commitments, Verifier, Poseidon, TokenBlacklist and RailgunLogic (v2 settlement contracts). at 62401e1a64 Covers a version replaced by the v3 RailgunSmartWallet.
Commitments, Globals and RailgunLogic (v1 settlement logic). at 97af307fa1 Starting commit 0418a0f1, last commit 97af307f. Superseded by later versions.
Full v1 contract suite (Delegator, Voting, ProxyAdmin, Proxy, Commitments, RailgunLogic, Verifier, Snark, TokenWhitelist, Staking, Treasury, Distributor, VestLock and others). at d2c63577dd Reviewed after the v1 deployment; the settlement logic has since been replaced, though some governance contracts (Delegator, ProxyAdmin) may descend from this suite.
No
No critical; 1 low and 3 informational, left unresolved because the contracts were already deployed
Railgun smart contracts for Right to Privacy (contract list not read; see note). Published on Hacken's audits site, which returns HTTP 403 to scripted requests, so we could not read the scope or commit. Dated November 2021, it predates the deployed implementation.
No
2 medium and 2 low, all resolved, per Hacken's listing
Early contracts (Commitments, RailgunLogic, Snark, TokenWhitelist, Types, Verifier) and circuits. at 6281cb0dac Circuits were reviewed at Railgun-Privacy/circuits commit 2c3c3144, predating circuits-v2.
No
2 critical, 5 major, 3 moderate, 54 minor; all listed as Opened in this report
Compiled from: The Railgun-Privacy and Railgun-Community repos (no audits folder or SECURITY file), docs.railgun.org (no audits page in its sitemap), railgun.org, the ABDK portfolio at github.com/abdk-consulting/audits (railgun folder), Zokyo's github.com/zokyo-sec/audit-reports (RAILGUN folder; a RAIL token audit there is not in the payment path), the Trail of Bits publications list (it lists a RAILGUN review from Feb 2022 with no report published), and Hacken's audit listing. No audit of the implementation deployed at block 25641630 was found. Checked 2026-10-13. Only published reports are listed; private audits a provider mentions without a report are not.
Operational and procurement
Facts an institution's procurement, finance and security functions ask for. Separate from the CROPS ratings and never scored.
Group A: operational facts. Group B: 45 due-diligence controls derived from a UN agency's vendor requirements: 12 evidenced, 0 attested, 3 absent, 29 not applicable, 1 unknown. "Not applicable" means there is no operator to hold the control: it falls to whoever deploys the rail. How to read this.
Group A: operational facts
Fees
Evidenced
Component
Paid by
Amount
Basis
provider
payer
0.25% of the shielded amount (shieldFee = 25 bps)
Contract parameter on the RailgunSmartWallet proxy, sent to the treasury contract; changeFee is owner-only (RAIL governance vote, at least 7 days) and capped at 50%. Unchanged since one FeeChange event at block 14737691.
provider
payee
0.25% of the unshielded amount (unshieldFee = 25 bps)
Same contract parameter; deducted from the note value on unshield, so the receiving public address gets the amount net of the fee.
provider
payer
Broadcaster premium, set by each broadcaster as a % of gas (docs say generally ~10%), paid in the transacted token
Optional; set per broadcaster over Waku, not by the contracts. Self-relaying avoids it but pays gas from a public address.
network
payer
Ethereum gas for shield, transact and unshield
Paid in ETH when self-signing, or folded into the broadcaster premium in the transacted token.
Verified
shieldFee() and unshieldFee() both return 25 (basis points of 10,000); nftFee() returns 0; treasury() = 0xE8A8…FF40. The only FeeChange event since deployment (block 14737691, tx 0x2bd98cd1…2361) set 25/25/0.
transferTokenOut splits the note value with getFee(value, inclusive, unshieldFee), sends the base to the recipient and the fee to the treasury, and emits Unshield(to, token, base, fee). changeFee (L141-L155) is onlyOwner and caps each fee at BASIS_POINTS / 2.
checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19
UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09
Custody model
Evidenced
Self-custody
Agrees with S1 (2) finding. Notes are spendable only with the owner's keys and no admin function moves balances; the residual risk is an upgrade after a public RAIL vote with a 7-day minimum, which S1 already records.
UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09
Licences and registrations
N/A: falls to the institution
No operating entity runs the rail. The contracts are governed onchain by RAIL stakers (ProxyAdmin owned by the Delegator, owned by the Voting contract; see C1), and broadcasters are independent operators. No company is named as provider in the docs or GitHub organisations.
UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09
Cash-out options
N/A: falls to the institution
Token-to-address rail. The payee unshields tokens to an address it controls; converting them to local currency is outside the protocol.
UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09
First deployment
Evidenced
2022-05-01 (block 14693013): RailgunSmartWallet proxy 0xFA70…a4b9 created (tx 0x13954e0d…22aa) by 0x76EB…4624; first implementation set at block 14737691 (2022-05-08).
The Delegator's first GrantPermission logs (block 12977000, 2021-08-07) show the governance stack predates this proxy; an earlier settlement contract, if any, is not in the provider's contract list and was not traced.
Verified
Sourcify creation data gives tx 0x13954e0d1af4c619efbd502299e78e116d1309b2b85c15ac6fe09838bb8622aa at block 14693013; the receipt (read via rpc.mevblocker.io) has contractAddress 0xfa70…a4b9 and status 1; block 14693013 is dated 2022-05-01 UTC.
UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09
Operating entity
Absent
No maintaining legal entity is disclosed. Railway Wallet, the reference client, is published by the Right to Privacy Foundation, which is not the Railgun protocol's maintainer.
Verified
GitHub org Railgun-Privacy: name Railgun, company, blog, location and email empty; Railgun-Community lists only https://www.railgun.org.
The docs describe changes as onchain protocol requests decided by RAIL stakers and name no company; the full docs index (docs.railgun.org/wiki/llms.txt), railgun.org and the Railgun-Privacy and Railgun-Community GitHub organisations (no company field) were searched for a legal entity.
checked 2026-10-09 · source unchanged at weekly re-read 2026-10-19
UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09
Security incidents
Evidenced
Absence of a found incident is not evidence that none occurred.
No post-mortem found in docs.railgun.org (full index searched) or the repos. Third-party reports of illicit use are not incidents of the rail and are not recorded.
Verified
eth_getLogs over the proxy from its creation block (14693013) to latest returns no ProxyPause events (topic0 0xa51641ae…bb6f); the only ProxyUnpause is in the setup transaction at block 14737691.
UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09
Product changes affecting users
Evidenced
2022-05-08: Proxy initialised with its first implementation (0xbcfa…541a), fees set to 25/25 bps and treasury 0xc851…4d6c; proxy unpaused. source
2022-07-24: Treasury changed to 0xE8A8…FF40 (TreasuryChange). source
2022-11-29: Implementation upgraded to 0x3216…e13b (ProxyUpgrade). source
2023-03-09: Implementation upgraded to 0xc0be…09cc (ProxyUpgrade). source
2025-07-28: Implementation upgraded to 0xb4f2…d89b (ProxyUpgrade). source
2026-08-14: Implementation upgraded to the current 0xD662…6A0C (ProxyUpgrade), deployed at block 25641630; adds Action events and TokenBlocklist. source
Each upgrade after setup required a passed RAIL governance proposal (ProxyAdmin is owned by the Delegator and the Voting contract). The proposal documents behind each upgrade were not read; the transaction is the primary source cited.
Verified
ProxyUpgrade, FeeChange and TreasuryChange logs on the proxy since block 14693013 (via rpc.mevblocker.io), block dates from block headers. Upgrades at blocks 14737691, 16076750, 16790263, 23018635, 25753684; one FeeChange (14737691); TreasuryChange at 14737691 and 15202637.
UnreviewedAssessed by AI research agent (operational), 2026-10-09Checked 2026-10-09
Volume transacted (verified only)
Unknown
not computed on 2026-10-19: eth_getLogs: Archive requests require a personal token. Get one at: https://www.allnodes.com/publicnode
Judgment call. Shielded 0zk transfers hide amount, token and parties, so the payments themselves are not observable; the spec measures pool exits (Unshield) on the listed proxy, a lower bound on payee settlement to public addresses. Data words verified on a live log at block 26148878 (word 2 = USDT, word 4 = amount). Not computed; the maintainer runs scripts/volumes.mjs.
UnreviewedAssessed by AI research agent (operational), 2026-10-09
Group B: institutional due diligence
Control
State
What was found
Assurance and certifications
B1.1 ISO 27001, developer organisation Is the organisation that develops the product ISO 27001 certified, and does the certificate name that entity?
N/A: falls to the institution implied from the component list
B1.2 ISO 27001, hosting and support organisation Is the organisation that hosts and supports the service ISO 27001 certified in its own name, with a scope covering the service?
N/A: falls to the institution implied from the component list
B1.3 SOC 2 Type II or ISAE 3000/3402 reports Does the provider undergo periodic SOC 2 Type II or ISAE 3402 Type II assessments and make reports available?
N/A: falls to the institution implied from the component list
B1.4 Independent source-code security review before go-live Was the application reviewed by an independent party before launch, and is the report linked?
Evidenced
ABDK reviewed an early version of the contracts and circuits; no audit of the deployed implementation was found. See CROPS S6. CROPS S6
B1.5 Penetration testing Is the service penetration-tested before go-live and at least every three years, with results available?
N/A: falls to the institution implied from the component list
B1.6 Vulnerability scanning cadence Are the platform and the application scanned for vulnerabilities at least every six months?
N/A: falls to the institution implied from the component list
Vulnerability and patch management
B2.1 Security contact and disclosure policy Is there a published way to report a vulnerability (SECURITY.md, security.txt, or a disclosure page)?
Absent
none of 10 repo(s): Railgun-Privacy/contract ✗ no security policy file; Railgun-Privacy/circuits-v2 ✗ no security policy file; Railgun-Community/engine ✗ no security policy file; Railgun-Community/wallet ✗ no security policy file; Railgun-Community/shared-models ✗ no security policy file; Railgun-Community/deployments ✗ no security policy file; Railgun-Community/waku-broadcaster-client ✗ no security policy file; Railgun-Community/private-proof-of-innocence ✗ no security policy file; Railgun-Community/subsquid-integration ✗ no security policy file; Railway-Wallet/Railway-Wallet ✗ no security policy file source 1 · source 2 · source 3 · source 4 · source 5 · source 6 · source 7 · source 8 · source 9 · source 10
B2.2 Patch service levels Does the provider commit to patch timelines for known vulnerabilities (the partner expects 30 days critical, 40 high, 90 medium)?
N/A: falls to the institution implied from the component list
B2.3 Dependency and vulnerability scanning in CI Do the public repositories run dependency or code scanning automatically?
Absent
none of 10 repo(s): Railgun-Privacy/contract ✗ no scanning config or workflow step found; Railgun-Privacy/circuits-v2 ✗ no scanning config or workflow step found; Railgun-Community/engine ✗ no scanning config or workflow step found; Railgun-Community/wallet ✗ no scanning config or workflow step found; Railgun-Community/shared-models ✗ no scanning config or workflow step found; Railgun-Community/deployments ✗ no scanning config or workflow step found; Railgun-Community/waku-broadcaster-client ✗ no scanning config or workflow step found; Railgun-Community/private-proof-of-innocence ✗ no scanning config or workflow step found; Railgun-Community/subsquid-integration ✗ no scanning config or workflow step found; Railway-Wallet/Railway-Wallet ✗ no scanning config or workflow step found source 1 · source 2 · source 3 · source 4 · source 5 · source 6 · source 7 · source 8 · source 9 · source 10
Incident reporting and continuity
B3.1 Incident reporting commitment Does the provider commit to notify customers of security or data incidents within a stated time (the partner expects 24 hours)?
N/A: falls to the institution implied from the component list
B3.2 Backups and restore testing Are customer records backed up daily and restores tested on a schedule?
N/A: no such service implied from the component list
B3.3 Recovery plan Is there an approved and tested recovery plan for the service?
N/A: no such service implied from the component list
B3.4 Status page and post-mortems Does the provider publish service status and post-mortems for incidents?
N/A: falls to the institution implied from the component list
Identity and access (operator side)
B4.1 MFA for end users Can or must end users protect accounts with multi-factor authentication?
N/A: no such service implied from the component list
B4.2 MFA and separate accounts for privileged access Is privileged access protected by MFA and kept on separate accounts?
N/A: falls to the institution implied from the component list
B4.3 Periodic access reviews Are user access rights reviewed at least annually and privileged accounts at least six-monthly?
N/A: falls to the institution implied from the component list
B4.4 Segregation of duties and joiner-mover-leaver controls Is there a documented segregation-of-duties model and a joiner-mover-leaver process?
N/A: falls to the institution implied from the component list
B4.5 Session timeout Are idle interactive sessions terminated after a defined period (the partner expects 60 minutes)?
N/A: no such service implied from the component list
API and integration
B5.1 API authentication, browser to server Which standard (OAuth 2.0, OpenID Connect, SAML, JWT) protects browser-to-server API calls?
N/A: falls to the institution implied from the component list
B5.2 API authentication, server to server Are server-to-server calls authenticated with keys or PKI certificates, and are keys scoped and rotatable?
N/A: falls to the institution implied from the component list
B5.3 Token expiry Do API tokens expire, and within what period (the partner caps it at 120 minutes for public data, 30 otherwise)?
N/A: falls to the institution implied from the component list
B5.4 Export controls If an API exports data, does it limit volumes and log exports?
N/A: falls to the institution implied from the component list
Data protection and privacy governance
B6.1 Data classification and encryption Does the provider state a data classification and enforce encryption at rest and TLS 1.2 or better in transit?
N/A: falls to the institution implied from the component list
B6.2 Production data kept out of test environments Does the provider state that production or real personal data is not used in development and testing?
N/A: falls to the institution implied from the component list
B6.3 Data retention and deletion on termination What is retained, for how long, and is customer data removed on termination?
N/A: falls to the institution implied from the component list
B6.4 Data protection impact assessment and roles For systems holding personal data, has a DPIA been completed and are controller and processor defined?
N/A: falls to the institution implied from the component list
B6.5 Data processing or sharing agreement available Can a customer obtain a data processing agreement or equivalent?
N/A: falls to the institution implied from the component list
Logging and monitoring
B7.1 Audit logging Are account changes, logins and activity on important records logged and retained?
N/A: falls to the institution implied from the component list
B7.2 Central monitoring and endpoint detection Are logs sent to a managed SIEM and is endpoint detection running on all platforms?
N/A: falls to the institution implied from the component list
Hosting and network
B8.1 Hardened hosting Are hosts hardened to a recognised benchmark, with only essential ports open, IDS/IPS, a WAF for internet-facing applications and tenant isolation?
N/A: falls to the institution implied from the component list
B8.2 Deployment configuration and infrastructure as code Does the repository ship reproducible deployment configuration (containers, IaC, Helm) that a self-hoster can harden?
Evidenced
some of 10 repo(s): Railgun-Privacy/contract ✗ no deployment configuration; Railgun-Privacy/circuits-v2 ✗ no deployment configuration; Railgun-Community/engine ✗ no deployment configuration; Railgun-Community/wallet ✗ no deployment configuration; Railgun-Community/shared-models ✗ no deployment configuration; Railgun-Community/deployments ✗ no deployment configuration; Railgun-Community/waku-broadcaster-client ✗ no deployment configuration; Railgun-Community/private-proof-of-innocence ✗ no deployment configuration; Railgun-Community/subsquid-integration ✓ deployment configuration: docker-compose.yml; Railway-Wallet/Railway-Wallet ✗ no deployment configuration source 1 · source 2 · source 3 · source 4 · source 5 · source 6 · source 7 · source 8 · source 9 · source 10
Engineering practice in public repositories
B9.1 Default branch protected Does the default branch require reviews and passing checks, with no direct pushes?
Evidenced
some of 10 repo(s): Railgun-Privacy/contract ✗ no branch rules visible (classic branch protection is not readable without push access); Railgun-Privacy/circuits-v2 ✗ no branch rules visible (classic branch protection is not readable without push access); Railgun-Community/engine ✓ rules: deletion, non_fast_forward, pull_request, required_linear_history; Railgun-Community/wallet ✓ rules: deletion, non_fast_forward, pull_request, required_linear_history; Railgun-Community/shared-models ✗ no branch rules visible (classic branch protection is not readable without push access); Railgun-Community/deployments ✗ no branch rules visible (classic branch protection is not readable without push access); Railgun-Community/waku-broadcaster-client ✗ no branch rules visible (classic branch protection is not readable without push access); Railgun-Community/private-proof-of-innocence ✗ no branch rules visible (classic branch protection is not readable without push access); Railgun-Community/subsquid-integration ✓ rules: deletion, non_fast_forward, pull_request, required_linear_history; Railway-Wallet/Railway-Wallet ✗ no branch rules visible (classic branch protection is not readable without push access) source 1 · source 2 · source 3 · source 4 · source 5 · source 6 · source 7 · source 8 · source 9 · source 10
B9.2 CI runs on pull requests Does every pull request trigger automated checks?
B9.3 Tests run in CI Do the CI workflows run the test suite?
Evidenced
some of 10 repo(s): Railgun-Privacy/contract ✗ test command in a workflow; Railgun-Privacy/circuits-v2 ✓ test command in a workflow; Railgun-Community/engine ✓ test command in a workflow; Railgun-Community/wallet ✓ test command in a workflow; Railgun-Community/shared-models ✓ test command in a workflow; Railgun-Community/deployments ✗ test command in a workflow; Railgun-Community/waku-broadcaster-client ✓ test command in a workflow; Railgun-Community/private-proof-of-innocence ✓ test command in a workflow; Railgun-Community/subsquid-integration ✗ test command in a workflow; Railway-Wallet/Railway-Wallet ✗ test command in a workflow source 1 · source 2 · source 3 · source 4 · source 5 · source 6 · source 7 · source 8 · source 9 · source 10
B9.4 Coverage reported Is test coverage measured and reported (the partner expects 85%)?
B9.6 Signed tags or commits Are release tags or recent commits cryptographically signed?
Evidenced
some of 10 repo(s): Railgun-Privacy/contract ✓ 10 of 10 recent commits signed; Railgun-Privacy/circuits-v2 ✓ 10 of 10 recent commits signed; Railgun-Community/engine ✗ 2 of 10 recent commits signed; Railgun-Community/wallet ✗ 2 of 10 recent commits signed; Railgun-Community/shared-models ✓ 9 of 10 recent commits signed; Railgun-Community/deployments ✓ 10 of 10 recent commits signed; Railgun-Community/waku-broadcaster-client ✓ 9 of 10 recent commits signed; Railgun-Community/private-proof-of-innocence ✓ 5 of 10 recent commits signed; Railgun-Community/subsquid-integration ✗ 0 of 1 recent commits signed; Railway-Wallet/Railway-Wallet ✗ 2 of 10 recent commits signed source 1 · source 2 · source 3 · source 4 · source 5 · source 6 · source 7 · source 8 · source 9 · source 10
B9.7 Changelog Is a changelog maintained with the code?
Evidenced
some of 10 repo(s): Railgun-Privacy/contract ✗ no changelog or release notes; Railgun-Privacy/circuits-v2 ✗ no changelog or release notes; Railgun-Community/engine ✗ no changelog or release notes; Railgun-Community/wallet ✗ no changelog or release notes; Railgun-Community/shared-models ✗ no changelog or release notes; Railgun-Community/deployments ✗ no changelog or release notes; Railgun-Community/waku-broadcaster-client ✗ no changelog or release notes; Railgun-Community/private-proof-of-innocence ✗ no changelog or release notes; Railgun-Community/subsquid-integration ✗ no changelog or release notes; Railway-Wallet/Railway-Wallet ✓ 10 release(s) with notes source 1 · source 2 · source 3 · source 4 · source 5 · source 6 · source 7 · source 8 · source 9 · source 10
B9.8 Contribution and branching model documented Does the README or contribution guide state how changes are proposed, reviewed and released?
B10.1 Architecture documentation Is there a public architecture document covering logical, infrastructure and integration architecture and the components used?
Evidenced
Logical architecture only (contracts, UTXO Merkle tree, zk-SNARKs, broadcasters, SDK) on docs.railgun.org; integration via the SDK and Adapt Modules pages. No infrastructure view, as there is no operator-run infrastructure. source 1
Commercial and financial
B11.1 Contracting entity Which legal entity would an institution contract with, and in which jurisdiction?
N/A: falls to the institution implied from the component list
B11.2 Funding of ongoing operation How is ongoing operation and maintenance funded (revenue, foundation, grants, fee switch), per a primary source?
Evidenced
Onchain fee switch. 0.25% on shield and unshield goes to the treasury contract, distributed to RAIL stakers (4.2% of the treasury every two weeks per the docs). No foundation or grant funding of maintenance was found. The fees reward stakers, not a named maintainer; how contract and SDK development is paid for is not documented. source 1 · source 2
B11.3 Termination terms What happens to customer funds and data on termination by either side?
N/A: falls to the institution implied from the component list
AI components
B12.1 AI in the payment path Does an AI system take part in payment processing or compliance decisions (for example automated transaction screening)?
Unit: Ethereum RailgunSmartWallet proxy 0xFA70…a4b9 (implementation 0xD662…6A0C) and its governance chain. Reads at block 26153471 via publicnode; Delegator permission logs via rpc.mevblocker.io (RevokePermission logs could not be fetched; current permissions were read with checkPermission). Railgun has no first-party frontend; Railway Wallet (Right to Privacy Foundation) is assessed as the reference client. npm @railgun-community/wallet latest is 11.2.0, published from outside the default branch; we pinned 10.9.0, whose gitHead is the default-branch commit we read. No transactions, UI runs, traces or self-host attempts.