Tham gia Mạng Lưới
Hướng dẫn tăng tốc hệ thống nút bằng Đồng bộ Trạng thái.
Để biết hướng dẫn tham gia với tư cách là người xác thực, vui lòng xem thêm Hướng dẫn Người xác thực.
Bắt đầu
Đảm bảo hoàn thành các điều kiện tiên quyết sau:
- Chọn cấu hình phần cứng/ máy chủ phù hợp. Xem hướng dẫn phần cứng.
- Đảm bảo rằng crossfid được cài đặt đúng cách. Xem hướng dẫn cài đặt để biết hướng dẫn chi tiết.
- Làm theo hướng dẫn cấu hình để khởi tạo và chuẩn bị nút để đồng bộ với mạng.
Lựa chọn Mạng Lưới
Các mạng hiện tại của CrossFi là:
Testnet
crossfi-evm-testnet-1
.
Mainnet
crossfi-mainnet-1
.
Trình khám phá
Trình khám phá Testnet
- Trình duyệt khối - https://scan.testnet.ms/
- Trình duyệt tầng Thực thi/Đồng thuận - https://test.xfiscan.com/
Trình khám phá Mainnet
Trình duyệt tầng Thực thi/Đồng thuận - https://xfiscan.com/
Phần cứng
Chạy một nút lưu trữ toàn bộ có thể tiêu hao nhiều tài nguyên khi toàn bộ crossfi-1
hiện tại có thể là trên 1TB
. Đối với những người muốn chạy đồng bộ trạng thái hoặc sử dụng quicksync, cấu hình phần cứng sau đây được đề xuất:
\n\n| Loại Nút | RAM | Lưu trữ | Người xác thực | 32GB | 500GB-2TB* |\n| --- | --- | --- | --- | --- | --- |\n\n
* Dung lượng lưu trữ cho người xác thực sẽ phụ thuộc vào mức độ cắt tỉa.
Cấu hình Chung
Đảm bảo thực hiện theo thiết lập và cấu hình cơ bản. Người vận hành sẽ cần khởi tạo crossfid
, tải xuống tệp genesis cho crossfi-1
, và thiết lập các liên kết dự kiến và/hoặc hạt giống để khởi động.
Khởi tạo Chuỗi
Testnet
wget https://github.com/crossfichain/crossfi-node/releases/download/v0.3.0-prebuild3/crossfi-node_0.3.0-prebuild3_linux_amd64.tar.gz && tar -xf crossfi-node_0.3.0-prebuild3_linux_amd64.tar.gz
git clone https://github.com/crossfichain/testnet.git
./bin/crossfid start --home ./testnet
Mainnet
wget https://github.com/crossfichain/crossfi-node/releases/download/v0.3.0/crossfi-node_0.3.0_linux_amd64.tar.gz && tar -xf crossfi-node_0.3.0_linux_amd64.tar.gz
git clone https://github.com/crossfichain/mainnet.git
./bin/crossfid start --home ./mainnet
Hạt giống & Đồng cấp
Khi khởi động nút sẽ cần kết nối với đồng cấp. Nếu có các nút cụ thể mà nhà vận hành nút muốn thiết lập làm hạt giống hoặc đồng cấp thường xuyên, điều này có thể được cấu hình trong tệp ~/.crossfid/config/config.toml
# Danh sách hạt giống được phân tách bằng dấu phẩy để kết nối
seeds = "@:26656,@:26656"
# Danh sách các nút để giữ kết nối thường xuyên bằng dấu phẩy
persistent_peers = "@:26656,@:26656"
Cắt tỉa Trạng thái - Bước Tùy chọn
Có bốn chiến lược cắt tỉa trạng thái. Những chiến lược này chỉ áp dụng cho trạng thái và không áp dụng cho lưu trữ khối. Người vận hành nút có thể muốn xem xét cắt tỉa tùy chỉnh nếu lưu trữ nút là mối bận tâm hoặc có hứng thú trong việc vận hành một nút lưu trữ.
Để thiết lập cắt tỉa, điều chỉnh tham số pruning
trong tệp ~/.crossfid/config/app.toml
. Các cài đặt cắt tỉa trạng thái có sẵn như sau:
everything
: Cắt tỉa tất cả trạng thái đã lưu trừ trạng thái hiện tại.nothing
: Lưu tất cả trạng thái và không xóa.default
: Lưu 100 trạng thái cuối cùng và trạng thái của mỗi khối thứ 10.000.custom
: Xác định các cài đặt cắt tỉa với các tham sốpruning-keep-recent
,pruning-keep-every
, vàpruning-interval
.
Theo mặc định, mọi nút đều ở chế độ default
và đây là cài đặt được khuyến nghị cho hầu hết các môi trường. Nếu người vận hành nút muốn thay đổi chiến lược cắt tỉa của nút của họ thì điều này phải được thực hiện trước khi nút được khởi tạo.
Trong ~/.crossfid/config/app.toml
# mặc định: chỉ giữ 100 trạng thái cuối cùng ngoài mỗi trạng thái thứ 500; cắt tỉa mỗi 10 khối
# nothing: mọi trạng thái lịch sử sẽ được lưu, không có gì sẽ bị xóa (tức là nút lưu trữ)
# everything: mọi trạng thái đã lưu sẽ bị xóa, chỉ lưu trạng thái hiện tại; cắt tỉa mỗi 10 khối
# custom: cho phép các tùy chọn cắt tỉa được chỉ định thủ công thông qua 'pruning-keep-recent', 'pruning-keep-every', và 'pruning-interval'
pruning = "custom"
# Những điều này được áp dụng nếu và chỉ nếu chiến lược cắt tỉa là custom.
pruning-keep-recent = "10"
pruning-keep-every = "1000"
pruning-interval = "10"
Việc cài đặt cờ khi khởi động crossfid
sẽ luôn ghi đè các cài đặt trong tệp app.toml
. Để thay đổi cài đặt cắt tỉa của nút sang chế độ everything
, hãy chuyển qua cờ ---pruning everything
khi chạy crossfid start
.
Nếu chạy nút với trạng thái cắt tỉa, sẽ không thể truy vấn các độ cao không có trong kho lưu trữ của nút.
API REST - Tùy chọn
Theo mặc định, API REST bị vô hiệu hóa. Để kích hoạt API REST, chỉnh sửa tệp ~/.crossfid/config/app.toml
, và thiết lập enable
thành true
trong phần [api]
.
###############################################################################
### Cấu hình API ###
###############################################################################
[api]
# Kích hoạt định nghĩa rằng máy chủ API có được kích hoạt hay không.
enable = true
# Swagger định nghĩa liệu tài liệu swagger có được đăng ký tự động hay không.
swagger = false
# Địa chỉ định nghĩa máy chủ API để lắng nghe.
address = "tcp://0.0.0.0:1317"
Tùy chọn kích hoạt swagger bằng cách đặt swagger
thành true
hoặc thay đổi cổng của API REST trong tham số address
. Sau khi khởi động lại ứng dụng, truy cập API REST trên :1317
.
GRPC - Tùy chọn
Theo mặc định, gRPC được kích hoạt trên cổng 9090
. Tệp ~/.crossfid/config/app.toml
là nơi có thể thay đổi trong phần gRPC. Để vô hiệu hóa điểm đầu gRPC, thiết lập enable
thành false
. Để thay đổi cổng, sử dụng tham số address
.
###############################################################################
### Cấu hình gRPC ###
###############################################################################
[grpc]
# Kích hoạt định nghĩa liệu máy chủ gRPC có được kích hoạt hay không.
enable = true
# Địa chỉ định nghĩa địa chỉ máy chủ gRPC để kết nối tới.
address = "0.0.0.0:9090"
Các tùy chọn Đồng bộ hóa
Có ba cách chính để đồng bộ một nút trên Chuỗi Crossfi; Đồng bộ Khối, Đồng bộ Trạng thái, và Quicksync. Xem ma trận bên dưới để biết cấu hình thiết lập được đề xuất cho Hub. Hướng dẫn này sẽ tập trung vào việc đồng bộ hai loại nút thông thường; toàn bộ và cắt tỉa. Để biết thêm thông tin về đồng bộ hóa để chạy một nút xác thực, hãy xem phần về Người xác thực.
Có hai loại mối quan tâm khi quyết định chọn tùy chọn đồng bộ phù hợp. Tính toàn vẹn của dữ liệu đề cập đến mức độ đáng tin cậy của dữ liệu do một tập hợp các người tham gia mạng cung cấp. Dữ liệu lịch sử đề cập đến tính mạnh mẽ và bao gồm của lịch sử chuỗi.
Mức độ toàn vẹn dữ liệu thấp | Mức độ toàn vẹn dữ liệu cao | |
---|---|---|
Dữ liệu lịch sử tối thiểu | Quicksync - Cắt tỉa | Đồng bộ Trạng thái |
Dữ liệu lịch sử vừa phải | Quicksync - Mặc định | |
Dữ liệu lịch sử đầy đủ | Quicksync - Lưu trữ | Đồng bộ Khối |
Đảm bảo tham khảo phần phần cứng để có hướng dẫn về cấu hình tốt nhất cho loại nút đang vận hành.
Đồng bộ Khối
Đồng bộ Khối nhanh hơn so với đồng thuận truyền thống và đồng bộ chuỗi từ thứ nhất bằng việc tải xuống các khối và xác minh chống lại cây merkle của người xác thực. Để biết thêm thông tin, xem Tài liệu Fastsync của Tendermint's
Khi đồng bộ qua Đồng bộ Khối, nhà vận hành nút sẽ cần phải nâng cấp chuỗi bằng tay hoặc thiết lập Cosmovisor để nâng cấp tự động.
Có thể đồng bộ từ các phiên bản trước đó của Chuỗi Crossfi. Xem ma trận bên dưới cho phiên bản crossfid
phù hợp. Xem lưu trữ testnet để biết các tệp genesis lịch sử.
ID Chuỗi | Phiên bản Crossfi |
---|---|
crossfi-evm-testnet-1 | v0.2.0 |
Bắt đầu
Bắt đầu crossfid để bắt đầu đồng bộ với cờ skip-invariants
. Để biết thêm thông tin về điều này, xem Xác minh mạng.
crossfid start --x-crisis-skip-assert-invariants
Đồng bộ Trạng thái
Đồng bộ Trạng thái là một cách nhanh và hiệu quả để khởi động một nút mới, nó hoạt động bằng cách phát lại các khối lượng lớn của trạng thái ứng dụng trực tiếp thay vì phát lại từng khối hoặc vòng đồng thuận. Để biết thêm thông tin, xem tài liệu Đồng bộ Trạng thái của Tendermint.
Để kích hoạt đồng bộ trạng thái, hãy truy cập một công cụ khám phá để lấy độ cao khối gần đây và hàm băm tương ứng. Người vận hành nút có thể chọn bất kỳ chiều cao/hàm băm nào trong giai đoạn kết nối hiện tại, nhưng vì thời gian ảnh chụp nhanh được khuyến nghị là 1000 khối, nên khuyên bạn nên chọn một thứ gì đó gần với chiều cao hiện tại - 1000
.
Với độ cao khối và hàm băm được chọn, cập nhật cấu hình trong ~/.crossfid/config/config.toml
để đặt enable = true
, và điền trust_height
và trust_hash
. Người vận hành nút có thể cấu hình các máy chủ rpc với các nhà cung cấp ưa thích, nhưng phải có ít nhất hai mục. Điều quan trọng là hai máy chủ rpc này là hai máy chủ mà nhà vận hành nút tin cậy để xác minh các phần cấu thành của trạng thái chuỗi. Dù không được khuyến nghị, sự độc đáo không được thực thi hiện tại, vì vậy có thể sao chép cùng một máy chủ trong danh sách và vẫn thành công đồng bộ.
Trong tương lai, yêu cầu máy chủ RPC sẽ bị loại bỏ vì đồng bộ trạng thái đang được di chuyển đến tầng p2p trong Tendermint 0.38.
#######################################################
### Tùy Chọn Cấu Hình Đồng Bộ Trạng Thái ###
#######################################################
[statesync]
# Đồng bộ trạng thái nhanh chóng khởi động một nút mới bằng cách phát hiện, tải và khôi phục một máy trạng thái
# ảnh chụp từ đồng cấp thay vì tải và phát lại các khối lịch sử. Yêu cầu một số đồng cấp trong
# mạng để thực hiện và phục vụ ảnh chụp máy trạng thái. Đồng bộ trạng thái không được attempted nếu nút
# có trạng thái địa phương nào (LastBlockHeight > 0). Nút sẽ có lịch sử khối bị cắt ngắn,
# bắt đầu từ độ cao của ảnh chụp.
enable = true
# Máy chủ RPC (phân tách bởi dấu phẩy) để xác minh nhẹ nhàng của máy trạng thái đồng bộ và
# lấy dữ liệu trạng thái cho việc khởi động nút. Cũng cần một chiều cao đáng tin cậy và hàm băm tương ứng có được từ nguồn đáng tin cậy,
# và một giai đoạn trong đó người xác thực có thể được tin cậy.
#
# Đối với các chuỗi dựa trên Cosmos SDK, trust_period thường nên khoảng 2/3 thời gian không gỡ bỏ (~2
# tuần) trong khi họ có thể bị trừng phạt một cách tài chính (cắt) vì hành vi xấu.
rpc_servers = ""
trust_height = 0
trust_hash = ""
trust_period = "168h0m0s"
Bắt đầu crossfid để bắt đầu đồng bộ trạng thái. Có thể mất một thời gian để nút có thể lấy được ảnh chụp, nhưng lệnh và đầu ra nên trông giống như sau:
$ crossfid start --x-crisis-skip-assert-invariants
...
→ INF Đã phát hiện ảnh chụp mới format=1 hash="0x000..." height=8967000 module=statesync
...
→ INF Lấy phân đoạn ảnh chụp chunk=4 format=1 height=8967000 module=statesync total=45
→ INF Áp dụng phân đoạn ảnh chụp vào ứng dụng ABCI chunk=0 format=1 height=8967000 module=statesync total=45
Khi đồng bộ trạng thái hoàn tất thành công, nút sẽ bắt đầu xử lý các khối như bình thường. Nếu đồng bộ trạng thái thất và người vận hành nút gặp lỗi: State sync failed err="state sync aborted"
, hãy thử khởi động lại crossfid
hoặc chạy crossfid unsafe-reset-all
(đảm bảo sao lưu mọi cấu hình và lịch sử trước khi làm việc này).
Quicksync
Quicksync.io cung cấp một số lượng lớn ảnh chụp nhanh hàng ngày của Chuỗi Crossfi với các mức độ cắt tỉa khác nhau (archive
1.4TB, default
540GB, và pruned
265GB). Để tải xuống và hướng dẫn cài đặt, hãy truy cập Hướng dẫn Quicksync Cosmos.
Ảnh chụp nhanh
Lưu và phục vụ ảnh chụp nhanh giúp các nút nhanh chóng tham gia vào mạng lưới. Ảnh chụp nhanh hiện được kích hoạt mặc định kể từ ngày 1/20/21
.
Mặc dù không được khuyến nghị, nếu một nhà vận hành nút cần tùy chỉnh tính năng này, nó có thể được cấu hình trong ~/.crossfid/config/app.toml
. Chuỗi Crossfi khuyến nghị đặt giá trị này để khớp với pruning-keep-every
trong config.toml
.
Rất khuyến nghị rằng những nhà vận hành nút sử dụng cùng một giá trị cho khoảng thời gian ảnh chụp để hỗ trợ việc phát hiện ảnh chụp. Việc phát hiện sẽ dễ dàng hơn khi có nhiều nút phục vụ cùng một ảnh chụp.
Trong app.toml
###############################################################################
### Cấu Hình Đồng Bộ Trạng Thái ###
###############################################################################
# Ảnh chụp đồng bộ trạng thái cho phép các nút khác tham gia nhanh chóng vào mạng mà không cần phát lại các khối lịch sử,
# thay vào đó tải xuống và áp dụng ảnh chụp trạng thái ứng dụng ở một độ cao nhất định.
[state-sync]
# snapshot-interval chỉ định khoảng thời gian khối mà ảnh chụp đồng bộ trạng thái địa phương
# được thực hiện (0 để vô hiệu hóa). Phải là bội số của pruning-keep-every.
snapshot-interval = 1000
# snapshot-keep-recent chỉ định số lượng ảnh chụp gần đây để giữ và phục vụ (0 để giữ tất cả).
snapshot-keep-recent = 10
Cosmovisor
Cosmovisor là một trình quản lý quy trình được phát triển để giải phóng các nhà vận hành nút khỏi việc can thiệp thủ công mỗi khi có một đợt nâng cấp. Cosmovisor giám sát module quản trị cho các đề xuất nâng cấp; nó sẽ chăm sóc việc tải xuống mã nhị phân mới, dừng mã nhị phân cũ, chuyển sang mã nhị phân mới, và bắt đầu lại.
Để biết thêm thông tin về cách chạy một nút qua Cosmovisor, xem tài liệu.
Chạy qua Quy trình Nền
Để chạy nút trong một quy trình nền với khởi động lại tự động, nên sử dụng quản lý dịch vụ như systemd
. Để thiết lập điều này, chạy lệnh sau:
sudo tee /etc/systemd/system/.service > /dev/null <
Sau đó, bắt đầu quy trình và xác nhận rằng nó đang chạy.
sudo -S systemctl start
sudo service status
Xuất Trạng thái
crossfid có thể xuất toàn bộ trạng thái ứng dụng thành tệp JSON. Bản xuất trạng thái ứng dụng này hữu ích cho phân tích thủ công và cũng có thể được sử dụng như là tệp genesis của một mạng mới.
Nút không thể chạy trong khi xuất trạng thái, nếu không nhà vận hành có thể gặp lỗi tài nguyên tạm thời không khả dụng
.
Xuất trạng thái với:
crossfid export > [filename].json
Cũng có thể xuất trạng thái từ một độ cao cụ thể (vào cuối quá trình xử lý khối của độ cao đó):
crossfid export --height [height] > [filename].json
Nếu dự định bắt đầu một mạng mới từ trạng thái đã xuất, hãy xuất với cờ --for-zero-height
:
crossfid export --height [height] --for-zero-height > [filename].json
Xác minh Mạng
Chạy các bất biến trên mỗi khối là một thực hành tốt nhất để phòng ngừa tai nạn. Điều này đảm bảo rằng nhà vận hành nút duy trì trạng thái chính xác và mong đợi của mạng.
Mặc dù điều này quan trọng cho hoạt động của một nút, kiểm tra bất biến không được kích hoạt theo mặc định vì chúng tốn kém về mặt tính toán. Để chạy nút với các kiểm tra này, hãy bắt đầu nút của bạn với cờ assert-invariants-blockly:
crossfid start --assert-invariants-blockly
Nếu một bất biến bị phá vỡ trên nút, nó sẽ trở nên hoảng loạn và nhắc nhở nhà vận hành gửi giao dịch sẽ dừng mạng. Ví dụ, thông báo cung cấp có thể trông như sau:
bất biến bị phá vỡ:
sự không nhất quán mã thông báo lỏng:
pool.NotBondedTokens: 100
tổng số mã thông báo tài khoản: 101
QUAN TRỌNG vui lòng gửi giao dịch sau:
crossfid tx crisis invariant-broken staking supply
Nếu bạn muốn chạy nút xác thực riêng, xem phần về Người xác thực.