O SDK tem suporte para construir e enviar transações e para consultar vários aspectos da cadeia e do próprio nó.
A versão 2 do SDK suporta a API GRPC do Node V1 antiga (acessível através do módulo endpoints
) e a nova API V2 (acessível pelo módulo v2
). Os novos usuários devem usar a API, pois é mais flexível, possui mais recursos e tem um desempenho melhor. A API V1 será descontinuada na próxima versão SDK.
A versão mínima suportada da ferrugem é declarada no manifesto Cargo.toml
. Uma colisão do MSRV será acompanhada por pelo menos uma versão menor do SDK.
O SDK é publicado em Crates.io.
cargo add concordium-rust-sdk
A estrutura central do SDK é o cliente que mantém uma conexão com o nó e suporta consultar o nó e enviar mensagens para ele. Este cliente é barato clonável.
O Client
é construído usando o novo 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 ( ( ) )
}
As transactions::send
contém métodos para construir e enviar transações. Há uma transactions::construct
Cada transação suportada possui um método para construí -lo que leva dados mínimos necessários para a transação. Depois que uma transação é construída, ela pode ser enviada para o nó e a cadeia usando o endpoint send_block_item
.
Existem vários exemplos mostrando o uso básico dos diferentes pontos de extremidade. Eles podem ser encontrados no diretório de exemplos.
Como exemplo básico, consulte V2_SEND_TRANSFER para um exemplo completo de construção de uma transação de transferência e enviando -a.
Todos os exemplos podem ser compilados com
cargo build --release --example $NAME
por exemplo
cargo build --release --example v2_send_transfer
A documentação renderizada está disponível em https://docs.rs/concordium-rust-sdk/latest/
Os pontos de extremidade nas APIs V1 e V2, na maioria das vezes, se espelham. No entanto, alguns pontos de extremidade foram divididos na API V2 para possibilitar apenas os dados de consulta que são geralmente necessários mais rapidamente. As principais diferenças são
O endpoint V1
get_block_summary
foi dividido em
get_block_events
(para eventos de transação, ou seja, resultados de transações enviadas pelos usuários)get_block_special_events
(para eventos especiais, como o CCD Minding e a delegação/recompensas de padeiro)get_chain_parameters
para parâmetros de correnteget_update_next_sequence_numbers
para números de sequência de instruções de atualizaçãoget_finalization_summary
para os detalhes dos registros de finalização em um bloco. As informações do nó foram consolidadas em dois pontos de extremidade, get_node_info
e get_peers_info
, o último dos quais agora retorna a lista de pares e seus detalhes.
O SDK conta com arquivos gerados a partir de esquemas Protobuf. Esses arquivos estão comprometidos com o repositório para que os usuários do SDK não precisem ter o compilador Protobuf instalado para usar o SDK.
Ocasionalmente, é necessário atualizar os arquivos gerados, se os esquemas mudarem. Isso pode ser feito compilando o SDK usando o recurso generate-protos
, ou seja,
cargo build --features=generate-protos
A atualização desses arquivos deve ser feita apenas quando a API do nó, determinada pelos esquemas, muda e precisamos apoiar a nova API no SDK.