Pipeline testing, audit & deployment
Semua yang sudah kamu pelajari — testing, keamanan, key management — berujung ke satu urutan langkah yang tidak boleh dipangkas untuk kontrak yang menyimpan aset bernilai signifikan.
Intisari
- Urutan baku: testing lokal → analisis statis (Slither) → audit independen → deploy testnet → verifikasi publik → deploy mainnet/L2.
- Slither adalah analisis statis otomatis — menangkap pola berbahaya (reentrancy, penggunaan
tx.origin, dst.) sebelum kode sempat dibaca manusia sama sekali. - Audit manusia independen tetap wajib untuk kontrak bernilai tinggi — alat otomatis menangkap pola yang sudah dikenal, bukan celah logika bisnis yang spesifik ke kontrakmu.
- Verifikasi source code di block explorer (Etherscan, dst.) bukan formalitas — itu satu-satunya cara publik memverifikasi bytecode yang berjalan benar-benar sesuai kode yang diklaim, tanpa harus mempercayai kata-katamu.
- Layer-2 (Polygon, Arbitrum, Base) sering jadi target deploy produksi karena gas jauh lebih murah dari Ethereum mainnet — dengan trade-off keamanan yang berbeda per L2, perlu dievaluasi sendiri.
Urutan yang tidak boleh dipangkas
1. forge test -vvv → tes unit & fuzzing lolos semua (Fase 1)
2. slither . → analisis statis, tangani semua temuan severity tinggi
3. Audit independen → untuk kontrak bernilai tinggi, WAJIB pihak eksternal
4. Deploy ke testnet → forge script ... --rpc-url sepolia --broadcast
5. Verifikasi source code → forge verify-contract, publik di block explorer
6. Uji ulang di testnet → jalankan skenario nyata dengan token testnet
7. Deploy ke mainnet/L2 → hanya setelah langkah 1-6 semua bersih
Langkah 2: Slither — analisis statis
pip install slither-analyzer
slither src/GoldToken.sol
Slither membaca kode Solidity-mu tanpa menjalankannya, mencari pola yang secara statistik sering jadi
sumber bug — reentrancy yang terlewat, variabel yang tidak diinisialisasi, penggunaan tx.origin,
fungsi yang seharusnya external tapi ditulis public (boros gas), dan puluhan
pola lain. Ini lapisan pertama yang murah dan cepat, dijalankan tiap kali kode berubah — idealnya sebagai
bagian CI, bukan langkah manual yang mudah terlupa.
Langkah 3: kenapa audit otomatis tidak cukup
Alat statis menangkap pola yang sudah dikenal — bukan bug logika bisnis spesifik kontrakmu.
Slither tahu bentuk reentrancy klasik itu seperti apa. Ia tidak tahu bahwa aturan bisnismu seharusnya
melarang redeemGold() dipanggil untuk jumlah yang melebihi cadangan emas fisik yang tercatat
di sistem off-chain — itu butuh manusia yang membaca dan memahami maksud kontrakmu, bukan cuma
pola sintaksisnya. Untuk kontrak yang menyimpan aset senilai signifikan, audit manual dari firma independen
(mis. yang berspesialisasi di audit RWA/DeFi) bukan langkah opsional.
Langkah 5: verifikasi source code
forge script script/DeployGoldToken.s.sol \
--rpc-url sepolia \
--broadcast \
--verify \
--etherscan-api-key $ETHERSCAN_API_KEY
Bytecode yang tersimpan di blockchain sendiri tidak bisa dibaca manusia biasa. Verifikasi mengunggah source code Solidity aslinya ke block explorer, yang lalu mengompilasinya ulang dan membandingkan hasilnya byte-per-byte dengan bytecode yang benar-benar ter-deploy. Setelah terverifikasi, siapa saja — bukan cuma timmu — bisa membaca persis apa yang dilakukan kontrak itu, bukan sekadar mempercayai klaimmu di dokumentasi.
| Sebelum verifikasi | Setelah verifikasi |
|---|---|
| Block explorer hanya menampilkan bytecode heksadesimal | Menampilkan source code Solidity asli, bisa dibaca dan diaudit publik |
| Interaksi kontrak lewat explorer harus manual encode data | Explorer menyediakan form input per fungsi, otomatis dari ABI |
| Kepercayaan pengguna bergantung reputasi tim | Kepercayaan bisa diverifikasi independen oleh siapa pun |
Kenapa banyak proyek RWA memilih Layer-2
| Ethereum mainnet | Layer-2 (Polygon, Arbitrum, Base) | |
|---|---|---|
| Biaya gas | Tinggi, fluktuatif | Jauh lebih rendah — sering <1% biaya mainnet |
| Keamanan | Tertinggi — konsensus penuh Ethereum | Bergantung desain L2 masing-masing (rollup, sidechain, dst.) |
| Finalitas transaksi | Cepat, langsung diamankan mainnet | Bervariasi — rollup optimistik punya periode challenge |
| Cocok untuk | Aset bernilai sangat tinggi, butuh jaminan keamanan maksimal | Volume transaksi tinggi, biaya per transaksi jadi pertimbangan utama |
Pilihan mainnet vs L2 bukan cuma soal biaya. Setiap L2 punya model keamanan dan asumsi trust yang berbeda dari mainnet Ethereum murni — sebagian bergantung pada operator terpusat untuk periode tertentu, sebagian lain punya mekanisme exit darurat kalau operator tidak jujur. Untuk platform tokenisasi RWA yang menyangkut kepatuhan hukum, evaluasi model keamanan L2 pilihanmu sama pentingnya dengan audit kontrak itu sendiri.
Latihan: jalankan slither pada kontrak GoldToken milikmu (Fase 2),
baca setiap temuannya satu per satu — tentukan mana yang benar-benar berbahaya (true positive) dan mana
yang bisa diabaikan dengan alasan yang bisa kamu jelaskan (false positive). Tulis alasan itu sebagai
komentar di kode, persis seperti kamu akan menulisnya untuk auditor eksternal yang akan membaca kontrakmu
berikutnya.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.