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 / pz
if pq
}
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


