logo
banner-background

安全可靠的 智能合約

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

safe

82%/100%

低風險

即刻創建專屬智能合約

blockchain