Jaringan SPBU Ethereum (GSN)
Jaringan SPBU Ethereum (GSN) mengabstraksi proses pembayaran bahan bakar dari pengguna akhir yang meminimalkan gesekan UX untuk dapps. Dengan GSN, klien tanpa gas dapat berinteraksi dengan kontrak pintar Ethereum tanpa pengguna memerlukan ETH untuk biaya transaksi. GSN adalah sistem terdesentralisasi yang meningkatkan kegunaan dapp tanpa mengorbankan keamanan.
Contoh kasus penggunaan GSN:
- Privasi : Mengaktifkan penarikan token tanpa ETH yang dikirim ke alamat tersembunyi
- Bayar bahan bakar dalam token ERC-20 yang didukung : Izinkan pengguna membayar bahan bakar dalam token ERC-20 yang mendukung
permit
fungsi - Bayar gas secara off-chain : Memungkinkan pengguna membayar bahan bakar secara tidak langsung melalui rollup L2 atau kartu kredit
- Orientasi : Izinkan dapps mensubsidi proses orientasi bagi pengguna baru
Masalah
Tanpa GSN, siapa pun yang mengirim transaksi Ethereum harus memiliki ETH untuk membayar biaya bahan bakar. Hal ini memaksa pengguna baru untuk lulus KYC dan membeli ETH sebelum mereka dapat mulai menggunakan dapp apa pun. Ini bisa menjadi rintangan besar bagi pengguna yang tidak memiliki pengalaman kripto sebelumnya dan tidak terbiasa dengan konsep perlunya menyimpan ETH di dompet mereka untuk bahan bakar.
Hal ini juga merupakan masalah UX bagi pengguna lama yang harus terus mengisi saldo ETH mereka untuk membayar biaya bahan bakar meskipun mereka memiliki cukup token ERC-20 di dompet mereka untuk membayar transaksi yang mereka perlukan.
Arsitektur
Klien: menandatangani & mengirimkan transaksi meta ke server relai
Meta-transaksi adalah nama yang bagus untuk ide sederhana: server relai dapat mengirimkan transaksi pengguna dan membayar sendiri biaya bahan bakarnya. Daripada menandatangani transaksi Ethereum, yang memerlukan ETH untuk bahan bakar, pengguna menandatangani pesan yang berisi informasi tentang transaksi yang ingin mereka jalankan dan mengirimkannya ke server relay.
Server relai: mengirimkan transaksi dan membayar biaya gas protokol Ethereum untuk melakukannya
Setelah menerima permintaan untuk menyampaikan transaksi dari klien, server Relay akan memvalidasi transaksi ini untuk memastikan ia membayar kembali jumlah ETH yang menutupi biaya pengiriman dan sejumlah biaya tambahan agar penyampai dapat menghasilkan keuntungan.
Jika semuanya baik-baik saja, relayer menandatangani transaksi Ethereum asli, mengirimkannya ke mempool dan mengembalikan transaksi yang ditandatangani ke klien untuk validasi. Jika terjadi kesalahan, klien dapat memilih server relai lain dan mencoba mengirim transaksi melalui server baru.
Hal ini menciptakan efek “satu untuk semua dan semua untuk satu” di mana menghapus bagian depan dapp sama sulitnya dengan menghapus seluruh jaringan. Semakin banyak dapps yang berpartisipasi, semakin kuat jaminan ketersediaannya.
Paymaster: setuju untuk mengembalikan server relay untuk biaya bahan bakar
Di GSN, semua logika pengembalian bahan bakar diterapkan di dalam kontrak Paymaster. Seorang paymaster menjaga saldo ETH di RelayHub dan dapat menerapkan logika bisnis apa pun untuk memutuskan apakah akan menerima atau menolak transaksi meta. Misalnya, hanya menerima transaksi dari pengguna yang masuk daftar putih, atau metode kontrak yang diperlukan untuk pengguna orientasi yang juga melewati captcha, atau hanya transaksi yang menyertakan pembayaran token ke Paymaster, dll.
Forwarder: memverifikasi tanda tangan dan nonce pengirim
Kontrak penerima yang sadar transaksi meta hanya mengandalkan kontrak penerusan kecil yang tepercaya untuk keamanannya. Kontrak ini memverifikasi tanda tangan dan nonce pengirim asli.
Kontrak penerima: melihat pengirim asli dan mengeksekusi transaksi awal
Metode publik apa pun dari kontrak penerima dapat dijalankan melalui GSN.
Untuk mendukung transaksi meta, kontrak penerima mewarisi dari kelas dasar sederhana dan menggantinya msg.sender
dengan _msgSender()
. Ini mengembalikan pengirim asli yang menandatangani permintaan transaksi meta.
Masih dimungkinkan untuk melakukan panggilan transaksi asli ke kontrak ini. Metode ini _msgSender()
hanya akan kembali msg.sender
jika kontrak dipanggil secara langsung.
RelayHub: mengoordinasikan proses dengan cara yang tidak dapat dipercaya
RelayHub menghubungkan pengguna yang menjalankan klien, server relay, dan paymaster sehingga peserta tidak perlu mengetahui atau mempercayai satu sama lain.
Pengembang Dapp tidak perlu memahami atau mempercayai cara kerja RelayHub untuk berintegrasi dengan GSN. Kontrak penerima tidak terkena potensi masalah keamanan di RelayHub.
Di balik terpal, RelayHub membantu klien menemukan server relai pihak ketiga terbaik, mencegah server relai pihak ketiga menyensor transaksi, dan memastikan Paymaster membayar kembali server relai untuk biaya bahan bakar ditambah biaya transaksi.
Ulasan
Belum ada ulasan.