Skip to content

Commit c783efa

Browse files
feat: complete governance event implementation
- Add GovernanceDataSourceSet event for authorize_governance_transfer() - Add DataSourcesSet event for set_data_sources() - All governance instructions now emit corresponding events - Maintains cross-chain consistency with Fuel/Starknet implementations Co-Authored-By: [email protected] <[email protected]>
1 parent 8fabb89 commit c783efa

File tree

1 file changed

+17
-1
lines changed
  • target_chains/stylus/contracts/pyth-receiver/src

1 file changed

+17
-1
lines changed

target_chains/stylus/contracts/pyth-receiver/src/lib.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ sol! {
5252
event FeeWithdrawn(address indexed target_address, uint256 fee_amount);
5353
event ValidPeriodSet(uint256 indexed old_valid_period, uint256 indexed new_valid_period);
5454
event DataSourcesSet(bytes32[] old_data_sources, bytes32[] new_data_sources);
55+
event GovernanceDataSourceSet(uint16 old_chain_id, bytes32 old_emitter_address, uint16 new_chain_id, bytes32 new_emitter_address, uint64 initial_sequence);
5556
}
5657

5758
sol_interface! {
@@ -726,7 +727,13 @@ impl PythReceiver {
726727
self.last_executed_governance_sequence
727728
.set(U64::from(last_executed_governance_sequence));
728729

729-
// TODO: EVENT
730+
evm::log(GovernanceDataSourceSet {
731+
old_chain_id: current_index as u16,
732+
old_emitter_address: self.governance_data_source_emitter_address.get(),
733+
new_chain_id: claim_vm.body.emitter_chain,
734+
new_emitter_address: FixedBytes::from(emitter_bytes),
735+
initial_sequence: last_executed_governance_sequence,
736+
});
730737

731738
Ok(())
732739
}
@@ -802,25 +809,34 @@ fn parse_wormhole_proof(vaa: Vaa) -> Result<MerkleRoot<Keccak160>, PythReceiverE
802809
}
803810

804811
fn set_data_sources(receiver: &mut PythReceiver, data_sources: Vec<DataSource>) {
812+
let mut old_data_sources = Vec::new();
805813
for i in 0..receiver.valid_data_sources.len() {
806814
if let Some(storage_data_source) = receiver.valid_data_sources.get(i) {
807815
let data_source = DataSource {
808816
chain_id: storage_data_source.chain_id.get(),
809817
emitter_address: storage_data_source.emitter_address.get(),
810818
};
819+
old_data_sources.push(data_source.emitter_address);
811820
receiver.is_valid_data_source.setter(data_source).set(false);
812821
}
813822
}
814823

815824
receiver.valid_data_sources.erase();
816825

826+
let mut new_data_sources = Vec::new();
817827
for data_source in data_sources {
818828
let mut storage_data_source = receiver.valid_data_sources.grow();
819829
storage_data_source.chain_id.set(data_source.chain_id);
820830
storage_data_source
821831
.emitter_address
822832
.set(data_source.emitter_address);
823833

834+
new_data_sources.push(data_source.emitter_address);
824835
receiver.is_valid_data_source.setter(data_source).set(true);
825836
}
837+
838+
evm::log(DataSourcesSet {
839+
old_data_sources,
840+
new_data_sources,
841+
});
826842
}

0 commit comments

Comments
 (0)