Konsep Dasar Blockchain

Blockchain adalah teknologi Distributed Ledger yang terdiri dari serangkaian block yang terhubung secara kriptografis dengan algoritma SHA256. Dalam simulator ini setiap block mengandung:

  • Data Transaksi: Informasi yang dicatat (input pengguna)
  • Hash Saat ini: Digital fingerprint unik dihasilkan dari SHA256(block content)
  • Hash Sebelumnya: Tautan kriptografis ke block sebelumnya (basis keamanan rantai)
  • Timestamp: Waktu pencatatan transaksi (terenkripsi UNIX timestamp)

Karakteristik Utama

Immutability ๐Ÿ›ก๏ธ

Mekanisme: Sistem hash berantai dimana:

  • Setiap perubahan data mengubah hash block
  • Hash yang berubah membuat block berikutnya invalid
  • Memerlukan recomputasi seluruh rantai untuk modifikasi

Dalam Simulator: Coba ubah data di block sebelumnya - akan terlihat inconsistency di block berikutnya

Decentralization ๐ŸŒ

Struktur Jaringan:

  • Ledger terdistribusi ke semua node
  • Validasi melalui konsensus (Proof of Work dalam kasus SHA256)
  • Tidak ada otoritas pusat

Implementasi: Meski simulasi single node, konsep dasar menunjukkan:

  • Setiap node memiliki salinan ledger lengkap
  • Validasi mandiri melalui algoritma hash
  • Transparansi penuh semua transaksi

๐Ÿ“Œ Contoh Interaktif

Coba lakukan ini di simulator:

  1. Buat 3 block berturut-turut
  2. Edit data di block ke-2
  3. Perhatikan invalidasi hash di block ke-3
  4. Lihat bagaimana rantai menjadi tidak valid

Smart Contract Simulator

Smart Contract adalah program yang dieksekusi otomatis ketika kondisi tertentu terpenuhi. Contoh implementasi:

Arsitektur Sistem

1. Class Block

					class Block {
						constructor(index, timestamp, data, previousHash) {
							this.index = index;
							this.timestamp = timestamp;
							this.data = data;
							this.previousHash = previousHash;
							this.hash = this.calculateHash();
						}
						
						calculateHash() {
							return CryptoJS.SHA256(
								this.index +
								this.previousHash +
								this.timestamp +
								JSON.stringify(this.data)
							).toString(CryptoJS.enc.Hex);
						}
					}
				

2. Class Blockchain

					class Blockchain {
						constructor() {
							this.chain = [this.createGenesisBlock()];
						}
						
						createGenesisBlock() {
							return new Block(
								0, 
								new Date().toISOString(), 
								{ data: 'Genesis Block' }, 
								'0000000000000000000000000000000000000000000000000000000000000000'
							);
						}
						
						getLatestBlock() {
							return this.chain[this.chain.length - 1];
						}
						
						addBlock(newBlock) {
							if (this.validateNewBlock(newBlock)) {
								this.chain.push(newBlock);
								return true;
							}
							return false;
						}
						
						validateNewBlock(newBlock) {
							const lastBlock = this.getLatestBlock();
							const expectedHash = CryptoJS.SHA256(
								newBlock.index +
								newBlock.previousHash +
								newBlock.timestamp +
								JSON.stringify(newBlock.data)
							).toString(CryptoJS.enc.Hex);
							
							return (
								newBlock.index === lastBlock.index + 1 &&
								newBlock.previousHash === lastBlock.hash &&
								newBlock.hash === expectedHash
							);
						}
						
						isChainValid() {
							for (let i = 1; i < this.chain.length; i++) {
								const current = this.chain[i];
								const previous = this.chain[i - 1];
								
								if (current.hash !== current.calculateHash()) return false;
								if (current.previousHash !== previous.hash) return false;
							}
							return true;
						}
					}
				

Mekanisme Hashing SHA-256

๐Ÿ“š Dekonstruksi SHA-256: Mekanisme & Contoh
  • 1. Output 256-bit (64 Karakter Hexadesimal)

    Setiap input akan menghasilkan "sidik jari digital" unik sepanjang 64 karakter hexadesimal (0-9, a-f).

    Contoh:

    Input: "Hello"
    SHA-256: 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

    ๐Ÿ’ก Analogi: Seperti DNA digital dimana setiap data memiliki pola unik 64 karakter

  • 2. Resistensi Serangan Tabrakan (Collision Resistant)

    Secara matematis hampir mustahil menemukan dua input berbeda dengan hash yang sama.

    Probabilitas tabrakan:

    1 / 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936

    Contoh perbandingan:

    Input 1: "Hello" โ†’ 185f8db32271fe25...
    Input 2: "hello" โ†’ 2cf24dba5fb0a30e...

    ๐Ÿ”’ Keamanan: Butuh 2ยนยฒโธ operasi untuk menemukan collision - setara dengan 10ยฒโท tahun dengan superkomputer modern

  • 3. Efek Avalanche (Efek Domino Kriptografis)

    Perubahan 1 bit pada input mengubah โ‰ˆ50% bit output secara acak.

    Contoh demonstrasi:

    Input 1: "Blockchain"
    Hash: 625da44e4eaf58d53c94ea6736e6bc44ff53760f1ff4ae3259a9e111e1dcd15f

    Input 2: "BlockchaiN" (ubah huruf terakhir)
    Hash: 76d55d77c2a0c19175e5f02fafd9e0e3967c79c6e1b4e1c1446f7268b9d5a2d3

    Perubahan yang terjadi:

    • Karakter berubah: 1 karakter (n โ†’ N)
    • Bit berubah: 1 bit (ASCII 110 โ†’ 78)
    • Bit hash yang berubah: 128 bit (50% dari total 256 bit)

    โšก Implikasi: Membuat reverse engineering input dari hash menjadi tidak mungkin

๐Ÿ” Contoh Implementasi di Blockchain: Block #1234
Data: "Transfer 5 BTC dari A ke B"
Hash sebelumnya: 0000c3af...
Hash baru: 19d6689c... โ† Perubahan 1 karakter di data akan membuat hash baru sama sekali tidak terkait
				// Contoh penggunaan SHA-256
				const hash = CryptoJS.SHA256('Contoh data').toString(CryptoJS.enc.Hex);
				// Hasil: 'a3f4c5d6...' (64 karakter hexadesimal)