Cách xây dựng một blockchain quản lý tiền ảo trong chỉ 50 dòng code

Mặc dù một số người nghĩ rằng blockchain là một giải pháp đang có nhiều vấn đề, song không có gì phải nghi ngờ, công nghệ này là một điều kỳ diệu của điện toán. Nhưng chính xác blockchain là gì?

Mặc dù một số người nghĩ rằng blockchain là một giải pháp đang có nhiều vấn đề, song không có gì phải nghi ngờ, công nghệ này là một điều kỳ diệu của điện toán. Nhưng chính xác blockchain là gì?

Theo kết quả tìm kiếm trên Google, blockchanin "là một cuốn sổ cái kỹ thuật số, trong đó ghi lại theo đúng thứ tự và công khai mọi giao dịch được thực hiện bằng bitcoin hoặc một loại tiền ảo khác".

Theo nghĩa rộng hơn, blockchain là một cơ sở dữ liệu công cộng, dữ liệu mới được lưu vào một khối (block) và được bổ sung vào một chuỗi (chain) cố định (vì thế gọi là blockchain). Trong trường hợp bitcoin và các tiền ảo khác, dữ liệu này là các nhóm giao dịch. Nhưng, dữ liệu có thể là bất kỳ loại dữ liệu nào.

Công nghệ blockchain ngày càng phổ biến với những loại tiền số mới như Bitcoin và Litecoin, những loại tiền không phải do một chính quyền trung ương nào phát hành hay kiểm soát. Điều này mang lại sự tự do cho mọi người, những người tin rằng hệ thống ngân hàng ngày nay là một cạm bẫy hay một cái gì đó chỉ gây thất vọng. Trong bài viết này, trang Tech in Asia sẽ hướng dẫn cách tạo ra một blockchain đơn giản, trong chỉ chưa đến 50 dòng code Python 2. Nó sẽ được gọi là SnakeCoin.

Đầu tiên, hãy định nghĩa block trong bài viết là thế nào. Trong blockchain, mỗi block được lưu với một dấu mốc thời gian và một chỉ số (index – cái này là tùy chọn). Trong SnakeCoin, chúng ta sẽ lưu cả hai. Để đảm bảo sự thống nhất trong toàn bộ blockchain, mỗi block sẽ có một hàm băm (hash) tự nhận dạng. Giống như Bitcoin, hàm băm của mỗi block sẽ là một mật mã của chỉ số (index), dấu mốc thời gian, dữ liệu và băm của băm block trước. Dữ liệu sẽ là bất kỳ cái gì bạn muốn.

Như vậy, chúng ta đã có cấu trúc block. Nhưng vì chúng ta đang tạo ra blockchain, chúng ta cần bắt đầu đưa các block vào chuỗi (chain) thực sự. Như đã nói, mỗi block yêu cầu thông tin từ những block trước. Vậy, block đầu tiên trong blockchain sẽ thế nào? Block đầu tiên (block gốc - genesis block) là một block đặc biệt. Trong nhiều trường hợp, block này được bổ sung thủ công hoặc có một logic duy nhất nào đó, cho phép tạo ra block này.

Chúng ta sẽ tạo ra một hàm (function) để trả về block gốc này sao cho thật dễ dàng. Block này vì thế sẽ có index 0, và nó có một giá trị dữ liệu chênh lệch và một giá trị chênh lệch trong phần tham số của hàm băm liền trước.

Như vậy, chúng ta đã có thể tạo ra một block gốc, chúng ta cần một hàm khác để tạo ra các block tiếp theo. Hàm này sẽ lấy block liền trước trong chuỗi làm tham số, tạo ra dữ liệu cho block sắp được tạo ra, và lại tiếp tục tạo ra block mới với dữ liệu phù hợp. Khi các block mới đã có thông tin hàm băm của các block trước, tính thống nhất, nguyên vẹn của blockchain sẽ tăng lên. Nếu không, rất dễ cho một kẻ bên ngoài thay đổi quá khứ và thay thế chuỗi của chúng ta với một cái hoàn toàn mới của họ.

Chuỗi các hàm băm này hoạt động như một chứng nhận bảo mật và giúp đảm bảo khi một block được thêm vào blockchain, nó sẽ không thể bị thay thế hoặc gỡ bỏ.

Đó là phần lớn mảng công việc khó khăn. Bây giờ, chúng ta đã có thể tạo ra blockchain! Trong trường hợp này, blockchain chính là một danh sách Python đơn giản. Phần tử đầu tiên chính là block đầu tiên. Và tất nhiên, chúng ta cần thêm các block kế tiếp. Bởi vì SnakeCoin là blockchain ngắn gọn nhất, chúng ta sẽ chỉ thêm 20 block mới. Chúng ta có thể làm điều này theo một vòng lặp.

Hãy kiểm tra những thứ chúng ta đã làm.

Đừng lo lắng, đã lên đến 20 block rồi.

Và ở đây, blockchain này đã hoạt động. Nếu bạn muốn xem thêm thông tin, bạn có thể điều chỉnh file nguồn và in mỗi dấu mốc thời gian hoặc dữ liệu của mỗi block.

Đó là tất cả những gì SnakeCoin phải cung cấp. Để SnakeCoin "ngang tầm" với các blockchain ngày nay, chúng ta cần thêm một số tính năng như lớp máy chủ để theo dõi những thay đổi trong chuỗi trên nhiều máy và thuật toán xác minh công việc để hạn chế số block được thêm vào trong một khoảng thời gian nhất định.

Nếu muốn hiểu hơn về kỹ thuật tạo blockchain, bạn có thể xem sách trắng về bitcoin tại đây , và xem thêm phần 2 của blockchain SnakeCoin tại đây hoặc đón đọc bài dịch phần 2 này vào ngày mai.

Hoàng Lan

Nguồn VnReview: http://vnreview.vn/tu-van-may-tinh/-/view_content/content/2233297/cach-xay-dung-mot-blockchain-quan-ly-tien-ao-trong-chi-50-dong-code