DraftFor review by the association. Bracketed items are placeholders.
Network 94, block 27'322'716

Documentation

Build with SwissDLT

Standard Ethereum tooling works. This covers what is specific to SwissDLT.

Quickstart

Add the network to an EVM wallet, get native BCTS for gas, and read the chain.

Network nameSwissDLT
RPC URLhttps://rpc.swissdlt.ch (fallback https://rpc2.swissdlt.ch)
Chain ID94
Currency symbolBCTS
Block explorerhttps://explorer.swissdlt.tech

Gas is native BCTS on chain 94BCTS tokens on Polygon, BNB Chain, Hedera or TON, and wrapped BCTS on SwissDLT, cannot pay gas. There is no public faucet; ask an operator or the association for a small amount.

First read

curl https://rpc.swissdlt.ch \
  -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
# {"jsonrpc":"2.0","id":1,"result":"0x5e"}

viem

import { createPublicClient, http, defineChain } from 'viem'

export const swissdlt = defineChain({
  id: 94, name: 'SwissDLT',
  nativeCurrency: { name: 'BCTS', symbol: 'BCTS', decimals: 18 },
  rpcUrls: { default: { http: ['https://rpc.swissdlt.ch', 'https://rpc2.swissdlt.ch'],
                        webSocket: ['wss://rpc.swissdlt.ch/ws'] } },
  blockExplorers: { default: { name: 'SwissDLT Explorer', url: 'https://explorer.swissdlt.tech' } },
})

const client = createPublicClient({ chain: swissdlt, transport: http() })
console.log(await client.getBlockNumber())

RPC and WebSocket

HTTPhttps://rpc.swissdlt.ch, https://rpc2.swissdlt.ch
WebSocketwss://rpc.swissdlt.ch/ws (the root path does not upgrade)
Namespaceseth_*, net_*, web3_*; clique_*, txpool_* and miner methods are not exposed
AccessNo key; cross-origin requests allowed; no documented rate limit or service level
Also listedhttps://94.rpc.thirdweb.com
Endpoints may changeA separate archive and public RPC node is planned so that no signer exposes RPC. This page will always list the canonical endpoints. Large historical backfills need the operators' agreement first.

Follow new blocks

const ws = new WebSocket('wss://rpc.swissdlt.ch/ws')
ws.onopen = () => ws.send(JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'eth_subscribe', params: ['newHeads'] }))
ws.onmessage = (e) => { const m = JSON.parse(e.data); if (m.params) console.log(parseInt(m.params.result.number, 16)) }

Who sealed a block?

In Clique the miner field carries signer votes, not the producer. Recover the sealer from the last 65 bytes of extraData: hash the RLP-encoded header with those bytes removed and recover the signing address. This site does exactly that in your browser; see assets/js/site.js.

Gas and EVM

  • EVM level Berlin. Compile with evmVersion: "berlin"; Shanghai's PUSH0 and later opcodes will fail.
  • Send legacy (type 0) transactions. There is no EIP-1559 base fee, although some chain registries say otherwise.
  • Gas price 1 gwei is the observed norm. Blocks every 4 seconds.
  • No safe or finalized block tags. Wait for confirmations and follow the association's checkpoint policy for high-value flows.

Foundry

# foundry.toml
[profile.default]
evm_version = "berlin"
solc = "0.8.24"

forge create src/MyToken.sol:MyToken --rpc-url https://rpc.swissdlt.ch \
  --legacy --gas-price 1gwei --private-key $KEY

Hardhat

networks: {
  swissdlt: { url: 'https://rpc.swissdlt.ch', chainId: 94, gasPrice: 1_000_000_000 }
},
solidity: { version: '0.8.24', settings: { evmVersion: 'berlin', optimizer: { enabled: true, runs: 200 } } }

Contracts

Canonical addresses as observed on 7 November 2026. A signed, versioned registry from the association will replace this table.

SwissDLT, chain 94

NameAddressNote
Wrapped BCTS (A)0x4C9204BE7d41E8b1d0f8025A60110d866C0574AdUsed by SwissDLT Swap and Token Studio; fully backed in the last snapshot
Wrapped BCTS (B)0x0937f6d21Ee71d1F72127cFDC28B2D17af21cba2Second deployment, fully backed; canonical status pending the registry
GOG voucher token0x43cf6bfb19422e5a9ae2a411929f7e48d7e7106facrevis / Gossau; supply 205'000
Swap factory0x3c17473e017806b1b93A406B79f2272faaA6cD99Uniswap v3; see Build for the full set
Token Studio launcher0xfaf3ef2B344388b48117D336bCCDbcA7999DECdBFixed-supply issuance
SwissOracle token (SORC)0x021eeF3b1036de6dF007c56875eAd2ebeC2B0d04SwissOracle; fixed supply of 1 billion, no further mint; not audited
SwissOracle factory0x25bAE5942fA0DB32312839739FE499A658227d91Market registry and staking; not audited
SwissOracle fee distributor0xfD7f9580d4EEDb2AD9A1E6Fd1F0bEb91E3254dfFFee split to stakers, creators, treasury and resolvers
SwissOracle liquidity vault0x73C13084b3a53fc1772F49a263e57B36c4723aBfSealed full-range position; fees only, no principal exit
pdCHF0x44b6169faa2E70865817877eda427080025723EAIssuer, reserves and peg not established
ChainBridge0xDac6e138939459ccB3a150419D408Dccd8a01FfeLegacy Polygon bridge, relayer threshold 1
ERC20Handler0x61F9261A36164f0664c49434C6F54Fed6f47c190Legacy bridge handler
Earlier Uniswap v3 factory0x5bBC64d6c63b1a6D5E8662378ebAF39949930B5CHistorical: 13 pools and 249 swaps; not used by the new Swap
TestToken (TTK)0x89003595E33c6874f1add04F9cF0e6f8669F2b48Test asset; not part of production lists

Governance on Polygon

Association DAO (Moloch v3 / Baal)0xdd40b89417eed3bf55f7a7a066eccbcc8c3f0971
Voting shares (vBCTS)0x157d1b0e613c4c638d58fc89bb4ee54d1bf79a8f
Non-voting loot (nBCTS)0x577af8222fa068c8fdd0a56e11d884b7e28e087e
Treasury Safe0xcc4c17b5a95d9c0295b443e9179242e90d44feb7

Assets

On SwissDLT

  • BCTS is the native gas asset: 72'000'003 allocated at genesis, most of it in six treasury accounts; there is no block reward.
  • Wrapped BCTS exists in two backed deployments (see Contracts). Wrap and unwrap 1:1 against native BCTS.
  • Bridged from Polygon through the legacy bridge: WPOL 4'562.862, DAI 72.213, ZCHF 1.1 (observed supplies, matching the Polygon lockbox).

BCTS on other chains

These are issued directly by Blockchain Trust Solutions AG or bridged via Axelar. They are not minted by a SwissDLT bridge and cannot pay gas on chain 94.

Polygon0xce4D3160705fEBb069617A9AD919753055B56e49Direct issuance, 2'600'000
BNB Chain0xa2D99A48B6458aaF7296ae5361B41824A57F1d0eDocumented representation
BNB Chain0x09a1ad50ac7b8ddd40bafa819847ab1ea6974a4fSecond representation; role to be stated in the registry
Hedera0.0.4373002HTS token, 850'000
TONEQCqR28s…SxD8rJetton, max 1'000'000
Not an official SwissDLT assetA token on World Chain named "SwissDLT/BCTS" with a supply of 100'000'000'000 (0xC6C5…011E) is not affiliated with SwissDLT or the association. Treat any token not listed here as unverified.

Displayed pool reserves on other chains are not liquidity or a market price. We do not publish token prices.

Bridges

Legacy Polygon bridge (ChainBridge)

A lock-and-mint bridge between Polygon and SwissDLT with a relayer threshold of one. Last observed deposits in September 2023. Relayer identity, liveness and recovery process are not published, so we recommend against new deposits until the association either operates it properly or decommissions it.

DogeOS MVP

Test bridge to DogeOS Chikyū, not configured. See Build, bridge.

Planned: Hyperlane corridor

Native BCTS collateral on SwissDLT backing a synthetic ERC-20 on Base, verified by a 3-of-5 validator set of independent operators with rate limits, timelocked administration and daily supply reconciliation. Planning estimate for the first corridor: 12 to 22 person-weeks plus an external review.

Data and APIs

SourceEndpointNotes
Explorerexplorer.swissdlt.tech/data/gog.jsonGOG transfers with coverage metadata; hourly
Explorerexplorer.swissdlt.tech/data/gog-feed.xmlAtom, latest 25 events
Explorerexplorer.swissdlt.tech/data/urstamm-registry.jsonUnverified candidates, clearly marked
SwissProoftimestamp.swissdlt.tech/api/v1REST; OpenAPI document included
Swapswap.swissdlt.tech/api/health, /.well-known/contracts.jsonHealth and pinned ABIs
Token Studiostudio.swissdlt.tech/health, /.well-known/contracts.jsonHealth and contracts
Bridgebridge.swissdlt.tech/api/healthReports not_ready until configured

MCP endpoints for AI agents are listed under Build, AI agents.

For AI agents and Thirdfy

Each service keeps its own Thirdfy package. The packages are prepared for submission: nothing has been submitted, no listing is claimed, and Thirdfy wallet execution on chain 94 is not established. Three files on this site tie the services together.

SwissDLT association members/.well-known/swissdlt-members.jsonThe four consortium members, their websites and which service each provides
Thirdfy submission index/.well-known/thirdfy-index.jsonappId, MCP endpoint, manifest, readiness and contracts file for each service
SwissDLT contracts/.well-known/contracts.jsonEvery SwissDLT contract and service address on chain 94 with explorer link, deployment block and transaction, ABI and source
SwissDLT protocol facts/.well-known/protocols.jsonNetwork facts and the SwissProof, Bridge, Swap and Token Studio protocols, each value with its source

Checked 12:02 UTC, 8 November 2026. "Not published yet" means the file did not answer at that check; the submission index records each check.

Run a node

Signers are admitted by the association and voted in through Clique. Archive and RPC nodes can be run by members to serve applications.

  • Client: go-ethereum. Public RPCs run 1.11 and 1.12; 1.13 is the newest release that can still seal Clique blocks, and 1.14 and later cannot. Upgrades are coordinated across all signers.
  • Genesis: use the current chain-94 genesis from the SwissDLT node setup repository. Older guides for chain 999 or 99 are for retired networks.
  • Signers: never expose RPC or an unlocked account on a signer; keep static peers to at least three other nodes; back up keystores offline.
  • Operations: a watchdog that restarts a stuck client, automatic recovery for hung machines, daily disk snapshots, and alerts for halted blocks, fewer than five active signers, unhealthy nodes and full disks.
Joining as a signerThe admission procedure linking the association resolution, the DAO record and the Clique vote will be published with the statutes. [Contact for operator applications]

Governance

The network is governed by the Verein Nodebetreiber der SwissDLT. Its on-chain record is a DAO on Polygon, created on 3 June 2023, with 13 member addresses, 30 proposals and 109 votes between June 2023 and July 2024. Quorum is 54% and the voting period one week.

What is still missing, and planned: published statutes and board, an operator map linking each signer key to a named organisation, a current meeting cadence, and resolution of the remaining full-permission administrative key on the DAO. See About, governance.

Security and incidents

  • Report vulnerabilities to [security@swissdlt.ch]. Please do not test on mainnet with value.
  • A status line is published within one hour of a confirmed incident, and a post-mortem with owner and corrective actions within 14 days.
  • None of the new apps has completed an independent security audit yet. Use small amounts.

FAQ

Is SwissDLT a public blockchain?

Anyone can read it and send transactions; only admitted signers seal blocks. It is a permissioned consortium chain.

Where do I get BCTS?

Native BCTS on chain 94 comes from existing holders; there is no faucet or exchange listing. We do not publish a price.

Is there an SDK?

No dedicated SDK is needed. viem, ethers, Foundry and Hardhat work with the settings above.

Is data stored in Switzerland?

Chain data is replicated on every node. Three signer nodes run in Zurich; the full hosting map will be part of the operator map.