[ad_1]
Web3 ile ilgilenen programcılar için iyi haber şu ki, programlama becerileriniz bu yeni paradigmaya kolayca dönüşecektir. Bunun nedeni, blockchain ve onun merkezi olmayan teknoloji modelinin eski paradigmanın yerini almamasıdır; onu büyütüyorlar. Temiz kod, her yerde temiz koddur.
Web3 ve blockchain’e hızlı ama nazik bir giriş yapacağız. Ethereum akıllı sözleşme A akıllı sözleşme bir blok zincirinin dağıtılmış ağında yürütülen bir kod yığınıdır. kullanacağız sağlamlıkEthereum sanal makinesi (EVM) için en popüler üst düzey dil.
Nesne yönelimli programlama konusunda herhangi bir geçmişiniz varsa, Solidity ile evinizde olacaksınız. Benzersiz bir bağlamda var olmasına rağmen, nesne yönelimli bir dildir. Blok zincirinde kodlamanın bazı meraklarına değineceğiz. Unutmayın: kriptografik olarak güvenli, dağıtılmış bir işlem veri deposuna dağıtılan programlar yazıyorsunuz.
Ethereum blok zinciri
En üst düzeyde, blok zinciri uygulamaları iki ana bileşen türünden oluşur: akıllı sözleşme ve merkezi olmayan uygulama (dApp). diyebiliriz ki bir akıllı sözleşme zincir üstü bir kod yığınıdır ve dApp akıllı sözleşmelerle etkileşime giren herhangi bir zincir dışı programdır. Bir anlamda dApp’ler, Web3 akıllı sözleşme arka uçlarının Web2 istemcileridir.
Ethereum blok zincirini geliştirmek için ağa kod dağıtmamız gerekiyor. Bunu yapmak için, kodu içeren bir işlem yayınlayacağız. Kod taşıyan işlemler, yürütülebilir oldukları için ağdaki özel bir mesaj türüdür. Bunun dışında, hesaplar arasında Ether miktarlarını taşıyan işlemler gibi davranırlar. (Eter Ethereum’daki yerel paradır.)
Sözleşmemizi blok zincirine yerleştirmek için ağa tam bir düğümden katılmamız gerekiyor. Birini gerçekten döndürmek yerine, sanallaştırılmış altyapıya erişmemizi sağlayan Alchemy gibi bir hizmet kullanabiliriz. Web3 için IaaS gibi düşünün. yapmanız gerekeceğini unutmayın. ücretsiz bir Simya hesabı için kaydolun.
Goerli test ağını kurun
Artık bir hesabınız olduğuna göre, oynamak için ücretsiz bir Ether kripto para birimi (ETH) alacağız. Aslında, biraz bedava alacağız Ölçek Eter. Ethereum, tam olarak şu anki ihtiyacımız için test ağlarına (test ağlarına) ev sahipliği yapıyor: akıllı sözleşmeler geliştirmek ve bunları test etmek. Mevcut ana test ağının adı Goerli. Eğer gidersen goerlifaucet.comŞekil 1’de gösterilene benzer bir ekran göreceksiniz.
Şekil 1. Goerli musluğu: Ethereum test ağına erişim
Musluk, bir adres için bir alan ve tıklanacak bir düğme sunar. Cüzdan adresimizi oraya koyacağız, daha sonra geliştirdiğimiz sözleşmeye istek göndermek için ücretsiz ETH’mizi kullanacağız. Sözleşmeler denileni gerektirir gaz, çalıştırmak için bir işlem ücreti. Sözleşmeler ayrıca, gaz ücretinin yanı sıra gönderilen bir değerle etkileşime girebilir. değer işlemin. Gaz ve değer her zaman ayrıdır.
Musluğu kullanmak için Ethereum uyumlu bir cüzdana ihtiyacınız olacak. En yaygın olanı, tarayıcı uzantısı olarak çalışan MetaMask’tır. Tarayıcınızda başka bir sekme açın ve ücretsiz MetaMask uzantısını yükleyin.
Kripto cüzdanınızı kurun
Daha önce hiç kripto cüzdan kullanmadıysanız, diğer uygulamalardan biraz farklıdır. Akılda tutulması gereken en kritik şey, cüzdanınız için bir tohum cümlesi kuracağınızdır. Bu, şifrenizi unutmak veya cihazınızı kaybetmek gibi bir felaket durumunda cüzdanınızı kurtarmanıza izin verecek bir şifreleme anahtarıdır. Tohum cümlesi güvende tutulmalıdır, çünkü ona sahip olan herkes cüzdanınızdaki fonlara erişebilir.
Bir MetaMask cüzdanı kurduktan sonra, Şekil 2’de gösterildiği gibi anahtarı değiştirerek test ağlarını etkinleştirin.
Şekil 2. MetaMask’te test ağlarını etkinleştirin
Artık test ağlarını etkinleştirdiğinize göre, web tarayıcınızın sağ üst köşesindeki uzantıyı açabilir (benimki Chrome’dur) ve açılır listeden Goerli ağını seçebilirsiniz.
Ayrıca ağ seçicinin hemen altında “Hesap1 0x744…” gibi bir şey yazan bir düğme olmalıdır. Bu, cüzdanınızın adresidir. Düğmeye tıklayın ve adresi panonuza kopyalayın.
Şimdi Goerli musluk sayfasına dönün ve cüzdan adresinizi uygun alana girin, ardından Bana ETH gönder buton. Doğrulayıcıların işlemi kabul etmesi için birkaç dakika bekledikten sonra MetaMask’i açabilir ve cüzdanınızda .1 ETH’yi görebilirsiniz.
Ardından Simya sekmesine geri dönün ve ekranın üst kısmındaki Uygulamalar açılır listesine tıklayın, ardından Uygulama Oluştur. Size sunulan formda uygulamaya bir isim verin (benimki “InfoWorld Intro”). Zinciri Ethereum olarak bırakın ve ağ olarak Goerli’yi seçin. Vurmak Uygulama Oluştur.
Uygulama şimdi Simya panosunda görünecek. adlı uygulama listesindeki alana dikkat edin. API Anahtarı. Bu, uygulamanın ağdaki adresidir. Bunu tıklarsanız, birkaç dakika içinde ihtiyacınız olacak adresi alabilirsiniz.
Hardhat takımını ayarlayın
Baret Ethereum uygulamaları geliştirmek için bir araç takımıdır. Hardhat ile yeni bir projeye başlamak için komut satırınızda boş bir klasöre gidin ve şunu yazın npx hardhat
. Bu, etkileşimli bir konsolu başlatır. Buradaki demomuz için seçin Temel bir örnek proje oluşturun. Yeni bir proje yapısı dağıtacak tüm varsayılanları kabul edebilirsiniz.
Bu bir npm
gibi tanıdık unsurlarla proje package.json
ve bir /node_modules
dizin. Diğer üç dizin vardır:
/contracts
gerçek akıllı sözleşme kodunu tutar./scripts
akıllı sözleşmelerin dağıtılmasına yardımcı olacak komut dosyaları içerir./test
akıllı sözleşmeleri test etmek içindir.
Son olarak, orada hardhat.config.js
eklentileri ve görevleri yapılandırmak için bir JavaScript dosyası olan dosya.
Hardhat’ın pek çok yeteneği var, ancak burada atlayacağız ve Liste 1’de gösterilen sözleşmeyi dağıtacağız.
Liste 1. Blok zinciri için Solidity dilinde basit bir sözleşme
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract Greeter {
string private greeting;
constructor(string memory _greeting) {
console.log("Deploying a Greeter with greeting:", _greeting);
greeting = _greeting;
}
function greet() public view returns (string memory) {
return greeting;
}
function setGreeting(string memory _greeting) public {
console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
greeting = _greeting;
}
}
Liste 1, duruma kaydedilen ve greet()
yöntem. Sözleşme ilk dağıtıldığında yalnızca bir kez yürütülen bir yapıcı yöntemi vardır.
dotenv ile ortam değişkenlerini işleme
Ortam değişkenleriyle başa çıkmak için ekleyelim dotenv komutu ile projeye npm install dotenv
.
Şimdi, bir .env
Dosya ve Liste 2’de gösterildiği gibi ona iki giriş ekleyin.
Liste 2. Bir .env dosyasına iki giriş ekleyin
ALCHEMY_URL = “<URL-FROM-ALCHEMY-PROJECT>”
METAMASK_KEY = “<YOUR-PRIVATE-KEY>”
Dağıtım komut dosyasını yapılandırmak için bu iki alanı kullanacağız. bu ALCHEMY_URL
alanı, daha önce belirttiğimiz Simya panosundan gelir. bu METAMASK_KEY
cüzdan için özel anahtar olacak (bu yüzden bir test cüzdanı kullanmayı önerdim). Özel anahtarı şuraya giderek alabilirsiniz: MetaMask -> Hesap Ayrıntıları -> Özel anahtarları dışa aktar ve cüzdan şifrenizi girerek.
bu ALCHEMY_URL
alan, sözleşmenin uygulanacağı yer olacaktır; METAMASK_KEY
Olacak itibaren adres ve sözleşmeyi dağıtmak için gaz sağlayın.
Hardhat yapılandırmasını güncelleyin
Sonra, güncelleyeceğiz hardhat.config.js
, Liste 3’te görüldüğü gibi Liste 3’teki kodun amacı, az önce tanımladığımız ortam değişkenlerini Hardhat yapılandırmasına uygulamaktır. Bu kod ayrıca Hardhat’a komut dosyalarını çalıştırırken kullanılacak varsayılan ağın testnet Goerli olduğunu söyler. (Görev tanımını yok sayabilirsiniz.)
Liste 3. hardhat .config.js güncellemesi
require("@nomiclabs/hardhat-waffle");
require("dotenv").config();
const { ALCHEMY_URL, METAMASK_KEY } = process.env;
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
const accounts = await hre.ethers.getSigners();
for (const account of accounts) {
console.log(account.address);
}
});
/**
* @type import('hardhat/config').HardhatUserConfig
*/
module.exports = {
solidity: "0.8.4",
defaultNetwork: "goerli",
networks: {
hardhat: {},
goerli: {
url: ALCHEMY_URL,
accounts: [`0x${METAMASK_KEY}`]
}
}
};
Sözleşmeyi dağıtın
Şimdi, yazarak sözleşmeyi dağıtabilirsiniz. npx hardhat run scripts/sample-script.js
. Karşılama sözleşmesinin dağıtıldığına dair bir onay almalısınız. Bu onay size sözleşmenin dağıtıldığı adresi verecektir. MetaMask cüzdanınızı kontrol ederseniz, Goerli bakiyesinin .001 ETH civarında borçlandırıldığını görmelisiniz. Simya gösterge tablonuz projedeki etkinliği de yansıtacaktır.
Yeni komut dosyasına karşı bir istek çalıştırmaya geçmeden önce, sözleşmeyi blok zincirine iletmekle ilgilenen dağıtım komut dosyasına bakalım. Dağıtım komut dosyası Liste 4’te gösterilmektedir.
Liste 4. Dağıtım betiği: /scripts/sample-script.js
const hre = require("hardhat");
async function main() {
const Greeter = await hre.ethers.getContractFactory("Greeter");
const greeter = await Greeter.deploy("Hello, InfoWorld!");
await greeter.deployed();
console.log("Greeter deployed to:", greeter.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Liste 4 şunları kullanır: ethers.js Sözleşmeleri dağıtmayı basitleştirmek için Hardhat şablonunun yüklediği proje. Senaryo, bizim için otomatik olarak derleyen Hardhat’tan karşılama sözleşmesini adıyla (“Greeter”) alır. Daha sonra yapıcı için argümanla birlikte dağıtılır (“Merhaba, InfoWorld!”).
Komut dosyası, hangi ağa dağıtılacağını bilmek için Hardhat yapılandırmasına dayanır. Hardhat, sözleşmelerin nereden yükleneceğini otomatik olarak bilir.
Hardhat konsolundan etkileşim
Hardhat’ın REPL kabuğundaki canlı sözleşmeyle etkileşime geçelim. Tip: npx hardhat console
. Bu bizi daha önce tanımladığımız varsayılan ağ ve özel anahtarlarla konsola ekleyecektir. Şimdi Liste 5’teki komutları girin.
Liste 5. Goerli sözleşmesiyle etkileşim kurmak için Hardhat konsolunu kullanma
> npx hardhat console
METAMASK_KEY: ***
Welcome to Node.js v16.14.2.
Press Ctrl+C to abort current expression, Ctrl+D to exit the REPL
> const Greeter = await ethers.getContractFactory("Greeter");
undefined
> const greeter = await Greeter.attach("0x8cAFa7a0F3cDd8Aeb69F3e73eDE1D65Df89b17Ba")
undefined
> await greeter.greet();
'Hello, InfoWorld!'
greeter.setGreeting("Hello, FooBar!");
'Hello, FooBar!'
Liste 5, aşağıda tanımlanan sözleşmeyi kullanarak sözleşmeyle nasıl etkileşimde bulunacağınızı gösterir. sample-contract.js
. Bu, arabirimi başlatmanıza ve ona karşı uzaktan prosedür çağrıları yapmanıza olanak tanır: greeter.greet()
ve greeter.setGreeting()
.
Kod içinden dahil olmak üzere sözleşmeleri kullanma hakkında daha fazla bilgi için OpenZeppelin kılavuzuna bakın. Akıllı sözleşmeleri dağıtma ve bunlarla etkileşim kurma. İşlem, etkileşimli konsolda gördüğünüz gibidir.
Blok zinciri sözleşmelerinize aşağıdaki gibi tanıdık platformlardan erişen kod yazma becerisine sahip olduğunuzda Java ve JavaScript yarışlara gidiyorsun. Akıllı sözleşmeler oluşturup dağıtabilir ve Web3 ile daha geleneksel Web2 uygulamaları arasındaki farkı kapatabilirsiniz.
Telif Hakkı © 2022 IDG Communications, Inc.
[ad_2]
Kaynak : https://www.infoworld.com/article/3667276/intro-to-ethereum-smart-contracts.html#tk.rss_all