Perdagangan di  internet  sampai  saat  ini  masih  sangat  tergantung secara  eksklusif  pada  badan

keuangan  yang  berperan  sebagai  pihak  ketiga  yang  dipercaya  untuk  memproses  pembayaran

elektronik. Walaupun sistem ini berjalan dengan cukup baik untuk hampir semua transaksi, sistem

ini  masih  mempunyai  kelemahan  bawaan  dari  sistem  berbasis  kepercayaan.  Transaksi  yang

bersifat  non-reversibel  penuh tidak dimungkinkan sebab  badan keuangan ini  tidak dapat

menghindari  tindakan mediasi  perselisihan. Biaya mediasi ini  memicu  peningkatan

biaya  transaksi  sehingga  memicu   adanya  batas  minimum  transaksi  dan  menghilangkan

kemungkinan  transaksi  kecil  sederhana  sehari-hari,  dan  sebab   itu  ada  juga  kemungkinan

munculnya biaya dari ketidaktersediaan mengadakan transaksi non-reversibel untuk layanan yang

non-reversibel.  Dengan  kemungkinan  untuk  melakukan  transaksi  reversibel,  kebutuhan  atas

kepercayaan meningkat. Para pedagang harus waspada terhadap pelanggannya, dengan mengambil

informasi lebih dari pelanggannya dibandingkan  yang dibutuhkan. Sekian persen dari penipuan bisa

dianggap sebagai  tidak terhindarkan.  Biaya dan ketidakpastian pembayaran ini   bisa dihindari

secara  personal  dengan  memakai   mata  uang  fisik,  tapi  belum  ada  mekanisme  yang

memungkinkan terjadinya pembayaran melalui jalur komunikasi tanpa ada pihak terpercaya.

Yang dibutuhkan yaitu  sistem pembayaran elektronik berbasis bukti kriptografi untuk

menggantikan  sistem  kepercayaan,  memungkinkan  dua  pihak  dengan  sukarela  melakukan

transaksi secara langsung tanpa memerlukan pihak ketiga sebagai saksi. Transaksi  yang secara

komputasi tidak mungkin untuk dibalikkan bisa melindungi penjual dari tindakan penipuan dan

mekanisme rekening bersama (escrow) seperti biasa akan bisa dengan mudah melindungi pembeli.

Dalam tulisan ini, kami mengajukan solusi atas masalah  double-spending dengan memakai 

server  timestamp yang terdistribusi  secara  peer-to-peer yang digunakan untuk membuat  bukti

urutan kronologis transaksi. Sistem ini akan aman selama lebih banyak titik komputasi yang 'jujur'

secara  kolektif  mengendalikan  kekuatan  CPU dibandingkan dengan kelompok titik  komputasi

penyerang.

2.    Transaksi

Kami  mendefinisikan  satu  koin  elektronik  sebagai  satu  rangkaian  tandatangan  digital.  Setiap

pemilik dari koin mentransfer ke pemilik selanjutnya dengan membubuhkan tandatangan digital

pada hash dari transaksi sebelumnya dan public key dari pemilik selanjutnya pada akhiran koin.

Penerima  pembayaran  (payee) dapat  memverifikasi  tandatangan  untuk  memastikan  rantai

kepemilikan.

Masalahnya,  penerima pembayaran  tidak bisa  memastikan  bahwa salah satu pemilik  tidak

melakukan  double-spending pada  koinnya.  Solusi  umum  atas  masalah  ini  yaitu   dengan

melibatkan otoritas pusat atau pencetak koin yang memeriksa setiap transaksi dari kemungkinan

double-spending. Setiap melakukan transaksi, koin harus dikembalikan ke pencetak koin untuk

kemudian dikeluarkan koin baru, dan hanya koin yang dikeluarkan langsung oleh pencetak koin

yang bisa dipercaya tidak melakukan  double-spending. Masalah dengan solusi ini yaitu  nasib

dari seluruh sistem keuangan  bergantung pada perusahaan percetakan koin, dengan keharusan

untuk melewatkan setiap transaksi kepada mereka seperti halnya sebuah bank.

Kita memerlukan  suatu cara dimana penerima pembayaran bisa mengetahui bahwa pemilik-

pemilik  sebelumnya  tidak  menandatangani  transaksi  sebelumnya.  Untuk  itu,  transaksi  yang

berlaku yaitu  yang terjadi pertama, jadi kita tidak perlu mempedulikan usaha untuk melakukan

double-spending nantinya. Satu-satunya cara untuk memastikan ketiadaan suatu transaksi yaitu 

dengan  mengawasi  transaksi  secara  keseluruhan.  Dalam  model  percetakan  koin,  percetakan

mengetahui semua transaksi dan memutuskan mana yang terjadi lebih dahulu. Untuk melakukan

tanpa  pihak  terpercaya,  transaksi  harus  diumumkan secara  publik  [1],  dan  kita  memerlukan 

sebuah sistem dimana partisipan menyetujui suatu urutan tunggal sesuai dengan saat diterimanya.

Penerima pembayaran memerlukan  bukti pada saat terjadinya setiap transaksi, mayoritas titik-

titik  komputasi  ini   menyetujui  bahwa  transaksi  ini   yaitu   yang  diterima  pertama

kalinya.


3.    Timestamp Server

Solusi yang kami ajukan dimulai dengan timestamp server. Timestamp server bekerja dengan cara

mengambil  hash dari setiap blok item untuk dicatat waktunya dan mempublikasikan secara luas

hash ini , sama seperti pada newspaper atau pos pada Usenet [2-5]. Timestamp membuktikan

bahwa data ada pada saat itu, secara jelas, agar bisa dimasukkan ke dalam hash. Setiap timestamp

melingkupi timestamp sebelumnya dalam hash, membentuk suatu rantai, dengan setiap timestamp

tambahan menekankan timestamp sebelumnya.

4.    Proof-of-Work

Untuk mengimplementasikan  timestamp server yang terdistribusi secara  peer-to-peer, kita perlu

memakai   sistem  proof-of-work yang  mirip  dengan  Adam  Back's  Hashcash  [6],  dibandingkan 

newspaper atau pos pada Usenet. Proof-of-work melibatkan proses pemindaian dari nilai yang jika

melalui proses  hashing,  contohnya dengan memakai  SHA-256,  hash akan dimulai  dengan

angka bit nol. Jumlah rata-rata usaha yang diperlukan berbanding eksponensial dengan jumlah bit

nol yang diperlukan dan bisa diverifikasi dengan mengeksekusi sebuah hash.

Untuk jaringan timestamp ini,  proof-of-work diimplemetasikan dengan deret inkremental dari

kejadian (nonce) dalam blok sampai didapat suatu nilai yang dapat memberi  hash dari suatu

blok banyaknya bit nol yang dibutuhkan. Begitu tenaga komputasi ditingkatkan untuk memenuhi

kebutuhan proof-of-work, blok ini  tidak dapat diubah tanpa mengulang proses. Untuk blok-

blok yang tersambung di belakangnya, usaha untuk mengubah blok ini  mengharuskan untuk

mengulang pembuatan blok-blok setelahnya juga.

Proof-of-work juga  mengatasi  masalah  dalam menentukan pembuat  keputusan  mayoritas.  Jika

keputusan mayoritas dibuat berdasar  kepada satu IP address untuk satu suara (one-IP-address-

one-vote), ini dapat ditumbangkan oleh siapapun yang dapat mengalokasikan banyak IP. Proof-of-

work pada  dasarnya  yaitu   satu  CPU  satu  suara  (one-CPU-one-vote).  Keputusan  mayoritas

ditentukan oleh rantai terpanjang, yang mempunyai usaha proof-of-work terbanyak. Jika mayoritas

kekuatan CPU dikendalikan oleh titik-titik komputasi yang jujur, rantai yang jujur dapat tumbuh

lebih cepat dan mengalahkan rantai lainnya. Untuk mengubah blok yang sudah ada, penyerang

perlu  membuat  ulang  proof-of-work blok  ini   dan  semua  blok  sesudahnya  dan  kemudian

mengejar  dan  menyusul  kerja  titik-titik  komputasi  yang  jujur.  Kami  akan  perlihatkan  nanti

kemungkinan  penyerang yang lebih lambat  yang berusaha  untuk  mengejar  menghilang  secara

eksponensial saat  blok-blok berikutnya ditambahkan.  

Untuk mengkompensasi peningkatan kecepatan perangkat keras dan minat menjalankan titik

komputasi yang berubah-ubah seiring perkembangan waktu, tingkat kesulitan dari  proof-of-work

ditentukan oleh target rata-rata jumlah blok per jam yang selalu berubah-ubah juga. Jika mereka

dibuat terlalu cepat, tingkat kesulitan akan meningkat.

5.    Jaringan

Langkah untuk menjalankan jaringan yaitu  sebagai berikut: 

1) Transaksi-transaksi baru disiarkan ke semua titik-titik komputasi.

2) Setiap titik komputasi mengumpulkan transaksi-transaksi baru ke dalam sebuah blok.

3) Setiap titik komputasi berupaya untuk menemukan proof-of-work yang sulit untuk bloknya.

4) saat  sebuat titik komputasi menemukan  proof-of-work, ia menyiarkan blok ini  ke

semua titik-titik komputasi.

5) Titik komputasi menerima blok ini  hanya jika semua transaksi di dalamnya valid dan

belum pernah dibelanjakan.

6) Titik-titik komputasi menunjukkan penerimaan blok dengan menambahkan blok berikutnya

pada rantai, dengan hash dari blok yang diterima sebagai hash sebelumnya.

Titik-titik komputasi selalu menganggap rantai terpanjang yaitu  rantai yang benar dan akan

terus  bekerja  memperpanjang rantai  ini .  Jika  dua  titik  komputasi  menyiarkan  versi  yang

berbeda dari blok berikutnya secara bersamaan, beberapa titik komputasi akan menerima satu atau

lainnya  terlebih  dahulu.  Pada  kejadian  seperti  itu,  titik  ini   akan  mengerjakan  blok  yang

pertama diterima, tapi tetap menyimpan cabang yang satunya lagi barangkali rantai itu bertambah

panjang. Ikatan ini akan diputuskan saat   proof-of-work berikutnya ditemukan dan satu cabang

bertambah panjang, titik-titik komputasi yang bekerja pada cabang yang lain akan berpindah ke

cabang yang lebih panjang.

Penyiaran  transaksi  baru  tidak  harus  mencapai  keseluruhan  titik  komputasi.  Selama  bisa

mencapai banyak titik komputasi, mereka akan segera tergabung dalam suatu blok. Penyiaran blok

juga mempunyai toleransi atas pesan yang terputus (dropped message). Jika satu titik komputasi

tidak  menerima  sebuah  blok,  maka  titik  ini   akan  memintanya  pada  saat  menerima blok

berikutnya dan mengetahui bahwa sebuah blok telah terlewatkan.

6.    Insentif

berdasar   kesepakatan,  transaksi  pertama  pada  suatu  blok  yaitu   transaksi  khusus  yang

memulai koin baru yang dimiliki oleh pencipta dari blok ini . Ini menjadi insentif bagi titik-

titik  komputasi  untuk  mendukung  jaringannya,  dan  menyediakan  jalan  untuk  mulai

mendistribusikan koin ke dalam sirkulasi, sebab  tidak ada otoritas pusat yang mengeluarkannya.

Penambahan  jumlah  koin  secara  konstan  bisa  dianalogikan  dengan  penambang  emas  yang

mengerahkan sumber daya untuk menambahkan emas pada sirkulasi. Dalam hal ini, sumber daya

waktu dan listrik dari CPU yang dikerahkan.  

Insentif dapat juga dibiayai dari biaya transaksi. Jika nilai keluaran dari satu transaksi kurang

dari nilai masukan, selisihnya yaitu  biaya transaksi yang ditambahkan pada besaran insentif dari

blok yang mengandung transaksi ini . Setelah sejumlah koin yang sudah ditentukan berada

pada sirkulasi, insentif berasal dari biaya transaksi dan menjadi bebas inflasi.  

Insentif dapat membantu menjaga titik-titik komputasi  agar  tetap jujur.  Jika ada penyerang

yang serakah berhasil  membangun kekuatan komputasi  lebih tinggi dibandingkan  semua titik yang

jujur,  dia  hanya  akan  bisa  memilih   memakai nya  untuk  menipu  orang  dengan  merebut

kembali pembayarannya, atau untuk menbuat koin baru. Dia akan menyadari bahwa mengikuti

aturan akan lebih menguntungkan, yang menguntungkannya dengan menghasilkan koin baru lebih

banyak dibandingkan  orang lain, dibandingkan  merusak sistem dan keabsahan dari kekayaannya sendiri.

7.    Memulihkan Ruang Penyimpanan

Setelah transaksi terakhir dalam sebuah koin terbenam di bawah blok yang cukup, transaksi yang

4

dilakukan  sebelumnya  dapat  diabaikan  untuk  menghemat  ruang  penyimpanan.  Untuk

memfasilitasi ini tanpa memutuskan hash blok, transaksi di-hash-kan dalam Merkle Tree [7][2][5],

dengan  hanya  root yang  disertakan  dalam  hash blok.  Blok  lama  dapat  diringkaskan  dengan

meringkaskan cabang dari pohon ini .  Hash-hash yang berada di bagian dalam tidak perlu

disimpan lagi.

Sebuah kepala blok (block header) tanpa transaksi kurang lebih akan berukuran 80 bytes. Jika

kita beranggapan bahwa blok dihasilkan setiap 10 menit maka, 80 bytes * 6 * 24 * 365 = 4.2MB

per tahun. Dengan sistem komputer yang umumnya dijual dengan 2GB RAM pada tahun 2008,

dan hukum Moore memprediksi pertumbuhan 1.2GB per tahun, ruang penyimpanan seharusnya

tidak akan menjadi masalah bahkan jika kepala blok harus disimpan.

8.    Verifikasi Pembayaran yang Disederhanakan

Verifikasi  pembayaran  bisa  dilakukan  tanpa  perlu  menjalankan  jaringan  titik-titik  komputasi

secara penuh.  Seorang pengguna hanya perlu menyimpan salinan dari  kepala  blok dari  rantai

terpanjang proof-of-work, yang mana bisa didapat dengan melakukan kueri atas titik-titik jaringan

sampai  dia  teryakinkan  bahwa  rantai  yang  diperolehnya  yaitu   rantai  yang  terpanjang,  dan

mendapatkan cabang Merkle Tree yang menghubungkan transaksi ini  kepada blok dengan

timestamp yang diperuntukkannya. Dia tidak dapat memeriksa transaksi  ini  untuk dirinya

sendiri, tapi dengan menghubungkannya pada suatu tempat pada rantai, dia dapat melihat apakah

sebuah  titik  jaringan  telah  menerimanya,  dan  blok-blok  telah  ditambahkan  setelahnya

mengkonfirmasi lebih lanjut bahwa jaringan telah menerima transaksi ini .

5

BlockBlock

Block Header (Block Hash)

Prev Hash Nonce

Hash01

Hash0 Hash1 Hash2 Hash3

Hash23

Root Hash

Hash01

Hash2

Tx3

Hash23

Block Header (Block Hash)

Root Hash

Transaksi yang di Hashed dalam Merkle Tree Setelah dipangkas Tx0-2 dari Block

Prev Hash Nonce

Hash3

Tx0 Tx1 Tx2 Tx3

Hash01

Hash2 Hash3

Hash23

Block Header

Merkle Root

Prev Hash Nonce

Block Header

Merkle Root

Prev Hash Nonce

Block Header

Merkle Root

Prev Hash Nonce

Merkle Branch for Tx3

Rantai Proof-of-Work Terpanjang

Tx3

Dengan  demikian,  verifikasi  bisa  diandalkan  selama  titik-titik  yang  jujur  mengendalikan

jaringan, tapi akan lebih rentan jika jaringan dikuasai oleh penyerang. saat  titik-titik jaringan

dapat memverifikasi transaksi untuk mereka sendiri, metode yang disederhanakan dapat dikelabui

oleh transaksi palsu si penyerang selama penyerang bisa menguasai jaringan. Satu strategi untuk

mencegah kejadian ini yaitu  dengan menerima peringatan dari titik-titik jaringan saat  mereka

mendeteksi blok yang tidak valid, memberitahu software sang pengguna untuk mengunduh blok

secara  penuh  dan  meminta  transaksi  untuk  mengkonfirmasi  ketidak-konsistensiannya.  Bisnis

yang sering menerima pembayaran kemungkinan akan tetap menginginkan untuk menjalankan

titik-titiknya sendiri untuk kemanan yang lebih independen dan verifikasi yang lebih cepat.

9.    Menggabungkan dan memisahkan nilai

Walaupun memungkinkan untuk menangani setiap koin secara individual, akan sangat berat untuk

membuat transaksi terpisah bagi setiap sen dalam suatu transfer. Untuk memungkinkan suatu nilai

bisa dipisahkan dan digabungkan, transaksi mempunyai beberapa masukan dan keluaran. Biasanya

akan ada  masukan tunggal  yang  berasal  dari  transaksi  lebih  besar  sebelumnya  atau  beberapa

masukan yang menggabungkan jumlah yang lebih kecil, dan paling tidak ada dua keluaran: satu

untuk pembayaran dan satu lagi untuk kembalian, kalau ada, ke pihak pengirim.

Perlu dicatat bahwa dalam model fan-out, dimana sebuah transaksi bergantung pada beberapa

transaksi-transaksi, dan transaksi-transaksi ini  bergantung pada lebih banyak lagi transaksi,

tidak menjadi masalah di sini. Tidak pernah diperlukan untuk menjabarkan sebuah salinan sejarah

transaksi yang benar-benar berdiri sendiri.

10.    Privasi

Model  perbankan  tradisional  menerapkan  suatu  tingkatan  privasi  dengan  membatasi  akses

informasi  kepada pihak-pihak yang terkait dan pihak ketiga yang dipercaya.  Kebutuhan untuk

mengumumkan semua transaksi  secara  publik menghalangi  metode ini,  tapi  privasi  tetap  bisa

diperoleh dengan memutuskan aliran informasi di tempat lain: dengan menjaga anonimitas dari

public key. Publik bisa menyaksikan bahwa seseorang mengirimkan sejumlah kepada seseorang

lainnya, tapi tanpa informasi yang menghubungkan transaksi kepada siapapun. Ini sama dengan

tingkat informasi yang disiarkan oleh bursa efek, dimana waktu dan ukuran dari  perdagangan

individual,  daftar  transaksi,  dibuka  secara  publik,  tapi  tanpa  memberitahukan  siapa  saja  yang

terkait.

6

Transaksi

In

...

In Out

...

Identitas   Transaksi Pihak-3

Terpercaya

Counterparty Publik

Identitas   Transaksi Publik

Model Privasi Baru

Model Privasi Tradisional

Sebagai pengaman tambahan, sepasang kunci baru harus digunakan pada setiap transaksi untuk

menghindari dihubungkannya dengan pemilik biasa. Beberapa penghubungan masih tidak dapat

dihindari  untuk  transaksi  multi-input,  yang  secara  terpaksa  menampilkan  bahwa  masukannya

dimiliki  oleh  pemilik  yang  sama.  Risikonya  yaitu   jika  pemilik  dari  suatu  kunci  diketahui,

penghubungan bisa menampakkan transaksi-transaksi  lainnya yang dimiliki  oleh pemilik  yang

sama.

11.    Perhitungan

Kami meninjau suatu  skenario dimana penyerang berusaha  menciptakan rantai  alternatif  yang

lebih cepat dibandingkan  rantai yang jujur. Walaupun ini berhasil dilakukan, tidak akan memicu 

sistem menjadi terbuka atas  perubahan yang sewenang-wenang,  seperti  menciptakan nilai  dari

udara  atau  mengambil  uang  yang  bukan  merupakan  haknya.  Titik-titik  komputasi  tidak  akan

menerima transaksi yang tidak sah sebagai pembayaran, dan titik-titik komputasi jujur tidak akan

menerima blok yang mengandungnya. Penyerang hanya akan bisa mencoba mengubah salah satu

transaksi miliknya untuk mengambil kembali uang yang sudah dibelanjakan. 

Adu  cepat  antara  rantai  yang  jujur  dan  rantai  penyerang  bisa  dikarakteristikkan  sebagai

Binomial Random Walk. Keberhasilan terjadi saat  rantai jujur diperpanjang sebanyak satu blok,

menambahkan  keunggulannya  sebanyak  +  1,  dan  kegagalan  yaitu   saat   rantai  penyerang

diperpanjang sebanyak satu blok, mengurangi jarak sebanyak -1. 

Kemungkinan  dari  seorang  penyerang  mengejar  defisit  ini  sama  dengan  permasalahan

Gambler’s Ruin.  Anggap seorang penjudi dengan kredit yang tidak terbatas memulai dari defisit

dan  mencoba  bermain  sebanyak  tidak  terhingga  sampai  mencapai  titik  impas.  Kita  dapat

menghitung probabilitas dia mencapai titik impas, atau saat si penyerang dapat mengejar rantai

yang jujur dengan perhitungan sebagai berikut [8]: 

p = kemungkinan node jujur mendapatkan blok berikutnya 

q = kemungkinan penyerang mendapatkan blok berikutnya 

qz = probabilitas penyerang akan menyusul dari posisi z blok sebelumnya

Dengan asumsi  kita  bahwa p > q, nilai  kemungkinan akan turun secara  eksponensial seiring

dengan peningkatan jumlah blok yang harus dikejar oleh penyerang. Dengan kondisi yang tidak

menguntungkan  ini,  jika  penyerang  tidak  mendapatkan  keberuntungan  dengan  melakukan

sergapan lebih awal, maka kesempatannya akan menjadi sangat kecil sebab  dia akan tertinggal

jauh di belakang. 

Sekarang kita  pertimbangkan berapa lama penerima suatu  transaksi  baru perlu  menunggu

sebelum cukup mendapatkan kepastian bahwa pengirim sudah tidak bisa melakukan perubahan

pada transaksi.  Kita beranggapan bahwa pengirim yaitu  seorang penyerang yang bermaksud

untuk mengelabui penerima bahwa dia sudah melakukan pembayaran, kemudian mengembalikan

pembayaran kepada dirinya sendiri setelah beberapa saat. Penerima akan mendapat peringatan

atas kejadian ini, namun pengirim berharap bahwa saat itu sudah terlambat.  

Penerima  akan  menghasikan  sepasang  kunci  baru  dan  mengirimkan  public  key  kepada

pengirim  sesaat  sebelum  menandatanganinya.  Ini  mencegah  pengirim  untuk  mempersiapkan

sebuah rantai blok sebelumnya dengan mengolah secara terus-menerus sampai cukup beruntung

mendapatkan posisi cukup jauh di depan, kemudian mengeksekusi transaksi pada saat itu. Segera

setelah  sebuat  transaksi  terkirim,  pengirim  yang  tidak  jujur  mulai  membuat  versi  lain  dari

transaksi ini  secara paralel dan tersembunyi. 

Penerima menunggu sampai transaksi berhasil ditambahkan pada sebuah blok dan z blok telah

7

q z={ 1 if p≤q

q / pz

if pq

}

tertautkan  sesudahnya.  Dia  tidak  mengetahui  secara  pasti  perkembangan  dari  aksi  sang

penyerang,  tapi  dengan  asumsi  titik-titik  jujur  memerlukan  jumlah  waktu  rata-rata  yang

diperkirakan  per  blok,  tingkat  perkembangan  potensial  dari  sang  penyerang  akan  menjadi

distribusi Poisson  dengan nilai yang telah diperkirakan:

Untuk mendapatkan kemungkinan sang penyerang masih bisa mengejar saat ini, kita mengalikan

Poisson  density  untuk  setiap  jumlah  perkembangan  yang  dia  sudah  dapat  lakukan  dengan

kemungkinan yang dia dapat kejar pada saat itu:

Setelah ditata ulang untuk menghindari menjumlahkan ekor tak terhingga pada distribusi...

Dikonversi ke bahasa program C …

Jika kita jalankan kode berikut, kita dapat melihat kemungkinan penurunan secara exponensial

pada nilai z.

8

=z

q

p

k=0

∞  k

e

−

k !

⋅{q / p

 z−k  if k ≤ z

1 if k  z

}

1−∑

k=0

z k e

−

k !

1−q/ p

 z−k 

#include <math.h>

double AttackerSuccessProbability(double q, int z)

{

    double p = 1.0 - q;

    double lambda = z * (q / p);

    double sum = 1.0;

    int i, k;

    for (k = 0; k <= z; k++)

    {

        double poisson = exp(-lambda);

        for (i = 1; i <= k; i++)

            poisson *= lambda / i;

        sum -= poisson * (1 - pow(q / p, z - k));

    }

    return sum;

}

Dengan menyelesaikan P kurang dibandingkan  0.1%...


Kami  telah  mengajukan  sebuah  sistem  transaksi  elektronik  tanpa  perlu  bergantung  pada

kepercayaan.  Kami  memulai  dengan  kerangka  kerja  koin  seperti  biasa  yang  terdiri  dari

tandatangan  digital,  yang  menyediakan  kendali  yang  kuat  atas  kepemilikan,  tapi  tetap  tidak

lengkap  tanpa  suatu  cara  untuk  mencegah  double-spending.  Untuk  mengatasi  hal  ini,  kami

mengajukan  jaringan  peer-to-peer dengan  proof-of-work untuk  mencatat  histori  publik  dari

transaksi-transaksi yang dengan segera secara komputasi akan menjadi tidak mudah untuk diubah

oleh  penyerang  jika  titik-titik  komputasi  yang  jujur  mengendalikan  mayoritas  kekuatan

komputasi. Kesederhanaan struktur menjadikan jaringan ini kuat. Semua titik komputasi bekerja

secara  bersamaan dengan sedikit  koordinasi.  Mereka tidak perlu  teridentifikasi,  sebab  pesan

tidak disalurkan kepada tujuan tertentu dan hanya perlu disampaikan dengan dasar usaha terbaik

(best  effort  basis).  Titik-titik dapat  meninggalkan jaringan dan bergabung kembali  sesukanya,

menerima rantai  proof-of-work sebagai bukti atas apa yang terjadi saat mereka tidak tergabung

dengan  jaringan.  Mereka  memberi   suara  dengan  kekuatan  komputasi,  menunjukkan

persetujuan atas blok yang sah dengan meneruskan pemanjangan blok ini  dan menolak blok

yang tidak sah dengan tidak mengolah nya.  Setiap aturan dan insentif yang diperlukan dapat

ditegakkan dengan mekanisme yang sudah dimufakati (consensus mechanism) ini.

9

q=0.1

z=0    P=1.0000000

z=1    P=0.2045873

z=2    P=0.0509779

z=3    P=0.0131722

z=4    P=0.0034552

z=5    P=0.0009137

z=6    P=0.0002428

z=7    P=0.0000647

z=8    P=0.0000173

z=9    P=0.0000046

z=10   P=0.0000012

q=0.3

z=0    P=1.0000000

z=5    P=0.1773523

z=10   P=0.0416605

z=15   P=0.0101008

z=20   P=0.0024804

z=25   P=0.0006132

z=30   P=0.0001522

z=35   P=0.0000379

z=40   P=0.0000095

z=45   P=0.0000024

z=50   P=0.0000006

P < 0.001

q=0.10   z=5

q=0.15   z=8

q=0.20   z=11

q=0.25   z=15

q=0.30   z=24

q=0.35   z=41

q=0.40   z=89

q=0.45   z=340