- 某地址首次提供有效签名时,创建 QFEX 用户。
- 此后同一地址签名会恢复该用户。
- 签署消息不会提交链上交易、不消耗 gas,也不会授权 QFEX 转移资产。
QFEX 目前支持兼容以太坊的钱包认证,尚未启用 Solana 钱包认证。钱包可以连接任意 EVM 链,因为签名是证明地址所有权,而非执行交易。
开始之前
安装 QFEX 网页终端使用的 SIWE 工具:- QFEX Auth URL:
https://verify.qfex.com。 - 可公开的 QFEX Auth 客户端密钥。
- 已加入 QFEX Auth 重定向白名单的登录 URL。
- 如从浏览器直接调用 QFEX REST 服务,需要该来源获得 CORS 许可。
- 启用 CAPTCHA 防护时,需要 Cloudflare Turnstile 令牌。
- EIP-1193 钱包提供者,例如通过 EIP-6963、wagmi、MetaMask 或 Phantom 发现的提供者。
完整 SIWE 流程
以下示例请求钱包地址和链信息,构造 EIP-4361 消息,请求钱包签名,并用已签名消息交换 QFEX 会话:request 方法。完整顺序如下:
- 调用
eth_requestAccounts请求地址。 - 调用
eth_chainId读取当前链。 - 使用地址、链 ID、已登记 URL、当前时间、新 nonce 及完全一致的声明
Sign in to QFEX构造 EIP-4361 消息。 - 调用钱包的
personal_sign。 - 将消息和签名发送至
POST /auth/v1/token?grant_type=web3。 - 恢复现有用户或创建新用户,并获得 QFEX 会话。
选择正确的注入式钱包提供者
只安装一个钱包扩展时,可以使用window.ethereum。若安装了多个钱包,请使用 EIP-6963 或钱包库发现它们,并传入用户选择的提供者。
不要静默选择第一个钱包。签名前,用户应能看到正在授权的地址和域名。
SIWE 消息要求
签署的消息必须包含:- 经过校验和格式化的 EVM 地址;
- 已登记登录页面的真实主机名;
- 完整的已登记登录 URI;
- 版本
1; - 钱包当前的数字链 ID;
- 新生成的字母数字 nonce;
- 当前
Issued At时间戳; - 完全一致的声明
Sign in to QFEX。
认证 HTTP 请求
已签名凭据交换请求如下:使用访问令牌
REST API
将会话访问令牌作为 bearer token 发送:交易 WebSocket
在连接 URL 和认证消息中传递访问令牌:刷新会话
访问令牌会过期。继续调用 QFEX 服务前,用刷新令牌换取新会话:账户行为与限制
- 新钱包地址会创建新的 QFEX 账户,必须完成准入流程后才能交易或转移资金。
- 钱包认证不能绕过地区限制、身份验证、条款接受或 2FA。
- 若用户已设置第二认证因素,钱包登录后仍需完成现有 QFEX MFA 流程。
- 已在 QFEX 登记的地址始终恢复同一用户。
- QFEX 目前不允许先用邮箱、Google 或 Apple 注册的账户附加钱包身份。使用不同地址启动钱包认证,可能创建独立账户。
- 首先通过钱包注册的用户,可在 QFEX 安全设置中添加支持的邮箱或社交登录方式。
- 目前无法解绑或更换钱包身份。