安全可靠的 智能合約
BlockATM 智能合約公開透明,並且通過了合約審計平台 Cyberscope 的安全驗證
保證您的資產100%安全
合約代碼
1/*
2 * 函數:deposit
3 * 功能:用戶將代幣支付到收款合約中,並記錄交易。
4 * @notice 函數會記錄充值次數,用來計算手續費總額
5 * @notice 函數會觸發 Deposit 事件,記錄詳情。
6 */
7function deposit(
8 address tokenAddress,
9 uint256 amount,
10 string calldata orderNo
11)
12 public
13 checkTokenAddress(tokenAddress)
14 returns (bool)
15{
16 // 必須的參數和狀態檢查
17 ...
18
19 // 調用ERC20代幣轉帳
20 uint256 finalAmount = super.transferCommon(tokenAddress, address(this), amount);
21
22 // 更新該代幣地址的充值次數,用於計算手續費
23 transferMap[tokenAddress] += 1;
24
25 // 觸發 Deposit 事件,記錄充值詳情
26 emit Deposit(msg.sender, address(this), tokenAddress, finalAmount, orderNo);
27
28 return true;
29}
30
31
32/**
33 * 函數:withdraw
34 * 功能:商戶批量提取合約中資產
35 * 限定:onlyFinance 該函數僅允許財務角色調用,確保只有授權人員可以執行提現操作。
36 * @param recipientAddress 提幣地址必須為商戶提幣固定地址,無法更改,防止資金被錯誤發送到其他地址。
37 * @param withdrawRequests 提現請求陣列,支援多種代幣批量同時提取。
38 * @notice 每次提現會計算手續費,並將手續費發送到指定的手續費地址。
39 * @notice 觸發 Withdraw 事件,記錄提現詳情,便於稽核和追蹤。
40 */
41function withdraw(
42 bool isSafeTransfer,
43 Withdraw[] calldata withdrawRequests,
44 address recipientAddress
45)
46 public
47 onlyFinance
48 returns (bool)
49{
50 // 限定提幣地址只能為設定的固定地址
51 require(recipientAddress == FIXED_WITHDRAW_ADDRESS, "提幣地址必須為固定地址,無法更改");
52
53 // 其他提幣參數安全檢查
54 ...
55
56 // 遍歷循環處理提幣請求
57 for (uint256 i = 0; i < requestCount;) {
58
59 // 提幣金額和手續費計算
60 ...
61 // 執行提幣轉帳
62 super.withdrawCommon(isSafeTransfer, request.tokenAddress, recipientAddress, userAmount);
63
64 // 執行手續費轉帳
65 super.withdrawCommon(isSafeTransfer, request.tokenAddress, feeCollector, fee);
66 }
67
68 // 觸發提現事件,用於BlockATM事件監聽
69 emit Withdraw(msg.sender, recipientAddress, withdrawRequests, feeAmounts, feeCollector);
70
71 // 返回 true 表示提現成功
72 return true;
73}
74
75
76/**
77 * 函數:constructor
78 * 功能:商戶在部署收款合約時,設置提現地址、財務人員地址、管理員等
79 * @param newWithdrawList 提現地址列表,在合約部署時寫入後不可修改
80 * @param newFinanceList 財務人員地址列表,在合約部署時寫入後不可修改
81 * @notice 該構造函數用於初始化合約的關鍵參數和權限設定。
82 * @notice 提現地址列表和財務地址列表不可為空,確保合約初始化時具備必要的權限配置。
83 * @notice 手續費網關地址用於處理與費用相關的邏輯,確保系統收益和費用扣除的透明性。
84 */
85constructor(
86 bool safe,
87 uint256 id,
88 address[] memory newWithdrawList,
89 address[] memory newFinanceList,
90 address newFeeGateway
91) {
92 // 參數安全性檢查
93 ...
94
95 // 設置提幣地址
96 processList(newWithdrawList, withdrawMap);
97 withdrawList = newWithdrawList;
98
99 // 設置財務地址
100 processList(newFinanceList, financeMap);
101 financeList = newFinanceList;
102
103 // 其他參數設置
104 ...
105
106 // 設置合約owner
107 owner = msg.sender;
108}
109
合約審計
智能合約通過審計平台 Cyberscope 驗證,綜合評分:8.2/10 安全評級:低風險
數據來自 Cyberscope
82%/100%
低風險
真實鏈上合約(僅展示部分)
合約地址
網絡
版本
部署時間