@@ -1695,13 +1695,18 @@ async fn run_validator() -> Result<()> {
16951695 }
16961696 for msg_value in messages {
16971697 // Parse the outbox message
1698- if let ( Some ( message) , target) = (
1699- msg_value. get ( "message" ) ,
1700- msg_value. get ( "target" ) . and_then ( |t| t. as_str ( ) ) ,
1701- ) {
1702- // Check if this is a DecryptApiKeyRequest - handle locally
1703- if let Ok ( platform_challenge_sdk:: ChallengeP2PMessage :: DecryptApiKeyRequest ( req) ) =
1704- serde_json:: from_value :: < platform_challenge_sdk:: ChallengeP2PMessage > ( message. clone ( ) ) {
1698+ let message = match msg_value. get ( "message" ) {
1699+ Some ( m) => m,
1700+ None => {
1701+ warn ! ( "Outbox message missing 'message' field: {:?}" , msg_value) ;
1702+ continue ;
1703+ }
1704+ } ;
1705+ let target = msg_value. get ( "target" ) . and_then ( |t| t. as_str ( ) ) ;
1706+
1707+ // Check if this is a DecryptApiKeyRequest - handle locally
1708+ if let Ok ( platform_challenge_sdk:: ChallengeP2PMessage :: DecryptApiKeyRequest ( req) ) =
1709+ serde_json:: from_value :: < platform_challenge_sdk:: ChallengeP2PMessage > ( message. clone ( ) ) {
17051710 // Decrypt the API key locally and send response back to container
17061711 // Use public key (hotkey bytes) - the encryption uses SHA256(domain || pubkey || salt)
17071712 let response = match platform_challenge_sdk:: decrypt_api_key (
@@ -1756,43 +1761,39 @@ async fn run_validator() -> Result<()> {
17561761 . unwrap_or_default ( ) ,
17571762 } ;
17581763
1759- let network_msg =
1760- NetworkMessage :: ChallengeMessage ( challenge_msg) ;
1761- if let Ok ( signed) = SignedNetworkMessage :: new (
1762- network_msg,
1763- & keypair_for_outbox,
1764- ) {
1765- if let Some ( ref target_hotkey) = target {
1766- // Targeted send: broadcast but log the intended target
1767- // All validators see the message for consensus, but the
1768- // payload may contain target info for selective processing
1769- debug ! (
1770- "Broadcasting P2P message (target: {})" ,
1771- & target_hotkey[ ..16 . min( target_hotkey. len( ) ) ]
1772- ) ;
1773- if let Err ( e) = net_cmd_tx_for_outbox
1774- . send ( NetworkCommand :: Broadcast ( signed) )
1775- . await
1776- {
1777- debug ! ( "Failed to broadcast targeted message: {}" , e) ;
1764+ let network_msg =
1765+ NetworkMessage :: ChallengeMessage ( challenge_msg) ;
1766+ match SignedNetworkMessage :: new (
1767+ network_msg,
1768+ & keypair_for_outbox,
1769+ ) {
1770+ Ok ( signed) => {
1771+ let result = net_cmd_tx_for_outbox
1772+ . send ( NetworkCommand :: Broadcast ( signed) )
1773+ . await ;
1774+ match result {
1775+ Ok ( _) => {
1776+ info ! (
1777+ "Broadcast P2P message from challenge {} to network{}" ,
1778+ config. name,
1779+ target. map( |t| format!( " (target: {})" , & t[ ..16 . min( t. len( ) ) ] ) ) . unwrap_or_default( )
1780+ ) ;
17781781 }
1779- } else {
1780- // Broadcast to all
1781- if let Err ( e) = net_cmd_tx_for_outbox
1782- . send ( NetworkCommand :: Broadcast ( signed) )
1783- . await
1784- {
1785- debug ! ( "Failed to broadcast outbox message: {}" , e) ;
1782+ Err ( e) => {
1783+ error ! ( "Failed to send broadcast command: {}" , e) ;
17861784 }
17871785 }
17881786 }
1787+ Err ( e) => {
1788+ error ! ( "Failed to sign P2P message: {}" , e) ;
1789+ }
17891790 }
17901791 }
17911792
17921793 let count = messages. len ( ) ;
17931794 if count > 0 {
1794- debug ! (
1795- "Broadcast {} P2P messages from container '{}'" ,
1795+ info ! (
1796+ "Processed {} P2P messages from container '{}'" ,
17961797 count, config. name
17971798 ) ;
17981799 }
0 commit comments