Wie verwendet man Payable, um Ether zu erhalten?

Ich bin neu bei Smart Contracts. Ich möchte einen Vertrag erstellen, der Ether akzeptiert und die entsprechenden Token an die Ether-Adresse des Absenders überträgt (Crowdsale). Nach einigen Tagen Recherche wurde mir dieser Code geschrieben. aber es akzeptiert die Ether nicht (im ropsten testnet). Jedes Mal, wenn ich einen Ether zu diesem Vertrag sende, schlägt das fehl.

Vertrag YourTokenToken {

string public constant name = "YOURCOIN";
string public constant symbol = "YRC";
uint8 public constant decimals = 8;  // 8 decimal places.
uint256 public constant tokenCreationRate = 1500;
uint256 public constant tokenCreationCap = 10000 ether * tokenCreationRate;
uint256 public constant tokenCreationMin = 1000 ether * tokenCreationRate;
address public coinOwner; // Receives ETH and its own YRC endowment.
uint256 totalTokens; // The current total token supply.
mapping (address => uint256) balances;

event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Refund(address indexed _from, uint256 _value);

function YourTokenToken() {
    coinOwner = msg.sender;
}

// Crowdfunding:

function create() payable external {

    if (msg.value == 0) throw;
    if (msg.value > (tokenCreationCap - totalTokens) / tokenCreationRate)
        throw;

    var numTokens = msg.value * tokenCreationRate;
    totalTokens += numTokens;
    // Assign new tokens to the sender
    balances[msg.sender] += numTokens;
    // Log token creation event
    Transfer(0, msg.sender, numTokens);
}

}

Antworten (1)

Wenn Sie über die Vertragsadresse Ether auf Vertrag erhalten möchten, müssen Sie eine anonyme Funktion mit einem kostenpflichtigen Schlüsselwort implementieren.

// Anonymous Function or Fallback Function
function() paybale{
if (msg.value == 0) throw;
if (msg.value > (tokenCreationCap - totalTokens) / tokenCreationRate)
    throw;

var numTokens = msg.value * tokenCreationRate;
totalTokens += numTokens;
// Assign new tokens to the sender
balances[msg.sender] += numTokens;
// Log token creation event
Transfer(0, msg.sender, numTokens);
}

Weitere Informationen zu anonymen Funktionen .