Agora Stable Swaps protokolünü Ethereum Sepolia ve Avalanche Fuji üzerinde sıfırdan çalıştıran minimal TypeScript scriptleri. Faucet, self-whitelist, inspect, swap. Tek satır ortam değişkeniyle zincir değiştiriyor.
Toplam 19 işlem gönderildi. Ölçümler ve karşılaştırma BULGULAR.md içinde. English: FINDINGS.md
git clone https://github.com/iamiskender/agora-ausd-testnet.git
cd agora-ausd-testnet
npm install
cp .env.example .env.env içine sadece bu iş için oluşturduğun bir test cüzdanının private key'ini yaz. İçinde gerçek para olan bir cüzdanı kullanma, key diskte düz metin duruyor.
npm run inspect # zinciri oku, gas harcamaz
npm run faucet # AUSD ve CTK çek
npm run whitelist # APPROVED_SWAPPER rolünü kendine ver
npm run swap # 100 AUSD -> CTK (exact-in)
npm run swap -- 250 # farklı miktar
npm run swap-out # 250 AUSD al, CTK harca (exact-out)Başka bir zincirde çalıştırmak için:
NETWORK=fuji npm run inspect
NETWORK=base npm run swapDesteklenen ağlar: sepolia (varsayılan), fuji, base, arbitrum. Kontrat adresleri CREATE3 ile deterministik deploy edildiği için tüm testnetlerde aynı.
Gas token faucet'leri:
- Sepolia ETH: https://cloud.google.com/application/web3/faucet/ethereum/sepolia
- Fuji AVAX: https://core.app/tools/testnet-faucet/?subnet=c&token=c
| Dosya | İş |
|---|---|
src/client.ts |
Çok zincirli istemci, ağ tanımları |
src/config.ts |
Kontrat adresleri ve ABI'lar |
src/tx.ts |
Zincire yazan çağrılar için ortak yol, gas tahmini düzeltmesi burada |
src/inspect.ts |
Pair, rezervler, fiyat, bakiyeler |
src/faucet.ts |
Test tokeni çek |
src/whitelist.ts |
Kendini APPROVED_SWAPPER yap |
src/swap.ts |
Sabit girdi swap |
src/swap-exact-out.ts |
Sabit çıktı swap, ters yön |
viem, üzerinde local account bulunan bir istemcide gas tahmini yaparken işlemi önce tam hazırlıyor ve ücret alanlarını dolduruyor. Fuji'nin baseFee'si wei ölçeğinde, yani Sepolia'nın milyarda biri. RPC'nin eth_estimateGas fonksiyonu ücret parametresi aldığında ikili aramayı bakiye / gasPrice tavanıyla kuruyor ve doğru değeri bulmak yerine o tavanı döndürüyor.
Aynı çağrı, dört farklı biçimde:
| Nasıl çağrıldı | Tahmin |
|---|---|
| publicClient, adres string | 119.136 |
| publicClient, ücret parametresiyle | 33.599.051 |
| walletClient, local account | 6.221.830.295.905.538 |
| gerçek kullanım | 115.068 |
Blok gas limiti 32.000.000. Üçüncü satır exceeds block gas limit ile reddediliyor.
Çözüm: tahmini local account'suz bir publicClient üzerinden yapıp gas'ı writeContract'a açıkça geçmek.
MIT
Tüm işlemler test ağlarında gerçekleştirildi. Testnet varlıklarının parasal değeri yoktur.