El SDK tiene apoyo para construir y enviar transacciones, y para consultar varios aspectos de la cadena y el nodo en sí.
El SDK versión 2 admite la API GRPC del nodo V1 anterior (accesible a través del módulo endpoints
), así como la nueva API V2 (accesible a través del módulo v2
). Los nuevos usuarios deben usar la API ya que es más flexible, tiene más funciones y funciona mejor. La API V1 estará en desuso en la próxima versión SDK.
La versión mínima de óxido soportada se establece en el manifiesto Cargo.toml
. Un golpe de MSRV estará acompañado por al menos un aumento de la versión menor del SDK.
El SDK se publica en Cates.io.
cargo add concordium-rust-sdk
La estructura central del SDK es el cliente que mantiene una conexión al nodo y admite consultar el nodo y enviarle mensajes. Este cliente es barato clonable.
El Client
se construye utilizando el nuevo método.
use concordium_rust_sdk :: * ;
# [ tokio :: main ( flavor = "multi_thread" ) ]
async fn main ( ) -> anyhow :: Result < ( ) > {
// Establish a connection to the node running locally and listening on port 20000
let mut client = v2 :: Client :: new ( v2 :: Endpoint :: from_str ( "http://localhost:20000" ) ? ) . await ? ;
// Query consensus information and print it as JSON
let consensus_info = client . get_consensus_info ( ) . await ? ;
println ! ( "{}" , serde_json::to_string_pretty ( &consensus_info ) .unwrap ( ) ) ;
Ok ( ( ) )
}
Las transactions::send
contiene métodos para construir y enviar transacciones. Hay una transactions::construct
que se puede usar si las transacciones solo necesitan ser construidas, pero no se firman de inmediato.
Cada transacción compatible tiene un método para construirlo que tome datos mínimos necesarios para la transacción. Una vez que se construye una transacción, se puede enviar al nodo y a la cadena utilizando el punto final send_block_item
.
Hay varios ejemplos que muestran un uso básico de los diferentes puntos finales. Se pueden encontrar en el directorio de ejemplos.
Como ejemplo básico, consulte V2_SEND_TRANSFER para un ejemplo completo de construir una transacción de transferencia y enviarla.
Todos los ejemplos se pueden compilar con
cargo build --release --example $NAME
Por ejemplo
cargo build --release --example v2_send_transfer
La documentación representada está disponible en https://docs.rs/concordium-rust-sdk/latest/
Los puntos finales en las API V1 y V2 en su mayor parte se reflejan entre sí. Sin embargo, algunos puntos finales se dividieron en la API V2 para que sea posible consultar solo los datos que comúnmente se necesitan más rápido. Las principales diferencias son
El punto final V1
get_block_summary
se ha dividido en
get_block_events
(para eventos de transacción, es decir, resultados de las transacciones enviadas por los usuarios)get_block_special_events
(para eventos especiales como CCD Minting y Delegation/Baker Rewards)get_chain_parameters
para parámetros de cadenaget_update_next_sequence_numbers
para la secuencia números de instrucciones de actualizaciónget_finalization_summary
para los detalles de los registros de finalización en un bloque. La información del nodo se ha consolidado en dos puntos finales, get_node_info
y get_peers_info
, el último de los cuales ahora devuelve tanto la lista de pares como sus detalles.
El SDK se basa en archivos generados a partir de esquemas ProtoBuf. Estos archivos están comprometidos con el repositorio para que los usuarios del SDK no tengan que tener instalado el compilador ProtoBuf para usar el SDK.
Ocasionalmente, es necesario actualizar los archivos generados, si los esquemas cambian. Esto se puede hacer compilando el SDK utilizando la función generate-protos
, es decir,
cargo build --features=generate-protos
La actualización de estos archivos solo debe realizarse cuando la API del nodo, determinada por los esquemas, cambia y necesitamos admitir la nueva API en el SDK.