Tổng quan

Bài viết này sẽ tổng hợp tính năng mới của IPNI, cung cấp tính mở rộng dành cho Providers, giúp tìm kiếm dữ liệu có thể định địa chỉ nội dung có sẵn từ các nhà cung cấp dịch vụ lưu trữ, có thể kể đến như dữ liệu trên mạng Filecoin và IPFS.

Đưa dữ liệu vào IPNI như thế nào

IPNI xây dựng chỉ mục của mình bằng cách xử lý Advertisements. Cấu trúc của Advertisements cho phép Nhà cung cấp lưu trữ cung cấp CID của họ lên IPNI, điều này sẽ làm cho các CID này có sẵn để tra cứu nhanh sau khi Advertisements đã được xử lý. Ngoài CID, Advertisements còn chứa id ngang hàng của providers, nhiều địa chỉ của họ và một giao thức mà dữ liệu có thể được tìm nạp qua. Nếu tra cứu CID trong IPNI, người ta có thể thấy ngay tất cả các trường bắt buộc để thiết lập kết nối và tải xuống dữ liệu.

Advertisements là các đối tượng IPLD, được liên kết thành một chuỗi. Khi IPNI nhìn thấy một Advertisements, nó có thể quay ngược chuỗi về mục đã biết cuối cùng và lập chỉ mục tất cả dữ liệu mới bắt đầu từ đó. Quy trình công việc này được mô tả ở sơ đồ bên dưới.

ads and

Thách thức

Xây dựng một chỉ mục đầy đủ cho một Storage Providers lớn như web3.storage hoặc nft.storage là điều khó. Việc đó tốn rất nhiều thời gian và tài nguyên tính toán. Ví dụ: tại thời điểm viết cid.contact – một trong số ít triển khai IPNI – đã có khoảng 1,3 nghìn tỷ CID được lập chỉ mục. Việc xây dựng lại chỉ mục như vậy từ đầu sẽ mất vài tuần và một máy chủ mạnh mẽ hoạt động không ngừng nghỉ 24/7.

Bây giờ, nếu Storage Providers muốn mở rộng quy mô theo chiều ngang thì sao? Một cách điển hình là thêm một nút mới có nhận dạng libp2p mới, có thể là một giao thức truyền khác và bắt đầu cung cấp cùng một dữ liệu từ đó. Nhưng làm cách nào IPNI biết rằng tất cả dữ liệu của nhà cung cấp “A” hiện cũng có sẵn tại nhà cung cấp “B”? Vì vậy, việc mở rộng Providers là câu trả lời.

Mở rộng Providers

Tính năng mở rộng Providers cho phép Nhà cung cấp lưu trữ thêm thông tin bổ sung vào tất cả các Advertisements trong quá khứ và tương lai của họ hoặc vào một Advertisements duy nhất với một ContextID cụ thể. Điều này rất dễ thực hiện bằng cách chỉ gửi một Advertisements duy nhất mà không cần xuất hết lại các chuỗi Advertisements.

Usecases

Mở rộng quy mô truy xuất dữ liệu bằng cách thêm các nút node có nhận dạng libp2p riêng, tất cả đều phục vụ cùng một tệp dữ liệu. Ca sử dụng này được thúc đẩy bởi Estuary – một nền tảng tích hợp dữ liệu lớn trên Filecoin, sử dụng tính năng mở rộng Providers để cải thiện khả năng truy xuất dữ liệu của họ.
Cung cấp các giao thức truyền dữ liệu mới trên một tập hợp nhiều địa chỉ mới mà bạn có thể đoán là cũng sẽ phục vụ cùng một tệp dữ liệu. Ca sử dụng này được thúc đẩy bởi Boost – một sự thay thế cho gói go-fil-markets trong lotus.

Cách thức hoạt động

TÍnh năng mở rộng Providers (Extended Providers) EPs là phần mở rộng tương thích ngược với giao thức Advertisements. Nó được định nghĩa là một trường ExtendedProvider mới có thể thêm vào Advertisements.

type Advertisement struct {
	...
	ExtendedProvider optional ExtendedProvider
	...
}

type ExtendedProvider struct {
    Providers [Provider]
    Override bool
}

type Provider struct {
    ID String
    Addresses [String]
    Metadata optional Bytes
    Signature Bytes
}

EPs có thể ở cấp chuỗi hoặc theo ngữ cảnh. Ngoài ra, EPs cấp chuỗi được áp dụng cho tất cả các Advertisements trong quá khứ và tương lai của nhà Providers. EPs theo ngữ cảnh chỉ được áp dụng cho một Advertisement có ID ngữ cảnh cụ thể.

Bạn có thể đọc thêm cách thức cài đặt và ví dụ thêm về SDK tại đây

Tổng kết

Sau khi tính năng EPs của IPNI được khởi chạy, các Providers sẽ dễ dàng hơn trong việc cung cấp lữ trữ thêm thông tin bổ sung mà không cần phải xuất lại hết chuỗi, điều này sẽ giúp người dùng có quyền kiểm soát chi tiết hơn đối với nhu cầu truy xuất dữ liệu của họ và cách họ giao dịch với Nhà cung cấp dịch vụ lưu trữ.