Bu kılavuzun amacı, Bitcoin Script’in arkasındaki mantığı anlamanıza yardımcı olmaktır. Kapsanacak çok şey olacağından, rehber iki bölüme ayrılacaktır..

Bitcoin tek bir amaç için yaratıldı… işlemler. Bitcoin, dünyaya merkezi olmayan bir eşler arası sistemde bir ödeme sisteminin var olabileceğini göstermeyi başardı. Ancak bu işlemlerin perde arkasında neler oluyor? Her küçük işlemin arkasında, arka planda çalışan bazı kodlar vardır. Bu kod, Bitcoin Komut Dosyası Dili veya kısaca sadece Bitcoin Komut Dosyasıdır.

En İyi Bitcoin Komut Dosyası Kılavuzu

Bitcoin Script’e Giriş

Script Forth benzeri, yığın tabanlı, ters lehimli, Turing Eksik bir dildir. Evet, kulağa çok karmaşık geliyor ama gerçekten değil. Her terimi tersten inceleyelim.

Turing Eksik

Bir Turing Incomplete dil, sınırlı işlevselliğe sahip olacak ve atlama ve / veya döngü yapamayacaktır. Bu nedenle sonsuz bir döngüye giremezler. Turing Complete olmak, kaynaklar ve bellek verildiğinde, bir Turing Complete programının herhangi bir sorunu çözebileceği anlamına gelir. Solidity, Turing Complete dilinin bir örneğidir.

Öyleyse neden Bitcoin Script Turing Tamamlanmadı?

Çünkü olması gerekmiyor. Bitcoin Script’in Ethereum akıllı sözleşmesi kadar karmaşık olması gerekmez. Aslında, bir komut dosyası Turing Complete olsaydı, kötü niyetli taraflara karmaşık işlemler oluşturma ve Bitcoin Ağının hash oranını tüketme ve tüm sistemi yavaşlatma özgürlüğü verirdi..

Ters Lehçe

Reverse polish notation, operatörlerin işlenenleri takip ettiği bir sistemdir.

Anlamı:

  • 3 + 4 34 olarak görünecek+.
  • Yani, daha uzun karmaşık meblağlar için:
  • 5 * 3 + 4, 534 + * olarak görünecektir.

Yığın Tabanlı

Yığınlar, piyasadaki en popüler veri yapılarından biridir. Wikibooks’a göre, mantıksal olarak, gerçek bir fiziksel yığın veya yığınla temsil edilen doğrusal yapı olarak düşünülebilirler, yığının tepesi adı verilen bir uçta öğelerin eklenmesinin ve silinmesinin gerçekleştiği bir yapı.

Yığının temel fikri LIFO veya Last In First Out’tur. Şu kitap yığınını düşünün:

En İyi Bitcoin Komut Dosyası Kılavuzu

Bu yığına konan ilk kitap neydi? Yalnız Kurt & Yavru değil mi? Son kitap neydi? Ay Bahçeleri.

Bu yığından bir kitap çıkaracak olsaydı, Yalnız Kurt & İlk çıkardığınız kitap Cub olmayacak, çıkardığınız ilk kitap Gardens of the Moon olacak.

Bu nedenle, Son Giren İlk Çıkar.

Bu yığın yığınına giden son kitap, çıkarılan ilk kitap olacak.

Şimdi, bilmeniz gereken iki yığın işlemi var:

  • it.
  • Pop.

it: Yığına bir şeyler ekleme eylemine itme denir.

Pop: Bir şeyleri yığından çıkarma eylemine patlama denir. Daha önce de belirtildiği gibi, yığına itilen son öğe önce dışarı çıkar..

En İyi Bitcoin Komut Dosyası Kılavuzu

Resim Kredisi: Wikimedia

Dördüncü Gibi

Bu oldukça basit. Bitcoin Script, aynı zamanda yığın tabanlı olan “Forth” programlama diline benzer..

Şimdi en azından senaryonun ne olduğunu biliyoruz, İşlemlerin nasıl çalıştığını anlayalım.

Bitcoin’de işlemler nasıl çalışır??

Devam etmeden önce, açıklama için Profesör Donald J Patterson’a ve Youtube kanalı “djp3” e büyük bir kısa mesaj.

Alice’in Bob’a belirli sayıda bitcoin göndermek istediğini varsayalım. Bitcoin’de işlem sistemi nasıl çalışır? Bitcoin işlemleri, Fiat cüzdan işlemlerinden çok farklıdır. Alice, Bob’a 2 dolar verecek olsaydı, cüzdanından fiziksel olarak 2 dolar alır ve Bob’a verirdi. Ancak, bitcoin’de işler böyle yürümez. Fiziksel olarak herhangi bir bitcoin’e sahip değilsiniz, sahip olduğunuz şey, Bitcoin’e sahip olduğunuzun kanıtıdır.

Bilmen gereken iki şey daha var:

  • Madenciler, bloke ettikleri madenlere verileri koyarak işlemlerinizi doğrular. Bu hizmeti vermeleri karşılığında işlem ücreti alıyorlar.

  • FIAT para birimi söz konusu olduğunda, o belirli notu nasıl ve nereden aldığınızı gerçekten takip edemezsiniz. Örneğin. Cüzdanınızı hemen açın ve içindeki tüm banknotları ve bozuk paraları çıkarın. Her bir banknotu ve madeni parayı tam olarak nereden aldığınızı söyleyebilir misiniz? Muhtemelen yapmıyorsun. Bununla birlikte, bitcoin’de, her bir bitcoin işleminin geçmişi not alınır..

Tamam, şimdi Alice ile Bob arasındaki bitcoin işleminin nasıl gerçekleştiğine derinlemesine bakalım. Bir işlemin Girdi ve Çıktı olmak üzere iki tarafı vardır. Bu İşlemin tamamı, sonunda çözeceğimiz bir ada sahip olacak. Şimdilik dinamiklere bakalım.

İşlem Girişi

Bu işlemin gerçekleşmesi için, Alice’in daha önceki çeşitli işlemlerden aldığı bitcoinleri alması gerekiyor. Daha önce de söylediğimiz gibi, bitcoinlerde her bir madeni para bir işlem geçmişi aracılığıyla hesaba katılır..

Öyleyse, Alice’in TX (0), TX (1) ve TX (2) olarak adlandıracağımız aşağıdaki işlemlerden bitcoin çekmesi gerektiğini varsayalım. Bu üç işlem birbirine eklenecek ve bu size TX (Giriş) olarak adlandıracağımız giriş işlemini verecektir..

Şematik olarak şöyle görünecektir:

En İyi Bitcoin Komut Dosyası Kılavuzu

Yani, giriş tarafından bakıldığında çıkış tarafının nasıl görüneceğine bakalım.

İşlem Çıktısı

Çıktı temelde Bob’un sahip olacağı bitcoin sayısına, işlem sonrası ve kalan herhangi bir değişikliğe sahip olacak ve daha sonra Alice’e geri gönderilecektir. Bu değişiklik daha sonra gelecekteki tüm işlemler için girdi değeri olur.

Çıktı tarafının resimli temsili şuna benzer:

En İyi Bitcoin Komut Dosyası Kılavuzu

Şimdi, bu sadece bir çıkışı olan çok basit bir işlemdir (DEĞİŞTİRME dışında), birden fazla çıktıyla mümkün olan işlemler vardır..

İşlemin temel düzeni budur. Bununla birlikte, tüm bu şeyin geçmesi için belirli koşulların karşılanması gerekir..

Bir işlemin koşulları

  • TX (Giriş) > TX (çıktı). Girdi işlemi her zaman çıktı işleminden daha büyük olmalıdır. Herhangi bir işlemde, girdi ve çıktı (çıktı + değişim) arasındaki açık, madencilerin topladığı işlem ücretleridir. Yani:

    İşlem ücretleri = TX (Giriş) – (TX (çıktı) + Değiştir).

  • Giriş tarafında:

    TX (0) + TX (1) + TX (2) = TX (Giriş).

    Alice, işlemleri gerçekleştirmek için gereken paraya sahip değilse, madenciler işlemleri basitçe reddedeceklerdir..

  • Bob, bitcoinleri almak için gereken kanıtı sağlayabileceğini göstermelidir. Alice işlemleri Bob’un açık adresiyle kilitleyecektir. İşlemlerin kilidini açmak ve ücretlerine erişmek için özel anahtarını üretmesi gerekecek.

  • Alice’in ayrıca ilk etapta bitcoinleri göndermek için gerekli haklara sahip olduğunu doğrulaması gerekiyor. Bunu yapmasının yolu, işlemi dijital imzasıyla (diğer bir deyişle özel anahtarı) imzalamaktır. Herkes, açık anahtarını kullanarak bunun kodunu çözebilir ve verileri gönderenin gerçekten Alice olduğunu doğrulayabilir. Bu kanıta “İmza verileri” denir. Bunu hatırla çünkü bu daha sonra çok önemli olacak.

Öyleyse, tüm bu işlemin adı ne olacak??

Giriş (imza verileri dahil) ve çıktı verileri birlikte eklenir ve SHA 256 karma algoritması kullanılarak karma hale getirilir. Çıktı hash, bu işleme verilen addır.

Şimdi perde arkasına bir göz atalım ve işlemin gerçekte neye benzediğini görelim..

Bitcoin Komut Dosyası İşlemi: Perde Arkası

İşlem kod biçiminde böyle görünüyor.

Ayşe’nin Bob’a 0,0015 BTC göndermek istediğini ve bunu yapmak için 0,0015770 BTC değerinde girişler gönderdiğini varsayalım. İşlem ayrıntısı şöyle görünür:

En İyi Bitcoin Komut Dosyası Kılavuzu

Resim izniyle: djp3 youtube kanalı.

İlk gördüğünüz satır:

En İyi Bitcoin Komut Dosyası Kılavuzu

İşlemin adı, yani girdi ve çıktı değerinin karması mı.

Vin_sz, Alice önceki işlemlerinden yalnızca birini kullanarak verileri gönderdiği için giriş verisi sayısıdır, bu 1’dir.

Vout_sz 2’dir çünkü tek çıktı Bob’dur ve değişiklik.

Bu, Giriş verileridir:

En İyi Bitcoin Komut Dosyası Kılavuzu

Giriş verilerini görüyor musunuz? Alice sadece bir giriş işlemi kullanıyor (yukarıda verdiğimiz örnekte bu TX (0) olacaktır), vin_sz’nin 1 olmasının nedeni budur..

Giriş verilerinin altında imza verileri var.

Tüm bunların altında çıktı verileri:

En İyi Bitcoin Komut Dosyası Kılavuzu

Verilerin ilk kısmı, Bob’un 0,0015 BTC aldığını gösteriyor.

İkinci kısım, 0.00005120 BTC’nin Alice’in değişim olarak geri aldığı şey olduğunu gösterir..

Şimdi, giriş verilerinin 0,0015770 BTC olduğunu hatırlıyor musunuz? Bu, (0.0015 + 0.00005120) ‘den büyüktür. Bu iki değerin açığı, madencilerin tahsil ettiği işlem ücretidir..

İşlem Çıktılarına Daha Yakından Bakış

Yukarıda gördüğümüz gibi, bir işlemdeki her girdi çıktıya dönüşür, bu çıktıların bir kısmı harcanır, bir kısmı harcanmaz ve değişim olur. Bu değişiklik, UTXO veya Harcanmamış İşlem Çıktısı olarak da bilinir. UTXO gelecekteki işlemlerde Girdi olmaya devam ediyor.

Her işlem çıktısı iki bölümden oluşur:

  • Bu çıktının değeri.

  • Kilitleme komut dosyası veya tanık komut dosyası veya scriptPubKey olarak adlandırılan şifreleme bulmacası. Parayı harcamak için bulmacanın kilidinin açılması gerekiyor. Bu bulmaca bitcoin Script dili kullanılarak kodlanmıştır.

Öyleyse, yukarıda belirtilen kısımları tespit etmek için bir işlemin çıktılarını inceleyelim. Andreas M. Antonopoulos’tan alınan kod. “Bitcoin’de ustalaşmak.”

“Vout": [

{

"değer": 0,01500000,

"scriptPubKey": "OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG"

},

{

"değer": 0,08450000,

"scriptPubKey": "OP_DUP OP_HASH160 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 OP_EQUALVERIFY OP_CHECKSIG",

}

]

Pekala, yukarıda verilen kodda iki çıktımız var.

Bir çıkışın değeri 0,015 BTC iken diğerinin değeri 0,0845 BTC’dir. 0.015 değerinin kilidini açmak için, kilidinin açılması gereken kilitleme komut dosyası şu şekildedir:

“ScriptPubKey”: “OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG”

İşlem Girdilerine Daha Yakından Bir Bakış

Şimdi madalyonun diğer tarafına, işlem girdilerine bakalım..

Bir Giriş yapmak için, kullanıcının cüzdanı UTXO’larından geçer ve işlemin geçmesi için yeterli değere sahip olanları seçer..

Örneğin. Alice, Bob’a 0,15 BTC göndermek istiyorsa ve burada UTXO seti şuna benzer:

  • UTXO A = 0,09 BTC
  • UTXO B = 0,2 BTC
  • UTXO C = 0,005 BTC

Bu işlem için hangi UTXO’lar seçilecek? Bu doğru, A ve B seçilecek ve geriye kalan her şey Alice’in bir sonraki işlemi için UTXO olacak.

Şimdi bir giriş koduna bakalım.

“Vin": [

{

"txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18",

"vout": 0,

"scriptSig" : "3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813 [ALL] 0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf",

"sıra": 4294967295

}

]

Girdi komut dosyasının her bir bölümünün neler içerdiğini görelim:

  • txid: İşlem kimliği, bu UTXO’nun oluşturulduğu işlemi ifade eder. Bu, işlemin izlenmesine yardımcı olur

  • vout: Bu, o işlemden hangi çıktının kullanıldığını ifade eder. Örneğin. eğer bu işlem iki UTXO’ya sahipse, ilki 0 olarak etiketlenecek (çünkü daha önce gördüğümüz gibi, sayma 1’den değil 0’dan başlayacak) ve ikincisi 1 olarak etiketlenecektir. Bu durumda, ilk UTXO ieUTXO’yu kullanıyoruz 0.

  • scriptSig: Daha önce bahsettiğimiz gibi, her UTXO bir kilitleme komut dosyası içerir. ScriptSig, verilerin kilidini açmak için gerekli verileri içerir.

  • sıra: Bir blokta onaylanmadan ve sonuçlandırılmadan önce insanların işlemlerini güncellemelerine yardımcı olmak için dahil edildi, Temel bilgilerin anlaşılmasına yardımcı olmak için pek alakalı değil.

İşlemlerin Serileştirilmesi

Şimdi bunu bir araya getirelim ve elimizde ne olduğuna bir bakalım. Bir işlem ağ üzerinden aktarıldığında, bunlar serileştirilir. Andreas Antonopoulos’un dediği gibi,

“Serileştirme, bir veri yapısının dahili temsilini, bir seferde bir bayt iletilebilen, aynı zamanda bayt akışı olarak da bilinen bir biçime dönüştürme işlemidir.”

Önceki iki bölümde, basit bir giriş ve bir çıkış işlemi gördük. onu seri hale getirip onaltılık biçimde saklasaydık, nasıl görünürdü??

0100000001186f9f998a5aa6f048e51dd8419a14d8a0f1a8a2836dd73 4d2804fe65fa35779000000008b483045022100884d142d86652a3f47 ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039 ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813 01410484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade84 16ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc1 7b4a10fa336a8d752adfffffffff0260e31600000000001976a914ab6 8025513c3dbd2f7b92a94e0581f5d50f654e788acd0ef800000000000 1976a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac 00000000

Evet, bu yazar yanlışlıkla kafasını klavyeye çarpmadı … aslında öyle görünüyor.

Ancak korkmayın. Yakında anlamlandıracağız. Bu onaltılık akışta bir yerlerde, girdi verilerimiz ve çıktı verilerimiz var. Hadi ikisini de bulalım!

Çıktı Serileştirme

İşlemin çıktı bölümünün serileştirilmesi aşağıdaki bölümleri içerir:

En İyi Bitcoin Komut Dosyası Kılavuzu

İmaj Kredisi: Andreas Antonopoulos “Bitcoin’de Mastering”

Şimdi, çıktıyla ilgili gerçekte hangi verileri biliyoruz??

  • İki çıkış değeri var.

  • Bir çıktı değeri 0,015 BTC veya 1,500,000 satoshi değerindedir

  • Onaltılık düzende 1.500.000, 16 e3 60’tır, bu küçük endian ile kodlandığında, yani en az önemli bayt ilk gösterim 60 e3 16 verir.

  • ScriptPubKey uzunluğu 25 bayttır ve onaltılık olarak 19’dur.

Öyleyse, bu bilgileri not edin, çıktı verilerimizi arayalım.

0100000001186f9f998a5aa6f048e51dd8419a14d8a0f1a8a2836dd73 4d2804fe65fa35779000000008b483045022100884d142d86652a3f47 ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039 ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813 01410484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade84 16ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc1 7b4a10fa336a8d752adfffffffff0260e31600000000001976a914ab6 8025513c3dbd2f7b92a94e0581f5d50f654e788acd0ef800000000000 1976a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac 00000000

Giriş Serileştirme

Giriş serileştirme aşağıdaki bileşenleri içerir:

En İyi Bitcoin Komut Dosyası Kılavuzu

Şimdi yaptığı işlemin girdisini bulabilir misin??

0100000001186f9f998a5aa6f048e51dd8419a14d8a0f1a8a2836dd73 4d2804fe65fa35779000000008b483045022100884d142d86652a3f47 ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039 ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813 01410484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade84 16ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc1 7b4a10fa336a8d752adfffffffff0260e31600000000001976a914ab6 8025513c3dbd2f7b92a94e0581f5d50f654e788acd0ef800000000000 1976a9147f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a888ac 00000000

Pekala, şimdiye kadar ne gördük?

  • Bir işlemin çıktıları ve UTXO’lar.
  • Bir işlemin girdileri.
  • Tüm işlem nasıl serileştiriliyor.

Artık UTXO’ların yalnızca kilidi açıksa kullanılabileceğini biliyoruz. Giriş değerlerinin, bunların kilidini açmaya yardımcı olan scriptSig’e sahip olduğunu biliyoruz. Birbirleriyle nasıl etkileşim kurarlar?

Buna gelmeden önce, bir bitcoin komut dosyasında hesaplamaların ve işlemlerin nasıl gerçekleştiğine dair bir fikrimiz olmalı..

Komut Dosyası Nasıl Çalışır?

Komut Dosyası ile devam etmeden önce, yığın tabanlı, ters cilalı bir sistemin nasıl çalıştığını anlamak faydalı olacaktır..

Yığın tabanlı Reverse-polish Sisteminde Basit Ekleme

Daha önce de söylediğimiz gibi reverse-polish’te 3 + 4 34+ gibi görünecek, hadi toplama işlemini bir yığın kullanarak yapalım.

En iyi Bitcoin Script Rehberi

Yığın üzerinde basit bir toplama işlemi bu şekilde yapılır. Şimdi yapıldığına göre, bu bir senaryo olsaydı nasıl görünürdü?

OP_3 OP_4 OP_ADD

Sadece görünüm değişir, işlemin geri kalanı yukarıda gösterildiği gibi kalır. “OP_” öneki, Komut Dosyası dilinin bir imzasıdır.

Bir komut dosyasında kullanılan farklı İşlem Kodları için bir astar istiyorsanız o zaman buraya tıklayın.

Bir Çekle Bitcoin Script Kullanarak Basit Ekleme

Şimdi 2 + 3 = 5 yapmak istediğimizi varsayalım.

Ters Lehçe’de 23 + 5 =.

Komut dosyası gösteriminde şöyle görünecektir:

OP_2 OP_3 OP_ADD OP_5 OP_EQUAL

En İyi Bitcoin Komut Dosyası Kılavuzu En İyi Bitcoin Komut Dosyası Kılavuzu

Şimdi, EQUAL’de VERIFY sonekini kullanırsak ne olurdu? Anlamı, OP_EQUAL yerine OP_EQUALVERIFY kullandık?

VERIFY son ekini eklediğiniz an, DOĞRU veya YANLIŞ yığına aktarılmaz, bunun yerine komut dosyası devam ediyor DOĞRU ise veya durur YANLIŞ ise yürütme.

Bir işlem koduna “DOĞRULA” eklediğinizde olan budur. Gelecekteki örnekler için bunu aklınızda bulundurun.

Pekala, son bir örnek alalım.

Komut Dosyasında Basit Çoğaltma

Bu örneği, sizi son derece önemli bir işlem kodu ile tanıştırmak için alıyoruz, DUP aka kopya.

Hadi, bir sayıyı bir yığına itmek, onu çoğaltmak ve iki sayının aynı olup olmadığını görmek istiyoruz (ki bu açıkça olacaktır).

Bu betiği kullanacağız:

OP_5 OP_DUP OP_EQUALVERIFY

En İyi Bitcoin Komut Dosyası Kılavuzu

Pekala, şimdi hesaplamaların bitcoin Script’te nasıl işlendiğine dair bir fikriniz var, hadi işlemlerimize devam edelim ve nasıl yürütüleceğini görelim.

Kilitleme ve Kilit Açma Oyunu

Bitcoin’deki işlemler, sürekli bir kilitleme ve kilit açma oyunudur. UTXO’lar scriptPubKey tarafından kilitlenirken, işlemin girdileri scriptSig’i içerir. ScriptPubKey’in fikri, yalnızca ilgili scriptSig aracılığıyla açılabilen bir kriptografik bulmaca sunmaktır..

Peki, tam olarak ne oluyor ve bu oyun nasıl oynanıyor??

Diyelim ki, Alice Bob’a biraz bitcoin göndermek istiyor. Bob’un halka açık adresi yaygın bir bilgidir ve Bitcoin’lerini Bob’un genel adresine bir koşulla birlikte gönderecektir, Bob, bitcoin’i alanın aslında kendisi olduğunu kanıtlamalıdır..

Şimdi biraz geri dönelim ve bazı temel kavramları gözden geçirelim.

Bitcoin’deki herkesin iki anahtarı vardır:

Genel anahtar, özel anahtardan kriptografik olarak türetilir.

Şimdi, onlara para gönderilmesi için herkesin açık bir adresi olması gerekir. Halk, iki karma algoritma, SHA-256 ve RIPEMD-160 üzerinden çalıştırılır. Bunu yapmamızın nedeni, fazladan bir koruma katmanına sahip olduğunuzdan emin olmaktır, EĞER birisinin genel anahtarınızı kullanarak özel anahtarınızı nasıl oluşturacağını çözmesi durumunda (ki bu mümkün değildir).

Not: Genel anahtar, 256 bitlik bir çıktı karması vermek için ilk olarak SHA-256’dan geçer ve ardından bu karma, 160 bitlik bir çıktı karması veren RIPEMD-160 üzerinden çalıştırılır. Dolayısıyla, son çıktı 160 bitlik bir karmadır..

Pekala, Alice parayı Bob’un açık adresine gönderecek ve Bob’un parayı alanın gerçekten kendisi olduğuna dair bir kanıt göstermesi şartıyla.

Bob’un fonların kilidini açmak için kullandığı kanıt, özel anahtarından kriptografik olarak türetilen Dijital İmzasıdır..

Alice’in Bob’a gönderdiği işlemleri kilitli sandık olarak ve Bob’un imzasını şifre olarak düşünün.

Şimdi senaryomuza geri dönelim.

Alice, Bob’a scriptPubKey’i içeren ve Bob’un adresini içeren bir çıktı gönderir.

Bob, imzasını ve genel anahtarını içeren scriptSig imzasını kullanarak girişin kilidini açar..

Öyleyse, bunu kodda nasıl temsil ederiz??

scriptPubKey = OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG.

Not: OP_HASH160 ve OP_CHECKSIG’nin nasıl çalıştığını yakında anlayacaksınız.

scriptSig =

Çıktının kilidini açmak ve parasını kullanmak için Bob, scriptSig ve scriptPubKey’i şu şekilde birleştirir veya birleştirir:

En İyi Bitcoin Komut Dosyası Kılavuzu

Resim Kredisi: CryptoCompare

Pekala, şimdi senaryonun zavallı Bob’a fonlarına erişim sağlamak için nasıl çalıştığını görelim. Komut dosyası şu anda şöyle görünüyor:

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG.

Kilit Açma / Doğrulama Sürecinin Komut Dosyası Uygulaması

Tamam, şimdi tüm doğrulama / kilit açma işleminin komut dosyası uygulamasının nasıl çalıştığını görelim.

Şu anda kod şuna benziyor

En İyi Bitcoin Komut Dosyası KılavuzuEn İyi Bitcoin Komut Dosyası Kılavuzu

En İyi Bitcoin Komut Dosyası Kılavuzu

OP_CHECKSIG açılır ve geçerli imzalar ve genel adresler olduklarını bilmek için geçerliliğini kontrol eder..

Tüm bu süreç tamamlandığında, Bob işlemin kilidini açabilir ve parasına erişebilir..

Tebrikler! Az önce tam bir bitcoin işleminden geçtin!

Burada gördüğünüz şey, en yaygın bitcoin işlemi türüdür: P2PKH aka genel anahtar karması için ödeme.

Peki, bu gizemli CHECKSIG operatörü nedir ve nasıl çalışır? Bunun için bitcoin’in arkasındaki kriptografiye bakmamız gerekiyor.

CHECKSIG nasıl çalışır??

CHECKSIG’in nasıl çalıştığını bilmek için dijital imzanın ne olduğunu bilmemiz gerekecek. Dijital imza, içeriğini ve gönderenin kimliğini doğrulamak için elektronik olarak iletilen bir belgeye eklenen dijital bir koddur (genel anahtar şifreleme ile oluşturulur ve doğrulanır).

Bitcoin tarafından kullanılan dijital imza algoritması ECDSA veya Eliptik Eğri Dijital İmza Algoritması’dır..

Eliptik eğri kriptografisi bitcoin, ethereum vb. tarafından şifreleme amaçları için kullanılan şeydir. Peki eliptik eğri nedir? Eliptik eğri, aşağıdaki denklemi karşılayan herhangi bir eğridir:

Y ^ 2 = x ^ 3 + ax + b

(X, y) eğri üzerindeki bir noktadır ve a ve b sabittir.

Yapabileceğiniz sonsuz eğriler var. Aşağıda bu eğrilerden birinin genel olarak nasıl göründüğü açıklanmaktadır:

En İyi Bitcoin Rehberi

Resim kredisi: CSBreakdown youtube kanalı

Eliptik bir eğrinin özellikleri nelerdir?

  • Eğri, x ekseni boyunca simetriktir.
  • Eğri üzerinde 2 noktadan geçen herhangi bir çizgi, üçüncü bir noktada eğri ile kesişecektir..
  • Eğri üzerindeki herhangi bir teğet, eğriyi bir noktada daha keser.

Eğri üzerinde matematik yapmak.

Eğrinin toplama özelliği

V ve A eğrisinde iki nokta olduğunu varsayalım. Eğri üzerindekileri izleyelim ve içlerinden bir doğru çizelim. Bu, eğriyi üçüncü bir noktada kesecek.

En İyi Bitcoin Komut Dosyası Kılavuzu

Resim kredisi: CSBreakdown youtube kanalı

Bu üçüncü noktaya X adını vereceğiz ve bunu eğriye şöyle yansıtacağız:

En İyi Bitcoin Komut Dosyası Kılavuzu

Resim kredisi: CSBreakdown youtube kanalı

X’in yansıması tesadüfen (V + A) olacak bir noktadır. Bu, eliptik eğrinin toplamsal özelliğidir.

İlginç not. Birbiriyle iki yansıma eklersek, yani yukarıdaki grafiğe X ve V + A’yı eklersek sonsuzluk elde ederiz. Bunun nedeni, X ve (V + A) arasındaki çizginin eğri ile sonsuzda kesişmesidir..

Eğrinin çarpma özelliği

Şimdi, ya kendisine bir sayı eklemek istersek? Bir V noktamız olduğunu varsayalım, 2V’yi bulmak için ne yapmalıyız? V’den bir teğet geçecek ve onu grafikteki bir noktada kesecek ve sonra noktanın eğri üzerindeki yansımasını bulacağız. Bu yansıma 2V olacak.

En İyi Bitcoin Komut Dosyası Kılavuzu

Resim kredisi: CSBreakdown youtube kanalı

Bu aynı zamanda grafiğin çarpımsal özelliğidir çünkü temelde bir tamsayının noktanın kendisiyle çarpımı olan noktalar buluyoruz. Şimdi 3V’yi bulmak istediğimizi varsayalım. V ve 2V’yi birleştireceğiz ve sonra kesişme noktasını şu şekilde yansıtacağız:

En İyi Bitcoin Komut Dosyası Kılavuzu

Resim kredisi: CSBreakdown youtube kanalı

Noktaların grafik boyunca nasıl döndüğünü görüyor musunuz? Bu ona güvenliğini veren şey.

Eliptik bir eğrinin matematiksel özellikleri

Özellik # 1: Eğri üzerindeki noktalar bir Abelyen grubu oluşturur

Abelian grubunun özellikleri aşağıdaki gibidir:

  • Bir kimlikleri var.
  • Tersleri, yani yansımaları var.
  • Noktalar, eğri üzerindeki üç nokta A, B ve C için ilişkisel anlamlardır: (A + B) + C = A + (B + C).
  • Noktalar eğri üzerinde kapalıdır.
  • Noktalar, A ve B iki nokta için değişmeli anlamlardır. A + B = B + A.

Özellik # 2: Eğri üzerinde çarpma hızlıdır

Eğri üzerinde yapılan tüm çarpma işlemleri çok hızlı yapılabilir. Şimdi bir P noktamız olduğunu ve 100P’yi bulmak istediğimizi varsayalım. Sayıyı kendisine 100 kez eklemek yerine aşağıdakileri yapabiliriz:

  • 2P elde etmek için P noktasını kendisine ekleyin.
  • 3P almak için 2P ve P ekleyin.
  • 6P almak için 3P’yi kendisine ekleyin.
  • 12P almak için 6P’yi kendisine ekleyin.
  • 24P almak için kendine 12P ekleyin.
  • 25P almak için 24P ve P ekleyin.
  • 50P almak için kendisine 25P ekleyin.
  • 100P almak için kendisine 50P ekleyin.

Yani, 99 adımı geçmek yerine, her şeyi yalnızca 8 adıma indirirsiniz.

Özellik # 3: Eğri üzerindeki bölünme yavaş

Çarpma hızlı iken bölme çok yavaştır. Diyelim ki Q = nP var ve n’nin değerini Q’yu P’ye bölerek bulmak istiyoruz. Bunu gerçekten yapamayız. Denklemi karşılayan bir değer bulmak için sayıları tek tek manuel olarak gözden geçirmemiz gerekecek. Bu onu çok yavaşlatır. Buna ayrık logaritmik problem denir ve bu, eğrilere tuzak kapısı fonksiyonunu verir, yani Q elde etmek için n ve P’yi çarpmak kolaydır, ancak Q ve P verildiğinde, n’yi elde etmek mümkün değildir..

Peki imza doğrulama eliptik eğrilerde nasıl çalışır??

(Not: Bitcoin’de özellikle olan şey budur)

Sürecin nasıl çalıştığını görmeden önce, aşağıdaki denklemlerde kullanacağımız belirli değişkenleri ve anlamlarını kontrol edelim..

Özel anahtar = d.

Mesaj = z.

Genel anahtar = Q.

G, bitcoin tarafından sağlanacak grafik üzerinde sabit bir nokta olacaktır.

“K”, her benzersiz imza için otomatik olarak oluşturulacak rastgele bir sayıdır.

“N”, bitcoin tarafından sağlanacak başka bir sabittir.

Tamam, şimdi doğrulamanın arkasındaki matematiğin nasıl çalıştığını görelim..

Bir mesajı imzalamak

Genel anahtar Q = dG. (Olası bölünme nedeniyle özel anahtarı Q ve G’den almak imkansızdır).

Şimdi G’yi rastgele “k” sayısıyla çarpacağız ve bu noktayı grafiğe çizeceğiz. Bu noktanın koordinatları (x, y) ‘dir. yani (x, y) = kG

Sonra, r ve s olmak üzere iki değer belirleriz:

r = x mod n.

s = (z + rd) k ^ -1 mod n

R ve s üretmemizin nedeni, bunların imzamızın koordinatları olmasıdır..

Yani, doğrulama için (r, s) noktasını gönderiyoruz.

Bir mesajı doğrulama

Doğrulayıcılar basit bir denklem yürütecekler:

z * s ^ -1 * G + r * s ^ -1 * Q

Bu denklemin değeri bize (x, y) noktasını verecektir..

Şimdi, doğrulayıcılar x koordinatlarını basitçe karşılaştırabilir. Doğrudan gönderen tarafından kendilerine verilen x koordinatlarına sahip değiller ANCAK r ve n değerlerine sahipler.

Ve zaten r = x mod n olduğunu bildiğimiz gibi ve sonra x için basitçe çözebilirler..

X’in değerleri eşleşiyorsa, bu, imzanın doğrulandığı anlamına gelir.!

Bonus: Matematiğe daha derin bir bakış

Doğrulayıcıların bir kez daha yapması gereken denklemi kontrol edelim:

Aşama 1: z * s ^ -1 * G + r * s ^ -1 * Q

Q = d * G olduğunu biliyoruz, basitçe değeri değiştirelim.

Adım 2: z * s ^ -1 * g + r * s ^ -1 * d * G

(Z + r * d) ortak alabiliriz

Aşama 3: (z + r * d) * s ^ -1 * G

Şimdi unutmayın, s = (z + r * d) * k ^ -1 mod n olduğunu zaten belirledik, buradaki değerleri değiştirelim:

4. Adım: (z + r * d) * (z + r * d) ^ – 1 * k * G

(Z + r * d) * (z + r * d) ^ – 1 birbirini götürür ve şunlarla kalırız:

Adım 5: gönderenin orijinal olarak gönderdiği koordinat (x, y) olan k * G.

Eliptik eğrilerde ne ters gidebilir??

Eliptik eğrilerin piyasadaki en iyi kriptografi modu olduğunu söylemeye gerek yok ama hala birkaç güvenlik açığına sahip olduğu gerçeği kalıyor:

  • Ya yanlış bir eğri seçildiyse? Eğrinin içinde bir döngü varsa, eğri üzerindeki herhangi bir P noktası için 1001P = P olasılığı vardır..

  • Kırılabilecek zayıf bir eğri seçilebilir..

Zayıf yönleri var ama oldukça yönetilebilir zayıflıkları.

1. BÖLÜM SONU

Bitcoin Komut Dosyası Kılavuzumuzun 1. bölümünü burada bitireceğiz. 2. bölümde şunları ele alacağız:

  • Çoklu İmza İşlemleri.
  • Komut Dosyası Hash’una Ödeme.
  • Akış kontrolü.
  • Zaman kilitleri.

Sonraki bölüm için bizi izlemeye devam edin!

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me