Sözlük / Geliştirici başvuru kaynağı
Ödeme protokolü (BIP70)
Diğer adları: Ödeme protokolü, Payment protocol, BIP70.
- Ödeme protokolü (BIP70) nedir?
- Ödeme protokolü (BIP70), Bitcoin'in çıplak adreslerin yerine imzalı ve sertifikayla desteklenen ödeme taleplerini koyma girişimiydi ve Bitcoin Core, 0.20.0 sürümünde buna verilen son desteği kaldırdı.
Tanımlandığı belge: BIP-70.
Önce heves, sonra vazgeçiş. Gavin Andresen ve Mike Hearn BIP70 belgesini 29 Temmuz 2013 tarihinde yayımladı, Bitcoin Core onu Mart 2014'te 0.9.0 sürümüyle sundu, Kasım 2019'da 0.19 sürümünde kullanımdan kaldırıldı olarak işaretledi ve 3 Haziran 2020 tarihinde 0.20.0 sürümünde sildi. Bir ödeme sayfası hâlâ cüzdanınızdan bu protokolü konuşmasını istiyorsa, bunu entegrasyonun yıllardır ele alınmadığının işareti olarak değerlendirin.
Nasıl çalışıyordu
Durum: Bitcoin Core 0.19 sürümünde kullanımdan kaldırıldı olarak işaretlendi ve 3 Haziran 2020 tarihinde 0.20.0 sürümünde tamamen kaldırıldı. Bakımı sürdürülen hiçbir cüzdan bunu uygulamıyor. Bunun yerine zincir üstü ödemeler için düz bir BIP21 URI'si, Lightning üzerinde BOLT11 veya BOLT12 faturaları ve yeniden kullanılabilir bir hedef isteniyorsa BIP352 sessiz ödemeler kullanılıyor.
Tasarım dört BIP'lik bir aileydi. BIP70 mesajları tanımladı, BIP71 ağ üzerinden geçen üç mesajın her biri için bir MIME türü kaydetti, BIP72 bir URI'nin bir talebe işaret edebilmesi için r= parametresini ekledi ve BIP73 protokolü ayrıştıramayan cüzdanlar için içerik anlaşmasını ele aldı.
Akış bir kart terminali gibi işliyordu. Bir satıcı HTTPS üzerinden imzalı bir PaymentRequest sunuyordu. Müşterinin cüzdanı bunu çekiyor, ekli X.509 sertifika zincirini hâlihazırda güvendiği bir kök sertifikaya kadar takip ediyor ve bir karakter dizisi yerine bir şirket adı gösteriyordu. Müşteri onaylıyordu, cüzdan işlemi yayınlıyor ve ayrıca satıcıya ham işlem baytlarını ve bir iade adresini içeren bir Payment mesajı gönderiyordu. Satıcı da bir makbuz işlevi gören PaymentACK ile yanıt veriyordu.
Çökmesinin dört nedeni var ve bunları anlamakta fayda var, çünkü biri Bitcoin'in üzerine kimlik eklemeyi önerdiğinde her biri yeniden ortaya çıkıyor.
Güvenini sertifika otoritelerinden ödünç alıyordu. Tipik bir kök sertifika deposundaki yüzlerce sertifika otoritesinden herhangi biri, herhangi bir ad için sertifika düzenleyebilir; bu da Bitcoin'in önlemek için inşa edildiği başarısızlık biçimidir. BIP70 ayrıca bir x509+sha1 imza türüne izin veriyordu ve pratik bir SHA-1 çakışması 23 Şubat 2017 tarihinde yayımlandı.
Satıcının çevrimiçi olmasını gerektiriyordu. Satıcının HTTPS uç noktası yanıt vermedikçe ödeme oluşturulamıyordu, dolayısıyla bir kesinti, tek başına bir adresten çalışacak ödemeleri durduruyordu.
Bilgi sızdırıyordu. Cüzdan satıcının sunucusuna giden bir istek yapıyor, bu da müşterinin IP adresini açığa çıkarıyordu ve iade alanı ödeyene ait yeni bir adres veriyordu.
Çok az şey kazandırıyordu. Sertifika, birinin bir alan adını kontrol ettiğini kanıtlıyordu; faturanın meşru ya da malın gerçek olduğunu değil.
Nerede görülür
BIP70 belgesinin hâlâ bir terim olarak dolaşmasının başlıca nedeni, Bitcoin.org geliştirici başvuru kaynağının protokolü geniş zamanla anlatması ve bu kaynağın yıllardır Bitcoin Core ile gelen değişiklikleri takip etmemesidir.
Bunun dışında BIP70 ile arşivlenmiş cüzdan kaynak kodunda, büyük ödeme işleyicilerinin bunu dayattığı dönemde yazılmış eski entegrasyon kılavuzlarında ve ara sıra on yıllık bir faturaya eklenmiş bir .bitcoinpaymentrequest dosyasında karşılaşırsınız. Bugün satın aldığınız hiçbir şey bunu gerektirmez. Ödeme sayfası isteyen satıcılar BTCPay Server gibi yazılımlar kullanır; bu yazılım BIP21 URI'leri ve Lightning faturaları düzenler ve müşterinin cüzdanından olağan dışı bir şey istemez.
Ödeme protokolü (BIP70) vs PaymentRequest
Ödeme protokolü alışverişin tamamıdır; PaymentRequest ise onun içindeki bir mesajdır. Cüzdan ile satıcı arasında üç mesaj gidip geliyordu ve PaymentRequest bunların ilkiydi, satıcının sunduğu imzalı zarf. İki adı birbirinin yerine kullanmak, eski belgeleri gereğinden zor okunur hale getirir. Ayrıca PaymentRequest, kart ve cüzdan ödemeleri için kullanılan ve bununla ilgisi olmayan bir tarayıcı standardının adıdır; dolayısıyla bugün bu kelimeyi kullanan bir geliştiricinin Bitcoin'i kastetmesi olası değildir.