Ich habe einige Kindergeldbörsen und eine Elterngeldbörse. Wann immer diese Kindergeldbörsen eingehende ERC20-Token oder ETH erhalten. Ich möchte sie automatisch an die übergeordnete Brieftasche senden.
Ich weiß, dass ich unten tun kann, um das gesamte Eth-Guthaben zu senden.
beneficiary.transfer(this.balance);
Wie kann ich es für erc20-Token tun?
Danke im Voraus.
Sie möchten Ihr Guthaben effektiv „weiterleiten“ . Eine Möglichkeit, dies zu tun, besteht darin, einen Vertrag zu verwenden, der dem hier hervorgehobenen ähnelt .
pragma solidity ^0.4.18;
/**
* Contract that will forward any incoming Ether to its creator
*/
contract Forwarder {
// Address to which any funds sent to this contract will be forwarded
address public destinationAddress;
/**
* Create the contract, and set the destination address to that of the creator
*/
function Forwarder() public {
destinationAddress = msg.sender;
}
/**
* Default function; Gets called when Ether is deposited, and forwards it to the destination address
*/
function() payable public {
destinationAddress.transfer(msg.value);
}
/**
* It is possible that funds were sent to this address before the contract was deployed.
* We can flush those funds to the destination address.
*/
function flush() public {
destinationAddress.transfer(this.balance);
}
}
Es ist nicht wirklich möglich, dies mit dem aktuellen Token-Standard ERC20 automatisch zu tun – und es wird als Versagen und Inkonsistenz dieses frühen Standards angesehen.
Aus diesem Grund werden neue „fortgeschrittene“ Token-Standards wie ERC223 , ERC777 und ERC827 entwickelt, um die Situation zu bewältigen, in der die Übertragung von Token auf einen Vertrag eine Aktion auslösen kann.
Stimme @SteveJackson zu. Dies ist eine Einschränkung von ERC20.
Wenn diese untergeordneten Verträge Verträge sindCanReclaimToken
, können Sie die Lösung implementieren . https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/CanReclaimToken.sol
Dadurch werden die Verträge so eingerichtet, dass beliebige Token, die in den Besitz des Vertrags gelangen, wiederhergestellt werden können. Der Owner
Passt die Adresse des ERC20 ein, um den Saldo unerwarteter Token wiederherzustellen.
In der Praxis können Sie erwägen, einen Software-Client zu erstellen, der eine Liste bekannter ERC20-Verträge verwaltet, indem er eine Quelle beobachtet und dann diese Token-Verträge beobachtet, um zu sehen, ob Transaktionen für einen der untergeordneten Verträge eintreffen.
Es wäre dann eine Frage des Aufrufs von reclaimToken()
as Owner
.
Sicherlich müssen einige Implementierungsdetails ausgearbeitet werden, aber es wäre ein praktikabler Ansatz, wenn dies ein wichtiges Thema wäre.
Ich hoffe es hilft.
Sie müssen die folgenden Schritte ausführen. Betrachten Sie dies als abstrakte Schritte, Sie müssen es weiter implementieren.
transfer
darin enthaltenen Methode.token.transfer(beneficiary,tokenBalance
Vignesh Karthikeyan
Stürmer
SOS