Beli Kripto
Pasar
Spot
Futures OILBTC
Tabungan
Pusat Acara
Hub Hadiah
Lainnya
Fest. 0-Biaya
Proxy Contract: Apa Itu Proxy Contract?Proxy contract adalah smart contract yang menerima panggilan pengguna dan meneruskannya ke kontrak lain yang berisi logika bisnis sebenarnya.Dalam kripto, proxy contract terutamProxy Contract: Apa Itu Proxy Contract?Proxy contract adalah smart contract yang menerima panggilan pengguna dan meneruskannya ke kontrak lain yang berisi logika bisnis sebenarnya.Dalam kripto, proxy contract terutam

Proxy Contract

2026/10/13 16:48
#Advanced
Humanity
H$0.05641-3.96%
Smart Blockchain
SMART$0.004381-3.56%
Diamante
DIAM$0.004705-2.34%
DeFi
DEFI$0.0001106+0.91%
AINFT
NFT$0.0000002377-0.50%

Apa Itu Proxy Contract?

Proxy contract adalah smart contract yang menerima panggilan pengguna dan meneruskannya ke kontrak lain yang berisi logika bisnis sebenarnya.Dalam kripto, proxy contract terutama digunakan agar sistem smart contract dapat di-upgrade sambil mempertahankan alamat kontrak publik dan status tersimpan yang sama.Kontrak yang berinteraksi langsung dengan pengguna biasanya disebut proxy.Kontrak yang berisi logika aktif biasanya disebut implementation contract, logic contract, atau master copy.

Pola Proxy Upgrade OpenZeppelin menjelaskan bahwa kemampuan upgrade berbasis proxy bekerja dengan memisahkan penyimpanan kontrak dari logika kontrak.

Pemisahan ini penting karena smart contract biasanya sulit atau bahkan tidak mungkin diubah setelah diterapkan.Jika sebuah proyek menerapkan kontrak biasa lalu menemukan bug, tim mungkin perlu menerapkan kontrak baru dengan alamat baru.Proxy contract mengatasi masalah ini dengan mempertahankan alamat proxy yang sama sambil mengarahkannya ke implementation contract baru setelah upgrade disetujui.Pengguna, wallet, dan aplikasi tetap berinteraksi dengan alamat proxy, sementara logika di balik alamat tersebut dapat berubah.Cara paling sederhana untuk memahami proxy contract adalah sebagai pintu depan permanen, sedangkan implementation contract merupakan mesin di balik pintu yang dapat diganti.

Alasan Proxy Contract Digunakan

Proxy contract digunakan karena imutabilitas blockchain menciptakan manfaat sekaligus tantangan.Imutabilitas berguna karena pengguna dapat percaya bahwa kode yang telah diterapkan tidak dapat diam-diam diubah seperti perangkat lunak web biasa.Namun, imutabilitas menjadi masalah saat developer perlu memperbaiki bug, menambahkan fitur, merespons masalah keamanan, meningkatkan performa, atau mendukung standar baru.Tanpa proxy, upgrade smart contract sering kali berarti menerapkan kontrak baru dan meminta pengguna memindahkan aset atau izin.Migrasi tersebut dapat mahal, membingungkan, berisiko, dan mengganggu.Proxy contract memungkinkan alamat yang digunakan pengguna tetap sama.Hal ini penting untuk protokol DeFi, koleksi NFT, DAO, kontrak token, bridge, sistem staking, aset game, dan wallet account abstraction.Proxy dapat mengurangi hambatan bagi pengguna karena integrasi tidak perlu mengganti alamat kontrak setiap kali logika berubah.Proxy juga dapat meningkatkan keamanan karena perbaikan mendesak dapat diterapkan dengan lebih mudah.Namun, kemampuan upgrade menimbulkan asumsi kepercayaan karena seseorang atau suatu proses tata kelola harus memiliki izin untuk mengubah implementasi.

Cara Kerja Proxy Contract

Proxy contract bekerja dengan menyimpan status dan meneruskan panggilan fungsi ke implementation contract.Saat pengguna memanggil proxy, proxy biasanya tidak menjalankan logika aplikasi utama secara langsung.

Proxy justru meneruskan panggilan ke implementation contract menggunakan mekanisme EVM tingkat rendah seperti

delegatecall
.

Kode implementasi dijalankan, tetapi penyimpanan yang berubah adalah penyimpanan milik proxy.Inilah detail utama yang memungkinkan sistem proxy dapat di-upgrade.Proxy menyimpan saldo, pengaturan, variabel kepemilikan, suplai token, posisi pengguna, dan status lainnya.Implementation contract menyediakan kode yang mengetahui cara membaca dan memperbarui status tersebut.Jika sistem di-upgrade, implementation contract baru dengan logika baru akan diterapkan.Proxy kemudian memperbarui penunjuk implementasinya ke kontrak baru tersebut.Alamat yang digunakan pengguna dan data tersimpan tetap berada di proxy, sedangkan panggilan selanjutnya menggunakan logika baru.

Proxy Contract dan Delegatecall

delegatecall
adalah mekanisme tingkat rendah yang memungkinkan banyak proxy contract bekerja.

Dalam panggilan eksternal biasa, satu kontrak memanggil kontrak lain dan kontrak yang dipanggil menggunakan penyimpanannya sendiri.

Dengan

delegatecall
, kode kontrak yang dipanggil dijalankan dalam konteks penyimpanan kontrak pemanggil.

Dalam proxy, ini berarti kode implementation contract dapat mengubah penyimpanan proxy.Hal ini berguna karena proxy dapat mempertahankan status sambil mengganti kode implementasi yang digunakan.Namun, hal ini juga berbahaya karena kode implementasi harus ditulis dengan mempertimbangkan tata letak penyimpanan proxy.Jika implementasi menulis ke slot penyimpanan yang salah, data penting dapat rusak.Jika proxy meneruskan panggilan ke implementasi berbahaya, logika berbahaya tersebut dapat menguras aset atau mengubah izin.

Peringatan delegatecall SWC-112 menyarankan developer menggunakan

delegatecall
dengan hati-hati dan menghindari pemanggilan kontrak yang tidak tepercaya.

Dalam sistem proxy,

delegatecall
bukan sekadar detail teknis karena mekanisme ini merupakan inti model keamanannya.

Proxy Contract vs Implementation Contract

Proxy contract dan implementation contract memiliki tanggung jawab yang berbeda.Proxy contract mempertahankan alamat yang dipanggil pengguna dan biasanya menyimpan status sistem.Implementation contract berisi fungsi dan aturan yang menentukan cara status berubah.Contohnya, proxy token dapat menyimpan saldo di penyimpanan proxy, sementara implementasinya menentukan logika transfer, persetujuan, minting, burning, atau kontrol akses.Saat fitur baru diperlukan, developer menerapkan implementation contract baru.Proxy kemudian di-upgrade agar mengarah ke implementasi baru tersebut.Alamat proxy tetap sama sehingga pengguna dan integrasi tidak perlu beralih ke alamat baru.Model ini berguna, tetapi pengguna perlu menanyakan siapa yang mengendalikan upgrade.Jika satu kunci privat mengendalikan admin proxy, kunci tersebut dapat memiliki wewenang yang sangat besar atas kontrak.Jika tata kelola mengendalikan upgrade melalui timelock dan proses voting, pengguna mungkin memiliki lebih banyak waktu untuk meninjau perubahan sebelum diaktifkan.

Proxy Contract vs Smart Contract Biasa

Smart contract biasa umumnya menyimpan penyimpanan dan logika dalam kontrak yang sama.Setelah diterapkan, kode kontrak biasa tersebut umumnya tetap.Sistem berbasis proxy memisahkan penyimpanan dan logika ke dalam setidaknya dua kontrak.Proxy menyimpan status dan meneruskan panggilan.Implementasi menyimpan logika dan dapat diganti jika mekanisme upgrade mengizinkannya.Hal ini membuat sistem proxy lebih fleksibel dibandingkan kontrak biasa.Sistem ini juga lebih sulit diaudit karena keamanan bergantung pada proxy, implementasi, kontrol admin, proses inisialisasi, tata letak penyimpanan, dan riwayat upgrade.Kontrak biasa dapat lebih mudah dipahami pengguna karena kode di alamat tersebut adalah kode yang dijalankan.Untuk proxy contract, pengguna perlu menelusuri proxy guna menemukan implementasi aktif.Karena itu, blockchain explorer sering memberi label pada proxy contract terverifikasi dan menampilkan alamat implementasi saat ini jika dapat mendeteksinya.

Proxy Contract dan Kemampuan Upgrade

Kemampuan upgrade adalah alasan paling umum penggunaan proxy contract.Kontrak yang dapat di-upgrade memungkinkan developer mengubah logika setelah penerapan tanpa mengubah alamat proxy.Fitur ini berguna untuk perbaikan bug, penambahan fitur, peningkatan efisiensi gas, integrasi baru, perubahan tata kelola, atau upgrade protokol.Namun, kemampuan upgrade mengubah model kepercayaan.Kontrak yang dapat di-upgrade tidak sepenuhnya imutabel seperti kontrak yang tidak dapat di-upgrade.Pengguna mempercayai pihak yang berwenang melakukan upgrade agar tidak menerapkan perubahan yang berbahaya atau ceroboh.Wewenang upgrade dapat dimiliki satu pemilik, wallet multisig, DAO, pengendali timelock, atau kontrak tata kelola lainnya.Desain yang lebih aman biasanya membuat wewenang upgrade transparan dan lebih sulit disalahgunakan.Contohnya, timelock dapat memberi pengguna waktu untuk keluar sebelum upgrade besar dijalankan.Tanpa kontrol yang kuat, proxy contract dapat menjadi pintu belakang tersembunyi menuju dana pengguna.

Standar Proxy ERC-1967

ERC-1967 adalah standar yang banyak digunakan untuk slot penyimpanan proxy.

Standar ERC-1967 menetapkan slot penyimpanan tertentu untuk informasi proxy seperti alamat implementasi, alamat admin, dan alamat beacon.

Tujuannya adalah mencegah tabrakan penyimpanan antara proxy dan implementation contract.Tabrakan penyimpanan terjadi saat dua variabel secara tidak sengaja menggunakan slot penyimpanan yang sama.

Dalam sistem proxy, hal ini dapat sangat berbahaya karena penyimpanan proxy dan logika implementasi saling berinteraksi melalui

delegatecall
.

ERC-1967 juga membantu blockchain explorer dan alat developer mengidentifikasi implementasi aktif di balik proxy.Hal ini membuat sistem proxy lebih mudah diperiksa dan diaudit.Banyak pola proxy umum yang dapat di-upgrade menggunakan slot ERC-1967.Menggunakan standar yang dikenal tidak otomatis membuat proxy aman.Namun, hal ini mengurangi kebingungan yang sebenarnya dapat dihindari dan membantu alat memahami lokasi penyimpanan data proxy yang penting.

Transparent Proxy

Transparent proxy adalah pola proxy yang memisahkan panggilan admin dari panggilan pengguna.Dalam pola ini, pengguna biasa memanggil proxy dan panggilan mereka diteruskan ke implementasi.Admin dapat melakukan tindakan terkait upgrade, tetapi biasanya dicegah agar tidak secara tidak sengaja memanggil fungsi implementasi melalui proxy.Desain ini membantu menghindari konflik function selector antara fungsi admin proxy dan fungsi implementasi.

Dokumentasi proxy OpenZeppelin mencantumkan

TransparentUpgradeableProxy
sebagai proxy dengan admin dan antarmuka upgrade bawaan.

Transparent proxy umum digunakan karena logika upgrade ditempatkan secara jelas di sisi proxy dalam sistem.Namun, overhead-nya mungkin sedikit lebih besar daripada model proxy yang lebih sederhana.Admin proxy juga perlu dikelola dengan cermat.Jika admin proxy diretas, penyerang mungkin dapat meng-upgrade kontrak ke logika berbahaya.Keamanan transparent proxy bergantung pada keamanan kode implementasi dan adminnya.

UUPS Proxy

UUPS adalah singkatan dari Universal Upgradeable Proxy Standard.

Standar ERC-1822 UUPS menjelaskan desain proxy yang mengelola kompatibilitas upgrade melalui logika implementasi.

Dalam desain UUPS, proxy dapat dibuat lebih ringan karena fungsi upgrade berada di implementation contract, bukan di antarmuka admin proxy yang besar.Hal ini dapat mengurangi biaya deployment dan kompleksitas proxy.Namun, developer harus melindungi fungsi upgrade di dalam implementation contract dengan benar saat menggunakan UUPS.Jika kontrol akses tidak tepat, penyerang mungkin dapat meng-upgrade sistem.Jika implementasi baru menghapus atau merusak fungsi upgrade, proxy mungkin sulit atau bahkan tidak mungkin di-upgrade lagi.Perangkat UUPS OpenZeppelin mencakup perlindungan untuk mengurangi risiko hilangnya kemampuan upgrade secara tidak sengaja, tetapi developer tetap perlu melakukan peninjauan dengan cermat.UUPS proxy berguna karena fleksibel dan efisien.Namun, UUPS berisiko jika tim tidak sepenuhnya memahami lokasi wewenang upgrade.

Beacon Proxy

Beacon proxy adalah proxy yang memperoleh alamat implementasinya dari kontrak beacon terpisah.Alih-alih setiap proxy menyimpan alamat implementasinya sendiri, banyak proxy dapat mengarah ke satu beacon.Saat beacon di-upgrade, semua proxy yang menggunakannya dapat mulai menggunakan implementasi baru.Desain ini berguna saat proyek perlu menerapkan banyak kontrak serupa yang semuanya perlu di-upgrade bersama.Contohnya, factory dapat membuat banyak vault pengguna, pool, akun, atau kontrak terkait NFT yang menggunakan logika sama.Beacon proxy dapat menyederhanakan upgrade massal.Namun, risikonya juga dapat meningkat karena satu upgrade beacon dapat memengaruhi banyak instance proxy sekaligus.Admin beacon harus dilindungi dengan cermat.Pengguna sebaiknya memahami apakah kontrak mereka bergantung pada beacon karena perubahan beacon dapat mengubah perilaku banyak kontrak.Beacon proxy efisien untuk banyak kontrak, tetapi memusatkan wewenang upgrade pada beacon.

Minimal Proxy dan ERC-1167

Minimal proxy adalah kontrak proxy yang sangat kecil dan dirancang untuk meniru perilaku implementation contract lain dengan biaya deployment rendah.

Standar minimal proxy ERC-1167 menetapkan pola bytecode minimal untuk clone kontrak berbiaya rendah yang meneruskan panggilan ke implementasi tetap.

Minimal proxy sering disebut clone.Minimal proxy berguna saat proyek perlu menerapkan banyak salinan logika yang sama, seperti banyak wallet, vault, pool, akun, atau instance marketplace.Setiap clone memiliki alamat dan status sendiri, tetapi menggunakan kembali logika implementasi.Hal ini dapat menghemat gas karena kode implementasi lengkap tidak perlu diterapkan berulang kali.Tidak semua minimal proxy dapat di-upgrade.Banyak clone ERC-1167 mengarah ke implementasi tetap dan tidak dapat mengubah target tersebut kecuali logika upgrade tambahan ditambahkan di tempat lain.Perbedaan ini penting karena minimal proxy berfokus pada pembuatan clone berbiaya rendah, sedangkan proxy yang dapat di-upgrade berfokus pada logika yang dapat diganti.Beberapa sistem menggabungkan kedua konsep tersebut, tetapi keduanya tidak boleh disamakan.

Tata Letak Penyimpanan dalam Proxy Contract

Tata letak penyimpanan merupakan salah satu topik terpenting dalam desain proxy contract.Karena proxy menyimpan status sementara implementasi menyediakan logika, implementasi harus membaca dan menulis penyimpanan dalam urutan yang benar.Jika implementasi baru mengubah urutan variabel secara keliru, implementasi tersebut dapat membaca penyimpanan lama sebagai jenis data yang salah.Contohnya, mapping saldo dapat secara tidak sengaja digantikan oleh variabel pemilik, atau nilai konfigurasi dapat tertimpa oleh variabel baru.Hal ini dapat merusak kontrak atau menimbulkan kerentanan keamanan.Framework kontrak yang dapat di-upgrade biasanya mengharuskan developer menambahkan variabel baru di bagian akhir, bukan mengurutkan ulang atau menghapus variabel lama.Storage gap terkadang digunakan untuk menyediakan ruang bagi variabel di masa depan.Pemeriksaan tata letak penyimpanan dapat mendeteksi banyak kesalahan upgrade sebelum deployment.Developer sebaiknya memperlakukan tata letak penyimpanan sebagai bagian dari model keamanan publik kontrak.Pengguna perlu berhati-hati jika proyek yang dapat di-upgrade tidak menjelaskan cara meninjau tata letak penyimpanan saat melakukan upgrade.

Inisialisasi dalam Proxy Contract

Proxy contract yang dapat di-upgrade sering menggunakan fungsi initializer alih-alih constructor.Constructor hanya berjalan saat implementation contract diterapkan.Namun, dalam sistem proxy, pengguna berinteraksi dengan proxy dan penyimpanan proxy perlu diinisialisasi.Artinya, logika penyiapan biasanya dijalankan melalui fungsi initializer yang dipanggil lewat proxy.Inisialisasi dapat menetapkan pemilik, nama token, alamat treasury, peran admin, nilai suplai, pengaturan biaya, atau parameter tata kelola.Jika inisialisasi terlupakan, proxy dapat tetap tidak terlindungi.Jika penyerang memanggil initializer lebih dahulu, penyerang dapat menjadi pemilik atau admin.Jika initializer dapat dipanggil lebih dari sekali, pengaturan penting dapat ditimpa.Karena itu, kontrak yang dapat di-upgrade memerlukan pengaman initializer untuk mencegah inisialisasi berulang.Bug inisialisasi merupakan salah satu kesalahan paling umum dan berbahaya pada kontrak yang dapat di-upgrade.

Admin Proxy dan Wewenang Upgrade

Admin proxy adalah akun atau kontrak yang dapat meng-upgrade implementasi proxy.Peran ini dapat dikendalikan oleh satu wallet, wallet multisig, voting DAO, timelock, atau kontrak tata kelola.Peran admin sangat penting karena dapat mengubah kode yang mengendalikan aset pengguna.Jika admin meng-upgrade ke logika berbahaya, pengguna dapat kehilangan dana meskipun implementasi sebelumnya aman.Jika kunci admin dicuri, penyerang mungkin dapat mengganti implementasi.Jika admin bertindak terlalu lambat atau prosesnya terlalu terdesentralisasi, perbaikan darurat mungkin sulit dilakukan.Tata kelola proxy yang baik menyeimbangkan keamanan, kecepatan respons, transparansi, dan hak pengguna untuk keluar.Timelock dapat meningkatkan kepercayaan dengan menunda upgrade setelah diumumkan.Multisig dapat mengurangi risiko satu kunci dengan mewajibkan beberapa penanda tangan.Proposal upgrade publik dan audit dapat membantu pengguna memahami perubahan yang akan dilakukan.

Proxy Contract dan Blockchain Explorer

Blockchain explorer sering membantu pengguna memeriksa proxy contract.Explorer yang baik dapat menunjukkan bahwa suatu alamat merupakan proxy dan mengidentifikasi alamat implementasi saat ini.Explorer juga dapat menampilkan informasi admin proxy jika proxy mengikuti standar yang dikenal seperti ERC-1967.Hal ini membantu pengguna dan auditor meninjau kode yang benar-benar dijalankan.Tanpa deteksi proxy, pengguna mungkin hanya memeriksa bytecode proxy dan melewatkan logika implementasinya.Hal ini dapat menimbulkan rasa percaya yang keliru karena proxy mungkin hanya memuat sedikit kode aplikasi yang terlihat.Pengguna sebaiknya memeriksa apakah implementation contract telah diverifikasi.Pengguna juga perlu memeriksa apakah implementasi pernah berubah.Audit lama mungkin tidak berlaku jika proxy telah di-upgrade ke logika baru.Untuk interaksi bernilai tinggi, meninjau proxy, implementasi, admin, dan riwayat upgrade jauh lebih aman daripada hanya memeriksa alamat yang terlihat.

Proxy Contract dan Kontrak Token

Banyak kontrak token menggunakan proxy untuk mendukung upgrade di masa mendatang.Token yang dapat di-upgrade dapat mempertahankan alamat token yang sama sambil mengubah aturan transfer, aturan biaya, logika minting, logika burning, logika bridge, aturan kepatuhan, atau fitur tata kelola.Hal ini berguna jika token perlu beradaptasi seiring waktu.Namun, hal ini juga berisiko karena aturan yang diandalkan pengguna dapat berubah setelah mereka membeli atau menerima token.Contohnya, upgrade dapat menambahkan pembatasan transfer, mengubah perilaku biaya, menambahkan wewenang pause, atau mengubah kontrol akses.Pengguna sebaiknya memeriksa apakah kontrak token dapat di-upgrade sebelum menganggap aturannya permanen.Pengguna juga perlu memeriksa siapa yang mengendalikan upgrade dan apakah perubahan ditunda melalui tata kelola.Token dengan proxy tidak otomatis tidak aman.Token tersebut hanya memiliki model kepercayaan yang berbeda dari kontrak token yang sepenuhnya imutabel.Pertanyaan pentingnya adalah apakah wewenang upgrade bersifat transparan dan terlindungi dengan baik.

Proxy Contract dan Protokol DeFi

Protokol DeFi sering menggunakan proxy contract karena aplikasi keuangan memerlukan pemeliharaan.Protokol pinjaman, automated market maker, sistem derivatif, vault staking, atau strategi imbal hasil mungkin perlu di-upgrade setelah audit, perubahan pasar, peningkatan oracle, atau penemuan bug.Proxy contract memungkinkan sistem ini ditingkatkan tanpa memaksa setiap pengguna memindahkan posisi.Hal ini praktis karena posisi DeFi dapat menjadi rumit dan terhubung dengan banyak protokol.Namun, kemampuan upgrade juga menimbulkan risiko sistemik.Upgrade yang buruk pada kontrak DeFi yang banyak digunakan dapat berdampak pada banyak pengguna dan integrasi sekaligus.Protokol DeFi yang dapat di-upgrade sebaiknya memiliki pengujian, audit, pemantauan, kontrol tata kelola, dan prosedur darurat yang kuat.Pengguna sebaiknya tidak hanya menanyakan apakah protokol telah diaudit.Pengguna juga perlu menanyakan apakah implementasi saat ini telah diaudit dan apakah upgrade mendatang memerlukan peninjauan publik.Di DeFi, proxy contract meningkatkan kemudahan pemeliharaan, tetapi juga membuat tata kelola semakin penting.

Proxy Contract dan NFT

Proyek NFT dapat menggunakan proxy contract untuk logika metadata yang dapat di-upgrade, logika minting, integrasi marketplace, logika royalti, sistem staking, atau mekanisme game.Proxy NFT dapat memungkinkan proyek menambahkan fitur setelah peluncuran.Proxy juga dapat memungkinkan perilaku metadata berubah jika implementasi mengendalikan logika token URI.Hal ini dapat berguna ketika proyek berkembang dari koleksi sederhana menjadi game, keanggotaan, atau sistem identitas digital.Namun, perubahan dapat menjadi kontroversial jika kolektor mengharapkan aturan tetap atau metadata permanen.Pembeli NFT sebaiknya memeriksa apakah kontrak NFT dapat di-upgrade dan apakah metadata dapat berubah.Pembeli juga perlu memeriksa siapa yang mengendalikan admin upgrade.NFT yang sepenuhnya imutabel dan NFT yang dapat di-upgrade sama-sama dapat menjadi pilihan yang sah, tetapi keduanya menawarkan jaminan yang berbeda.Kolektor perlu memahami apakah mereka membeli aturan on-chain yang tetap atau berpartisipasi dalam proyek yang dapat berkembang.Proxy contract membuat pengembangan NFT lebih fleksibel, tetapi juga memerlukan kepercayaan pada proses upgrade proyek.

Proxy Contract dan DAO

DAO dapat menggunakan proxy contract untuk meng-upgrade modul tata kelola, alat treasury, sistem voting, kontrak staking, atau parameter protokol.Proxy yang dikendalikan DAO dapat lebih transparan daripada proxy dengan satu admin karena upgrade mungkin memerlukan proposal dan voting.Namun, tata kelola DAO tidak otomatis membuat upgrade aman.Partisipasi pemilih yang rendah, pembelian suara, serangan tata kelola, proposal yang terburu-buru, atau perubahan kode yang tidak jelas tetap dapat menimbulkan risiko.Proses upgrade DAO yang baik sebaiknya mencakup ringkasan yang mudah dipahami, perbedaan teknis, tautan audit, analisis risiko, jangka waktu voting, dan penundaan timelock.Anggota DAO perlu mengetahui kontrak mana yang dapat di-upgrade dan wewenang apa yang dimiliki tata kelola.Jika tata kelola dapat meng-upgrade kontrak treasury, kontrak token, atau logika inti protokol, pemilih bertanggung jawab atas keputusan keamanan yang serius.Proxy contract dapat membantu DAO beradaptasi seiring waktu.Proxy juga dapat memberi tata kelola wewenang untuk mengubah aturan yang dianggap pengguna sudah tetap.Kemampuan upgrade DAO harus terlihat, terdokumentasi, dan dikendalikan dengan cermat.

Manfaat Proxy Contract

Manfaat pertama proxy contract adalah kemampuan upgrade.Proyek dapat memperbaiki bug, menambahkan fitur, dan meningkatkan logika tanpa mengubah alamat kontrak utama.Manfaat kedua adalah kesinambungan status.Saldo, posisi, izin, dan pengaturan pengguna dapat tetap berada di proxy saat logika implementasi berubah.Manfaat ketiga adalah stabilitas integrasi.Wallet, dApp, indexer, dan kontrak lain dapat terus menggunakan alamat yang sama.Manfaat keempat adalah berkurangnya hambatan migrasi.Pengguna mungkin tidak perlu memindahkan aset secara manual ke kontrak baru setelah setiap upgrade.Manfaat kelima adalah efisiensi gas dalam pola clone.Minimal proxy dapat menerapkan banyak kontrak serupa dengan biaya lebih rendah dibandingkan menerapkan kode lengkap setiap kali.Manfaat keenam adalah arsitektur modular.Tim dapat memisahkan penyimpanan, logika, kontrol upgrade, dan pola deployment dengan lebih jelas.Manfaat ini hanya bernilai jika proxy contract dirancang, diaudit, dikelola, dan dipantau dengan cermat.

Risiko Proxy Contract

Risiko pertama adalah upgrade berbahaya.Jika wewenang upgrade diretas atau tidak jujur, pihak tersebut dapat mengganti logika yang aman dengan logika berbahaya.Risiko kedua adalah tabrakan penyimpanan.Jika tata letak penyimpanan keliru, upgrade dapat merusak status kontrak yang penting.Risiko ketiga adalah kegagalan inisialisasi.Proxy atau implementasi yang belum diinisialisasi dapat memungkinkan penyerang mengambil alih kendali.Risiko keempat adalah konflik function selector.Fungsi admin proxy dan fungsi implementasi dapat bertabrakan jika polanya dirancang dengan buruk.Risiko kelima adalah ketidaksesuaian audit.Kontrak mungkin pernah diaudit, tetapi implementasi saat ini dapat berbeda.Risiko keenam adalah kompleksitas tersembunyi.Pengguna mungkin tidak menyadari bahwa mereka berinteraksi dengan proxy, bukan kontrak sederhana yang imutabel.Risiko ketujuh adalah penguasaan tata kelola.Penyerang dapat memengaruhi proses upgrade melalui kekuatan voting, akses admin, atau rekayasa sosial.Risiko kedelapan adalah kesalahan pemahaman alat.Blockchain explorer, wallet, dan indexer mungkin gagal menampilkan detail proxy dengan benar jika proxy menggunakan desain khusus atau tidak standar.

Cara Memeriksa Proxy Contract Sebelum Berinteraksi

Pengguna sebaiknya terlebih dahulu memeriksa apakah alamat kontrak diberi label sebagai proxy di blockchain explorer.Pengguna perlu mencari alamat implementasi saat ini.Pengguna sebaiknya memverifikasi apakah kode sumber implementation contract telah dipublikasikan dan diverifikasi.Pengguna perlu memeriksa apakah implementasi baru-baru ini berubah.Pengguna sebaiknya meninjau siapa yang mengendalikan admin proxy atau wewenang upgrade.Pengguna perlu memeriksa apakah upgrade dilakukan melalui multisig, DAO, timelock, atau satu kunci privat.Pengguna sebaiknya membandingkan tanggal audit dengan tanggal deployment implementasi.Pengguna perlu membaca dokumentasi resmi untuk memahami apakah kontrak memang dirancang agar dapat di-upgrade.Pengguna sebaiknya tidak menganggap kontrak bersifat imutabel hanya karena alamat proxy tidak berubah.Untuk deposit dalam jumlah besar, pengguna sebaiknya menjadikan pemeriksaan proxy sebagai bagian dari uji tuntas rutin.

Praktik Terbaik bagi Developer

Developer sebaiknya menggunakan framework proxy yang telah ditinjau dengan baik alih-alih menulis logika proxy khusus tanpa peninjauan ahli.Developer sebaiknya mengikuti standar seperti ERC-1967 jika sesuai agar alat dapat memeriksa status proxy.Developer perlu melindungi fungsi upgrade dengan kontrol akses yang kuat.Developer sebaiknya menggunakan wallet multisig, timelock, atau kontrak tata kelola untuk wewenang upgrade bernilai tinggi.Developer perlu menulis fungsi initializer dengan cermat dan mencegah inisialisasi berulang.Developer sebaiknya menguji tata letak penyimpanan sebelum setiap upgrade.Developer tidak boleh mengurutkan ulang, menghapus, atau mengubah variabel penyimpanan yang sudah ada tanpa memahami konsekuensinya.Developer sebaiknya memverifikasi implementation contract di blockchain explorer.Developer perlu memublikasikan pengumuman upgrade, audit, dan penjelasan teknis sebelum perubahan besar.Developer sebaiknya memantau peristiwa upgrade dan bersiap merespons dengan cepat jika upgrade gagal.

Praktik Terbaik bagi Pengguna

Pengguna perlu memahami bahwa proxy yang dapat di-upgrade tidak sama dengan smart contract yang sepenuhnya imutabel.Pengguna sebaiknya memeriksa siapa yang dapat meng-upgrade proxy sebelum menyetorkan dana dalam jumlah signifikan.Pengguna perlu memeriksa apakah upgrade ditunda oleh timelock.Pengguna sebaiknya meninjau apakah implementasi terbaru telah diverifikasi dan diaudit.Pengguna perlu berhati-hati jika admin proxy dikendalikan oleh satu wallet yang tidak dikenal.Pengguna sebaiknya memantau peristiwa upgrade untuk protokol tempat mereka memiliki posisi besar.Pengguna sebaiknya menghindari persetujuan allowance token tanpa batas kepada kontrak yang dapat di-upgrade kecuali mereka memahami risikonya.Pengguna sebaiknya mencabut persetujuan yang tidak diperlukan setelah menggunakan protokol.Pengguna perlu mengingat bahwa upgrade dapat mengubah perilaku di masa mendatang meskipun perilaku sebelumnya tampak aman.Pengguna sebaiknya memperlakukan proxy contract sebagai sistem fleksibel yang memerlukan penilaian kepercayaan berkelanjutan.

Kesalahpahaman Umum tentang Proxy Contract

Salah satu kesalahpahaman adalah bahwa proxy contract otomatis tidak aman.Proxy contract dapat aman jika menggunakan pola yang telah teruji, kontrol akses yang baik, tata kelola yang kuat, audit, dan upgrade yang transparan.Kesalahpahaman lainnya adalah proxy contract otomatis aman karena menggunakan framework populer.Proxy standar sekalipun dapat berbahaya jika implementasinya jahat atau adminnya diretas.Kesalahpahaman lainnya adalah alamat proxy memuat semua logika yang perlu ditinjau pengguna.Pada kenyataannya, logika aplikasi yang penting sering kali berada di implementation contract.Kesalahpahaman lainnya adalah audit selalu mencakup kode saat ini.Jika proxy telah di-upgrade, audit lama mungkin tidak mencakup implementasi baru.Kesalahpahaman lainnya adalah minimal proxy selalu dapat di-upgrade.Banyak minimal proxy hanyalah clone murah yang meneruskan panggilan ke logika tetap.

FAQ

Apa arti proxy contract?

Proxy contract adalah smart contract yang meneruskan panggilan ke kontrak lain, biasanya agar sistem dapat mempertahankan alamat dan penyimpanan yang sama sambil mengubah logika implementasi.

Mengapa proyek kripto menggunakan proxy contract?

Proyek menggunakan proxy contract untuk mendukung upgrade, memperbaiki bug, menambahkan fitur, mengurangi hambatan migrasi, mempertahankan alamat tetap, dan menerapkan banyak kontrak serupa secara efisien.

Apakah proxy contract dapat di-upgrade?

Banyak proxy contract dapat di-upgrade, tetapi tidak semuanya karena beberapa minimal proxy mengarah ke logika tetap.

Apa itu implementation contract?

Implementation contract adalah kontrak yang berisi logika yang dijalankan proxy melalui penerusan panggilan atau

delegatecall
.

Apa itu delegatecall dalam proxy contract?

delegatecall
adalah operasi EVM yang memungkinkan proxy menjalankan kode implementasi dengan menggunakan konteks penyimpanan milik proxy sendiri.

Apa itu ERC-1967?

ERC-1967 adalah standar yang menetapkan slot penyimpanan tertentu untuk data proxy seperti alamat implementasi, admin, dan beacon.

Apa itu transparent proxy?

Transparent proxy adalah pola proxy yang dapat di-upgrade dan memisahkan panggilan upgrade admin dari panggilan pengguna biasa untuk mengurangi risiko konflik fungsi.

Apa itu UUPS proxy?

UUPS proxy adalah pola proxy yang dapat di-upgrade dan menangani logika upgrade di implementation contract, bukan terutama di dalam proxy.

Apa itu beacon proxy?

Beacon proxy mendapatkan alamat implementasinya dari kontrak beacon, sehingga banyak proxy dapat di-upgrade bersama dengan mengubah beacon.

Apa itu minimal proxy?

Minimal proxy adalah kontrak clone kecil, sering kali berdasarkan ERC-1167, yang meneruskan panggilan ke logika implementasi bersama untuk mengurangi biaya deployment.

Apakah proxy contract berisiko?

Ya. Proxy contract dapat berisiko jika wewenang upgrade lemah, tata letak penyimpanan keliru, inisialisasi tidak aman, atau pengguna tidak memahami bahwa logikanya dapat berubah.

Bagaimana cara memeriksa apakah sebuah kontrak adalah proxy?

Anda dapat memeriksa label proxy, alamat implementasi, slot penyimpanan ERC-1967, kode sumber terverifikasi, dan peristiwa upgrade di blockchain explorer.

Kesimpulan

Proxy contract adalah pola desain smart contract yang memisahkan alamat yang digunakan pengguna dan status tersimpan dari logika yang menjalankan perilaku kontrak.Pola ini banyak digunakan dalam kripto karena memungkinkan smart contract di-upgrade tanpa mengharuskan pengguna dan integrasi beralih ke alamat baru.

Proxy menerima panggilan, menyimpan data, dan meneruskan eksekusi ke implementation contract, sering kali melalui

delegatecall
.

Standar seperti ERC-1967, ERC-1822, dan ERC-1167 membantu mengatur desain proxy umum, termasuk transparent proxy, UUPS proxy, beacon proxy, dan minimal proxy.Proxy contract memberikan manfaat penting, termasuk kemampuan upgrade, kesinambungan status, stabilitas integrasi, dan deployment clone yang lebih murah.Proxy contract juga menimbulkan risiko serius, termasuk upgrade berbahaya, tabrakan penyimpanan, kontrak yang belum diinisialisasi, kunci admin yang diretas, tata kelola yang tidak jelas, dan audit yang sudah usang.Bagi developer, proxy contract sebaiknya diperlakukan sebagai komponen arsitektur berisiko tinggi yang memerlukan desain, pengujian, kontrol akses, dan dokumentasi publik yang cermat.Bagi pengguna, proxy contract perlu ditinjau secara berbeda dari kontrak normal yang imutabel karena logika di balik proxy dapat berubah seiring waktu.Cara paling sederhana untuk memahami proxy contract adalah bahwa kontrak ini mempertahankan alamat on-chain yang sama, sekaligus memungkinkan kode di balik alamat tersebut diganti dalam kondisi yang dikendalikan.Fleksibilitas ini dapat membuat sistem kripto lebih aman dan mudah dipelihara, tetapi hanya jika wewenang upgrade transparan, terbatas, dan dikelola dengan cermat.
Menarik Kembali / Peluang?
Menarik Kembali / Peluang?Menarik Kembali / Peluang?
Simak arus masuk ETF BTC $2,4 miliar pada likuidasi