The TXCL Book
Everything you need to know to use, build on, or operate the TXCL Chain ecosystem — from connecting MetaMask to running the bridge relayer.
Preface
This book documents the entire TXCL ecosystem: a public EVM-compatible blockchain, a 2-way cross-chain bridge to BNB Smart Chain, a native automated market-maker DEX, and a self-custody web wallet — all built and deployed by the TradeXcele team.
It is structured as five parts:
- Part I — Foundations: What TXCL is and why it exists.
- Part II — User Guide: How regular users interact with everything.
- Part III — Builder Guide: How developers integrate, deploy contracts, and build dApps.
- Part IV — Operations: Running, monitoring, securing the production stack.
- Part V — Build History: The 6-phase rollout that produced the current system.
How to read this book: Skip to whichever chapter matches your role. Users can read Parts I & II. Devs add Part III. Ops/admins add Part IV. The reference at the back has every link, address, and command in one place.
What Is TXCL?
Overview
TXCL Chain is a public EVM-compatible blockchain operated by TradeXcele. It runs Ethereum-compatible smart contracts, has a native gas coin (TXCL), and is freely accessible to any wallet that supports custom EVM chains (MetaMask, Trust Wallet, Rabby, Coinbase Wallet, OKX Wallet).
It exists alongside — and is bridged to — the existing TXC token on BNB Smart Chain.
47294 · Native coin TXCL · Block time 5s · Consensus Clique PoA · Gas limit 30M · Genesis supply 100M TXCL
The Three Tokens
TXCL involves three distinct assets, each with a clear purpose. Understanding the difference is critical.
| Token | Where it lives | What it is | Used for |
|---|---|---|---|
| TXC | BSC (BEP-20) | Memecoin, contract 0x6F02…460E8F | Buy/sell on PancakeSwap |
| TXCL | TXCL Chain (native) | Native gas coin (NOT a contract) | Pay tx fees on TXCL Chain |
| wTXC | TXCL Chain (ERC-20) | Wrapped TXC (contract 0x485e…99CEF) | Bridged 1:1 from TXC |
Why It Exists
- Brand & identity — "Powered by TXCL Chain" is a much stronger story than "BEP-20 token on BSC."
- Fast, cheap transactions — 5s blocks, near-zero gas costs. Great for high-frequency utility (airdrops, claims).
- Sovereign decisions — TradeXcele controls block production and chain rules.
- Cross-chain liquidity — wTXC on TXCL stays 1:1 backed by TXC locked on BSC, so the bridge keeps the asset price unified.
Honest caveat: TXCL Chain is currently a single-validator PoA chain. This means it is not censorship-resistant the way decentralized L1s are. The decentralization roadmap in the public chain page acknowledges this and lays out phased validator expansion.
Architecture
System Diagram
┌────────────────────────────────────────────────────────────────────┐
│ Single VPS · 72.61.118.50 · Ubuntu 24.04 │
│ │
│ ┌──────────┐ ┌─────────────┐ ┌──────────────────┐ │
│ │ geth │ │ nginx + │ │ PHP-FPM 8.2 │ │
│ │ Clique │◄───►│ Lua method │◄────►│ Web UIs + │ │
│ │ ChainId │ │ allowlist │ │ Block indexer + │ │
│ │ 47294 │ │ TLS 443 │ │ Bridge APIs │ │
│ └──────────┘ └─────────────┘ └──────────────────┘ │
│ ▲ ▲ │ │
│ │ │ ▼ │
│ ┌────┴──────────────────┴────┐ ┌──────────────┐ │
│ │ Bridge Relayer (Node.js) │◄───────►│ MariaDB + │ │
│ │ watches BSC + TXCL │ │ file state │ │
│ │ signs vouchers │ └──────────────┘ │
│ └────────────────────────────┘ │
│ ▲ │
└──────────────────┼─────────────────────────────────────────────────┘
│ HTTPS
┌───────────┴────────────┐
│ BSC Mainnet │
│ TXC token │
│ TXCBridge.sol │
└────────────────────────┘
Components
| Component | Tech | Purpose |
|---|---|---|
| Chain node | Geth 1.14.x · Clique PoA | Block production, state, RPC |
| Public RPC | nginx + PHP proxy | Method-allowlisted JSON-RPC |
| Block explorer | PHP + MariaDB | Block/tx/address browsing |
| Bridge contracts | Solidity 0.8.20 | Lock/mint/burn/unlock |
| Bridge relayer | Node.js + ethers v6 | Cross-chain message passing |
| Native AMM | Solidity 0.8.20 | TXCL ↔ wTXC swaps |
| Web wallet | HTML/JS/PHP + ethers | Self-custody key management |
Data Flows
BSC → TXCL Bridge
1. User → TXCBridge.depositToTXCL(amount) [BSC tx, signed by user]
2. Event DepositToTXCL emitted
3. Relayer picks up event after 3 BSC confirmations
4. Relayer → TXCLBridge.mintFromBSC(user, amount, bscTxHash) [TXCL tx]
5. wTXC.mint(user, amount) called by bridge
6. User holds wTXC on TXCL
TXCL → BSC Bridge
1. User → TXCLBridge.bridgeBackToBSC(amount) [TXCL tx, signed by user]
2. wTXC burned, BridgeBackToBSC event emitted
3. Relayer picks up event after 2 TXCL confirmations
4. Relayer signs voucher: keccak256(user, amount, txclTxHash, bridgeAddr, chainId)
5. User reads voucher from /bridge/api/voucher.php
6. User → TXCBridge.withdrawFromTXCL(user, amt, hash, sig) [BSC tx, signed by user]
7. Bridge verifies relayer sig, transfers TXC to user
Getting Started
Add TXCL Chain to Your Wallet
The easiest path: visit tradexcele.cloud/add/ and click "Add TXCL Chain to Wallet". Your wallet will prompt to add the network.
Manual setup if needed:
Network Name: TXCL Chain
RPC URL: https://tradexcele.cloud/rpc/
Chain ID: 47294
Currency Symbol: TXCL
Block Explorer: https://tradexcele.cloud/chain
After switching networks, your wallet shows a 0 TXCL balance. That's normal — you need gas before you can do anything.
Get TXCL Gas
Two ways:
- Faucet — Visit tradexcele.cloud/chain/faucet/, paste your address, claim free TXCL (rate-limited).
- Airdrop — If you're a TradeXcele user, claim ~155 TXCL from the airdrop portal at tradexcele.cloud/airdrop/.
Buy TXC on PancakeSwap
TXC is a BEP-20 token on BSC. Buy with BNB on PancakeSwap:
https://pancakeswap.finance/swap?outputCurrency=0x6F029555A065Ac3334aA6aDb9957efe0bA460E8F
Then use the bridge (Chapter 4) to move it to TXCL Chain as wTXC.
Using the Bridge
The bridge is a 2-way conversion between BSC TXC and TXCL Chain wTXC.
| Direction | You start with | You end with | Time | Steps |
|---|---|---|---|---|
| BSC → TXCL | TXC on BSC | wTXC on TXCL | ~30s | 1 (auto-completes) |
| TXCL → BSC | wTXC on TXCL | TXC on BSC | ~16s + claim | 2 (burn, then claim) |
BSC → TXCL (Lock & Mint)
- Visit tradexcele.cloud/bridge/
- Connect MetaMask (must hold TXC on BSC)
- Direction tab: BSC → TXCL
- Enter amount (min 1 TXC, fee 0.1 TXC)
- Click Bridge → MetaMask prompts Approve (one-time per wallet)
- Then prompts the actual Lock transaction
- Wait ~30 seconds — relayer auto-mints wTXC on TXCL
TXCL → BSC (Burn & Claim)
- Visit tradexcele.cloud/bridge/
- Direction tab: TXCL → BSC
- Connect MetaMask, switch to TXCL Chain
- Enter amount of wTXC to bridge back
- Approve wTXC spending (one-time), then sign the burn tx
- Wait ~16 seconds for the relayer's voucher to appear
- Click Claim on BSC — MetaMask switches to BSC, you sign the withdrawal
- TXC arrives in your BSC wallet
Always leave a small amount of native gas in each wallet. You need TXCL gas to burn wTXC, and BNB gas to claim on BSC.
Using the DEX (Swap)
The TXCLSwap AMM at tradexcele.cloud/swap/ trades TXCL native ↔ wTXC directly on TXCL Chain (no bridge needed).
Swap workflow
- Visit
/swap/ - Connect wallet (auto-switches to TXCL Chain)
- Enter "You Pay" amount
- The "You Receive" updates automatically based on pool reserves
- Click Swap → MetaMask signs once (or twice if approving wTXC)
Add liquidity (LP)
Liquidity providers earn 0.30% of every trade. To add LP, send addLiquidity(maxToken) to TXCLSwap with msg.value = nativeAmount.
Using the Wallet
The TXCL Wallet at tradexcele.cloud/wallet/ is a self-custody web wallet (PWA-installable). Keys never leave your browser.
Create wallet
- Visit
/wallet/ - Click Create New Wallet
- Set strong password (min 6 chars; longer is better)
- Save the 12-word seed phrase OFFLINE on paper
- Click "I've Saved It" — wallet opens
Key features
- Multi-account — Tap account pill → "+ Add" creates HD-derived sub-account
- Custom token import — Tokens section → "+ Add" → paste contract address
- Network switching — Tap network pill (TXCL ↔ BSC)
- Send/Receive — Native + ERC-20 transfers, with QR codes
- PWA install — Add to home screen for app-like experience
Security
| Encryption | AES-GCM 256-bit |
| Key derivation | PBKDF2 with 250,000 iterations |
| Storage | localStorage (encrypted blob only) |
| Signing | Local — private key never sent over the wire |
| HTTPS only | Strict transport security |
Network Reference
TXCL Chain
| Chain ID | 47294 (0xb8be) |
| Symbol | TXCL |
| Decimals | 18 |
| Public RPC | https://tradexcele.cloud/rpc/ |
| Block explorer | https://tradexcele.cloud/chain |
| Block time | 5 seconds (Clique PoA) |
| Gas limit | 30,000,000 |
| EVM target | Paris (no PUSH0) |
| Genesis supply | 100,000,000 TXCL |
BNB Smart Chain (for cross-chain)
| Chain ID | 56 (0x38) |
| RPC | https://bsc-dataseed.binance.org/ |
| Explorer | https://bscscan.com |
Smart Contracts
wTXC (Wrapped TXC)
Standard ERC-20 with onlyBridge mint/burn. Lives on TXCL Chain.
| Address | 0x485eaB9D8996A1efAD36e621D86834bb8Ab99CEF |
| Decimals | 18 |
| Bridge can | mint(to, amount) · burnFrom(from, amount) |
| Owner can | setBridge(addr) · setPaused(bool) |
TXCBridge (BSC side)
| Address | 0xB4C5E22Aa4A4f274078631e899C79B02Dc8ce09f |
| Min deposit | 1 TXC |
| Bridge fee | 0.1 TXC |
function depositToTXCL(uint256 amount) external;
function withdrawFromTXCL(
address user,
uint256 amount,
bytes32 txclTxHash,
bytes signature
) external;
TXCLBridge (TXCL side)
| Address | 0x8f2D2FAfB08ca517604EDf5Be67f60AFBa20B13e |
| Relayer | 0xd6251a24AC7D2519AFE6276F77cD09afFe1BD958 |
function mintFromBSC(address user, uint256 amount, bytes32 bscTxHash) external; // onlyRelayer
function bridgeBackToBSC(uint256 amount) external; // user-callable
TXCLSwap (AMM)
| Address | 0xc0E7DA0c2222b079B894518c2D313C57fB86825d |
| Fee | 0.30% to LPs |
| Math | Constant product (x·y = k) |
function addLiquidity(uint256 maxToken) external payable returns (uint256 lpMinted);
function removeLiquidity(uint256 lpAmount) external returns (uint256 nativeOut, uint256 tokenOut);
function swapNativeToToken(uint256 minTokenOut) external payable returns (uint256);
function swapTokenToNative(uint256 tokenIn, uint256 minNativeOut) external returns (uint256);
function quoteNativeToToken(uint256 nativeIn) external view returns (uint256);
function quoteTokenToNative(uint256 tokenIn) external view returns (uint256);
Build Your Own dApp
Connect to TXCL via ethers.js
import { ethers } from "ethers";
const TXCL = {
chainId: 47294,
rpc: "https://tradexcele.cloud/rpc/",
};
// Read-only
const provider = new ethers.JsonRpcProvider(TXCL.rpc);
const block = await provider.getBlockNumber();
// User signing (browser, with MetaMask)
const browserProvider = new ethers.BrowserProvider(window.ethereum);
const signer = await browserProvider.getSigner();
Add network programmatically
await window.ethereum.request({
method: 'wallet_addEthereumChain',
params: [{
chainId: '0xb8be',
chainName: 'TXCL Chain',
nativeCurrency: { name: 'TXCL', symbol: 'TXCL', decimals: 18 },
rpcUrls: ['https://tradexcele.cloud/rpc/'],
blockExplorerUrls: ['https://tradexcele.cloud/chain']
}]
});
Deploy your own contract
// Compile with solc 0.8.20, evmVersion: 'paris'
// Deploy via Remix → Injected Provider → connect to TXCL Chain
// Or via Hardhat:
module.exports = {
solidity: { version: "0.8.20", settings: { evmVersion: "paris" } },
networks: {
txcl: {
url: "https://tradexcele.cloud/rpc/",
accounts: [process.env.PRIVATE_KEY],
chainId: 47294,
}
}
};
Important: TXCL Chain runs Geth without the PUSH0 opcode (Shanghai). Always compile with evmVersion: "paris" to avoid "invalid opcode: PUSH0" errors.
APIs & RPC
Public JSON-RPC
POST https://tradexcele.cloud/rpc/
Content-Type: application/json
{ "jsonrpc": "2.0", "method": "eth_chainId", "params": [], "id": 1 }
→ { "jsonrpc": "2.0", "id": 1, "result": "0xb8be" }
Allowed methods: eth_*, net_*, web3_* (excluding eth_sign*, eth_accounts, eth_sendTransaction).
Rate limit: 20 req/sec per IP at nginx, 30 req/sec at PHP layer.
Bridge APIs
| Endpoint | Purpose |
|---|---|
GET /bridge/api/vouchers.php?user=0x… | List pending vouchers ready to claim |
GET /bridge/api/voucher.php?hash=0x… | Get one voucher (signature, amount) |
GET /bridge/api/history.php?user=0x… | Bridge tx history |
GET /bridge/api/mark_claimed.php?hash=…&bsc_tx=… | Mark voucher as claimed |
Explorer APIs
| Endpoint | Purpose |
|---|---|
GET /chain/api/transfers.php?addr=0x…&limit=N | Address transfer history |
GET /chain/api/stats.php | Chain stats (height, addresses, txs) |
Server Layout
/var/lib/geth/data/ chain database
/var/lib/geth/treasury_keystore/ 70M TXCL wallet
/var/lib/geth/airdrop_keystore/ 30M TXCL wallet
/var/lib/geth/relayer_keystore/ bridge relayer wallet
/etc/geth/genesis.json chain config
/etc/geth/keystore.pwd validator passphrase
/etc/geth/relayer_priv.txt relayer privkey (mode 600)
/home/tradexcelses/bridge/contracts/ Solidity source
/home/tradexcelses/bridge/relayer/ Node.js relayer
/home/tradexcelses/bridge/relayer/state/ state files (last_block, vouchers)
/home/tradexcelses/bridge/relayer/.env relayer config (mode 600)
/home/tradexcelses/bridge/deployment-* deployment manifests
/home/tradexcelses/tradexcele.cloud/ web root
├── add/ add to MetaMask
├── airdrop/ airdrop claim
├── bridge/ bridge UI + API
├── chain/ block explorer
├── deploy/ one-click BSC deploy (used)
├── relayer-update/ relayer migration tool (used)
├── rpc/ hardened JSON-RPC proxy
├── swap/ DEX UI
├── wallet/ self-custody wallet (PWA)
└── index.php
/etc/systemd/system/geth.service chain auto-start
/etc/systemd/system/txcl-bridge-relayer.service relayer auto-start
/var/log/txcl-bridge-relayer.log relayer log
Running Services
| Service | Auto-start | Restart on crash |
|---|---|---|
geth | ✅ | ✅ Restart=always |
nginx | ✅ | ✅ |
php8.2-fpm | ✅ | ✅ |
mariadb | ✅ | ✅ |
txcl-bridge-relayer | ✅ | ✅ Restart=always, RestartSec=15 |
Common ops commands
# Check chain
systemctl status geth
journalctl -fu geth
# Restart relayer (after .env changes)
systemctl restart txcl-bridge-relayer
tail -f /var/log/txcl-bridge-relayer.log
# Check relayer state
ls /home/tradexcelses/bridge/relayer/state/vouchers/
cat /home/tradexcelses/bridge/relayer/state/deposits.log
cat /home/tradexcelses/bridge/relayer/state/withdrawals.log
Security
Defense layers
| Layer | What it does |
|---|---|
| UFW firewall | Default deny, only 22/80/443 + mail open. SSH rate-limited (LIMIT) |
| fail2ban | Bans IPs after failed SSH attempts |
| nginx rate-limit | 20 req/sec per IP on /rpc/ |
| RPC method allowlist | PHP proxy blocks admin/debug/personal/miner methods |
| Replay protection | processedDeposits / processedWithdrawals mappings |
| ECDSA voucher sigs | Withdrawals require relayer signature |
| Keystore permissions | Mode 600 root or service user only |
| HTTPS / HSTS | TLS via Let's Encrypt, auto-renewed |
| Hot wallet limits | Relayer holds only ~$30 in hot funds |
Threat model
- VPS compromise: Attacker can read relayer key → forge bridge messages → max damage limited by TXC pool size + locked LP
- Relayer key theft: Bridge owner can call
setRelayer(newAddr)to invalidate stolen key - Validator key theft: Catastrophic — attacker can rewrite chain state. Mitigation: keystore mode 600, key never copied off VPS
- RPC DoS: Rate-limited at nginx + PHP. Cloudflare-fronting recommended for stage 2
Monitoring & Backups
Daily health checks
# Block height advancing?
curl -sX POST https://tradexcele.cloud/rpc/ -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# Relayer alive?
systemctl is-active txcl-bridge-relayer
# Disk space?
df -h /var/lib/geth/data
# Relayer balance?
curl -sX POST https://bsc.publicnode.com/ -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xd6251a24AC7D2519AFE6276F77cD09afFe1BD958","latest"],"id":1}'
Backup strategy
- Validator key: Backup
/var/lib/geth/data/keystore/+ passphrase OFFLINE on encrypted hardware - Treasury / airdrop / relayer keystores: Same — offline encrypted backup
- Chain data: Daily snapshots of
/var/lib/geth/data/to/var/backups/geth/ - Web files: Existing TradeXcele backup process covers
/home/tradexcelses/ - Database: mysqldump nightly
Build History
This section documents how the system was actually deployed, in order. Useful for reproducing or extending.
| Date | Milestone | Outcome |
|---|---|---|
| May 6 2026 | TXCL chain genesis & first block | Chain ID 47294 live, signer producing blocks every 5s |
| May 6 2026 | Wallets generated (treasury, airdrop, faucet) | 100M TXCL allocated at genesis |
| May 6 2026 | Block explorer + faucet deployed | tradexcele.cloud/chain/ live |
| May 7 2026 | Hero rebuild + transparency page | tradexcele.com/TXC and chain landing |
| May 7 2026 | Bridge contracts compiled | 4 Solidity contracts ready |
| May 7 2026 | Phase 1: TXCL contracts deployed | wTXC + TXCLBridge + TXCLSwap live (gas: 0.0028 TXCL) |
| May 7 2026 | Security hardening | RPC allowlist, UFW, fail2ban, txclops user |
| May 7 2026 | Phase 2: BSC TXCBridge deployed | tx 0x03584f9c… |
| May 7 2026 | Phase 3: VPS-only relayer migration | Hot key off MetaMask, relayer service started |
| May 7 2026 | End-to-end bridge test | 5 TXC bridged, 4.9 wTXC minted in 30s |
| May 7 2026 | TXCL Wallet (PWA) deployed | Self-custody web wallet with multi-account |
The 6 Phases
Phase 0 — Chain Bootstrap (Day 1)
- Install Geth 1.14.x
- Generate genesis with chainId 47294, allocations
- Generate signer + treasury + airdrop + faucet wallets
geth init genesis.json- systemd unit, start node
Phase 1 — TXCL Contracts (Day 2)
- Solc 0.8.20 with
evmVersion: paris - Deploy wTXC, then TXCLBridge with constructor
(wTXC, relayer) - Wire
wTXC.setBridge(TXCLBridge) - Deploy TXCLSwap with constructor
(wTXC)
Phase 2 — BSC Contract (Day 2)
- Deploy TXCBridge on BSC via Remix or one-click
/deploy/ - Constructor:
(TXC_TOKEN, RELAYER) - Verify on BSCScan
Phase 3 — Relayer Migration (Day 2)
- Generate fresh VPS-only relayer wallet (key never leaves server)
- Update TXCLBridge.relayer (free, on TXCL)
- Update TXCBridge.relayer (BSC tx, ~$0.10 gas)
- Fund new relayer with 0.04 BNB + 5 TXCL
Phase 4 — Service Startup
- Configure
.envwith addresses + relayer key - Install systemd unit
- Start service, verify "relayer check OK" in logs
Phase 5 — End-to-End Test
- User: bridge 5 TXC BSC → TXCL
- Wait 30s, verify 4.9 wTXC minted
- User: bridge wTXC back, claim TXC on BSC
- Confirm balance reconciliation
Phase 6 — User Tooling
- Self-custody wallet (PWA)
- Add-to-MetaMask landing page
- Documentation book (this page)
All Links
Public-facing
| tradexcele.cloud/ | TXCL Chain root |
| tradexcele.cloud/add/ | Add to MetaMask |
| tradexcele.cloud/wallet/ | Self-custody wallet |
| tradexcele.cloud/bridge/ | BSC ↔ TXCL bridge |
| tradexcele.cloud/swap/ | Native DEX |
| tradexcele.cloud/chain/ | Block explorer |
| tradexcele.cloud/chain/faucet/ | Free TXCL faucet |
| tradexcele.cloud/airdrop/ | Airdrop claim |
| tradexcele.cloud/rpc/ | Public JSON-RPC |
| tradexcele.cloud/docs/ | This book |
| tradexcele.com | Brand site |
| tradexcele.com/TXC/ | TXC token landing |
| tradexcele.com/TXC/transparency.php | Token governance disclosure |
External
| DEX Screener | Live TXC chart |
| BSCScan TXC | TXC token contract |
| BSCScan TXCBridge | BSC bridge contract |
| PancakeSwap | Buy/sell TXC |
| Chainlist.org | TXCL listing (when submitted) |
All Addresses
System wallets
| Role | Address | Holds |
|---|---|---|
| Validator (signer) | 0xa360dc879cb9d0d5f03aa4df41ebc194e13a01b3 | Signs blocks |
| Treasury | 0x867efab20c1d570e53f4423c734522369b1dc0f8 | 70M TXCL |
| Airdrop Distributor | 0x10e1777cd076f9c3fe2746099d253ddf2db72e07 | 30M TXCL |
| Faucet | 0xfEd893e7ab65A9EaE03168C5415d8c749e320936 | Refillable TXCL |
| Bridge Relayer | 0xd6251a24AC7D2519AFE6276F77cD09afFe1BD958 | 0.04 BNB + 5 TXCL |
Smart contracts
| Network | Contract | Address |
|---|---|---|
| BSC (56) | TXC token | 0x6F029555A065Ac3334aA6aDb9957efe0bA460E8F |
| BSC (56) | TXCBridge | 0xB4C5E22Aa4A4f274078631e899C79B02Dc8ce09f |
| TXCL (47294) | wTXC | 0x485eaB9D8996A1efAD36e621D86834bb8Ab99CEF |
| TXCL (47294) | TXCLBridge | 0x8f2D2FAfB08ca517604EDf5Be67f60AFBa20B13e |
| TXCL (47294) | TXCLSwap | 0xc0E7DA0c2222b079B894518c2D313C57fB86825d |
CLI Commands
SSH & service ops
ssh -i ~/.ssh/txcl_vps root@72.61.118.50
systemctl status geth
systemctl status txcl-bridge-relayer
journalctl -fu geth
tail -f /var/log/txcl-bridge-relayer.log
systemctl restart txcl-bridge-relayer
systemctl restart geth
Quick chain queries
# Block height
curl -sX POST https://tradexcele.cloud/rpc/ -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# Address balance
curl -sX POST https://tradexcele.cloud/rpc/ -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xADDR","latest"],"id":1}'
# wTXC total supply
curl -sX POST https://tradexcele.cloud/rpc/ -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_call",
"params":[{"to":"0x485eaB9D8996A1efAD36e621D86834bb8Ab99CEF",
"data":"0x18160ddd"},"latest"],"id":1}'
UFW / firewall
ufw status numbered
ufw limit 22/tcp # rate-limit ssh
ufw allow 443/tcp # allow https
Glossary
| AMM | Automated Market Maker — a DEX based on x·y=k constant product math (like Uniswap V2 / PancakeSwap) |
| BEP-20 | BSC's ERC-20 token standard. TXC is BEP-20. |
| Bridge | Cross-chain protocol that locks tokens on chain A and mints equivalent on chain B |
| Chain ID | Numeric identifier for an EVM network. TXCL = 47294 |
| Clique PoA | Proof-of-Authority consensus where pre-approved signers take turns producing blocks |
| EVM | Ethereum Virtual Machine — bytecode runtime that powers Ethereum and compatible chains |
| Genesis | The configuration of block 0 — defines chain rules and initial allocations |
| HD Wallet | Hierarchical Deterministic — derives multiple accounts from one seed (BIP44) |
| Hot wallet | A wallet with private key online (e.g. relayer). Should hold minimal funds. |
| LP | Liquidity Provider — supplies pairs of tokens to an AMM, earns trading fees |
| Mempool | Pending transactions waiting to be included in a block |
| Mnemonic | 12 or 24 word BIP39 seed phrase that derives all wallet keys |
| Native coin | The chain's gas token. TXCL on TXCL Chain, BNB on BSC, ETH on Ethereum. |
| PoA | Proof of Authority — consensus where validators are explicitly approved (vs PoS where they're staked) |
| PUSH0 | EVM opcode introduced in Shanghai upgrade. TXCL Chain doesn't support it — use evmVersion: paris. |
| Relayer | Off-chain service that watches one chain and triggers actions on another |
| RPC | Remote Procedure Call — JSON over HTTP interface to talk to a chain |
| Slippage | Difference between expected price and executed price on a swap |
| Voucher | A relayer-signed message that authorizes a TXCL→BSC withdrawal |
| Wrapped token | An ERC-20 representation of an asset from another chain. wTXC wraps TXC. |
Troubleshooting
"execution reverted (unknown custom error)" when bridging
Check your wallet's TXC balance. You can't bridge tokens you don't hold. Also check that you've approved the bridge contract to spend (one-time per wallet).
Bridge UI shows "No pool" / can't swap
The TXCLSwap pool needs to be seeded with initial liquidity by the team. Until then, swap is not functional.
"invalid opcode: PUSH0" on contract deploy
You compiled with default Shanghai EVM target. Recompile with evmVersion: "paris" for TXCL Chain.
Relayer service not running
systemctl status txcl-bridge-relayer
journalctl -u txcl-bridge-relayer -n 50
# common issues:
# - wrong RPC URL → check .env BSC_RPC
# - relayer wallet out of gas → check BNB and TXCL balances
# - private key mismatch → re-verify TXC_BRIDGE.relayer() == wallet address
Wallet shows 0 balance after refresh
Probably switched to wrong network. Tap the network pill (top right of wallet) and select TXCL.
I forgot my wallet password
The password is needed to decrypt your local seed. If forgotten, you must reset the wallet (which wipes encrypted seed) and re-import using your 12-word seed phrase. That's why the seed phrase backup is critical.
Bridge fee seems high
0.1 TXC fee is per-bridge. For frequent bridging consider batching. Fee is configurable by bridge owner.
How do I see my pending vouchers?
Go to /bridge/, switch direction to TXCL → BSC, connect wallet. Pending vouchers appear in green cards labelled "Vouchers Ready to Claim on BSC".