code: func (r *Request) Verify() (err error) {
  	if len(r.data) == 0 {
  		return NewError(ErrInvalidValue, "Update does not contain data")
  	}
  	if r.Signature == nil {
  		return NewError(ErrInvalidSignature, "Missing signature field")
  	}
  
  	digest, err := r.GetDigest()
  	if err != nil {
  		return err
  	}
  
  	// get the address of the signer (which also checks that it's a valid signature)
  	r.Feed.User, err = getUserAddr(digest, *r.Signature)
  	if err != nil {
  		return err
  	}
  
  	// check that the lookup information contained in the chunk matches the updateAddr (chunk search key)
  	// that was used to retrieve this chunk
  	// if this validation fails, someone forged a chunk.
  	if !bytes.Equal(r.idAddr, r.Addr()) {
  		return NewError(ErrInvalidSignature, "Signature address does not match with update user address")
  	}
  
  	return nil
  }
docs: // Verify checks that signatures are valid