Solidity
最少的投資不起作用
uint256 public max_contribution = 50 ether; uint256 public min_contribution = 0.1 ether; function transfer(address to, uint tokens) public payable returns (bool success) { require(msg.value >= min_contribution); require(msg.value <= max_contribution); balances[msg.sender] = safeSub(balances[msg.sender], tokens); balances[to] = safeAdd(balances[to], tokens); emit Transfer(msg.sender, to, tokens); return true; }
使用它來設置最小的 ETH 投資,發送 0.1> 數量的 ETH 時仍會收到代幣。在測試網上進行測試。有任何想法嗎?合約:0xb1a89c746ecec28bfdf7f06f44b603bf9c035be8 和驗證碼。
transfer
正如@mafrasi2 指出的那樣,由於您發布了備份函式的程式碼而不是程式碼,所以造成了混亂。現在,回退函式確定代幣的數量並更新余額。在這裡你可以限制乙太的數量,如下所示:
function () public payable { require(now >= startDate && now <= endDate); require(msg.value >= min_contribution); require(msg.value <= max_contribution); uint tokens; if (now <= bonusEnds) { tokens = msg.value * 12000; } else { tokens = msg.value * 10000; } balances[msg.sender] = safeAdd(balances[msg.sender], tokens); _totalSupply = safeAdd(_totalSupply, tokens); emit Transfer(address(0), msg.sender, tokens); owner.transfer(msg.value); }
但這還不是全部,您必須取消傳輸功能中的限制,因為在目前狀態下,您的代幣使用者將永遠無法傳輸它,除非他們發送乙太幣,這很奇怪。所以轉移應該是這樣的:
function transfer(address to, uint tokens) public returns (bool success) { balances[msg.sender] = safeSub(balances[msg.sender], tokens); balances[to] = safeAdd(balances[to], tokens); emit Transfer(msg.sender, to, tokens); return true; }
希望這可以幫助。