Was ist das Funktionsereignis? [Duplikat]

Können einige bitte erklären, was ein Ereignis in Solidium ist ... was wir mit einem Ereignis in unserem Vertrag tun können ... es wäre nett, wenn Sie es freundlicherweise mit etwas Code erklären würden ... Sie können den folgenden Code verwenden, um das Hinzufügen eines zu erklären oder zwei Veranstaltungen...

contract CarRentalServiceCustomer is GeneralAccount{
    string public customerName;
    string public postalAddress;
    string public phoneNumber;
    string public emailAddress;

    mapping(address=>CarRentService) public rentCar;

    struct CarRentService{ 
        bool active;
        uint lastUpdate;
        uint registrationFee;   // e.g. To register DriveNow or Car2GO, you have to pay approx 25 Euro
        uint256 rent;              // youtube video suggest it to uint256, then have to provide 18 digit number
    }

    function CarRentalServiceCustomer(string _name,string _postalAddress,
                                    string _phoneNumber,string _emailAddress) payable {
        customerName  = _name;
        postalAddress = _postalAddress;
        phoneNumber   = _phoneNumber;
        emailAddress  = _emailAddress;
    }

    function registerToCarRentalServiceProvider(address _providerAddress) onlyOwner {

        rentCar[_providerAddress] = CarRentService({
                                    active: true, 
                                    lastUpdate: now,
                                    registrationFee: 0,
                                    rent: 0
                                    });
    }

    function setRegistrationFee(uint256 _registrationFee) {
        if(rentCar[msg.sender].active){
            rentCar[msg.sender].lastUpdate      = now;
            rentCar[msg.sender].registrationFee = _registrationFee;
        }
        else{
            throw;
        }
    }

    function setCarRent(uint256 _rent) {
        if(rentCar[msg.sender].active){
            rentCar[msg.sender].lastUpdate = now;
            rentCar[msg.sender].rent       = _rent;
        }
        else{
            throw;
        }
    }

    function payRegistrationFeeToCarRentalServiceProvider(address _providerAddress) returns (bool){
        if(_providerAddress.send(rentCar[_providerAddress].registrationFee))
        {
            rentCar[_providerAddress].registrationFee = 0;
            return true;
        }
        else{
            return false;
        }
    }

    function payRentToCarRentalServiceProvider(address _providerAddress) returns (bool){
        if(_providerAddress.send(rentCar[_providerAddress].rent))
        {
            rentCar[_providerAddress].rent = 0;
            return true;
        }
        else{
            return false;
        }
    }

    function unsubscribeFromCarRentalService(address _providerAddress){
        if(rentCar[_providerAddress].active = false && rentCar[_providerAddress].rent == 0 
        && rentCar[_providerAddress].registrationFee == 0 ){
            rentCar[_providerAddress].active = false;
        } else {
            throw;
        }
    }

    function payTestFunds() payable{
        //This is a do nothing function
    }
}

Antworten (1)

Schauen Sie hier: http://solidity.readthedocs.io/en/develop/contracts.html#events

Grundsätzlich erstellen Ereignisse Protokolleinträge in der Blockchain. Ich finde sie besonders nützlich für Funktionen, die den Zustand der Blockchain (Transaktionen) ändern. Funktionen, die den Zustand der Blockchain ändern, können keine Rückgabewerte haben, da ihre Ausführung nicht sofort abgeschlossen ist, sondern erst beendet ist, wenn der Block, der die Transaktion enthält, abgebaut wurde.

Zu Ihrem Beispiel: Nehmen wir an, Sie möchten ein Auto mieten. Wie teuer das ist, kann von bestimmten Parametern und Bedingungen abhängen. Um dem Benutzer also mitzuteilen, wie viel er tatsächlich bezahlt hat, könnten Sie ein Ereignis auslösen, das diese Informationen enthält. Der Benutzer kann später (nachdem die Transaktion abgebaut wurde) auf die Daten des Ereignisses zugreifen, indem er eine Transaktionsquittung für diese Transaktion abruft.

Hallo Max. Ich denke, es ist eine gute Antwort und ich sehe, worauf Sie mit dem Bergbau hinauswollen. Vielleicht gibt es eine andere Möglichkeit zu sagen: "Funktionen, die den Zustand der Blockchain ändern, können keine Rückgabewerte haben." Auf diese Weise erscheint es mir irreführend.