Shardeum — Bagaimana Cara Menerapkan Kontrak Pintar di Shardeum Testnet Menggunakan Hardhat?

Rocket Boys
8 min readJul 21, 2022

--

Apa itu Kontrak Pintar?

Kontrak pintar seperti kontrak biasa dengan aturan kecuali bahwa ini adalah program yang digunakan di seluruh komputer dalam jaringan. Dan, alih-alih ditegakkan oleh badan hukum, itu diberlakukan secara otomatis oleh kode perangkat lunak.

Kontrak pintar disimpan di blockchain yang berjalan ketika kondisi yang telah ditentukan terpenuhi. Mereka biasanya digunakan untuk mengotomatisasi pelaksanaan perjanjian sehingga semua peserta dapat segera memastikan hasilnya, tanpa keterlibatan perantara atau kehilangan waktu.

Mesin Virtual EVM atau Ethereum

Mesin Virtual Ethereum atau EVM adalah sistem yang melacak perubahan pada blockchain secara terdesentralisasi. Itu melacak ‘negara’/versi terbaru dari blockchain. Pengguna dapat menjalankan Mesin Virtual Ethereum di komputer dan menggunakannya untuk membuat program mereka sendiri (kontrak pintar) dan menjadikannya bagian dari ekosistem Ethereum.

EVM bekerja dengan cara yang sama seperti CPU/komputer biasa. Ini mengeksekusi kode tertulis sesuai dengan instruksi yang ditulis menggunakan bahasa pemrograman (dalam hal ini, Solidity, kebanyakan). Kode (byte) yang dieksekusi oleh EVM adalah kontrak pintar Ethereum. EVM adalah virtual CPU/komputer alias software. Itu tidak ada dalam bentuk fisik dan lebih tepatnya dalam bentuk virtual yang memvirtualisasikan dan menyebarkan server klien di perangkat jarak jauh di seluruh dunia. Blockchain membantu mencatat transaksi yang dilakukan di lingkungan secara permanen tanpa perantara apa pun.

Apa Arti Berbasis EVM di Shardeum?

Shardeum adalah platform kontrak pintar yang kompatibel dengan EVM atau berbasis EVM. Ini pada dasarnya berarti pengembang Ethereum, yang bosan dengan biaya gas dan throughput rendah di Ethereum atau jaringan EVM lainnya, dapat memigrasikan kontrak pintar mereka di Shardeum tanpa harus menulis kode dari awal lagi. Hal ini mengingat Shardeum akan memiliki biaya gas yang rendah dan throughput yang tinggi selamanya. Dan ini penting karena ketika Anda membangun dApps (aplikasi terdesentralisasi) di jaringan, hal terakhir yang Anda inginkan adalah pelanggan atau klien Anda mengeluh tentang biaya transaksi yang tinggi atau latensi / kelambatan dalam jaringan untuk menggunakan layanan Anda.

Jaringan Bitcoin dan Ethereum dijalankan pada blockchain open source yang berarti siapa pun dapat mengusulkan perubahan dan menerapkannya dengan konsensus. Nilai jaringan Ethereum pada dasarnya berasal dari arsitektur EVM-nya yang digunakan oleh banyak jaringan dependen dan independen yang menggunakan kode sumber terbuka dan menyesuaikannya agar sesuai dengan kebutuhan mereka. Ini pada gilirannya berarti jaringan tersebut tidak perlu menemukan kembali roda untuk meng-host dan mengaktifkan berbagai produk dan layanan Web 3 sendiri.

Karena jaringan blockchain generasi pertama dan kedua seperti Bitcoin dan Ethereum bergantung pada mekanisme konsensus yang sulit bersama dengan batas data yang diberlakukan sendiri untuk mengamankan jaringan (yang merupakan kebutuhan saat ini sejak krisis keuangan 2008), transaksi diproses dengan kecepatan yang sangat rendah. Saat ini jaringan seperti Visa memproses hingga 10.000 transaksi per detik sementara Ethereum hampir tidak melewati 45 TPS. Shardeum, melalui teknologi inovatifnya, akan sangat skalabel sambil menjaga fitur keamanan dan desentralisasi tetap utuh. Shardeum meluncurkan testnet-nya pada April 2022 dengan mainnet diharapkan pada Q4 tahun 2022. Blog ini akan menunjukkan kepada Anda cara menerapkan kontrak pintar pertama Anda di alphanet Shardeum (disebut Liberty) menggunakan Hardhat yang merupakan lingkungan pengujian/pengembangan yang digunakan oleh pengembang Ethereum.

Terapkan Kontrak Pintar Anda di Liberty Menggunakan Hardhat

Langkah 1: Inisialisasi Proyek Kami

Pertama, kita harus membuat folder untuk proyek kita. Navigasikan ke baris perintah Anda dan ketik perintah berikut

mkdir liberty-hardhat-app

cd liberty-hardhat-app

Sekarang kita berada di dalam folder proyek kita, kita akan menggunakan ‘npm init’ untuk menginisialisasi proyek. Jika Anda belum menginstal npm, unduh dari sini Node

npm init

Koma ini akan membuat file package.json. Tidak masalah bagaimana Anda menjawab pertanyaan instalasi, berikut adalah bagaimana kami melakukannya untuk referensi.

npackage name: (liberty-hardhat-app)

version: (1.0.0)

description:

entry point: (index.js)

test command:

git repository:

keywords:

author:

license: (ISC)

About to write to G:\liberty-hardhat-app\package.json:

{

“name”: “liberty-hardhat-app”,

“version”: “1.0.0”,

“description”: “”,

“main”: “index.js”,

“scripts”: {

“test”: “echo \”Error: no test specified\” && exit 1"

},

“author”: “”,

“license”: “ISC”

}

Is this OK? (yes) yes

Seperti disebutkan, Hardhat adalah lingkungan pengembangan untuk mengkompilasi, menyebarkan, menguji, dan men-debug perangkat lunak berbasis Ethereum Anda. Ini membantu pengembang saat membangun kontrak pintar dan dApps secara lokal sebelum menyebarkan ke rantai langsung.

Langkah 2: Download Hardhat

Di dalam liberty-hardhat-app menjalankan proyek:

npm install — save-dev hardhat

Langkah 3: Buat Proyek Hardhat

Di dalam liberty-hardhat-app menjalankan proyek:

npx hardhat

Anda kemudian akan melihat pesan selamat datang dan opsi untuk memilih apa yang ingin Anda lakukan. Pilih “create an empty hardhat.config.js”.

G:\liberty-hardhat-app>npx hardhat

888 888 888 888 888

888 888 888 888 888

888 888 888 888 888

8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888

888 888 “88b 888P” d88" 888 888 “88b “88b 888

888 888 .d888888 888 888 888 888 888 .d888888 888

888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.

888 888 “Y888888 888 “Y88888 888 888 “Y888888 “Y888

Welcome to Hardhat v2.9.5

? What do you want to do? …

> Create a basic sample project

Create an advanced sample project

Create an advanced sample project that uses TypeScript

Create an empty hardhat.config.js

Quit

Ini akan menghasilkan file hardhat.config.js untuk kita, di mana kita akan menentukan semua tentang pengaturan untuk proyek kita.

Langkah 4: Folder Proyek

Untuk menjaga proyek kami tetap teratur, Hardhat membuat dua folder baru. Arahkan ke direktori root liberty-hardhat-app Anda

  • contract/ adalah tempat kami akan menyimpan file kode kontrak pintar hello world kami
  • scripts/ adalah tempat kita akan menyimpan skrip untuk disebarkan dan berinteraksi dengan kontrak kita

Langkah 5: Tulis Kontrak Kami

Buka proyek liberty-hardhat-app di editor favorit Anda. Kontrak pintar sebagian besar ditulis dalam bahasa yang disebut Solidity yang akan kita gunakan untuk menulis kontrak pintar Disperse.sol kita.

1. Arahkan ke folder “contracts” dan buat file baru bernama Disperse.sol

2. Di bawah ini adalah contoh Disperse smart contract dari disperse.shardeum.us yang akan kita gunakan untuk tutorial ini. Salin dan tempel konten di bawah ini ke dalam file Disperse.sol Anda .

//SPDX-License-Identifier: Unlicense

pragma solidity ^0.8.0;

import “hardhat/console.sol”;

contract Disperse {

function disperseShardeum(address[] memory recipients, uint256[] memory values)

external

payable

{

for (uint256 i = 0; i < recipients.length; i++)

payable(recipients[i]).transfer(values[i]);

uint256 balance = address(this).balance;

// Refund remaining amount to msg.sender

if (balance > 0) payable(msg.sender).transfer(balance);

}

}

Ini adalah kontrak pintar super sederhana yang menyebarkan token Shardeum ke array alamat dengan nilai dengan memanggil disperseShardeum

Sekarang setelah kita membuat kontrak pintar, kita perlu menerapkan kontrak pintar ini ke shardeum liberty alphanet

Langkah 6: Tambahkan Jaringan Shardeum ke Metamask/Claim Token

MetaMask memungkinkan pengguna untuk menyimpan dan mengelola kunci akun, menyiarkan transaksi, mengirim dan menerima cryptocurrency dan token berbasis Ethereum, dan terhubung dengan aman ke aplikasi terdesentralisasi melalui browser web yang kompatibel atau browser bawaan aplikasi seluler. Klik di sini untuk menginstal ekstensi MetaMask di browser Anda.

Dan ikuti instruksi ini untuk menambahkan Shardeum ke dompet MetaMask dan mengklaim uji 100 token $SHM dari faucet Liberty (alphanet).

Langkah 7: Hubungkan Metamask ke Proyek Anda

Kami telah membuat dompet Metamask dan menulis kontrak pintar kami, sekarang saatnya untuk menghubungkan keduanya.

Setiap transaksi yang dikirim dari dompet virtual Anda memerlukan tanda tangan menggunakan kunci pribadi unik Anda. Untuk mengaktifkan program kami dengan izin ini, kami dapat dengan aman menyimpan kunci pribadi kami dalam file lingkungan.

Pertama, instal paket dotenv di direktori proyek Anda:

npm install dotenv — save

.env

- Your environment file must be named .env or it won’t be recognized as an environment file. Do not name it process.env or .env-custom or anything else.

.env Anda akan terlihat seperti ini:

SHARDEUM_RPC=https://liberty10.shardeum.org/

PRIVATE_KEY= Your_Metamask_Private_Key

Untuk menghubungkannya ke kode kita, kita akan mereferensikan variabel-variabel ini dalam file hardhat.config.js kita

Langkah 8: Instal Ether.js

Ethers.js adalah pustaka yang memudahkan untuk berinteraksi dan membuat permintaan ke Ethereum dengan membungkus metode JSON-RPC standar dengan metode yang lebih ramah pengguna.

Hardhat membuatnya sangat mudah untuk mengintegrasikan Plugin untuk alat tambahan dan fungsionalitas yang diperluas. Kami akan memanfaatkan plugin Ethers untuk penyebaran kontrak (Ethers.js memiliki beberapa metode penyebaran kontrak super bersih).

Di direktori proyek Anda:

npm install — save-dev @nomiclabs/hardhat-ethers “ethers@⁵.0.0”

Kita juga akan membutuhkan eter di hardhat.config kita.js di langkah berikutnya.

Langkah 9: Perbarui hardhat.config.js

Sekarang kita telah menambahkan beberapa dependensi dan plugin sejauh ini, kita perlu memperbarui hardhat.config.js sehingga proyek kita tahu tentang semuanya.

Perbarui hardhat.config Anda.js agar terlihat seperti ini:

require(“@nomiclabs/hardhat-ethers”);

require(“dotenv”).config();

const SHARDEUM_RPC = process.env.SHARDEUM_RPC;

const privateKey = process.env.PRIVATE_KEY;

/**

* @type import(‘hardhat/config’).HardhatUserConfig

*/

module.exports = {

defaultNetwork: “hardhat”,

solidity: {

version: “0.8.4”,

settings: {

optimizer: {

enabled: true,

runs: 200,

},

},

},

networks: {

shardeum: {

url: SHARDEUM_RPC,

accounts: [privateKey],

chainId: 8080,

}

},

};

Langkah 10: Susun Kontrak Kami

Untuk memastikan semuanya bekerja sejauh ini, mari kita susun kontrak kita. Tugas kompilasi adalah salah satu tugas hardhat bawaan.

Dari baris perintah jalankan:

npx hardhat compile

Jika tidak ada kesalahan, itu akan berhasil dikompilasi

Compiled 3 Solidity files successfully

Langkah 11: Tulis Skrip Penyebaran Kami

Sekarang setelah kontrak kami ditulis dan file konfigurasi kami siap digunakan, saatnya untuk menulis skrip penyebaran kontrak kami.

Arahkan ke folder /scripts dan buat file baru bernama deploy.js, tambahkan konten berikut ke dalamnya:

const hre = require(“hardhat”);

async function main() {

const Disperse = await hre.ethers.getContractFactory(“Disperse”);

const disperse = await Disperse.deploy();

await disperse.deployed();

console.log(`Disperse contract address: ${disperse.address}`);

}

// We recommend this pattern to be able to use async/await everywhere

// and properly handle errors.

main()

.then(() => process.exit(0))

.catch((error) => {

console.error(error);

process.exit(1);

});

Hardhat telah melakukan pekerjaan yang luar biasa untuk menjelaskan apa yang dilakukan setiap baris kode dalam tutorial Kontrak mereka. Kami telah mengadopsi penjelasan mereka di sini.

const Disperse = await hre.ethers.getContractFactory(“Disperse”);

ContractFactory dalam eter.js adalah abstraksi yang digunakan untuk menyebarkan kontrak pintar baru, jadi Disperse di sini adalah pabrik untuk contoh kontrak Disperse kami. Saat menggunakan plugin hardhat-ethers ContractFactory dan Contract, instance terhubung ke penandatangan pertama (pemilik) secara default.

const disperse = await Disperse.deploy();

Memanggil deploy() pada ContractFactory akan memulai penyebaran, dan mengembalikan Janji yang diselesaikan ke objek Kontrak. Ini adalah objek yang memiliki metode untuk setiap fungsi kontrak pintar kita.

Langkah 12: Terapkan Kontrak Kami

Kami akhirnya siap untuk menerapkan kontrak pintar kami! Arahkan ke baris perintah dan jalankan:

npx hardhat run scripts/deploy.js — network shardeum

Anda kemudian akan melihat sesuatu seperti ini:

Disperse contract address: 0x64B1f5069D2965f5e0B4b1d8494f21bD560e69cB

Jika kita pergi ke penjelajah Shardeum dan mencari alamat kontrak kita, kita harus dapat melihat bahwa itu telah berhasil digunakan. Transaksi akan terlihat seperti ini pada gambar di bawah ini dengan URL: https://explorer.liberty10.shardeum.org/account/0x64B1f5069D2965f5e0B4b1d8494f21bD560e69cB

Klik hash Transaksi untuk melihat detail lengkap pembuatan kontrak, itu akan terlihat seperti ini pada gambar di bawah ini dengan URL: https://explorer.liberty10.shardeum.org/transaction/0xc84a25c6d91d7a83d2451de846253cb160e51efbdc393fe7f5f6f5cfcd5f250c

Congrats! Anda baru saja menerapkan kontrak pintar ke Shardeum Liberty Alpha Newtork!!

Untuk mempelajari lebih lanjut tentang shardeum: Kunjungi https://docs.shardeum.org/

Pendapat yang diungkapkan dalam publikasi ini adalah pendapat penulis. Mereka tidak selalu bermaksud untuk mencerminkan pendapat atau pandangan Shardeum Foundation.

Tentang Penulis : Naresh Golla adalah pengembang Web 3.0 front end dengan pengalaman di Vue, React, web3.js, Ethers.js, Hardhat dan Alchemy. Dia adalah salah satu pengembang pertama yang menerapkan kontrak pintar dan proyek NFT di Shardeum. Anda dapat mengikutinya di LinkedIn.

--

--

Rocket Boys
Rocket Boys

Written by Rocket Boys

Just ordinary Crypto 🖤 NFT!

No responses yet