Saturday, December 16, 2017

Membuat Blockchain Kurang dari 1 Jam ?? Bisa !

Hmm.. Pada post saya yang kedua ini saya ingin membagi apa yang saya ketahui tentang Blockchain ( Apa sih Blockchain itu ?? )


BLOCK CHAIN
teknologi pencatatan transaksi terintegrasi dengan teknologi modern, dimana memiliki kode unik yang tak bisa dirubah (kekal) yang merevolusi cara kerja internet, perbankan dan hal-hal lainnya.

Arti Kata '' BLOCK CHAIN
berasal dari Block dan Chain yang masing-masing memiliki makna tersendiri. Chain (rantai) adalah pencatatan berantai yang unik dan merupakan alur dari seluruh tahapan yang konsisten dari sebuah item/transaksi. Block (kotak khusus) adalah sebuah tempat/batasan/area khusus untuk menampung seluruh perubahan item/transaksi yang terjadi selama chain process.

Alasan mengapa tipe struktur data ini bermanfaat untuk hal-hal seperti kriptografi adalah desentralisasi, yang berarti catatan di dalam rantai ini tidak tersimpan di satu lokasi pun, dapat diakses oleh semua orang, dan tidak dapat diubah oleh satu pihak pun.



Pengaplikasian BLOCKCHAIN ?
Meskipun Blockchain paling sering dikaitkan dengan Bitcoin, ternyata ada banyak kegunaan untuk teknologi. Apa aja sih kategori aplikasi yang luas itu ? Cekidot !

  1. Data serta Kontrak yang kredibel / dapat diverifikasi
    Blockchain dapat membuat rekaman data, file, atau kontrak yang dapat diverifikasi. Ini bisa berguna di Industri manapun yang menggunakan Big Data, seperti Industri medis atau pemerintah.
  2. Mata Uang dan Aset Digital
    Blockchain yang membentuk Bitcoin mengirimkan uang secara global ke perorangan dan pedagang. Tapi Blockchains juga bisa menciptakan aset digital seperti saham dan obligasi.

Kita akan menggunakan Ethereum untuk membuat Smart Contract. Ethereum adalah Blockchain dengan bahasa pemrograman Turing-Complete, yang dapat menjalankan aplikasi pemodelan masalah komputasi apapun ( selama runtime dan memori memungkinkan ). Pastikan untuk membiasakan diri dengan persyaratan Ethereal berikut sebelum mulai.

Account adalah unit dasar atau objek di Ethereal. Blockchain melacak keadaan setiap akun. Ada dua jenis akun:
  1. Externally Owned Accounts (EOA)
    yang di kendalikan oleh manusia
  2. Contract Accounts
    yang dikendalikan oleh kode kontrak internal mereka dan dapat diaktifkan oleh Akun Eksternal.
"Smart Contract" atau "Decentralized Application (DApp)
ditentukan oleh kode dalam rekening kontrak yang akan diaktifkan saat EOA mengirimkan transaksi ke Rekening Kontrak. Rekening Kontrak dipicu oleh EOA eksternal untuk menghasilkan jawaban yang dapat disepakati oleh semua node yang melihatnya.'

Setiap akun berisi paling banyak empat landasan bidang:
  1. Nonce (sebuah counter digunakan untuk memastikan setiap transaksi hanya terjadi satu kali)
  2. Ether Balance
  3. Contract Code
  4. Storage
Transaksi adalah paket data yang ditandatangani yang menyimpan pesan yang dikirim dari satu akun ke akun lainnya. Ini berisi bidang data berikut:
  1. Recipient
  2. Signature
  3. Amount of Ether transferred
  4. Data
Ether adalah Etherium's Crptocurrency (ETH / USD = ~ $ 50, sampai hari ini) yang dipertukarkan sebagai biaya setiap kali proses transaksi di Ethereal.


Untuk mengurangi risiko transaksi berbahaya, seperti serangan Distributed Denial of Service (DDoS), Ethereum mengenakan biaya untuk setiap transaksi yang dilakukan melalui transaksi tersebut.

Jadi siapa yang mengumpulkan biaya ini? Ada node yang disebut penambang yang mengumpulkan biaya untuk memverifikasi dan melaksanakan semua transaksi. Kelompok miners melakukan transaksi ke blok yang kemudian dapat ditambahkan ke blockchain.

Sekarang setelah Anda memahami dasar bagaimana Etherium bekerja, saatnya untuk memulai.

Kita memerlukan Linux ( beberapa jenis OS Linux ) atau MacOS ( Menggunakan HomeBrew ) atau Windows 10 ( dengan menggunakan terminal dan binary ). Cara lengkap CLI dan teknik penginstallan dapat ditemukan disini

Membuat BLOCKCHAIN

Install Geth

Pertama Anda perlu menginstal Ethereal dari PPA. Di terminal Anda, jalankan command yang berikut ini:
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install -y ethereum


Sekarang Anda bisa membuat Genesis Block dengan membuat direktori baru dan menulis ke file json

cd
mkdir eth-new
cd eth-new
nano genesis.json

Selanjutnya, paste kode berikut ini ke dalam file json untuk membuat Genesis Block :

{
    "nonce": "0x0000000000000042",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "difficulty": "0x4000",
    "alloc": {},
    "coinbase": "0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "Custem Ethereum Genesis Block",
    "gasLimit": "0xffffffff"
}

Simpan file blok genesis baru ini dengan Ctrl + X, Y, Enter.


Creating Blockchain

Berikut ini adalah pembuatan Blockchain, dengan perintah maxpeers diatur ke 0 untuk menonaktifkan jaringan.
mkdir eth-data
geth --datadir eth-new genesis.json init eth-new/genesis.json --networkid 123 --nodiscover --maxpeers 0 console

Di konsol geth, ketikkan yang berikut untuk membuat akun baru dan membuat password baru dengan mengetikkan apa pun yang Anda inginkan. Anda harus mengetikkan password baru dua kali.

personal.newAccount()

Output setelah ini harus berupa serangkaian huruf dan angka - alamat akun Anda. Simpan alamat ini di suatu tempat dan keluar dengan mengetik "exit" dan tekan Enter.


Mengirim Ether ke Akun Anda

Anda perlu membuka kembali file Genesis Block. Ketik yang berikut ini:
nano genesis.json

Di dalam bracket "alloc", tempelkan alamat akun yang telah Anda simpan tadi. Anda harus terus maju dan memberi diri Anda keseimbangan Ether juga. Jumlah yang ditunjukkan di samping "balance" di bawah sama dengan 10 Ether.

{
    "nonce": "0x0000000000000042",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "difficulty": "0x4000",
    "alloc": {
    "0x09c7b615a1c5b3016ff6b521723364aa9382ec6e": {
        "balance": "10000000000000000000"
     }
    },
    "coinbase": "0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "Custem Ethereum Genesis Block",
    "gasLimit": "0xffffffff"
}

Setelah selesai updating, simpan file dengan Ctrl + X, Y, Enter.


Menghapus Blockchain Lama dan CreateYang Baru

Jalankan perintah ini untuk menghapus data blokir lama dan restart geth:
cd eth-data
rm -rf chaindata dapp history nodekey
cd ..
geth --datadir eth-new genesis.json --networkid 123 --nodiscover --maxpeers 0 console

Di konsol geth, jalankan command berikut:

> primary = eth.accounts[0]
> web3.fromWei(eth.getBalance(primary), "ether")

Alamat anda akan muncul, begitu juga dengan saldo anda 10 Ether.



Start Mining

Untuk memiliki working Blockchain, Anda perlu membuat penambang. Untuk melakukan ini, keluar dari konsol geth dengan mengetik "exit" dan tekan Enter.

Untuk memulai mining, jalankan command ini:

geth --mine --datadir eth-data --networkid 123 --nodiscover --> maxpeers 0 console 2>>geth.log

Geth sekarang akan mulai. Anda telah membuat penambang yang, seperti yang saya sebutkan sebelumnya, mengumpulkan biaya ether. Ketik perintah di bawah ini untuk memeriksa saldo Anda sekarang:

> primary = eth.accounts[0]
> balance = web3.fromWei(eth.getBalance(primary), "ether")

Anda sekarang seharusnya memiliki lebih banyak Ether daripada sebelumnya.


Installing Solc

Kontrak Ethereal yang Andakerjakan akan ditulis dalam Solidity. Anda harus menginstal kompiler Solc agar bisa menggunakan Solidity. Untuk melakukan ini, buka terminal baru dan ketik yang berikut ini:
bash
sudo add-apt-repository ppa:ethereum/ethereum

Sebuah pesan muncul dengan mengucapkan "Press Enter To Continue." Tekan Enter lalu ketik  perintah yang berikut ini:

sudo apt-get update
sudo apt-get install solc -y
which solc

Ini akan menampilkan jalan ke Solc, yang perlu Anda ingat. Kembali ke jendela Terminal yang menampilkan konsol geth. Jalankan perintah ini, ubah <path> ke jalan yang dikembalikan kepada Anda:

admin.setSolc("<path>")
eth.getCompilers()

Tanggapan terhadap perintah kedua adalah ["Solidity"] yang memberitahu kita bahwa Anda sekarang memiliki Solc dan dapat menggunakan Solidity.


Understanding Greeter Contract

Berikut adalah kode untuk kontrak sederhana dengan menambahkan komentar, diambil dan dimodifikasi dari Kelas Sams. Ini berisi dua jenis kontrak. Yang pertama, sebuah kontrak yang tidak abadi / mortal, menentukan sebuah kontrak yang bisa dihapus / dibunuh oleh orang yang menulisnya dan perlu diumumkan seperti itu, karena kontraknya abadi secara default. Yang kedua adalah Greeter Contract yang akan mencetak sedikit output sapaan.
contract mortal {
    /* Define var owner of the type address*/
    address owner;
    /* this function sets the owner of the contract */
    function mortal() { owner = msg.sender; }
    /* Function to recover fees */
    function kill() { if (msg.sender == owner) selfdestruct(owner); }
}
contract greeter is mortal {
    /* define variable greeting type*/
    string greeting;
    /* this runs when the contract is executed */
    function greeter(string _greeting) public {
        greeting = _greeting;
    }
    /* main*/
    function greet() constant returns (string) {
        return greeting;
    }
}


Unlocking Your Account

Memulai kontrak membutuhkan biaya Ether, jadi Anda perlu membuka kunci akun Anda. Anda bisa melakukan ini dengan mengetikkan yang berikut ini:
primary = eth.accounts[0]
personal.unlockAccount(primary)

dan ketika menginput password anda Begitu Anda melihat output "true", Anda akan tahu bahwa Anda telah berhasil membuka kunci akun Anda.



Compiling Your Contract

Di konsol geth, Copas seluruh kode snippet kontrak Anda dari sebelumnya dalam satu baris tanpa komentarnya:
var greeterSource = 'contract mortal { address owner; function mortal() { owner = msg.sender; } function kill() { if (msg.sender == owner) suicide(owner); } } contract greeter is mortal { string greeting; function greeter(string _greeting) public { greeting = _greeting; } function greet() constant returns (string) { return greeting; } }'

Ini akan kembali "undefined"



Di konsol geth, ketik berikut ini:
> var greeterCompiled = web3.eth.compile.solidity(greeterSource)

Preparing Your Contract For Deployment

Setelah Anda memiliki kontrak tidak abadi / mortal dan Greeter Contract Anda, Anda harus menentukan greeting dan memberi contoh objek akun Anda. Ini akan membutuhkan lebih banyak Ether.
di konsol geth, ketikkan command dibawah ini :
var _greeting = "Hello World!"
var greeterContract = web3.eth.contract(greeterCompiled.greeter.info.abiDefinition);
var greeter = greeterContract.new(_greeting, {from: eth.accounts[0], data: greeterCompiled.greeter.code, gas: 1000000}, function(e, contract){
  if(!e) {
    if(!contract.address) {
      console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");
    } else {
      console.log("Contract mined! Address: " + contract.address);
      console.log(contract);
    }
  }
})

Pesan "Contract Transaction Send" muncul, dan setelah beberapa detik, Anda akan melihat pesan yang keluar "Contract Mined!"



Testing The Contract

Perintah berikut akan mengembalikan alamat yang panjang dan kemudian greeting anda.
eth.getCode(greeter.address)
greeter.greet()

Selamat !! Anda sudah membuat program Blockchain micro pertama Anda !

Demikian postingan kedua saya, saya harap dapat menambah pengetahuan untuk readers !! keep learning keep coding.


Reference :






No comments:

Post a Comment