Solidity

tokenReward.transferFrom 不起作用?

  • June 4, 2018

我一直在努力解決如何做到這一點,並希望這個社區可以提供幫助。

我知道應該添加它或類似的東西,所以投資人地址的代幣餘額可以在投資後更改。

在此處輸入圖像描述

我嘗試buy()通過添加以下內容以幾種方式進行修改:

require(tokenReward.transfer(msg.sender, numTokens));
require(tokenReward.transferFrom(ASSET_MANAGER_WALLET, msg.sender, numTokens));

require(tokenReward.transferFrom(tokenReward.owner(), msg.sender, numTokens));

if (tokenReward.transferFrom(tokenReward.owner(), msg.sender, numTokens))

tokenReward.transferFrom(tokenReward.owner(), msg.sender, amount.mul(rate));

if (tokenReward.transferFrom(tokenReward.owner(), msg.sender, amount.mul(RATE))) {
      revert();
    }

if (tokenReward.transferFrom(tokenReward.owner(), msg.sender,  numTokens)) {
      revert();
    }

沒有成功。

這非常重要!

沒有這行程式碼,

要求(tokenReward.transferFrom(tokenReward.owner(),msg.sender,numTokens));

我可以發送 eth 和 balanceOf 和 amountRised 計算正確,但投資者余額不正確。

添加這行程式碼後, require(tokenReward.transferFrom(tokenReward.owner(), msg.sender, numTokens)); 我什麼都做不了。將 eth 發送到眾籌時,我從 Myetherwallet 得到這個, 在此處輸入圖像描述

這裡有沒有人可以幫助解決這個問題。謝謝你,羅伯特

代幣合約

https://ropsten.etherscan.io/address/0x2aa448505f3ba5359e2537113e0fe1293aea9ecb#code

眾售合約

https://ropsten.etherscan.io/address/0xf70142870fe11e39af3539005e5f02b31e60fb4c#code

問題是您使用外部擁有的帳戶作為tokenReward.

在您的代幣銷售的etherscan 頁面中,tokenReward地址是0x79b67dff9fb21d2550937d879ec2eacb2f377da0一個普通的非合約賬戶。

由於您只能tokenReward在建構子中修改地址,因此剩下的唯一選擇是重新部署您的銷售契約。

引用自:https://ethereum.stackexchange.com/questions/50177