Sau bài mở đầu về blockchain và cryptocurrency, nay mình đem đến anh em một bài khác, gần như là bài nhập môn về blockchain. Anh em không ít thì nhiều khi nghe tới cryptocurrency, thường nghe kèm theo từ blockchain. Vậy thật sự blockchain là gì? Trong bài viết này, mình sẽ cố gắng giải thích một cách đơn giản và trực quan để giúp giúp anh em có câu trả lời. Bên cạnh đó, mình cũng sẽ giải thích và minh hoạ cho anh em hiểu thợ đào Bitcoin hay những đồng crypto khác là gì? Hy vọng qua bài viết này, anh em sẽ không còn nghĩ là họ đang giải phương trình toán gì đó phức tạp. Thật ra là họ KHÔNG giải toán, tất cả chỉ là chơi đoán thử và sai.
Bài này mình nghĩ sẽ rất hay. Bản thân mình phải dành cả tháng để tìm được nguồn tài liệu và cách minh hoạ dễ hiểu. Sau bài này, mình nghĩ anh em có thể tự tin nói mình hiểu blockchain, đào bitcoin là gì, và giải thích được cho người khác nó là cái gì. Anh em lấy ly cafe hay ly trà ra ngồi đọc hen.
Anh em vui lòng tôn trọng mình, chỉ thảo luận về công nghệ, KHÔNG thảo luận giá cả, kêu gọi người khác mua bán, đầu tư.
BLOCKCHAIN là gì?
Blockchain là từ được ghép từ 2 từ block và chain. Block có thể dịch ra là khối, nơi lưu những giao dịch (transaction) được mã hoá bằng hash (hash function). Khi một khối được hình thành, nó sẽ được gắn vào khối trước đó, khối trước đó được gắn vào khối trước đó, cho đến khối đầu tiên (genesis block), từ đó thì chúng tạo thành một chuỗi (hình 1). Vì vậy, có thể hiểu một cách tóm tắt blockchain là chính là sổ cái (ledger), lưu trữ lại tất cả các giao dịch từng xảy ra trong các khối sắp xếp theo thứ tự thời gian. Với ngân hàng truyền thống, sổ cái này thuộc về ngân hàng, và chỉ có ngân hàng mới có thể truy cập vào đó (private). Trong blockchain, sổ cái này không thuộc quyền sở hữu của bất kỳ ai, và ai cũng có thể truy cập (public) và duy trì nó. Những thợ đào (miner), chính là người xử lý những giao dịch, bỏ chúng vào khối, và sau đó là ghép các khối vào chuỗi.Lý thuyết là vậy, để hiểu rõ hơn cả việc block, blockchain, và miner trong thực tế là gì, liên hệ ra sao, mời anh em đọc tiếp.
Đào Bitcoin là gì?
Hash trong blockchain là gì?
Để giải thích đào Bitcoin là gì, mình phải nói sơ về mã hoá hash mà khi nãy mình có đề cập: “các giao dịch trong một block được mã hoá hash”. Hash là một cách để mã hoá dữ liệu.
Một cách dễ hiểu là dữ liệu thông qua hash, nó sẽ được mã hoá thành một chuỗi ký tự và số vô nghĩa, một cách random.
Có ba đặc tính quan trọng của mã hoá hash:
Cùng một thông tin giống nhau hoàn toàn, bạn sẽ có một chuỗi hash tương tự.
Không quan trọng thông tin anh em đưa vào ít hay nhiều, có thể là cả trang giấy, cả cuốn sách, hay chỉ là một ký tự, hay không có gì hết, anh em đều có một chuỗi hash.
Gần như bạn không thể dịch ngược lại thông tin sau khi đã mã hoá. Có nghĩa là mình cho anh em cái chuỗi hash đó, anh em gần như không thể dịch lại cái thông tin mình đã cung cấp ban đầu. Anh em gần như, chỉ có thể đoán mò, bằng cách đưa thông tin đầu vào cho đến khi cái chuỗi hash nó tương tự.
Anh em xem thử GIF minh hoạ dưới đây nhé. Khi mình gõ: “Hoang”, mình có một chuỗi hash: 8fd446866f86f2cc6e71b1697c0b4379036b087d1b7bfd73c8894e3c45cc45e9. Mình xoá, rồi gõ lại bao nhiêu lần đều ra y chang cái chuỗi hash đó.
Nhưng nếu có thay đổi nhỏ, ví dụ mình gõ: “hoang”, thì nó lại có chuỗi hash khác: 270723e7f50a26d4ae90da0e13079f293dd37e9953f7f9801ce7de19a35fc58e.
Hash trong Bitcoin là: “64-bit hexadecimal numbers”. Cái hash này có kích thước 64 bits. Hexadecimal numbers có nghĩa là hash 1 ký tự trong chuỗi hash có thể là một trong những con số từ 0 tới 9 (decimal) hoặc là một trong 6 ký tự (hexa): a, b, c, d, e và f.
Block trong blockchain là gì?
Okay, bây giờ anh em biết thông tin được mã hoá hash như thế nào. Về cơ bản một block sẽ có những thông tin như sau:
Block: thứ tự của block hiện tại (n).
Nonce (number only used once): một con số bất kỳ (random).
Data: chứa những giao dịch (transaction).
Target hash: Hash của block, có rất nhiều yếu tố để tạo ra hash của một block (ba cái thông tin phía trên, độ khó (difficulty), vân vân). Anh em nhớ phía trên không, input khác nhau, sẽ cho ra cái hash khác nhau. Anh em có thể hiểu tóm tắt là, cái hash này là cái hệ thống nó tạo ra, và các miner phải tìm ra để được thưởng Bitcoin.
Tất cả miner, đều nhận được data: thông tin về các giao dịch như nhau của một block như nhau, tất tần tật các thông tin khác cũng giống nhau, ngoại trừ cái nonce. Họ đào (mine) hay xử lý cái block đó ở đây, không có nghĩa họ phải đi tìm ra cái hash của cái block (gần như là không thể), mà họ đi đoán mò cái “nonce”. Họ đoán cho tới khi cái nonce của họ cho ra cái hash giống như cái hash của cái block.
Anh em xem dùm mình tấm hình dưới đây, là thông tin của block #695359 đã được đào vào ngày 12/08/2021. Anh em để ý dùm mình dòng đầu tiên – Hash, đây là hash của block mà mình nói phía trên, và dòng thứ 13 – Nonce, mà miner này tìm, cho ra cái khác gần đúng với cái hash của block. Mình sẽ nói về vấn đề gần đúng phía dưới.
Nguồn: blockchain.com.
Để dễ hình dung anh em xem GIF dưới đây dùm mình. Mình cũng như các miner khác đều có cùng thông tin của cái block đó: block number (trường hợp này là block đầu tiên – genesis block), data (trường hợp này là Hoang Nguyen). Anh em có để ý thấy cái block của mình màu đỏ không, tức là cái nonce của mình không đúng. Mình thử gõ từ đủ thứ số vào mục nonce, nhưng nó vẫn màu đỏ, tức là cái hash của mình chưa đúng. Để nhanh hơn, mình nhấn nút mine, hệ thống bắt đầu sẽ thử từng con số, cho tới cái nonce: 40693, cho ra cái hash: 0000bce6d4a46716902d3329858dc021a089d261d73e68da214097da715c2944, đúng và cái block nó chuyển thành màu xanh. Vậy là mình đã đào được một block rồi.
Hy vọng tới đây anh em đã hiểu công việc của miner là đi mò ra cái nonce để cho ra cái hash gần đúng với cái hash của block mà hệ thống nó đặt ra. Vậy gần đúng là gì? Để được thưởng cho việc đào thành công một block, miner phải là người tìm ra nonce, cho ra cái hash gần bằng hoặc ít hơn cái target hash. Để dễ hình dung anh em xem thử tấm hình phía dưới dùm mình.
Giả sử cái hash của block là cột target, là cái hash mà các miner phải tìm ra )dựa trên việc thử và sai cái nonce).
Miner 1: Cái hash không thoả mãn cái điều kiện gần bằng hoặc nhỏ hơn, do target hash có 17 con số 0, hash của miner 1 chỉ có 16 con số 0.
Miner 2: khá hơn một chút, có 17 con số 0, nhưng con số thứ 18 – d, lại lớn hơn con số thứ 18 – 5 của target hash. Anh em xem lại cái bảng bên trên, ký tự ‘d’ tương ứng với số 13 trong hexadecimal, và 13 dĩ nhiên là lớn hơn 5 của target hash rồi.
Miner 3: ký tự 18 là số 4, nhỏ hơn 5 của target hash. Vậy là trong 3 người miner này, thì miner số 3 sẽ nhận được Bitcoin như là block reward.
Miner nào tìm ra cái nonce cho chuỗi hash gần bằng hoặc nhỏ hơn target hash sẽ là người nhận được block reward. Cái này trong blockchain, người ta gọi là proof of work (mình không biết dịch ra tiếng Việt là gì). Một số anh em sẽ nghĩ đây giống như trò đoán mò, và hên xui. Chính xác việc đào Bitcoin và một số cryptocurrency khác là trò đoán mò. Nên để tăng khả năng đoán trúng, những miner hiện tại sử dụng nhiều thứ để tăng cái hash rate (số hash trong một giây, hay đơn giản ở đây là đoán cành nhanh và càng nhiều cái nonce này càng tốt). Giống như mua vé số, muốn tăng khả năng trúng, chỉ có cách là mua càng nhiều vé càng tốt.
Nhưng lỡ cùng một lúc, có hai miner đều cho ra kết quả giống nhau, thì ai sẽ được nhận cái block reward? Có một cái luật (protocol) đã được quy định, giữa hai người miner này, ai đã từng xử lý (add) được nhiều block nhất vào cái blockchain, sẽ được nhận block reward này.
Blockchain hoạt động thế nào?
Okay, vậy là anh em đã hiểu làm sao mà các giao dịch (transaction) trong một block được miner đào được. Vậy khi gắn nó vào một chuỗi thì như thế nào? Anh em xem hình sẽ thấy, target hash của một block còn phụ thuộc một biến số nữa là hash của block trước (n-1) – previous hash, mà mình không nhắc tới phía trên. Cái previous hash này rất quan trọng.
Tại sao cái previous hash này rất quan trọng? Vì nếu anh em thay đổi thông tin của một block nào đó, cái target hash nó cũng sẽ phải thay đổi. Thành ra, khi thay đổi một thông tin nào đó của một block, nó sẽ kéo theo tất cả các block sau đó không còn đúng (invalidate), vì hash của một block, phụ thuộc vào cái hash của block trước đó.
Cho trực quan, anh em xem qua cái GIF này của mình nhé. Mở đầu, anh em thấy mình có 5 block, tất cả đều đã được đào (mine) thành công và gắn vào chuỗi (chain). Cả 5 block đều là green. Hash của 1 block (n), là prev hash của block sau đó (n+1).
Mình bắt đầu sửa một giao dịch của block số 3, anh em thấy là block thứ 3, và các block sau đó nó bị invalidate và chuyển sang màu đỏ hết không? Lý do như mình nói là cái target hash của block số 3 không còn đúng (invalid) nữa, nên nó sẽ kéo theo block số 4 (prev hash dựa vào hash của block số 3), và block số 5 (prev hash dựa vào block số 4) đều sai và đỏ hết.
Vậy để sửa cái này, bắt buộc mình phải đào lại hay tìm cái nonce mới từ block số 3 trở đi. Tức là mình phải tìm từng cái nonce đúng cho block 3, 4, và 5. Anh em thấy mình phải nhấn mine để tìm lại cái nonce cho 3 block trên, và sau đó cả 3 block (3, 4, và 5) đều xanh (valid) trở lại.
Anh em sửa thông tin của một block càng về trước, thì số block anh em phải đào lại (remine) từ đầu càng nhiều. Nên gần như là không thể để sửa một giao dịch trong một blockchain.
Vậy ví dụ có một ông miner nào đó sửa dữ liệu giao dịch, thêm bớt gì đó thì sao? Chuyện này vẫn có thể xảy ra, nhưng cái blockchain mà anh em bỏ thêm thông tin không chính xác và sẽ bị loại bỏ (rejected). Vì cái blockchain (sổ cái) này được chia sẻ với tất cả các nodes trên toàn thế giới. Các nodes làm nhiệm vụ lưu trữ cái blockchain chứa đựng các thông tin giao dịch, đặc biệt là cái hash của các block. Các nodes này liên kết và trao đổi dữ liệu với nhau, để đảm bảo cái blockchain của mình là mới nhất (up-to-date).
Như trong GIF bên trên, anh em thấy Peer A (giả sử là miner 1), làm giả số liệu ở giao dịch. Sau khi đào và đẩy cái block này lên network, các nodes chỉ cần so sánh, họ thấy cái blockchain của Peer B và Peer C là có hai cái hash giống nhau ở block số 5 là giống nhau, thế là cái blockchain của Peer A sẽ bị bỏ (rejected). Như trong bài viết của Unocoin vào năm 2018, phải tốn ít nhất 30 tỷ đô la Mỹ để làm giả một giao dịch [3]. Đặc tính không thể sửa đổi (immutable) này rất quan trọng, giúp cho blockchain về cơ bản là an toàn để có thể giử lý giao dịch, và tránh tình trạng xài tiền hai lần (double-spending), hay tiền giả (counterfeit). Và còn nhiều ứng dụng nữa, mình sẽ viết ở bài sau.
Vậy đó, tới đây anh em gần như đã nắm được blockchain là gì, và các miner làm gì. Thiệt ra còn rất nhiều vấn đề kỹ thuật phía sau nữa, nhưng những gì cơ bản nhất của blockchain anh em có thể nắm được rồi. Nếu vẫn còn thắc mắc, anh em cứ đặt câu hỏi bên dưới để trao đổi nhé hoặc mình sẽ có một bài viết riêng trả lời những thắc mắc của anh em.
Ở bài số 3 tới, mình sẽ viết về: Tại sao lại có nhiều loại cryptocurrency, Bitcoin vs Altcoins. Anh em đón xem nhé.
Đôi lời chia sẻ:
Từ bài viết đầu tiên, có một vài thứ mình muốn chia sẻ ở đây, hy vọng anh em không thấy phiền. Trong bài viết đầu tiên, nhiều anh em vẫn vào nói blockchain và cryptocurrency là scam hay lừa đảo. Mình không phủ nhận là có rất nhiều dự án cryptocurrency lừa gạt tiền của người khác, có, và chủ yếu là theo kiểu Ponzi (người đến trước lấy tiền từ người đến sau). Nhưng không phải vì một vài cái là scam mà mình nói cả cái công nghệ blockchain nó là scam. Thật ra công nghệ blockchain nó rất hay và có nhiều ứng dụng thực tế (mình sẽ có một vài bài để gợi mở cho anh em sau này). Bản thân mình không hề thấy khó chịu khi có nhiều anh em vẫn còn suy nghĩ này, vì bản thân mình mấy tháng trước mình vẫn còn nghĩ nó là scam. Mình nghe tới bitcoin và cryptocurrency từ 2010, nghe tới 2020, và vẫn nghĩ nó là scam. Vẫn cứ chửi đổng (chửi trong bụng thôi), nghĩ là đứa này lừa đứa kia, mà thiệt ra chính bản thân mình chửi vậy mà lúc đó còn chưa biết nó là cái gì. Mà mình thấy giữa mình và những anh em chửi đổng như vậy có cái giống nhau là đều do đọc những bài báo ở Việt Nam, bài nào cũng giật tít: Người này mất tiền, đồng này tăng giá cả trăm lần. Rất ít bài viết chịu chia sẻ cái blockchain thực tế là gì, và cái crypto này khác cái kia ra sao. Nhiều lúc mình có nói với vợ mình, nếu cách đây một hai năm hay sớm hơn mình chịu cởi mở, tìm hiểu một cách đàng hoàng như mình chia sẻ thông tin với anh em, chắc bây giờ khác dữ lắm.
Điều mình khó chịu nhất, là có một vài thành phần, như thánh này (justbenice) vào chụp mũ mình đa cấp. Haiz, mình nhắc lại một lần nữa, mình sẽ không và không bao giờ kêu gọi anh em đầu tư và dạy đầu tư, có 2 lý do:
Mình không phải chuyên gia, không thể ‘time market’, nên không biết khi nào mua khi nào bán. Cái này không phải chuyên môn của mình. Tụi đa cấp mới hứa với mấy anh em mấy khoảng đầu tư x20, x50. Mình không có khả năng đó. Và mình nói thẳng, người nào hiểu biết cryptocurrency, sẽ không nói với bạn điều đó, vì cryptocurrency nó dao động cực kỳ kinh khủng (highly volatile). Cho nên mọi người nào hứa hẹn kiểu đó thì né ra đi nhé. À, mình KHÔNG chỉ anh em làm giàu được, nhưng mình sẽ viết một bài: “Tại sao người ta lại mất tiền trong việc đầu tư cryptocurrency” để cho anh em biết và tránh.
Theo những gì mình biết thì luật pháp Việt Nam vẫn chưa công nhận bất kỳ tài sản ảo nào, nên anh em vui lòng lưu ý để không khéo mất tiền.
Những bài viết của mình chỉ dừng ở lại ở việc chia sẻ kiến thức công nghệ. Hy vọng mình sẽ không còn thấy những comment chụp mũ đa cấp nữa.
Nguồn: Hoàng LUT – Tinh Tế