Tadi pagi aku mengalami kegagalan transaksi, benar-benar tidak terkait dengan proyek apa pun—ada persetujuan tertentu yang barusan... tidak berhasil dilakukan, tanpa alasan yang jelas. Aku sempat kesal sedikit sesaat sebelum melanjutkan hari seperti biasa.

Lalu, karena penasaran, aku kembali ke tugas Newton Protocol dan transaksi yang gagal itu terus menggangguku sepanjang waktu, untuk alasan yang tidak aku duga.

Karena begini—yang sebenarnya terasa janggal adalah ini: aku merasa sudah bertahun-tahun menganggap "transaksi berhasil" sebagai hasil yang baik, dan "transaksi diblokir" sebagai hal yang menjengkelkan. Setiap UX dompet, setiap pilihan desain, memperkuat itu. Tanda centang hijau itu bagus, error merah itu buruk. Tapi dengan melihat pendekatan seluruh scope izin dari Newton, aku mulai bertanya-tanya—mungkin aku lebih sering membaliknya daripada yang mau aku akui. Transaksi yang diblokir bukanlah kegagalan sistem. Kadang itu justru sistem melakukan satu hal yang benar-benar berguna yang seharusnya ia lakukan.

Versi sederhana dari mekanismenya — orang mengira tugas dompet adalah mengeksekusi apa yang kau minta, dengan mulus, setiap saat, dan apa pun yang menginterupsi itu adalah hambatan atau bug. Yang sebenarnya terjadi dengan izin berbasis cakupan (scoped permissions) berbeda: dompet tidak sedang bertanya "bolehkah aku mengeksekusi ini", melainkan bertanya "apakah ini masuk ke dalam apa yang sudah kau setujui untuk diizinkan". Jika tidak, penolakan bukanlah gangguan (glitch), melainkan lapisan izin yang bekerja sebagaimana mestinya. Aku sebelumnya secara mental mengelompokkan setiap tindakan yang diblokir di bawah "menjengkelkan", bukan di bawah "benar".

Tapi bagian yang menggangguku, dan aku belum melewatinya. Kalau penolakan mulai terlihat seperti hal yang normal dan bahkan bagus, bagaimana kau membedakan "ini ditolak karena berada di luar batas aman" versus "ini ditolak karena batasnya ditetapkan salah sejak awal"? Keduanya terlihat identik dari sisi pengguna — transaksi yang gagal. Aku pikir dengan merenungkan ide ini sedikit lama akan menyelesaikan pembedaan untukku. Tidak. Aku benar-benar tidak yakin bagaimana seorang pengguna seharusnya bisa membedakan penolakan yang cerdas dari yang rusak tanpa menelusuri kebijakannya sendiri, dan kebanyakan orang tidak akan melakukannya.

Mengapa ini penting, menurutku, sangat tergantung pada siapa yang melihat transaksi yang diblokir tersebut. Bagi seorang pembangun atau seseorang yang mengaudit logika izin, penolakan adalah data — berguna, diharapkan, bahkan bisa jadi tujuan utamanya. Bagi pengguna rata-rata yang hanya ingin melakukan sesuatu yang berulang, penolakan hanyalah hambatan, titik, apa pun penyebabnya. Celah antara dua respons terhadap peristiwa yang persis sama itu terasa lebih penting daripada mekanismenya sendiri.

Sesaat saja — setelah transaksi gagal milikku tadi, aku benar-benar mengecek batas persetujuan karena kebiasaan, mengira ada bug. Ternyata bukan. Aku baru saja mengaturnya terlalu sempit berbulan-bulan lalu dan lupa. Jadi dalam kasusku sendiri, hasil "paling aman" dan hasil "paling menjengkelkan" sebenarnya adalah peristiwa yang sama, dan kelupaan diriku sendiri yang memutuskan yang mana rasanya.

Pokoknya. Aku tidak akan mendarat di penilaian yang bersih di sini. Mungkin hanya akan terus memantau apakah pesan penolakan berkembang hingga benar-benar menjelaskan dirinya sendiri, atau tetap sekabur sekarang.

@NewtonProtocol #Newt $NEWT