Publicación
Comparte tu conocimiento.
¿Existe una forma sencilla de realizar un seguimiento de las transacciones de publicación?
¿Hay alguna forma sencilla de realizar un seguimiento de las transacciones de publicación? Podría transmitir las transacciones y buscar comandos de publicación, pero si hay una opción para filtrar en el nodo, sería preferible.
- Sui
- SDKs and Developer Tools
Respuestas
5Sí, hay un par de formas de rastrear lastransacciones de publicaciónen Sui. Este es un desglose:
1.Eventos de transacciones en transmisión:
*La transmisiónes el enfoque más flexible, ya que puede supervisar las transacciones a medida que se publican y procesan en la red. Puede transmitir las transacciones y filtrar los publish
comandos de los eventos.
- Puedes usar laSui JSON-RPCo laWebSocketpara suscribirte a los eventos de la transacción. En concreto, los métodos RPC
onTransaction
o los métodosonEvent
RPC le proporcionarían los detalles de la transacción en tiempo real.
A continuación, puedes filtrar los Publish
eventos teniendo en cuenta el tipo de transacción, ya que una transacción de publicación incluirá un Publish
comando específico de** tipo**con el que podrás hacer coincidir.
Este es un ejemplo de TypeScript en el que se usa el SDK de Sui para transmitir y filtrar las transacciones de publicació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.Filtrado a nivel de nodo:
Lamentablemente, por ahora, el nodo Sui no ofrece una forma directa defiltrarpara tipos de transacciones específicos (por ejemplopublish
) en el lado del nodo a través del RPC. Deberás filtrar estas transacciones a nivel de aplicación, como se muestra arriba, inspeccionando el tipo o el comando en los datos de la transacción.
3.Punto final del estado de la transacción:
Otra opción es usar el getTransaction
punto final de la API JSON-RPC. publish
Tras publicar una transacción, puedes sondear este punto final para ver el estado de la transacción y comprobar si se trata de un tipo.
Conclusión:
publish
*La transmisiónes la forma más fácil y flexible de rastrear publish
las transacciones en tiempo real, ya que te permite monitorear todo tipo de transacciones y filtrar los eventos directamente.
- Por el momento, no hay ningún filtro integrado para
publish
las transacciones en el lado del nodo. El filtrado debe realizarse en el lado del cliente después de recibir los eventos de la transacción.
###Realice un seguimiento de las transacciones de publicación fácilmente
1.Usar suix_queryTransactionBlocks
con filtro:
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.Transmisión a través de WebSocket(en tiempo real):
const client = new SuiClient({ url: 'wss://fullnode.mainnet.sui.io' });
client.subscribeEvent({
filter: { MoveEventType: '0x2::package::PublishEvent' },
onMessage: (event) => console.log('Published:', event)
});
Sí, puedes realizar un seguimiento de las transacciones de publicación de una manera más eficiente aprovechando lasAPI de filtrado de transaccionesy los mecanismos de suscripción a eventos de Sui, aunque con algunas limitaciones según la configuración del nodo. El enfoque más sencillo essuscribirse a los MoveModulePublished
eventosque se emiten cuando se publica un paquete. Esto evita escanear cada transacción manualmente.
Para ello, puede utilizar el suix_queryEvents
método RPC con un filtro de eventos como:
{
"jsonrpc": "2.0",
"id": 1,
"method": "suix_queryEvents",
"params": [
{
"MoveModule": {
"package": "0x0000000000000000000000000000000000000002",
"module": "package"
}
},
null,
10,
null
]
}
O, de forma más general, basta con filtrar por tipo de evento MoveModulePublished
sin necesidad de un paquete o módulo específico. Tenga en cuenta que no todos los nodos completos indexan bien los eventos a menos que estén configurados como nodos de archivo.
Si estás creando un indexador o una transmisión, también puedes rastrear los bloques de transacciones usando sui_getTransactionBlock
o sui_queryTransactionBlocks
y filtrarlos por tipo de Publish
transacción.
--enable-event-db
Para obtener una solución más escalable, configura un nodo completoSui con la indexación de eventos habilitaday usa la marca en la configuración de tu nodo. Esto mejora significativamente el rendimiento de las consultas de eventos.
Puede encontrar la documentación completa sobre esto aquí: https://docs.sui.io/build/events y https://docs.sui.io/sui-jsonrpc.
1. Filtro gRPC directo (el más rápido)**
# Filter publishes only
grpcurl -plaintext -d '{
"filter": {
"MoveFunction": "0x2::package::publish"
}
}' localhost:9000 sui.rpc.v2.Read/QueryTransactionBlocks
2. WebSocket (en tiempo real)**
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. Atajo de Explorador**
-Suizo: https://suiscan.xyz/mainnet/packages -Sui Vision: filtra por tipo de transacción «Publicar»
###Configuración de nodos (opcional)
Añádalo a para una indexación específica fullnode.yaml
para cada publicación:
event-handlers:
- event-type: publish
sink:
type: webhook
url: "your-webhook-url"
###Por qué funciona
- Publica transacciones y usa siempre
0x2::package::publish
PublishEvent
Contiene todos los metadatos (ID del paquete, remitente, etc.)
Para obtener datos históricos masivos, utilice:
sui-tool query-tx --module package --function publish --limit 100
Sí, hay formas más sencillas de rastrear las transacciones publicadas en lared Suisin tener que transmitir todas las transacciones y filtrarlas manualmente. Puedes aprovechar laAPI RPC de Suipara consultar y filtrar las transacciones, lo que puede ayudarte a rastrear directamente los publish
comandos sin tener que lidiar con el ruido innecesario de las transacciones.
1.Uso de get_transactions
RPC Endpoint (con filtros)
La API Sui RPC proporciona un get_transactions
punto final que te permite filtrar las transacciones en función de varios parámetros, incluido el tipo de transacción que te interesa. Para realizar un seguimiento de lastransacciones de publicación, puedes filtrarlas según el MoveCall
tipo de transacción y buscar los comandos específicos que corresponden a la publicación de un módulo Move.
Ejemplo: filtrar transacciones por tipo
Puedes solicitar que se filtren lastransacciones de publicacióncomprobando si hay MoveCall
transacciones con llamadas a funciones específicas (aquellas relacionadas con la publicación). Puedes estructurar tu consulta de la siguiente manera:
GET /v1/transactions?Filter[TransactionType]=MoveCall&Filter[MoveFunctionName]=publish
Esto le ayudaría a consultar específicamente las transacciones relacionadas con la publicación de un módulo Move, filtrando las innecesarias.
2.Flujos de transacciones con filtros
Puedes hacer streaming de las transacciones con laAPI WebSocket de Suio mediante un sondeo prolongado con la RPC para recibir actualizaciones de las transacciones en tiempo real. Si lo haces, filtrar las transacciones de publicación a nivel de nodo puede resultar más complicado, pero puedes seguir transmitiendo las transacciones y filtrarlas desde el lado del cliente siguiendo el siguiente método:
1.Transmite las transaccionesmediante la API WebSocket.
2.Filtropara las transacciones que contienen MoveCall
funciones relacionadas con la publicación o la dirección específica relacionada con el contrato que se está publicando.
Este es un ejemplo de una consulta de flujo de transacciones (pseudocódigo para un 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);
}
};
Este enfoque permite el seguimiento en tiempo real de las transacciones de publicación.
3.Sui Explorer (para seguimiento visual)
Para el seguimiento no programático, puedes usar elSui Explorerpara monitorear las transacciones en una interfaz visual. Sui Explorer te permite buscar tipos específicos de transacciones, incluida la publicación del módulo Move. Si bien esto no es automático, puede resultar útil para realizar comprobaciones rápidas durante el desarrollo o las pruebas.
*Sui Explorer: Sui Explorer
4.Supervise el publish
evento (si está disponible)
Si hay un evento relacionado específicamente con la publicaciónPublishEvent
, puedes escucharlo directamente (mediante la funcionalidad basada en eventos) en tu aplicación, si lo admite el nodo Sui o el marco de cadena de bloques. Si bien es posible que no esté disponible de forma predeterminada, en futuras implementaciones o soluciones creadas por la comunidad se podría añadir esta función.
5.Automatice el seguimiento con encuestas períodicas
Para realizar un seguimiento periódico de las transacciones publicadas, puede utilizar el get_transactions
punto final a intervalos regulares para buscar los módulos recién publicados. Esto evita la transmisión continua, pero ofrece actualizaciones frecuentes:
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)
}
Esto se puede usar en un sistema de backend que comprueba periódicamente si hay nuevas publish
transacciones.
Resumen:
get_transactions``MoveCall
*Filtrado de consultas RPC: utilice el publish
punto final con filtros para reducir las transacciones a las que se realizan con la función.
MoveCall
*WebSocket Streaming: Transmite todas las transacciones y filtra las transacciones relacionadas con la publicación.
*Explorer: utilice el Sui Explorer para realizar el seguimiento manual, lo que resulta especialmente útil para la inspección visual.
*Encuestas períodicas: Implemente un mecanismo de sondeo para buscar las transacciones con regularidad para los nuevos eventos de publicación.
Cada método se puede adaptar en función de su caso de uso, ya sea que esté creando un sistema automatizado o simplemente necesite comprobaciones manuales rápidas.
Sabes la respuesta?
Inicie sesión y compártalo.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Gana tu parte de 1000 Sui
Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.
- Cómo maximizar la retención de ganancias SUI: Sui Staking versus Liquid Staking615
- ¿Por qué BCS requiere un orden de campo exacto para la deserialización cuando las estructuras Move tienen campos con nombre?65
- «Errores de verificación de múltiples fuentes» en las publicaciones del módulo Sui Move: resolución automática de errores55
- Error de movimiento: no se puede procesar la transacción No se han encontrado monedas de gasolina válidas para la transacción419
- Fallo en la transacción Sui: objetos reservados para otra transacción410