Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Để người nông dân cũng hiểu được Blockchain - Part 3

Tiếp tục phần 2, bài viết này tiếp tục giới thiệu cho các bạn các khái niệm về blockchain bằng phương pháp cải cách của ngành giáo dục. Đảm bảo không chỉ bác nông dân mà các cháu thiếu nhi, mẫu giáo cũng hiểu được



Học blockchain


Con trỏ Hash (Hash Pointer)

Trước khi giải thích về Hash Pointer thì chúng ta cần back lại kiến thức cơ bản về Hash. Nếu học về cấu trúc dữ liệu và giải thuật thì bạn sẽ quen thuộc với khái niệm hash function. Có thể tạm hiểu thế này
Phương pháp cải cách giáo dục sử dụng hình vuông tròn để mô tả câu văn như ở dưới
học blockchain
Túm váy là khi nhìn vào chỉ toàn thấy thòng lòng xích chó các hình vẽ mà không biết nội dung là gì.
Cái hàm hash này cũng tương tự như vậy, là giải thuật nhằm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu (thường là chuỗi kí tự). Mỗi chuỗi ký tự kiểu như “Gà Sống Thiến Sót Bùi Hiển” sau khi qua hash có thể biến thành mỗi chuỗi string loằng ngoằng có độ dài cố định như ở dưới.
Ví dụ hàm băm SHA256 có độ dài 64 ký tự, chuỗi string “Cải cách giáo dục” sẽ ra thế này
SHA256(“Cải cách giáo dục”) = 7A143A10394B8F466FCB6FB680DA181780E8C9DF4B55913D24A0659A8D13C952
https://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Cryptographic_Hash_Function.svg/375px-Cryptographic_Hash_Function.svg.png
Hàm hash được dùng trong nhiều lĩnh vực, đặc biệt là mảng mật mã, mã hóa thông tin. (Giống như dùng kí hiệu vuông tròn trong sách cải cách giáo dục). Ứng dụng thấy rõ nhất khi bạn login vào thiendia, khi bạn gõ password “bạn anh thiendia” thì thứ bạn gửi đến server sẽ là SHA256(“bạn anh thiendia”), một chuỗi string dài loằng ngoằng, và server sẽ so sánh chuỗi string đó xem có map với DB không. Do đó Hacker có hack được DB thiendia thì cũng không thể dò ra password của bạn được do hàm hash không thể convert ngược lại.
Một hàm băm tốt là một phép biến đổi "một chiều", nghĩa là chuỗi “Gà Sống Thiến Sót Bùi Hiển” sau khi băm sang chuổi “abc12x232” sẽ không thể chuyển đổi ngược lại.
Do những ưu điểm trên, Hash đã được sử dụng trong blockchain. Như đã mô tả trong các bài viết trước, blockchain là một chuỗi các block dữ liệu được nối với nhau, giống như dữ liệu LinkedList
học blockchain
Con trỏ Hash của blockchain thực chất cũng là con trỏ thông thường trong LinkedList như có kèm theo giá trị hash của nội dung được trỏ tới
Ví dụ


Với blockchain, ngoài việc có thể trỏ tới block trước đó, mỗi block còn có thể lưu giá trị digest (giá trị hash) của khối được trỏ tới. Chẳng hạn block “Đẹp” lưu hash của khối mà nó trỏ tới là “Mười” (32d222), và cứ thế
Như vậy nếu có thanh niên nào sửa block “Mười” thành “Rùa” thì hash sẽ bị thay đổi, và chúng ta sẽ detect được nhanh chóng dựa vào hash. Hash có thể được xem như là ID của mỗi block do tính chất unique của nó.
Nonce là gì
Theo cách giải thích của Wiki thì như thế này
The "nonce" in a bitcoin block is a 32-bit (4-byte) field whose value is adjusted by miners so that the hash of the block will be less than or equal to the current target of the network. The rest of the fields may not be changed, as they have a defined meaning.


Vậy hãy hiểu đơn giản theo cách đổi mới giáo dục như thế này
Ở ví dụ trên có chuỗi blockchain “THÁP MƯỜI ĐẸP NHẤT BÔNG SEN”, giờ muốn thêm 1 khối hợp lệ nữa thì làm thế nào. Cách làm tương tự trên, cần tạo một khối có chứa hash trỏ vào block SEN, cần tính được giá trị của hash này.
Hàm hash sẽ cần đầu vào là Thứ tự block (index) + hash trước đó + thời gian (timestamp) + dữ liệu cũ (data) và thêm một số gọi là nonce
input = index + previousHash + timestamp + data + nonce;
hash = CryptoJS.SHA256(input)
Giá trị của nonce phải thỏa mãn điều kiện
Hash(X + nonce) <= D
X là dữ liệu đã có (thời gian, hash trước đó…), D là một giá trị yêu cầu, thường gắn với difficulty của hệ thống. Công việc của các miner là làm sao tìm được nonce thỏa mãn điều kiện trên. Ai tìm được nonce trước thì khối của người đó hợp lệ và sẽ được nối vào chuỗi blockchain.
Nếu hệ thống có độ khó càng cao thì D càng nhỏ và việc tìm ra nonce càng khó
Ví dụ
Hash (X + nonce) < 50
Như vậy cần tìm nonce sao cho Hash(X+nonce) bằng từ 1 ~ 49 là thỏa mãn ( 49 khả năng), nếu D giảm xuống còn 20 thì chỉ còn 19 khả năng, xác suất thành công giảm.
Nó cũng tương tự như trong phòng có 68 em gái trong đó có 49 em cá sấu, 19 em chân dài. Giờ bịt mắt vơ đại 1 em thì xác suất trúng được em chân dài chỉ là 19/68, khó hơn

(Còn tiếp)

Đăng nhận xét

0 Nhận xét