Chúng ta đã biết, công nghệ blockchain đảm bảo an toàn dữ liệu nhờ dữ liệu được lưu trữ ở nhiều node trên hệ thống. Do đó, một hệ thống blockchain cần ít nhất 2 node hoặc miner trở lên, trong hướng dẫn trước, chúng ta chỉ mới tạo một miner, nên trong hướng dẫn này, chúng ta sẽ tạo một miner nữa và cho 2 miner đồng bộ dữ liệu với nhau để tạo thành một hệ thống blockchain hoàn chỉnh.
Thêm một miner mới
Bắt đầu từ thư mục ethereum đã tạo ở hướng dẫn trước, chúng ta sẽ tạo thêm một thư mục nữa để chứa thông tin của miner2. Sau đó, tiến hành khởi tạo lại miner2 với các bước đã thực hiện để tạo miner1.
Cấu hình mới cho miner2
Trường hợp cài cả hai miner trên cùng một máy, chúng ta sẽ phải cấu hình port và rpcport cho từng miner để không bị trùng port và nhận diện được các miner còn lại.
Mở file startMiner.sh trong thư mục miner1 và thêm option sau:
--port "30303"
Như vậy file startMiner.sh của miner1 sẽ thành như vầy:
geth --identity "miner1" --networkid 88 --datadir "/home/trinh/Desktop/ethereum/miner1" --rpc --rpcapi "db,eth,net,web3,personal" --rpcport "8545" --unlock 0 --password /home/trinh/Desktop/ethereum/miner1/password.sec --ipcpath "~/.ethereum/geth.ipc" --port "30303"
Tương tự cho file startMiner.sh của miner2, chúng ta sẽ đổi thành port 30304 và thêm rpcport 8546.
Ngoài ra, trong file startMiner.sh của miner2, chúng ta sẽ bỏ đi option –ipcpath, option này giúp chúng ta quy định file geth.ipc sẽ xuất ra ở đâu khi khởi động miner, và chúng ta sẽ phải khai báo đường dẫn đến file geth.ipc này để mở console điều khiển. Trong hệ điều hành linux, ~/.ethereum/ là đường dẫn mặc định, do đó khi khai báo ipcpath cho miner1 như trên, chúng ta chỉ cần nhập lệnh:
geth attach
Thay vì nhập lệnh:
geth attach ipc:/home/trinh/Desktop/ethereum/miner1/geth.ipc
Và do miner1 đã dùng đường dẫn đó rồi nên miner2 sẽ không được trùng đường dẫn với miner1 nữa.
Như vậy, file startMiner.sh của miner2 sẽ như sau:
geth --identity "miner2" --networkid 88 --datadir "/home/trinh/Desktop/ethereum/miner2" --rpc --rpcapi "db,eth,net,web3,personal" --rpcport "8546" --unlock 0 --password /home/trinh/Desktop/ethereum/miner2/password.sec --port "30304"
Sau khi đã cấu hình xong 2 miner, chúng ta sẽ cho miner ngừng hoạt động và khởi động lại. Để vào console điều khiển của miner2, ta nhập lệnh:
geth attach ipc:/home/trinh/Desktop/ethereum/miner2/geth.ipc
Lấy địa chỉ và kết nối đến node hoặc miner khác
Trong console điều khiển miner2, chúng ta lấy địa chỉ node của miner2 bằng lệnh:
admin.nodeInfo.enode
Trong console điều khiển của miner1, nhập lệnh sau để thêm kết nối đến địa chỉ node của miner2:
Tương tự, chúng ta cũng thêm địa chỉ node của miner1 cho miner2:
Sau khi thêm kết nối trên cả 2 miner, chúng ta nhập lệnh sau để kiểm tra:
admin.peers
Nếu có thông tin kết nối như hình trên thì chúng ta đã kết nối 2 miner thành công. Ngược lại, nếu không có bất cứ thông tin nào như hình bên dưới, chúng ta cần kiểm tra lại địa chỉ node, địa chỉ ip, và port.
Khi 2 miner đã kết nối với nhau, các miner sẽ luôn đồng bộ dữ liệu trên hệ thống, để kiểm tra miner đã đồng bộ dữ liệu hay chưa, ta nhập:
eth.syncing
Nếu đang đồng bộ dữ liệu từ các miner khác, console sẽ hiển thị thông báo như sau:
Khi đã đồng bộ xong thì chúng ta sẽ không còn thấy các thông số đồng bộ nữa:
Như vậy là chúng ta đã xây dựng một hệ thống private blockchain Ethereum.
1 Bình luận