Có một lần mình đọc qua thử cuốn Mastering Bitcoin. Cuốn sách không thiên về lập trình mà thiên về lý thuyết. Có thể kiến thức trong cuốn sách này khá cũ nhưng không thể phủ nhận được tính hay ho và sâu rộng mà trước giờ mình chưa biết dẫu là có tìm hiểu về blockchain trước đó.
Sách khá dài nên có thể mình sẽ chia bài viết làm nhiều phần.
1. Blockchain là gì
Một câu hỏi đơn giản cho hầu hết các bạn đã làm quen với blockchain. Nhưng mình vẫn nhắc lại ở đây một chút vì không loại trừ bạn đọc là người mới.
Trong từ Blockchain
bạn sẽ thấy được ghép từ hai từ đơn là block
và chain
. block
là khối, cục. chain
là chuỗi. blockchain
là một chuỗi các cục khối được nối lại với nhau.
2. Trong một khối (block) chứa gì
Nhìn tổng quan thì bạn sẽ thấy là trong một khối (block) sẽ bao gồm 2 phần chính:
Block Header
:- nó chứa thông tin của block đó.
- Trong
Block Header
bao gồm nhiều thành phần khác (trình bày bên dưới). - Tiêu đề một block thường có size là 80 byte.
- Danh sách transactions:
- một transaction là một giao dịch.
- Một transaction trung bình chưa tối thiếu 250 byte.
- Một block có thể trung bình chứa hơn 500 giao dịch.
Trong Block Header
cơ bản sẽ bao gồm những thành phần sau:
- Previous Block Hash: Là mã băm của block trước đó. Tức là các block mới khi được tạo luôn có chứa thông tin của block sau cùng trước đó. Tới đây mình có thể một phần nhỏ nào thấy được mối liên hệ giữa các block rồi. Nên các block mới có lý do kết nối với nhau thành một chuỗi.
- difficulty: là thông tin độ khó
- timestamp: nhãn thời gian của block
- nonce: con số ngẫu nhiên thỏa mãn độ khó
- Mekle root: gốc cây Merkle, cây chứa thông tin của transactions
Tất cả sẽ được đem băm thành một chuỗi ký tự dài (phần tô màu vàng là thông tin chuỗi sau khi băm, viết tắt 6 ký tự đầu để ví dụ)
3. Định danh một block
- Định danh chính của một block là mã băm mật mã của nó.
- Một cách thứ hai để xác định một block là vị trí của nó trong blockchain, còn gọi là chiều cao block.
- Block đầu tiên được tạo ra có độ cao block là 0 (không). Block tiếp theo sẽ là 1, tiếp theo sẽ là 2 và cứ thế tăng lên.
- Các thông tin trong Block header sẽ được đem băm bằng thuật toán
SHA256
. Hiện nay có nhiều chain khác sử dụng thuật toán khác. SHA256
:- Là hàm băm một chiều. Nghĩa là thông tin ở đầu ra không thể giải mã được để ra lại thông tin đầu vào.
- Nó tạo ra 64 ký tự hexa. Mỗi kí tự là 4 bit.
- Độ dài của thông điệp trước khi mã hóa phải nhỏ hơn 264 bit
4. Hacker có thể hack được blockchain không
Câu trả lời là CÓ
. Mình từng nghe nhiều bạn nói là blockchain là một hệ thống không thể hack được nên nó cực kì an toàn. Thật ra không có gì là không thể cả :D, chỉ là có đủ tài chính nguồn lực hay không thôi.
Khi hacker muốn hack, thì hacker chỉ có thể gian lận trên chính các transaction của hacker. Vì các transaction được gọi là hợp lệ đều phải được ký bởi khóa bí mật. Mà khóa bí mật thì chỉ có cá nhân đó biết (mình không nói đến cách case bị người khác biết khóa, case bị hack do hành vi thiếu cẩn trọng của con người).
Rồi tính chất của blockchain là cứ chuỗi nào dài thì chuỗi đó sẽ là chuỗi chính. Không thể tránh được việc xảy ra block đồng cấp, tức là rẽ nhánh. Nhưng sau đó nhánh nào có block con cháu nối với nhau tạo thành một nhánh dài hơn thì đó là nhánh chính.
Để dễ hiểu mình lấy một ví dụ như sau. Ông hacker A ra tiệm cafe mua nước. Tiệm cafe cho phép thanh toán bằng bitcoin và ông A đã thanh toán nước bằng một giao dịch trên blockchain, chuyển cho chủ tiệm 2BTC và giao dịch đó đã được đưa vào block số 7 và confirm OK. Chủ tiệm check ví đã thấy được nhận 2BTC và yên tâm để ông A ra về.
Về đến nhà ông A tạo ra một block số 7 mới. Block số 7 mới này sẽ chứa thông tin của block số 6 và chứa một transaction chuyển tiền cho chủ tiệm với 1BTC. Ông A đẩy block này lên mạng blockchain. Lúc này mạng nhận thấy có 1 block mới là con của block số 6, mạng sẽ gắng block fake số 7 nào vào tạo thành nhánh mới. Lúc này nhánh chính đã tạo được con cháu dài đến block thứ 9 rồi, muốn hack thì hacker phải chạy CPU tốc độ cao để tạo ra các khối block số 8, 9, 10 từ block số 7 fake kia. Nếu giả sử tốc độ máy của hacker siêu nhanh siêu mạnh có thể làm việc nhanh và đuổi vượt mặt nhánh chính để tạo ra nhánh dài nhất thì nhánh fake đó sẽ trở thành nhánh chính trong blockchain.
Tất nhiên là hiện nay đối với mạng bitcoin thì việc giải mã độ khó rồi tạo mã băm để cho ra đời một block không thể nào nhanh được và không thể thực hiện với một cá nhân đơn độc. Nên vì thế mạng bitcoin mới khó hack. Thay vào đó hacker thường nhắm đến các mạng nhỏ lẻ còn non, độ khó thấp và ít người tham gia giải mã block.
Về cơ bản thì 6 block trên cùng giống như vài xăng-ti-mét ở tầng mặt đất.
Khi tiến xuống sâu hơn nữa vào blockchain, phía dưới 6 block trên cùng, ngày càng khó có thể thay đổi các block.
Dưới 100 blocks trên cùng, sự ổn định cực kì lớn.
Đến một vài nghìn block phía dưới (1 tháng), thì về cơ bản, blockchain đã trở thành một lịch sử cố định.
Mặc dù giao thức blockchian luôn cho phép một chuỗi dài hơn hoàn tác một chuỗi ngắn hơn, và mặc dù luôn tồn tại khả năng đảo ngược bất kì block nào. Nhưng xác suất của một sự kiện như vậy giảm dần theo thời gian cho tới khi nó trở nên vô cùng nhỏ.