Ether automatisch von einem Kontrakt zum anderen senden

Ich möchte Ether automatisch vom untergeordneten Vertrag zum übergeordneten Vertrag übertragen, wenn jemand Ether an das Kind sendet.

In der Fallback-Funktion habe ich versucht, die Funktion auszuführen, und sie gibt einen Fehler aus: VM-Fehler: Zurücksetzen. revert Die Transaktion wurde in den Ausgangszustand zurückgesetzt. Hinweis: Der Konstruktor sollte zahlbar sein, wenn Sie einen Wert senden. Debuggen Sie die Transaktion, um weitere Informationen zu erhalten.

Bitte sagen Sie mir, was ich falsch mache, ich habe versucht, es zu betreiben, indem ich auch mehr Gas zugeteilt habe, kein Glück.

Hier ist der Code.

pragma solidity ^0.4.18;

contract ParentCompany{
    address public parentAddress;

    function ParentCompany() public{
        parentAddress = msg.sender;
    }
    function getB() public view returns(uint){
        return this.balance;
    }

    function() payable {
    }
}

// Subsidiary will automatically transfer received ether to Parent.
contract Subsidiary{

    address public subsidiaryAddress;
    address parentCompany;
    function Subsidiary(address _parentCompany) public payable{
        subsidiaryAddress = msg.sender;
        parentCompany = _parentCompany;
    }

    function sendToParent() public {
        parentCompany.transfer(this.balance);
    }
    function() payable{

        sendToParent();  
    }
}

// when Fallback function is empty it works fine.

// client will send money to Subsidiary Company
contract Client{
    address clientAddress;

    function Client() public payable{
        clientAddress = msg.sender;
    }
    function payment(address _subCompany, uint _amount) public{
        uint amount = _amount *(10**18);
        _subCompany.transfer(amount);
    }

}

Antworten (1)

transferleitet nur sehr wenig Gas weiter (2300). Für eine zweite Überweisung reicht das nicht.

Ich glaube, dass die Verwendung callvon in Clientals Ersatz für funktionieren sollte transfer:

require(_subCompany.call.value(amount)());
Bitte verwenden Sie keine Kommentare, um neue Fragen zu stellen.