SIWWeb3 Message Spec
Here we learn what are the components of SIWWeb3 Message
The specification for Sign In With Web3 is based on https://eips.ethereum.org/EIPS/eip-4361 with the intention to make it compatible with https://github.com/ChainAgnostic/CAIPs/blob/master/CAIPs/caip-74.md
The message created follows the following structure :-
CACAO
Represents a chain-agnostic Object Capability (OCAP), created using EIP-4361 (or similar for other blockchains), as an IPLD object.
header: Header;
payload: Payload;
signature: Signature;
Payload
  /** RFC 4501 dns authority that is requesting the signing. */
  domain: string;
  /** Web3 address performing the signing */
  address: string;
  /** Human-readable ASCII assertion that the user will sign, and it must not contain newline characters. */
  statement?: string;
  /** RFC 3986 URI referring to the resource that is the subject of the signing
   *  (as in the __subject__ of a claim). */
  uri: string;
  /** Current version of the message. */
  version: string;
  /** Chain ID to which the session is bound, and the network where
   * Contract Accounts must be resolved. */
  chainId?: number;
  /** Randomized token used to prevent replay attacks, at least 8 alphanumeric
   * characters. */
  nonce: string;
  /** ISO 8601 datetime string of the current time. */
  issuedAt: string;
  /** ISO 8601 datetime string that, if present, indicates when the signed
   * authentication message is no longer valid. */
  expirationTime?: string;
  /** ISO 8601 datetime string that, if present, indicates when the signed
   * authentication message will become valid. */
  notBefore?: string;
  /** System-specific identifier that may be used to uniquely refer to the
   * sign-in request. */
  requestId?: string;
  /** List of information or references to information the user wishes to have
   * resolved as part of authentication by the relying party. They are
   * expressed as RFC 3986 URIs separated by `\n- `. */
  resources?: Array<string>;
Signature
t: string; // signature scheme
m?: SignatureMeta; // signature related metadata (optional)
s: string; // signature
Header
/** specifies format of the payload. */
t: string