Ich habe einige Probleme, mich mit der Entwicklung von ERC20-Wasserhähnen zu befassen. Wie genau wird das gemacht? Ich habe ein Token erstellt ( https://ropsten.etherscan.io/token/0x90de67a867b18535ad558fec0c418921340ffc91?a=0x18c59adbf99be137b3eeaffd84b083fd623a4c36 ), aber ich bin mir nicht sicher, wie ich Token mit einem Wasserhahn verteilen würde. Dies dient nur zu Testzwecken, aber ich möchte in der Lage sein, abnehmende Werte dieses Test-Tokens basierend auf dem zuvor ausgegebenen Betrag zu verschenken.
Ich gehe davon aus, dass ich Transfer() verwenden muss, das ich in meiner Funktion getFromFaucet() verwendet habe, aber ich bin äußerst verwirrt darüber, wie ich diese Token überhaupt dazu bringen kann, an eine andere Adresse gesendet zu werden.
function getFromFaucet(address _to) returns (bool success) {
uint256 giveaway_value;
if (previous_giveaway == 0){
giveaway_value = starting_giveaway;
previous_giveaway = starting_giveaway;
}
previous_giveaway = previous_giveaway / 2;
if (balances[msg.sender] >= giveaway_value){
balances[msg.sender] -= giveaway_value;
balances[_to] += giveaway_value;
Transfer(msg.sender, _to, giveaway_value);
return true;
}
else return false;
}
Wie nenne ich das getFromFaucet und übergebe ihm die Adresse? Ich plane, von einer Website aus zu verteilen.
Vielen Dank im Voraus!
Sie schreiben eine komplexe Überweisungsfunktion, der einzige Unterschied besteht darin, dass der Absender den verschenkten Betrag nicht kontrollieren kann.
Wenn Sie einen Token-Faucet erstellen möchten, würde ich den Empfänger dazu bringen, die Transaktion zu senden. Außerdem gibt es eine Cooldown-Periode von zwei Minuten, um möglichen Missbrauch einzuschränken.
uint previous_giveaway;
uint last_giveaway;
function drip() returns (bool success) {
// Only allow to drip every two minutes to limit abuse
if (now - last_giveaway < 2 minutes) {
return false;
}
last_giveaway = now;
// deliver half than last time
uint giveaway_value = previous_giveaway / 2;
if (giveaway_value == 0){
giveaway_value = starting_giveaway;
previous_giveaway = starting_giveaway;
}
// It is a faucet mint new tokens
balances[msg.sender] += giveaway_value;
totalSupply += giveaway_value;
Transfer(0x0, msg.sender, giveaway_value);
return true;
}
Um diesen Vertrag von einer Webapp mit web3 v1.0 aufzurufen, sollte so etwas funktionieren
const token = new eth.Contract(abiToken, addressToken);
await token.methods.drip().send({ from: "address" });
Der Vertrag wird einige Tokens an "Adresse" hinterlegen.
Colin Fausnaught
Colin Fausnaught
Maulik Vora
Colin Fausnaught