blockj: โครงการบล็อกเชนอย่างง่ายที่ใช้ Java
บรรณาธิการของ Downcodes วันนี้ขอนำเสนอโครงการบล็อกเชน (consortium chain) แบบง่ายๆ ที่ใช้ Java - blockj ให้กับคุณ ประกอบด้วยเครื่องมือเข้ารหัส กระเป๋าเงิน การส่งผ่าน P2P การซิงโครไนซ์บล็อก มติเครือข่าย และการใช้งานพื้นฐานของบล็อกเชนอื่น ๆ ถือเป็นโครงการที่เหมาะสมมากสำหรับผู้เริ่มต้นในการเรียนรู้เทคโนโลยีบล็อกเชน
โครงสร้างโครงการ
blockj ถูกนำไปใช้โดยใช้เฟรมเวิร์กเครือข่าย SpringBoot + Tio โครงสร้างหลักมีดังนี้:
1. โปรแกรมหลัก: ใช้งานโดยใช้เฟรมเวิร์ก SpringBoot
2. การส่งผ่าน P2P: ใช้งานโดยใช้กรอบเครือข่าย t-io
สภาพแวดล้อมการทำงาน
โครงการ blockj ต้องใช้ JDK 1.8 ขึ้นไปเพื่อให้ทำงานได้อย่างถูกต้อง
โมดูลโครงการ
โครงการ blockj ส่วนใหญ่ประกอบด้วยสามโมดูลต่อไปนี้:
1. blockj-base: ชุดเครื่องมือสาธารณะพื้นฐาน รวมถึงเครื่องมือเข้ารหัส บล็อก ข้อความ และโมเดลข้อมูลอื่น ๆ รวมถึงการจัดเก็บข้อมูลและฟังก์ชันอื่น ๆ
2. blockj-miner: โปรแกรมหลักของ Blockchain รวมถึงคนงานเหมือง, การซิงโครไนซ์บล็อก, เครือข่าย P2P, RPC API และฟังก์ชั่นอื่น ๆ
3. blockj-client: เครื่องมือบรรทัดคำสั่งไคลเอนต์ ซึ่งส่วนใหญ่ใช้เพื่อเรียก API ที่เกี่ยวข้องกับ Miner เพื่อให้ทราบถึงการโต้ตอบของผู้ใช้กับ blockchain
เริ่มต้นอย่างรวดเร็ว
ขั้นตอนต่อไปนี้จะสอนวิธีสร้างเครือข่ายบล็อกเชนและดำเนินการขั้นพื้นฐาน:
1. สร้างโหนดกำเนิด (สร้างเครือข่าย)
ขั้นแรก คุณต้องโคลนโปรเจ็กต์และคอมไพล์และจัดทำแพ็คเกจ:
`ทุบตี
โคลนคอมไพล์ https://gitee.com/blackfox/blockj.git
บล็อกซีดีj
mvn แพ็คเกจที่สะอาด
-
จากนั้นสร้างโหนดกำเนิด:
`ทุบตี
./miner genesis --repo=/data/genesis --enable-mining=true
-
2. เริ่ม Genesis Miner
`ทุบตี
./miner run --repo=/data/genesis
-
3. เริ่มโหนดใหม่ (เข้าร่วมเครือข่าย)
เพื่อให้โหนดใหม่เข้าร่วมเครือข่ายที่มีอยู่ คุณจะต้องเริ่มต้น Miner โดยใช้ genesis block จากนั้นจึงเริ่ม Miner:
`ทุบตี
./miner init --repo=/data/miner1 --genesis=genesis.car --api.port=8002 --p2p.port=3456
./miner run --repo=/data/miner1
-
การใช้งานของลูกค้า
ต่อไปนี้คือการดำเนินการบรรทัดคำสั่งไคลเอ็นต์ที่ใช้โดยทั่วไป:
1. ดูรายการกระเป๋าเงิน
`ทุบตี
./รายการกระเป๋าเงินลูกค้า
-
เอาท์พุท:
-
ที่อยู่คงเหลือ Nonce
0x0d181310331612e107b5e0dfdf971cfb9de780adfds 800 10
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400 0
0xb6258bc70240ee5daa213f671c08db51e50a4cbe 50800 30
cd3da3ec4195070e13a6d88b75101f6ceb427a8e 0 0
-
2. สร้างกระเป๋าเงินใหม่
สร้างกระเป๋าเงินปกติ:
`ทุบตี
./client wallet ใหม่
-
สร้างกระเป๋าเงินด้วยวลีช่วยจำ (คุณสามารถตั้งรหัสผ่านและสร้างไฟล์ที่เก็บคีย์ได้):
`ทุบตี
./client wallet new --mnemonic=true 123456
-
3. ตรวจสอบยอดเงินในกระเป๋าสตางค์
`ทุบตี
./ยอดกระเป๋าสตางค์ลูกค้า 0x2505bf54f3a63848e44a105e8de599ad08ae8c58
-
เอาท์พุท:
-
ที่อยู่คงเหลือ
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400
-
4. การโอน
`ทุบตี
./client chain ส่ง --from=0x0d181310331612e107b5e0dfdf971cfb9de780adfds 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 123
-
เอาท์พุท:
-
ส่งข้อความ CID: 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
-
5. ตรวจสอบความสูงของโซ่ปัจจุบัน
`ทุบตี
./หัวลูกโซ่ลูกค้า
-
6. ดูข้อความในห่วงโซ่ที่ระบุ
`ทุบตี
./ไคลเอนต์เชน getMessage 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
-
เอาท์พุท:
-
ข้อความ{version=1, from='0x0d181310331612e107b5e0dfdf971cfb9de780adfds', ถึง='0x2505bf54f3a63848e44a105e8de599ad08ae8c58', value=123, timestamp=1672826743640, pub คีย์='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSCw5EXe33S25zZDT25sNYu1bjtBfaCwEGSgnGhJiE31fCfDsyE3pNFw7cC87VfQZQqiEdntMmztfpiDcRe1gv3aJJ4', cid='05b6074241f1 4 06cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631', สถานะ=ผนวก, ไม่มี=2, พารามิเตอร์= 'null', ความสูง=0, เครื่องหมาย='30460221009A8B2750A6D986EB926B67163B740BBACDD07FE2D87F8FA9AE2F08424989477602210082C1C36EAEEC6367C023847F995291873F305B8 67 E9B65A5C68ED8A4293DB890'}
-
7. ดูข้อมูลบล็อกที่ความสูงที่กำหนด
`ทุบตี
./client เชน getBlock 1
-
เอาท์พุท:
-
block {header = blockheader {ความสูง = 1, ความยาก = 2826955303645414927333276001188669625323974235000990329945692206816416666667284 6C9336D7A8335CB8FEA5A06B0B1FD7488C3C9B140987CC ', preventHash =' ED5126DDD65F39A17739B8E26EOANEADECFFF6BF196148DC259DC 'B099' , to='0xb6258bc70240ee5daa213f671c08db51e50a4cbe', value=50, การประทับเวลา=1672813674163, pubKey='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSD1ErKp8AqSj4Ph9Jsj2Gvk7w1py Lg qDRiguC7JvjeGZJZ1si1qRYCAsVmu1UvYRqvhiCBgYDpmyuWK5VzD5KK4RNY', cid='3e1f8987b0d66b2de155e78aeef6984ab7cb6c3acdf03c835c01f4b4088fb90d', สถานะ=ความสำเร็จ, =0 , params='รางวัลนักขุด', ความสูง=1, เครื่องหมาย= '304402202DF6EABBF5C81C41996C44F8E1230D44CAE8ADA9184B466D9B708ADC8B050225022049D74E4E99E0EA8E56208AD2E4B7B17C2320 DC3E6461A17C94D1820 818559CA9 '}], blockSign='3046022100C04714C00642527AF6AA1DB2B537E5FD887F52999F66929AA2A928D4C6A4897A022100AF98888FDC825FFB0683E8D65494363790E 5173F 3991AF61AB86DEEFEAF15D81'}
-
8. ดูรายการโหนด P2P ในเครือข่ายปัจจุบัน
`ทุบตี
./client net peers
-
9. ดูข้อมูลการเชื่อมต่อ P2P โหนดปัจจุบัน
`ทุบตี
./client net ฟัง
-
เอาท์พุท:
-
ข้อมูลการเชื่อมต่อ P2P ใช้เพื่อเชื่อมต่อโดยโหนดอื่น
127.0.0.1:2345
-
10. เชื่อมต่อโหนดด้วยตนเอง
`ทุบตี
./client net เชื่อมต่อ 192.22.33.11:3456
-
สรุป
โครงการ blockj เป็นโครงการระดับเริ่มต้นสำหรับการเรียนรู้เทคโนโลยีบล็อกเชน คุณสามารถเรียนรู้แนวคิดพื้นฐานและวิธีการใช้งานบล็อคเชนผ่านสิ่งนี้ แน่นอนว่าขณะนี้ใช้เฉพาะอัลกอริธึมฉันทามติของ POW เท่านั้น หากคุณต้องการใช้ในโครงการการผลิต คุณจะต้องแก้ไขและปรับปรุงตามความต้องการของโครงการของคุณเอง
หวังว่าบทความนี้จะเป็นประโยชน์กับคุณ