Move.

Publicación

Comparte tu conocimiento.

Steven.
Nov 16, 2023
P&R expertos

¿Cómo leer un valor de retorno constante de una función de movimiento usando BCS en Sui TS SDK?

Tengo una función de movimiento que devuelve un valor constante de la siguiente manera:

const FEE: u64 = 1_000_000

public fun fee(): u64 {
    FEE
}
When I make a moveCall using the Sui TS SDK, I receive encoded values like this:

javascript
Copy code
returnValues: [
    [
        [ 64, 66, 15, 0, 0, 0, 0, 0 ], "u64"
    ]
]

Entiendo que necesito decodificar estos valores utilizando la biblioteca BCS para obtener un resultado legible. Sin embargo, no estoy seguro de cómo lograrlo. Intenté usar bcs.registerStructType, pero parece que este enfoque no funciona porque el valor devuelto no es una estructura.

¿Podría alguien proporcionarme orientación sobre cómo decodificar y leer este valor de retorno constante utilizando la biblioteca BCS del SDK de Sui TS?

  • Move
  • Move Script
0
2
Cuota
Comentarios
.

Respuestas

2
Jeremy.
Nov 16 2023, 13:49

No es necesario registrar un tipo de estructura para decodificar un valor u64 mediante la biblioteca BCS (serialización canónica binaria). Puedes decodificar directamente el valor codificado con el método bcs.decode. Así es como puedes decodificar y leer el valor de retorno constante en tu caso:

const bcs = require('bcs'); // Import the BCS library

const encodedValue = Uint8Array.from([ 64, 66, 15, 0, 0, 0, 0, 0 ]); // Encoded value received from the moveCall

const decodedValue = bcs.decode('u64', encodedValue); // Decode the u64 value

console.log('Decoded result:', decodedValue); // Output: Decoded result: 1000000

En el código anterior, la función bcs.decode toma el tipo 'u64' y el valor codificado como entrada y devuelve el resultado decodificado. El valor decodificado será de 1000000 en este caso, lo que corresponde al valor constante devuelto por la función Move.

0
Comentarios
.
Steven.
Nov 16 2023, 13:53

La biblioteca de serialización canónica binaria (BCS) del lenguaje de contratos inteligentes Move proporciona una forma de codificar y decodificar estructuras de datos. En su caso, querrá decodificar un valor u64 de una matriz de bytes codificada. Puedes hacerlo directamente usando el bcs.decodemétodo, como has mostrado en tu fragmento de código.

const bcs = require('bcs'); // Import the BCS library

const encodedValue = Uint8Array.from([ 64, 66, 15, 0, 0, 0, 0, 0 ]); // Encoded value received from the moveCall

const decodedValue = bcs.decode('u64', encodedValue); // Decode the u64 value

console.log('Decoded result:', decodedValue); // Output: Decoded result: 1000000

En este código, está utilizando la bcs.decodefunción para decodificar un valor u64 de una matriz de bytes codificada. La bcs.decodefunción utiliza dos argumentos: el tipo del valor que se va a decodificar ('u64' en este caso) y la matriz de bytes codificada. Devuelve el valor decodificado.

La bcs.decodefunción forma parte de la biblioteca BCS, que es una implementación de JavaScript del formato de serialización binaria del lenguaje Move. Esta biblioteca le permite codificar y decodificar las estructuras de datos de Move en JavaScript.

Tenga en cuenta que este código asume que la matriz de bytes codificada representa un valor u64. bcs.decodeSi la matriz de bytes codificada representa un tipo de valor diferente, tendrá que cambiar el argumento del tipo a.

Además, la bcs.decodefunción produce un error si la matriz de bytes codificada no es una codificación válida del tipo especificado. Por lo tanto, debe usar un bloque try/catch para gestionar los posibles errores digitalocean.com.

En conclusión, puedes decodificar un valor u64 de una matriz de bytes codificada utilizando el bcs.decodemétodo de la biblioteca BCS en el lenguaje de contratos inteligentes Move. Esto le permite interactuar con las estructuras de datos de Move en JavaScript.

0
Comentarios
.

Sabes la respuesta?

Inicie sesión y compártalo.

Move is an executable bytecode language used to implement custom transactions and smart contracts.

148Publicaciones231Respuestas
Sui.X.Peera.

Gana tu parte de 1000 Sui

Gana puntos de reputación y obtén recompensas por ayudar a crecer a la comunidad de Sui.

Campaña de RecompensasJunio
Usamos cookies para asegurarnos de que obtenga la mejor experiencia en nuestro sitio web.
Más información