Mô hình này yêu câu việc đảm bảo ràng thời gian ngẫu nhiên được sử dụng. Bởi nêu thời gian chờ không được chọn ngâu nhiên, người dùng đọc hại có thê chiếm quyền hoạt động của hệ thông bằng cách chọn thời gian nghỉ ít nhất. Mô hình này cũng yêu cầu đảm bảo nốt xuất bản chờ đủ thời gian và không hoạt động sớm hơn. Yêu cầu nảy được giải quyết
21
bằng việc chạy phần mềm trong mỗi được được tin tưởng trong một số vi xu lí. Các phan mém này được xác nhận không thé bi can thiệp bởi các tác nhân bên ngoài. Nốt xuất bản sẽ chờ phần mềm chạy trong khoảng thời gian ngâu nhiên và chờ đến hết khoảng thời gian đó. Sau khi chờ hết khoảng thời gian được gán, nốt xuất bản có thê yêu câu chứng nhận hành động chờ đó và xuất bản khối mới bao gồm chứng nhận đã chờ đủ thời gian yêu cầu.
4.6 Những mâu thuẫn xảy ra với số cái và giải pháp
Như đã đề cập ở phần trên, trong một số mạng blockchain trên có thể xảy ra tinh trang nhiều khối cùng xuất bản ra khối trong cùng khoảng thoi gian. Điều này có thể khác nhau ở các phiên bản blockchain khác nhau và cần được giải quyết đề đạt được sự đồng nhất của chuỗi khối hay sô cái trong mạng. Trong bất kì mạng phân tán nào, một số thiết bị trong mạng có thê không bắt kịp được thông tin trong hệ thống khi thông tin mới được thêm hoặc tạo mới. Điều nảy phụ thuộc vào độ trễ của các nốt và khoảng cách giữa các nhóm hay cụm nốt. Mạng blockchain không yêu cầu cấp phép thường đối mặt với việc nay boi tinh mo va tinh trạng cạnh tranh giữa các nốt cao trong việc xuất bản. Một phân quan trọng của sự đồng thuận của mạng blockchain đó là giải quyết mẫu thuẫn kiểu
này.
Ví dụ:
-_ Nốt A tạo ra khối(A) với giao dịch số #1,#2,#3. Nốt A gửi khối đó tới một số nốt.
- _ Nốt B tạo ra khối(B) với giao dịch số #1,#2 và #4. Nốt B gửi khối đó tới một số nốt.
- _ Mâu thuẫn xảy ra khi cả khối(A) và | khoi(B) cung duoc tao đồng thời, cùng mã hóa giao dịch số #1,#2. Nhung khéi(A) không có giao dịch 36 #4, con khéi(B) không có giao dịch 36
#3. Cả khối(A) và khối(B) đều được gan vao chuỗi khối cũ của hệ thống, tạo ra hai phiên bản chuỗi khối khác nhau:
+ Chuỗi cũ + khối(A) + Chuỗi cũ + khối(B)
Phần lớn các mạng blockchain sẽ đợi một khoảng thời gian đến khi khối
kế tiếp được xuất bản và chọn chuỗi có độ dài lớn hơn để lưu lại. Ví dụ như trong trường hợp trên, giả sử chuỗi khối có khối(B) dài hơn và được
chọn làm khối chính, chuỗi có chứa khối(A) bị loại bỏ. Giao dịch #1, #2
và #4 được mã hóa và lưu lại vào hệ thống, con giao dịch #3 được đưa về hàng chờ cho lần xuất bản khối tiếp theo. Chú ý rằng hàng chờ này là hàng chờ cục bộ của not A va không chịu sự kiểm soát của một máy chủ trung tâm nào.
Bởi có thể xảy ra tỉnh trạng khối bị ghi đè, giao dịch thường không được chấp nhận đến khi một khối chưa thông tinn mã hóa của giao địch đó được nối vào chuỗi. Việc một giao dịch có được chấp nhận hay không mang tính xác xuất nhiều hơn là chắc chắn bởi khối chứa giao dịch đó có thé bị loại bỏ trước khi được thêm vào hệ thông( vi dụ giao dịch #3 phải được xác minh lại do khối(A) chứa nó bị loại bỏ). Càng nhiều khối được tạo mới, các khối cũ càng khó bị sửa.
22
Theo giả thiết, một nốt trong mạng blockchain dựa trên mô hình proof of work với năng lực tính toán lớn có thể tạo ra khối khởi tao( genesis block) va tao ra mét chuéi moi dài hơn chuỗi hiện có trong hệ thong. Do đó nó hoàn toàn có thê xóa sạch dữ liệu hệ thống và thay thế nó bằng một lịch sử khác có lợi cho mình. Điều này khó để xảy ra trong thực tế bởi lượng tài nguyên yêu cầu để thực hiện khó có thể đáp ứng đủ. Đồng thời, một số cách cài đặt blockchain có thê khóa một số khối cũ trong hệ thống băng cách tạo ra những mốc kiểm tra đảm bảo không khối nào được sửa đổi.
5. Cac nhanh cua blockchain
Thực hiện những thay đôi và cập nhật công nghệ có thê vô cùng khó khăn.
Ví dụ trong mạng blockchain yêu cầu cấp phép với nhiều người dùng phân tán trên toàn thế ĐIỚI, điều đó lại càng khó để thực hiện. Những thay đôi tới giao thức hay cấu trúc dữ liệu được gọi là tạo nhánh( forks). Chúng có thê được chia thành 2 loại: nhỏnh mềm ( soẹ forks) và nhỏnh cứng( hard forks).
Với nhánh mềm, những thay đổi tương thích với những nốt không được cập nhật. Nghĩa là những nốt chạy phiên bản cũ vẫn tiếp tục hoạt động đồng thời với những nốt chạy phiên bản mới cập nhật. Với nhánh cứng, những thay đôi không tương thích với những nốt cũ và những nốt chạy phiên bản cũ sẽ bị loại ra khỏi mạng. Điều này có thê dẫn tới việc một mạng blockchian bị chia thành nhiều phiên bản. Trong mạng blockchain yêu cầu cấp phép, bởi nốt xuất bản và người dùng biết nhau nên có thể giảm được những vấn đề khi phân nhánh bằng cách yêu cầu người dùng cập nhật phiên bản mới.
5.1 Nhánh mém( Soft Forks)
Nhu đã giới thiệu ở trên, một nhánh mềm là một thay đổi trong cách cài đặt blockchain tương thích với phiên bản cũ của nó. Nốt chạy phiên bản cũ cú thờ tiếp tục ứ1ao dịch với cỏc nốt được cập nhật. Nếu khụng cú hoặc có ít nốt cập nhật, những luật mới trong bản cập nhật sẽ không được tuân theo hay bị bỏ qua. Ví dụ trong một nhánh mềm của Bitcoin khi một luật mới được thêm vào đề hỗ trợ các quỹ của bên thứ ba. Năm 2014, một đề xuất được đưa ra yêu cầu tái sử dụng mã điều hành từ no operation (OP_ NOP2) to CHECKLOCKTIMEVERIFY cho phép đầu ra của giao dịch có thê được sử dụng tại một thời điểm trong tương lại.
Những nốt tuân cập nhật cách cài đặt mới nảy sẽ chạy một theo kiêu mới, còn những nốt không tuân theo thay đôi vẫn tiếp tục chạy NOP.
5.2 Nhanh ctrng( Hard Forks)
Một nhánh cứng là một thay đôi trong cách cài đặt blockchain không tương thích với phiên bản cũ. Trong một khoảng thời gian cho trước, tất
cả các nốt trong mạng cần cập nhật giao thức mới đề không bị loại khỏi hệ thống. Những nốt không cập nhật không thê tiếp tục thực hiện giao dịch trong phiên bản mới bởi hệ thông được lập trình để loại bỏ tất cả
các khối không tuân theo luật của phiên bản hiện tại.
Những nốt xuất bản không cập nhật vẫn sẽ tiếp tục tạo ra khối mới theo phiên bản cũ. Nốt người dùng không cập nhật vẫn sẽ tiếp tục chấp nhận những khối theo phiên bản cũ và loại bỏ những khối theo phiên bản mới.
Điều này dẫn đến tình trạng có hai phiên bản chuỗi khối cùng tồn tại đồng thời trong hệ thống. Chú ý rằng người dùng trong các phiên bản
23
khác nhau sẽ không thê tương tác với các nốt. Điều quan trọng là trong khi phần lớn các nhánh cứng là chủ động- người dùng hệ thống chủ động cập nhật, lỗi phần mềm có thể tạo ra những nhánh cứng bị động.
Một phiên bản nỗi tiếng của nhánh cứng đó là Ethereum. Năm 2016, một hợp đồng thông mình được lập được gọi là Decentralized Autonomous Organization (DAO). Bởi những khiêm khuyết được tìm thấy trong thuật toán, một hacker đã giải nén Ether- tên loại tiền mã hóa trong mạng Ethereum, gây nên vụ trộm 50 triệu đô la. Một nhánh cứng được đề xuất đề bầu chọn bởi những người nắm giữ Ether, và phần lớn người dùng đồng ý và tạo ra một phiên bản mới của blockchain được vá lỗi đồng thời hoàn lại 36 tiền bị mất.
Với tiền mã hóa, nếu một nhánh cứng vả chuỗi khối chia người dùng thành hai nhánh, mỗi nhánh sẽ có một loại tiền mã hóa riêng ( đồng nghĩa với tông tiền mã hóa của hệ thống đó được nhân đôi). Nếu tất cả hoạt động được chuyền sang một chuỗi mới, phiên bản chuỗi cũ có thé không được sử dụng nữa do không tương thích. Tuy nhiên phiên bản cũ van ton tai déc lập trong hệ thông. Trong ví dụ của Ethereum, tất cả người dùng đồng ý việc chuyên sang phiên bản mới. Phiên bản cũ vẫn tồn tại và được goi la Ethereum Classic.
5.3 Thay đổi mã hóa và các nhánh
Nếu những lỗi được tìm thấy trong công nghệ mã hóa bên trong mạng blockchain, giải pháp duy nhất đó là tạo ra một nhánh cứng mới dựa trên tính nghiêm trọng của lỗi đó. Ví dụ, nếu một lỗi được tìm thấy trong thuật toán, mó thể tạo ra một nhánh cứng yêu cầu tất cả người dùng tương lai sử dụng một thuật toán tốt hơn. Việc chuyên đôi sang một thuật toán băm khá có thể gây những vấn đề nghiêm trọng trong thực tế bởi nó sẽ từ chối tất cả các máy đảo hiện tại.
Trên lí thuyết, nêu thuật toán băm SHA-256 được phát hiện lỗi, mạng blockchain sử dụng SHA-256 sẽ cần một nhánh cứng để chuyên sang một thuật toán băm mới. Khối được tạo ra bởi thuật toán cũ khi chuyền sang thuật toán mới lẽ bị khóa. Các khối mới tiếp tục được sinh ra theo thuật toán mới. Có rất nhiều thuật toán mã hóa băm, và mang blockchain có thê sử dụng bất kì cai nao phu hop. Vi du, Bitcoin str dung SHA-256, Ethereum sử dụng Keccak-256.
6. Hợp đồng thông minh