- AT Protocol adalah protokol yang menjadi fondasi jejaring sosial terdesentralisasi, dan semua data diidentifikasi dengan at:// URI
- at:// URI menetapkan pembuat data (pengguna) sebagai authority, sedangkan lokasi hosting sebenarnya untuk data tersebut harus dicari secara terpisah
- Prosedur resolusi URI terdiri dari urutan mengubah handle menjadi identitas (DID), memeriksa server hosting melalui DID Document, lalu meminta data JSON dari server tersebut
- Dua jenis metode DID (did:web, did:plc) didukung, dan masing-masing memiliki kelebihan, kekurangan, serta cara preservasi data yang berbeda
- Pendekatan ini menekankan bahwa kepemilikan data ada pada pengguna, serta menjamin persistensi koneksi sehingga hubungan tetap terjaga meskipun handle dan hosting berubah
AT Protocol, at:// URI, dan proses resolusi identitas data sosial
# Struktur dasar AT Protocol dan at:// URI
- AT Protocol memungkinkan banyak server terdistribusi berkomunikasi menurut standar tertentu, dan keseluruhan ekosistem ini disebut 'atmosphere'
- Setiap data di dalam atmosphere diberi URI unik yang diawali dengan at://, dan URI ini berfungsi seperti tautan ke data JSON
- Berbeda dari struktur URI tradisional, dalam AT Protocol pembuat data (pengguna) ditetapkan sebagai authority URI
- Misalnya, dalam bentuk
at://ruuuuu.de/app.bsky.feed.post/3lzy2ji4nms2z, ruuuuu.de menyatakan pemilik data tersebut
- Server fisik tempat data sebenarnya di-host tidak langsung tercantum di dalam URI, sehingga diperlukan proses resolusi tambahan untuk menemukannya
# Tiga tahap prosedur resolusi at:// URI
- Untuk memetakan at:// URI ke data sebenarnya (JSON), dibutuhkan tiga tahap
- Mengubah handle (
ruuuuu.de dan sejenisnya) menjadi identitas (DID: Decentralized Identifier)
- Handle adalah alias untuk identifikasi pengguna dan bisa berubah
- Karena itu, perlu diubah menjadi DID, yaitu ID global yang tidak berubah
- Cara konversi:
- Memeriksa informasi hosting data melalui DID Document
- DID Document berisi informasi seperti kunci publik identitas terkait, service endpoint (server), dan lainnya
- Untuk
did:web:~, digunakan pendekatan berbasis domain (https://domain/.well-known/did.json)
- Untuk
did:plc:~, pencarian dilakukan di PLC directory (https://plc.directory/DID)
- Service endpoint (
serviceEndpoint) adalah server hosting data yang sebenarnya
- Meminta data JSON melalui API server hosting
- Minta data dengan mengirimkan setiap bagian at:// sebagai parameter ke endpoint
com.atproto.repo.getRecord
- JSON yang dikembalikan adalah data nyata yang dipetakan ke at:// URI tersebut
# Penjelasan proses resolusi lewat contoh
- Contoh:
at://ruuuuu.de/app.bsky.feed.post/3lzy2ji4nms2z
- Meskipun handle berubah, jika menggunakan at:// URI berbasis DID (permalink), hubungan antara akun dan data tetap terjaga
# Perbedaan metode DID: did:web dan did:plc
- did:web:
- Bisa mengelola dan memverifikasi domain sendiri
- Jika kehilangan kendali atas domain, ada kemungkinan kehilangan seluruh ID
- did:plc:
- PLC (Public Ledger of Credentials) menjadi pihak yang mengoperasikan ID
- Tidak terikat pada domain, tetapi ada kemungkinan kontrol terbatas, misalnya jika operator PLC menolak pembaruan
- Seluruh riwayat perubahan dapat diverifikasi dan dilacak melalui hash
# Pemisahan identitas, hosting, dan data serta persistensinya
- at:// memisahkan identitas dan hosting data, sehingga memungkinkan portabilitas data pengguna dan pembuatan tautan permanen
- Handle (nama alias) bisa diubah kapan saja, dan server hosting pun bisa dipindahkan dengan cara yang sama
- DID (identitas) tidak berubah, sehingga at:// URI berbasis DID dapat digunakan sebagai permalink yang persisten
- DID Document memuat bukti kepemilikan handle, kunci verifikasi tanda tangan, serta informasi hosting, sehingga menjamin kepercayaan dan fleksibilitas
# Aplikasi nyata dan catatan pengembangan
- Dalam praktiknya, sebagian besar aplikasi berbasis AT menerima push data melalui WebSocket dan sejenisnya lalu mengagregasikannya ke DB internal
- Meski begitu, memahami cara resolusi at:// URI tetap penting untuk memahami karakteristik jaringan dan memastikan portabilitas data
- Skema at:// menyediakan abstraksi jejaring sosial di atas HTTP, DNS, dan JSON, serta mewujudkan secara teknis bahwa kepemilikan data berada di tangan pengguna
# Kesimpulan
- AT Protocol dan at:// URI membawa evolusi teknis pada identitas, keterhubungan, dan persistensi data sosial
- Pengembang perlu memahami workflow inti seperti resolusi handle, pemanfaatan DID, struktur DID Document, dan cara meminta data nyata
- Berkat struktur ini, pengguna dapat memperoleh fleksibilitas dan kepemilikan atas konten, identitas, serta lokasi hosting mereka
1 komentar
Komentar Hacker News
Baru-baru ini saya terinspirasi oleh tulisan tentang ATProto lalu mencoba mendaftar ke bsky, tetapi yang saya lihat cuma cerita politik Amerika tanpa habisnya. Walau saya terus menekan "lihat lebih sedikit seperti ini", efeknya hampir tidak ada. Saya jadi penasaran apakah memang itu hakikat platform ini. Harus terus melihat opini klise tentang debat aneh dari luar negeri rasanya tidak bagus untuk mental.
Saya masih belum yakin proyek ini benar-benar menyelesaikan masalah identitas dan kepemilikan data secara bermakna. Dari sisi identitas, pilihannya pada dasarnya cuma punya domain sendiri atau memakai domain milik orang lain seperti Bluesky. Kebanyakan orang tidak punya domain, jadi pada akhirnya identitas mereka tetap dimiliki pihak ketiga. Data juga begitu. Kalau akun diblokir di Bluesky atau server lain, penyimpanannya ikut ditutup, dan Anda bahkan kehilangan kesempatan memindahkan data ke tempat lain. Ini sama saja seperti email. Kalau tidak punya domain dan server sendiri, secara praktis Anda tidak mengendalikan apa pun.
Penjelasan Dan selalu luar biasa, dan kali ini juga terasa sangat tepat waktunya mengingat kabar terbaru bahwa Bluesky akan memindahkan kendali operasional PLC. Tim kami di fair.pm juga memilih sistem DID yang sama untuk distribusi terdesentralisasi plugin WordPress, semacam package management seperti App Store. Orang-orang dari Bluesky, terutama Bryan, banyak membantu kami, dan kami bahkan berhasil mendapatkan dukungan kunci Ed25519 agar bisa memakai libsodium. Protokol kami sedang dirancang di atas DID dan stackable moderation milik Bluesky, tetapi kami tidak memakai atproto secara langsung. Yang penting adalah DID merupakan standar W3C, jadi PLC tidak terikat pada atproto.
Untuk menemukan at://, kita harus mengirim permintaan GET ke plc.directory, dan di titik ini sistemnya terasa berubah menjadi model yang 100% tersentralisasi. Setidaknya saya berharap bisa ada beberapa direktori tepercaya yang dipisahkan dari protokol, seperti DNS root atau CA.
Semua server yang menyimpan tautan at:// pada akhirnya tampaknya harus melewati DNS/HTTPS untuk menemukan representasi resmi permalink-nya. Kalau DNSSEC tidak berjalan semestinya, struktur ini terasa agak rapuh. Saya belum memikirkannya terlalu dalam, tetapi kekhawatiran yang langsung muncul adalah masalah seperti DNS poisoning yang memungkinkan penyerang memposting atas nama saya, karena public key ada di DID yang diambil dari DNS.
Dalam tulisan itu tidak banyak informasi tentang kunci yang dipakai untuk riwayat perubahan DID. Misalnya, kalau saya adalah foobar.bsky.social, saya tidak ingat pernah mengunggah kunci sendiri atau mendapat petunjuk untuk mengunduhnya. Saya jadi penasaran kunci itu sebenarnya ada di mana, siapa yang memilikinya, dan kapan dipakai. Selain itu, kalau DID saya ada di plc.directory, mekanisme apa yang mencegah operator situs itu menimpa DID saya secara sewenang-wenang lalu mencuri identitas saya?
Konsep at:// ini menarik, tetapi saya juga khawatir tentang isu-isu yang bisa muncul dalam sistem yang benar-benar berbasis kepemilikan data. Misalnya, karena pengguna memegang datanya sendiri, mereka bisa mengubah atau menghapus isi kapan saja. Seseorang bisa menulis postingan yang awalnya baik lalu belakangan mengubahnya secara jahat. Walaupun kita menyimpan hash tulisan lama untuk mencegah perubahan, layanan baru tidak akan tahu riwayat itu. Melacak like/upvote juga terasa sulit, dan kalau semua orang menyimpannya sebagai objek mereka sendiri, mencari siapa yang memberi upvote akan susah. Orang juga bisa membuat akun palsu tanpa batas lalu terus mengangkat postingannya sendiri. Terakhir, bila ada jumlah akun yang sangat besar dari berbagai platform, apakah moderasi terhadap spam atau aktivitas jahat tidak akan menjadi mustahil? Dengan asumsi tiap akun mengelola datanya sendiri, saya belum yakin desain sistem untuk transparansi, akuntabilitas, moderasi, pemblokiran spam, dan semua unsur lain benar-benar bisa berdiri.
Ini terasa mirip dengan banyak protokol kripto yang berbicara soal desentralisasi tetapi pada akhirnya tetap terikat ke satu platform.
Ada pertanyaan yang lebih struktural: "bagaimana cara menemukan JSON lewat URI at://?" Meski membaca dokumentasinya, saya tetap tidak merasa paham kenapa 'JSON itu' diperlukan. Secara pribadi pendekatan seperti ini tidak cocok untuk saya.
Saya penasaran apakah protokol ini pada dasarnya berfungsi seperti topik Kafka publik raksasa. Misalnya, saat membuat aplikasi web baru, Anda tidak menyimpan data sendiri, melainkan semua pengguna menyimpan data di ruang mereka masing-masing, lalu Anda punya listener yang mendengarkannya, protokol menjamin propagasi data, dan aplikasi tinggal mendengar lalu meng-cache. Secara konsep ini menarik, tetapi saya juga penasaran apakah konsep Kafka seperti offset agar update tidak terlewat atau partition untuk skala juga berlaku di sini.