Thực chiến lập trình core blockchain - MerkleTree

Testthuthoi

VIP Members
26/06/2018
31
35 bài viết
Thực chiến lập trình core blockchain - MerkleTree
Bài viết có xu hướng cá nhân và nhiều tình tiết ngáo. Nên các bác chịu khó đọc e viết hơi dài.
Tâm sự chút nhỉ: không biết các bác có nhớ được tên tài khoản chém gió của em không testthuthoi. Nếu thấy hay hãy share và like là động lực cho em viết tiếp chứ em post hoài chẳng thấy bình luận buồn!
Đi chém gió về lý thuyết thôi! Bài viết này tập trung vào một thành phần của đồng bitcoin.

MerkleTree.png

Trong cấu trúc của 1 khối dữ liệu điển hình như bitcoin. Một Block còn có một số trường nữa nhưng cái mình cần quan tâm là 6 trường ở dưới đây vì 1 Block chính là giá trị Hash của 6 trường dưới đây. Thuật toán Hash sử dụng ở đây là thuật toán SHA-256. Mình cũng giải thích luôn thuật toán này một chút.
upload_2019-12-17_23-27-10.png
Quan tâm nhất đó chính là Merkle Root là giá trị hash của tất cả các transaction trong Block. Merkle tree, cũng như được biết đến là cây hash nhị phân, là một dạng cấu trúc dữ liệu sử dụng để lưu trữ hash của các thông tin cá nhân trong bộ dữ liệu lớn đồng thời đảm bảo việc xác minh hiệu quả bộ dữ liệu.

Merkle tree được sử dụng như một cơ chế chống phá hoại, đảm bảo rằng bộ dữ liệu không bị thay đổi.

Thôi lý thuyết nấy thôi đi vào lập trình luôn. Các bác cài cắm theo em nhé.

Việc đầu tiên cài Node.Js trên Ubuntu thôi.

upload_2019-12-17_23-27-44.png

Truy cập vào trang chủ rồi thực hiện tải phiên bản dành cho ubuntu nhớ xài 12.13.0 thôi cho ổn định, các bác xài cao hơn lỗi khó fix lắm ☹

Thực hiện cấp quyền 755 cho thư mục /opt

Di chuyển vào thư mục opt:

cd /opt

Thực hiện lệnh cấp quyền đọc ghi cho thư mục này:

Sudo chmod – R 755

upload_2019-12-17_23-30-53.png
Tiếp theo copy file nén vừa tải về vào thư mục /opt:

upload_2019-12-17_23-31-17.png

Tiếp đến trong thư mục /otp chúng ta giải nén:

upload_2019-12-17_23-31-34.png

Tiếp đến chúng ta cài đặt các biến môi trường để Ubuntu biết Node.JS của chúng ta để ở đâu.

Thực hiện lệnh

Sudo nano ~/.profile

Ghi vào file 2 dòng

export NODEJS_HOME=/opt/node-v12.13.0-linux-x64/bin

export PATH=[imath]NODEJS_HOME:[/imath]PATH

upload_2019-12-17_23-31-51.png

Lưu lại và thực hiện lệnh cập nhật lại file biến môi trường.

. ~/.profile

Sau bước đó mà mọi thứ cứ êm xịt thì các bác chạy lệnh Node để kiểm tra xem các bác cài thành công.

upload_2019-12-17_23-32-6.png

Thế là cài xong rồi chuẩn bị cho các công đoạn tiếp theo thôi!

Tiếp đến chúng ta cài npm quản lý các package của node.

Sudo apt-get install npm

upload_2019-12-17_23-32-22.png

Thực hiện tạo ra project node

Npm init

Thực hiện

Npm install merkletreejs

Cài thư viện tạo ra cây merletree.

Để tăng phần thú vị chúng ta sẽ tải file JSON gốc từ dữ liệu của blockchain
https://blockchain.info/block-height/606718?format=json
Chúng ta sẽ code sử dụng thư viện trên tính toán ra merkleroot kiểm tra tính đúng đắn của thư viện.

upload_2019-12-17_23-33-58.png

upload_2019-12-17_23-34-10.png

Thực hiện chạy và kiểm tra nếu đúng sẽ in ra merkel root.

upload_2019-12-17_23-34-28.png

Theo file 606718.json

upload_2019-12-17_23-36-19.png

Hai giá trị hoàn toàn giống nhau như vậy thư viện trên hoàn toàn tin cậy và sử dụng chúc các bác sử dụng được vào dự án lớn.
2 tệp gồm code và file dữ liệu được đính kèm là code.zip bác nào thích thì tải về nghiên cứu nhớ comment cho em vui nhé, buồn tím người.
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: whf and DiepNV88
Bên trên