Tìm hiểu về Blockchain trong 5 phút

Blockchain đang là công nghệ được kì vọng sẽ định nghĩa lại cách làm việc của cơ sở dữ liệu phân tán. Tin tức nói về nó luôn hot và là chủ đề được quan tâm rất nhiều. Với rất nhiều bài viết, rất nhiều videos giải thích về cách mà blockchain hoạt động, nhưng dưới đây là những lí do mà tôi nghĩ rằng có thể bài viết này hữu ích hơn đối với bạn:

  1. Hầu hết các bài viết giải thích về blockchain chủ yếu tập trung vào tiền điện tử như Bitcoin chứ không đi vào cách hoạt động cũng như các công nghệ đứng sau nó (các giao thức đồng thuận, các blocks được xác thực như thế nào, làm sao để nhận được bitcoins, ...). Bài viết này sẽ trả lời những câu hỏi đó.
  2. Hầu hết các bài viết đều không đề cập đến các loại blockchain khác hiện đang nổi tiếng được nhiều người biết đến khác trên internet, và những loại blockchain được nhắc tới trong các buổi talkshow, trao đổi với các CEOs. Dưới đây bạn sẽ tìm thấy câu trả lời cho việc chúng là gì và chúng khác với các mạng public blockchain (như Bitcoin, Etherium) như thế nào.

Thời điểm khai sinh Blockchain

Kể từ khi Internet được tạo ra, đã có nhiều nỗ lực để tạo ra một phương thức thanh toán trực tuyến an toàn. Và thế là ý tưởng về một loại tiền ảo ra đời. Và chìa khóa của ý tưởng này đã được S. Habber y W.S. Stornetta công bố với thế giới vào năm 1991. Và đó chính là blockchain, một ý tưởng thông minh và khá đơn giản khiến những người không tin tưởng (thậm chí những người ẩn danh) đồng ý chia sẻ và lưu trữ thông tin (như giao dịch tiền tệ).

Mục đích ban đầu của công nghệ blockchain là cung cấp chữ kí số để giúp cho việc đăng kí tài liệu kỹ thuật số được diễn ra một cách có trật tự. Mãi đến năm 2008, một người nào đó dưới bút danh “Sathosi Nakamoto” đã phát hành một đồng tiền điện tử với tên gọi Bitcoin sử dụng công nghệ này. Từ 2008 đến nay, bitcoin đã tăng từ vài cents lên đến đỉnh điểm là gần 20,000 , và giá ở thời điểm hiện tại của bài viết này là 4,186.

Blockchain là gì?

Đầu tiên hãy cùng xác định cấu trúc của blockchain gốc ban đầu. Hiện blockchain đã được phát triển thành nhiều cấu trúc khác mà ta sẽ tìm hiểu sau.
Blockchain là một cơ sở dữ liệu phân tán ngang hàng (peer-to-peer), trong đó tất cả các nodes ở cùng một cấp bậc với nhau và không cần phải tin tưởng lẫn nhau nhờ vào một giao thức đồng thuận. Hơn nữa, mọi người tham gia đều có một bản sao của toàn bộ sổ cái của blockchain.

Distributed: Có nghĩa data không được lưu trữ trong một trung tâm máy chủ mà tất cả những servers cá nhân hay máy tính riêng lẻ của những người tham gia sẽ chạy một node. Điều này cùng với việc sử dụng hàm băm đã làm cho công nghệ này vô cùng an toàn.

Peer-to-peer: Có nghĩa là thông tin được chia sẻ giữa những người tham gia. Những người tham gia chạy một node đều được kết nối với các nodes khác (hãy gọi chúng là node-friends) và tất cả các thông tin riêng hay các giao dịch ngoài được chia sẻ giữa các nodes theo cặp. Sau đó chúng sao chép và lặp lại hành động này với các connections của chúng.

Consensus protocol: Giao thức đồng thuận chính là ý tưởng mang tính cách mạng nhất của công nghệ này. Ta sẽ đi vào chi tiết sau nhưng để phát biểu định nghĩa thì có thể nói nó là phương thức xác định những blocks đúng và chỉ những blocks này mới được thêm vào blockchain và trong trường hợp block sai thì có thể bị từ chối bởi những người tham gia khác.

Ledger: Mỗi người tham gia đều có một bản sao ghi chép lại lịch sử giao dịch và nó luôn được cập nhật. Điều này giúp có thể kiểm tra xem một người đang cố gắng thực hiện giao dịch có tiền hay không, điều này giúp giải quyết vấn đề double spending (hình thức gian lận sử dụng hai giao dịch khác nhau để cùng chi tiêu số dư của một tài khoản).

Anonymous: Mọi người truy cập hệ thống bằng private key và public key hoặc wallet (đoạn mã gồm chữ và số mà những người tham gia khác có thể nhìn thấy). Và bạn có thể thấy như trên, bạn được coi là ẩn danh. Tuy nhiên, với vai trò như là một node, bạn cũng đang cung cấp địa chỉ IP của mình cho các nodes khác, vì vậy nên cũng ko thể hoàn toàn coi là ẩn danh. Có một số cách để tránh điều này nhưng bài viết sẽ không đề cập đến, bạn có thể tìm hiểu thêm trên mạng.

Cách hoạt động của blockchain và cách mà mọi thứ được xác thực

Step 1: Khi một node muốn thực hiện một transaction (chuyển tiền, deploy smart contract, ...) nó gửi thông tin này đến tất cả các node-friends. Các nodes này kiểm tra những thứ cơ bản đầu tiên (ví dụ như tiền đã được sử dụng trước đó chưa).

Step 2: Nếu mọi thứ đều đã đúng, chúng lưu thông tin về transaction vào trong POOL và tiếp tục gửi thông tin đến các node-friends của chúng. Và tất nhiên, mỗi node có POOL khác nhau vì chúng nhận được thông tin về transaction theo một thứ tự khác nhau.

Step 3: Với mỗi vòng (trung bình là 10 phút với bitcoin), một node được chọn hoàn toàn ngẫu nhiên để đề xuất một block với những transactions trong POOL của nó. Đây chính là quá trình được gọi là giao thức đồng thuận. Thay vì ngẫu nhiên 100%, các nút khác nhau có cơ hội chiến thắng khác nhau. Tại sao và làm thế nào sẽ được giải thích trong phần tiếp theo.

Step 4: Block mới được đề xuất và được kí bởi một người được chọn. Người này sẽ gửi cho tất cả các node-friends một phiên bản mới của blockchain bao gồm các block của phiên bản trước và thêm một block là các transactions trong POOL của nó. Các node-friends nhận và sao chép nó.

Step 5: Các nodes cập nhật blockchain mới nếu block mới được nối thêm là hợp lệ.

Hash Functions and Hash numbers

Tất cả các block đều được cung cấp dưới một dạng code gồm chữ và số hoặc toàn số được gọi là hash (chắc hẳn ai cũng biết đây là hàm băm). Ta lấy được mã hash bằng cách ghép tất cả các thông tin của block với một mã khác gọi là nonce. Mã hash thu được là kết quả của việc áp dụng hash function với input là phép ghép nối này. Phương pháp này làm cho việc giả mạo gần như là không thể. Tại sao ? Vì nếu bạn sửa bất cứ thứ gì trong block đã được xác thực, rõ ràng mã hash của nó sẽ không còn hiệu lực. Và bởi vì bạn đang lấy mã hash của block này làm một phần để tạo ra mã hash của block sau nên nếu các bạn thay đổi thông tin của block thì không chỉ block đó không hợp lệ mà cả những block sau đều bị coi là không hợp lệ. Nếu bất cứ ai muốn thay đổi một block, họ sẽ phải thay đổi block đó và tất cả các block sau trong tất cả các bản sao blockchain trong tất cả các nodes. Điều này được coi như không thể 😆

Consensus Protocol

Giao thức đồng thuận là một phương thức chọn một node để đề xuất một block mới. Ý tưởng là giúp cho các nodes đáng tin cậy có nhiều cơ hội để được chọn hơn các nodes khác. Cùng tìm hiểu 2 giao thức được sử dụng nhiều nhất nào:

Proof-of-Work (PoW): Đây là protocol được sử dụng nhiều nhất, được sử dụng trong cả Bitcoin và Etherium. Mỗi khi một node đề xuất một block thì nó được releases mà không cần hash. Từ đây, một cuộc thi giữa các nodes bắt được để tìm ra được mã hash đó (thực ra không phải tất cả các nodes đều tham gia, những người tham gia được gọi là miner), người chiến thắng sẽ được quyền đề xuất block mới. Và bởi vì các miners phải sử dụng rất nhiều sức mạnh tính toán (rất là tốn kém) để tìm ra mã hash nên sẽ được thưởng nhưng chỉ khi mà block được đề xuất được cả cộng đồng chấp nhận (phần thưởng hiện tại là 12.5 bitcoins trong Bitcoin network và sẽ giảm một nữa mỗi 4 năm).
Nếu bạn tình cờ đề xuất một block sai thì thời gian, sức lực, tiền bạc của bạn sẽ bị lãng phí, block đó sẽ bị từ chối và bạn chẳng được nhận lại bất cứ thứ gì. Vậy nên cá nhân tôi nghĩ sẽ chẳng có lí do gì để mọi người cố gắng đề xuất một giao dịch độc hại chứa những transactions sai.
Vì phần thưởng lớn, rất nhiều người trên khắp thế giới (hiện tại họ được tổ chức theo từng cụm) đang cạnh tranh với nhau để "đào" các blocks. Độ khó của quá trình mining được điều chỉnh để có được 1 block sau một thời gian trung bình X (trong blockchain là 10 phút). Vì vậy, càng nhiều miners thì càng khó khai thác và blockchain sẽ càng an toàn.

Proof-of-Stake (PoS): trong đó các nodes của các mạng lưới dựa trên Blockchain phải “đặt cọc” một phần Coin hoặc Token để được tham gia vào việc xác minh các giao dịch trong một khối. Ta có thể hiểu nôm na là đặt cọc tiền để chứng minh danh tính bản thân. Các nodes tham gia được gọi là các Validator. Khoản tiền đặt cọc được gọi bằng từ chuyên môn là Stake. Khoản tiền này sẽ bị hệ thống thực hiện khóa. Và sẽ được mở khóa sau khi nút rút khỏi việc tham gia xác minh. Chú ý việc mở khóa sẽ không được thực hiện ngay lập tức.
Validator được chọn sẽ thực hiện xác nhận khối. Thuật ngữ chuyên môn cho hành động này là Forge hoặc Mint để phân biệt với Mine trong PoW. Nếu block hợp lệ và ghi được vào chuỗi, các node sẽ được phần thưởng chính là từ các khoản phí giao dịch.

Các kiểu Blockchain

Sơ đồ trên mô tả một cách ngắn gọn về các tính năng và ví dụ về bốn loại blockchain.

Public Blockchains: Bất kỳ ai cũng có thể download, tham gia và run node riêng của mình (điều này có nghĩa là trở thành người tham gia có quyền như mọi người khác). Họ công khai và hoàn toàn minh bạch. Tất cả các transactions thường được triển khai trong cùng một mạng. Các ví dụ được biết đến nhiều nhất là Bitcoin và Ethereum.

Private Blockchains: Nếu bạn muốn phát triển blockchain cho mục đích kinh doanh, thì đây là một lựa chọn cho bạn. Có rất nhiều công cụ, framework giúp cho bạn phát triển như Hyperledger, Corda, EFW, Multichain, ... Cơ bản thì các nodes được quản lý bởi một số tổ chức trên nguyên tắc tin tưởng lẫn nhau. Tất cả chúng đều ở cùng cấp độ và không node nào có thể làm gì mà không được đăng ký trong tất cả các sổ cái (ledger). Người dùng truy cập thông qua giao diện web (thông qua API) và họ được cấp quyền một cách hạn chế. Do đó, chúng thường không minh bạch và không mở.

Federated/Consortium Blockchains: Sự khác biệt giữa Private và Federated nằm ở số lượng những tổ chức kiểm soát mạng đó. Nếu như Private đại diện cho một tổ chức thì Federated đại diện cho nhiều tổ chức hợp tác với nhau để xây dựng lên và quản lý.

Blockchain as a Service (BaaS): BaaS tương tự nhưng với blockchain. Một số công ty hàng đầu như IBM, Microsoft và Amazon cung cấp dịch vụ blockchain trên cloud. Nói chung, họ cung cấp dịch vụ cho việc lưu trữ network và các nodes của bạn trên cloud thay vì trong một server hay cloud riêng. Việc được các hãng lớn hỗ trợ sẽ giúp bạn tăng tính bảo mật hơn và rút ngắn nhiều công đoạn hơn.

Lời kết

Bản thân tôi cũng chỉ là một người mới tiếp cận và học blockchain, trước đây tôi chỉ nghĩ nó là một công nghệ hot trend không có gì đặc biệt ngoài dăm ba ứng dụng trong công nghệ tiền điện tử 😃 Nhưng thực sự tìm hiểu một thời gian tôi tự thấy mình thực sự thiển cận.
Với vốn kiến thức chưa hoàn thiện, nếu có bất cứ phần nào tôi hiểu sai thì mong nhận được sự góp ý của mọi người để tôi có thể sửa lại, vì đối tượng mà bài viết này muốn hướng đến là các bạn cũng mới tìm hiểu như mình nên nếu hiểu sai sẽ cực kì nguy hiểm.