Skip to content

Commit

Permalink
Merge pull request #6 from xycloo/v20.0.0-rc1
Browse files Browse the repository at this point in the history
Update for protocol 20
  • Loading branch information
heytdep authored Oct 4, 2023
2 parents de63b0b + ef1deec commit d52a2e7
Show file tree
Hide file tree
Showing 7 changed files with 121 additions and 7 deletions.
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ authors = ["Tommaso De Ponti @ xyclooLabs <tommasodeponti@zohomail.eu>"]
readme = "README.md"
license = "Apache-2.0"
edition = "2021"
version = "0.0.3-alpha.0.1"
version = "0.0.3"

[dependencies]
stellar-xdr = { version = "0.0.17", features = ["std", "curr", "next", "base64", "serde"] }
stellar-xdr = { version = "20.0.0-rc1", features = ["std", "curr", "next", "base64", "serde"] }
serde = { version = "1.0.139", features = ["derive"] }
serde_json = "1.0.89"
thiserror = { version = "1.0.37"}
4 changes: 2 additions & 2 deletions src/bin/hello.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ pub fn main() {

let mut captive_core = CaptiveCore::new(config);

let range = Range::Bounded(BoundedRange(292395, 292396));
let range = Range::Bounded(BoundedRange(29, 30));
captive_core.prepare_ledgers_single_thread(&range).unwrap();

let ledger = captive_core.get_ledger(292395);
let ledger = captive_core.get_ledger(29);
let ledger_seq = match ledger.as_ref().unwrap() {
LedgerCloseMeta::V1(v1) => v1.ledger_header.header.ledger_seq,
LedgerCloseMeta::V0(v0) => v0.ledger_header.header.ledger_seq,
Expand Down
32 changes: 32 additions & 0 deletions src/bin/hello_testnet.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
//! This example is the copy of ./hello.rs but running on
//! stellar's public network. The network choice is specified
//! in the ingestion configs.
use ingest::{BoundedRange, CaptiveCore, IngestionConfig, Range, SupportedNetwork};
use stellar_xdr::next::LedgerCloseMeta;

pub fn main() {
let config = IngestionConfig {
executable_path: "/usr/local/bin/stellar-core".to_string(),
context_path: Default::default(),
network: SupportedNetwork::Testnet,
bounded_buffer_size: None,
staggered: None,
};

let mut captive_core = CaptiveCore::new(config);

let range = Range::Bounded(BoundedRange(1844380, 1844381));
captive_core.prepare_ledgers_single_thread(&range).unwrap();

let ledger = captive_core.get_ledger(1844381);
let ledger_seq = match ledger.as_ref().unwrap() {
LedgerCloseMeta::V1(v1) => v1.ledger_header.header.ledger_seq,
LedgerCloseMeta::V0(v0) => v0.ledger_header.header.ledger_seq,
LedgerCloseMeta::V2(v2) => v2.ledger_header.header.ledger_seq,
};

println!("{:?}", ledger);

println!("Hello ledger {}", ledger_seq);
}
43 changes: 43 additions & 0 deletions src/bin/online_testnet.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Note: this example is still untested.

use ingest::{CaptiveCore, IngestionConfig, SupportedNetwork};
use stellar_xdr::next::{LedgerCloseMeta, TransactionMeta};

pub fn main() {
let config = IngestionConfig {
executable_path: "/usr/local/bin/stellar-core".to_string(),
context_path: Default::default(),
network: SupportedNetwork::Testnet,
bounded_buffer_size: None,
staggered: None,
};

let mut captive_core = CaptiveCore::new(config);

let receiver = captive_core.start_online_no_range().unwrap();

println!("Printing tx sets");
for result in receiver.iter() {
let ledger = result.ledger_close_meta.unwrap().ledger_close_meta;
match &ledger {
LedgerCloseMeta::V0(v0) => {
println!(
"v0 meta: {}",
serde_json::to_string_pretty(&v0.tx_set).unwrap()
)
}
LedgerCloseMeta::V1(v1) => {
println!(
"v1 meta: {}",
serde_json::to_string_pretty(&v1.tx_set).unwrap()
)
}
LedgerCloseMeta::V2(v2) => {
println!(
"v2 meta: {}",
serde_json::to_string_pretty(&v2.tx_set).unwrap()
)
}
}
}
}
10 changes: 7 additions & 3 deletions src/buffered_ledger_meta_reader.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use std::io::{self, Read};
use std::sync::mpsc::{SendError, Sender, SyncSender};
use std::sync::{Arc, Mutex};
use stellar_xdr::next::{LedgerCloseMeta, Type, TypeVariant};
use stellar_xdr::next::{LedgerCloseMeta, Type, TypeVariant, DEFAULT_XDR_RW_DEPTH_LIMIT};
use std::io::prelude::*;

// from the stellar/go/ingestion lib
Expand Down Expand Up @@ -257,9 +257,11 @@ impl SingleThreadBufferedLedgerMetaReader for BufferedLedgerMetaReader {
return Err(BufReaderError::UsedClonedBufreader);
}

let mut reader = self.reader.as_mut().unwrap();
let mut xdr_reader = stellar_xdr::next::DepthLimitedRead::new(&mut reader, DEFAULT_XDR_RW_DEPTH_LIMIT);
for t in stellar_xdr::next::Type::read_xdr_framed_iter(
TypeVariant::LedgerCloseMeta,
&mut self.reader.as_mut().unwrap(),
&mut xdr_reader,
) {
let meta_obj = match t {
Ok(ledger_close_meta) => MetaResult {
Expand Down Expand Up @@ -324,9 +326,11 @@ impl MultiThreadBufferedLedgerMetaReader for BufferedLedgerMetaReader {
return Err(BufReaderError::UsedClonedBufreader);
}

let mut reader = self.reader.as_mut().unwrap();
let mut xdr_reader = stellar_xdr::next::DepthLimitedRead::new(&mut reader, DEFAULT_XDR_RW_DEPTH_LIMIT);
for t in stellar_xdr::next::Type::read_xdr_framed_iter(
TypeVariant::LedgerCloseMeta,
&mut self.reader.as_mut().unwrap(),
&mut xdr_reader,
) {
let meta_obj = match t {
Ok(ledger_close_meta) => MetaResult {
Expand Down
3 changes: 3 additions & 0 deletions src/ingestion_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ pub enum SupportedNetwork {

/// Ingest on pubnet.
Pubnet,

/// Ingest on testnet.
Testnet
}

/// Configuration settings
Expand Down
32 changes: 32 additions & 0 deletions src/toml.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,33 @@ HISTORY="curl -sf https://history.stellar.org/prd/core-live/core_live_001/{0} -o
"#;

const PREDEFINED_TESTNET_CONFIG: &str = r#"
LOG_COLOR=true
LOG_FILE_PATH=""
HTTP_PORT=0
PUBLIC_HTTP_PORT=false
NETWORK_PASSPHRASE="Test SDF Network ; September 2015"
#EXPERIMENTAL_PRECAUTION_DELAY_META=true
DATABASE="sqlite3://stellar.db"
PEER_PORT=11725
UNSAFE_QUORUM=true
[[HOME_DOMAINS]]
HOME_DOMAIN="testnet.stellar.org"
QUALITY="MEDIUM"
[[VALIDATORS]]
NAME="sdf_testnet_1"
HOME_DOMAIN="testnet.stellar.org"
PUBLIC_KEY="GDKXE2OZMJIPOSLNA6N6F2BVCI3O777I2OOC4BV7VOYUEHYX7RTRYA7Y"
ADDRESS="core-testnet1.stellar.org"
HISTORY="curl -sf http://history.stellar.org/prd/core-testnet/core_testnet_001/{0} -o {1}"
"#;

pub fn generate_predefined_cfg(path: &str, network: SupportedNetwork) {
match fs::create_dir(path) {
Ok(_) => println!("Directory created successfully."),
Expand All @@ -86,5 +113,10 @@ pub fn generate_predefined_cfg(path: &str, network: SupportedNetwork) {
cfg.write_all(PREDEFINED_PUBNET_CONFIG.as_bytes())
.expect("cannot write to file");
}

SupportedNetwork::Testnet => {
cfg.write_all(PREDEFINED_TESTNET_CONFIG.as_bytes())
.expect("cannot write to file")
}
}
}

0 comments on commit d52a2e7

Please sign in to comment.