Ist es möglich, den Token-Vertrag (T) und den CrowdSale-Vertrag (S) separat bereitzustellen und dennoch auf die modifikatorgeschützten Methoden von (T) von (S) zuzugreifen?
Code von (T)
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;
}
Code von (S)
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);
}
}
Aus irgendeinem Grund erhalte ich die folgende Fehlermeldung, wenn ich versuche, Ether an (B) zu senden
BEARBEITEN: Ich habe auch die Methode ausprobiert, eine abstrakte Schnittstelle zu haben, aber das schien auch nicht viel Glück zu haben (Ref: Stack exchange Post )
Abstrakte Schnittstelle
contract TokenAbstractInterface {
function mint(address _to, uint256 _amount) returns (bool);
function finishMinting() returns (bool);
}
Modifizierter Code von (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);
}
}
Ohne den vollständigen Code ist es schwer sicher zu sein. Aber die Funktion mint
in Token als onlyOwner
Modifikator.
function mint(address _to, uint256 _amount) onlyOwner canMint returns (bool)
Dies impliziert normalerweise, dass nur der Besitzer des Tokens mint
die Funktion aufrufen kann, wenn Sie möchten.
Wenn Sie Token von SellToken prägen möchten, müssen Sie SellToken als Eigentümer des Token-Vertrags festlegen.
Sam