blockj: Proyek blockchain sederhana berdasarkan Java
Editor Downcodes hari ini menghadirkan kepada Anda proyek blockchain (rantai konsorsium) sederhana berdasarkan Java - blockj. Ini mencakup alat enkripsi, dompet, transmisi P2P, sinkronisasi blok, konsensus jaringan dan implementasi dasar blockchain lainnya. Ini adalah proyek yang sangat cocok bagi pemula untuk mempelajari teknologi blockchain.
Struktur proyek
blockj diimplementasikan menggunakan kerangka jaringan SpringBoot + Tio. Struktur utamanya adalah sebagai berikut:
1. Program utama: diimplementasikan menggunakan kerangka SpringBoot.
2. Transmisi P2P: diimplementasikan menggunakan kerangka jaringan t-io.
Lingkungan pengoperasian
Proyek blockj membutuhkan JDK 1.8 atau lebih tinggi agar dapat berjalan dengan baik.
modul proyek
Proyek blockj terutama berisi tiga modul berikut:
1. blockj-base: Perangkat publik dasar, termasuk alat enkripsi, blok, pesan, dan model data lainnya, serta penyimpanan data dan fungsi lainnya.
2. blockj-miner: Program utama Blockchain, termasuk penambang, sinkronisasi blok, jaringan P2P, API RPC, dan fungsi lainnya.
3. blockj-client: alat baris perintah klien, terutama digunakan untuk memanggil API terkait Miner untuk mewujudkan interaksi pengguna dengan blockchain.
mulai cepat
Langkah-langkah berikut mengajarkan Anda cara membuat jaringan blockchain dan melakukan operasi dasar:
1. Membuat node genesis (membuat jaringan)
Pertama, Anda perlu mengkloning proyek dan mengkompilasi serta mengemasnya:
' pesta
git klon https://gitee.com/blackfox/blockj.git
blok cdj
paket bersih mvn
`
Kemudian, buat node genesis:
' pesta
./miner genesis --repo=/data/genesis --enable-mining=true
`
2. Mulai Genesis Miner
' pesta
./miner dijalankan --repo=/data/genesis
`
3. Memulai node baru (bergabung dengan jaringan)
Agar node baru dapat bergabung dengan jaringan yang ada, Anda perlu menginisialisasi Miner menggunakan blok genesis dan kemudian memulai Miner:
' pesta
./miner init --repo=/data/miner1 --genesis=genesis.car --api.port=8002 --p2p.port=3456
./miner dijalankan --repo=/data/miner1
`
Penggunaan klien
Berikut ini adalah beberapa operasi baris perintah klien yang umum digunakan:
1. Lihat daftar dompet
' pesta
./daftar dompet klien
`
Keluaran:
`
Alamat Saldo Nonce
0x0d181310331612e107b5e0dfdf971cfb9de780adfds 800 10
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400 0
0xb6258bc70240ee5daa213f671c08db51e50a4cbe 50800 30
cd3da3ec4195070e13a6d88b75101f6ceb427a8e 0 0
`
2. Buat dompet baru
Buat dompet biasa:
' pesta
./dompet klien baru
`
Buat dompet dengan frasa mnemonik (Anda dapat mengatur kata sandi dan membuat file keystore):
' pesta
./dompet klien baru --mnemonic=true 123456
`
3. Periksa saldo dompet
' pesta
./saldo dompet klien 0x2505bf54f3a63848e44a105e8de599ad08ae8c58
`
Keluaran:
`
Saldo Alamat
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400
`
4. Pemindahan
' pesta
./pengiriman rantai klien --dari=0x0d181310331612e107b5e0dfdf971cfb9de780adfds 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 123
`
Keluaran:
`
Kirim pesan, ID: 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
`
5. Periksa ketinggian rantai saat ini
' pesta
./kepala rantai klien
`
6. Lihat pesan pada rantai tertentu
' pesta
./rantai klien getMessage 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
`
Keluaran:
`
Pesan{versi=1, dari='0x0d181310331612e107b5e0dfdf971cfb9de780adfds', ke='0x2505bf54f3a63848e44a105e8de599ad08ae8c58', nilai=123, stempel waktu=1672826743640, pub Kunci='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSCw5EXe33S25zZDT25sNYu1bjtBfaCwEGSgnGhJiE31fCfDsyE3pNFw7cC87VfQZQqiEdntMmztfpiDcRe1gv3aJJ4', cid='05b6074241f14 06cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631', status=MENAMBAHKAN, nonce=2, params= 'batal', tinggi=0, tanda='30460221009A8B2750A6D986EB926B67163B740BBACDD07FE2D87F8FA9AE2F08424989477602210082C1C36EAEEC6367C023847F995291873F305B8 67 E9B65A5C68ED8A4293DB890'}
`
7. Lihat informasi blok pada ketinggian tertentu
' pesta
./rantai klien getBlock 1
`
Keluaran:
`
Blok {header = blockheader {height = 1, kesulitan = 2826953036454149273332760011886696253239742350009903329037282828282828282828242424, 6C9336D7A8335CB8FEA5A06B0B1FD7488C3C9B140987CC ', sebelumnya HASH =' ed5126DDD65F39A17739B8E26A3EDECFF6BF196148DC2599.126dC25.1EF6BF1961488DC251 'B099' , ke='0xb6258bc70240ee5daa213f671c08db51e50a4cbe', nilai=50, stempel waktu=1672813674163, pubKey='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSD1ErKp8AqSj4Ph9Jsj2Gvk7w1 pyLg qDRiguC7JvjeGZJZ1si1qRYCAsVmu1UvYRqvhiCBgYDpmyuWK5VzD5KK4RNY', cid='3e1f8987b0d66b2de155e78aeef6984ab7cb6c3acdf03c835c01f4b4088fb90d', status=SUKSES, nonce=0 , params='Hadiah Penambang.', tinggi=1, tanda= '304402202DF6EABBF5C81C41996C44F8E1230D44CAE8ADA9184B466D9B708ADC8B050225022049D74E4E99E0EA8E56208AD2E4B7B17C2320 DC3E6461A17C94D18208 18559CA9 '}], blokTanda='3046022100C04714C00642527AF6AA1DB2B537E5FD887F52999F66929AA2A928D4C6A4897A022100AF98888FDC825FFB0683E8D65494363790E 5173F 3991AF61AB86DEEFEAF15D81'}
`
8. Lihat daftar node P2P di jaringan saat ini
' pesta
./client rekan jaringan
`
9. Lihat informasi koneksi P2P node saat ini
' pesta
./client net dengarkan
`
Keluaran:
`
Informasi koneksi P2P, dulunya dihubungkan oleh node lain
127.0.0.1:2345
`
10. Hubungkan sebuah node secara manual
' pesta
./klien koneksi internet 192.22.33.11:3456
`
ringkasan
Proyek blockj adalah proyek tingkat pemula untuk mempelajari teknologi blockchain. Melaluinya, Anda dapat mempelajari konsep dasar dan metode implementasi blockchain. Tentu saja, saat ini hanya mengimplementasikan algoritma konsensus POW. Jika Anda ingin menggunakannya dalam proyek produksi, Anda perlu memodifikasi dan meningkatkannya sesuai dengan kebutuhan proyek Anda.
Semoga artikel ini bermanfaat bagi Anda.