paint-brush
BlueSky'nin AT Protokolüne Bir Bakış Neden Var Olması Gerektiğini Anlamama Yardımcı Olduile@thebojda
1,716 okumalar
1,716 okumalar

BlueSky'nin AT Protokolüne Bir Bakış Neden Var Olması Gerektiğini Anlamama Yardımcı Oldu

ile Laszlo Fazekas15m2025/01/11
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Twitter'a federasyonlu alternatif olan ve yenilikçi AT Protokolü tarafından desteklenen BlueSky'ı keşfedin. Merkezi olmayan yapısı, depolama sistemi, DID entegrasyonu ve kullanıcı özgürlüğünü ve özgünlüğünü önceliklendiren benzersiz özellikleri hakkında bilgi edinin. BlueSky'ın sosyal medyanın geleceğini nasıl şekillendirebileceğini keşfedin.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - BlueSky'nin AT Protokolüne Bir Bakış Neden Var Olması Gerektiğini Anlamama Yardımcı Oldu
Laszlo Fazekas HackerNoon profile picture
0-item
1-item


2022'de Elon Musk, o zamandan beri X olarak yeniden markalanan Twitter'ı satın aldı. Hikayenin bu kısmı yaygın olarak biliniyor. Ancak, daha az kişi platformu merkezsizleştirme projesinin Twitter içinde şekillendiğini biliyor. BlueSky adlı bu proje 2019'da başlatıldı. 2021'de Bluesky Social Benefit Corporation'a dönüştürüldü ve Twitter'dan bağımsız olarak devam etmesini sağladı. Bazı açılardan, BlueSky, X kadar Twitter'ın halefi olarak kabul edilebilir.


X, ücretli doğrulama ve premium özellikler sunan, büyük ölçüde kâr amacı güden bir hizmettir. Buna karşılık, BlueSky , Fediverse'e benzer açık protokoller üzerine kurulu, çok sayıda bağımsız düğümden oluşan tamamen açık bir sistemdir.


BlueSky ekibi ActivityPub standardından memnun kalmadığı için AT Protokolü adını verdikleri kendi protokollerini geliştirdiler.


Protokolün temel öğesi, bir veritabanına benzeyen depodur. Gönderiler, beğeniler ve diğer tüm veriler burada depolanır. Her kullanıcının (veya herhangi bir varlığın) bir deposu vardır. Depo, koleksiyonlar (veritabanı tablolarına benzer) içerir ve koleksiyonlar, anahtar-değer biçiminde kayıtlar içerir. Depo, IPFS gibi verileri depolar. Her kaydın, içerik tabanlı bir karma olan bir CID'si vardır. Bir kullanıcı veritabanındaki herhangi bir şeyi değiştirirse, verilerden bir kayıt karması oluşturulur (bir Git kaydına benzer). Veritabanındaki tek bitlik bir değişiklik bile yeni bir kayıt karması ile sonuçlanır. Deponun sahibi, her değişiklikten sonra bu kayıt karmasını dijital olarak imzalayarak veritabanını doğrular.


Bu çözümün avantajı, tüm deponun veya parçalarının sistemler arasında serbestçe aktarılabilmesi ve herhangi bir sistemin verilerin gerçekliğini kolayca doğrulayabilme yeteneğinin korunabilmesidir.


Kullanıcılar, depolarını kendi seçtikleri bir Kişisel Veri Sunucusunda (PDS) barındırabilirler. Bu anlamda, PDS bir veritabanı sunucusu gibi işlev görür. Kullanıcılar, PDS aracılığıyla depolarını düzenleyebilir ve başkalarının erişimine açabilirler. Bunun ötesinde, PDS çok çeşitli ek hizmetler sunar. Diğer kullanıcıların verilerine erişim sağlar, beslemeleri alır ve daha fazlasını yapar. Esasen, PDS kullanıcıların ağa bağlanmasını sağlayan tam işlevli bir sosyal medya düğümü olarak hizmet eder.


PDS yalnızca depoyu çalıştıran sistem olduğundan, kullanıcılar depolarını farklı PDS'ler arasında taşıma veya hatta kendi PDS'lerini çalıştırma özgürlüğüne sahiptir. Bu esneklik, sisteme özgürlüğünü sağlayan şeydir.


PDS'lerde saklanan depoların içeriği, belirli ölçütlere göre beslemeler oluşturan besleme oluşturucular tarafından izlenir. Diğer sosyal medya platformlarında (örneğin, Facebook) genellikle yalnızca bir besleme bulunur, ancak BlueSky'da kullanıcılar hangi beslemeden gönderi görmek istediklerini seçmekte özgürdür. Bir kullanıcı, bir besleme oluşturucunun ilgi alanlarıyla ilgili gönderileri göstermediğini, görmek istedikleri gönderileri sansürlediğini veya onları manipüle etmeye çalıştığını düşünürse, basitçe farklı bir besleme sağlayıcısına geçebilir.


Bu gevşek sistem ağı ve depoları aktarma kolaylığı, verimlilikten ödün vermeden tam bir özgürlük sağlar. Örneğin, istemcinin birden fazla kaynaktan gönderi toplamasına gerek yoktur, çünkü bu, besleme oluşturucu ve PDS tarafından yönetilir.


Sistemin yapısını ve temel bileşenlerini anladığımıza göre, biraz daha derinlere dalıp protokolün nasıl çalıştığına bakalım.


Her kullanıcıya (ve diğer varlıklara) benzersiz bir merkezi olmayan tanımlayıcı (DID) atanır. Bu DID, depoyla ve kullanıcının depo taahhütlerini imzalamak için kullandığı anahtar çiftiyle ilişkilendirilir. DID'leri hatırlamak zor olduğundan, kullanıcılar, sistemin DID'lere dönüştürdüğü alan adlarıyla tanımlanır.


Örneğin, kullanıcı adım thebojda.bsky.social'dır . DID buna iki şekilde bağlanabilir: ya uygun anahtarla alanın TXT kaydında belirtilerek ya da basitçe iyi bilinen URI aracılığıyla. DID'ye şu URL'den erişilebilir:


 https://thebojda.bsky.social/.well-known/atproto-did


Örneğin, benim DID'im: did:plc:4x7rynvskplz54p5pofj3jxa


AT Protokolü hem plc hem de web tipi DID'leri destekler. Bir web DID'si basit bir URL'dir, plc DID'si ise AT Protokolünün özel bir standardıdır ve genel anahtardan ve bazı ek verilerden üretilir (daha derinlemesine bilgi edinmek isteyenler burada daha fazla bilgi edinebilir ).


Her DID, DID'ye bağlı genel anahtarı ve deponun barındırıldığı PDS'nin URL'sini içeren bir DID belgesiyle ilişkilendirilir.


Bir DID şu şekilde çözülebilir:


 https://plc.directory/did:plc:4x7rynvskplz54p5pofj3jxa


DID belgesi şu şekilde görünüyor:


 { "@context": [ "https://www.w3.org/ns/did/v1", "https://w3id.org/security/multikey/v1", "https://w3id.org/security/suites/secp256k1-2019/v1" ], "id": "did:plc:4x7rynvskplz54p5pofj3jxa", "alsoKnownAs": [ "at://thebojda.bsky.social" ], "verificationMethod": [ { "id": "did:plc:4x7rynvskplz54p5pofj3jxa#atproto", "type": "Multikey", "controller": "did:plc:4x7rynvskplz54p5pofj3jxa", "publicKeyMultibase": "zQ3shaNKzE66K1Kr3dmbnDwXWHh6v4nUcBmpEaK7bVktKTwfh" } ], "service": [ { "id": "#atproto_pds", "type": "AtprotoPersonalDataServer", "serviceEndpoint": "https://fibercap.us-west.host.bsky.network" } ] }


Bu belgede, birisi yeni bir PDS'ye taşınırsa PDS URL'si güncellenmelidir. Örneğin, mevcut PDS'im https://fibercap.us-west.host.bsky.network adresinden erişilebilir.


PDS ile iletişim, basit bir HTTP/JSON tabanlı protokol olan XRPC aracılığıyla yapılır. Her çağrının ters DNS tarzı bir adı vardır. Örneğin, tüm depolarımı almak istersem, bunu şu şekilde yapabilirim:


 https://fibercap.us-west.host.bsky.network/xrpc/com.atproto.sync.getRepo?did=did:plc:4x7rynvskplz54p5pofj3jxa


com.atproto.sync.getRepo metodu deponun sorgulanması için kullanılır ve did parametresi vardır.


BlueSky ekibi, API ve veri yapılarını tanımlamak için Lexicon adlı JSON tabanlı bir tanımlayıcı dil geliştirdi. JSON Schema'ya benzerdir ve örneğin protokolün uygulanmasını basitleştiren TypeScript için tür güvenli arayüzler oluşturmak için kullanılabilir.


Son 10 yazımı almak için aşağıdaki çağrı kullanılabilir:


 https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=thebojda.bsky.social&limit=10


Sonuç şu şekilde görünüyor:


 { "feed": [ { "post": { "uri": "at://did:plc:4x7rynvskplz54p5pofj3jxa/app.bsky.feed.post/3le3esbhaek2l", "cid": "bafyreihagjnwrkakkajkaighz6kyqww3wznvbdcqpnl4wbfnpwrr2xwmmi", "author": { "did": "did:plc:4x7rynvskplz54p5pofj3jxa", "handle": "thebojda.bsky.social", "displayName": "Laszlo Fazekas", "avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:4x7rynvskplz54p5pofj3jxa/bafkreibxd4mx7rehgkc77diautavpcota6jotzkaagp4zv2t6w3a52n7sq@jpeg", "labels": [], "createdAt": "2024-11-24T01:36:39.146Z" }, "record": { "$type": "app.bsky.feed.post", "createdAt": "2024-12-24T21:20:56.891Z", "embed": { "$type": "app.bsky.embed.external", "external": { "description": "MyETHMeta is a decentralized metadata service for Ethereum accounts. It is something like Gravatar. There are no backend servers, you fully own your data.", "thumb": { "$type": "blob", "ref": { "$link": "bafkreifoezhkdtesuhkaoqt3yml44geozu6ckg2cfffg5t5omob2bdjmo4" }, "mimeType": "image/jpeg", "size": 669185 }, "title": "MyETHMeta v2 – Some Improvements on the Gravatar for Your Ethereum Account | HackerNoon", "uri": "https://hackernoon.com/myethmeta-v2-some-improvements-on-the-gravatar-for-your-ethereum-account" } }, "facets": [ { "features": [ { "$type": "app.bsky.richtext.facet#link", "uri": "https://hackernoon.com/myethmeta-v2-some-improvements-on-the-gravatar-for-your-ethereum-account" } ], "index": { "byteEnd": 270, "byteStart": 240 } } ], "langs": [ "en" ], "reply": { "parent": { "cid": "bafyreieipk3kgwonq3h62wyadauplzgcpdgcg6pxp2776oeldcstgybwha", "uri": "at://did:plc:4x7rynvskplz54p5pofj3jxa/app.bsky.feed.post/3le3es7kzmc2l" }, "root": { "cid": "bafyreieipk3kgwonq3h62wyadauplzgcpdgcg6pxp2776oeldcstgybwha", "uri": "at://did:plc:4x7rynvskplz54p5pofj3jxa/app.bsky.feed.post/3le3es7kzmc2l" } }, "text": "MyETHMeta is a decentralized metadata service for Ethereum accounts. It is something like Gravatar, but here the metadata and your profile picture is assigned to your Ethereum address. There are no backend servers, you fully own your data. hackernoon.com/myethmeta-v2..." }, "embed": { "$type": "app.bsky.embed.external#view", "external": { "uri": "https://hackernoon.com/myethmeta-v2-some-improvements-on-the-gravatar-for-your-ethereum-account", "title": "MyETHMeta v2 – Some Improvements on the Gravatar for Your Ethereum Account | HackerNoon", "description": "MyETHMeta is a decentralized metadata service for Ethereum accounts. It is something like Gravatar. There are no backend servers, you fully own your data.", "thumb": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:4x7rynvskplz54p5pofj3jxa/bafkreifoezhkdtesuhkaoqt3yml44geozu6ckg2cfffg5t5omob2bdjmo4@jpeg" } }, "replyCount": 0, "repostCount": 0, "likeCount": 0, "quoteCount": 0, "indexedAt": "2024-12-24T21:21:02.466Z", "labels": [] }, "reply": {} }, {}, {}, {}, {}, {}, {}, {}, {} ] }


Her öğe bir gönderi ve ilişkili yanıtları içerir. Daha önce belirtildiği gibi, her gönderi depoda bir kayıttır ve kendine özgü bir tanımlayıcısı vardır. Her gönderiye DID, koleksiyon adı ve gönderi kimliğinden oluşan benzersiz bir URI atanabilir. Yukarıdaki örnekte, URI şu şekilde görünür: at://did:plc:4x7rynvskplz54p5pofj3jxa/app.bsky.feed.post/3le3esbhaek2l


Bu, gönderinin DID'imle ilişkili depoda, app.bsky.feed.post koleksiyonunda yer aldığı ve kimliğinin 3le3esbhaek2l olduğu anlamına gelir.


URI'ye ek olarak, içeriğin benzersiz bir karma değeri olan gönderinin CID'si de dahil edilir. Bu öğeler birlikte deponun benzersiz commit karma değerini oluşturur.


Dikkat çekici bir diğer özellik ise gönderiyle ilişkilendirilmiş bir görsele atıfta bulunan thumb bölümüdür. Bu, herhangi bir koleksiyona ait olmayan bir blob türü nesnedir. Sistem, büyük dosyaları (görüntüler, videolar vb. gibi) blob olarak depolar ve bunlara karma değerleri (CID) kullanılarak bireysel kayıtlarda (örneğin gönderiler) başvurulabilir.


Depo ve kayıtların yapısına daha derinlemesine bakmak isteyenler için go-repo-export aracı oldukça faydalı olabilir. Bu küçük programla, tüm kullanıcı deposunu indirebilir ve koleksiyonları ve kayıtlarını JSON formatında bir dizine çıkarabilirsiniz. Bu, BlueSky'ın verileri tam olarak nasıl depoladığını görmenizi sağlar.


Bir diğer iyi bilgi kaynağı da Chrome DevTools'dur. https://bsky.app web sitesinde API çağrılarını ve istemci tarafının PDS ile nasıl iletişim kurduğunu açıkça görebilirsiniz.


Ve tabii ki resmi belgeler de var. AT Protokolü ve BlueSky'ın mükemmel belgeleri var ve GitHub'da hem istemci hem de sunucu tarafları için örneklerin yanı sıra kaynak kodunu da bulabilirsiniz.


AT Protokolü hakkında ilk okuduğumda, ilk düşüncem ActivityPub'ın yanı sıra neden başka bir federasyon protokolüne daha ihtiyacımız olduğuydu. Ancak, AT Protokolü gerçekten de varlığını tamamen haklı çıkaran belirli özelliklere sahiptir. Protokol elbette mükemmel değildir ve büyük olasılıkla önemli bir geliştirmeden geçecektir. Örneğin, gerçekten sansüre dayanıklı bir ağ kurmak istiyorsak, merkezi bir alan adı sistemine güvenemez. Gerçekten sansüre dayanıklı olan blok zinciri tabanlı bir adlandırma sistemi değerli olurdu (hatta bunun hakkında bir teklif bile yazabilirim).


BlueSky'ın şu anda tahmini 20-30 milyon kullanıcısı var, bu da X'in (Twitter) kullanıcı tabanıyla karşılaştırıldığında sönük kalıyor, ancak yine de önemli. Gelecekte ne olacağına gelince, kimse kesin olarak söyleyemez. Federasyonlu ağ büyük bir avantaj ve Twitter veya Facebook gibi küresel bir iletişim platformuna sahip olmanın tek bir varlık için çok fazla güç olup olmadığı konusunda yoğun tartışmalar var. BlueSky'ın bir gün rakiplerini geride bırakabileceği olasılığını tamamen göz ardı etmiyorum. İyi besleme oluşturucular ve etkili topluluk oluşturma ile bu başarılabilir. Her durumda, bu projeye dikkat etmeye ve nasıl çalıştığını anlamaya değer.