Triển khai một Subgraph (đồ thị con)

in #thegraph4 years ago

Triển khai một Subgraph (đồ thị con)

Trong phần trước, bạn đã học cách viết các tệp tạo nên một đồ thị con và cách cài đặt Graph CLI để tạo mã cho đồ thị con của bạn. Bây giờ đã đến lúc triển khai đồ thị con cho dịch vụ Đồ thị được lưu trữ.

Tạo tài khoản Graph Explorer

Trước khi sử dụng dịch vụ được lưu trữ, hãy tạo một tài khoản trong The Graph Explorer. Bạn sẽ cần một tài khoản Github cho điều đó; nếu bạn chưa có, bạn cần tạo nó trước. Sau đó, điều hướng đến Trình khám phá, nhấp vào nút “Đăng ký với Github” và hoàn tất quy trình ủy quyền của Github.

Lưu trữ mã thông báo truy cập

Sau khi tạo tài khoản, hãy điều hướng đến trang tổng quan của bạn. Sao chép mã thông báo truy cập được hiển thị trên trang tổng quan và chạy xác thực đồ thị graph auth https://api.thegraph.com/deploy/ <ACCESS_TOKEN>. Điều này sẽ lưu trữ mã thông báo truy cập trên máy tính của bạn. Bạn chỉ cần thực hiện việc này một lần hoặc nếu bạn tạo lại mã thông báo truy cập.

Tạo đồ thị con

Trước khi triển khai đồ thị con, bạn cần tạo nó trong Graph Explorer. Đi tới trang tổng quan và nhấp vào nút “Add Subgraph“ và điền vào thông tin bên dưới nếu thích hợp:

Image  -  Chọn hình ảnh được sử dụng làm hình ảnh xem trước và hình thu nhỏ cho đồ thị con.

Subgraph Name  -  Cùng với tên tài khoản mà đồ thị con được tạo, điều này cũng sẽ xác định account-name/subgraph-name -tên kiểu được sử dụng cho các triển khai và điểm cuối GraphQL. Không thể thay đổi trường này sau đó.

Account  -  Tài khoản mà trang con được tạo. Đây có thể là tài khoản của một cá nhân hoặc tổ chức. Sau này không thể di chuyển các đồ thị con giữa các tài khoản.

Subtitle  -  Văn bản sẽ xuất hiện trong thẻ đoạn phụ.

Description  -  Mô tả của trang con, hiển thị trên trang chi tiết của trang con.

GitHub URL  -  Liên kết đến kho lưu trữ trang con trên GitHub.

Hide  -  Bật tính năng này sẽ ẩn đồ thị con trong Trình khám phá đồ thị.

Sau khi lưu đồ thị con mới, bạn sẽ được hiển thị một màn hình với trợ giúp về cách cài đặt Graph CLI, cách tạo giàn giáo cho đồ thị con mới và cách triển khai đồ thị con của bạn. Hai bước đầu tiên đã được trình bày trong phần trước.

Triển khai đồ thị con

Việc triển khai đồ thị con của bạn sẽ tải các tệp đồ thị con mà bạn đã tạo bằng yarn build lên IPFS và yêu cầu Trình khám phá đồ thị bắt đầu lập chỉ mục đồ thị con của bạn bằng các tệp này.

Bạn triển khai đồ thị con bằng cách chạy yarn deploy

Sau khi triển khai đồ thị con, Trình khám phá đồ thị sẽ chuyển sang hiển thị trạng thái đồng bộ hóa đồ thị con của bạn. Tùy thuộc vào lượng dữ liệu và số lượng sự kiện cần được trích xuất từ các khối Ethereum lịch sử, bắt đầu với khối gốc, quá trình đồng bộ hóa có thể mất từ vài phút đến vài giờ. Trạng thái đồ thị con chuyển sang Synced sau khi Nút đồ thị đã trích xuất tất cả dữ liệu từ các khối lịch sử. Graph Node sẽ tiếp tục kiểm tra các khối Ethereum cho đồ thị con của bạn khi các khối này được khai thác.

Triển khai lại một đồ thị con

Khi thực hiện các thay đổi đối với định nghĩa đồ thị con của bạn, chẳng hạn như để khắc phục sự cố trong ánh xạ thực thể, hãy chạy lại lệnh yarn deploy ở trên để triển khai phiên bản cập nhật của đồ thị con của bạn. Bất kỳ cập nhật nào của một đồ thị con đều yêu cầu Nút biểu đồ lập chỉ mục lại toàn bộ đồ thị con của bạn, bắt đầu lại từ khối gốc.

Nếu đồ thị con đã triển khai trước đó của bạn vẫn ở trạng thái Syncing, nó sẽ được thay thế ngay lập tức bằng phiên bản mới được triển khai. Nếu đồ thị con được triển khai trước đó đã được đồng bộ hóa hoàn toàn, Graph Node sẽ đánh dấu phiên bản mới được triển khai là Pending Version, đồng bộ hóa nó trong nền và chỉ thay thế phiên bản hiện được triển khai bằng phiên bản mới sau khi quá trình đồng bộ hóa phiên bản mới kết thúc. Điều này đảm bảo rằng bạn có một biểu đồ con để làm việc trong khi phiên bản mới đang đồng bộ hóa.

Triển khai đồ thị con cho nhiều mạng Ethereum

Trong một số trường hợp, bạn sẽ muốn triển khai cùng một bảng con cho nhiều mạng Ethereum mà không cần sao chép tất cả mã của nó. Thách thức chính đi k&egrave;m với điều này là địa chỉ hợp đồng trên các mạng này khác nhau. Một giải pháp cho phép tham số hóa các khía cạnh như địa chỉ hợp đồng là tạo các phần của nó bằng cách sử dụng hệ thống tạo khuôn mẫu như Mustache hoặc Handlebars.

Để minh họa cách tiếp cận này, hãy giả sử một đoạn con nên được triển khai cho mainnet và Ropsten bằng cách sử dụng các địa chỉ hợp đồng khác nhau. Sau đó, bạn có thể xác định hai tệp cấu hình cung cấp địa chỉ cho mỗi mạng:

Cùng với đó, bạn sẽ thay thế tên mạng và các địa chỉ trong tệp kê khai bằng các trình giữ chỗ có thể thay đổi {{network}} và {{address}} và đổi tên tệp kê khai thành ví dụ: subgraph.template.yaml:

Để tạo tệp kê khai cho một trong hai mạng, bạn có thể thêm hai lệnh bổ sung vào package.json cùng với sự phụ thuộc vào mustache:

Để triển khai bảng con này cho mainnet hoặc Ropsten, bây giờ bạn chỉ cần chạy một trong hai lệnh sau:

Một ví dụ làm việc của điều này có thể được tìm thấy ở đây.

Lưu ý;: Cách tiếp cận này cũng có thể được áp dụng trong các tình huống phức tạp hơn, trong đó cần phải thay thế nhiều hơn địa chỉ hợp đồng và tên mạng hoặc nơi tạo bản đồ hoặc ABI từ các mẫu.

Kiểm tra tình trạng đồ thị con

Nếu một đồ thị con đồng bộ hóa thành công, đó là một dấu hiệu tốt cho thấy nó sẽ tiếp tục chạy tốt mãi mãi. Tuy nhiên, các trình kích hoạt mới trên chuỗi có thể khiến đồ thị con của bạn gặp phải tình trạng lỗi chưa được kiểm tra hoặc nó có thể bắt đầu tụt hậu do các vấn đề về hiệu suất hoặc sự cố với các nhà khai thác nút.

Graph Node hiển thị một điểm cuối graphql mà bạn có thể truy vấn để kiểm tra trạng thái của đồ thị con của mình. Trên dịch vụ được lưu trữ, nó có sẵn tại https://api.thegraph.com/index-node/graphql. Lược đồ đầy đủ cho điểm cuối này có thể được tìm thấy tại đây. Đây là một truy vấn mẫu kiểm tra trạng thái của phiên bản hiện tại của một đồ thị con:

Thao tác này sẽ cung cấp cho bạn chainHeadBlock mà bạn có thể so sánh với latestBlock mới nhất trên đồ thị con của mình để kiểm tra xem nó có đang chạy phía sau hay không. synced thông báo nếu đồ thị con đã từng bắt kịp chuỗi. health hiện có thể nhận các giá trị healthy nếu không có lỗi xảy ra hoặc failed nếu có lỗi làm dừng tiến trình của đồ thị con. Trong trường hợp này, bạn có thể kiểm tra trường fatalError để biết chi tiết về lỗi này.

Discord: justacryptonoob#0840

Reference

https://thegraph.com/docs/deploy-a-subgraph

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 62890.35
ETH 2544.51
USDT 1.00
SBD 2.94