BREAKING CHANGE: handshake, chainsync, localstate and blockfetch mini-protocols changed the API surface Co-authored-by: jmhrpr <harper.jme@gmail.com>
39 lines
1.1 KiB
Rust
39 lines
1.1 KiB
Rust
use pallas::network::{
|
|
miniprotocols::{
|
|
blockfetch,
|
|
handshake::{self, n2n::VersionTable},
|
|
Point, TESTNET_MAGIC,
|
|
},
|
|
multiplexer::{bearers::Bearer, StdPlexer},
|
|
};
|
|
|
|
fn main() {
|
|
env_logger::init();
|
|
|
|
let bearer = Bearer::connect_tcp("relays-new.cardano-testnet.iohkdev.io:3001").unwrap();
|
|
|
|
let mut plexer = StdPlexer::new(bearer);
|
|
let channel0 = plexer.use_channel(0);
|
|
let channel3 = plexer.use_channel(3);
|
|
|
|
plexer.muxer.spawn();
|
|
plexer.demuxer.spawn();
|
|
|
|
let versions = VersionTable::v4_and_above(TESTNET_MAGIC);
|
|
let mut hs_client = handshake::N2NClient::new(channel0);
|
|
let handshake = hs_client.handshake(versions).unwrap();
|
|
|
|
assert!(matches!(handshake, handshake::Confirmation::Accepted(..)));
|
|
|
|
let point = Point::Specific(
|
|
63528597,
|
|
hex::decode("3f3d81c7b88f0fa28867541c5fea8794125cccf6d6c9ee0037a1dbb064130dfd").unwrap(),
|
|
);
|
|
|
|
let mut bf_client = blockfetch::Client::new(channel3);
|
|
|
|
let block = bf_client.fetch_single(point).unwrap();
|
|
|
|
println!("downloaded block of size: {}", block.len());
|
|
println!("{}", hex::encode(&block));
|
|
}
|