跳到主要内容

安全与信任

用户隐私保护

  • 隐藏address:协议交互基于钱包地址与 UserId 映射,在事件日志中不会暴露钱包地址,而以 UserId 代替,降低链上关联性。
  • SIWE 权限验证:读取重要数据需通过钱包签名 SIWE 令牌,合约并不提供地址参数访问函数。
  • 主网授权模式:主网上线后将全面采用 EIP-712 签名授权交互,减少链上可见行为;

UserId合约

mapping(address => uint256) internal _userIds;
uint256 internal _currentUserId;

constructor(address addrManager_) Modifier(addrManager_) {
_currentUserId = 10000;
}
/**
* @dev Get my user id
* @param token_ SIWE token
*/
function myUserId(bytes memory token_) public view returns (uint256) {

address sender = msg.sender;
if (sender == address(0)) {
sender = ISiweAuth(SIWE_AUTH).getMsgSender(token_);
}
if (_blacklist[sender]) revert Blacklisted();
return _userIds[sender];
}

测试网策略: 测试网保留直接交互以便调试与验证。

数据安全

  • 文件粉碎存储:将文件切片粉碎后,分散存储于 IPFS/Arweave,需要完整的文件才能拼接还原。
  • 端到端加密:文件分散存储信息(CID和password)在本地以对称加密(如 AES-256-GCM)处理。
  • 链上密钥封装:解密密钥在 Sapphire TEE 内加密存储,仅授权用户可解密。
  • 公开元数据:TruthBox 的元数据文件完全公开,但只包含解密公钥和文件粉碎存储信息加密后的数据,便于验证与索引。

机密内容在 Sapphire 上以加密形态存在,配合 SIWE + EIP-712,既保证隐私,又保持可验证与可审计的链上规则。