Cùng với HTML và CSS, JS là một trong ba công nghệ cốt lõi trong World Wide Web Content Production. Javascript thường được sử dụng để tạo các trang web có độ tương tác cao. Vì vậy, bây giờ, bài viết này sẽ giúp bạn đọc tìm hiểu xem làm thế nào để tạo ra một blockchain rất đơn giản bằng cách sử dụng Javascript.
Giả sử, chúng ta muốn tạo một blockchain đơn giản trong Javascript. Trước khi thực hiện điều này, có một số điều mà chúng ta cần phải làm rõ.
Blockchain là gì và chính xác nó hoạt động như thế nào?
Blockchain là gì?
Blockchain về cơ bản là một chuỗi các khối chứa dữ liệu. Nó cơ bản là một danh sách liên kết. Vậy điều gì làm cho nó trở nên đặc biệt? Một blockchain là bất biến. Khi một dữ liệu đi vào trong một khối, nó không bao giờ có thể thay đổi được nữa. Làm thế nào để một blockchain đạt được tính bất biến? Đó là do một cơ chế đơn giản nhưng khéo léo được gọi là "hashing". Hãy xem sơ đồ bên dưới:
Mỗi khối được kết nối với khối trước đó thông qua một con trỏ hash có chứa hash của khối trước đó. Một trong những thuộc tính hấp dẫn nhất của hàm cryptographic hash là nếu bạn thay đổi input dù chỉ một chút thì cũng có thể ảnh hưởng lớn đến kết quả hash đầu ra. Ví dụ, bạn có thể thử kiểm tra điều này:
Chỉ cần chuyển "T" viết hoa thành viết thường sẽ thay đổi đáng kể hash kết quả.
Vậy, điều này ảnh hưởng đến blockchain như thế nào?
Mỗi khối được kết nối với khối trước thông qua con trỏ hash. Vì vậy, nếu ai đó đã giả mạo dữ liệu trong một khối, nó sẽ thay đổi hash rất nhiều và kết quả cuối cùng là ảnh hưởng đến toàn bộ chuỗi (vì tất cả các khối được liên kết). Điều này sẽ đóng băng chuỗi đó và từ đây các khối không thể thay đổi.
Vậy chúng ta tạo ra một khối như thế nào? Một khối đơn giản bao gồm những gì? Trong cryptocoin (tiền kỹ thuật số) đơn giản mà chúng ta sẽ tạo (tạm gọi là "BlockGeeksCoin"), mỗi khối sẽ có các thông tin sau:
- Index: Để biết số khối.
- Timestamp: Để biết thời gian tạo.
- Data: Dữ liệu bên trong khối.
- Previous Hash: Hash của khối trước đó.
- Hash: Hash của khối hiện tại.
Trước khi tiếp tục, bạn cần phải hiểu một số thuật ngữ nhất định sau đây:
- This: Từ khóa "this" được gọi bên trong một hàm và cho phép bạn truy cập các giá trị bên trong một đối tượng cụ thể gọi hàm đó.
- Constructor: Constructor là một hàm đặc biệt có thể giúp tạo và khởi tạo một đối tượng trong một lớp. Mỗi lớp được giới hạn chỉ có một Constructor duy nhất.
Bây giờ mọi thứ đã xong, hãy bắt đầu tạo khối.
Tạo khối
const SHA256 = require("crypto-js/sha256"); class Block { constructor(index, timestamp, data, previousHash = '') { this.index = index; this.previousHash = previousHash; this.timestamp = timestamp; this.data = data; this.hash = this.calculateHash(); } calculateHash() { return SHA256(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data)).toString(); } }
Phân tích code
Dòng đầu tiên của đoạn code trên dùng để gọi thư viện crypto-js vì hàm hash sha256không có sẵn trong JavaScript.
Tiếp theo, gọi một hàm tạo bên trong lớp để gọi các đối tượng có các giá trị nhất định. Thứ bạn nhìn thấy đầu tiên là hàm calculateHash(). Hãy xem chính xác nó đang thực hiện chức năng gì.
Trong một khối, chúng ta sẽ lấy tất cả các nội dung và hash của chúng để có được hash của khối cụ thể đó. Sử dụng hàm JSON.stringify để biến dữ liệu của khối thành chuỗi.
Vậy là chúng ta đã tạo khối thành công. Bây giờ hãy kết nối các khối lại với nhau thành một blockchain.
Leave a Comment