Skip to content

Testnet DX feedback from building a lending dApp on Arc: USYC stub, oracle gap, gasless/EVM docs #107

Description

@osr21

Sharing constructive feedback after building ArcLend, an Aave-style lending/borrowing protocol on Arc Testnet (chain 5042002). Four things slowed us down that small docs/infra fixes would solve for other DeFi builders.

1. The listed USYC token is a non-functional stub on testnet

eth_getCode(0xe9185F0c5F296Ed1797AaE4238D26CCaBEadb86C) returns only 183 bytes and exposes just owner() — no ERC-20 transfer or allowlist logic. By contrast USDC (0x3600000000000000000000000000000000000000) and EURC (0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a) are full 1798-byte precompiles. Since USYC is listed as a supported asset, any protocol wiring a USYC market hits a dead end.

Suggestion: deploy a functional USYC test contract (even a mock with the allowlist interface), or mark it "not yet available" in the contract-addresses docs with an ETA.

2. No documented price-oracle path for testnet

Chainlink and Pyth don't list Arc testnet feeds, yet any lending/perps/RWA app needs prices for non-stable assets (e.g. cirBTC, which the arc-defi-lending-and-borrowing sample uses as collateral). Today builders must run a private mock oracle, which makes liquidation/health-factor testing unrealistic.

Suggestion: publish a canonical testnet feed (a Circle-run AggregatorV3-compatible aggregator, or a documented partner like RedStone/Stork/Chronicle).

3. Document EIP-3009 support + the EIP-712 domain for the native stablecoins

Because USDC is the gas token, gasless "sign-then-relay" UX is a flagship Arc use case. Building a gasless supply router, we needed the native USDC/EURC EIP-3009 (receiveWithAuthorization) status and the exact EIP-712 domain (name/version/verifyingContract) to produce valid off-chain signatures. We resolved it via ERC-5267 eip712Domain() with a fallback, but it was guesswork.

Suggestion: document EIP-3009/EIP-2612 support and the canonical domain for the precompiled stablecoins.

4. Document the canonical EVM hardfork / evmVersion

Contracts importing OpenZeppelin 5.1+ (EIP712/ECDSA) silently fail to compile under solc's default shanghai because they emit mcopy; setting evmVersion: "cancun" fixes it, and Cancun opcodes do execute on Arc. There's an open arc-node issue referencing Prague support, so a one-line note in the Hardhat/Foundry setup docs stating the current canonical evmVersion would save real debugging time.


Happy to provide repro details or open PRs against the docs. Thanks for building Arc — the USDC-as-gas model is genuinely great to build on.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions