Blockchain Programlama: Solidity. Akıllı Sözleşmeleri Programlama

Gelişiminin 10 yılı aşkın bir süredir, blok zinciri, madeni paralar aracılığıyla Web 3.0 ve merkezi olmayan uygulamaların temeline kadar basit bir değer aktarma sisteminden önemli ölçüde genişledi. Bu, esas olarak Ethereum’un ERC20 standardını ve akıllı sözleşmelerini tanıtmasının ardından yeni projelerin patlak vermesinden kaynaklandı..

Akıllı sözleşmeler, katılımcılar için şeffaflık sağlamak amacıyla ICO’lar için kaynak yaratmada yaygın olarak kullanıldı. Bu onları ünlü yaptı, ancak tek uygulama bu değildi. Dağıtık özerk organizasyonlar yaratmada, hakları yönetmede ve yönetişim yürütmede akıllı sözleşmeler için başarılı durumlar vardır. Onlara olan ihtiyaç o kadar açık ki, Bitcoin için akıllı sözleşmeler yaratma girişimleri bile var..

Bunu blockchain mühendisliğinde yapmak istiyorsanız, akıllı sözleşmelerin nasıl çalıştığını ve nasıl inşa edileceğini bilmeniz gerekir. Neyse ki Ethereum, kendi programlama dili olan Solidity de dahil olmak üzere gerekli olan her şeyi sağlıyor. Bu dil, Ethereum Virtual Machine ile çalışmak için özel olarak oluşturuldu. Anlaması oldukça kolay, ancak aklınızda bulundurmanız gereken bazı ayırt edici özellikler var. Bugün akıllı sözleşmeler dünyasının derinliklerine dalacağız ve bazılarını kodlayacağız. Hadi gidelim!

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

Her şeyden önce, Ethereum’un blok zincirinin temellerini ve nasıl çalıştığını anlamamız gerekiyor. Bu, kodlama merkezi uygulamalar ve merkezi olmayan uygulamalar arasındaki farkı anlamamıza yardımcı olacaktır (temelde akıllı sözleşmelerdir).

Ethereum’un özünde sanal bir makine var. Eski oyunları bir emülatörde başlatırken veya yerel olmayan işletim sisteminde işletim sistemine özgü bazı yazılımları çalıştırırken muhtemelen onlarla daha önce karşılaşmışsınızdır. Basit bir ifadeyle, sanal makine, orijinal makinenin donanımını kullanan bir bilgisayarın içindeki bilgisayardır. Ethereum söz konusu olduğunda EVM, ağa bağlı bilgisayarların kaynaklarını (düğümler) kullanır. Diğer herhangi bir VM gibi, Ethereum’un da kendi RAM ve ROM’u vardır ve bunlar üzerinde çalışan programlar tarafından kullanılır. Tek önemli istisna, EVM’nin ROM belleğinin blockchain olmasıdır, bu nedenle bir şey bir kez oraya ulaştığında, kaldırılamaz..

Bu neden önemli? Akıllı sözleşmeler oluşturmak inanılmaz bir sorumluluktur çünkü bir güvenlik açığı olması durumunda kullanıcıların parası çalınabilir veya kaybolabilir. Merkezi bir sunucuda kodu değiştirebilir veya tamamen değiştirebilirsiniz, ancak bunu merkezi olmayan bir sanal makinede yapamazsınız. Ek olarak, akıllı bir sözleşmeyle gerçekleştirilen her eylem, ağa ücret ödemeyi gerektirir. Neden? Çünkü EVM, belirli bir görevi işlemek zorundadır ve bunu yalnızca bazı düğümlerin işlem gücünü kullanarak yapabilir. Ücretlere Gaz denir ve Bitcoin’in Satoshi’sine benzer şekilde Gwei cinsinden ödenir..

Akıllı sözleşme nasıl çalışır??

Daha önce Ethereum kullandıysanız, ağda en az bir kez bir cüzdan oluşturmuşsunuzdur. Cüzdanınız temelde bir adresle temsil edilen bir hesaptır. Akıllı sözleşme de bir hesaptır, ancak normal bir hesaptan farklıdır.

Bir cüzdan oluşturduğunuzda, onu mevcut ağlardan herhangi birine bağlayabilirsiniz ve değişecek tek şey bakiyenizdir. Bunun nedeni, kullanıcı adreslerinin herhangi bir ağda dahili olmaması – paralel olarak var olmalarıdır. Öte yandan, bir akıllı sözleşmenin bir örneği belirli bir blok zincirine dahil edilir ve başka bir zincirde görüntülenemez. Ana Ağ üzerinde test ettikten sonra bir sözleşme başlatabilmek için, diyelim ki Rinkeby, yaratıcısının sözleşmenin yeni bir örneğini dağıtması gerekecek. Bu, kaynak kodunun bir kez daha derlenmesini gerektirecektir. Bir sözleşme oluşturucu, ağ ile etkileşim için Gaz ödemek için yeterli ETH’ye sahip oldukları sürece, kodun istediği kadar örneğini oluşturabilir..

Tıpkı merkezi bir uygulama gibi, akıllı bir sözleşmenin de kaynaklarını depolamak için ayrılmış bir yeri ve kod için bir yer tutucusu vardır (bunu internetten indireceğiniz bir web sayfası olarak düşünün, bir.html dosyası ve resim ve diğer bazı klasörler olacaktır. şey). Bir sözleşmenin bakiyesinde ne kadar ETH olduğuna dair bir gösterge de var; bu, bağış toplama, irade vb. gibi çeşitli kullanım durumları için çok önemlidir. Tam şematik aşağıdaki resimde sunulmuştur..

Ethereum EVM & amp; Cüzdan şemasıGörüntü U.Today

Akıllı bir sözleşme nasıl oluşturulur?

Artık Ethereum’un nasıl çalıştığına ve bunun içinde akıllı sözleşmelerin nasıl yürüdüğüne dair ilkeleri bildiğimize göre, kendi kendimize bir tane oluşturabiliriz. Öncelikle uygun ortamı kurmamız gerekecek. Ethereum Foundation tarafından sağlanan Remix IDE ile tarayıcıda kodu yazarak veya bunun için bazı paketlerle birlikte seçtiğiniz bir kodlama uygulamasını indirerek iki rotaya gidebilirsiniz. Bu eğiticinin amacı doğrultusunda size hem Remix’i hem de Atom’u (Mac için evrensel bir kodlama uygulaması) göstereceğiz. & Pencereler).

Yapacağımız ilk akıllı kontrat, farklı otomobil modellerinin isimlerini ve beygir güçlerini alacak. Görmek istediğimiz şey, sahip olduğumuz değerler için iki giriş ve iki çıkış alanıdır. Girişleri değiştireceğimiz için, iki tip değişken ayarlamamız gerekiyor: isimler için bir dize ve beygir gücü için bir tamsayı.

Sözleşmemizden önce, dil sürümünü belirten bir satır koyacağız çünkü bu, derleyicinin kodu doğru şekilde uyarlamasına yardımcı olacaktır. Kodun derlenmesi gereklidir, çünkü dağıtım aşamasına geldiğimizde, kod, EVM’nin okuyabileceği ve işleyebileceği makine koduna uyarlanacaktır. Ek olarak, tam teşekküllü bir merkezi olmayan uygulama oluşturmada daha fazla kullanılabilecek bir uygulama ikili arabirimi oluşturulacak. Solidity’nin en son sürümünü her zaman resmi web sitesinde kontrol edebilirsiniz. Bunu belirtmek için “pragma solidity” yazın ve “^” işaretinden sonra sürümü yazın.

Sözleşmemize sınırlar koymak için, ona bir ad ve ardından bir parantez verelim. İlk olarak, iki değişken tanımlayacağız: “model” ve “HP”. İlki, bir araba modelini temsil eden bir dize olacak ve ikincisi, belirli bir araba modelinin beygir gücünü temsil eden bir tam sayı olacaktır. Solidity açısından değişkenler hakkında belirtilmesi gereken iki şey var. İlki, üçüncü şahısların onları görüp göremeyeceğini yanlarına “genel” veya “özel” koyarak beyan etmemiz gerektiğidir. İkincisi, Solidity’deki tam sayıların imzalı veya işaretsiz olabileceğidir. İşaretsiz bir tamsayı yalnızca mümkün olabilir ve “uint” olarak yazılır. İşaretli bir tamsayı hem pozitif olabilir & olumsuzdur ve “int” olarak yazılır.

Değişkenlerimizi belirledikten sonra, akıllı sözleşmemizin gerçekleştireceği bazı işlevleri yazma zamanı. Öncelikle modelimiz ve HP için yer tutucular yapmamız gerekiyor. Birkaç set public işlevi kullanacağız ve değişkenlerimizi bunlara ekleyeceğiz. İkinci olarak, bir girdi döndürecek birkaç get public işlevini özetlememiz gerekir. Akıllı sözleşmemizin nasıl göründüğüne bir göz atın.

Araç modeli ve beygir gücü akıllı sözleşmeGörüntü U.Today

Ethereum’da token nasıl yapılır?

2017’nin sonunda kripto piyasasındaki aşırı kazançlar nedeniyle birçok insan blok zinciri endüstrisine çekildi. Bu esas olarak, çok sayıda startup’ın tokenlerini piyasaya sürmek ve yükseltmek için kullandığı yeni ERC20 token standardının ortaya çıkışının sonucuydu. geliştirme için para. Aldatmacadaki düşüşe rağmen, bazı şirketler hala tokenlerini Ethereum’da başlatıyor ve katkıda bulunanlara satış yaparak talebin hala orada olduğunu kanıtlıyor. Her zaman bir başlangıç ​​kurmayı ve token’ınızı başlatmayı hayal ettiyseniz, bu bölüm çok ilginç olacak.

Bir belirteç oluşturmak, hızlı bir şekilde Google’da aranabilen ERC20 standardını kullanmak anlamına gelir. Solidity’nin sürümünü standardın kendisinden önce ayarlamayı unutmayın. İşlemleri Ethereum’un defterine kaydetmesi beklenen bir dizi işlev ve birkaç olay olacak. İşlevler arasında, gerekli olanları bulacaksınız: biri toplam arzı tanımlamak için, biri belirli bir cüzdanın bakiyesini kontrol etmek için ve diğeri cüzdanlar arasında token aktarmak için. Ethereum, diğer cüzdanlardan cüzdanların kontrol edilmesine izin verdiği için, bir hedef cüzdanı tanımlayan ve transfer için bakiyeye izin veren ve bir işlemi onaylayan işlevler de bulacaksınız. Bunu ayrı bir.sol dosyasına kaydedin.

Kendi simgemizi belirleme zamanı. Solidity sürümünün teknik özellikleriyle başlayın. Ardından arayüzü içe aktarın ve “eşittir” aracılığıyla yeni bir akıllı sözleşmeye ekleyin. Daha ileri gidersek:

  • İlk olarak, değişkenlerdeki ondalık sayıları, adı ve sembolü ana hatlarıyla belirtin. Ondalık sayıların sayısı, kullanıcının bir jetonun bölümlerini aktarmasına ve depolamasına izin verir, en yaygın ondalık sayı 18’dir. Bunların tümü kullanıcılar tarafından görülebilir, bu yüzden onları herkese açık hale getiririz..

  • İkincisi, toplam arzı tanımlayacağız. Bu eğitim durumunda, sabit olacak ve bir milyara eşit olacak.

  • Üçüncüsü, herhangi bir üçüncü tarafın bir adresi kontrol etmesi durumunda cüzdanlardaki ve ödeneklerdeki bakiyeleri kontrol etmek için eşlemeler yapalım..

  • Dördüncüsü, oluşturacağımız tüm belirteçleri adresimize verecek olan sözleşmenin dağıtımından (kurucu) sonra yalnızca bir kez çalıştırılacak bir işlev belirleyeceğiz..

  • Beşinci olarak, arayüzde sahip olduğumuz şeyi kısıtlayan bir dizi işlev oluşturmamız gerekiyor. Toplam arz, daha önce ilan ettiğimiz değişkenden alınacaktır. Eşleştirmeye göre teraziler kontrol edilecektir. Aktarıma yalnızca bir kullanıcının bir miktar ETH’si varsa ve gerçekte sahip olduklarından daha az veya ona eşit gönderiyorlarsa izin verilecektir. Başka bir cüzdanı kontrol etmek, önceden tanımlanan eşlemeye göre yapılacak ve izin verilen miktar için kontrol edilecektir. Aşağıda aldığımız kodu kontrol edin.

UTD ERC20 belirteciGörüntü U.Today

Akıllı sözleşme nasıl başlatılır?

Artık Solidity’de basit akıllı sözleşmelerin nasıl kodlanacağını biliyorsunuz. Ethereum ağında nasıl başlatılabileceklerini anlamaya çalışalım. İlk önce kodu derlememiz gerekiyor. Bu amaçla, Remix’in entegre derleyicisini kullanabilir veya bunu Truffle çerçevesinin yardımıyla makinenizde yapabilirsiniz. Önce kolay rotaya gidelim.

Başlamadan önce, şu ana kadar yapmadıysanız bir Ethereum hesabı oluşturmanız gerekir. Bunun için Chrome, Opera, Firefox ve Brave tarayıcılarının üzerine kurulabilen Metamask uzantısını kullanmanızı öneririz. Bir cüzdan oluşturduğunuzda, tohum ifadesini kaydettiğinizden emin olun çünkü bu, diğer makinelerden bir cüzdana erişmenin tek yolu olacaktır veya uzantıyı yeniden yüklemeniz gerektiğinde. Metamask’ın avantajı, çeşitli ağlar arasında geçiş yapabilmenizdir. Deneylerimiz için bir test ağı kullanacağımız için bu kullanışlı olacaktır. Uzantıyı açın ve Ropsten ağını seçin. Ardından, musluğa gidin ve biraz ETH isteyin, EVM ile yapılan her işlemin Wei’ye mal olacağını unutmayın..

Remix.ethereum.org’u açın. Oy pusulası için bir kod göreceksiniz – sekmeyi onunla kapatın. Remix, sol dosyaları için özel bir tarayıcıya ve entegre bir derleyiciye sahiptir. Tarayıcının üst kısmında, yeni dosyalar oluşturmaya izin veren bir çarpı simgesi vardır. Bir dosya oluşturalım ve ilk akıllı sözleşmemizi araçlar ve onların beygir gücü ile kopyalayalım. Ekranın sağ tarafında birkaç sekme içeren derleyiciyi göreceksiniz. İlk sekmede, belirttiğiniz Solidity sürümüne karşılık gelen bir derleyici sürümü seçin ve derleme işlemini başlatın. Herhangi bir hata yoksa, size bir “başarı” mesajı sunulur. İkinci sekmeyi seçin ve uygun bir ortam (bizim durumumuzda Web3) belirlemeniz ve adresinizin doğru olup olmadığını kontrol etmeniz gereken bir bölüm göreceksiniz (Metamask’tan gelmelidir). Her şey doğruysa, “dağıt” a basın ve Metamask’tan bir işlemle birlikte bir açılır pencere göreceksiniz. Onaylayın ve işte, akıllı sözleşmeniz ağa dağıtıldı.

Şimdi daha ilginç bir şeye. Kodu yazmak için bilgisayarınızda bir metin düzenleyici kullandıysanız, Node.js kullanarak yerel olarak dağıtabilirsiniz. İlk olarak, resmi web sitesinden indirin veya bir Komut Satırı (Windows) veya Terminal (OSX) aracılığıyla yükleyin. Bizim durumumuzda OSX kullanacağız, ancak süreç benzer.

Node.js yükleniyorGörüntü U.Today

İkinci olarak, Solidity framework Truffle’ı “npm kurulumu” ile kurun.

Truffle'ı KurmakGörüntü U.Today

Üçüncüsü, yeni bir klasör oluşturun ve “init” komutuyla bir depo oluşturun.

Truffle deposu oluşturmaGörüntü U.Today

Dördüncü olarak, HDWalletProvider’ı bu depoya Node.js aracılığıyla da yükleyin.

HDWalletProvider'ı YüklemeGörüntü U.Today

Beşincisi, dosyaları ERC20 arayüzü ve token sözleşmenizi deponuzdaki “sözleşmeler” klasörüne kopyalayın. Altıncı olarak, depo içindeki “Geçişler” klasörünüzde aşağıdaki JavaScript dosyasını oluşturun.

JS dağıtım dosyasıGörüntü U.Today

Yedinci olarak, Truffle yapılandırma dosyanızı değiştirmeniz gerekir. Ancak, bunu yapmadan önce gereken fazladan bir adım vardır. Cüzdanınızın anımsatıcısını (daha önce kaydettiğiniz) ve Ropsten testnet için bir API gireceksiniz. İkincisini almak için Infura’ya gidin ve bir proje kaydedin. Projenin sayfasında kimliğini göreceksiniz. API olarak kullanın.

Truffle yapılandırmasıGörüntü U.Today

Son olarak, akıllı sözleşmenizi başlatmaya hazırsınız. Komut ve işlem şöyle görünüyor. Herhangi bir sorun olması durumunda, bunun yerine size sunulacak.

Yerel olarak dağıtılan akıllı sözleşmeGörüntü U.Today

Akıllı bir sözleşmeyle ne yapabilirsiniz??

İyi iş, ilk iki akıllı kontratı uyguladınız. Şimdi ne olacak? Yeni başlayanlar için, onları doğrulamanız ve yayınlamanız gerekir. Bunları önce Ethereum’un blok kaşiflerinden herhangi birinde bulalım. Kullanacağız Etherscan.

Sözleşmelerinize erişmenin en hızlı yolu, cüzdanınızdaki işlemlerdir. Metamask’a erişin, üç noktaya basın ve hesabınızı Etherscan’da görüntülemenizi sağlayacaktır. Adresinizde artık sözleşme oluşturmak için en az bir işlem var. Bir işleme eriştiğinizde, esasen bir sözleşmenin adresi olan bir hedef adres bulacaksınız. Sözleşmenin sayfasına gittiğinizde birkaç sekme göreceksiniz. “Kod” sekmesine gidin ve doğrulama sayfasına ilerleyin. Buraya tüm ilgili bilgileri girin ve doğrulama sürecini başlatmak için düğmeye basın.

Kod doğrulamaGörüntü U.Today

Oluşturduğumuz ilk akıllı sözleşmeyi doğruladıktan sonra artık onunla etkileşim kurabilirsiniz. “Sözleşme yaz” sekmesine gidin ve belirttiğimiz yer tutucuları göreceksiniz. Etherscan’ı Metamask’a bağlayalım ve Toyota Soarer ve 280 HP girelim. Sayfayı yenileyin ve verileri “Oku” bölümünde göreceksiniz.

Akıllı sözleşme işleriGörüntü U.Today

Özet

Özetle, akıllı sözleşmeler oluşturmak, dışarıdaki her blockchain mühendisi için gerekli bir beceridir. Akıllı sözleşmeleri tanıtan ilk platform Ethereum’du; Vakıf ayrıca topluluğa Solidity adlı özel bir yazı dili sundu. Konseptin yeniliğine ve dilin kendisine rağmen, akıllı sözleşmeler oluşturmanın istisnai bir yanı yoktur. Nesne yönelimli programlama dilleri, özellikle JavaScript ile daha önce deneyimi olan kişiler, gezinirken kendilerini çok rahat hissedeceklerdir..

Akıllı sözleşmeler yalnızca programlardır, ancak her geliştiricinin aklında tutması gereken ayırt edici özelliklere sahiptir. Örneğin, akıllı sözleşmeler merkezi olmayan bir sanal makinenin üzerinde çalıştığı için, verileri değişmez bir şekilde blok zincirine kaydedilir. Bu nedenle, hatalara yer yoktur ve akıllı bir sözleşmeyi Ana Ağa dağıtılmadan önce test etmek çok önemlidir. Akıllı sözleşmenin bir başka özelliği de, her eylemin, EVM’nin işlem gücünü gerektiren işlemler yoluyla yapılmasıdır. Sonuç olarak, akıllı sözleşmeler kullanmak ve onlarla etkileşim kurmak para gerektiriyor.

Bugün Ethereum Main ve test ağları için çalışma ilkelerini açıkladık, size akıllı sözleşmeler oluşturmak için çeşitli araçlar gösterdik ve iki tür sözleşme yapma sürecini özetledik. Ayrıca, ağ üzerinde akıllı sözleşmeler başlatmanın ve onlarla daha fazla etkileşimin farklı yollarını gösterdik. Bu bilgiyle, bir blockchain mühendisi olarak başlamaya ve bunlara dayalı olarak olağanüstü akıllı sözleşmeler ve merkezi olmayan uygulamalar oluşturmaya hazır olacağınıza inanıyoruz. Zevk almak!