Kami menerima pembayaran dalam bitcoin: Bagian Tiga, testnet kami. Dengan selikuran

Kami menerima pembayaran dalam bitcoin: Bagian Tiga, testnet kami. Dengan selikuran

Pada artikel terakhir saya telah memberi tahu Anda cara menginstal bitcoind (setidaknya di Ubuntu Linux) dan cara terhubung ke testnet. Namun testnet adalah solusi yang baik ketika Anda melakukan pengujian pada situs web siap pakai yang telah diterapkan pada server di Internet. Namun untuk pembangunan lokal, hal ini bukanlah solusi yang paling tepat.

Anda dapat membaca bagian pertama di sini dan di sini.


Dan di sini kita memerlukan bagian ketiga mode pengoperasian bitcoind -regtest (Mode Uji Regresi). Oleh Pada dasarnya, ini adalah bitcoin kecil Anda yang berukuran saku. Dengan sedikit pengecualian, perilaku perangkat lunak akan seperti ini sepenuhnya sesuai dengan pertempuran. Tapi, pertama-tama, Anda tidak perlu mengunduh blockchain (bahkan yang uji, jauh lebih kompak). Selain itu, pada umumnya, Anda bahkan tidak memerlukan koneksi Internet; semua operasi akan terjadi seluruhnya secara lokal.  

Kita perlu menginstal bitcoind, yang logis dan sedikit kesabaran. Anda perlu menjalankan setidaknya 2 salinan bitcoind agar keduanya berinteraksi satu sama lain, melakukan simulasi operasi jaringan. Dan terakhir, kita perlu melakukan penambangan. Namun jangan khawatir, dalam kasus Uji Regresi tingkat kesulitannya secara otomatis disetel ke nol dan kita tidak memerlukan megawatt energi dan peternakan ASIC generasi terbaru. 

Untuk memulainya, mari buat 2 direktori yang akan menyimpan data, file konfigurasi, dan log debug. Secara keseluruhan Dalam contoh saya akan menggunakan /home/developer sebagai jalur root. Jadi, jalankan perintah di bawah ini:


mkdir -p /home/developer/bitcoin-service
mkdir -p /home/developer/bitcoin-client

Nama layanan bitcoin dan bitcoin-client diambil hanya untuk kenyamanan. Anda bahkan dapat menyebutnya MYCOOLBITCOINNET - yang utama adalah wajib menggunakannya dalam semua tindakan selanjutnya.

Untuk saat ini kita akan berasumsi bahwa klien bitcoin adalah kliennya "klien" tertentu yang akan membayar kami sesuatu selama pengujian, dan layanan bitcoin, oleh karena itu, adalah "toko" kami Ya, dia akan menerima pembayaran.

Sekarang kita perlu membuat file di setiap direktori yang dibuat bitcoin.conf dengan konten berikut:

# Seperti halnya s testnet, kita perlu mengaktifkan interaksi dengan daemon.
# Opsi di bawah ini memungkinkan bitcoind untuk mendengarkan pada port JSON-RPC
pelayan=1
rpcuser=nama pengguna
rpcpassword=kata sandi pengguna
# tentukan port RPC.. Ini harus berbeda untuk setiap layanan!
# Secara default ini adalah port 8332, tapi saya sangat menyarankan menggunakan nilai lain
port rpc=18332
# Tentukan mode operasi - Mode Uji Regresi
tes registrasi=1
# Parameter berikut akan saya uraikan nanti, yang penting parameternya juga berbeda
pelabuhan=18333
addnode=localhost:28333
# Dan di tempat ini kita perlu menentukan layanan bitcoin dan klien bitcoin, masing-masing.
datadir=/home/developer/bitcoin-service
pid=/home/developer/bitcoin-service/.pid

Sekarang beberapa kata tentang port. Parameter rpcport menentukan yang mana Port akan mendengarkan koneksi RPC. Selain apa yang ditentukan oleh logika, setan yang berbeda juga seharusnya memilikinya menjadi port yang berbeda, menjalankan dua port pada port yang sama tidak akan berfungsi secara teknis. Hal ini memudahkan untuk kenyamanan Totalnya, tunjukkan misalnya 18332 untuk yang pertama dan 28332 untuk yang kedua.  

Sekarang beberapa kata tentang port dan addnode. Yang pertama - port - menentukan port mana yang akan didengarkan daemon sambil menunggu koneksi jaringan setan lainnya - kita ingat, bitcoin adalah jaringan p2p. Ini juga harus berbeda untuk iblis lari yang berbeda. SEBUAH parameter addnode, pada gilirannya, memberitahukan koneksi mana yang akan dibuat segera setelah daemon dimulai. Dalam pertempuran jaringan dan jaringan testnet ini diimplementasikan oleh mekanisme pencarian node khusus. Dan sejak kami meluncurkan iblis secara penuh mode lokal, mekanisme ini tidak akan membantu kita dengan cara apapun. 

Oleh karena itu kita harus menentukan koneksi dalam file konfigurasi. Oleh karena itu, jika untuk layanan bitcoin kami menentukan port 18333 dan untuk klien bitcoin 28333, maka parameternya addnode akan terlihat seperti ini untuk layanan bitcoin localhost:28333, dan localhost:18333 untuk klien bitcoin.

Sesuatu seperti ini:

#/home/developer/bitcoin-service/bitcoin.conf:
pelabuhan=18333
addnode=localhost:28333
#/home/developer/bitcoin-client/bitcoin.conf:
pelabuhan=28333
addnode=localhost:18333

Dan, tentu saja, parameter datadir dan pid harus mengarah ke direktori yang sesuai:

#/home/developer/bitcoin-service/bitcoin.conf:
datadir=/home/developer/bitcoin-service
pid=/home/developer/bitcoin-service/.pid

#/home/developer/bitcoin-client/bitcoin.conf:
datadir=/home/developer/bitcoin-client
pid=/home/developer/bitcoin-client/.pid

Yang pertama, datadir, menyatakan di mana salinan milik kami uji blockchain, log debug, dan informasi berguna dan tidak berguna lainnya terkait aktivitas kehidupan bitocoind, dan yang kedua, katakanlah, membantu daemon agar tidak tersesat di antara banyak proses lain dalam sistem. 

Sekarang kami akhirnya dapat meluncurkan testnet kami dan menikmati bitcoin pribadi kami.. Untuk melakukan ini kita perlu menjalankan perintah, penting untuk menjalankannya di jendela terminal yang berbeda:

bitcoind -conf=/home/developer/bitcoin-service/bitcoin.conf --printtoconsole
bitcoind -conf=/home/developer/bitcoin-client/bitcoin.conf --printtoconsole

Parameter -conf=... menentukan yang mana file konfigurasi yang ingin kami gunakan, dan --printtoconsole mengatakan bahwa kami akan menggunakan semua informasi debugging menonton di layar, tanpa harus memantau log. Biasanya hal ini tidak diperlukan, tetapi saat memulai untuk pertama kali Lebih baik memastikan semuanya dilakukan dengan benar. Jika di antara huruf dan angka yang tidak dapat dipahami tidak ada kata yang buruk Kesalahan - ini berarti kami dapat berasumsi bahwa semuanya berjalan dengan baik, dan jaringan bitcoin lokal kami berfungsi dan kami dapat melanjutkan ke langkah selanjutnya.

Jika dalam kasus jaringan tempur dan testnet, memanggil daemon cukup sederhana: bitcoin-cli [perintah], lalu sesuatu seperti ini terjadi: bitcoin-cli memeriksa jalur default, menurut yang biasanya berisi file konfigurasi. Untuk Linux ini akan menjadi $HOME/.bitcoin/bitcoin.conf, dan didapat darinya parameter koneksinya sama rpcport, rpcuser dan rpcpassword. Dan sudah menggunakannya, terhubung ke bitcoind untuk eksekusi perintah. Namun, sekarang kita tidak hanya memiliki file konfigurasi yang terletak di tempat lain selain standar, dan juga 2 salinan bitcoind berjalan secara bersamaan. Pertanyaan logis yang muncul adalah bagaimana kita bisa melakukannya sambungkan ke yang kami minati dan jalankan perintah di atasnya? 

Ada beberapa opsi. Pertama, Anda dapat menentukan parameter koneksi pada baris perintah:

bitcoin-cli -rpcuser=nama pengguna -rpcpassword=kata sandi pengguna -rpcport=18332 getwalletinfo

Ini, tentu saja, cocok untuk pemeriksaan satu kali, tapi Sangat tidak nyaman menggunakan desain seperti itu terus-menerus. Nah, untuk memahami dengan siapa kita terhubung, hanya dengan alamatnya port - terlalu berisiko. 

Opsi kedua, lebih mudah dibaca:

bitcoin-cli -conf=/home/developer/bitcoin-service/bitcoin.conf getwalletinfo

Di sini kami menunjukkan lokasinya file konfigurasi dari mana parameter koneksi akan diambil. Juga besar, tapi sedikit lebih nyaman. 


Nah, pilihan ketiga adalah menulis beberapa skrip bash yang akan menggantikan semua parameter yang kita butuhkan, dan kemudian dengan bantuan mereka menghubungi setan. Buat file misalnya bitcoin-service.sh:

#!/usr/bin/env bash
gema "Node LAYANAN Bitcoin:"
bitcoin-cli -conf=/home/developer/bitcoin-service/bitcoin.conf $@

Dan izinkan eksekusinya:

chmod +x layanan bitcoin..sh

File yang sama harus dibuat untuk yang kedua setan, secara logis menyebutnya bitcoin-client.sh. Sekarang kita dapat menjalankan perintah apa pun hanya dengan mengetik:

./bitcoin-service.sh getwalletinfo

Sayang sekali, tapi saldo dompet kita 0,0 BTC, ini terlihat dari garis "saldo": 0,00000000. Saatnya memperbaikinya:

./bitcoin-service.sh menghasilkan 1000

Perintah ini akan membuat kita kaya raya. Ini memaksa bitcoind untuk menghasilkan 1000 blok baru, dengan jumlah yang sesuai hadiah untuk penambangan. Hasilnya, misalnya saya bisa menambang 14716.40625000 dengan cepat.

Sekarang kita dapat menghentikan daemon bitcoin pengujian dan menjalankannya dalam mode yang lebih nyaman:

bitcoin -conf=/home/developer/bitcoin-service/bitcoin.conf --daemon

bitcoind -conf=/home/developer/bitcoin-client/bitcoin.conf --daemon

Daemon akan berjalan di latar belakang, bukan menampilkan banyak informasi tidak berguna di layar. 

Sekarang kita dapat mentransfer koin dari satu iblis ke yang lain. Mari kita dapatkan alamat bitcoinnya:

./bitcoin-client.sh dapatkan alamat baru
Simpul KLIEN Bitcoin:
2Mw8q4gVeyb7kTGmGNmyVqRp4yaNCF6Niw6

#Dan sekarang mari kirimkan beberapa koin percobaan:
./bitcoin-service.sh kirim ke alamat 2Mw8q4gVeyb7kTGmGNmyVqRp4yaNCF6Niw6 500
simpul LAYANAN Bitcoin:
eec8a8efdd40d21564de027b8c9fa97b2abfb35befa5cd543f8be1f16016ef8f

Kami menerima nomor transaksi, itu berarti segalanya berjalan dengan baik. Mari kita periksa apa yang kita dapatkan:

./bitcoin-client.sh getwalletinfo

Dan disini kejutan yang tidak terlalu menyenangkan menanti kita, saldo masih sama dengan 0. Dan ini terjadi karena transaksi baru kita tidak termasuk dalam blok, dan karenanya tidak dikonfirmasi. Namun di baris “unconfirmed_balance” kita melihat 500.00000000. Baiklah, kita sudah tahu cara menambangnya.

# Satu blok saja sudah cukup untuk saat ini
./bitcoin-client.sh menghasilkan 1

Pada titik ini persiapan dapat dianggap selesai, dan saya akhirnya ingin memperoleh hasil yang lebih berharga secara praktis. 


Dalam artikel berikut saya akan membahas bagaimana kita dapat menggunakan sistem pengujian yang dihasilkan untuk pengembangan, dan pada akhirnya kita akan beralih ke implementasi sebenarnya dari gateway pembayaran.

Baca juga

32018-07-31

Lititas. Bahasa kontrak pintar baru

Saat ini terdapat lebih dari 1,700 aplikasi terdesentralisasi (DApps) yang dipublikasikan di jaringan Ethereum, dan jumlahnya terus meningkat. Meskipun semua Dapps mengandalkan kontrak pintar, keandalan kontrak pintar itu sendiri patut dipertanyakan - penjahat dunia maya telah menghasilkan lebih dari satu miliar dolar dengan meretasnya.

Ethereum, Kepada pengembang
02018-06-29

Kami menerima pembayaran dalam bitcoin: Bagian enam. Nuansa, sekali lagi nuansa

Di bagian terakhir, kami menunjukkan bahwa bukanlah ide yang buruk untuk mencari tahu fakta pembayaran dari bitcoind, daripada melalui semua alamat yang dikeluarkan.

Kepada pengembang

Artikel terbaru dari bagian Kepada pengembang

Video terbaru di saluran