← Semua pembelajaran / Blockchain Nol → RWA
Fase 4 · Keamanan & Key Management

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 verifikasiSetelah verifikasi
Block explorer hanya menampilkan bytecode heksadesimalMenampilkan source code Solidity asli, bisa dibaca dan diaudit publik
Interaksi kontrak lewat explorer harus manual encode dataExplorer menyediakan form input per fungsi, otomatis dari ABI
Kepercayaan pengguna bergantung reputasi timKepercayaan bisa diverifikasi independen oleh siapa pun

Kenapa banyak proyek RWA memilih Layer-2

Ethereum mainnetLayer-2 (Polygon, Arbitrum, Base)
Biaya gasTinggi, fluktuatifJauh lebih rendah — sering <1% biaya mainnet
KeamananTertinggi — konsensus penuh EthereumBergantung desain L2 masing-masing (rollup, sidechain, dst.)
Finalitas transaksiCepat, langsung diamankan mainnetBervariasi — rollup optimistik punya periode challenge
Cocok untukAset bernilai sangat tinggi, butuh jaminan keamanan maksimalVolume 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.