Bài viết
Chia sẻ kiến thức của bạn.
Có cách nào dễ dàng để theo dõi các giao dịch xuất bản không?
Có cách nào dễ dàng để theo dõi các giao dịch xuất bản không? Tôi có thể truyền phát các giao dịch và tìm kiếm các lệnh xuất bản nhưng nếu có một tùy chọn để lọc trong nút sẽ được ưu tiên hơn.
- Sui
- SDKs and Developer Tools
Câu trả lời
5Có, có một vài cách để theo dõigiao dịch xuất bảntrong Sui. Dưới đây là một bảng phân tích:
1.** Sự kiện giao dịch phát trực tuyến**:
*** Phát trực tuyến**là cách tiếp cận linh hoạt nhất vì bạn có thể theo dõi các giao dịch khi chúng được xuất bản và xử lý trên mạng. Bạn có thể truyền phát các giao dịch và lọc các publish
lệnh trong các sự kiện.
- Bạn có thể sử dụngSui JSON-RPC APIhoặcWebSocketđể đăng ký các sự kiện giao dịch. Cụ thể, các
onTransaction``onEvent
phương thức hoặc RPC sẽ cung cấp cho bạn chi tiết giao dịch trong thời gian thực.
Sau đó, bạn có thể lọc các Publish
sự kiện bằng cách nhìn vào loại giao dịch, vì giao dịch xuất bản sẽ bao gồm Publish
lệnh** type**cụ thể mà bạn có thể khớp.
Dưới đây là một ví dụ trong TypeScript sử dụng Sui SDK để truyền phát và lọc các giao dịch xuất bản:
import { JsonRpcProvider } from '@mysten/sui.js';
const provider = new JsonRpcProvider('https://fullnode.devnet.sui.io');
async function subscribeToPublishTransactions() {
const subscription = provider.subscribeTransaction((tx) => {
if (tx.type === 'publish') {
console.log('Publish Transaction Detected:', tx);
}
});
// To stop streaming
// subscription.unsubscribe();
}
subscribeToPublishTransactions();
2.** Lọc theo cấp node**:
Thật không may, hiện tại, nút Sui không cung cấp cách trực tiếp đểlọccho các loại giao dịch cụ thể (nhưpublish
) ở phía nút thông qua RPC. Bạn sẽ cần lọc các giao dịch này ở cấp ứng dụng, như được hiển thị ở trên, bằng cách kiểm tra loại hoặc lệnh trong dữ liệu giao dịch.
3.Điểm cuối trạng thái giao dịch:
Một tùy chọn khác là sử dụng điểm getTransaction
cuối của API JSON-RPC. Sau khi xuất bản giao dịch, bạn có thể thăm dò điểm cuối này để biết trạng thái của giao dịch và kiểm tra xem đó có phải là một publish
loại hay không.
Kết luận:
publish
*** Phát trực tuyến**là cách dễ nhất và linh hoạt nhất để theo dõi các publish
giao dịch trong thời gian thực, vì nó cho phép bạn theo dõi tất cả các loại giao dịch và lọc các sự kiện trực tiếp.
- Hiện tại, không có bộ lọc tích hợp cho các
publish
giao dịch ở phía nút. Việc lọc phải được thực hiện ở phía máy khách sau khi nhận được các sự kiện giao dịch.
###Theo dõi các giao dịch xuất bản một cách dễ dàng
1.** Sử dụng suix_queryTransactionBlocks
với bộ lọc**:
curl -X POST https://fullnode.mainnet.sui.io \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"method": "suix_queryTransactionBlocks",
"params": [{
"MoveFunction": "0x2::package::publish"
}, null, 10]
}'
2.** Phát trực tuyến qua WebSocket**(thời gian thực):
const client = new SuiClient({ url: 'wss://fullnode.mainnet.sui.io' });
client.subscribeEvent({
filter: { MoveEventType: '0x2::package::PublishEvent' },
onMessage: (event) => console.log('Published:', event)
});
Có, bạn có thể theo dõi các giao dịch xuất bản theo cách hiệu quả hơn bằng cách tận dụng các API lọc giao dịchvà cơ chế đăng ký sự kiện của Sui, mặc dù có một số hạn chế tùy thuộc vào thiết lập nút. Cách tiếp cận đơn giản nhất làđăng ký các sự kiệ MoveModulePublished
n**phát ra khi một gói được xuất bản. Điều này tránh quét mọi giao dịch theo cách thủ công.
Để thực hiện việc này, bạn có thể sử dụng suix_queryEvents
phương thức RPC với bộ lọc sự kiện như:
{
"jsonrpc": "2.0",
"id": 1,
"method": "suix_queryEvents",
"params": [
{
"MoveModule": {
"package": "0x0000000000000000000000000000000000000002",
"module": "package"
}
},
null,
10,
null
]
}
Hoặc nói chung hơn, chỉ cần lọc theo loại sự kiện MoveModulePublished
mà không yêu cầu gói hoặc mô-đun cụ thể. Lưu ý rằng không phải tất cả fullnodes đều chỉ mục tốt các sự kiện trừ khi được cấu hình thành các nút lưu trữ.
Nếu bạn đang xây dựng trình lập chỉ mục hoặc phát trực tuyến, bạn cũng có thể theo dõi các khối giao dịch bằng cách sử dụng sui_getTransactionBlock
hoặc sui_queryTransactionBlocks
và lọc theo Publish
loại giao dịch.
--enable-event-db
Để có giải pháp có khả năng mở rộng hơn, hãy thiết lậpSui fullnode với sự kiện chỉ mục đã bậtvà sử dụng cờ trong cấu hình nút của bạn. Điều này cải thiện đáng kể hiệu suất cho các truy vấn sự kiện.
Bạn có thể tìm thấy tài liệu đầy đủ về điều này ở đây: https://docs.sui.io/build/events và https://docs.sui.io/sui-jsonrpc.
###1. Bộ lọc gRPC trực tiếp (Nhanh nhất)
# Filter publishes only
grpcurl -plaintext -d '{
"filter": {
"MoveFunction": "0x2::package::publish"
}
}' localhost:9000 sui.rpc.v2.Read/QueryTransactionBlocks
###2. WebSocket (Thời gian thực)
const client = new SuiClient({ url: 'wss://fullnode.mainnet.sui.io' });
const unsubscribe = client.subscribeEvent({
filter: { MoveEventType: '0x2::package::PublishEvent' },
onMessage: (event) => console.log('New publish:', event)
});
###3. Phím tắt Explorer -Tìm kiếm: https://suiscan.xyz/mainnet/packages -Sui Vision: Lọc theo loại giao dịch “Xuất bản”
###Cấu hình nút (Tùy chọn)
Thêm vào để lập fullnode.yaml
chỉ mục dành riêng cho xuất bản:
event-handlers:
- event-type: publish
sink:
type: webhook
url: "your-webhook-url"
###Tại sao điều này hoạt động
- Xuất bản giao dịch luôn sử dụng
0x2::package::publish
- Ch
PublishEvent
ứa tất cả siêu dữ liệu (ID gói, người gửi, v.v.)
Đối với dữ liệu lịch sử số lượng lớn, sử dụng:
sui-tool query-tx --module package --function publish --limit 100
Có, có nhiều cách dễ dàng hơn để theo dõi các giao dịch xuất bản trongMạng Suimà không cần phải truyền phát tất cả các giao dịch và lọc chúng theo cách thủ công. Bạn có thể tận dụng APISui RPC APIđể truy vấn và lọc các giao dịch, điều này có thể giúp bạn theo dõi trực tiếp các publish
lệnh mà không phải xử lý nhiễu giao dịch không cần thiết.
1.** Sử dụng điểm cuối get_transactions
RPC (có bộ lọc)**
API Sui RPC cung cấp điểm get_transactions
cuối cho phép bạn lọc các giao dịch dựa trên các thông số khác nhau, bao gồm loại giao dịch bạn quan tâm. Để theo dõigiao dịch xuất bản, bạn có thể lọc dựa trên MoveCall
loại giao dịch và tìm kiếm các lệnh cụ thể tương ứng với việc xuất bản mô-đun Di chuyển.
Ví dụ: Lọc giao dịch theo loại
Bạn có thể thực hiện yêu cầu lọcgiao dịch xuất bảnbằng cách kiểm tra các giao dịch có các lệnh MoveCall
gọi hàm cụ thể (những giao dịch liên quan đến xuất bản). Đây là cách bạn có thể cấu trúc truy vấn của mình:
GET /v1/transactions?Filter[TransactionType]=MoveCall&Filter[MoveFunctionName]=publish
Điều này sẽ giúp bạn truy vấn cụ thể các giao dịch có liên quan đến việc xuất bản mô-đun Move, lọc ra những giao dịch không cần thiết.
2.** Luồng giao dịch có bộ lọc**
Bạn có thể truyền phát các giao dịch bằngSui WebSocket APIhoặc thông qua thăm dò ý kiến dài với RPC để nhận cập nhật giao dịch trực tiếp. Nếu bạn làm điều này, việc lọc ở cấp nút cho các giao dịch xuất bản có thể phức tạp hơn, nhưng bạn vẫn có thể truyền phát các giao dịch và lọc chúng ở phía máy khách bằng cách sử dụng phương pháp sau:
1.** Truyền phát các giao dịchbằng API WebSocket.
2. Bộ lọc**cho các giao dịch có chứa MoveCall
các chức năng liên quan đến xuất bản hoặc địa chỉ cụ thể liên quan đến hợp đồng đang được xuất bản.
Dưới đây là một ví dụ về truy vấn luồng giao dịch (mã giả cho WebSocket):
const socket = new WebSocket("ws://localhost:5001");
socket.onmessage = function(event) {
const txData = JSON.parse(event.data);
if (txData.type === "MoveCall" && txData.function === "publish") {
console.log("Publish Transaction Detected:", txData);
}
};
Cách tiếp cận này cho phép theo dõi thời gian thực các giao dịch xuất bản.
3.** Sui Explorer (để theo dõi trực quan)**
Để theo dõi không lập trình, bạn có thể sử dụng** Sui Explorer**để giám sát các giao dịch trong giao diện trực quan. Sui Explorer cho phép bạn tìm kiếm các loại giao dịch cụ thể, bao gồm xuất bản mô-đun Move. Mặc dù điều này không tự động, nhưng nó có thể hữu ích để kiểm tra nhanh trong quá trình phát triển hoặc thử nghiệm.
*** Sui Explorer**: Sui Explorer
4.** Giám sát sự publish
kiện (Nếu có)**
Nếu có một sự kiện đặc biệt liên quan đến xuất bảnPublishEvent
, bạn có thể trực tiếp nghe nó (sử dụng chức năng dựa trên sự kiện) trong ứng dụng của mình, nếu được hỗ trợ bởi nút Sui hoặc khung blockchain. Mặc dù điều này có thể không khả dụng sẵn, nhưng các triển khai trong tương lai hoặc các giải pháp do cộng đồng xây dựng có thể thêm tính năng này.
5.** Tự động hóa việc theo dõi với thăm dò định kỳ**
Để theo dõi định kỳ các giao dịch đã xuất bản, bạn có thể sử dụng điểm cuối theo get_transactions
các khoảng thời gian đều đặn để tìm kiếm các mô-đun mới được xuất bản. Điều này tránh phát trực tuyến liên tục nhưng cung cấp cho bạn các bản cập nhật thường xuyên:
use reqwest::blocking::get;
use serde_json::Value;
fn fetch_transactions() -> Result<Value, reqwest::Error> {
let url = "http://localhost:5001/v1/transactions?Filter[TransactionType]=MoveCall&Filter[MoveFunctionName]=publish";
let response = get(url)?;
let json: Value = response.json()?;
Ok(json)
}
Điều này có thể được sử dụng trong một hệ thống phụ trợ kiểm tra định kỳ các publish
giao dịch mới.
Tóm tắt:
get_transactions``MoveCall
*** Bộ lọc truy vấn RPC**: Sử dụng điểm publish
cuối với các bộ lọc để thu hẹp các giao dịch với hàm.
MoveCall
*** WebSocket Streaming**: Truyền phát tất cả các giao dịch và lọc các giao dịch liên quan đến xuất bản.
*** Explorer**: Sử dụng Sui Explorer để theo dõi thủ công, đặc biệt hữu ích để kiểm tra trực quan.
*** Thăm dò ý định động**: Thực hiện cơ chế bỏ phiếu để tìm nạp các giao dịch thường xuyên cho các sự kiện xuất bản mới.
Mỗi phương pháp có thể được điều chỉnh dựa trên trường hợp sử dụng của bạn — cho dù bạn đang xây dựng một hệ thống tự động hay chỉ cần kiểm tra thủ công nhanh chóng.
Bạn có biết câu trả lời không?
Hãy đăng nhập và chia sẻ nó.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Kiếm phần của bạn từ 1000 Sui
Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.
- Cách tối đa hóa lợi nhuận nắm giữ SUI: Sui Staking vs Liquid Staking615
- Tại sao BCS yêu cầu thứ tự trường chính xác để khử chuỗi khi cấu trúc Move có các trường được đặt tên?65
- Nhiều lỗi xác minh nguồn” trong các ấn phẩm về mô-đun Sui Move - Giải quyết lỗi tự động55
- Lỗi Sui Move - Không thể xử lý giao dịch Không tìm thấy đồng xu gas hợp lệ cho giao dịch419
- Giao dịch Sui thất bại: Đối tượng được dành riêng cho giao dịch khác410