Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Giải ngố về blockchain PoA

Bản quyền thuộc về Fsoft Potato Tech Mag

Tiếp tục series về Blockchain, bài trước đã hướng dẫn cài đặt mạng Ethereum blockchain 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).
Tuy nhiên trước khi “lâm trận” thực tế thì cũng nên có chút “dạo đầu”. Ít nhất cũng cần hiểu PoA với PoW nó là cái gì.
PoWPoA 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ả, nhưng những cách giải thích về 2 thuật toán này quá hàn lâm, đọc xong có thấy gây… ngu người.
Mình sẽ giải thích 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 để pass 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ó skill 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ó (difficulty) 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
Vậy còn PoA là thế nào
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à tất nhiên, 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 lôi thôi. Đơ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
Lý thuyết mà ko có thực hành thì chỉ là chém gió. Phần này sẽ giới thiệu step by step 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 (xem bài trước để biết geth là cái giề)
Trên Linux terminal, gõ command sau
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
Quá trình cài đặt bắt đầu
Bước 2) Tạo account
Gõ command sau
geth --datadir [thư mục của bạn] account new
Tạo một cửa sổ terminal mới, chạy command sau để vào Ethereum console
geth attach ~/Blockchain/ethereum/geth.ipc
Chữ in đậm chính là thư mục –datadir bạn tạo ở trên
Gõ command dưới để tao account base
Bước 3) Cấu hình mạng blockchain
Tạo một cửa sổ terminal mới, chạy command sau
puppeth
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
geth --datadir ethereum --port 3000
Tại JavaScript console của mỗi instance, chạy command dưới để thực hiện mining
personal.unlockAccount(eth.coinbase, ‘password’, 0)
miner.setEtherbase(eth.coinbase)
miner.start()
Bạn sẽ thấy mạng blockchain start như hình dưới
Bài tiếp theo sẽ hướng dẫn các bạn cách tương tác với mạng blockchain Ethereum.

Đăng nhận xét

0 Nhận xét