Analisis Abstraksi Akun Multi-Rantai: Menjelajahi Masa Depan Infrastruktur Enkripsi
Baru-baru ini, konferensi komunitas Ethereum (EthCC 7) diadakan di Brussels, Belgia, yang merupakan acara tahunan Ethereum terbesar di Eropa, dengan fokus pada teknologi dan komunitas. Pada konferensi ini, lebih dari 350 pemimpin pemikiran dari industri blockchain memberikan pidato, di mana salah satu pengembang menyampaikan pidato berjudul "Mengungkap Masa Depan: Analisis Abstraksi Akun Multi-Rantai".
Inti Pidato
Account abstraction (AA) terutama mencakup dua poin kunci yaitu tanda tangan abstraksi dan pembayaran abstraksi. Tanda tangan abstraksi memungkinkan pengguna untuk memilih mekanisme verifikasi yang mereka suka, sementara pembayaran abstraksi memungkinkan penggunaan berbagai opsi pembayaran transaksi. Fleksibilitas ini memberikan pengalaman pengguna yang lebih aman dan lebih baik.
Di ERC-4337 dan AA asli, fungsi titik masuk pada tahap "verifikasi" adalah tetap, sedangkan pada tahap "eksekusi", hanya titik masuk dalam AA asli yang tetap. Batasan untuk memverifikasi transaksi dan langkah-langkah untuk mengeksekusi transaksi memiliki karakteristik dan batasan masing-masing dalam implementasi yang berbeda.
Dalam menerapkan ERC-4337 di rantai yang kompatibel dengan EVM, ada dua perbedaan kunci: perbedaan protokol dalam desain Rollup dan perbedaan cara perhitungan alamat, yang menyebabkan rincian pengembangan yang sulit diperhatikan saat mengimplementasikan ERC-4337 antara L1 dan L2.
Pengenalan account abstraction
Apa itu account abstraction
account abstraction (AA) terutama mencakup dua poin kunci:
Abstraksi tanda tangan: Pengguna dapat memilih mekanisme verifikasi yang disukai, bukan hanya terbatas pada beberapa algoritma tanda tangan digital (seperti ECDSA).
Abstraksi Pembayaran: Pengguna dapat menggunakan berbagai opsi pembayaran transaksi, seperti menggunakan aset ERC-20 sebagai pengganti aset asli untuk melakukan pembayaran, atau membiarkan pihak ketiga mensponsori transaksi.
Fleksibilitas ini memberikan pengalaman pengguna yang lebih aman dan lebih baik. Tujuan dari account abstraction adalah untuk mencapai kedua poin kunci ini melalui berbagai cara.
Ringkasan ERC-4337
Saat ini, terdapat beberapa batasan pada akun yang dimiliki secara eksternal (EOA) dalam protokol Ethereum, seperti metode tanda tangan yang tetap dan desain pembayaran. ERC-4337 menyelesaikan masalah ini dengan memperkenalkan metode pengelolaan akun dan pemrosesan transaksi yang lebih fleksibel.
struktur userOp: Dalam ERC-4337, pengguna mengirimkan struktur userOp ke Bundler. Bundler mengumpulkan beberapa userOp dan mengirimkannya ke kontrak EntryPoint melalui pemanggilan fungsi handleOps.
Kontrak EntryPoint: Kontrak ini mengelola transaksi seperti sistem operasi, dengan fungsi utama sebagai berikut:
Panggil fungsi validate dalam kontrak akun untuk memastikan userOp mendapatkan otorisasi dari pemilik akun.
Mengambil biaya.
Memanggil fungsi execute dalam kontrak akun untuk menjalankan operasi target userOp.
Pengenalan AA asli
Di Ethereum, akun dibagi menjadi EOA dan akun kontrak. Namun, dalam AA asli, setiap akun adalah kontrak, dan mekanisme pemrosesan transaksi langsung disematkan ke dalam protokol blockchain.
Akun abstraksi asli mengikuti ERC-4337: Era StarkNet dan zkSync
Akun abstrak asli dengan desain privasi: Aztec
Perbedaan antara ERC-4337 dan AA asli
peran sistem operasi
AA OS perlu menyelesaikan masalah berikut:
Siapa yang menentukan harga Gas?
Siapa yang memutuskan urutan transaksi? Di mana mempool?
Siapa yang memicu fungsi titik masuk?
Apa yang menentukan proses pemrosesan transaksi?
Dalam ERC-4337, peran-peran ini diselesaikan melalui Bundler dan Kontrak EntryPoint.
Dalam AA asli, pengguna mengirim userOps mereka ke operator/penyortir server resmi, bukan Bundler dan EntryPoint Contract.
Di StarkNet, Sequencer bertanggung jawab untuk mengurus semua tugas ini.
Dalam zkSync, perbedaan utama Era dengan implementasi AA lainnya adalah Operator perlu bekerja sama dengan bootloader (kontrak sistem). Bootloader membuka blok baru, mendefinisikan parameternya (termasuk parameter blok dan parameter Gas lainnya), dan menerima transaksi dari Operator untuk diverifikasi.
antarmuka kontrak
Karena adanya tiga langkah, antarmuka kontrak akun serupa dalam implementasi yang berbeda, dan fungsi titik masuk ini hanya dapat dipanggil oleh AA OS:
Dalam ERC-4337 dan AA asli, fungsi titik masuk dari tahap "verifikasi" adalah tetap, sementara di tahap "eksekusi", hanya titik masuk dalam AA asli yang tetap.
batasan langkah verifikasi
Karena tidak ada batasan biaya untuk memverifikasi transaksi (pada dasarnya, memverifikasi transaksi adalah memanggil fungsi tampilan), penyerang dapat melakukan serangan DoS pada mempool, yang dapat merusak bundler (EIP-4337) atau operator/pengurut (AA asli).
EIP-4337 mendefinisikan operasi kode mana yang dilarang dan bagaimana membatasi akses penyimpanan. zkSync Era melonggarkan penggunaan beberapa OpCode:
Logika kontrak hanya dapat mengakses slot penyimpanan miliknya sendiri. Jika alamat kontrak akun adalah alamat A, ia dapat mengakses:
Slot penyimpanan yang dimiliki oleh alamat A
slot penyimpanan yang dimiliki oleh alamat A lainnya
Slot penyimpanan keccak256(A || X) yang terkait dengan alamat lainnya: ini berarti menggunakan alamat secara langsung sebagai kunci dalam mapping (misalnya, mapping (address => value)), setara dengan mengakses slot keccak256(A || X). Contohnya, saldo aset dalam kontrak ERC-20.
Logika kontrak tidak dapat mengakses variabel global, seperti nomor blok. StarkNet juga tidak mengizinkan panggilan kontrak eksternal.
batasan langkah eksekusi
Dalam zkSync, eksekusi panggilan sistem memerlukan konfirmasi adanya tanda sistem. Misalnya, satu-satunya cara untuk meningkatkan nonce adalah dengan berinteraksi dengan NonceHolder, sedangkan untuk menerapkan kontrak, perlu berinteraksi dengan ContractDeployer. Tanda sistem memastikan bahwa pengembang akun secara sadar berinteraksi dengan kontrak sistem.
Pada ERC-4337 dan StarkNet, tidak ada batasan khusus pada tahap eksekusi.
angka acak
Dalam ERC-4337, desain bilangan acak titik masuk membedakan nilai kunci 192-bit dan nilai acak 64-bit.
Di zkSync, kontrak sistem NonceHolder mengelola nonce, memastikan peningkatan yang ketat, yaitu menambahkan angka acak 1.
Di StarkNet, nonce juga meningkat secara ketat, tetapi tidak ada nonce abstrak yang dikelola oleh kontrak tertentu.
menggunakan transaksi pertama untuk penyebaran
ERC-4337 memiliki field initcode dalam struktur userOp untuk menerapkan pengirim (akun kontrak) dalam userOp pertamanya.
Di StarkNet dan zkSync, pengguna harus mengirim transaksi pertama mereka ke operator/sorter untuk meng-deploy kontrak akun.
desain khusus di zkSync
Jika Anda mentransfer ETH langsung dari EOA Ethereum ke zkSync tanpa perlu menyebarkan kontrak akun kustom, Anda akan menerima akun default dengan alamat yang sama. Akun ini dapat berfungsi seperti EOA Ethereum dan juga dikendalikan oleh kunci pribadi EOA Ethereum yang sesuai.
Tipe akun ini adalah versi None dan bukan version1. Anda tidak dapat memanggil fungsi DefaultAccount karena tidak ada kode yang diterapkan di ruang kernel.
Perbedaan 4337 L1 dan 4337 L2
Ada dua perbedaan kunci dalam menerapkan ERC-4337 di rantai yang kompatibel dengan EVM: perbedaan protokol dan perbedaan alamat.
perbedaan protokol
Dalam desain Rollup, L2 perlu mengunggah data ke L1 untuk keamanan dan penyelesaian. Dalam konteks ERC-4337, biaya yang terkait dengan proses pengunggahan ini, seperti biaya keamanan L1 dan biaya blob, harus dimasukkan dalam Gas pra-verifikasi. Menentukan biaya pengunggahan yang tepat dalam Gas pra-verifikasi adalah tantangan besar.
perbedaan alamat
Metode pengkodean alamat dalam fungsi create zkSync ERA berbeda dari Ethereum dan OP rollup. Selain itu, StarkNet menggunakan fungsi hash yang unik untuk perhitungan alamat. Dalam konteks ERC-4337 di rantai yang kompatibel dengan EVM, kita biasanya mengasumsikan bahwa perhitungan alamat konsisten di masing-masing rantai. Namun, ada detail yang sulit diperhatikan yang mungkin menyebabkan alamat kontrak akun berbeda antara implementasi ERC-4337 di Ethereum dan L2.
Masalah kunci adalah menambahkan opcode baru dalam hard fork. Misalnya, jika rantai L2 tidak mendukung hard fork Shanghai, dan versi EVM tidak ditentukan saat kompilasi, pengenalan push0 akan menyebabkan perubahan bytecode, meskipun kode Solidity tetap sama.
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
17 Suka
Hadiah
17
2
Bagikan
Komentar
0/400
OnChainArchaeologist
· 07-09 19:30
Suka mengutak-atik ini
Lihat AsliBalas0
PriceOracleFairy
· 07-09 19:30
meh, aa hanyalah matematika eth yang mewah... tapi abstraksi tanda tangan terlihat cukup menggoda jujur saja
Penjelasan akun abstrak multi-rantai: Perbedaan kunci antara ERC-4337 dan AA asli
Analisis Abstraksi Akun Multi-Rantai: Menjelajahi Masa Depan Infrastruktur Enkripsi
Baru-baru ini, konferensi komunitas Ethereum (EthCC 7) diadakan di Brussels, Belgia, yang merupakan acara tahunan Ethereum terbesar di Eropa, dengan fokus pada teknologi dan komunitas. Pada konferensi ini, lebih dari 350 pemimpin pemikiran dari industri blockchain memberikan pidato, di mana salah satu pengembang menyampaikan pidato berjudul "Mengungkap Masa Depan: Analisis Abstraksi Akun Multi-Rantai".
Inti Pidato
Account abstraction (AA) terutama mencakup dua poin kunci yaitu tanda tangan abstraksi dan pembayaran abstraksi. Tanda tangan abstraksi memungkinkan pengguna untuk memilih mekanisme verifikasi yang mereka suka, sementara pembayaran abstraksi memungkinkan penggunaan berbagai opsi pembayaran transaksi. Fleksibilitas ini memberikan pengalaman pengguna yang lebih aman dan lebih baik.
Di ERC-4337 dan AA asli, fungsi titik masuk pada tahap "verifikasi" adalah tetap, sedangkan pada tahap "eksekusi", hanya titik masuk dalam AA asli yang tetap. Batasan untuk memverifikasi transaksi dan langkah-langkah untuk mengeksekusi transaksi memiliki karakteristik dan batasan masing-masing dalam implementasi yang berbeda.
Dalam menerapkan ERC-4337 di rantai yang kompatibel dengan EVM, ada dua perbedaan kunci: perbedaan protokol dalam desain Rollup dan perbedaan cara perhitungan alamat, yang menyebabkan rincian pengembangan yang sulit diperhatikan saat mengimplementasikan ERC-4337 antara L1 dan L2.
Pengenalan account abstraction
Apa itu account abstraction
account abstraction (AA) terutama mencakup dua poin kunci:
Abstraksi tanda tangan: Pengguna dapat memilih mekanisme verifikasi yang disukai, bukan hanya terbatas pada beberapa algoritma tanda tangan digital (seperti ECDSA).
Abstraksi Pembayaran: Pengguna dapat menggunakan berbagai opsi pembayaran transaksi, seperti menggunakan aset ERC-20 sebagai pengganti aset asli untuk melakukan pembayaran, atau membiarkan pihak ketiga mensponsori transaksi.
Fleksibilitas ini memberikan pengalaman pengguna yang lebih aman dan lebih baik. Tujuan dari account abstraction adalah untuk mencapai kedua poin kunci ini melalui berbagai cara.
Ringkasan ERC-4337
Saat ini, terdapat beberapa batasan pada akun yang dimiliki secara eksternal (EOA) dalam protokol Ethereum, seperti metode tanda tangan yang tetap dan desain pembayaran. ERC-4337 menyelesaikan masalah ini dengan memperkenalkan metode pengelolaan akun dan pemrosesan transaksi yang lebih fleksibel.
struktur userOp: Dalam ERC-4337, pengguna mengirimkan struktur userOp ke Bundler. Bundler mengumpulkan beberapa userOp dan mengirimkannya ke kontrak EntryPoint melalui pemanggilan fungsi handleOps.
Kontrak EntryPoint: Kontrak ini mengelola transaksi seperti sistem operasi, dengan fungsi utama sebagai berikut:
Pengenalan AA asli
Di Ethereum, akun dibagi menjadi EOA dan akun kontrak. Namun, dalam AA asli, setiap akun adalah kontrak, dan mekanisme pemrosesan transaksi langsung disematkan ke dalam protokol blockchain.
Desain AA di berbagai jaringan blockchain:
Perbedaan antara ERC-4337 dan AA asli
peran sistem operasi
AA OS perlu menyelesaikan masalah berikut:
Dalam ERC-4337, peran-peran ini diselesaikan melalui Bundler dan Kontrak EntryPoint.
Dalam AA asli, pengguna mengirim userOps mereka ke operator/penyortir server resmi, bukan Bundler dan EntryPoint Contract.
Di StarkNet, Sequencer bertanggung jawab untuk mengurus semua tugas ini.
Dalam zkSync, perbedaan utama Era dengan implementasi AA lainnya adalah Operator perlu bekerja sama dengan bootloader (kontrak sistem). Bootloader membuka blok baru, mendefinisikan parameternya (termasuk parameter blok dan parameter Gas lainnya), dan menerima transaksi dari Operator untuk diverifikasi.
antarmuka kontrak
Karena adanya tiga langkah, antarmuka kontrak akun serupa dalam implementasi yang berbeda, dan fungsi titik masuk ini hanya dapat dipanggil oleh AA OS:
Dalam ERC-4337 dan AA asli, fungsi titik masuk dari tahap "verifikasi" adalah tetap, sementara di tahap "eksekusi", hanya titik masuk dalam AA asli yang tetap.
batasan langkah verifikasi
Karena tidak ada batasan biaya untuk memverifikasi transaksi (pada dasarnya, memverifikasi transaksi adalah memanggil fungsi tampilan), penyerang dapat melakukan serangan DoS pada mempool, yang dapat merusak bundler (EIP-4337) atau operator/pengurut (AA asli).
EIP-4337 mendefinisikan operasi kode mana yang dilarang dan bagaimana membatasi akses penyimpanan. zkSync Era melonggarkan penggunaan beberapa OpCode:
Logika kontrak hanya dapat mengakses slot penyimpanan miliknya sendiri. Jika alamat kontrak akun adalah alamat A, ia dapat mengakses:
Logika kontrak tidak dapat mengakses variabel global, seperti nomor blok. StarkNet juga tidak mengizinkan panggilan kontrak eksternal.
batasan langkah eksekusi
Dalam zkSync, eksekusi panggilan sistem memerlukan konfirmasi adanya tanda sistem. Misalnya, satu-satunya cara untuk meningkatkan nonce adalah dengan berinteraksi dengan NonceHolder, sedangkan untuk menerapkan kontrak, perlu berinteraksi dengan ContractDeployer. Tanda sistem memastikan bahwa pengembang akun secara sadar berinteraksi dengan kontrak sistem.
Pada ERC-4337 dan StarkNet, tidak ada batasan khusus pada tahap eksekusi.
angka acak
menggunakan transaksi pertama untuk penyebaran
desain khusus di zkSync
Jika Anda mentransfer ETH langsung dari EOA Ethereum ke zkSync tanpa perlu menyebarkan kontrak akun kustom, Anda akan menerima akun default dengan alamat yang sama. Akun ini dapat berfungsi seperti EOA Ethereum dan juga dikendalikan oleh kunci pribadi EOA Ethereum yang sesuai.
Tipe akun ini adalah versi None dan bukan version1. Anda tidak dapat memanggil fungsi DefaultAccount karena tidak ada kode yang diterapkan di ruang kernel.
Perbedaan 4337 L1 dan 4337 L2
Ada dua perbedaan kunci dalam menerapkan ERC-4337 di rantai yang kompatibel dengan EVM: perbedaan protokol dan perbedaan alamat.
perbedaan protokol
Dalam desain Rollup, L2 perlu mengunggah data ke L1 untuk keamanan dan penyelesaian. Dalam konteks ERC-4337, biaya yang terkait dengan proses pengunggahan ini, seperti biaya keamanan L1 dan biaya blob, harus dimasukkan dalam Gas pra-verifikasi. Menentukan biaya pengunggahan yang tepat dalam Gas pra-verifikasi adalah tantangan besar.
perbedaan alamat
Metode pengkodean alamat dalam fungsi create zkSync ERA berbeda dari Ethereum dan OP rollup. Selain itu, StarkNet menggunakan fungsi hash yang unik untuk perhitungan alamat. Dalam konteks ERC-4337 di rantai yang kompatibel dengan EVM, kita biasanya mengasumsikan bahwa perhitungan alamat konsisten di masing-masing rantai. Namun, ada detail yang sulit diperhatikan yang mungkin menyebabkan alamat kontrak akun berbeda antara implementasi ERC-4337 di Ethereum dan L2.
Masalah kunci adalah menambahkan opcode baru dalam hard fork. Misalnya, jika rantai L2 tidak mendukung hard fork Shanghai, dan versi EVM tidak ditentukan saat kompilasi, pengenalan push0 akan menyebabkan perubahan bytecode, meskipun kode Solidity tetap sama.