Nonce tahan lama: penandatanganan dua perangkat di Solana

·7 mnt baca·Oleh SSP Editorial Team
Sampul merek SSP untuk artikel Multisig Dijelaskan tentang nonce tahan lama Solana dan penandatanganan dua perangkat

Nonce tahan lama: penandatanganan dua perangkat di Solana

SSP adalah dompet 2-dari-2. Setiap transaksi memerlukan dua tanda tangan: satu dari Wallet, ekstensi peramban di komputer Anda, dan satu dari SSP Key di ponsel Anda. Justru di situlah seluruh inti desain ini — pencuri yang mencuri satu perangkat tetap tidak bisa memindahkan dana Anda. Tetapi ini memunculkan masalah yang sangat manusiawi. Komputer membangun dan menandatangani transaksi dalam sepersekian detik. Ponsel mungkin baru ikut menandatangani dua atau tiga menit kemudian, karena seseorang harus mengambil ponsel, melihat permintaan, dan menyentuh setujui.

Di Solana, jeda itu adalah masalah. Artikel ini menjelaskan alasannya, dan bagaimana SSP menyelesaikannya tanpa menyimpan apa pun yang rapuh.

Blockhash yang kedaluwarsa

Setiap transaksi Solana biasa membawa sepotong data yang disebut blockhash terkini. Itu adalah sidik jari sebuah blok terkini di rantai, dan ia melakukan dua tugas sekaligus. Ia membuktikan transaksi dibuat baru-baru ini dan mencegah transaksi yang sama yang sudah ditandatangani diputar ulang selamanya.

Jebakannya ada pada kata terkini. Sebuah blockhash hanya berlaku sekitar 150 blok. Di Solana blok datang cepat, jadi 150 blok hanya sekitar 60 hingga 90 detik. Setelah jendela itu, jaringan langsung menolak transaksi — bukan karena ada yang salah dengan tanda tangannya, melainkan karena blockhash sudah basi.

Sekarang adu alur penandatanganan SSP melawan jam itu. Wallet membangun transaksi, menyematkan blockhash segar, dan menandatangani. Lalu pengguna diberi tahu di ponselnya. Jika ia menjawab dalam 90 detik, baik. Jika ia sedang rapat, ponsel ada di ruangan lain, atau ia hanya ingin membaca transaksi dengan tenang, blockhash mati diam-diam. Tanda tangan Wallet masih sah secara kriptografi, tetapi transaksi tempat ia melekat kini tidak berharga. Semuanya harus dibangun ulang dan ditandatangani ulang dari awal.

Untuk dompet penanda tangan tunggal yang menandatangani dan menyiarkan dalam satu tarikan napas, jendela 90 detik itu lapang. Untuk dompet 2-dari-2 di mana seorang manusia berdiri di antara dua tanda tangan, itu adalah perlombaan yang terus dikalahkan pengguna.

Apa itu nonce tahan lama

Solana punya jawaban bawaan untuk ini, dan ia lebih tua daripada SSP: nonce tahan lama. Idenya adalah mengganti blockhash yang kedaluwarsa dengan nilai yang tidak kedaluwarsa.

Sebuah nonce tahan lama hidup di akunnya sendiri yang kecil di rantai — sebuah akun nonce. Akun ini milik sistem, hanya menampung 80 byte data, dan salah satu bagian data itu adalah nilai nonce itu sendiri: pengganti berumur panjang untuk sebuah blockhash. Sebuah transaksi dapat dibangun untuk memakai nilai akun nonce alih-alih sebuah blockhash terkini. Karena nilai itu tidak menua, transaksi tetap sah selama apa pun yang diperlukan — menit, jam, hari.

Namun tidak ada yang gratis, dan sebuah nonce membutuhkan penjaga terhadap pemutaran ulang. Penjaga itu adalah sebuah aturan: setiap transaksi yang memakai nonce tahan lama harus membawa sebuah instruksi tertentu, nonceAdvance, sebagai instruksi pertamanya. Ketika transaksi akhirnya mendarat, nonceAdvance mengonsumsi nilai nonce saat ini dan memutar akun ke nilai baru. Nonce hanya sekali pakai. Transaksi yang Anda tandatangani Senin bisa menunggu sampai Rabu, tetapi begitu ia dieksekusi, nonce yang persis itu tidak akan pernah bisa lagi mengesahkan transaksi lain. Jika Anda ingin membaca penjelasan Solana sendiri tentang mekanisme ini, dokumentasi nonce transaksi tahan lama adalah sumber primer.

Jadi sebuah nonce tahan lama membeli waktu tanpa membeli risiko pemutaran ulang. Itu persis sifat yang dibutuhkan dompet dua perangkat.

Sentuhan SSP: akun nonce yang tidak pernah perlu Anda simpan

Sebuah akun nonce tahan lama tetaplah sebuah akun, dan di Solana setiap akun punya sebuah alamat. Pendekatan naif adalah membuat akun nonce di suatu alamat acak, lalu dengan hati-hati mengingat alamat itu selamanya — menuliskannya ke penyimpanan lokal dompet, mencadangkannya, berharap ia selamat dari reset perangkat. Itu satu lagi hal rapuh yang bisa hilang.

SSP menolak menyimpannya. Sebagai gantinya, program multisig SSP untuk Solana memuat sebuah instruksi bernama provision_nonce, dan ia membuat akun nonce di sebuah alamat turunan. Alamat itu berasal dari resep deterministik: ia dihitung dari akun multisig itu sendiri, dari label teks tetap "nonce", dan dari Program Sistem Solana. Multisig yang sama masuk, alamat nonce yang sama keluar — setiap kali.

Ini penting karena apa yang sudah ditetapkan oleh sisa seri ini. Multisig SSP untuk Solana menurunkan alamat multisig dari himpunan anggota, dan menurunkan alamat brankas dari multisig. (Jika penurunan-penurunan ini baru bagi Anda, artikel multisig Solana yang menginisiasi dirinya sendiri menelusuri masing-masing.) Akun nonce kini bergabung ke keluarga yang sama: ia juga sebuah penurunan murni. Perangkat SSP mana pun — komputer Anda, ponsel Anda, dompet yang baru dipasang ulang — dapat menghitung ulang alamat akun nonce dari nol. Tidak ada alamat rahasia yang bisa hilang, karena tidak ada alamat tersimpan sama sekali.

Beberapa catatan praktis mengikuti dari desain ini. provision_nonce bersifat tanpa izin (permissionless): siapa pun dapat membayar sewa kecil (sekitar 0,00144 SOL) untuk membuat akun nonce ada, dan yang membayar menjadi otoritas awalnya — dalam praktiknya paymaster relay SSP. Otoritas itu nantinya dapat dialihkan tanpa alamat akun pernah berubah, sehingga alamat yang Anda turunkan hari ini tetap benar bahkan jika kunci operasional di baliknya diputar. Lokasi akun nonce ditambatkan pada multisig Anda, bukan pada siapa pun yang kebetulan mendanainya.

Alur penandatanganan yang tenang

Satukan kepingannya dan perlombaan itu lenyap. Wallet membangun sebuah transaksi yang memakai akun nonce turunan alih-alih sebuah blockhash terkini, menempatkan nonceAdvance sebagai instruksi pertama, dan menandatangani. Sebuah notifikasi push pergi ke ponsel. Pengguna menyetujui kapan pun ia siap — tidak ada jam yang berdetak melawannya. SSP Key menambahkan tanda tangan kedua, dan transaksi yang sepenuhnya ditandatangani disiarkan. Karena ia dibangun di atas sebuah nonce tahan lama, ia masih sah, dan nonceAdvance memutar nonce agar transaksi tidak dapat diputar ulang.

Ada satu kendala lagi yang layak disebut namanya. Solana membatasi satu transaksi tunggal pada 1232 byte. Sebuah transaksi multisig harus memuat daftar anggota dan instruksi pembelanjaan ke dalam batas itu, itulah sebabnya SSP memakai format transaksi berversi yang ringkas dari Solana dan mengoper data seketat mungkin. Nonce tahan lama tidak mengubah anggaran ukuran; ia hanya mengubah anggaran waktu.

Turunkan segalanya, simpan tidak satu pun

Inilah benang yang membentang di seluruh seri Multisig di Solana, dengan Cara SSP. Alamat multisig, brankas yang menyimpan dana Anda, dan kini akun nonce yang memberi dua perangkat waktu untuk bersepakat — tidak satu pun darinya adalah nilai yang harus disimpan dan dijaga oleh SSP. Masing-masing dihitung ulang sesuai permintaan dari masukan yang sudah diketahui dompet. Lebih sedikit yang perlu dicadangkan, lebih sedikit yang bisa bocor, dan lebih sedikit yang bisa keliru pada reset perangkat. Desain multisig yang bersandar pada gagasan ini, seperti pendekatan multisig penanda tangan tunggal dari SSP, cenderung menjadi yang punya paling sedikit bagian bergerak yang bisa rusak.

Sebuah catatan penutup dengan semangat kejujuran yang sama seperti sisa seri ini: program multisig SSP untuk Solana saat ini hanya digelar di devnet, dan menunggu audit keamanan eksternal sebelum rilis mainnet apa pun. Desain yang dijelaskan di sini — termasuk provision_nonce dan akun nonce turunannya — itu nyata dan dapat dibaca dalam program sumber terbuka, tetapi belum menjadi infrastruktur produksi. Jika model dua perangkat SSP itu sendiri baru bagi Anda, artikel pengantar apa itu multisig 2-dari-2 adalah tempat untuk memulai.

Nonce tahan lama adalah sepotong kecil dan tua dari perpipaan Solana. Sumbangan SSP adalah menjadikan alamatnya satu lagi hal yang tidak pernah perlu Anda ingat.

Bagikan artikel ini

Artikel terkait