Nội dung bài viết
Video học lập trình mỗi ngày
Blockchain một thuật ngữ được lạm dụng rất nhiều trong thời gian gần đây. Tuy nhiên có rất ít bài giải thích về khái niệm này một cách dể hiểu, chính vì vậy tôi có cách hiểu của tôi và sẽ thử viết ra xem nó dễ hiểu như cách tôi nghĩ không?
Nếu khái niệm "Blockchain là gì?" có lẽ tần suất được nhắc đến nhiều nhất đó là chương trình thương vụ bạc tỷ hay còn gọn là SharkTank Việt Nam!. Hình như startup nào cũng sử dụng công nghệ này để làm nổi bật lên giá trị cốt lõi của dự án. Nhưng đó cũng chính là con dao hai lưỡi, vì có nhiều dự án bị shark Bình và Shark Hưng hỏi vặn mấy câu, thì đâm ra nói lung tung, cuối cùng là failed. Đó phải là điều đặc biệt không? Mọi ứng dụng đều áp dụng được blockchain hay sao? Thử tìm hiểu với cách hiểu của người viết.
Đầu tiên việc hiểu blockchain không phải là điều quá khó, vì nó được giới thiệu cách đây 10 năm về trước rồi. Có thể là một cuốn sách dày, có thể thông qua một số bài báo lớn. Nhưng tôi hiểu thì để giải thích về công nghệ blockchain thì cần vài dòng là được, chứ không phải là một cuốn sách dày như vậy. Và một vấn đề nữa cần phải nói rõ ra là, tôi không phải là chuyên gia về lĩnh vực công nghệ blockchain, nhưng tôi rất háo hức tìm hiểu nó cách đây vài năm, nhưng lúc này khi tần suất được nhắc lại khá nhiều thì tôi bắt đầu viết nó ra. Hy vọng ở những điều tôi biết và viết ra đây, bạn sẽ không chỉ hiểu blockchain là gì? Tại sao nó được áp dụng, và áp dụng blockchain để làm gì? Mà còn giúp bạn thêm thông tin về khai thác bitcoin, quan trọng hơn hết là ngày càng khó hơn. Đương nhiên việc hiểu và trình bày mỗi người mỗi khác, chính vì vậy hy vọng các bạn có thể đóng góp giúp bài viết có thể hoàn thiện hơn cho tương lai.
Blockchain là gì?
Nếu ai đã đọc những bài viết của tôi thì đã hiểu khái niệm về phân tán và tập trung. Và blockchain chính là một cơ sở dữ liệu(CSDL) phân tán. Nếu là CSDL thì chắc chắn là nó phải nơi lưu trữ thông tin, và có thể đọc và ghi dữ liệu. Không cần phải vội để hiểu, mới 1/4 bài viết thôi.
Thứ hai có một điều đặc biệt ở đây đó chính là ai cũng có thể thiết lập một máy chủ, tham gia vào mạng lưới blockchain và trở thành một khối dữ liệu trong hệ sinh thái Blockchain. Nên nhớ rằng, blockchain không có khối trung tâm, mỗi khối đều ngang bằng nhau, có nghĩa là CSDL truyền thống đều có người admin, nhưng đối với Blockchain thì không. Bạn có thể ghi dữ liệu vào bất kỳ lúc nào, vì cuối cùng tất cả các khối sẽ được đồng bộ hóa để đảm bảo rằng blockchain nhất quán.
Tính năng đặc biệt của blockchain
Như mục đầu tiên thì ta đã hiểu blockchain là một CSDL phân tán. Nếu như dừng lại thì có nhiều bạn sẽ hỏi, "Ủa, phân tán thì có lâu rồi, đâu phải là một phát minh mới?". Đúng, tuy nhiên nếu nói về tính cách mạng thì Việt Nam là trùm, và blockchain cũng vậy, nó có một tính năng thật sự mang tính cách mạng.
Tính năng cách mạng đó là blockchain không có admin, hay quản trị nào hết, nó hoàn toàn phi tập trung. Chính vì vậy, mọi tổ chức, các nhân hay thậm chí là các Doanh nghiệp có uy quyền lớn cũng không thể duyệt và xem xét, sửa đổi dữ liệu của blockchain được. Bời vì nó thiết kế như vậy để tránh những tình trạng như là kiểm soát... Tôi không thể giải thích thêm... Vì như mọi quy luật, một khi đã kiểm soát thì mọi luật chơi đều tuân theo người kiểm soát.
OK, nếu tinh ý sẽ có người hỏi "Vậy nếu không có kiểm soát, và dữ liệu được ghi bất kỳ ai, thì việc hacker thay đổi dữ liệu thì sao?". Hoan hô cho những câu hỏi đó, bạn là người thông minh. Nhưng tôi viết ra đây, hẳn lả bạn đã hiểu tôi đã lường trước rồi chứ. Vui lòng đọc tiếp để biết. Đó là một điều kỳ diệu của blockchain.
Block + Chain = Khối + Chuỗi
Nói đến điều kỳ diệu thì hẳn có ai xem "Điều kỳ diệu phòng giam số 7" chưa? Blockchain chỉ giống 2 từ "kỳ diệu" mà thôi. Tiếp nhé. Một CSDL bao gồm các bản ghi, thì blockchain bao gồm các khối (block). Nghĩa là hiểu khối = bản ghi. Như vậy, mỗi người tham gia mạng lưới ghi một dữ liệu thành công, điều đó là một block sẽ được tạo ra. Không hiểu đọc lại... đừng cố đọc thêm, vì phải hình dung và hiểu được câu chuyện.
Và đến đây thì chỉ dành cho những bạn lập trình, vì nó mang học thuật và khái niệm thuật toán trong này.
Block = head + body
Header: Ghi lại giá trị đặc tính của một khối Body: Dữ liệu của một khối
Vậy, header chứa đặc tính gì?
Thời gian bắt đầu ghi Hàm băm (hash) của khối Giá trị băm của khối trước đó
Ở đây các bạn cũng phải hiểu thêm băm là gì? Vì sao phải lấy dao băm ra mới được...
Hash là gì?
Tôi sẽ gợi ý cho bạn bài viết giải thích bằng Tiếng Anh về hàm hash. Nhưng nói qua ở đây cho dễ focus.. "Băm" có nghĩa là máy tính có thể tính toán một giá trị đặc trưng có cùng độ dài cho bất kỳ nội dung nào. Độ dài băm của blockchain là 256 bit, có nghĩa là bất kể nội dung gốc là gì, cuối cùng thì số nhị phân 256 bit sẽ được tính toán. Và có thể đảm bảo rằng miễn là nội dung gốc khác, thì hàm băm tương ứng cũng phải khác.
Ví dụ: Chúng ta có chuỗi là abc
thì sử dụng hàm băm sẽ cho kết quả là qewirueiotewr2345234593245135234k5b234k5b234 (thập lục phân), và được chuyển đổi sang nhị phân là 256 bit và chỉ abc
có thể lấy được băm này. (Về mặt lý thuyết, các chuỗi khác có thể nhận được hàm băm này, nhưng xác suất là cực kỳ thấp và nó có thể được coi là không thể xảy ra.)
Vậy, tôi và bạn đúc kết ra được gì? Có hai điều quan trọng:
- Hàm băm của mỗi khối là khác nhau, và khối có thể được xác định bằng hàm băm.
- Nếu nội dung của một khối thay đổi, thì hàm băm của nó chắc chắn sẽ thay đổi.
Điều này có ý nghĩa lớn đối với blockchain. Nếu ai đó sửa đổi một khối, hàm băm của khối đó sẽ thay đổi. Để các khối tiếp theo được kết nối với nó (vì khối tiếp theo chứa hàm băm của khối trước đó), người đó phải sửa đổi lần lượt tất cả các khối tiếp theo, nếu không khối đã thay đổi sẽ rời khỏi blockchain. Do những lý do sẽ được đề cập ở phần sau, việc tính toán băm rất tốn thời gian và hầu như không thể sửa đổi nhiều khối trong một khoảng thời gian ngắn trừ khi ai đó đã nắm vững hơn 51% sức mạnh tính toán của toàn mạng. Chính nhờ cơ chế liên kết này mà blockchain đảm bảo độ tin cậy của chính nó. Một khi dữ liệu được ghi, nó sẽ không thể bị giả mạo. Nó giống như lịch sử, những gì đã xảy ra là những gì đã xảy ra, và không một ai có thể giả mạo được nó.
Tóm lại
Thật ra một bài viết chưa nói hết được gì? Nhưng khi viết ra thế nào là blockchain thì tôi thấy hiểu hơn về chúng. Tôi sẽ cố tìm hiềm thêm về khái niệm khai thác bitcoin, và vì sao càng ngày tìm bitcoin càng khó. Và tôi nghe nói, mỗi bitcoin được sinh ra thì độ khó càng tăng lên cho những bitcoin về sau. Bời vì trung bình Satoshi Nakamoto sáng chế ra cứ 10 phút thì một bitcoin được sinh ra, thì nếu hai tuần liên tiếp tạo một bitcoin trong vòng 9 phút thì nó nhanh tốc độ cho phép 10% như vậy độ khó sẽ tăng lên 10%. Chúng ta sẽ tìm hiểu tiếp theo....