FAQ
Basics
Q: What is MetaTx-Contracts? A: A suite enabling gasless meta-transactions (MetaTxGateway), gas-credit management (GasCreditVault), and DI token/tokenomics (presale, staking).
Q: How do meta-transactions work? A: A user signs a batch using EIP‑712. An authorized relayer submits the batch and pays gas. If native value is required, the relayer supplies msg.value; unused value is refunded to the user.
Q: Who can be a relayer?
A: Only addresses authorized by the contract owner via setRelayerAuthorization
.
Q: How are refunds handled?
A: The contract sums the required native value and requires the relayer to include exactly that msg.value
. Any unused native value after execution is refunded to the user's address.
Q: Where can I find deployed contract addresses? A: See the respective contract docs (MetaTxGateway, GasCreditVault, DI Token pages) for deployed addresses.
Q: Where do I get DI Tokens? A: Through presale, staking rewards, or supported exchanges — see Token Presale and Token Staking docs.
What Makes MetaTx-Contracts Different?
Gas credit system for prepaid gas with supported tokens
Native token support for meta-transactions (ETH/BNB)
Batch processing to reduce user friction and gas
UUPS upgradeability for safer upgrades
EIP-712 standardized signatures
Networks & Deployments
Primary networks:
BSC Mainnet & Testnet
Additional deployments (see contract pages):
Ethereum Mainnet, Polygon, Base, Optimism, Arbitrum, Avalanche (deployments may vary by component; check contract pages for exact addresses)
Gas Credits & Pricing
Q: What tokens can I use for gas credits? A: On BSC mainnet common examples are USDT, USDC, DI(in the future). Additional tokens may be supported by governance.
Q: How are gas credits calculated? A: Credits are derived from token deposits and oracle prices (e.g., Chainlink) to price token amounts into native-gas-equivalent units. Example formula (conceptual):
credits = (tokenAmount × tokenPrice) / (gasPrice × normalization)
Exact implementations use token decimals and oracle price formatting; see GasCreditVault docs for precise formulas.
Q: Are gas credits actual ERC tokens? A: No — gas credits are internal accounting units that are backed by deposited tokens in GasCreditVault. They are spent by authorized systems per policy.
Meta-Transaction Limits & Signatures
Q: What are recommended batch limits? A: Reasonable defaults (adjust per deployment):
Transactions per batch: typically 10 or fewer
Per-transaction gas: watch target contract limits; avoid extremely large individual calls
Signature deadline: short-lived (up to 10 minutes) depending on UX needs
Q: How long do signatures last? A: Signatures include a deadline timestamp. Recommended lifetimes:
Interactive UX: 5–10 minutes
Automated flows: 1–5 minutes
Less time for high-value operations
Q: How is replay prevented? A: Nonces, deadlines, domain separation and chainId binding prevent replay attacks across time and chains.
Security
Q: Is my private key safe? A: Yes — private keys never leave your wallet. Only signatures are shared. EIP‑712 prevents generic replay and makes domain-specific signing safe.
Q: What if the relayer is malicious? A: Relayers cannot alter signed content. You can run your own relayer or choose trusted relayers. Monitor relayer policies and logs.
Q: How are credits protected? A: Access control, reentrancy guards, audited libraries, and oracle validation help protect funds and pricing. See security disclosure for reporting vulnerabilities.
Usage & Troubleshooting
Q: Do I need native ETH/BNB in my wallet? A: No for meta-transactions if gas credits are funded and the relayer is authorized. You may need native tokens for direct interactions, initial deposits, or emergency operations.
Q: Why is my meta-transaction failing? A: Common causes:
Insufficient gas credits or relay funds
Expired signature (deadline passed)
Incorrect nonce
Wrong network / chainId
Target contract reverted (application error)
Q: Why aren't my credits showing? A: Check network, contract address, transaction success on chain, and refresh frontend caches. Confirm deposit transaction succeeded.
Q: Can I transfer credits? A: Some deployments provide utilities to transfer internal credits between accounts — check GasCreditVault docs and contract capabilities.
Q: Can I run my own relayer? A: Yes. Relayer code, configuration, and deployment instructions are provided. Running your own relayer gives full control over fees and behavior.
Development & Integration
Q: What languages / frameworks are supported? A: Frontend: JavaScript/TypeScript (ethers.js). Contracts: Solidity 0.8.20+. SDKs for other languages are planned.
Q: How do I sign a batch? A: Use EIP‑712 typed data. See the EIP‑712 Signatures doc for domain and types with examples for _signTypedData.
Q: How do I test meta-transactions locally?
A: Use Hardhat, deploy contracts to a local node or testnet, and run unit/integration tests. Examples are in the test/
directory.
Business & Operations
Q: What are the common use cases? A: Gaming, DeFi, NFTs, social tipping, corporate expense flows, onboarding — any UX that benefits from gas abstraction.
Q: How much does it cost? A: Users consume gas credits equivalent to network gas. Relayers may charge fees. Costs depend on gas market rates and relayer policies.
Support & Reporting
GitHub Issues: for bugs and feature requests
Security disclosure: follow the Security Disclosure page to report vulnerabilities
Community channels: Discord / official forums
Email: [email protected]
If your question is not answered here, search the docs, open a GitHub Issue with full reproduction details, or join community channels for help.
We're here to help! The MetaTx-Contracts community is friendly and supportive. Don't hesitate to ask questions! 🤝
Last updated