Kısa sürede Blockchain konusunda uzmanlaşmak bölüm 2 — PlatoBlockchain Veri Zekasının uygulanması. Dikey Arama. Ai.

Blockchain'de hiçbir zaman uzmanlaşma bölüm 2 - uygulama

Purbaryandi

Bu makale dizisinde, Golang'da basit blockchain uygulamasına dayanan basitleştirilmiş bir kripto para birimini 5 dakikadan kısa sürede oluşturacağız. Bu projeyi yapabilmek için önce golang'ı kurmanız gerekiyor. metin editörü için her şeyi kullanabilirsiniz, burada görsel stüdyo kodunu kullanıyorum.

Kısa sürede Blockchain konusunda uzmanlaşmak bölüm 2 — PlatoBlockchain Veri Zekasının uygulanması. Dikey Arama. Ai.
kaynak: bitdegree

Kurulumu yaptınız mı? Tamam, hadi yapalım!

projeyi oluşturduysanız bir dosya oluşturun main.go. Tamam kodlayalım, ilk önce main.go'dan başlayacağız. “Blockchain”in struct Block kısmıyla başlayalım. Blockchain'de değerli bilgilerin saklanmasını engeller. Örneğin Bitcoin, herhangi bir kripto para biriminin özü olan mağaza işlemlerini engeller. Bunun yanı sıra bir blok, sürümü, mevcut zaman damgası ve önceki bloğun karması gibi bazı teknik bilgileri de içerir. Bu makalede bloğu blockchain veya Bitcoin spesifikasyonlarında açıklandığı gibi uygulamayacağız, bunun yerine yalnızca önemli bilgiler içeren basitleştirilmiş bir versiyonunu kullanacağız. İşte neye benzediği. burada bir yapı bloğumuz var:

type Blok yapısı {

Timestamp geçerli zaman damgasıdır (blok oluşturulduğunda), transactions blokta yer alan gerçek değerli bilgilerdir, prevhas önceki bloğun karmasını saklar ve Hash bloğun karmasıdır. Bitcoin spesifikasyonunda Timestamp, prevhash, ve Hash ayrı bir veri yapısı oluşturan blok başlıkları ve işlemler (transaction bizim durumumuzda) ayrı bir veri yapısıdır. Basitlik olsun diye bunları burada karıştırıyoruz.

Peki karmaları nasıl hesaplayacağız? Hash'lerin hesaplanma şekli blockchain'in çok önemli bir özelliğidir ve blockchain'i güvenli kılan da bu özelliktir. Mesele şu ki hash hesaplamak hesaplama açısından zor bir işlemdir, hızlı bilgisayarlarda bile biraz zaman alır (insanların Bitcoin madenciliği yapmak için güçlü GPU'lar satın almalarının nedeni budur). Bu, yeni blokların eklenmesini zorlaştıran ve eklendikten sonra değiştirilmesini engelleyen kasıtlı bir mimari tasarımdır. Bu mekanizmayı gelecekteki bir makalede tartışacağız ve uygulayacağız.

Şimdilik sadece blok alanlarını alacağız, bunları birleştireceğiz ve birleştirilmiş kombinasyon üzerinde bir SHA-256 hash'i hesaplayacağız. Hadi bunu şurada yapalım Newhash yöntem:

func NewHash(time time.Time, transactions []string, prevhash []byte) []byte {

Daha sonra, bir Golang kuralını takip ederek blok oluşturmayı ve bitirmeyi basitleştirecek bir fonksiyon uygulayacağız:

func Bloklar(işlemler []string, prevhash []byte) *Block {

bir yazdırma fonksiyonu oluşturmaya devam ediyoruz. Yazdırma işlevi, bir işlemi gerçekleştiren her bloğun içeriğini yazdırmak için kullanışlıdır. işte kod:

func Yazdır(blok *Blok) {

Ve yazdırma işlemi için işlev işlemi:

func İşlem(blok *Blok) {

Gerekli tüm işlevler tamamlandıktan sonra onu ana işlevde kullanacağız:

func ana() {

tamam, yazmayı bitirdiğimiz tüm kodlar. terminalde go run main.go yazarak çalıştıralım. Çıktı :

Sonuç

Çok basit bir blockchain prototipi oluşturduk: bu sadece bir dizi bloktan oluşuyor ve her bloğun bir öncekiyle bağlantısı var. Ancak gerçek blockchain çok daha karmaşıktır. Bizim blok zincirimizde yeni bloklar eklemek kolay ve hızlıdır, ancak gerçek blok zincirde yeni bloklar eklemek biraz çalışma gerektirir: blok ekleme izni almadan önce bazı ağır hesaplamalar yapmak gerekir (bu mekanizmaya İş Kanıtı denir). Ayrıca blockchain, tek bir karar vericinin bulunmadığı dağıtılmış bir veritabanıdır. Bu nedenle, yeni bir bloğun ağın diğer katılımcıları tarafından onaylanması ve onaylanması gerekir (bu mekanizmaya fikir birliği denir). Ve henüz blockchain'imizde hiçbir işlem yok!

Source: https://medium.com/@purbaryandi/mastering-blockchain-in-no-time-part-2-implementation-433dc7967fe8?source=rss——cryptocurrency-5

Zaman Damgası:

Den fazla Orta