SDK는 트랜잭션 구성 및 전송 및 체인 및 노드 자체의 다양한 측면을 쿼리하는 것을 지원합니다.
SDK 버전 2는 기존 V1 노드 GRPC API ( endpoints
모듈을 통해 액세스 가능)와 새로운 V2 API ( v2
모듈을 통해 액세스 가능)를 지원합니다. 새로운 사용자는 API가 더 유연하고 더 많은 기능을 가지고 있으며 더 나은 성능을 제공하므로 API를 사용해야합니다. V1 API는 다음 SDK 버전에서 더 이상 사용되지 않습니다.
최소 지원 Rust 버전은 Cargo.toml
Manifest에 명시되어 있습니다. MSRV 범프에는 SDK의 적어도 작은 버전 범프가 동반됩니다.
SDK는 Crates.io에 게시됩니다.
cargo add concordium-rust-sdk
SDK의 핵심 구조는 노드에 대한 연결을 유지하고 노드 쿼리를 지원하고 메시지를 보내는 클라이언트입니다. 이 클라이언트는 저렴하게 복제 할 수 있습니다.
Client
새로운 방법을 사용하여 구성됩니다.
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 ( ( ) )
}
transactions::send
트랜잭션 구성 및 전송 방법이 포함되어 있습니다. 트랜잭션을 구성해야하지만 즉시 서명하지 않은 경우 사용할 수있는 모듈 transactions::construct
있습니다.
지원되는 각 거래에는 거래에 필요한 최소한의 데이터가 필요한 방법을 구성하는 방법이 있습니다. 트랜잭션이 구성되면 send_block_item
endpoint를 사용하여 노드와 체인으로 전송할 수 있습니다.
다른 엔드 포인트의 기본 사용을 보여주는 여러 가지 예가 있습니다. 예제 디렉토리에서 찾을 수 있습니다.
기본적인 예로, 전송 트랜잭션을 구성하고 전송하는 전체 예는 v2_send_transfer를 참조하십시오.
모든 예제를 컴파일 할 수 있습니다
cargo build --release --example $NAME
예를 들어
cargo build --release --example v2_send_transfer
렌더링 된 문서는 https://docs.rs/concordium-rust-sdk/latest/에서 확인할 수 있습니다.
대부분의 경우 V1 및 V2 API의 엔드 포인트는 서로를 반영합니다. 그러나 V2 API에서 일부 엔드 포인트가 분할되어 일반적으로 필요한 데이터 만 쿼리 할 수 있습니다. 주요 차이점은입니다
V1
Endpoint get_block_summary
분할되었습니다
get_block_events
(거래 이벤트, 즉 사용자가 보낸 트랜잭션 결과)get_block_special_events
(CCD Minting 및 Delegation/Baker Rewards와 같은 특별 행사의 경우)get_chain_parameters
get_update_next_sequence_numbers
의 시퀀스 수에 대한 수요 수치에 대해서는get_finalization_summary
블록의 최종화 레코드의 세부 사항. 노드 정보는 get_node_info
와 get_peers_info
두 가지 엔드 포인트로 통합되었으며, 후자는 이제 피어 목록과 그 세부 사항을 모두 반환합니다.
SDK는 Protobuf Schemas에서 생성 된 파일에 의존합니다. 이 파일은 SDK 사용자가 SDK를 사용하기 위해 Protobuf 컴파일러를 설치할 필요가 없도록 리포지토리에 최선을 다하고 있습니다.
때때로 Schemas가 변경되면 생성 된 파일을 업데이트 할 필요가 있습니다. generate-protos
기능, 즉, SDK를 컴파일하여 수행 할 수 있습니다.
cargo build --features=generate-protos
이 파일을 업데이트하는 것은 스키마에 의해 결정된 노드의 API가 변경 될 때만 수행해야하며 SDK의 새 API를 지원해야합니다.