Доступ к методам Deployed Token (содержащим модификаторы) из отдельного контракта Crowdsale

Можно ли развернуть контракт Token (T) и контракт CrowdSale (S) отдельно и по-прежнему иметь доступ к защищенным методам модификатора (T) из (S).

Код (Т)

 contract Token {
    function mint(address _to, uint256 _amount) onlyOwner canMint returns (bool) {
     totalSupply = totalSupply.add(_amount);
     balances[_to] = balances[_to].add(_amount);
     Mint(_to, _amount);
     return true;
 }

Код (С)

contract SellToken {
  TokenInstance instance;
  function SellToken(address _address) {
    instance = TokenInstance(_address);
  }

  function () payable { 
    uint256 weiAmount = msg.value;

    // calculate token amount to be created
    uint256 tokens = weiAmount.mul(rate);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    instance.mint(beneficiary, tokens);
  }

}

По какой-то причине, когда я пытаюсь отправить эфир на (B), я получаю следующую ошибку

Транзакция не может быть обработана

РЕДАКТИРОВАТЬ: я также попробовал метод использования абстрактного интерфейса, но, похоже, ему тоже не повезло (ссылка: Сообщение об обмене стеками )

Абстрактный интерфейс

contract TokenAbstractInterface {
    function mint(address _to, uint256 _amount) returns (bool);
    function finishMinting() returns (bool);
}

Модифицированный код (S)

contract SellToken {
  TokenAbstractInterface instance;
  function SellToken(address _address) {
    instance = TokenAbstractInterface(_address);
  }

  function () payable { 
    uint256 weiAmount = msg.value;

    // calculate token amount to be created
    uint256 tokens = weiAmount.mul(rate);

    // update state
    weiRaised = weiRaised.add(weiAmount);

    instance.mint(beneficiary, tokens);
  }

}

Ответы (1)

Без полного кода трудно быть уверенным. Но функция mintв Token как onlyOwnerмодификатор.

function mint(address _to, uint256 _amount) onlyOwner canMint returns (bool)

Обычно это означает, что только владелец токена может вызывать mintфункцию, если хотите.

Если вы хотите создать токен из SellToken, вы должны установить SellToken в качестве владельца контракта Token.

Да, ты был прав в этом. Мне пришлось передать права собственности на токен смарт-контракту. Мне также пришлось добавить метод повторной передачи права собственности на токен со смарт-контракта на любую другую учетную запись, чтобы не быть заблокированным после завершения краудсейла.