Skip to content

Commit

Permalink
Update Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Tjemmmic committed Aug 22, 2024
1 parent 9e5d154 commit af5047e
Show file tree
Hide file tree
Showing 11 changed files with 212 additions and 199 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 1 addition & 6 deletions avs/incredible-squaring-avs/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,7 @@ use std::process::Command;

fn main() {
// List of directories containing Solidity contracts
let contract_dirs = vec![
// "./../../contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts",
// "./../../contracts/lib/eigenlayer-middleware",
// "./../../contracts/",
"./contracts",
];
let contract_dirs = vec!["./contracts"];

// Get the project root directory
let root = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
Expand Down
53 changes: 31 additions & 22 deletions avs/incredible-squaring-avs/src/operator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -277,28 +277,6 @@ impl<T: Config, I: OperatorInfoServiceTrait> Operator<T, I> {
.get_operator_id(operator_address)
.await?;

log::info!(
"Operator info: operatorId={}, operatorAddr={}, operatorG1Pubkey={:?}, operatorG2Pubkey={:?}",
hex::encode(operator_id),
operator_address,
bls_keypair.clone().get_pub_key_g1(),
bls_keypair.clone().get_pub_key_g2(),
);

let operator = Operator {
config: config.clone(),
node_api,
avs_registry_contract_manager: avs_registry_contract_manager.clone(),
incredible_squaring_contract_manager,
eigenlayer_contract_manager: eigenlayer_contract_manager.clone(),
bls_keypair: bls_keypair.clone(),
operator_id,
operator_addr: operator_address,
aggregator_server_ip_port_addr: config.server_ip_port_address.clone(),
aggregator_server: aggregator_service,
aggregator_rpc_client,
};

// Register Operator with EigenLayer
let register_operator = eigen_utils::types::Operator {
address: operator_address,
Expand Down Expand Up @@ -335,9 +313,40 @@ impl<T: Config, I: OperatorInfoServiceTrait> Operator<T, I> {
.unwrap();
log::info!("Is operator registered: {:?}", answer);

log::info!(
"Operator info: operatorId={}, operatorAddr={}, operatorG1Pubkey={:?}, operatorG2Pubkey={:?}",
hex::encode(operator_id),
operator_address,
bls_keypair.clone().get_pub_key_g1(),
bls_keypair.clone().get_pub_key_g2(),
);

let operator = Operator {
config: config.clone(),
node_api,
avs_registry_contract_manager: avs_registry_contract_manager.clone(),
incredible_squaring_contract_manager,
eigenlayer_contract_manager: eigenlayer_contract_manager.clone(),
bls_keypair,
operator_id,
operator_addr: operator_address,
aggregator_server_ip_port_addr: config.server_ip_port_address.clone(),
aggregator_server: aggregator_service,
aggregator_rpc_client,
};

Ok(operator)
}

pub async fn is_registered(&self) -> Result<bool, OperatorError> {
let operator_is_registered = self
.avs_registry_contract_manager
.is_operator_registered(self.operator_addr)
.await?;
log::info!("Operator registration status: {:?}", operator_is_registered);
Ok(operator_is_registered)
}

pub async fn start(self) -> Result<(), OperatorError> {
log::info!("Starting operator.");
let operator_is_registered = self
Expand Down
7 changes: 1 addition & 6 deletions avs/tangle-avs/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,7 @@ use std::process::Command;

fn main() {
// List of directories containing Solidity contracts
let contract_dirs = vec![
// "./../../contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts",
// "./../../contracts/lib/eigenlayer-middleware",
// "./../../contracts/",
"./contracts",
];
let contract_dirs = vec!["./contracts"];

// Get the project root directory
let root = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
Expand Down
91 changes: 56 additions & 35 deletions avs/tangle-avs/src/operator.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
use alloy_contract::private::Ethereum;
use alloy_primitives::{Address, ChainId, Signature, B256};
use alloy_primitives::{Address, Bytes, ChainId, Signature, B256};
use alloy_provider::{Provider, RootProvider};
use alloy_signer_local::PrivateKeySigner;
use alloy_transport::BoxTransport;
use eigen_utils::avs_registry::reader::AvsRegistryChainReaderTrait;
use eigen_utils::avs_registry::writer::AvsRegistryChainWriterTrait;
use eigen_utils::avs_registry::AvsRegistryContractManager;
use eigen_utils::crypto::bls::KeyPair;
use eigen_utils::el_contracts::writer::ElWriter;
use eigen_utils::el_contracts::ElChainContractManager;
use eigen_utils::node_api::NodeApi;
use eigen_utils::types::AvsError;
use eigen_utils::Config;
Expand Down Expand Up @@ -42,6 +44,8 @@ pub enum OperatorError {
OperatorIdError(String),
#[error("Error in Operator Address: {0}")]
OperatorAddressError(String),
#[error("Error while Starting Operator: {0}")]
OperatorStartError(String),
#[error(
"Operator is not registered. Register using the operator-cli before starting operator."
)]
Expand Down Expand Up @@ -146,15 +150,6 @@ impl Config for NodeConfig {
type S = EigenTangleSigner;
}

#[derive(Clone)]
pub struct TangleValidatorContractManager<T: Config> {
pub task_manager_addr: Address,
pub service_manager_addr: Address,
pub eth_client_http: T::PH,
pub eth_client_ws: T::PW,
pub signer: T::S,
}

#[derive(Debug, Clone)]
pub struct SetupConfig<T: Config> {
pub registry_coordinator_addr: Address,
Expand Down Expand Up @@ -229,30 +224,52 @@ impl<T: Config> Operator<T> {
Address::from_str(&config.tangle_validator_service_manager_address)
.map_err(|err| OperatorError::ServiceManagerAddressError(err.to_string()))?;

// let tangle_validator_contract_manager = TangleValidatorContractManager::build(
// setup_config.registry_coordinator_addr,
// setup_config.operator_state_retriever_addr,
// eth_client_http.clone(),
// eth_client_ws.clone(),
// signer.clone(),
// )
// .await?;

// if config.register_operator_on_startup {
// operator.register_operator_on_startup(
// operator_ecdsa_private_key,
// config.token_strategy_addr.parse()?,
// );
// }

let _register_result = avs_registry_contract_manager
log::info!("Building Eigenlayer Contract Manager...");
let eigenlayer_contract_manager: ElChainContractManager<T> = ElChainContractManager::build(
setup_config.delegate_manager_addr,
setup_config.avs_directory_addr,
eth_client_http.clone(),
eth_client_ws.clone(),
signer.clone(),
)
.await
.unwrap();

// Register Operator with EigenLayer
let register_operator = eigen_utils::types::Operator {
address: operator_addr,
earnings_receiver_address: operator_addr,
delegation_approver_address: Address::from([0u8; 20]),
staker_opt_out_window_blocks: 50400u32, // About 7 days in blocks on Ethereum
metadata_url: "https://github.com/webb-tools/eigensdk-rs/blob/donovan/eigen/test-utils/metadata.json".to_string(),
};
let eigenlayer_register_result = eigenlayer_contract_manager
.register_as_operator(register_operator)
.await
.unwrap()
.status();
log::info!(
"Eigenlayer Registration result: {:?}",
eigenlayer_register_result
);

// Register Operator with AVS
let quorum_nums = Bytes::from([0x00]);
let register_result = avs_registry_contract_manager
.register_operator(
&ecdsa_signing_key,
&bls_keypair,
alloy_primitives::Bytes::from(vec![0]),
"127.0.0.1:8545".to_string(),
quorum_nums,
config.eth_rpc_url.clone(),
)
.await;
log::info!("AVS Registration result: {:?}", register_result);

let answer = avs_registry_contract_manager
.is_operator_registered(operator_addr)
.await
.unwrap();
log::info!("Is operator registered: {:?}", answer);

let operator = Operator {
config: config.clone(),
Expand All @@ -274,25 +291,29 @@ impl<T: Config> Operator<T> {
Ok(operator)
}

pub async fn start(&self) -> Result<(), OperatorError> {
log::info!("Starting operator.");
pub async fn is_registered(&self) -> Result<bool, OperatorError> {
let operator_is_registered = self
.avs_registry_contract_manager
.is_operator_registered(self.operator_addr)
.await?;
log::info!("Operator registration status: {:?}", operator_is_registered);
Ok(operator_is_registered)
}

pub async fn start(&self) -> Result<(), OperatorError> {
log::info!("Starting operator.");
self.is_registered().await?;

if !operator_is_registered {
return Err(OperatorError::OperatorNotRegistered);
}
if self.config.enable_node_api {
if let Err(e) = self.node_api.start().await {
return Err(OperatorError::NodeApiError(e.to_string()));
}
}

log::info!("Starting Tangle Validator...");
gadget_executor::run_tangle_validator().await.unwrap();
gadget_executor::run_tangle_validator()
.await
.map_err(|e| OperatorError::OperatorStartError(e.to_string()))?;

Ok(())
}
Expand Down
3 changes: 2 additions & 1 deletion test-utils/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,5 @@ url.workspace = true
#ark-ff.workspace = true
ark-bn254.workspace = true
sha3 = "0.10.8"
nix = "0.28.0"
nix = "0.28.0"
lazy_static = "1.5.0"
56 changes: 0 additions & 56 deletions test-utils/build.rs

This file was deleted.

2 changes: 1 addition & 1 deletion test-utils/src/anvil/anvil_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ mod tests {

#[test]
fn assert_chain_id_without_rpc() {
let anvil = Anvil::new().spawn();
let anvil = Anvil::new().chain_id(31337u64).spawn();
assert_eq!(anvil.chain_id(), 31337);
}
}
Loading

0 comments on commit af5047e

Please sign in to comment.