Skip to content

Commit

Permalink
Simplify Operator struct (#126)
Browse files Browse the repository at this point in the history
  • Loading branch information
pablodeymo authored Sep 18, 2024
1 parent e01b594 commit b9f4edf
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 129 deletions.
14 changes: 7 additions & 7 deletions crates/chainio/clients/elcontracts/src/reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -258,13 +258,13 @@ impl ELChainReader {
_0: operator_details,
} = operator_det;

Ok(Operator::new(
operator,
operator_details.earningsReceiver,
operator_details.delegationApprover,
operator_details.stakerOptOutWindowBlocks,
None,
))
Ok(Operator {
address: operator,
earnings_receiver_address: operator_details.earningsReceiver,
delegation_approver_address: operator_details.delegationApprover,
staker_opt_out_window_blocks: operator_details.stakerOptOutWindowBlocks,
metadata_url: None,
})
}
Err(e) => Err(ElContractsError::AlloyContractError(e)),
}
Expand Down
53 changes: 25 additions & 28 deletions crates/chainio/clients/elcontracts/src/writer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,22 +43,19 @@ impl ELChainWriter {
&self,
operator: Operator,
) -> Result<FixedBytes<32>, ElContractsError> {
info!(
"registering operator {:?} to EigenLayer",
operator.has_address()
);
info!("registering operator {:?} to EigenLayer", operator.address);
let op_details = OperatorDetails {
earningsReceiver: operator.has_earnings_receiver_address(),
delegationApprover: operator.has_delegation_approver_address(),
stakerOptOutWindowBlocks: operator.has_staker_opt_out_window_blocks(),
earningsReceiver: operator.earnings_receiver_address,
delegationApprover: operator.delegation_approver_address,
stakerOptOutWindowBlocks: operator.staker_opt_out_window_blocks,
};
let provider = get_signer(self.signer.clone(), &self.provider);

let contract_delegation_manager = DelegationManager::new(self.delegation_manager, provider);

let binding = {
let contract_call = contract_delegation_manager
.registerAsOperator(op_details, operator.has_metadata_url().unwrap_or_default());
.registerAsOperator(op_details, operator.metadata_url.unwrap_or_default());
contract_call.gas(300000)
};

Expand Down Expand Up @@ -87,12 +84,12 @@ impl ELChainWriter {
) -> Result<TxHash, ElContractsError> {
info!(
"updating operator detils of operator {:?} to EigenLayer",
operator.has_address()
operator.address
);
let operator_details = OperatorDetails {
earningsReceiver: operator.has_earnings_receiver_address(),
delegationApprover: operator.has_delegation_approver_address(),
stakerOptOutWindowBlocks: operator.has_staker_opt_out_window_blocks(),
earningsReceiver: operator.earnings_receiver_address,
delegationApprover: operator.delegation_approver_address,
stakerOptOutWindowBlocks: operator.staker_opt_out_window_blocks,
};
let provider = get_signer(self.signer.clone(), &self.provider);

Expand All @@ -106,10 +103,10 @@ impl ELChainWriter {
.await
.map_err(ElContractsError::AlloyContractError)?;

info!(tx_hash = %modify_operator_tx.tx_hash(), operator = %operator.has_address(), "updated operator details tx");
info!(tx_hash = %modify_operator_tx.tx_hash(), operator = %operator.address, "updated operator details tx");

let contract_call_update_metadata_uri = contract_delegation_manager
.updateOperatorMetadataURI(operator.has_metadata_url().unwrap_or_default());
.updateOperatorMetadataURI(operator.metadata_url.unwrap_or_default());

let metadata_tx = contract_call_update_metadata_uri.send().await?;

Expand Down Expand Up @@ -281,13 +278,13 @@ mod tests {
)
.expect("no key");

let operator = Operator::new(
wallet.address(),
wallet.address(),
wallet.address(),
3,
Some("eigensdk-rs".to_string()),
);
let operator = Operator {
address: wallet.address(),
earnings_receiver_address: wallet.address(),
delegation_approver_address: wallet.address(),
staker_opt_out_window_blocks: 3,
metadata_url: Some("eigensdk-rs".to_string()),
};

// First test: register as an operator
let tx_hash = el_chain_writer
Expand All @@ -308,13 +305,13 @@ mod tests {
)
.expect("no key");

let operator_modified = Operator::new(
wallet_modified.address(),
wallet_modified.address(),
wallet_modified.address(),
3,
Some("eigensdk-rs".to_string()),
);
let operator_modified = Operator {
address: wallet_modified.address(),
earnings_receiver_address: wallet_modified.address(),
delegation_approver_address: wallet_modified.address(),
staker_opt_out_window_blocks: 3,
metadata_url: Some("eigensdk-rs".to_string()),
};

// Second test: update operator details
let tx_hash = el_chain_writer
Expand Down
14 changes: 7 additions & 7 deletions crates/services/operatorsinfo/src/operatorsinfo_inmemory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -446,13 +446,13 @@ mod tests {
pvt_key.to_string(),
);

let operator_details = Operator::new(
signer.address(),
signer.address(),
signer.address(),
3,
Some("eigensdk-rs".to_string()),
);
let operator_details = Operator {
address: signer.address(),
earnings_receiver_address: signer.address(),
delegation_approver_address: signer.address(),
staker_opt_out_window_blocks: 3,
metadata_url: Some("eigensdk-rs".to_string()),
};

el_chain_writer
.register_as_operator(operator_details)
Expand Down
68 changes: 5 additions & 63 deletions crates/types/src/operator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,69 +39,11 @@ impl From<BlsKeyPair> for OperatorPubKeys {
}

pub struct Operator {
address: Address,
earnings_receiver_address: Address,
delegation_approver_address: Address,
staker_opt_out_window_blocks: u32,
metadata_url: Option<String>,
}

impl Operator {
pub fn new(
address: Address,
earnings_receiver_address: Address,
delegation_approver_address: Address,
staker_opt_out_window_blocks: u32,
metadata_url: Option<String>,
) -> Self {
Operator {
address,
earnings_receiver_address,
delegation_approver_address,
staker_opt_out_window_blocks,
metadata_url,
}
}

pub fn address(&mut self, address: Address) {
self.address = address;
}

pub fn metadata_url(&mut self, metadata: String) {
self.metadata_url = Some(metadata);
}

pub fn earnings_receiver_address(&mut self, address: Address) {
self.earnings_receiver_address = address;
}

pub fn delegation_approver_address(&mut self, address: Address) {
self.delegation_approver_address = address;
}

pub fn staker_opt_out_window_blocks(&mut self, block: u32) {
self.staker_opt_out_window_blocks = block;
}

pub fn has_address(&self) -> Address {
self.address
}

pub fn has_metadata_url(&self) -> Option<String> {
self.metadata_url.clone()
}

pub fn has_earnings_receiver_address(&self) -> Address {
self.earnings_receiver_address
}

pub fn has_delegation_approver_address(&self) -> Address {
self.delegation_approver_address
}

pub fn has_staker_opt_out_window_blocks(&self) -> u32 {
self.staker_opt_out_window_blocks
}
pub address: Address,
pub earnings_receiver_address: Address,
pub delegation_approver_address: Address,
pub staker_opt_out_window_blocks: u32,
pub metadata_url: Option<String>,
}

pub type Socket = String;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,7 @@ async fn main() -> Result<()> {
"12248929636257230549931416853095037629726205319386239410403476017439825112537".to_string(),
)?;

let digest_hash: FixedBytes<32> = FixedBytes::from([
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02,
]);
let digest_hash: FixedBytes<32> = FixedBytes::from([0x02; 32]);

// Get the current SystemTime
let now = SystemTime::now();
Expand Down Expand Up @@ -85,13 +81,13 @@ async fn main() -> Result<()> {
)
.expect("no key ");

let operator_details = Operator::new(
wallet.address(),
wallet.address(),
wallet.address(),
3,
Some("eigensdk-rs".to_string()),
);
let operator_details = Operator {
address: wallet.address(),
earnings_receiver_address: wallet.address(),
delegation_approver_address: wallet.address(),
staker_opt_out_window_blocks: 3,
metadata_url: Some("eigensdk-rs".to_string()),
};
// Register the address as operator in delegation manager
let _s = el_writer.register_as_operator(operator_details).await;

Expand Down
20 changes: 8 additions & 12 deletions examples/info-operator-service/examples/get_operator_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,13 @@ pub async fn register_operator(pvt_key: &str, bls_key: &str) {
pvt_key.to_string(),
);

let operator_details = Operator::new(
signer.address(),
signer.address(),
signer.address(),
3,
Some("eigensdk-rs".to_string()),
);
let operator_details = Operator {
address: signer.address(),
earnings_receiver_address: signer.address(),
delegation_approver_address: signer.address(),
staker_opt_out_window_blocks: 3,
metadata_url: Some("eigensdk-rs".to_string()),
};

let _ = el_chain_writer
.register_as_operator(operator_details)
Expand All @@ -114,11 +114,7 @@ pub async fn register_operator(pvt_key: &str, bls_key: &str) {
.unwrap();

let bls_key_pair = BlsKeyPair::new(bls_key.to_string()).unwrap();
let salt: FixedBytes<32> = FixedBytes::from([
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
0x02, 0x02,
]);
let salt: FixedBytes<32> = FixedBytes::from([0x02; 32]);
let now = SystemTime::now();
let mut expiry: U256 = U256::from(0);
// Convert SystemTime to a Duration since the UNIX epoch
Expand Down

0 comments on commit b9f4edf

Please sign in to comment.