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

Thảo luận trong 'Blockchain chuyên sâu' bắt đầu bởi tomking, 6/10/18.

  1. 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

    [​IMG]


    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

    [​IMG]


    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

    [​IMG]

    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

    [​IMG]


    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ụ

    [​IMG]


    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.

    [​IMG]


    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.

    (Còn tiếp)
    Source: giaosucan.com
     
: blockchain

Chia sẻ trang này