code: func (msg *ReceivedMessage) SigToPubKey() *ecdsa.PublicKey {
  	defer func() { recover() }() // in case of invalid signature
  
  	pub, err := crypto.SigToPub(msg.hash(), msg.Signature)
  	if err != nil {
  		log.Error("failed to recover public key from signature", "err", err)
  		return nil
  	}
  	return pub
  }
docs: // SigToPubKey returns the public key associated to the message's
  // signature.