[The Graph] Triển khai một Subgraph

[The Graph] Triển khai một Subgraph

Trong phần trước, bạn đã biết cách viết các tệp tạo nên một subgraph và cách cài đặt Graph CLI để tạo code cho subgraph của bạn. Bây giờ đã đến lúc triển khai subgraph cho hosted service của The Graph.

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; nếu bạn chưa có, bạn cần tạo nó trước. Sau đó, điều hướng đến Explorer, nhấp vào nút ‘Đăng ký với Github’ và hoàn tất quy trình cấp quyền của Github.

Lưu trữ token 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 token truy cập được hiển thị trên trang tổng quan và chạy graph auth https://api.thegraph.com/deploy/ <ACCESS_TOKEN>. Điều này sẽ lưu trữ token 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ừng tạo lại token truy cập.

Tạo subgraph

Trước khi triển khai subgraph, 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:

Hình ảnh – Chọn một hình ảnh được sử dụng làm hình ảnh xem trước và hình thu nhỏ cho subgraph.

Tên đồ thị – Cùng với tên tài khoản mà subgraph được tạo, tên 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 đó.

Tài khoảnTài khoản mà subgraph đượ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 mục con giữa các tài khoản.

Phụ đề – Văn bản sẽ xuất hiện trong các thẻ subgraph.

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

URL GitHub – Liên kết đến kho lưu trữ subgraph trên GitHub.

Ẩn – Bật tính năng này sẽ ẩn subgraph trong Graph Explorer.

Sau khi lưu subgraph 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 subgraph mới và cách triển khai subgraph của bạn. Hai bước đầu tiên đã được trình bày trong phần trước .

Triển khai subgraph

Việc triển khai subgraph của bạn sẽ tải các tệp subgraph mà bạn đã tạo với yarn build tới IPFS và yêu cầu graph Explorer bắt đầu lập chỉ mục subgraph của bạn bằng các tệp này.

Bạn triển khai subgraph bằng cách chạy yarn deploy.

Sau khi triển khai subgraph, Graph Explorer sẽ chuyển sang hiển thị trạng thái đồng bộ hóa của subgraph 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 subgraph chuyển sang Syncedkhi 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 subgraph của bạn khi các khối này được khai thác.

Triển khai lại một subgraph

Khi thực hiện các thay đổi đối với định nghĩa subgraph 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 yarn deploy lệnh ở trên để triển khai phiên bản cập nhật của subgraph của bạn. Bất kỳ cập nhật nào của một subgraph đều yêu cầu Nút biểu đồ lập chỉ mục lại toàn bộ subgraph của bạn, bắt đầu lại từ khối gốc.

Nếu subgraph đã triển khai trước đây 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 subgraph đượ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 subgraph để làm việc trong khi phiên bản mới đang đồng bộ hóa.

Triển khai tiểu đoạn 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 subgraph 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è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:

{

  “network”: “mainnet”,

  “address”: “0x123…”

}

{

  “network”: “ropsten”,

  “address”: “0xabc…”

}

Cùng với đó, bạn sẽ thay thế tên mạng và địa chỉ trong manifest với placeholders biến {{network}}và {{address}}và đổi tên tệp kê khai để ví dụ subgraph.template.yaml:

# …

dataSources:

  – kind: ethereum/contract

    name: Gravity

    network: mainnet

    network: {{network}}

    source:

      address: ‘0x2E645469f354BB4F5c8a05B3b30A929361cf77eC’

      address: ‘{{address}}’

      abi: Gravity

    mapping:

      kind: ethereum/events

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

{

  …

  “scripts”: {

    …

    “prepare:mainnet”: “mustache config/mainnet.json subgraph.template.yaml > subgraph.yaml”,

    “prepare:ropsten”: “mustache config/ropsten.json subgraph.template.yaml > subgraph.yaml”

  },

  “devDependencies”: {

    …

    “mustache”: “^3.1.0”

  }

}

Để 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:

# Mainnet:

yarn prepare:mainnet && yarn deploy

# Ropsten:

yarn prepare:ropsten && yarn deploy

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, nơi cần thay thế nhiều hơn địa chỉ hợp đồng và tên mạng hoặc nơi tạo ánh xạ hoặc ABI từ các mẫu.

Kiểm tra tình trạng trang con

Nếu một subgraph đồ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 subgraph 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 subgraph của mình. Trên dịch vụ 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 ở đâ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 đoạn con:

indexingStatusForCurrentVersion(subgraphName: “org/subgraph”) {

  synced

  health

  fatalError {

    message

    block {

      number

      hash

    }

    handler

  }

  chains {

    chainHeadBlock {

      number

    }

    latestBlock {

      number

    }

  }

}

Điều này sẽ cung cấp cho bạn cái chainHeadBlockmà bạn có thể so sánh với latestBlocktrên subgraph của mình để kiểm tra xem nó có đang chạy phía sau hay không. synced cho biết liệu tiểu mục đã bao giờ theo kịp chuỗi chưa. healthhiện có thể nhận các giá trị healthynếu không có lỗi xảy ra hoặc failednếu có lỗi làm tạm dừng tiến trình của subgraph. Trong trường hợp này, bạn có thể kiểm tra fatalErrortrường để biết chi tiết về lỗi này.

Jade Vo

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.