@@ -82,8 +82,13 @@ class DiscoveredService:
8282 service_name : Optional [str ] = None
8383 # New fields for full service import
8484 staking_contract_address : Optional [str ] = None
85- service_owner_address : Optional [str ] = None
86- service_owner_safe : Optional [str ] = None # To store the Safe Owner address if it exists
85+ service_owner_eoa_address : Optional [str ] = None
86+ service_owner_multisig_address : Optional [str ] = None
87+
88+ @property
89+ def service_owner_address (self ) -> Optional [str ]:
90+ """Backward compatibility: effective owner address."""
91+ return self .service_owner_multisig_address or self .service_owner_eoa_address
8792
8893 @property
8994 def agent_key (self ) -> Optional [DiscoveredKey ]:
@@ -551,14 +556,14 @@ def _extract_owner_address(self, service: DiscoveredService, operate_folder: Pat
551556
552557 if safe_owner_address :
553558 # CASE: Owner is Safe
554- service .service_owner_address = safe_owner_address # The Safe is the official owner
555- service .service_owner_safe = safe_owner_address
556- # We also need to ensure the EOA is imported. 'check_wallet' usually handles the EOA.
557- # But we need to link them.
559+ service .service_owner_multisig_address = safe_owner_address
560+ service .service_owner_eoa_address = eoa_address # The EOA is the signer/controller
561+
558562 logger .debug (f"Extracted Safe owner address: { safe_owner_address } (Signer: { eoa_address } )" )
559563 elif eoa_address :
560564 # CASE: Owner is EOA
561- service .service_owner_address = eoa_address
565+ service .service_owner_eoa_address = eoa_address
566+ service .service_owner_multisig_address = None
562567 logger .debug (f"Extracted EOA owner address: { eoa_address } " )
563568
564569 except (json .JSONDecodeError , IOError ) as e :
@@ -573,14 +578,14 @@ def _merge_unique_keys(self, service: DiscoveredService, new_keys: List[Discover
573578 existing_addrs .add (key .address .lower ())
574579
575580 def _infer_owner_address (self , service : DiscoveredService ) -> None :
576- """Infer service_owner_address from keys with role='owner' if not already set."""
577- if service .service_owner_address :
581+ """Infer service_owner_eoa_address from keys with role='owner' if not already set."""
582+ if service .service_owner_eoa_address :
578583 return # Already set
579584
580585 for key in service .keys :
581586 if key .role == "owner" and key .address :
582- service .service_owner_address = key .address
583- logger .debug (f"Inferred owner address from key: { key .address } " )
587+ service .service_owner_eoa_address = key .address
588+ logger .debug (f"Inferred owner EOA address from key: { key .address } " )
584589 return
585590
586591 def _parse_keystore_file (
@@ -774,19 +779,19 @@ def _import_discovered_safes(self, service: DiscoveredService, result: ImportRes
774779 result .errors .append (f"Safe { service .safe_address } : { safe_result [1 ]} " )
775780
776781 # 2. Import Owner Safe (if it exists and is different)
777- if service .service_owner_safe and service .service_owner_safe != service .safe_address :
782+ if service .service_owner_multisig_address and service .service_owner_multisig_address != service .safe_address :
778783 # Signer for Owner Safe is the EOA owner key
779784 owner_signers = self ._get_owner_signers (service )
780785
781786 safe_result = self ._import_safe (
782- address = service .service_owner_safe ,
787+ address = service .service_owner_multisig_address ,
783788 signers = owner_signers ,
784789 tag_suffix = "owner_safe" , # e.g. trader_zeta_owner_safe
785790 service_name = service .service_name
786791 )
787792 if safe_result [0 ]:
788- result .imported_safes .append (service .service_owner_safe )
789- logger .info (f"Imported Owner Safe { service .service_owner_safe } " )
793+ result .imported_safes .append (service .service_owner_multisig_address )
794+ logger .info (f"Imported Owner Safe { service .service_owner_multisig_address } " )
790795
791796 def _get_agent_signers (self , service : DiscoveredService ) -> List [str ]:
792797 """Get list of signers for the agent safe."""
@@ -971,7 +976,8 @@ def _import_service_config(self, service: DiscoveredService) -> Tuple[bool, str]
971976 service_id = service .service_id ,
972977 agent_ids = [25 ], # Trader agents always use agent ID 25
973978 multisig_address = service .safe_address ,
974- service_owner_address = service .service_owner_address ,
979+ service_owner_eoa_address = service .service_owner_eoa_address ,
980+ service_owner_multisig_address = service .service_owner_multisig_address ,
975981 staking_contract_address = service .staking_contract_address ,
976982 token_address = str (OLAS_TOKEN_ADDRESS_GNOSIS ),
977983 )
0 commit comments