“Ethereum blok zinciri için Solidity akıllı sözleşmelerinin oluşturulması” kitabı. Pratik kılavuz"

“Ethereum blok zinciri için Solidity akıllı sözleşmelerinin oluşturulması” kitabı. Pratik kılavuz"
Bir yıldan fazla bir süredir “Ethereum Blockchain için Sağlamlık Akıllı Sözleşmeleri Oluşturma” kitabı üzerinde çalışıyorum. Pratik Kılavuz" ve artık bu çalışma tamamlandı ve kitap Litre cinsinden yayınlandı ve mevcut.

Umarım kitabım, Ethereum blok zinciri için Solidity akıllı kişileri ve dağıtılmış DApp'ler oluşturmaya hızlı bir şekilde başlamanıza yardımcı olur. Pratik görevlerin olduğu 12 dersten oluşur. Bunları tamamladıktan sonra okuyucu, kendi yerel Ethereum düğümlerini oluşturabilecek, akıllı sözleşmeler yayınlayabilecek ve yöntemlerini çağırabilecek, oracles kullanarak gerçek dünya ile akıllı sözleşmeler arasında veri alışverişi yapabilecek ve Rinkeby test hata ayıklama ağıyla çalışabilecek.

Kitap, blok zinciri alanındaki ileri teknolojilerle ilgilenen ve ilginç ve gelecek vaat eden işlerde bulunmalarına olanak tanıyan bilgileri hızla elde etmek isteyen herkese hitap ediyor.

Aşağıda kitabın içindekiler kısmını ve ilk bölümünü bulacaksınız (ayrıca Litre kitabın bazı bölümleri mevcuttur). Geri bildirim, yorum ve öneriler almayı umuyorum. Kitabın bir sonraki baskısını hazırlarken tüm bunları dikkate almaya çalışacağım.

içindekilerGirişKitabımız yalnızca Ethereum blok zincirinin ilkelerini anlamak isteyenler için değil, aynı zamanda bu ağ için Solidity programlama dilinde dağıtılmış DApp'ler oluşturma konusunda pratik beceriler kazanmak isteyenler için tasarlanmıştır.

Sadece bu kitabı okumak değil, derslerde anlatılan pratik görevleri yerine getirerek onunla çalışmak daha iyidir. Çalışmak için Debian veya Ubuntu işletim sisteminin kurulu olduğu yerel bir bilgisayara, sanal veya bulut sunucuya ihtiyacınız olacak. Raspberry Pi'yi birçok görevi gerçekleştirmek için de kullanabilirsiniz.

İlk derste Ethereum blockchainin çalışma prensiplerine ve temel terminolojisine bakacağız, ayrıca bu blockchainin nerelerde kullanılabileceğinden de bahsedeceğiz.

Gol ikinci ders — Bu kurs kapsamında bir Ubuntu ve Debian sunucusunda daha ileri çalışmalar yapmak için özel bir Ethereum blockchain düğümü oluşturun. Blockchain düğümümüzün çalışmasını sağlayan geth gibi temel yardımcı programların yanı sıra sürü merkezi olmayan veri depolama arka plan programının kurulum özelliklerine bakacağız.

Üçüncü ders size ucuz bir Raspberry Pi mikrobilgisayarında Ethereum ile nasıl deney yapacağınızı öğretecek. Rasberian işletim sistemini (OS) Raspberry Pi'ye, blockchain düğümüne güç veren Geth yardımcı programına ve Swarm merkezi olmayan veri depolama arka plan programına kuracaksınız.

Dördüncü ders Ethereum ağındaki hesaplara ve kripto para birimi birimlerine ve ayrıca Geth konsolundan bir hesaptan diğerine fon aktarma yollarına adanmıştır. Hesap oluşturmayı, fon transferi işlemlerini başlatmayı ve işlem durumunu ve makbuzunu nasıl alacağınızı öğreneceksiniz.

Beşinci derste Ethereum ağındaki akıllı sözleşmelerle tanışacak ve bunların Ethereum sanal makinesi tarafından yürütülmesini öğreneceksiniz.

İlk akıllı sözleşmenizi Ethereum özel ağında oluşturup yayınlayacak ve işlevlerini nasıl çağıracağınızı öğreneceksiniz. Bunu yapmak için Remix Solidity IDE'yi kullanacaksınız. Ayrıca solc toplu derleyicinin nasıl kurulacağını ve kullanılacağını da öğreneceksiniz.
Ayrıca Uygulama İkili Arayüzü (ABI) olarak adlandırılan şeyden de bahsedeceğiz ve size onu nasıl kullanacağınızı öğreteceğiz.

Altıncı ders Node.js'yi çalıştıran JavaScript komut dosyaları oluşturmaya ve Solidity akıllı sözleşmeleriyle işlemler gerçekleştirmeye adanmıştır.

Node.js'yi Ubuntu, Debian ve Rasberian OS'ye kuracak, Ethereum yerel ağında akıllı bir sözleşme yayınlamak için komut dosyaları yazacak ve işlevlerini çağıracaksınız.

Ek olarak, komut dosyaları kullanarak normal hesaplar arasında fon aktarmanın yanı sıra bunları akıllı sözleşme hesaplarına nasıl aktaracağınızı da öğreneceksiniz.

Yedinci derste Solidity akıllı sözleşme geliştiricileri arasında popüler olan Truffle çerçevesini nasıl kuracağınızı ve kullanacağınızı öğreneceksiniz. Truffle-sözleşme modülünü kullanarak sözleşme işlevlerini çağıran JavaScript komut dosyalarının nasıl oluşturulacağını ve Truffle'ı kullanarak akıllı sözleşmenizi nasıl test edeceğinizi öğreneceksiniz.

Sekizinci ders Solidity veri türlerine ayrılmıştır. İmzalı ve imzasız tamsayılar, işaretli sayılar, dizeler, adresler, karmaşık değişkenler, diziler, numaralandırmalar, yapılar ve sözlükler gibi veri türleriyle çalışan akıllı sözleşmeler yazacaksınız.

Dokuzuncu derste Ethereum ana ağı için akıllı sözleşmeler oluşturmaya bir adım daha yaklaşacaksınız. Geth özel ağında ve Rinkeby test ağında Truffle'ı kullanarak sözleşmeleri nasıl yayınlayacağınızı öğreneceksiniz. Rinkeby ağında akıllı bir sözleşmenin hatalarını ayıklamak, onu ana ağda yayınlamadan önce çok faydalıdır - orada neredeyse her şey gerçektir, ancak ücretsizdir.

Dersin bir parçası olarak bir Rinkeby test ağı düğümü oluşturacak, onu fonlarla finanse edecek ve bir akıllı sözleşme yayınlayacaksınız.

Ders 10 Ethereum Swarm dağıtılmış veri depolamaya adanmıştır. Dağıtılmış depolamayı kullanarak, Ethereum blok zincirinde büyük miktarda veri depolamaktan tasarruf edersiniz.

Bu eğitimde yerel bir Swarm depolama alanı oluşturacak, dosyalar ve dosya dizinleri üzerinde yazma ve okuma işlemlerini gerçekleştireceksiniz. Daha sonra, genel Swarm ağ geçidiyle nasıl çalışılacağını, Swarm'a Node.js'den erişmek için komut dosyaları yazmayı ve ayrıca Perl Net::Ethereum::Swarm modülünü kullanmayı öğreneceksiniz.

Dersin Hedefi 11 — popüler Python programlama dilini ve Web3.py çerçevesini kullanarak Solidity akıllı sözleşmeleriyle çalışma konusunda uzmanlaşın. Çerçeveyi kuracak, akıllı sözleşmeyi derleyip yayınlayacak komut dosyaları yazacak ve işlevlerini çağıracaksınız. Bu durumda Web3.py hem tek başına hem de Truffle entegre geliştirme ortamıyla birlikte kullanılacaktır.

12. derste oracle'ları kullanarak akıllı sözleşmeler ile gerçek dünya arasında veri aktarmayı öğreneceksiniz. Web sitelerinden, IoT cihazlarından, çeşitli cihaz ve sensörlerden veri almanız ve bu cihazlara akıllı sözleşmelerden veri göndermeniz işinize yarayacaktır. Dersin pratik kısmında, Rusya Federasyonu Merkez Bankası'nın web sitesinden USD ile ruble arasındaki güncel döviz kurunu alan bir kehanet ve akıllı sözleşme oluşturacaksınız.

Ders 1. Blockchain ve Ethereum ağı hakkında kısacaDersin amacı: Ethereum blockchain'in çalışma prensiplerini, uygulama alanlarını ve temel terminolojisini öğrenin.
Pratik görevler: bu derste ele alınmamıştır.

Günümüzde blockchain teknolojisi (Blockchain), kripto para birimleri (Kripto para birimi veya Kripto Para), Bitcoin (Bitcoin), ilk para arzı (ICO, İlk para arzı), akıllı sözleşmeler (Akıllı Sözleşme) hakkında hiçbir şey duymamış bir yazılım geliştiricisi neredeyse yoktur. blockchain ile ilgili diğer kavram ve terimlerin yanı sıra.

Blockchain teknolojisi yeni pazarlar açıyor ve programcılara iş imkanı yaratıyor. Kripto para birimi teknolojilerinin ve akıllı sözleşme teknolojilerinin tüm inceliklerini anlarsanız, bu bilgiyi pratikte uygulamada sorun yaşamamalısınız.

Kripto para birimleri ve blok zincirler etrafında pek çok spekülasyonun olduğu söylenmelidir. Kripto para oranlarındaki değişiklikler, piramitlerin oluşturulması, kripto para birimi mevzuatının incelikleri vb. hakkındaki tartışmaları bir kenara bırakacağız. Eğitim kursumuzda esas olarak Ethereum blok zincirinin (Ethereum, Ether) akıllı sözleşmelerinin uygulanmasının teknik yönlerine ve merkezi olmayan uygulamaların (Dağıtılmış Uygulama, DApp) geliştirilmesine odaklanacağız.

Blockchain nedir?

Blockchain (Block Chain), birbirine belirli bir şekilde bağlanan veri blokları zinciridir. Zincirin başlangıcında birincil blok (oluşma bloğu) veya oluşum bloğu adı verilen ilk blok vardır. Bunu ikinci, ardından üçüncü ve benzeri takip eder.

Tüm bu veri blokları, blockchain ağının çok sayıda düğümünde otomatik olarak kopyalanır. Bu, blockchain verilerinin merkezi olmayan bir şekilde depolanmasını sağlar.
Blockchain sistemini, bir ağa bağlanan ve veri blokları zincirindeki tüm değişiklikleri kopyalayan çok sayıda düğüm (fiziksel veya sanal sunucu) olarak düşünebilirsiniz. Bu, çok sunuculu dev bir bilgisayar gibidir ve böyle bir bilgisayarın (sunucuların) düğümleri dünyanın her yerine dağılmış olabilir. Siz de bilgisayarınızı blockchain ağına ekleyebilirsiniz.

Dağıtılmış Veritabanı

Bir blockchain, blockchain ağının tüm düğümlerinde kopyalanan dağıtılmış bir veritabanı olarak düşünülebilir. Teorik olarak, blok zincirinin tüm bloklarını depolayan en az bir düğüm çalıştığı sürece blok zinciri operasyonel olacaktır.

Dağıtılmış Veri Kaydı

Blockchain, verilerin ve işlemlerin (işlemlerin) dağıtılmış bir defteri olarak düşünülebilir. Böyle bir kaydın diğer adı defterdir.

Veriler dağıtılmış bir deftere eklenebilir ancak değiştirilemez veya silinemez. Bu imkansızlık, özellikle kriptografik algoritmaların, zincire blok eklemek için özel algoritmaların ve merkezi olmayan veri depolamanın kullanılmasıyla elde edilir.

Blok eklerken ve işlemleri (işlemleri) gerçekleştirirken özel ve genel anahtarlar kullanılır. Blockchain kullanıcılarını yalnızca kendi veri bloklarına erişmelerine izin vererek kısıtlıyorlar.

Işlemler

Blockchain, işlemler (işlemler) hakkındaki bilgileri bloklar halinde saklar. Aynı zamanda eski, halihazırda tamamlanmış işlemler geri alınamaz veya değiştirilemez. Yeni işlemler yeni eklenen bloklarda saklanır.

Bu sayede işlem geçmişinin tamamı blockchain üzerinde değişmeden kaydedilebilir. Bu nedenle blockchain, örneğin bankacılık işlemlerini, telif hakkı bilgilerini, mülk sahiplerindeki değişiklik geçmişini vb. güvenli bir şekilde saklamak için kullanılabilir.

Ethereum blok zinciri, sistem durumları olarak adlandırılan durumları içerir. İşlemler yürütüldükçe durum başlangıç ​​durumundan mevcut duruma değişir. İşlemler bloklar halinde kaydedilir.

Kamu ve özel blok zincirleri

Burada söylenenlerin yalnızca herhangi bir gerçek veya tüzel kişi, devlet kurumu veya hükümet tarafından kontrol edilemeyen sözde halka açık blockchain ağları için geçerli olduğunu belirtmek gerekir.
Özel blockchain ağları olarak adlandırılan ağlar, yaratıcılarının tam kontrolü altındadır ve burada her şey mümkündür, örneğin zincirin tüm bloklarının tamamen değiştirilmesi.

Blockchain'in pratik uygulamaları

Blockchain ne işe yarayabilir?

Kısaca blockchain, birbirine güvenmeyen kişi veya şirketler arasındaki işlemleri (işlemleri) güvenli bir şekilde gerçekleştirmenizi sağlar. Blockchain'e kaydedilen veriler (işlemler, kişisel veriler, belgeler, sertifikalar, sözleşmeler, faturalar vb.) kayıttan sonra tahrif edilemez veya değiştirilemez. Bu nedenle, blok zincirine dayanarak, örneğin çeşitli türdeki belgelerin güvenilir dağıtılmış kayıtlarını oluşturmak mümkündür.

Elbette, sıradan kağıt paranın yerini alacak şekilde tasarlanan blockchain temelinde kripto para birimi sistemlerinin oluşturulduğunu biliyorsunuz. Kağıt paraya fiat (Fiat Money'den) da denir.
Blockchain, bloklar halinde kaydedilen işlemlerin depolanmasını ve değiştirilemezliğini sağlar, bu nedenle kripto para birimi sistemleri oluşturmak için kullanılabilir. Farklı kullanıcılar (hesaplar) arasında kripto fonlarının transferinin tüm geçmişini içerir ve herhangi bir işlem takip edilebilir.

Kripto para sistemlerindeki işlemler anonim olabilse de, kripto para birimini çekmek ve fiat parayla değiştirmek genellikle kripto para birimi varlığının sahibinin kimliğinin açığa çıkmasıyla sonuçlanır.

Ethereum ağında çalışan yazılımlar olan akıllı sözleşmeler, işlemleri tamamlama ve bunların uygulanmasını izleme sürecini otomatikleştirmenize olanak tanır. Bu, özellikle işlem için ödemenin Ether kripto para birimi kullanılarak yapılması durumunda etkilidir.

Solidity programlama dilinde yazılmış Ethereum blockchain ve Ethereum akıllı sözleşmeleri örneğin aşağıdaki alanlarda kullanılabilir:

  • belgelerin noter onayına bir alternatif;
  • gayrimenkul nesnelerinin bir kaydının saklanması ve gayrimenkul nesneleriyle yapılan işlemlere ilişkin bilgiler;
  • fikri mülkiyete ilişkin telif hakkı bilgilerinin saklanması (kitaplar, resimler, müzik eserleri vb.);
  • bağımsız oylama sistemlerinin oluşturulması;
  • finans ve bankacılık;
  • uluslararası ölçekte lojistik, malların hareketinin izlenmesi;
  • kişisel verilerin kimlik kartı sistemine benzer şekilde saklanması;
  • ticari alanda güvenli işlemler;
  • Tıbbi muayenelerin sonuçlarının yanı sıra öngörülen prosedürlerin geçmişinin saklanması

Blockchain ile ilgili sorunlar

Ancak elbette her şey göründüğü kadar basit değil!

Verileri blok zincirine eklemeden önce doğrulamayla ilgili sorunlar var (örneğin, bunlar sahte mi?), Blockchain ile çalışmak için kullanılan sistem ve uygulama yazılımının güvenliğiyle ilgili sorunlar, erişimi çalmak için sosyal mühendislik yöntemlerini kullanma olasılığıyla ilgili sorunlar var kripto para cüzdanlarına vb.

Yine düğümleri dünyanın dört bir yanına dağılmış halka açık bir blockchain'den değil, bir kişiye veya kuruluşa ait özel bir blockchain'den bahsediyorsak o zaman buradaki güven düzeyi, güven düzeyinden daha yüksek olmayacaktır. bu kişide veya bu kuruluşta.

Blockchain'e kaydedilen verilerin herkesin kullanımına açık hale geldiği de dikkate alınmalıdır. Bu anlamda blockchain (özellikle halka açık) gizli bilgilerin saklanması için uygun değildir. Ancak blockchain üzerindeki bilgilerin değiştirilememesi, çeşitli dolandırıcılık faaliyetlerinin önlenmesine veya araştırılmasına yardımcı olabilir.

Ethereum'un merkezi olmayan uygulamaları, kullanımları için kripto para birimiyle ödeme yaparsanız kullanışlı olacaktır. Kripto para birimine sahip olan veya onu satın almaya istekli olan kişi sayısı arttıkça, DApp'ler ve akıllı sözleşmeler de o kadar popüler hale gelecektir.

Blockchain'in pratik uygulamasını engelleyen yaygın sorunlar arasında yeni blokların eklenebileceği sınırlı hız ve nispeten yüksek işlem maliyetleri yer alıyor. Ancak bu alandaki teknoloji aktif olarak gelişiyor ve teknik sorunların zamanla çözüleceğine dair umutlar var.

Diğer bir sorun ise Ethereum blok zincirindeki akıllı sözleşmelerin sanal makinelerin izole edilmiş bir ortamında çalışması ve gerçek dünya verilerine erişiminin olmamasıdır. Özellikle, akıllı sözleşme programı sitelerden veya herhangi bir fiziksel cihazdan (sensörler, kişiler vb.) verileri kendisi okuyamaz ve ayrıca herhangi bir harici cihaza veri çıkışı yapamaz. Akıllı sözleşmelerin bilgi aracıları olan Oracle'lara ayrılmış bir derste bu sorunu ve çözmenin yollarını tartışacağız.

Yasal kısıtlamalar da var. Örneğin bazı ülkelerde kripto para birimini ödeme aracı olarak kullanmak yasaktır ancak buna menkul kıymetler gibi bir tür dijital varlık olarak sahip olabilirsiniz. Bu tür varlıklar borsada alınıp satılabilir. Her durumda, kripto para birimleriyle çalışan bir proje oluştururken, projenizin yetki alanına girdiği ülkenin mevzuatını bilmeniz gerekir.

Blockchain zinciri nasıl oluşturulur?

Daha önce de söylediğimiz gibi blockchain basit bir veri blokları zinciridir. Önce bu zincirin ilk bloğu oluşturulur, ardından ona ikincisi eklenir ve bu böyle devam eder. İşlem verilerinin bloklar halinde saklandığı varsayılır ve en son bloğa eklenir.

İncirde. 1.1'de, ilk bloğun bir sonraki bloğu ifade ettiği bir blok dizisinin en basit versiyonunu gösterdik.

“Ethereum blok zinciri için Solidity akıllı sözleşmelerinin oluşturulması” kitabı. Pratik kılavuz"
Pirinç. 1.1. Basit blok dizisi

Ancak bu seçenekle zincirdeki herhangi bir bloğun içeriğine müdahale etmek çok kolaydır çünkü bloklar değişikliklere karşı koruma sağlayacak herhangi bir bilgi içermez. Blockchain'in aralarında güven bulunmayan kişi ve şirketler tarafından kullanılmasının amaçlandığını düşünürsek, bu veri depolama yönteminin blockchain'e uygun olmadığı sonucuna varabiliriz.

Blokları sahteciliğe karşı korumaya başlayalım. İlk aşamada her bloğu bir sağlama toplamı ile korumaya çalışacağız (Şekil 1.2).

“Ethereum blok zinciri için Solidity akıllı sözleşmelerinin oluşturulması” kitabı. Pratik kılavuz"
Pirinç. 1.2. Sağlama toplamı ile bu bloklara koruma ekleme

Artık bir saldırgan, blok verilerinin sağlama toplamını içerdiğinden bloğu kolayca değiştiremez. Sağlama toplamının kontrol edilmesi verilerin değiştirildiğini gösterecektir.

Sağlama toplamını hesaplamak için MD-5, SHA-1, SHA-256 vb. karma işlevlerinden birini kullanabilirsiniz. Hash işlevleri, bir veri bloğu üzerinde geri dönüşü olmayan işlemler gerçekleştirerek bir değeri (örneğin, sabit uzunlukta bir metin dizesi) hesaplar. İşlemler karma fonksiyonunun türüne bağlıdır.

Veri bloğunun içeriği biraz değişse bile hash değeri de değişecektir. Hash fonksiyonu değerini analiz ederek hesaplandığı veri bloğunu yeniden oluşturmak imkansızdır.

Böyle bir koruma yeterli olacak mı? Ne yazık ki hayır.

Bu şemada, sağlama toplamı (karma işlevi) yalnızca bireysel blokları korur, ancak tüm blok zincirini korumaz. Hash fonksiyonunu hesaplamak için kullanılan algoritmayı bilen bir saldırgan, bir bloğun içeriğini kolaylıkla değiştirebilir. Ayrıca hiçbir şey onu zincirden blokları çıkarmaktan veya yenilerini eklemekten alıkoyamaz.

Zincirin tamamını bir bütün olarak korumak için, her blokta verilerle birlikte önceki bloktaki verilerin bir karmasını da saklayabilirsiniz (Şekil 1.3).

“Ethereum blok zinciri için Solidity akıllı sözleşmelerinin oluşturulması” kitabı. Pratik kılavuz"
Pirinç. 1.3. Önceki bloğun karmasını veri bloğuna ekleyin

Bu şemada, bir bloğu değiştirmek için sonraki tüm blokların karma işlevlerini yeniden hesaplamanız gerekir. Görünüşe göre sorun ne?

Gerçek blok zincirlerinde, yeni blokların eklenmesinde ek olarak yapay zorluklar yaratılır; çok fazla bilgi işlem kaynağı gerektiren algoritmalar kullanılır. Bir blokta değişiklik yapmak için yalnızca bu bloğu değil, sonraki tüm blokları da yeniden hesaplamanız gerektiğini düşünürsek, bunu yapmak son derece zor olacaktır.

Ayrıca blockchain verilerinin çok sayıda ağ düğümünde depolandığını (çoğaltıldığını) da hatırlayalım; Merkezi olmayan depolama kullanılır. Bu da sahte bir blok oluşturmayı çok daha zorlaştırıyor çünkü tüm ağ düğümlerinde değişiklik yapılması gerekir.

Bloklar bir önceki bloğa ait bilgileri sakladığından zincirdeki tüm blokların içeriğini kontrol etmek mümkündür.

Ethereum blok zinciri

Ethereum blockchain, dağıtılmış DApp'lerin oluşturulabileceği bir platformdur. Diğer platformlardan farklı olarak Ethereum, Solidity programlama dilinde yazılan akıllı sözleşmelerin (akıllı sözleşmeler) kullanılmasına izin verir.

Bu platform, Bitcoin Magazine'in kurucusu Vitalik Buterin tarafından 2013 yılında oluşturulmuş ve 2015 yılında piyasaya sürülmüştür. Eğitim kursumuzda inceleyeceğimiz veya yapacağımız her şey, özellikle Ethereum blockchain ve Solidity akıllı sözleşmeleriyle ilgilidir.

Madencilik veya blokların nasıl oluşturulduğu

Madencilik, "kripto para madenciliği" değil, blockchain zincirine yeni bloklar eklemeye yönelik oldukça karmaşık ve kaynak yoğun bir süreçtir. Madencilik, blockchainin işlevselliğini sağlar çünkü Ethereum blok zincirine işlem eklemekten sorumlu olan bu süreçtir.

Blok eklemede yer alan kişi ve kuruluşlara madenciler denir.
Madenci düğümleri üzerinde çalışan yazılım, ağ tarafından belirlenen belirli bir hash değerini elde etmek amacıyla son blok için Nonce adı verilen bir hash parametresi bulmaya çalışır. Ethereum'da kullanılan Ethash karma algoritması, Nonce değerini yalnızca sıralı arama yoluyla elde etmenize olanak tanır.

Madenci düğümü doğru Nonce değerini bulursa, bu sözde iş kanıtıdır (PoW, İş Kanıtı). Bu durumda, Ethereum ağına bir blok eklenirse, madenci ağ para birimi Ether cinsinden belirli bir ödül alır. Bu yazının yazıldığı sırada ödül 5 Ether'di ancak bu zamanla azalacaktır.

Böylece Ethereum madencileri blok ekleyerek ağın çalışmasını sağlar ve bunun karşılığında kripto para alır. İnternette madenciler ve madencilik hakkında pek çok bilgi var ancak biz Ethereum ağı üzerinde Solidity sözleşmeleri ve DApp'ler oluşturmaya odaklanacağız.

Ders özeti

İlk derste blockchain ile tanıştınız ve onun özel olarak oluşturulmuş bir blok dizisi olduğunu öğrendiniz. Daha önce kaydedilen blokların içeriği değiştirilemez çünkü bu, birçok ağ düğümünde sonraki tüm blokların yeniden hesaplanmasını gerektirecektir ve bu da çok fazla kaynak ve zaman gerektirir.

Blockchain, işlemlerin sonuçlarını saklamak için kullanılabilir. Temel amacı aralarında güven bulunmayan taraflar (kişi ve kuruluşlar) arasında güvenli işlemlerin organize edilmesidir. Ethereum blockchain ve Solidity akıllı sözleşmelerinin hangi spesifik iş alanlarında ve hangi alanlarda kullanılabileceğini öğrendiniz. Bu bankacılık sektörü, mülkiyet haklarının tescili, belgeler vb.

Ayrıca blockchain kullanırken çeşitli sorunların ortaya çıkabileceğini de öğrendiniz. Bunlar, blok zincirine eklenen bilgilerin doğrulanması sorunları, blok zincirinin hızı, işlemlerin maliyeti, akıllı sözleşmeler ile gerçek dünya arasındaki veri alışverişi sorunu ve saldırganların kullanıcı hesaplarından kripto para birimi fonlarını çalmayı amaçlayan potansiyel saldırılarıdır. .

Ayrıca blockchaine yeni blokların eklenmesi süreci olarak madencilikten de kısaca bahsetmiştik. İşlemleri tamamlamak için madencilik gereklidir. Madencilikle uğraşanlar blockchainin işleyişini sağlar ve bunun karşılığında kripto para biriminde ödül alırlar.

Ders 2. Ubuntu ve Debian OS'de çalışma ortamı hazırlamakİşletim sistemi seçme
Gerekli yardımcı programların kurulması
Ubuntu'ya Geth ve Swarm Kurulumu
Geth ve Swarm'ın Debian'a Kurulumu
Ön hazırlık
Go dağıtımını indirme
Ortam değişkenlerini ayarlama
Go sürümünü kontrol etme
Geth ve Swarm'ın Kurulumu
Özel bir blockchain oluşturma
Genesis.json dosyasını hazırlama
İş için bir dizin oluşturun
Bir hesap oluşturun
Düğüm başlatma işleminin başlatılması
Düğüm Başlatma Seçenekleri
Düğümümüze bağlanın
Madencilik yönetimi ve denge kontrolü
Geth konsolunu kapatma
Ders özeti

Ders 3. Raspberry Pi 3'te çalışma ortamının hazırlanmasıRaspberry Pi 3'ü işe hazırlama
Rasberian'ın Kurulumu
Güncellemeler yükleniyor
SSH Erişimini Etkinleştirme
Statik IP Adresi Ayarlama
Gerekli yardımcı programların kurulması
Go'yu yükleme
Go dağıtımını indirme
Ortam değişkenlerini ayarlama
Go sürümünü kontrol etme
Geth ve Swarm'ın Kurulumu
Özel bir blockchain oluşturma
Hesabınızı ve bakiyenizi kontrol etme
Ders özeti

Ders 4. Hesaplar ve hesaplar arasında para transferiHesapları görüntüleme ve ekleme
Hesapların listesini görüntüleme
Hesap ekleme
geth hesabı komut seçenekleri
Hesap şifreleri
Ethereum'da kripto para birimi
Ethereum Para Birimleri
Hesaplarımızın cari bakiyesini belirliyoruz
Bir hesaptan diğerine para aktarma
eth.sendTransaction yöntemi
İşlem durumunu görüntüle
İşlem makbuzu
Ders özeti

Ders 5. İlk sözleşmenizi yayınlamakEthereum'da akıllı sözleşmeler
Akıllı Sözleşme Yürütme
Ethereum Sanal Makinesi
Entegre geliştirme ortamı Remix Solidity IDE
Derleme çalıştırılıyor
Sözleşme Fonksiyonlarını Çağırma
Özel bir ağda bir sözleşme yayınlama
ABI tanımını ve sözleşme ikili kodunu alma
Sözleşmenin yayınlanması
Sözleşme yayınlama işlem durumunu kontrol etme
Sözleşme Fonksiyonlarını Çağırma
Toplu derleyici çözümü
Ubuntu'ya solc kurulumu
Debian'a solc kurulumu
HelloSol sözleşmesinin derlenmesi
Sözleşmenin yayınlanması
Rasberian'a solc kurulumu
Ders özeti

Ders 6: Akıllı sözleşmeler ve Node.jsNode.js'yi yükleme
Ubuntu'da kurulum
Debian'a Kurulum
Ganache-cli'yi kurmak ve çalıştırmak
Web3 kurulumu
Solc'u yükleme
Rasberian'a Node.js kurulumu
Konsoldaki hesapların listesini almak için komut dosyası
Akıllı sözleşme yayınlamak için komut dosyası
Parametreleri başlat ve al
Başlatma seçeneklerini alma
Sözleşme Derlemesi
Hesabınızın engellemesini kaldırma
ABI ve sözleşme ikili kodunu yükleme
Gerekli gaz miktarının tahmin edilmesi
Bir nesne oluşturun ve bir sözleşme yayınlamaya başlayın
Sözleşme yayınlama komut dosyasını çalıştırma
Akıllı sözleşme işlevlerini çağırma
Yayınlanan bir akıllı sözleşmeyi güncellemek mümkün mü?
Web3 sürüm 1.0.x ile çalışma
Hesapların listesini alma
Sözleşmenin yayınlanması
Sözleşme Fonksiyonlarını Çağırma
Bir hesaptan diğerine para aktarma
Sözleşme hesabına para aktarın
HelloSol akıllı sözleşmesinin güncellenmesi
Hesap bakiyenizi görüntülemek için bir komut dosyası oluşturun
call_contract_get_promise.js betiğine getBalance işlevine bir çağrı ekleyin
Akıllı sözleşme hesabına para yüklüyoruz
Ders özeti

Ders 7. Yermantarına GirişYermantarının Kurulumu
HelloSol projesi oluşturma
Proje Dizini ve Dosyalarının Oluşturulması
Sözleşmeler dizini
Katalog taşıma işlemleri
Dizin testi
truffle-config.js dosyası
HelloSol sözleşmesinin derlenmesi
Bir sözleşme yayınlamaya başlayın
Bir Trüf İsteminde HelloSol Sözleşme İşlevlerini Çağırma
Node.js çalıştıran bir JavaScript betiğinden HelloSol sözleşme işlevlerini çağırmak
Yer mantarı sözleşme modülünün takılması
Sözleşme işlevlerinin getValue ve getString çağrılması
setValue ve setString sözleşme işlevlerinin çağrılması
Sözleşme değişikliği ve yeniden yayımlanması
Web3 sürüm 1.0.x ile çalışma
HelloSol akıllı sözleşmesinde değişiklik yapma
Sözleşme yöntemlerini çağırmak için komut dosyaları
Yermantarında Test
Sağlamlık testi
JavaScript testi
Ders özeti

Ders 8. Katılık Veri TürleriVeri türlerini öğrenmek için sözleşme
Boole veri türleri
İşaretsiz tam sayılar ve işaretli tam sayılar
Sabit nokta numaraları
adres
Karmaşık türlerin değişkenleri
Sabit Boyutlu Diziler
Dinamik diziler
Liste
yapı
Sözlük eşleme
Ders özeti

Ders 9. Sözleşmelerin özel ağa ve Rinkeby ağına taşınmasıTruffle'dan özel Geth ağına bir sözleşme yayınlamak
Özel bir ağ düğümü hazırlama
İş sözleşmesi hazırlamak
Bir sözleşmenin derlenmesi ve Truffle ağına taşınması
Yerel ağ geçiş geth'i başlatılıyor
Trüf mantarı eserlerini elde etmek
Truffle'dan Rinkeby test ağına bir sözleşme yayınlama
Bir Geth düğümünün Rinkeby ile çalışmaya hazırlanması
Düğüm senkronizasyonu
Hesap ekleme
Rinkeby hesabınıza eter yükleme
Rinkeby ağına sözleşme geçişi başlatılıyor
Rinkeby ağındaki sözleşme bilgilerini görüntüleme
Rinkeby Ağı için Trüf Konsolu
Sözleşme işlevlerini çağırmanın daha kolay yolu
Node.js kullanarak sözleşme yöntemlerini çağırma
Rinkby için Truffle konsolundaki hesaplar arasında para aktarın
Ders özeti

Ders 10: Ethereum Swarm Merkezi Olmayan Veri DepolamaEthereum Swarm nasıl çalışır?
Swarm'ı yükleme ve başlatma
Dosya ve dizinlerle işlemler
Ethereum Swarm'a Dosya Yüklemek
Ethereum Swarm'dan dosya okuma
Yüklenen bir dosyanın bildirimini görüntüleme
Dizinleri alt dizinlerle yükleme
İndirilen bir dizinden dosya okuma
Herkese açık bir Swarm ağ geçidi kullanma
Swarm'a Node.js komut dosyalarından erişme
Perl Net::Ethereum::Swarm modülü
Net::Ethereum::Swarm modülünün kurulumu
Veri yazma ve okuma
Ders özeti

Ders 11. Python'da Ethereum ile çalışmak için Web3.py çerçevesiWeb3.py'yi yükleme
Gerekli paketlerin güncellenmesi ve kurulması
easysolc modülünün takılması
Web3.py kullanarak sözleşme yayınlama
Sözleşme Derlemesi
Bir sağlayıcıya bağlanma
Sözleşme yayınını yürütmek
Sözleşme adresini ve abiyi dosyaya kaydetme
Sözleşme yayınlama komut dosyasını çalıştırma
Sözleşme Yöntemlerini Çağırma
Bir sözleşmenin adresini ve abisini JSON dosyasından okuma
Bir sağlayıcıya bağlanma
Sözleşme Nesnesi Oluşturma
Sözleşme Yöntemlerini Çağırma
Yer mantarı ve Web3.py
Ders özeti

Ders 12. KahinlerAkıllı bir sözleşme dış dünyadan gelen verilere güvenebilir mi?
Blockchain bilgi aracıları olarak Oracle'lar
Veri kaynağı
Kaynaktan gelen verileri temsil eden kod
Blockchain'deki döviz kurunu kaydetmek için Oracle
USDRateOracle Sözleşmesi
Akıllı sözleşmede döviz kurunu güncelleme
Web Soket Sağlayıcısı Kullanma
RateUpdate etkinliği bekleniyor
RateUpdate olayını yönetme
Akıllı sözleşmede veri güncellemesi başlatma
Ders özeti

Kaynak: habr.com

Yorum ekle