Codex · Build on it · Deployments
LIQUA v3 · testnet · unaudited · experimental

Deployments, the whole register

Every LIQUA contract address belongs on this page and nowhere else. Being wrong about an address is the one mistake on a chain that cannot be walked back, so there is one register and this is it. Today the register is empty. Nothing is deployed on any public network, and the rows below say so in every line rather than showing you a throwaway local address dressed up as real.

There is no LIQUA address yet

No mainnet. No public testnet node. No token contract, anywhere, on any chain. If somebody hands you a LIQUA contract address, a presale address or a claim link, it is not us — there is nothing for it to point at. Check it against this page, and when this page is still empty, that is your answer.

The network

Chain id
73377
Chain id · hex
0x11ea1
Label
LIQUA (TESTNET)
Contracts deployed
0
Public RPC
NONE
Public explorer
NONE

On 17 Sep 2026 the ethereum-lists registry held 2,763 chain ids and none of them was 73377, so a wallet that adds it does not collide with a chain listed there. The registry keeps growing, so run the check again rather than trust the date:

node -e "fetch('https://chainid.network/chains_mini.json').then(r=>r.json()).then(c=>console.log(c.length+' ids · 73377 claimed by: '+(c.filter(x=>x.chainId===73377).map(x=>x.name).join(', ')||'nobody')))"
# → 2763 ids · 73377 claimed by: nobody        (17 Sep 2026)

The label reads Liqua (testnet). There is no devnet and there never was one.

The only thing answering on 73377 today is the DIVA bridge, and it binds to 127.0.0.1 — your own machine, reachable from nothing else. It serves balances out of the growth ledger rather than out of a token contract, which is why it returns empty code for every address you ask about: there is no code there to return.

Check it yourself

Two calls settle the whole page. Start the bridge from the Quick Start first, on its default port 8064, or they refuse to connect — which is itself the correct answer.

# which chain is this? → 0x11ea1, which is 73377
curl -s -X POST http://localhost:8064/rpc -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
# is there a contract at any address you like? → "0x", meaning no code lives there
curl -s -X POST http://localhost:8064/rpc -d '{"jsonrpc":"2.0","id":2,"method":"eth_getCode","params":["0x0000000000000000000000000000000000000001","latest"]}'

eth_getCode returning 0x is a deliberate answer, not a stub. A node that faked a balance or a token response here would let a wallet show you holdings that do not exist, so the bridge returns empty and lets the wallet tell the truth: no token here, which is a different thing from you holding zero.

The chain set

The contracts meant to run on chain 73377. Each one compiles, and several have green test suites — see Smart Contracts for what each does and what its tests do and do not prove. None of them has an address.

ContractAddress on 73377Deployed at
ContinuityRegistryorderbook-dex/contracts/ContinuityRegistry.solundeployed—
LiquaTokenevm/contracts/LiquaToken.solundeployed—
RewardEscrowevm/contracts/RewardEscrow.solundeployed—
VeLockevm/contracts/VeLock.solundeployed—
LiquidityLockerevm/contracts/LiquidityLocker.solundeployed—
SelfMineLiquidityorderbook-dex/contracts/SelfMineLiquidity.solundeployed—
Governor98evm/contracts/Governor98.solundeployed—
wLIQUAevm/contracts/wLIQUA.solundeployed—

The adjacent sets

Contracts that exist in the tree but are not part of chain 73377's own set. They are listed here for the same reason the chain set is: so that finding a .sol file in the repository never leaves anyone guessing whether it is live somewhere. None of them is.

ContractBelongs toAddress anywhere
BridgeVaultevm/contracts/BridgeVault.solthe asset bridgeundeployed
BridgedTokenevm/contracts/BridgedToken.solthe asset bridge · one per origin assetundeployed
TokenRegistryevm/contracts/TokenRegistry.solthe asset bridgeundeployed
Exchangeorderbook-dex/contracts/Exchange.solthe orderbook exchangeundeployed
Matchmakerorderbook-dex/contracts/Matchmaker.solthe orderbook exchangeundeployed
InfinityFactoryorderbook-dex/contracts/InfinityFactory.solthe orderbook exchange · AMM sideundeployed
InfinityPoolorderbook-dex/contracts/InfinityPool.solthe orderbook exchange · one per pairundeployed
LiquaStakingorderbook-dex/contracts/LiquaStaking.solthe orderbook exchangeundeployed
LiquaToken (exchange)orderbook-dex/contracts/LiquaToken.solthe orderbook exchange · not the chain's tokenundeployed
LiquaPresaleTokenevm/contracts/LiquaPresaleToken.solan earlier presale designundeployed
LiquaSwapevm/contracts/LiquaSwap.solan earlier presale designundeployed

MockERC20.sol and test/EmptyCallback.sol are test doubles. They exist to make other contracts testable, they will never be deployed anywhere, and they are named here only so the count of .sol files in the tree matches the count of rows on this page.

Two different contracts are both called LiquaToken

evm/contracts/LiquaToken.sol is the chain's asset: 18 decimals, and the only minter is RewardEscrow — no owner mint and no premine function. orderbook-dex/contracts/LiquaToken.sol is the exchange's staking token: an owner-mintable ERC-20 with a 100M hard cap. They are not the same contract and must never be treated as interchangeable. The day either gets an address, the address goes in the table above with its full path beside it.

Token-sale contracts

Smart Contracts states that the v3 set holds no token-sale contracts and that none will ever deploy. Two sale-era sources, LiquaPresaleToken.sol and LiquaSwap.sol, are still in the tree and still compile. They are listed above so nobody finds them and draws their own conclusion. Neither is deployed and neither is scheduled.

What a local run produces, and why it is not listed

Running node evm/suite-demo.mjs really does deploy LiquaToken and VeLock: real bytecode, real storage, inside a block. It is worth running. It is also worth understanding what the addresses it prints are.

Printing one of those on this page would be the worst kind of wrong: it would read as a real address, and someone would eventually send something to it. So the register stays empty until a deployment exists that someone else can independently find.

What would appear here

When a deployment happens, each row grows these columns, filled in from the deployment itself rather than typed by hand:

ColumnWhere the value comes from
AddressThe receipt of the deploying transaction, read back out of a sealed block.
Deployed atBlock height and the timestamp that block carries.
DeployerThe sender on that receipt.
Bytecode hashHashed from eth_getCode at the address, compared against the compiled artifact. A mismatch is reported here, not hidden.
SourceThe .sol path and the compiler version that produced the artifact.

Until every one of those can be filled from a real run, the row shows undeployed. A blank is not a gap in this page. It is the state of the thing.

Keep reading

LIQUA v3 · Deployments · testnet · unaudited · experimental · 7SLF STUDIOS