Production EVM contracts for Sentrix Chain — WSRX, Multicall3, SentrixSafe, TokenFactory.
| Contract | Purpose |
|---|---|
WSRX |
Wrapped SRX — ERC-20 (18 decimals) backed 1:1 by native SRX. Lets EVM dApps hold SRX as a token. |
Multicall3 |
Standard Multicall3 (mds1/multicall) for batched read/write calls. |
SentrixSafe |
Minimal multi-sig wallet (Gnosis Safe v1.4.1-derived) for treasury management. Currently configured 1-of-1 with the Sentrix Labs authority signer (0xa25236925bc10954e0519731cc7ba97f4bb5714b) on both chains — see docs/ADDRESSES.md. |
TokenFactory |
Deploys minimal ERC-20 tokens via a single function call. |
Network: Sentrix Mainnet 7119 + Sentrix Testnet 7120 — see docs/ADDRESSES.md for deployed addresses.
git clone --recurse-submodules https://github.com/sentrix-labs/canonical-contracts.git
cd canonical-contracts
# Install Foundry: https://getfoundry.sh
curl -L https://foundry.paradigm.xyz | bash && foundryup
# Install dependencies
make install
# Build + test
make build
make test
# Coverage
make coverage # outputs coverage/lcov.infonpm install @sentrix-labs/canonical-contracts ethersimport { ethers } from "ethers";
import abi from "@sentrix-labs/canonical-contracts/deployments/abi/WSRX.json";
import deployments from "@sentrix-labs/canonical-contracts/deployments/7119.json";
const provider = new ethers.JsonRpcProvider("https://rpc.sentrixchain.com");
const wsrx = new ethers.Contract(deployments.WSRX.address, abi.abi, provider);
console.log("totalSupply:", await wsrx.totalSupply());Full integration guide → docs/INTEGRATION.md.
End-to-end runbook: docs/DEPLOYMENT.md. High-level flow:
cp .env.example .env
$EDITOR .env
forge script script/DeployWSRX.s.sol --rpc-url sentrix_testnet --broadcast --private-key $DEPLOYER_PRIVATE_KEY
forge script script/DeployWSRX.s.sol --rpc-url sentrix_mainnet --broadcast --private-key $DEPLOYER_PRIVATE_KEY
# Update deployments/7119.json + 7120.json + CHANGELOG.md
# Tag release
git tag v1.0.0 && git push --tagsCI auto-creates a GitHub Release from the CHANGELOG entry.
Sourcify-equivalent verification is on the ecosystem readiness Tier 1 backlog. Until that lands, run manual verification per docs/DEPLOYMENT.md §12.
Health-check a deployment:
WSRX_ADDR=0x... MULTICALL3_ADDR=0x... SAFE_ADDR=0x... FACTORY_ADDR=0x... \
forge script script/CheckDeployment.s.sol --rpc-url sentrix_testnet- All contracts immutable (no upgrade proxy — see
docs/SECURITY_MODEL.md) - Pre-merge:
forge test,forge build --sizes,slither,gitleaks - Daily: scheduled slither + mythril runs (
security.yml) - Vulnerability disclosure:
security@sentrixchain.com(SECURITY.md)
| Doc | What it covers |
|---|---|
docs/ARCHITECTURE.md |
Contract relationships + 8↔18 decimal conversion |
docs/DEPLOYMENT.md |
Step-by-step deploy runbook |
docs/INTEGRATION.md |
Code examples (ethers, wagmi) |
docs/SECURITY_MODEL.md |
Trust assumptions + threat model |
docs/ADDRESSES.md |
Deployed addresses (auto-gen) |
docs/FAQ.md |
Common questions |
docs/STORAGE_LAYOUT.md |
Storage slots per contract |
docs/AUDIT.md |
Audit status + findings (when available) |
See CONTRIBUTING.md. PRs welcome — forge test + forge fmt --check + slither --fail-high must pass before merge.
- GitHub Discussions — https://github.com/sentrix-labs/canonical-contracts/discussions for integration questions, contract design feedback, deployment help.
- Org profile — https://github.com/sentrix-labs
BUSL-1.1 (see LICENSE + NOTICE). Change Date: 2030-01-01 → MIT.
Multicall3.sol is a verbatim mirror of mds1/multicall (MIT) — license preserved in the file's SPDX header.
Built by Sentrix Labs for Sentrix Chain.
