Skip to content

Commit

Permalink
Pull request feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
awygle committed Mar 2, 2023
1 parent 675627d commit f65fe1e
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 21 deletions.
2 changes: 1 addition & 1 deletion fog/ledger/server/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ pub struct LedgerRouterConfig {
pub client_listen_uri: FogLedgerUri,

/// gRPC listening URIs for preconfigured Key Image Stores.
#[clap(long, env = "MC_KEY_IMAGE_SHARD_URIS")]
#[clap(long, use_value_delimiter = true, env = "MC_KEY_IMAGE_SHARD_URIS")]
pub shard_uris: Vec<KeyImageStoreUri>,

/// Router admin listening URI.
Expand Down
39 changes: 37 additions & 2 deletions fog/ledger/server/src/router_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use std::{
};

use futures::executor::block_on;
use grpcio::ChannelBuilder;
use mc_attest_net::RaClient;
use mc_common::{
logger::{log, Logger},
Expand All @@ -17,8 +18,8 @@ use mc_fog_uri::{ConnectionUri, FogLedgerUri, KeyImageStoreUri};
use mc_ledger_db::LedgerDB;
use mc_sgx_report_cache_untrusted::ReportCacheThread;
use mc_util_grpc::{
AnonymousAuthenticator, Authenticator, ConnectionUriGrpcioServer, ReadinessIndicator,
TokenAuthenticator,
AnonymousAuthenticator, Authenticator, ConnectionUriGrpcioChannel, ConnectionUriGrpcioServer,
ReadinessIndicator, TokenAuthenticator,
};
use mc_util_uri::AdminUri;
use mc_watcher::watcher_db::WatcherDB;
Expand Down Expand Up @@ -49,6 +50,40 @@ where
E: LedgerEnclaveProxy,
RC: RaClient + Send + Sync + 'static,
{
pub fn new_from_config(
config: LedgerRouterConfig,
enclave: E,
ra_client: RC,
ledger: LedgerDB,
watcher: WatcherDB,
logger: Logger,
) -> LedgerRouterServer<E, RC> {
let mut ledger_store_grpc_clients = HashMap::new();
let grpc_env = Arc::new(
grpcio::EnvBuilder::new()
.name_prefix("Main-RPC".to_string())
.build(),
);
for shard_uri in config.shard_uris.clone() {
let ledger_store_grpc_client = ledger_grpc::KeyImageStoreApiClient::new(
ChannelBuilder::default_channel_builder(grpc_env.clone())
.connect_to_uri(&shard_uri, &logger),
);
ledger_store_grpc_clients.insert(shard_uri, Arc::new(ledger_store_grpc_client));
}
let ledger_store_grpc_clients = Arc::new(RwLock::new(ledger_store_grpc_clients));

LedgerRouterServer::new(
config,
enclave,
ra_client,
ledger_store_grpc_clients,
ledger,
watcher,
logger,
)
}

pub fn new(
config: LedgerRouterConfig,
enclave: E,
Expand Down
1 change: 0 additions & 1 deletion fog/ledger/server/tests/connection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ use mc_util_from_random::FromRandom;
use mc_util_grpc::{GrpcRetryConfig, CHAIN_ID_MISMATCH_ERR_MSG};
use mc_util_test_helper::{CryptoRng, RngCore, RngType, SeedableRng};
use mc_watcher::watcher_db::WatcherDB;

use std::{path::PathBuf, str::FromStr, sync::Arc, thread::sleep, time::Duration};
use tempdir::TempDir;
use url::Url;
Expand Down
24 changes: 8 additions & 16 deletions fog/ledger/server/tests/router_connection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
//! grpc API
use futures::executor::block_on;
use grpcio::ChannelBuilder;
use mc_account_keys::{AccountKey, PublicAddress};
use mc_api::watcher::TimestampResultCode;
use mc_attest_net::{Client as AttestClient, RaClient};
Expand All @@ -15,7 +14,7 @@ use mc_common::{
time::SystemTimeProvider,
};
use mc_crypto_keys::{CompressedRistrettoPublic, Ed25519Pair};
use mc_fog_api::{ledger::TxOutResultCode, ledger_grpc::KeyImageStoreApiClient};
use mc_fog_api::ledger::TxOutResultCode;
use mc_fog_ledger_connection::{
Error, FogKeyImageGrpcClient, FogMerkleProofGrpcClient, FogUntrustedLedgerGrpcClient,
KeyImageResultExtension, LedgerGrpcClient, OutputResultExtension,
Expand All @@ -33,7 +32,7 @@ use mc_transaction_core::{
Token,
};
use mc_util_from_random::FromRandom;
use mc_util_grpc::{ConnectionUriGrpcioChannel, GrpcRetryConfig, CHAIN_ID_MISMATCH_ERR_MSG};
use mc_util_grpc::{GrpcRetryConfig, CHAIN_ID_MISMATCH_ERR_MSG};
use mc_util_test_helper::{CryptoRng, RngCore, RngType, SeedableRng};
use mc_util_uri::AdminUri;
use mc_watcher::watcher_db::WatcherDB;
Expand Down Expand Up @@ -138,6 +137,7 @@ fn fog_ledger_merkle_proofs_test(logger: Logger) {
client_responder_id: client_listen_uri
.responder_id()
.expect("Couldn't get responder ID for router"),
shard_uris: vec![],
ias_spid: Default::default(),
ias_api_key: Default::default(),
client_auth_token_secret: None,
Expand Down Expand Up @@ -398,17 +398,6 @@ fn fog_ledger_key_images_test(logger: Logger) {
logger.clone(),
);

// Make Key Image Store client
let grpc_env = Arc::new(grpcio::EnvBuilder::new().build());

let store_client = KeyImageStoreApiClient::new(
ChannelBuilder::default_channel_builder(grpc_env.clone())
.connect_to_uri(&store_uri, &logger),
);
let mut store_clients = HashMap::new();
store_clients.insert(store_uri, Arc::new(store_client));
let shards = Arc::new(RwLock::new(store_clients));

// Make Router Server
let client_listen_uri = FogLedgerUri::from_str(&format!(
"insecure-fog-ledger://127.0.0.1:{}",
Expand All @@ -426,6 +415,7 @@ fn fog_ledger_key_images_test(logger: Logger) {
watcher_db: watcher_dir,
admin_listen_uri: admin_listen_uri.clone(),
client_listen_uri: client_listen_uri.clone(),
shard_uris: vec![store_uri],
client_responder_id: client_listen_uri
.responder_id()
.expect("Couldn't get responder ID for router"),
Expand All @@ -446,11 +436,10 @@ fn fog_ledger_key_images_test(logger: Logger) {

let ra_client =
AttestClient::new(&router_config.ias_api_key).expect("Could not create IAS client");
let mut router_server = LedgerRouterServer::new(
let mut router_server = LedgerRouterServer::new_from_config(
router_config,
enclave,
ra_client,
shards,
ledger.clone(),
watcher.clone(),
logger.clone(),
Expand All @@ -469,6 +458,7 @@ fn fog_ledger_key_images_test(logger: Logger) {
let mut verifier = Verifier::default();
verifier.mr_signer(mr_signer_verifier).debug(DEBUG_ENCLAVE);

let grpc_env = Arc::new(grpcio::EnvBuilder::new().build());
let mut client =
LedgerGrpcClient::new(client_listen_uri, verifier, grpc_env, logger.clone());

Expand Down Expand Up @@ -628,6 +618,7 @@ fn fog_ledger_blocks_api_test(logger: Logger) {
client_responder_id: client_listen_uri
.responder_id()
.expect("Couldn't get responder ID for router"),
shard_uris: vec![],
ias_spid: Default::default(),
ias_api_key: Default::default(),
client_auth_token_secret: None,
Expand Down Expand Up @@ -793,6 +784,7 @@ fn fog_ledger_untrusted_tx_out_api_test(logger: Logger) {
client_responder_id: client_listen_uri
.responder_id()
.expect("Couldn't get responder ID for router"),
shard_uris: vec![],
ias_spid: Default::default(),
ias_api_key: Default::default(),
client_auth_token_secret: None,
Expand Down
2 changes: 1 addition & 1 deletion tools/fog-local-network/local_fog.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ def start(self):
assert os.path.exists(os.path.join(self.watcher_db_path, 'data.mdb')), self.watcher_db_path
self.stop()

print(f'Starting fog ledger {self.name}')
print(f'Starting fog ledger router {self.name}')
cmd = ' '.join([
f'exec {self.target_dir}/ledger_router',
f'--ledger-db={self.ledger_db_path}',
Expand Down

0 comments on commit f65fe1e

Please sign in to comment.