Giải ngố về blockchain PoA

229

Như chúng ta đã biết, mạng Ethereum blockchain có thể được cài đặt bằng cách sử dụng thuật toán PoW (Proof of Work). Bài viết này sẽ hướng dẫn các bạn setup một mạng blockchain Ethereum sử dụng thuật toán PoA (Proof of Authority).

PoA với PoW là gì?

PoW và PoA là 2 thuật toán đồng thuận (consensus) được sử dụng phổ biến trong mạng blockchain để xác nhận các transaction. Nếu Google search 2 từ khóa này sẽ ra hàng triệu kết quả. Tuy nhiên ta có thể hiểu 2 thuật toán này bằng một ví dụ đời thường như sau.

2 thanh niên đi xin việc làm ở một công ty nhà nước. Để có thể nhận được vào làm theo “đúng quy trình”, các ứng viên phải trải qua bài test, phỏng vấn chuyên môn với Tech Lead, phỏng vấn công việc với Manager.

Proof of work

Thanh niên thứ nhất tên là PoW vốn con nhà nông dân, vô danh tiểu tốt, để có thể nhận được vào làm, anh ta phải vận dụng hết sức lực bản thân để qua các vòng phỏng vấn. Cuối cùng để được nhận vào làm phải mất cả tuần.

Thuật toán PoW trong blockchain cũng tương tự như ví dụ trên. Anh thanh niên PoW hoạt động giống như các thợ mỏ (máy đào) trong mạng Blockchain. Các máy đào phải sử dụng sức mạnh tài nguyên tính toán (CPU, năng lượng điện) để thực hiện giải mã thuật toán của Blockchain. Máy đào nào mạnh thì sẽ giải mã thành công trước tiên và được nhận Bitcoin. Nó cũng như đi phỏng vấn anh thanh niên nào tài năng, có kỹ năng tốt nhất thì được tuyển vào. Việc thực hiện giải mã này tốn rất nhiều thời gian, đặc biệt là theo thời gian, độ khó của mạng Blockchain được điều chỉnh tăng thì thời gian tạo block càng lâu. Mạng Bitcoin mất tầm mười phút, mạng Ethereum mất trên 1 phút.

Trong PoW, khi một thợ mỏ có thể kiểm soát được 51% sức mạnh tính toán trong một mạng lưới, thì có thể thao túng toàn bộ mạng blockchain. Về lý thuyết thì có thể có, như thực tế thì điều này khó có thể xảy ra.

Proof of Authority

Tiếp tục ví dụ về anh thanh niên thứ 2 tên là PoA. Anh này là con của đồng chí X, ủy viên trung ương đảng, có “số má” hẳn hoi. Và tất nhiên khi đi phỏng vấn, anh ta chỉ cần nói. Và anh được nhận ngay lập tức chỉ trong vòng 1 nốt nhạc, khỏi phải test, phỏng vấn. Đơn giản vì anh ta có danh tính, số má mà ai cũng biết đến.

Các Node (PC) trong mạng blockchain PoA hoạt động của như anh thanh niên trên, đã có danh tính rõ ràng. Quá trình xác thực trên PoA được thực hiện bởi những node có danh tính rõ ràng, có khả năng xác nhận tính hợp lệ của các khối. Nhân dạng của người dùng phải tuân theo một số yêu cầu xác minh (con đồng chí X, cháu chủ tịch Y), đòi hỏi phải có địa chỉ được chứng thực và không có tiền án, tiền sự.

Và khi dựa trên danh tính để xác thực, thì các node trong mạng blockchain PoA không cần phải dùng tài nguyên tính toán, oằn mình ra đào mỏ vất vả như anh thanh niên PoW trên. Đương nhiên, thời gian xác thực, tạo một block mới cũng nhanh hơn nhiều chỉ tầm vài giây đối với mạng Ethereum.

PoA hoàn toàn tương tự giao thức Ethereum. Tuy nhiên, cơ chế đồng thuận PoA cho phép thời gian tạo block nhanh hơn rất nhiều, do không phải “đào” (giải mã thuật toán).

Trong PoA, người dùng chỉ cần cung cấp danh tính và mạng lưới sẽ tự động thực hiện toàn bộ quá trình: từ cấp quyền cho đến quá trình thực hiện giao dịch. Cũng giống như anh thanh niên POA chỉ cần cung cấp tên tuổi còn lại thì phía công ty lo tuốt.

Tuy nhiên blockchain PoA có nhược điểm là tính bảo mật kém. Cũng như một công ty chỉ tuyển các thanh niên COCC có số má vào làm việc mà ko dựa vào năng lực bản thân thì kết quả sẽ ra sao? Cho nên khuyến cáo chỉ dùng trong mạng Private blockchain.

Setup 1 mạng blockchain PoA

Phần này của bài viết sẽ giới thiệu từng bước trong việc setup một mạng Ethereum dùng thuật toán PoA.

Môi trường ở đây là Ubuntu 16.04.

Bước 1: Cài đặt geth ethereum 

Trên Linux terminal, gõ lệnh sau:

Quá trình cài đặt bắt đầu:

Bước 2: Tạo account

Gõ lệnh sau:

Tạo một cửa sổ terminal mới, chạy lệnh sau để vào Ethereum console:

Chữ in đậm chính là thư mục –datadir bạn tạo ở trên

Gõ lệnh dưới để tạo account base:

Bước 3: Cấu hình mạng blockchain

Tạo một cửa sổ terminal mới, chạy lệnh sau:

Chọn 2 – Configure new genesis để cấu hình block genesis, sau đó chọn những thông tin như ở trên. Chú ý accounts address là địa chỉ tạo ra ở bước 2.

Hệ thống sẽ hỏi bạn nhập ID nào, nhập số nào cũng dc trừ 1, 2, 3 là ID của những mạng Ethereum đã có.

Nhập tiếp những thông tin sau:

Ctrl +C để kết thúc. File ethereum-poa.json sẽ được sử dụng cho các máy khác nhau. Tại terminal gõ command sau để start mạng blockchain PoA.

Tại JavaScript console của mỗi instance, chạy command dưới để thực hiện mining.

Bạn sẽ thấy mạng blockchain start như hình dưới.

Đỗ Trọng Nguyên – FPT Software
Potato Tech Mag

Tin liên quan: