{domain} wants you to sign in with your Ethereum account:{address}{statement}URI: {uri}Version: {version}Chain ID: {chainId}Nonce: {nonce}Issued At: {issuedAt}Expiration Time: {expirationTime}Not Before: {notBefore}Request ID: {requestId}Resources:- {resource1}- {resource2}
Required Lines:
Header: {domain} wants you to sign in with your Ethereum account:
Address: 0x{40 hex chars}
Empty line
URI: {uri}
Version: {version}
Chain ID: {chainId}
Nonce: {nonce}
Issued At: {issuedAt}
Optional:
Statement (between address and URI, surrounded by empty lines)
const text = `example.com wants you to sign in with your Ethereum account:0x742d35Cc6634C0532925a3b844Bc9e7595f251e3Sign in to Example AppURI: https://example.com/loginVersion: 1Chain ID: 1Nonce: abc123def456Issued At: 2021-09-30T16:25:24.000ZExpiration Time: 2021-10-01T16:25:24.000ZResources:- https://example.com/resource1- https://example.com/resource2`;const message = Siwe.parse(text);// {// domain: "example.com",// address: Uint8Array(20) [...],// statement: "Sign in to Example App",// uri: "https://example.com/login",// version: "1",// chainId: 1,// nonce: "abc123def456",// issuedAt: "2021-09-30T16:25:24.000Z",// expirationTime: "2021-10-01T16:25:24.000Z",// resources: ["https://example.com/resource1", "https://example.com/resource2"]// }
const message = Siwe.create({ domain: "example.com", address: Address("0x742d35Cc6634C0532925a3b844Bc9e7595f251e3"), uri: "https://example.com", chainId: 1, statement: "Sign in to access your account", nonce: "abc123", issuedAt: "2021-09-30T16:25:24.000Z",});const text = Siwe.format(message);console.log(text);// example.com wants you to sign in with your Ethereum account:// 0x742d35cc6634c0532925a3b844bc9e7595f251e3//// Sign in to access your account//// URI: https://example.com// Version: 1// Chain ID: 1// Nonce: abc123// Issued At: 2021-09-30T16:25:24.000Z