Sözlük / İşlemler ve ücretler
PSBT
Diğer adları: Kısmen İmzalanmış Bitcoin İşlemi, Partially Signed Bitcoin Transaction, BIP174.
- PSBT nedir?
- PSBT, henüz tamamlanmamış bir işlem dosyasıdır: girdileri, çıktıları ve imzalayan birinin bunları doğrulamak için ihtiyaç duyduğu her şeyi taşır ve ağ üzerinden değil, cihazlar arasında dolaşır.
Tanımlandığı belge: BIP-174.
Eskiden Bitcoin işlemi imzalamak, özel anahtarlarınızı işlemi oluşturan programa teslim etmek anlamına geliyordu. BIP174 bunu 2018 yılında birbirinden ayırdı ve Bitcoin Core sürüm 0.17.0 ile desteği sundu; böylece anahtarları tutan cihaz, internete bağlı olandan farklı bir cihaz olabiliyor. Bugün her donanım cüzdanı ve multisig koordinatörü bu formatı konuşuyor.
Nasıl çalışır
Bir PSBT, anahtar-değer haritalarının bir kabıdır: önce oluşturulmakta olan işlemi tanımlayan tek bir genel harita, ardından her girdi için bir harita ve her çıktı için bir harita.
Dosya, "psbt" sözcüğünü ve bir ayırıcıyı oluşturan beş sihirli baytla, 70 73 62 74 ff, başlar. Base64, bir PSBT'yi taşımanın olağan yoludur; bu yüzden bir metin kutusuna yapıştırılan PSBT her zaman cHNidP8 karakterleriyle başlar. Başka türlü başlayan bir dizi, gönderen kişi ne derse desin, PSBT değildir.
Her girdi haritası, çevrimdışı bir imzalayıcının kendi başına bakamayacağı bilgiyi içerir:
- harcanmakta olan çıktı; böylece cihaz, yetkilendirdiği tam tutarı ve kilitleme betiğini bilir
- varlık tek bir anahtar yerine bir politika tarafından kontrol ediliyorsa redeem betiği veya witness betiği
- imzalaması gereken her anahtar için bir türetme yolu ve ana anahtar parmak izi; böylece doğru kurtarma ifadesini tutan bir cihaz doğru alt anahtarı bulabilir
- şimdiye kadar toplanan kısmi imzalar, imzalayan başına bir tane
Çıktı haritaları da türetme bilgisi taşır ve bir imzalayıcının, para üstü çıktısının gerçekten koruduğu cüzdana ait olduğunu doğrulamasını sağlayan şey budur.
BIP174 işi programlara değil rollere böler. Bir oluşturucu iskeleti üretir, bir güncelleyici girdi ayrıntılarını doldurur, imzalayıcılar kısmi imzalar ekler, bir birleştirici ayrı ayrı imzalanmış dosyaları bir araya getirir, bir sonlandırıcı kısmi imzaları geçerli bir betiğe veya witness'a dönüştürür ve bir çıkarıcı yayınlanmaya hazır ham işlemi üretir. Tek bir yazılım çoğu zaman birkaç rolü birden oynar, ancak farklı üreticilerin dosyalarının birbiriyle çalışabilmesinin nedeni tam da bu ayrımdır.
Format, bilgisizliği hoş görecek şekilde tasarlandı. Her alan bir tür baytı taşır ve bir alanı anlamayan imzalayıcı, onu atmayıp olduğu gibi geçirmek zorundadır; 2018'de yazılmış bir cüzdanın, bir dosyayı Taproot için yazılmış bir cüzdana hâlâ verebilmesinin nedeni budur. BIP371 Taproot alanlarını ekledi; BIP370 ise, oluşturulduktan sonra bile girdi ve çıktı eklenebilen bir sürüm 2 tanımlar, ki ortak işlemlerin ihtiyaç duyduğu özellik budur.
Bitcoin satın alırken bu neden önemli
Bitcoinlerinizi bir borsadan kendi donanım cüzdanınıza taşıdığınız anda, hiçbir ekran söylemese de PSBT formatını kullanıyorsunuz.
Anahtarları bilgisayarınızdan uzak tutar. Dizüstü bilgisayarınız harcamayı oluşturur ve bir PSBT üretir; Trezor veya Ledger onu okur, ne yazdığını gösterir, imzalar ve geri verir. Kablodan gizli hiçbir şey geçmez. Fark, ele geçirilmiş bir dizüstü bilgisayar ile ele geçirilmiş bir kurtarma ifadesi arasındaki farktır: ilkinden sağ çıkılabilir, ikincisinden çıkılamaz.
Para üstü adresinin değiştirilmesine karşı korur. Bilgisayarınızı kontrol eden kötü amaçlı yazılım, dürüst bir ödeme ekranı gösterirken para üstünü sessizce kendisine ait bir adrese yönlendirebilir ve para üstü genellikle daha büyük tutardır. Dosya her çıktı için bir türetme yolu belirttiğinden, imzalayan cihaz para üstünün kendi kurtarma ifadesinden türediğini kontrol edebilir ve türemediğinde sizi uyarır. Cihazın ekranını okuyun, asla tarayıcı sekmesini değil.
Multisig'i mühendis olmayanlar için kullanılabilir kılar. İki donanım cüzdanına ve başka bir binadaki bir yedeğe dağıtılmış bir 2-of-3, ancak imzalanmamış bir işlem hiçbir şey sızdırmadan SD kart, QR kod veya e-posta ile yol alabiliyorsa işler. Bir PSBT özel anahtar içermez; bu yüzden yolda bir tanesini kaybetmek size hiçbir şeye mal olmaz.
Mirasçılarınızın ihtiyaç duyacağı parçadır. Kurtarma kelimelerinden oluşan bir zarf, tek anahtarlı bir cüzdandan daha karmaşık hiçbir şey için kurtarma planı değildir. Kurtarma ifadelerinin yanına cüzdanın çıktı tanımlayıcısını ve PSBT okuyan bir yazılımı adlandıran bir not koyun; plan sizden sonra da yaşar. Güvenlik rehberimiz bu kurulumun geri kalanını ele alır.
2-of-3 bir para çekme işlemini imzalamak, adım adım
Diyelim ki bir borsada 0,4 BTC satın aldınız ve onu, herhangi ikisinin harcayabildiği üç anahtarın kontrol ettiği bir kasaya çektiniz.
Aylar sonra bir kısmını taşımak istiyorsunuz. Dizüstü bilgisayarınızdaki, kasanın tanımlayıcısıyla yüklenmiş ve hiç anahtar taşımayan yalnızca izleme cüzdanı işlemi oluşturur: bir girdi, bir ödeme çıktısı, bir para üstü çıktısı. 2-of-3 yerel segwit girdisi yaklaşık 105 sanal bayt, iki çıktı yaklaşık 62 sanal bayt daha tutar; ek yüklerle birlikte işlemin tamamı 177 sanal bayta yakın bir yere denk gelir ve 8 sat/vB üzerinden ücret yaklaşık 1.400 satoshi eder.
Dizüstü bilgisayar bir PSBT yazar. İlk donanım cüzdanını takarsınız; cüzdan dosyayı okur, alıcıyı, tutarı ve ücreti gösterir ve girdi haritasına bir imza yazar. Sonra dosyayı bir microSD kartla, hiçbir zaman bir ağa bağlanmamış ikinci cihaza taşırsınız; o da ikinci imzayı ekler.
Dizüstü bilgisayara dönüldüğünde birleştirici iki dosyayı birleştirir, sonlandırıcı imzaları betiğin beklediği sırayla bir witness olarak bir araya getirir ve çıkarıcı ham bir işlem üretir. Ağa ancak o zaman bir şey ulaşır. O ana kadar hiçbir anahtar bir cihazdan çıkmadı ve yaptığınız hiçbir şey kimseye görünmedi.
PSBT vs serileştirilmiş işlem
Serileştirilmiş bir işlem bitmiştir; bir PSBT ise bir çalışma alanıdır. Bir PSBT yayınlarsanız her düğüm onu reddeder, çünkü bu, eşler arası protokolün taşıdığı bir format değildir. Fark ters yönde de işler: bir PSBT, bitmiş bir işlemin attığı bağlamı, örneğin harcanan her girdinin değerini ve her adresin hangi anahtardan türetildiğini tutar; bu da tam olarak bir donanım cüzdanının ihtiyaç duyduğu, bir bloğun ise ihtiyaç duymadığı bilgidir.
PSBT vs çıktı tanımlayıcısı
Bir çıktı tanımlayıcısı bir cüzdanı tanımlar; bir PSBT ise tek bir harcamayı tanımlar. Tanımlayıcı, betik türünü, anahtarları ve türetme yollarını adlandıran tek bir satırdır ve yıldan yıla değişmez. PSBT'ler tek kullanımlıktır, her işlem için bir tane. Tek anahtarlı bir cüzdanda kurtarma ifadesi tek başına her şeyi geri getirir, ancak multisig için her ikisine ihtiyacınız var: hangi adreslerin sizin olduğunu bulmak için tanımlayıcıya ve onlardan herhangi bir şey çıkarmak için PSBT'lere.