Sunday, November 18, 2018

Pengantar Teknologi Blockchain




Blockchain & Cryptocurrency

Paper yang berjudul "Bitcoin: A Peer to Peer Electronic Cash System," pertama kali dibuat oleh Satoshi Nakamoto. Software pertama Bitcoin pun direlease oleh Satoshi Nakamoto. Namun meski demikian sampai sekarang tidak banyak yang tahu siapa dia. Sejak pertama Bitcoin beroperasi, transaksi pertamanya tercatat bertempat di JacksonVille, Florida. Setelahnya semakin banyak transaksi yang melibatkan Bitcoin . Setelah Bitcoin tumbuh subur banyak cryptocurrency baru .

Blockchain adalah sebuah database atau teknologi yang dipakai Bitcoin untuk menyimpan dan mengamankan data transaksi. Bitcoin Blockchain dibangun dalam jaringan yang terdesentralisasi yang berarti semua orang dalam node mempunyai copy dari node lain. Blockchain mencegah data untuk dirubah.

Blockchain menggunakan fungsi hash dalam prosesnya. Hash algoritma adalah sebuah algoritma fungsi hash untuk merubah data berukuran apa saja kedalam bentuk string yang berukuran tetap. 

Blockchain menggunakan metode kriptografi enkripsi dan dekripsi untuk memvalidasi datanya dan memastikan data tersebut asli dan tidak dapat dirubah. Dalam Bitcoin kriptografi ECDSA digunakan untuk membuat Public Key dan membuat Signature transaksi.

Cryptocurrency adalah sebuah aset digital yang menggunakan kriptografi untuk mengamankan transaksinya. Bitcoin adalah cryptocurrency pertama yang sejauh ini paling populer. Ada banyak cryptocurrency lainnya seperti Ether, XRP, ADA, dll.


Sejarah cryptocurrency dan blockchain ?

Krisis finansial  2007–2008 dimulai di Amerika Serikat dan meluas  beberapa bagian dunia. Karenanya banyak orang yang hilangan kepercayaan dengan sistem finansial saat ini.





  • 2008
Oktober 2008 Satoshi Nakamoto memposting sebuah paper berjudul "Bitcoin: A Peer-to-Peer Electronic Cash System" yang tersedia di tautan berikut https://bitcoin.org/bitcoin.pdf. Tulisan tersebut menjelaskan tentang sebuah sistem pembayaran online dari satu pihak ke lainnya tanpa melalui institusi finansial. Sistem ini bertujuan untuk memecahkan masalah dalam double-spending menggunakan jaringan peer-to-peer
  • 2009
Pada Januari 2009 software pertama Bitcoin dirilis, yakni Bitcoin 0.1 oleh Satoshi Nakamoto. Pada saat itu software ini hanyalah support untuk Windows. Pada Desember 2009 giliran Bitcoin 0.2 hadir dan mendukung versi linux. Tersedia pula multi core processors untuk mining. Sejak saat itulah komunitas terkait Blockchain semakin menjamur.
  • 2010
Pada Maret 2010 Bitcoin mulai beroperasi. Menyusul Mei 2010 transaksi pertama Bitcoin dilakukan. Transaksi ini merupakan transaksi pertama di dunia yang menggunakan cryptocurrency. Seorang pria bernama Lazlo Hanyecz yang membeli 2 Pizza di Jacksonville, Florida seharga 10.000 BTC. Pada saat itu harga 1.0 BTC hanyalah 0.01 USD. Oktober 2010 harga Bitcoin naik menjadi 0.125 USD, dan masih naik turun hingga sekarang.
  • 2015 - Sekarang
Sejak pertama kali beroperasi sampai sekarang, harga Bitcoin selalu naik turun. Pada 5 Februari 2018 harga 1.0 BTC mencapai 6.200 USD pada Market. Tahun 2015 Ethereum pun ditilis dengan menyuguhkan fitur baru "Smart Contract." Ethereum diklaim sebagai Blockchain 2.0 atau generasi kedua Blockchain karena fitur tersebut. Setelah Ethereum, muncul semakin banyak Cryptocurrency lain yang memiliki fitur baru. Mereka mengklaim diri mereka sebagai Blockchain 3.0 atau generasi ketiga Blockchain.


Apa Itu Blockchain ?

Kita mungkin telah mendengar banyak tentang bitcoin. Bitcoin adalah cryptocurrency pertama dan paling populer sejauh ini. Cryptocurrency sendiri adalah sebuah aplikasi yang dibuat dalam blockchain.
Di Bitcoin transaksi yang dikonfirmasi akan disimpan di dalam block. Block disatukan/dirantai bersama untuk membentuk sebuah rantai/chain. Miners mempunyai tugas untuk mengumpulkan transaksi, memvalidasi dan menempatkannya kedalam block baru, yang juga termasuk hash dari block terakhir pada chain/rantai.
Miners menyebarkan block baru tersebut ke jaringan blockchain. Block baru tersebut akan menjadi block terakhir pada chain/rantai, dan miners akan mengulang lagi tugas mereka untuk membuat block baru. Berikut adalah contoh pada bitcoin sistem.



Istilah "cryptocurrency" menjadi populer karena mereka yang terlibat membuat lebih banyak item pembayaran seperti bitcoin. Para pelaku bitcoin menyadari bahwa mereka dapat menggantikan transaksi cryptocurrency dengan jenis data lain secara umum. Karena itulah istilah blockchain pun muncul.
Blockchain adalah database yang mengamankan penyimpanan berbagai jenis data dalam jaringan terdesentralisasi. Data pada blockchain disimpan di dalam block. Setiap block mempunyai hash dari block sebelumnya. Dengan hash tersebut akan mudah untuk mendeteksi jika ada perubahan.
Dalam blockchain miners/minters adalah orang yang membuat block baru dengan data yang disimpan di dalamnya. Dalam cryptocurrency bitcoin, data adalah transaksi. Block baru akan ditempatkan di atas block terakhir pada blockchain. Setiap block dalam blockchain (tidak termasuk block pertama, yang disebut genesis block), mempunyai hash block header dari block sebelumnya. Seperti sinkronisasi, semua orang dalam network akan memverifikasi block baru dan memutuskan apakah akan menerima atau menolak block baru tersebut.




Singkatnya, blockchain membuat sistem yang mencegah data untuk dirubah. Jika Anda mengandalkan seseorang untuk melakukan pekerjaan ini, orang itu mungkin tidak akan bekerja seperti harapan Anda. Jadi ide blockchain adalah untuk menggunakan jaringan P2P dan membiarkan semua orang melakukan pekerjaan/hal yang sama dengan cara yang sama. Setiap orang seharusnya mendapat hasil yang diharapkan sama. Sehingga jika seseorang melakukan kecurangan, hasilnya akan berbeda dengan mayoritas. Alhasil mayoritas dalam jaringan tidak akan menerima hasil yang berbeda itu. Itulah bagaimana blockchain mencegah data dirubah. Blockchain dibangun melalui kepercayaan "mayoritas pasti benar."


Apa Itu Algoritma Hash ?

Blockchain menggunakan banyak sekali fungsi hash dalam prosesnya. Hash tersebut membantu Blockchain untuk mendeteksi apakah ada data yang diubah oleh seseorang atau ada data yag berubah karena kesalahan jaringan.  
Algoritma hash adalah algoritma fungsi hash yang memetakan string ukuran apapun ke dalam urutan bit yang berukuran tetap, yang biasanya berupa string heksadesimal. Mapping tersebut sangat sulit untuk dibalikkan kembali.
Contoh sifat Hash :
  • Hasil dari hash selalu mempunyai ukuran yang sama.
  • Dua string yang identik akan menghasilkan hash yang sama.
  • Dua string yang berbeda akan menghasilkan hash yang berbeda.
  • Membuat string yang cocok dengan hash yang diberikan itu sangatlah sulit.
Dengan cara ini kita dapat memeriksa apakah 2 input string adalah sama, sepanjang apapun string itu.
Blockchain saat ini menggunakan metode hash SHA-256. Berikut contohnya :






  • MD5
Message digest berukuran 128 Bits, dan mempunyai 32 karakter.
  • RIPEMD160
Race Integrity Primitives Evaluation Message Digest berukuran 160 bits dan mempunyai 40 karakter.
  • SHA1
Digunakan oleh Torrent system yang berukuran 160 bits.
  • SHA256
Yang digunakan Bitcoin. National Security Agency Standard. Berukuran 256 bits dan mempunyai 64 karakter.
  • SHA3 / Keccak256
Digunakan oleh Ethereum. NSA Standard. Berukuran 256 bits dan mempunyai 64 karakter.


Kriptografi, Public/Private Key dan Address

Kriptografi (atau kriptologi) adalah sebuah studi tentang metode dan teknologi yang menyediakan komunikasi yang aman antar partisipan tanpa membocorkan informasi ke pihak luar. Singkatnya, orang luar yang mungkin saja mendengar komunikasi, tetapi orang itu tidak akan bisa mengekstrak informasi tersebut. Hanya partisipan yang mempunyai otoritas dalam komunikasi tersebut yang dapat mengerti. Itu adalah tujuan dari kriptografi. Kriptografi modern seperti sekarang melibatkan metode enkripsi dan dekripsi.
Blockchain menggunakan kriptografi enkripsi dan dekripsi untuk memvalidasi data dan memastikan data tersebut terbukti asli dan tidak dirubah.
Dalam blockchain public key dan private key memiliki peran sebagai ID dan password untuk menunjukkan kepemilikan akun. Private key adalah sebuah string yang dibuat secara acak dan berfungsi seperti password. Public key adalah string yang dibuat dari private key dengan menerapkan metode kriptografi Elliptic Curve Digital Signature Algorithm (ECDSA).
Tidak mungkin bisa menemukan private key dari public key. Semua yang dienkripsi menggunakan private key akan bisa didekripsi menggunakan public key terkait.



Saat transaksi dibuat dan sebelum dikirim ke dalam jaringan blockchain, kita mendapatkan signature  dari mengenkripsi hasil hash dari transaksi dengan private key. Signature ini dapat didekripsi dengan menggunakan public key yang benar. Semua orang dalam jaringan mengetahui public key tersebut, tetapi hanya yang mengetahui private key yang dapat men-sign transaksi/data itu. Jadi semua orang dapat mendekripsi signature itu, tetapi hanya user dengan private key-lah yang dapat membuat signature itu.
Transaksi dan signature kemudian akan dimasukkan dan disebarkan ke jaringan blockchain. Semua orang di dalam jaringan blockchain bisa memvalidasi transaksi dengan mendekripsi signature menggunakan public key. Validator juga meng-hash transaksi, yang menghasilkan hash value yang baru. Hash value ini seharusnya cocok dengan hash value yang didekripsi jika tidak ada data yang dirubah. Namun jika ada bagian data yang dirubah, maka hasil hash value akan berbeda dan tidak cocok dengan hash value yang didekripsi. Perubahan akan terdeteksi. Hasil yang ditolak akan menjadi transaksi yang invalid. Inilah caranya ap node di blockchain memvalidasi data.
Jadi demi keamanan Anda, simpanlah private key dengan baik dan teliti. Siapapun dapat dengan mudahnya mengambil alih Akun anda jika ia mengetahui private key Anda. Ingat, tidak ada customer service dalam blockchain yang dapat memulihkan akun Anda.


Apa Itu Cryptocurrency ?

Cryptocurrency adalah sebuah aset digital yang menggunakan kriptografi untuk meng-autentikasi dan mengamankan transaksi. Cryptocurrency - Bitcoin adalah produk pertama dalam blockchain. Cryptocurrency menggunakan fungsi hash kriptografi untuk mencegah transaksi dirubah. Sekali transaksi cryptocurency dibuat akan tersimpan secara permanen di dalam blockchain. Tiada seorangpun yang bisa mengubahnya. Fungsi transaksi cryptocurrency seperti Bank, tetapi lebih baik dalam hal keamanan. Bank tetap memerlukan manusia untuk mengontrol dan terkadang kesalahan manusia masih terjadi. Beda dengan cryptocurrency dalam blockchain yang aman aman secara sistem.,
Banyak orang mungkin salah mengira bahwa blockchain dan cryptocurrency adalah sama, tetapi sebenarnya tidak. Cryptocurrency adalah produk pertama blockchain. Baru-baru ini blockchain  memperluas aplikasinya ke beberapa bidang dan industri untuk menyimpan data secara aman. Blockchain hanyalah sebuah teknologi untuk menyimpan data dengan aman. Umumnya, Anda dapat menggunakan blockchain untuk menyimpan semua jenis data. Cryptocurrency menggunakan blockchain untuk menyimpan dan mengamankan jenis data transaksi.
Cryptocurrency juga merupakan sumber daya untuk blockchain. Tidak ada orang yang ingin berpartisipasi dalam blockchain untuk membantu memverifikasi block, termasuk transaksi dari orang asing ke orang asing lainnya di seluruh dunia tanpa mendapatkan apa-apa. Saat partisipan berhasil memverifikasi block baru, ia akan mendapatkan penghargaan berupa cryptocurrency. Semacam gaji untuk mereka yang melakukan pekerjaannya dengan baik, bukan? Hal ini akan mendorong partisipan untuk terus terlibat dengan blockchain.



 Sekarang sudah banyak macam cryptocurrency. Karena cryptocurrency pertama - Bitcoin cukup sukses, banyak dari cryptocurrency lanjutan diciptakan dari pecahan Bitcoin atau berdasarkan dari Bitcoin source code, seperti Litecoin (LTC), Namecoin (NMC), Bytecoin (BCN). Ada juga cryptocurrency lainnya yang dikembangkan sendiri seperti Ethereum (ETH), Cardano (ADA), dan lain-lain.



Mekanisme Blockchain

Blockchain dibangun dalam sistem yang terdistribusi dan jaringan P2P yang berarti semua node dalam blockhain terhubung satu sama lain dalam jaringan yang terdesentralisasi. Semua node dalam full node mempunyai copy database yang sama.

Dalam Bitcoin terdapat sebuah merkle tree yang berisi hash dari semua transaksi dalam block. Setiap transaksi dalam block akan dihash menggunakan function SHA256D dan disatukan dengan hash transaksi lain sampai menghasilkan 1 hash yang yang tidak dapat dirubah.

Konsesnsus mekanisme pada Bitcoin adalah dengan menerapkan konsensus Proof of Work. Proof of Work dalam Bitcoin sangat mengandalkan Computing power dan resource yang cukup mahal. Karena setiap miners menggunakan Proof of Work untuk memcahkan teka-teki pada block untuk menempatkan block baru ke dalam Blockchain. Setiap miners yang berhasil memecahkan block tersebut akan mendapatkan reward berupa Bitcoin baru.
Konsensus lainnya adalah Proof of Stake yang digunakan oleh Ethereum. {roof of stake sangat berbeda dengan proof of work karena proof of stake tidak mengandalkan computing power dan resource yang besar untuk menempatkan block baru ke dalam blockchain. Proof of Stake mengandalkan pemegang stake tertinggi untuk menempatkan block baru ke dalam blockchain.

Public Blockchain adalah jaringan blockchain yang sepenuhnya terbuka untuk siapapun yang ingin bergabung. Contoh Public Blockchain adalah seperti Bitcoin, Ethereum, dan lain-lain.
Private Blockchain berbeda dengan public blockchain. Dari namanya pun sudah terdengar jelas bahwa Private Blockchain merupakan jaringan blockchain yang bersifat pribadi / private. Tidak sembarangan orang dapat bergabung dalam jaringan ini, melainkan hanya individivu yang di-invite saja.



Sistem Terdistribusi dan Jaringan P2P

Blockchain dibangun dalam jaringan P2P, dan jaringan P2P adalah model sistem terdistribusi. Sistem terdistribusi didefinisikan sebagai suatu kumpulan komputer independen, yang tampak bagi penggunanya sebagai sistem yang saling bersangkutan atau terhubung. Internet, Intranets, jaringan ad-hoc,... adalah bentuk dari  sistem terdistribusi.

Jaringan P2P (atau peer-to-peer) adalah sebuah model arsitektur jaringan, yakni jaringan sistem terdistribusi seperti ini :
  • Setiap peer (bisa berupa komputer, tablet, atau smartphone,...) terhubung langsung ke peer lainnya. Koneksi ini adalah koneksi 2 arah.
  • Setiap peer membagikan hak yang sama.
  • Tidak memerlukan server pusat.

P2P adalah model jaringan, di mana tidak ada yang mempunyai hak khusus yang lebih tinggi. Blockchain dibangun dalam jaringan P2P sehingga sistemnya dapat terdesentralisasi. Pada blockchain, setiap orang dan setiap peer dapat menjalankan sistem bersama-sama dan sistemnya pun tidak bergantung pada siapapun.


Merkle Tree

Merkle tree diciptakan oleh Ralph Merkle di Tahun 1979. Merkle tree adalah sebuah pohon binary hash, di mana setiap cabang merkle adalah hash dari dua cabang merkle sebelumnya. Setiap cabangnya (cabang yang berada paling bawah, tidak mempunyai cabang lain) berisi hash dari raw data dan bagian-bagiannya.
Bitcoin menggunakan fungsi hash yang spesifik untuk Merkle tree ini, didefinisikan dengan fungsi "double SHA256": Hash(x) = SHA256(SHA256(x)).



Di Bitcoin, Merkle tree memiliki 2 fungsi. Yang pertama adalah meringkas semua transaksi pada block kedalam hash root, yang masuk di block header. Hash root ini berfungsi seperti sebuah segel pada paket. Jika seseorang ingin menyentuh apapun yang ada di dalam paket yang disegel, mereka harus merusak segelnya untuk membuka paket. Jadi hanya dengan melihat segelnya saja sudah cukup untuk mengecek apakah isi dalam paket itu ada yang berubah. Kembali ke Bitcoin, jika ada bagian dari transaksi yang dirubah, maka semua orang di jaringan dapat mendeteksi dengan membuat Merkle tree mereka sendiri dan membandingkan hash root mereka dengan hash root yang ada pada block header. Jika tidak ada perubahan, dua hash root tersebut akan cocok.
Kedua, Merkle tree mempunyai fungsi lain dalam memproduksi Merkle path. Ada metode SPV (Simplified Payment Verification) di Bitcoin untuk mengecek apakah transaksi tertentu masuk dalam block, tanpa mengunduh ull block. Merkle path akan dimasukkan dalam respons SVP sebagai bukti bahwa transaksi tersebut termasuk dalam block. Untuk info lebih lanjut, Anda mungkin ingin merujuk pada referensi berikut untuk mendalami merkle tree ini.

https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki
https://bitcoin.org/en/developer-reference#merkleblock


Mekanisme Konsensus (PoW, PoS)

Blockchain dibangun dalam jaringan P2P yang terbuka untuk semua orang yang ingin bergabung. Selama semua orang memiliki hak yang sama, blockchain memerlukan cara untuk meyakinkan setiap node untuk melakukan hal yang benar demi mencapai tujuan utama sistem. Hal ini membutuhkan Mekanisme Konsensus untuk meyakinkan setiap node yang seharusnya tidak tahu dan tidak percaya satu sama lain, untuk dapat bekerja sendiri demi mencapai tujuan utama sistem.
Mekanisme Konsensus didefinisikan sebagai cara agar semua node di blockchain bekerja sendiri dan saling setuju satu sama lain.
Proof-of-work (PoW) Mekanisme konsensus pertama yang digunakan bitcoin dan ethereum. Setiap node dalam jaringan P2P akan bersaing satu sama lain dalam memecahkan teka-teki kriptografi. Node yang pertama memecahkan teka-teki, akan mendapatkan penghargaan dalam bentuk bitcoin baru dan mempunyai hak untuk menempatkan block baru kedalam blockchain. Teka-teki ini membutuhkan banyak sekali computing power dan resource untuk memecahkannya, tapi mudah untuk memverifikasi dan memvalidasinya.



Proof-of-stake (PoS) Mekanisme Konsensus kedua dalam blockchain. Ide PoS berasal dari kenyataan bahwa miners dalam PoW harus membayar banyak untuk konsumsi resource seperti (hardware power, listrik,...). Miners menganggap itu sebagai penyebab yang dapat memperlambat cryptocurrency. PoW di masa depan dapat menyebabkan resiko tinggi dari “51% attack.” Penghargaan akan menurun dan miners yang jujur akan pergi. Daripada menghabiskan banyak resource dan power untuk memecahkan teka-teki seperti PoW, semua orang di PoS akan deposit sebagian atau semua koin mereka untuk mewakili “stake” mereka. PoS kemudian akan memilih seseorang secara acak untuk “menempa” block baru, tetapi seseorang yang mempunyai “stake” tertinggi akan mendapatkan probabilitas tertinggi untuk dipilih. Hanya orang terpilih ini yang dapat memverifikasi dan membuat block baru. PoS mungkin tidak mempunyai penghargaan untuk miners, tetapi miners dapat memperoleh biaya transaksi selama mereka memvalidasi transaksi tersebut. Saat ini, ada banyak cryptocurrency dikembangkan dan menggunakan metode PoS.
Ada banyak juga konsensus lain yang tidak populer yang masih dikembangkan seperti Proof-of-authority, Proof-of-space, Proof-of-importance, Byzantine Fault Tolerance, directed acyclic graph, dan lain-lain.
Saat ini, 2 (dua) konsensus yang umum adalah PoW and PoS. Yuk kita bandingkan.




Private/Public Blockchain

Public blockchain adalah jaringan blockchain yang sepenuhnya terbuka sehingga mendorong semua orang untuk bergabung. Ini dirancang untuk semua partisipan memiliki hak yang sama dan melakukan pekerjaan yang sama. Contohnya adalah jaringan Bitcoin.
Private blockchain bertentangan dengan public blockchain. Di dalamnya ada network designer atau administrator yang dapat menetapkan izin dan peran dalam jaringan. Orang baru yang ingin bergabung harus mendapatkan undangan. Ada juga batasan berbeda yang ditetapkan untuk semua orang didalam jaringan. Private blockchain membagi node ke dalam kelompok dengan peran dan izin yang berbeda untuk mendapatkan manajemen yang efisien. Ini mungkin untuk tujuan bisnis internal yang efisien.
Private blockchain dan public blockchain berbeda, namun tetap memiliki beberapa kesamaan. Keduanya berdasarkan jaringan peer-to-peer desentralisasi. Setiap peer harus tetap menjaga data yang dibagikan nya secara sinkron. Keduanya memiliki konsensus sendiri untuk bekerja. Juga, keduanya dapat memastikan kekekalan sistemnya.





Manfaat dan Kekurangan Blockchain

Blockchain memberikan kita cara baru untuk memproses transaksi atau hanya untuk menyimpan data. Yang pertama, blockchain bekerja tanpa kontrol pusat, tetapi tetap aman. Anda tidak perlu mengandalkan siapapun ataupun organisasi besar. Tidak mungkin untuk memanipulasi data dan transaksi yang disimpan dalam blockchain. Ini yang dinamakan kekekalan dalam blockchain. Anda mungkin akan berkata "hal baik nya adalah tidak ada yang dapat mengubah data saya. Hal buruk ya adalah semua orang termasuk saya".
Bitcoin pada blockchain juga menghabiskan banyak resource dalam prosesnya untuk menghasilkan block baru, meskipun hanya untuk menyimpan sebagian data kecil. Kemudian setiap node harus menyimpan seluruh block dengan sendirinya. Jadi, bisa dikatakan itu bukan cara yang efisien untuk menggunakan disk space.
Juga data pada blockchain disimpan di setiap node dalam jaringan P2P. Jadi, semua orang dapat mengakses dan membaca data dalam blockchain. Istilah "secure" dalam blockchain untuk memastikan bahwa tidak ada yang dapat mengubah atau memalsukan data Anda. Namun ini tidak mencegah siapapun untuk dapat membaca data Anda dalam blockchain. Jadi, selama menggunakan public key yang berbeda untuk setiap transaksi, Anda akan tetap aman. Ini yang dinamakan transparansi pada blockchain.


Memahami Bitcoin Blockchain

Bitcoin adalah sebuah cryptocurrency yang menggunakan blockchain untuk menyimpan dan mengamankan transaksinya. Bitcoin terbuat dari teknologi blockchain yang setiap blocknya terhubung satu sama lain menyerupai sebuah rantai yang disebut Blockchain.
Dalam Bitcoin terdiri dari:
  • Public Key
  • Private Key
  • Signature
  • Address
  • Transaksi
  • Hash Transaksi
  • Merkle Tree
  • Block
  • Block Header
  • Nonce
  • Previous Hash
  • Timestamp
  • Merkle Tree Root
  • Version
  • Bits
  • Block Hash
  • Block Data
  • Node
  • Blockchain Tree

Bitcoin explorer adalah sebuah tool untuk mengeksplor Blockchain Bitcoin. Anda dapat melihat semua block dalam explorer tersebut termasuk semua info transaksi yang ada dalam block.

Wallet pada Bitcoin berfungsi untuk menyimpan key Anda seperti Private Key dan Public Key. Private & Public Key pada wallet adalah seperti "username" dan "password" Anda.

Dalam Bitcoin transaksi adalah sebuah objek yang di dalamnya berisi data yang menyebutkan nilai atau jumlah Bitcoin yang anda kirim ke orang lain maupun jumlah Bitcoin yang dikirimkan ke Anda.
Mining adalah proses validasi transaksi yang ada pada memory pool dan dilakukan oleh miners. Semua miners bersaing satu sama lain untuk menempatkan block baru kedalam Blockchain.



Cara Kerja Bitcoin dan Sejarah Singkat

Bitcoin adalah implementasi pada blockchain yang cara kerjanya akan kita analisa di sini. Bitcoin terbentuk dari teknologi Blockchain yang terbuat dari block yang terhubung satu sama lain. Jadi pada dasarnya akan terbentuk sebuah blockchain. Kita dapat melihat infrastruktur Bitcoin yang terdiri dari 2 bagian yang terhubung:
  1. Blockchain sebagai dasar/base nya.
  2. Crypto value yang berada diatas base itu untuk mengirim uang serta memberi insentif bagi para miners.
Kita perlu memperbarui pengetahuan tentang bitcoin. Untuk membuat sistem bekerja, kenali beberapa bagian berikut ini.
Design Bitcoin terdiri dari :
  1. Public key – Digunakan untuk mengecek signature transaksi.
  2. Private key – Digunakan untuk membuat signature transaksi.
  3. Address – Hash dari Public Key.
  4. Signature – Adalah sebuah mekanisme yang memungkinkan kita hanya dengan menggunakan public key (tanpa mengetahui private key) untuk mengecek apakah transaksi valid. 
  5. Transaksi – Adalah sebuah objek yang mendefinisikan berapa banyak dan kepada siapa Anda mengirim uang dan berapa banyak uang yang dikirimkan kepa anda.
    a) Jumlah       :           (100 bitcoin)               Ke        :           Address penerima
    b) Jumlah      :           (Total -100 bitcoin)    ke        :          Address Anda
  6. Hash transaksi – Adalah hash dari setiap transaksi yang digunakan untuk membuat Merkle Tree.
  7. Merkle tree – Adalah struktur data yang terbuat dari semua hash dari semua transaksi.
  8. Blocks - Adalah tempat untuk semua transaksi yang sudah dikonfirmasi dengan semua struktur tambahannya.
    1) Block Header
    a. Nonce – adalah sebuah nomor yang digunakan untuk mining dan konfirmasi.
    b. Previous hash – adalah hash dari block header sebelumnya.
    c. TimeStamp – Menunjukkan waktu saat block dibuat menggunakan waktu UNIX.
    d. Merkle tree root – Hash dari merkle tree untuk mengecek transaksi
    e. Version – Menunjukkan versi dari block yang sudah di-mining.
    f. Bits – Sebuah Compressed Target.
    2) Block Hash – Hash block saat ini.
    3) Block data – Semua data transaksi yang disimpan dalam block.
  9. Node – Adalah user yang memegang seluruh copy database, bisa jadi miner atau user lain.
  10. Blockchain tree – Di Bitcoin kemungkinan adanya fork sementara sebelum block terpanjang; ini mungkin bisa terjadi karena jaringan.

Bitcoin Blockchain – Adalah struktur yang terdiri dari semua elemen yang dijelaskan di atas, yang memungkinkan kita melakukan transaksi crypto.
Yang berhubungan dengan pengguna bitcoin adalah :
  1. Wallet (menyimpan public dan private key). Wallet adalah sebagai client.
  2. Explorer untuk melihat blockchain (Block, Transaksi dan melihat jumlah uang). Explore sebagai client.
  3. Miner untuk membuat block baru. Bisa dikatakan sebagai server.
Saat ini Bitcoin adalah sebuah sistem pembayaran dan cryptocurrency. Idenya adalah bekerja tanpa memerlukan pihak ketiga. Sebagai konsekuensinya, Bitcoin didesain secara terdesentralisasi. Artinya perubahan tertentu harus dipegang oleh semua orang dan seperti demokrasi yang membutuhkan banyak suara. Yang mempunyai 51% suaralah yang benar. Ini adalah cara untuk menghindari penggunaan Bank dan Administrator. Tetapi semua transaksi dilakukan antara 2 pihak dan kemudian diajukan untuk divalidasi ke jaringan.

Saat ini, jaringan tersebut memiliki antara 2.9 dan 5.8 juta user dengan nilai USD 147.8 miliar. Sejauh ini itulah nilai cryptocurrency paling tinggi di pasaran.

Berikut adalah sejarah singkat dari Bitcoin :
1998 – 2009 Pengenalan Bitcoin
Pertama kalinya bitcoin berfungsi penuh sebagai cryptocurrency, tapi sebelum itu, sudah ada banyak upaya untuk menciptakan mata uang online dengan beberapa pilihan database yang aman. Contohnya adalah B-Money dan Bit Gold yang diciptakan tapi tidak pernah diterapkan.
2008 – Siapa Nakamoto
Paper pertama dipublikasi oleh Satoshi Nakamoto yang berjudul “Bitcoin – A Peer to Peer Electronic Cash System” dan diposting ke dalam diskusi kriptografi. Satoshi Nakamoto, entah dia adalah suatu kelompok atau individu yang identitasnya masih tidak diketahui sampai sekarang.
2009 – Bitcoin mulai beroperasi
Pada tahun ini Bitcoin dibuat untuk publik dan terdiri dari sistem yang lengkap di mana mining adalah suatu proses yang akan menghasilkan bitcoin baru dan transaksi diverifikasi ke dalam blockchain.
2010 – Transaksi pertama Bitcoin
Bitcoin pada awalnya bukan untuk trade (perdagangan/pertukaran), hanya untuk mining sehingga sulit untuk menetapkan nilai uang cryptocurrency pertama. Trading pertama dilakukan pada  2010 ketika ada sebuah toko pizza yang menjual seharga 5.000 Bitcoin untuk 1 pizza. Jadi pada penjualan pertama itu si pembeli membayar 10.000 Bitcoin untuk 2 buah pizza. Jika si pembeli masih mempunyai Bitcoin sebanyak itu pada saat ini, harganya sama dengan USD 70 juta.
2011 – Alternatif cryptocurrency
Karena Bitcoin semakin dikenal, semakin populer dan ide tentang desentralisasi dan enkripsi mata uang menjadi lebih populer, muncullah alternatif pertama cryptocurrency yang dinamakan  altcoins. Pada umumnya altcoins bertujuan untuk memperbaiki desain pada Bitcoin dengan menawarkan kecepatan yang lebih baik, atau beberapa keuntungan lainnya. Salah satu yang pertama muncul adalah Namecoin dan Litecoin. Saat ini ada lebih dari 1,000 cryptocurrency yang beredar.
2013 – Harga Bitcoin jatuh
Pada 2013,pertama kalinya harga untuk 1 Bitcoin mencapai USD 1,00. Setelah itu harga mulai cepat menurun kemudian anjlok hingga USD 300. Setidaknya dibutuhkan 2 tahun untuk kembali pada harga USD 1,000 lagi.
2014 – Semua jenis penipuan dan pencurian
Bitcoin sebagai mata uang yang didesain dengan anonimitas dan ketiadaan kontrol, ini tentu saja menjadi target yang menarik dan menguntungkan bagi para kriminal. Pada Januari 2014 Bitcoin exchange Mt.Gox (hot wallet) berubah menjadi offline dan pemilik 850,000 bitcoi tidak pernah melihat mereka lagi.
Para investigator masih mencoba mencari tahu apa yang terjadi. Tetapi apapun yang terjadi, seseorang yang tidak jujur mendapatkan hasil penipuannya senilai USD 450 juta. Pada hari ini koin yang hilang itu bernilai USD 4.4 miliar.
2016 – Ethereum dan ICOs
Satu-satunya cryptocurrency yang paling dekat untuk merebut posisi Bitcoin adalah Platform Ethereum. Platform ini menggunakan cryptocurrency yang dikenal dengan Ether sehingga dapat memfasilitasi blockchain dengan smart contract dan aplikasi. Ethereum adalah koin pertama yang ditandai dengan kemunculannya Initial Coin Offerings (ICOs). Ide ini adalah menawarkan kesempatan kepada para investor untuk memperdagangkan saham pada start up dengan cara yang sama bahwa mereka dapat berinvestasi dan melakukan trading crypto. Di Amerika, pemerintah memperingatkan semua investor bahwa karena kurangnya pengawasan ICO bisa saja berdampak pada penipuan yang menyamar sebagai investasi yang sah. Di Cina pemerintahnya melarang Bitcoin dan semua Altcoin.
2017 – Bitcoin mencapai USD 10,000 dan jatuh lagi
Dari awal sampai sekarang semua crypto koin naik dari nol sampai ke level yang saat ini mencapai lebih dari USD 300bn. Bank termasuk Barclays, Citi Bank, Deutsche Bank dan BNP Paribas sedang menginvestigasi cara mereka agar dapat bekerja dengan Bitcoin. Selama ini sentralisasi mata uang selalu dikendalikan oleh pemerintah. Berbeda dengan Bitcoin yang memiliki karakter distributed dan alternative decentralization. Ia tidak dapat dikontrol selain dengan kekuatan pasar. Apakah Bitcoin bisa dikendalikan oleh pemerintah?  Kami mungkin tidak tahu jawaban pastinya dalam waktu dekat.



Apa Itu Bitcoin Explorer ?

Bitcoin EXPLORER adalah sebuah tools untuk mengeksplor Bitcoin blockchain. Tepatnya untuk melihat semua block dan info transaksi, ada 3 tipe explorer :
  • Net explorer
  • Terminal explorer
  • CLI explorer

Net explorer (paling populer):
  • Blockchain.info Explorer
  • Bitcoin Block Explorer
  • Insight Explorer

Terminal explorer dan CLI explorer (paling populer):
  • Ncusers2 Bitcoin Explorer
  • Libbitcoin Explorer


Di sini kita akan mengajarkan bagaimana menggunakan explorer.
  1. Kirim koin ke diri anda
Transfer koin ke diri Anda sendiri dari address faucet. Masuk ke tautan berikut http://13.228.200.242:3000/transfer.
Lalu masukkan public address Anda dalam textbox “Public address” lalu klik “Get Coins”.

20180819210951f2c128c9840d35582647d0e05482b625.

2. Mengeksplor blockchain

Langkah 1 : Buka tautan berikut : https://insight.bitpay.com/


20180819211255c4955bd23d1f0b38ba646b950b9d65c0.

Langkah 2 : Kita bisa mencari block atau transaksi dengan hash atau hash dari block. Sekarang kita akan mencari dengan nomor urut block atau block height.


2018081921134413e0eb89041a6cbb4125111f878b286a.

Langkah 3 : Pada block 730 kita bisa lihat dalam block tersebut terdiri dari info block dan transaksi. Kita bisa lihat isi dari block tersebut sangat menarik.


20180819211426b39fbf103fd0c43c8b5bdd2c5ad2162a.

Langkah 4 : Di sini kita akan melihat info transaksi demi transaksi, atau bisa mecarinya via hash.

20180819211458e913f6abff995ed30f1ee4ff794d6839.

Langkah 5 : Kita juga bisa melihat semua address dengan saldonya (transaksi yang sudah terpakai dan transaksi yang belum terpakai).


201808192115332a4dc23676ddadede4e8d93ed82db8f7.

Langkah 6 : Kita bisa melihat semua transaksi yang belum dikonfirmasi (salah satunya transaksi yang tidak termasuk kedalam block) dan yang masih dalam memory pool (mining/unconfirmed poll).


20180819211604fd8b17b91ff02d62a1d877ce365fb42c. 
Apa Itu Bitcoin Wallet

Wallet/dompet di Bitcoin berbeda dengan wallet/dompet dalam pengertian yang sebenarnya, Bitcoin Wallet tidak menyimpan uang! Ia hanyalah tempat untuk menyimpan key Anda. Dalam jaringan, wallet ini disebut sebagai client. Wallet serupa tempat menaruh username dan password.
Di Bitcoin public key adalah “username” dan private (secret) key adalah “password”. Jadi yang berarti wallet adalah tempat untuk menyimpan private and public key jadi kita bisa men-sign transaksi.  
Wallet terbagi menjadi 2 kategori, yaitu hot wallet dan cold wallet:
  • Hot wallet menyimpan private dan public key secara online.
  • Cold wallet menyimpan private key secara offline dan perangkat itu akan melakukan semua persiapan untuk mentransmisikan transaksi offline. Transaksi yang sudah di Sign (sudah sah) akan ditransfer pada flash drive ke komputer dan disebarkan ke jaringan.

Hot wallet (yang paling populer adalah):
Android:
  • Samourai Wallet
  • Mycelium
  • breadwallet
  • Edge
  • GreenBits
  • Bitcoin Wallet

iOS:
  • breadwallet
  • Edge

Desktop Wallets:
  • Bitcoin QT
  • Electrum

Browser wallet:
  • Jaxx
  • GreenAddress

Cold wallet (yang paling populer adalah): 
  • Ledger Nano S
  • TREZOR
  • KeepKey

Paper wallet – sesuai dengan namanya, Anda menyimpan passphrase atau private key Anda pada paper.

Kita ambil contoh menggunakan aplikasi wallet Copay untuk melanjutkan tugas berikutnya. Copay dapat digunakan pada Bitcoin main net dan test net.



Membuat Akun Wallet Menggunakan Copay

Langkah 1 : Instal extension pada Google chrome 65.0.3325 versi.146 (Official Build) (64-bit). Google Chrome adalah sebuah aplikasi yang digunakan untuk menjelajah dunia maya seperti halnya Mozilla Firefox, Opera ataupun Microsoft Edge. Jika Firefox dikembangkan oleh Mozilla, Google Chrome dibuat dan dirancang oleh Google, perusahaan internet terbesar di dunia. Pengertian extension pada Google Chrome adalah sebuah aplikasi kecil yang dapat memberikan fitur tambahan, memodifikasi, dan meningkatkan fungsionalitas dari Google Chrome itu sendiri. Oke jadi sekarang Instal Copay pada Google Chrome extension. Setelah itu klik “Get started”.


201808192124371f54a4e807f690ca612b800ceb63b2b7.

Langkah 2 : Klik “Got it” 2 kali atau klik skip untuk melewati.


201808192125285327ac914166c46e1f578db5ef5b77fa.

Langkah 3 : Klik “Create bitcoin wallet”.


20180819212543b029b3635a79ab06ed45160860a0128f.

Langkah 4 : Masukkan email Anda.


20180819212557c36053a02585881c3ca132f0da118a06.

Langkah 5 : Sebaiknya backup wallet Anda jika baru membuat akun wallet.


201808192126197a9c0742ce37fddf3f0ed758b9b7ba3c.

Langkah 6 : Simpan dan rahasiakan passphrase Anda!!!


20180819212634d1802fb72e418ce78d306f6ae8685f4d.

Langkah 7 : Sekarang kita menggunakan protokol BIP32 untuk membuat passphrase.


201808192126508b55ba48c7c002fc5beb82cbe6a1a17c.

Langkah 8 : Setelah mendapatkan passphrase lanjut ke langkah selanjutnya.


2018081921272326d4a468220b50fd2b294a8e5d23bef0.

Langkah 9 : Lakukan konfirmasi passphrase.


2018081921274305bb76364764d0b3d0c524379b115e5a.

Langkah 10 : Sekarang kita backup wallet kita.


2018081921283662af52a46e4fc2b5283cb9f9df1f3852.

Langkah 11 : Setujui semua 3 pilihan dan klik “Confirm & Finish."


201808192128532db2801aba765b01b19a1c7eebdc1646.

Langkah 12 : Sekarang kita sudah punya wallet dalam main net.


20180819212904b3413e30399c49d986bd4d27cd48e8d5.



Setup Testnet Pada Copay

Langkah 1 : Jalankan wallet dan klik “+” pada “Bitcoin Wallets."


201808192130444dd1fd412bdd8a3c969bf566a1b037ca.

Langkah 2 : Sekarang klik “New personal wallet.”


201808192131063705ed750918b6d5f72788bc59540b7d.

Langkah 3 : Pilih nama wallet Anda dan koin yang Anda gunakan.


201808192131211351a60942325a8037fa4cfa44c6eeb2.

Langkah 4 :    Ubah WALLET SERVICE URL: http://54.169.4.106:3232/bws/api dan “Testnet”.


201808192131406c365347d775ae1153ea0da3cf24cbe1.

Langkah 5 : Cek pada testnet dan klik : “Create new wallet."



20180819213155003f8984eab99aadbd1b262c296eeed7.

Langkah 6 : Sekarang kita sudah set up testnet wallet dan main net untuk wallet. Sekarang kita akan mengirim dan menerima beberapa uang.


20180819213210daf9db00eaba4bc27d347e243074b4bf. 


Mengirim Bitcoin dan Share Public Key

Langkah 1 : Klik “receive” button.


20180819213626d08b5edf9a6418117ba4154f13a920a4.

Langkah 2 : Pilih pada TestNet.


2018081921364134c318bc38c9c5989233d9a6093e14ec.

Langkah 3 :  Bagikan public key.


201808192136542529c924e67a92604ccf75016c6993fd.

Langkah 4 : Klik Home untuk melihat koin yang diterima.


20180819213709d071c6afe65b4163be2a2a88cdd37b76.

Langkah 5 : Buka Copay dan klik “Send."


2018081921372895a4159d3d3196ee7472f7990b3807b4.

Langkah 6 : Masukkan address yang akan Anda kirimkan uang.


20180819213750f6a689d892fc1e52aa6a263dbff0668e.

Langkah 7 : Masukkan jumlah uang yang akan Anda kirim dan klik tanda panah hijau.


201808192138139f48156e06011244338eb98825c0fcb6.

Langkah 8 : Klik “Click to send”.


20180819213833d5fd73cdf5dc43b86384eac26c6cafce.

Langkah 9 : Lalu klik “Confirm” untuk mengirim koin.


20180819213853540f709efec51b05030d36f11d04308c.

Langkah 10 : Klik “OK” dan tunggu proses transaksi.


201808192139106bf2784606a50786cfef088ef6bcf54d.



Apa Itu Transaksi & Mining

Transaksi adalah sebuah objek di mana kita menentukan/menuliskan berapa banyak uang yang akan kita kirim ke address seseorang dan berapa banyak (“uang kembalian”) yang akan kita kembalikan kepada address kita sendiri. Dalam Bitcoin, transaksi terlihat sedikit aneh karena ia dioptimalkan sesuai dengan fakta bahwa wallet tidak dapat menampung saldo. Artinya setiap kali kita ingin melihat saldo, kita perlu menggunakan blockchain explorer untuk mengurutkan dan kemudian menjumlahkan seluruh bagian blockchain yang di dalam blocks-nya mengandung transaksi-transaksi kita. Jadi dari transaksi-transaksi tersebut, kecuali untuk transaksi pertama di mana semua block harus diperiksa untuk menentukan total saldo, transaksi-transaksi lainnya hanya perlu dijumlahkan hanya sampai dengan transaksi terakhir yang berisi seluruh info transaksi-transaksi sebelumnya. Sebabnya, pada waktu kita mengirimkan uang kepada seseorang, uang kembalian yang akan diberikan kembali kepada kita adalah total saldo kita minus transaksi terakhir.


a) Jumlah       :           (100 bitcoin)               ke        :           Address penerima
b) Jumlah      :           (Total 100 bitcoin)      ke        :           Address kita sendiri

20180819214144d8b7f6daf534d0b45719c40b5a066264.

Mining adalah proses mengambil transaksi dari memory pool dan membuat block pada blockchain. Miner memecahkan PoW, yang akan mendapatkan hash sesuai dengan level kesulitan target. Kita bisa melihat yang dilakukan oleh miners dengan network view seperti berikut.

Miner yang paling populer adalah:

Windows
  • CGMiner
  • BTCMiner
  • BFGMiner
  • EasyMiner

Linux
  • CGMiner
  • BFGMiner
  • EasyMiner
  • CPU miner

Mac OS X
  • RPC Miner
Kita akan menggunakan CGMiner untuk mining dan mengakses pool di sini:
Ada 2 pilihan untuk mining secara profesional.
Pertama, Anda harus menggunakan tools profesional untuk mining dengan ASIC. Selengkapnya cek tautan berikut ini. https://github.com/ckolivas/cgminer
Kedua, cara tercepat untuk mining adalah dengan menginstal bitcoin-qt 0.12.0 yang akan mengunduh full node sekitar 150GB untuk main net dan untuk test net 15GB.
Langkah 1 : Instal bitcoin-qt 0.12.0 dan jalankan bitcoin qt.


20180819214327b74f1689cb3cbed82e341b9f7be6ab39.

Langkah 2 : Help > Debug Window > Console ketik "setgenerate true" untuk memulai. Ketik "setgenerate false" untuk berhenti.


2018081921435841d6940bcb6fda52c7919252014d1436. 


Dasar Pemrograman Bitcoin

Untuk memahami dasar pemrograman Bitcoin ada beberapa software dan tools yang dapat digunakan contohnya seperti Bitcore, Bitcoind, Bitcoin RPC, Bitcoin Qt. Semua itu tersedia dan bersifat open source.
Bitcore adalah sebuah node yang dikemas dengan javascript dan sekarang ini mulai dari bitcoind v. 0.12.1(2016-Apr-15) sampai bitcoind v.0.16.0(2018-Feb-26), bitcoind adalah versi asli official code dari Nakamoto code.
Anda dapat mengeksplorasi Blochcain Bitcoin dengan menggunakan Bitcoin Qt. Terdapat sebuah terminal pada software tersebut yang membuat anda dapat mengeksplorasi blockchain dengan berbagai macam command yang disediakan.
Anda dapat menjalankan full node bitcoin dari menggunakan Bitcoin Qt. Anda juga dapat menjalankan Bitcoin Qt untuk running di test net.


Pengenalan Bitcore

Anda dapat menemukan bitcore pada website berikut https://bitcore.io. Di sini kita perlu menjelaskan perbedaan antara bitcore dan bitcoind yang bisa anda unduh disini https://bitcoin.org/. Anda mungkin akan mendengar banyak dari programmer bahwa jika ingin membuat app berdasarkan bitcoin, perlu menggunakan bitcore.

Bitcore adalah sebuah node yang dikemas dengan javascript dan sekarang ini mulai dari bitcoind v. 0.12.1(2016-Apr-15) sampai bitcoind v.0.16.0(2018-Feb-26). Bitcoind adalah versi asli official code dari Nakamoto code. Artinya bitcoind yang dikemas dalam bitcore dengan beberapa hal yang sudah ketinggalan jaman.
  • Nama function RPC sudah dirubah
  • Tidak support BIP32 ataupun BIP37
  • Di versi 0.12.1 CPU mining tetap support

Dari bitcoind v.0.13.0, semua opsi untuk mining sudah dihapus karena suatu alasan, yakni saat ini mining menggunakan komputer sangat tidak menguntungkan, jadi semua miners menggunakan ASIC.

Singkatnya :
  • Bitcore adalah kemasan yang dibuat untuk bitcoind v.0.12.1 yang ditulis dengan JavaScript.
  • Bitcoind adalah aplikasi yang dibuat sebagai aplikasi utama Bitcoin dengan versi pertamanya yang diterbitkan oleh Nakamoto.

Ketika selesai kita dapat melihat bahwa lebih aman untuk mengembangkan dengan bitcoind. Namun jika memilih bitcore, alasannya adalah karena lebih mudah digunakan.
Saat memprogram dengan bitcore, Anda hanya menggunakan JavaScript. Saat menggunakan bitcoind, Anda bisa menggunakan JSON RPC atau juga C++. Untuk alasan itu, Bitpay mengambil versi 0.12.1 dan mengemasnya dengan JavaScript untuk mempermudah penggunaannya.
Dengan bitcoind Anda mempunyai opsi untuk menjalankan multithreading sedangkan dengan bitcore Anda hanya dapat menggunakan single thread karena bitcore membutuhkan Node.js untuk menjalankannya. Seperti Anda dapat lihat di sini ada banyak ketidaksamaan. Hal inilah yang akan menentukan jalur yang diambil oleh proyek yang akan Anda kerjakan.
Catatan: Semua Satoshi Nakamoto code sudah diganti dengan code lain di bitcoind versi 0.3.2.
Sekarang dari sisi baiknya bitcore, Anda mempunyai banyak contoh pembuat aplikasi yang menggunakan platform ini. Anda bisa menemukan contoh dan dokumentasi pada websitenya. Jadi jika mau membuat sebuah program, Anda harus melihat script (smart contract) untuk Bitcoin. Bitcoin mempunyai virtual machine nya sendiri tapi tidak sepenuhnya “turing” dan tidak menyimpan “state” nya. Ia hanya menyimpan data ke Bitocin Blockchain. Info lebih lanjut silakan lihat website https://en.bitcoin.it/wiki/Script. Anda bisa menemukan bahwa bitcoin menggunakan script sistem untuk transaksi nya pada virtual machine. Bahasa ini dinamakan Script dan  cukup sederhana. Prosesnya dari kiri ke kanan dan tidak ada looping.


Bitcoin API

Di Bitcoin API kita bisa menggunakan fungsi selanjutnya untuk menggunakan Console dan RPC JSON.
Langkah 1 : Masuk ke console Bitcoind anda (seperti di 3.4 Apa itu transaksi dan mining, langkah 2 pada link berikut https://www.dicoding.com/academies/92/tutorials/2321/).
Langkah 2 : Untuk melihat semua command pada console, ketik “Help.” Sebuah list panjang berikut ini akan muncul:

== Blockchain ==
  • getbestblockhash
  • getblock "blockhash" ( verbosity )
  • getblockchaininfo
  • getblockcount
  • getblockhash height
  • getdifficulty
  • getmempoolinfo
  • verifychain ( checklevel nblocks )
  • verifytxoutproof "proof"

== Rawtransactions ==
  • createrawtransaction [{"txid":"id","vout":n},...] {"address":amount,"data":"hex",...} ( locktime ) ( replaceable )
  • decoderawtransaction "hexstring" ( iswitness )
  • decodescript "hexstring"
  • fundrawtransaction "hexstring" ( options iswitness )
  • getrawtransaction "txid" ( verbose "blockhash" )
  • sendrawtransaction "hexstring" ( allowhighfees )
  • signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )

== Wallet ==
  • backupwallet "destination"
  • bumpfee "txid" ( options )
  • dumpprivkey "address"
  • dumpwallet "filename"
  • encryptwallet "passphrase"
  • getaccount "address"
  • getaccountaddress "account"
  • getaddressesbyaccount "account"
  • getunconfirmedbalance
  • getwalletinfo
  • importprunedfunds
  • importwallet "filename"
  • importaddress "address" ( "label" rescan p2sh )
  • importmulti "requests" ( "options" )
  • importprivkey "privkey" ( "label" ) ( rescan )
  • getbalance ( "account" minconf include_watchonly )
  • gettransaction "txid" ( include_watchonly )
  •  importpubkey "pubkey" ( "label" rescan )


Instalasi Bitcoin-qt dan Setup Testnet

Untuk instal bitcoin-qt, buka website berikut : https://bitcoin.org/en/download.
Di sini Anda bisa memilih salah satu yang sesuai dengan sistem konfigurasi Anda.
Untuk set up bitcoin-qt yang baru diinstal , pastikan ia dapat berjalan di testnet. Caranya, edit dit berkaspada direktori “~/.bitcoin” yang bernama “bitcoin.conf”
Edit file via Terminal (linux):
  • Buka terminal dan ketik : “vi ~/.bitcoin/bitcoin.conf”
  • Paste “CODE-1” inside it on top of the file (be careful with everything under should be commented out using comment sign “#” on the start of line):
#----------CODE-1----------
# testnet-box functionality
regtest=1
dnsseed=0
upnp=0
# listen on different ports than default testnet
port=19000
rpcport=19001
# always run a server, even with bitcoin-qt
server=1
rpcallowip=0.0.0.0/0
rpcuser=admin1
 rpcpassword=123
connect=54.255.190.148:19000
  • Sekarang simpan berkas dengan menekan tombol “Esc” dan ketik “:wq”; untuk menyimpan dan keluar.
  • Lalu jalankan bitcoin-qt kembali.

Alternatif 1 (linux): cara sederhana untuk melakukan ini : buka berkas “~/.bitcoin/bitcoin.conf” dengan text editor apa saja :
  • Buka text editor.
  • Buka berkas“~/.bitcoin/bitcoin.conf”.
  • Paste code dari “CODE-1”.
  •  Simpan dan run bitcoin-qt kembali.


Alternatif 2 (linux):
Menggunakan bitcoin-qt:
  • Buka bitcoin-qt: “Settings” -> “Options”.
  • Klik “Open Configuration File”, lalu lanjutkan ke langkah B pada Alternatif 1.
  • Lanjutkan dan selesaikan langkah lainnya.


20180819221030c28a2b11d803644f401535fc4597a6c7.


Lokasi bitcoin.config tergantung pada sistem yang Anda gunakan, berikut pada tabel 1.
Tabel 1:

20180819221134e02a9c5af1813b4c6ec636e4808532f5.png



CLI Bitcoin Explorer

Via Bitcoind
Contoh I : Lihat transaksi pada block paling atas.
Langkah 1 : Di sini kita akan melihat block terakhir yang dibuat : getbestblockhash


20180819221430de7bf21b742581e0505b134dae27c104.

Langkah 2: Sekarang kita akan melihat detail dari block terakhir dan kita akan melihat isi block dengan command getblock (diikuti hash block).


20180819221510a16e54a6aece5c63be5216ede0eb9c77.

Langkah 3: Sekarang kita ingin melihat info transaksi dengan mengetik getrawtransaction (diikuti hash string transaksi).


20180819221603181ace8766c016b9d60910ff0b7b45b9.

Langkah 4: Lalu kita akan membaca transaksi tersebut dengan melakukan decoding : decoderawtransaction (diikuti hasil string raw transaction)


20180819221718cb5589007c3c64f67a5150daf672e9e2.

CATATAN : Jika transaksi sudah terlalu lama, akan terjadi eror pada “memory Pool” karena default konfigurasi pada bitcoin.config adalah (set txindex = 1). Itu  digunakan untuk seluruh explorer tapi dalam contoh ini tidak diperlukan. Setelah itu Anda dapat mengakses semua transaksi dengan menggunakan metode ini.

Contoh II:  Sekarang mencari blockchain dengan menggunakan height dari block.
Pada contoh ini kita akan mencari blockchain dengan menggunakan height dari block. Height adalah urutan block yang terhitung dari genesis block.
Langkah 1: Pertama mari kita cari tahu hash dari block paling atas dengan command : getbestblockhash


201808192219123787ecd1761c07bd6d8550c9e8da5113.

Langkah 2: Sekarang kita sudah mendapatkan hash block. Lihatlah info block dan kita akan mengetahui seberapa jauh urutan block tersebut dari genesis block : getblock (Diikuti block hash)


20180819221953519deaee289b2ddd51dfa4537773bcaf.

Langkah 3: Sekarang kita akan mencoba apakah kita akan mendapat hash yang sama : getblockhash (diikuti height block)


20180819222115be666bd3b4a95f0dcbfbf8157337764a.

Langkah 4: Eksplor semua block pada blockchain dengan menggunakan height dari block.
  • getblockhash 1294120
  • getblockhash 50000
  • getblockhash 50
  • getblockhash


201808192221549f9d16b727ea0545d7d99d7839414b68.

Contoh III: Melihat saldo akun.
Langkah 1: Di sini kita akan melihat total saldo pada akun kita : getbalance


201808192222246e4a9cf5b7db9fde6a3dbf32c3ab0244.

Via RPC HTTP JSON
Di sini kita akan mengeksplor blockchain dengan menggunakan protokol RPC HTTP JSON.
Setup Postman:
  • Instal Postman app via google chrome extensions.
  • Jalankan Postman dan set up POST ke URL http://54.169.4.106:19001
  • Masuk ke authorization dan pilih “Basic Auth.”


2018081922240502eea0573ff29aa1e8494feea0dce748.


  • Lalu masukkan username dan password yang digunakan untuk test ini. Konfigurasi selanjutnya : Anda dapat menemukannya pada berkas: /home/ev-003/.bitcoin/bitcoin.conf rpcuser=bitcoin rpcpassword=local321


201808192224388000dd24655f7fe532ab84e690213a37.


  • Pada bagian header centang “Authorization”, “Content-Type”, “Accept-Encoding” dan pada bagian “Body” pilih “Pretty”.


201808192225132b455a73767e70ba3677f7fc54d82aee.

Contoh I:  Lihat transaksi pada block teratas.
Langkah 1: getbestblockhash


20180819222555d414f1261e5b442ec53106e3be21c016.

 Langkah 2: Getblock (diikuti transaksi)


201808192226448c8457f796d25a44da2c7c9578053701.

Langkah 3: getrawtransaction (diikuti hasil string transaksi)
CATATAN : Jika transaksi sudah terlalu lama, itu akan memberikan error pada “memory Pool” karena default konfigurasi pada bitcoin.config adalah (set txindex = 1) dan itu digunakan untuk seluruh explorer tapi dalam contoh ini tidak diperlukan. Setelah itu, anda dapat mengakses semua transaksi dengan menggunakan metode ini.


20180819222719137f4e5b2a8cc55d461a8e5ab69434aa.

Langkah 4: decoderawtransaction (diikuti hasil string transaksi)


20180819222751d0d98d778a5e05ec5e13df0e4ba4b586.

Contoh II:  Explore blockchain dengan menggunakan height dari block.
Langkah 1: getbestblockhash


201808192228189aedf243f9a0c2f2b9ab4ec705cb02c7.

Langkah 2: getblock (diikuti block hash)


20180819222847408635f03ccd8e3a97f0d4758cddfc60.

Langkah 3: getblockhash (diikuti block height)


2018081922292220637f35c576b9008bc2ee5448af4be4.


Langkah 4:
  • getblockhash 1294120
  • getblockhash 50000
  • getblockhash 50
  • getblockhash


201808192229574f35a1328f6adfb0a827fb71f83a8898.

Contoh III: Melihat saldo.
Langkah 1: getbalance


20180819223034e2086daf2941a14ec546aa0d2422f793.



Membuat Transaksi di Bitcoin Testnet

Via bitcoind
Contoh IV: Submit transaksi dan kirim koin ke diri Anda sendiri.
Langkah 1: Pertama, dapatkan informasi wallet anda : getwalletinfo


20180819223352808d2b5ce4f326f27a8775053f3352c5.

Langkah 2: Sekarang kita bisa melihat semua akun yang kita punya ; default akun adalah (“”). Selanjutnya ketik : listaccounts


2018081922342959e580e4970832ba5dcc44251e29e954.

Langkah 3: Sekarang kita perlu mendapatkan address yang terhubung dengan akun default kita. Selanjutnya ketik : getaccountaddress ""


201808192234422464b9969db48a2cda34f84ad5ff2bf2.

Langkah 4: Sekarang kita memerlukan private key. Dapatkan private key dengan command : dumpprivkey "2N5V1jKHAwTE9NWVhDaQjZaYhX9FWcHx2M2".


201808192234557813ede4548d7e9b8208d52f5b93cb61.

Langkah 5: Kita akan mengirim uang kepada kita sendiri. Ketika kita melakukan ini kita akan kehilangan beberapa uang kita untuk membayar biaya mining. Prosedur yang sama digunakan untuk mengirim ke orang lain, sekarang ketik:
sendtoaddress "2N5V1jKHAwTE9NWVhDaQjZaYhX9FWcHx2M2" 0.001 (jika kita ingin mengirim ke orang lain, gunakan address yang berbeda)


20180819223600b439c1c9b7b0cab03eaf7c7d2705f4f0.

Via RPC HTTP JSON
Contoh IV: Submit transaksi dan kirim koin ke diri Anda sendiri.
Persiapan:
Run Postman dan set up POST ke URL http://54.169.4.106:19001
rpcuser=bitcoin
rpcpassword=local321

Langkah 1: getwalletinfo


20180819223659ec665e78a9c683e3d1a54da4fe4485fc.

Langkah 2: listaccounts


2018081922372277c3a6a16df970f084c6cc411a856abc.

Langkah 3: getaccountaddress "" (default akun adalah “”)


20180819223744002aa54f9911489af6e6fccc427f8df4.

Langkah 4: dumpprivkey "2MuXrHnDaxGm1b3EPvib37GuAGaVo2ceKaE"


201808192238087b95b2218f1ca910ed20045e9acbc648.

Langkah 5: sendtoaddress "2MuXrHnDaxGm1b3EPvib37GuAGaVo2ceKaE" 0.001 (jika ingin mengirim ke orang lain, gunakan address yang berbeda)


20180819223830cc87d3b00b0c7fe71a6eabebfdba503f.



Reference & Images Suorces :

dicoding

No comments:

Post a Comment

Rekomendasi Aplikasi Penghasil Cuan :D Dirumah saja tetap Dapet Duit !!!

Hallo Bosskyuuh semua. Perkenalkan aku Patrick Ananta berasal dari Jawa Tengah. Aku sudah lama sekali dirumahkan dikarenakan covid19 sehingg...