Cách theo dõi Trình xác thực Eth2 và Phân tích P&L của bạn

blog 1Tin tứcDevelopersEnterpriseBlockchain ExplainedEvents and ConferencePressBản tin

Theo dõi bản tin của chúng tôi.

Địa chỉ email

Chúng tôi tôn trọng quyền riêng tư của bạn

Trang chủBlogDevelopers

Cách theo dõi Trình xác thực Eth2 và Phân tích P của bạn&L

bởi Coogan Brennan, ngày 15 tháng 1 năm 2021Đăng vào ngày 15 tháng 1 năm 2021

Hành trình của tôi để trở thành người xác thực trên Ethereum 2 0 Phần 3

Nếu bạn chưa quen với loạt bài này về cách chạy trình xác thực Eth2 của riêng bạn, hãy nhớ xem Phần 1 và Phần 2. Tất cả bạn nên xem Ben Edgington’s Bản tin Eth2.News fhoặc các bản cập nhật cần thiết, bản sửa lỗi và tin tức về lộ trình sắp tới. Cơ sở kiến ​​thức Eth2 của chúng tôi rất hữu ích nếu bạn cần thêm kiến ​​thức nền tảng về các thuật ngữ, giai đoạn chính và các sản phẩm ConsenSys ’Eth2.

Giới thiệu 

Đã một tháng rưỡi kể từ khi nguồn gốc chuỗi Beacon của Ethereum 2.0 bắt đầu. Hiện đã có 2.515.170 ETH được đặt cọc (khoảng 2,9 tỷ đô la theo tỷ giá thị trường hiện tại) với 61.561 trình xác thực duy nhất và 16.687 ETH khác đang chờ đợi. Mặc dù rất quan tâm đến việc đặt cược, nhưng đó thực sự là một tháng rưỡi khá không bình thường: Không có sự gián đoạn lớn nào, chỉ một vài vết chémsự tham gia của trình xác thực trong phần trăm thứ 98 hầu hết thời gian. Bây giờ là thời điểm tốt để hít thở lại những gì chúng tôi đã làm cho đến nay. 

Trong bài đăng trên blog này, tôi sẽ đề cập đến việc giám sát và phân tích tài chính của trình xác thực Eth2 của bạn. Tôi cung cấp tổng quan về cách truy cập các chỉ số Teku, thiết lập thông báo Beaconcha.in và cách truy vấn nút. Tôi cũng chia sẻ P hiện tại của tôi&Sự cố L. Trong phần cuối cùng của loạt bài này, tôi sẽ thảo luận về cách di chuyển thành công một nút Teku từ máy chủ này sang máy chủ khác một cách an toàn và (hy vọng).

Giám sát

Trong phần này, tôi sẽ hướng dẫn cách đọc các chỉ số của nút trình xác thực của bạn. Chạy trình xác thực Ethereum 2.0 đang chạy cơ sở hạ tầng cho một hệ thống phân tán. Một phần quan trọng của việc duy trì cơ sở hạ tầng là có thể biết được những gì đang diễn ra. May mắn thay, Teku đi kèm với một bộ công cụ giám sát tuyệt vời được kích hoạt với cờ “hỗ trợ –metrics” trên lệnh khởi động của chúng tôi, được đánh dấu bên dưới:

ExecStart = / home / ubuntu / teku-20.11.1 / bin / teku –network = mainnet<mạnh> mạnh> <mạnh>–eth1-endpoint = INFURA_ETH1_HTTP_ENDPOINT_GOES_HERE mạnh> <mạnh>–validator-key = / home / ubuntu / validator_key_info / KEYSTORE-M_123456_789_ABCD.json: /home/ubuntu/validator_key_info/validator_keys/KEYSTORE-M_123456_789_ABCD.txt strong> –rest-api-enable = true –rest-api-docs-enable = true –metrics-enable –validators-keystore-lock-enable = false <mạnh>–data-base-path = / var / lib / tekustrong>Ngôn ngữ mã: HTML, XML (xml)

Chúng tôi phải làm theo một vài bước trước khi có thể đọc dữ liệu.

Đối với những người không chạy ứng dụng Teku: Đầu tiên, tại sao? Thứ hai, bạn có thể thấy các chỉ số tối thiểu được cung cấp bởi tất cả các khách hàng trong Thông số kỹ thuật Ethereum 2.0 tại đây.


Cài đặt Prometheus

Đầu tiên, chúng ta cần cài đặt Prometheus, một chương trình giám sát mã nguồn mở và Grafana, một ứng dụng web phân tích và trực quan hóa tương tác nguồn mở. Prometheus kéo dữ liệu và Grafana hiển thị nó.

Trên dòng lệnh Ubuntu của bạn, tải xuống Prometheus ổn định mới nhất:

cuộn tròn -JLO <a href ="https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz">https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gza>Ngôn ngữ mã: HTML, XML (xml)

Giải nén tệp như vậy:

tar -zxvf <a href ="https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz">prometheus-2.23.0.linux-amd64.tar.gza>Ngôn ngữ mã: HTML, XML (xml)

Di chuyển nhị phân để nó có sẵn từ dòng lệnh:

Cd prometheus-2.23.0 Ngôn ngữ mã: CSS (css) sudo mv prometheus promtool / usr / local / bin /

Kiểm tra để đảm bảo rằng nó đã được cài đặt đúng cách:

prometheus –version promtool –version

Tạo tệp cấu hình YML prometheus:

sudo nano prometheus.yml Ngôn ngữ mã: CSS (css)

Dán các thông số này vào tệp cấu hình:

global: scrape_interval: 15s scrape_configs: – job_name: "prometheus" static_configs: – target: ["localhost: 9090"] – tên công việc: "teku-dev" scrape_timeout: 10s metrics_path: / metrics lược đồ: http static_configs: – target: ["localhost: 8008"] Ngôn ngữ mã: PHP (php)

Điều này hướng dẫn Prometheus thăm dò nút Teku của bạn cứ sau 10 giây trên cổng 8008. Nhấn Command-X và nhấn Y để lưu bộ đệm

Bây giờ, hãy tạo một thư mục để đặt tệp cấu hình Prometheus của chúng tôi:

sudo mkdir / etc / prometheus sudo mv prometheus.yml /etc/prometheus/prometheus.yml

Chúng tôi sẽ tạo một thư mục khác cho các tệp Prometheus khác và di chuyển bảng điều khiển và mô-đun console_libraries sang / etc / prometheus

sudo mkdir / var / lib / prometheus sudo mv console / console_libraries / / etc / prometheus / Ngôn ngữ mã: JavaScript (javascript)

Chúng tôi sẽ tạo một người dùng prometheus để chạy dịch vụ systemd, giống như chúng tôi đã làm cho Teku (đọc thêm tại đây về cách thức truy cập người dùng dựa trên vai trò là phương pháp hay nhất để bảo mật máy chủ) và cấp cho nó quyền truy cập vào các tệp thích hợp:

sudo useradd –no-create-home –shell / bin / false prometheus sudo chown -R prometheus: prometheus / var / lib / prometheus sudo chown -R prometheus: prometheus / etc / prometheus sudo chown -R prometheus: prometheus / usr / local / bin / Ngôn ngữ mã: JavaScript (javascript)

Cuối cùng, tạo một dịch vụ systemd có thể chạy trong nền và tự khởi động lại nếu nó không thành công:

sudo nano /etc/systemd/system/prometheus.service

Trong tệp này (phải trống), chúng tôi sẽ đặt một loạt lệnh để systemd thực thi khi chúng tôi bắt đầu dịch vụ. Sao chép phần sau vào trình soạn thảo văn bản:

[Unit] Description = Prometheus Wants = network-online.target After = network-online.target [Service] Type = simple User = prometheus Group = prometheus Restart = always RestartSec = 5 ExecStart = / usr / local / bin / prometheus \ – -config.file = / etc / prometheus / prometheus.yml \ –storage.tsdb.path = / var / lib / prometheus \ –web.console.templates = / etc / prometheus / consoles \ –web.console. Library = / etc / prometheus / console_libraries \ –web.listen-address = 0.0.0.0: 9090 \ [Install] WantedBy = multi-user.target Ngôn ngữ mã: JavaScript (javascript)

Nhập lệnh-X, sau đó nhập “Y” để lưu các thay đổi của bạn

Chúng tôi phải khởi động lại systemctl để cập nhật nó:

sudo systemctl daemon-tải lại

Bắt đầu dịch vụ:

sudo systemctl start prometheus

Kiểm tra để đảm bảo rằng nó đang chạy ổn:

tình trạng sudo systemctl prometheus

Nếu bạn thấy bất kỳ lỗi nào, hãy xem thêm chi tiết bằng cách chạy:

sudo journalctl -f -u prometheus.service Ngôn ngữ mã: CSS (css)

Bạn có thể dừng dịch vụ Prometheus bằng cách chạy:

sudo systemctl dừng prometheus

Cài đặt Grafana

Chúng tôi sẽ sử dụng trình quản lý gói APT cho Linux để cài đặt Grafana. Điều này sẽ giúp chúng tôi tiết kiệm được một lượng lớn công việc và cung cấp cho chúng tôi những gì chúng tôi cần. Chúng tôi sẽ làm theo các bước từ trang cài đặt Grafana:

sudo apt-get install -y apt-transport-https sudo apt-get install -y software-properties-common wget wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add -Ngôn ngữ mã: JavaScript (javascript)

Chúng tôi thêm kho lưu trữ Grafana ổn định để cập nhật:

tiếng vang "deb https://packages.grafana.com/oss/deb main ổn định" | sudo tee -a /etc/apt/sources.list.d/grafana.list Ngôn ngữ mã: PHP (php)

Sau đó, chúng tôi chạy APT:

sudo apt-get update sudo apt-get install grafana Ngôn ngữ mã: JavaScript (javascript)

Gói thiết lập một dịch vụ systemd cho chúng tôi (bao gồm một grafana người dùng), vì vậy chúng tôi chỉ cần chạy:

sudo service grafana-server start sudo service grafana-server status sudo update-rc.d grafana-server defaults Ngôn ngữ mã: CSS (css)

SSH Tunneling

Grafana tạo ra một trang tổng quan rất mượt mà nơi chúng ta có thể xem các chỉ số của mình. Trang tổng quan đó thường có sẵn trong trình duyệt, nhưng vì chúng tôi đang chạy phiên bản máy chủ của Ubuntu 20.04 nên tất cả đều là dòng lệnh. Vậy làm cách nào để chúng tôi truy cập Grafana?

Nhập SSH đường hầm. Đó là giao thức tương tự mà chúng tôi sử dụng để truy cập AWS từ dòng lệnh của mình, nhưng chúng tôi sẽ thiết lập nó để tạo một cổng nhân bản trên máy tính cục bộ kết nối với một cổng cụ thể trên phiên bản AWS của chúng tôi. Bằng cách đó, khi chúng tôi gọi cục bộ cổng, hãy nói bằng cách mở trình duyệt để http: // localhost: 3000, chúng tôi thực sự đang xem xét cổng 3000 trên phiên bản AWS của chúng tôi.

Để thực hiện việc này đúng cách, bạn sẽ cần khóa SSH của mình cho AWS và thông tin AWS IP. Bạn cũng cần biết bạn muốn kết nối với cổng nào. Trong trường hợp này, chúng tôi biết phiên bản Grafana của chúng tôi đang chạy trên cổng 3000, vì vậy các lệnh dòng lệnh sẽ có cấu trúc chung sau:

ssh -N -L 3000: localhost: 3000 -i "PATH_TO_AWS_KEYPAIR.pem"[email protected]_IDENTIFIER.compute-ZONE.amazonaws.com Ngôn ngữ mã: CSS (css)

Điều này cho phép chúng tôi đi đến http: // localhost: 3000 trên máy cục bộ của chúng tôi và xem bảng điều khiển Grafana của chúng tôi. Nhưng chúng tôi chưa có, vì vậy chúng tôi cần thực hiện những việc sau:

Thêm Prometheus làm nguồn dữ liệu:

Đi tới “thêm nguồn dữ liệu mới”

Nhấp vào “Prometheus” từ menu thả xuống

Nhấp vào “Lưu và Kiểm tra”

Nhấp vào + trên menu bên trái và chọn “nhập trang tổng quan”

Thêm ID Teku Grafana: 13457

Và, bada-bing! Chúng tôi có trang tổng quan của mình, có thể nhìn thấy thoải mái từ trình duyệt của chính chúng tôi:

Ứng dụng Beaconcha.in

Bảng điều khiển Grafana thật tuyệt vời và Prometheus đang lưu trữ thông tin cho chúng tôi. Tuy nhiên, có các tùy chọn khác để kiểm tra trạng thái trình xác thực.

Tôi đã và đang sử dụng Ứng dụng di động Beaconcha.in Dashboard dành cho Android. Đó là một giao diện đơn giản, điều này tốt vì nó không phải là dịch vụ giám sát chính của tôi. Nó cho phép tôi nhanh chóng nhìn vào điện thoại của mình để kiểm tra trạng thái trình xác thực và cung cấp thông báo nếu có vấn đề với trình xác thực.

Bạn nhập địa chỉ trình xác thực mà bạn muốn xem và đó là khá nhiều! Một lần nữa, không phải giám sát nặng nề (đó là những gì nguồn cấp dữ liệu Grafana Teku cung cấp). Nhưng nó tốt như một dịch vụ thứ cấp và nhị phân “trình xác thực có hoạt động hay không”:

Truy vấn nút

Một cách khác để “giám sát” ứng dụng xác thực Ethereum của chúng tôi là truy vấn nó! Giống như một ứng dụng khách Ethereum 1.0, ứng dụng xác thực Ethereum của chúng tôi đang lưu trữ và duy trì trạng thái thế giới. Nó nhỏ hơn nhiều so với Ethereum 1.0, nhưng nó vẫn là dữ liệu trên chuỗi được khách hàng xác thực của bạn lưu trữ và duy trì. 

Đây là cùng một dữ liệu được sử dụng bởi quy trình làm việc Prometheus / Grafana. Đơn giản là chúng ta đang tiến gần hơn đến kim loại (nói một cách gần như vậy) bằng cách tự mình truy vấn nút. Đây là một ví dụ về dữ liệu có sẵn (danh sách đầy đủ ở đây):

  • Thông tin chuỗi báo hiệu (khối gốc, tiêu đề khối và gốc, v.v.)
  • Thông tin trình xác thực (danh sách người xác nhận, số dư của người xác nhận, trách nhiệm của người xác nhận, v.v.)
  • Thông tin nút (sức khỏe tổng thể, danh sách đồng nghiệp, v.v.)

Xoăn

Cách đầu tiên để làm điều này là từ dòng lệnh. Khi chúng tôi bắt đầu Teku, chúng tôi đã thêm cờ –rest-api-enable = true. Thao tác này sẽ mở ra một điểm cuối API tại cổng mặc định là 5051 (bạn có thể chỉ định một cổng khác bằng cách sử dụng cờ –rest-api-port =). Bạn có thể kiểm tra lại xem cổng của mình đã mở chưa bằng cách chạy sudo lsof -i -P -n | grep LISTEN.

Sau khi bạn xác nhận cổng 5051 được Teku mở, chúng tôi sẽ sử dụng Xoăn để gửi NGHỈ NGƠI lệnh gọi đến điểm cuối API Teku tại http: // localhost: 5051. Ví dụ: đây là cách chúng tôi kiểm tra số dư của trình xác thực hoạt động cao nhất (theo Beaconcha.in):

curl -X NHẬN "http: // localhost: 5051 / eth / v1 / beacon / bang / head / validator_balances id = 0x8538bbc2bdd5310bcc71b1461d48704e36dacd106fa19bb15c918e69adbcc360e5bf98ebc3f558eb4daefe6d6c26dda5d6c26dda5"Ngôn ngữ mã: PHP (php)

Đây là câu trả lời mà tôi nhận được vào giữa tháng 1 năm 2021 (tại Gwei): 

{"dữ liệu": [{"mục lục":"4966","thăng bằng":"32607646851"}]} Ngôn ngữ mã: JSON / JSON với Nhận xét (json)

Hãy thử bất kỳ phương pháp nào trên trang tài liệu API Teku sử dụng định dạng ở cuối trang này:

curl -X [REST_METHOD] “API_CALL_IN_QUOTES” Ngôn ngữ mã: CSS (css)

Giao diện người dùng Swagger

Có một giao diện người dùng đồ họa cơ bản cho các lệnh gọi API mà Teku cung cấp khi cờ –rest-api-docs-enable = true được thêm vào trong các lệnh khởi động. Nó được xây dựng trên vênh váo-ui và Nó nằm trên cổng 5051 theo mặc định và chúng tôi có thể sử dụng đường hầm SSH để truy cập nó. Thực hiện theo các bước đào hầm SSH tương tự từ phía trên nhưng với 5051 làm cổng:

ssh -N -L 5051: localhost: 5051 -i "PATH_TO_AWS_KEYPAIR.pem" [email protected]_IDENTIFIER.compute-ZONE.amazonaws.com Ngôn ngữ mã: CSS (css)

Từ trình duyệt trên máy tính của chúng tôi, sau đó chúng tôi có thể điều hướng đến http: // localhost: 5051 / swagger-ui, trông giống như thế này trên máy của tôi:

Trạng thái thế giới và sự đồng thuận là điều gì đó nổi bật trong tất cả các blockchain công khai. Điều này có nghĩa là Ethereum 2.0 đạt được sự đồng thuận của tất cả các trình xác thực lưu trữ và cập nhật thông tin. Nó hơi khó hiểu, nhưng để xem xét trạng thái cục bộ của bạn là nhìn vào một ngăn duy nhất của một cấu trúc lớn hơn nhiều. Một tập hợp con của Fractal liên tục cập nhật và phát triển thành một cái gì đó mới. Thử nó!

Phân tích tài chính

Trong bài đăng đầu tiên của mình, tôi đã phác thảo các yêu cầu cơ bản về vật liệu cần thiết:

  • Cam kết ba năm để đặt cược 32 ETH và duy trì một nút xác thực
  • 32 ETH (cộng thêm <1 ETH cho chi phí gas)
  • 717,12 đô la (giá phiên bản đặt trước trong ba năm cho phiên bản m5.xlarge) + 120 (chi phí một năm cho 100 GB bộ nhớ, thận trọng giả sử gần đầy dung lượng bộ nhớ) = 837,12 đô la được trả trong suốt cả năm cho AWS
  • Tiện ích mở rộng MetaMask (cài đặt miễn phí
  • Tài khoản Infura (bậc miễn phí)

Chi phí AWS là trong ba năm khóa, nhưng tôi đã đề cập sau đó rằng tôi chưa sẵn sàng để làm điều đó. Và tôi rất vui vì tôi đã không làm như vậy! Bạn sẽ thấy lý do trong giây lát, nhưng đây là bảng phân tích cơ bản của tôi về chi phí cho tháng từ ngày 31 tháng 12 năm 2020:

AWS Chi phí hàng tháng

  • Truyền dữ liệu: $ 8,52
  • Máy chủ: $ 142,85
  • Lưu trữ: $ 72,50
  • Tổng: $ 223,87

Phần thưởng cho trình xác thực Eth2 

  • Khối: 5
  • Chứng thực: ~ 6,803
  • Phần thưởng ETH: 0,420097728 ($ 485,83 USD)

Như bạn có thể thấy, lợi nhuận $ 261,96 không phải là mức chênh lệch lớn cho một trình xác thực. Có một số lựa chọn: Đây là mức chi phí tương đối ổn định, vì vậy tôi có thể đặt thêm 32 ETH nữa. Tùy chọn tốt hơn có thể là thay đổi VPS tôi đang sử dụng, mà tôi đã đề cập trong bài đăng đầu tiên của mình, thực ra:

Ban đầu, tôi tin rằng AWS là nền tảng ảo tốt nhất và đó là dịch vụ tôi sẽ sử dụng cho bài đăng này và bài đăng tiếp theo. Tuy nhiên, sau khi xem qua toàn bộ quá trình, tôi nhận ra AWS có thể quá mức cần thiết đối với từng nhà phát triển. Sức mạnh thực sự của AWS dường như là khả năng tự động mở rộng quy mô để đáp ứng nhu cầu với chi phí cao. Điều này có ý nghĩa kinh tế đối với một dự án quy mô lớn, cấp doanh nghiệp, nhưng các yêu cầu khách hàng hiện tại của Ethereum 2.0 riêng lẻ không đòi hỏi sự khắt khe như vậy.

Tôi sẽ tiếp tục với AWS nhưng cũng giải trí với tùy chọn chạy một phiên bản trên Digital Ocean, phiên bản này có thể phù hợp hơn cho một nhà phát triển cá nhân. 

Tôi nghĩ rằng tôi có thể kiếm được lợi nhuận tốt hơn nhiều khi chạy trên Digital Ocean mà vẫn không ảnh hưởng đến hiệu suất trình xác thực của mình. Một người bạn đang chạy phiên bản trình xác thực trên một VPS nhỏ hơn nhiều, chi phí đặt hàng thấp hơn và chúng tôi có cùng hiệu suất trình xác thực. 

Thật tuyệt khi thử nghiệm với AWS và tôi không hối tiếc khi có đủ năng lực trong trường hợp có điều gì đó đi ngang trên chuỗi báo hiệu. Tuy nhiên, tôi nghĩ rằng nó là có thật không tuyệt vời rằng các nhà phát triển Eth 2 đang thực hiện lời hứa cung cấp tính năng xác thực từ mạng gia đình và các thiết lập! 

Các điều chỉnh giá hiện tại cũng khiến việc phân tích tài chính trở nên khó khăn, vì chi phí máy chủ được cố định bằng USD nhưng phần thưởng lại dao động. Về lâu dài, tôi rất tin tưởng rằng phần thưởng trình xác thực của tôi sẽ tăng giá trị. Nó làm cho chi phí-lợi nhuận trở nên phức tạp!

Đối với phần cuối cùng của loạt bài này, tôi sẽ thảo luận về cách di chuyển một cách an toàn và (hy vọng) thành công một nút Teku từ máy chủ này sang máy chủ khác. Tất nhiên, vấn đề chính đang bị cắt giảm. Có vẻ như phần lớn các vụ chặt chém đã diễn ra là do chính vấn đề này. Chúng tôi sẽ xem nó diễn ra như thế nào…

Các nhà phát triểnEthereum 2.0Ethereum ClientNewsletterĐăng ký nhận bản tin của chúng tôi để nhận tin tức Ethereum mới nhất, các giải pháp doanh nghiệp, tài nguyên dành cho nhà phát triển và hơn thế nữa.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map