Gibt es eine Plattform zum Hosten von APIs ähnlich wie AWS Lambda, nur dezentralisiert?

Ich suche nach einer Plattform, die es ermöglicht, serverlosen Code für Dapps ohne Cloud-Dienste zu platzieren - damit die App vollständig zentralisiert bleiben kann.

Völlig dezentral meinten Sie?
Ja, Igor, ich habe Erics Antwort eine Klarstellung als Kommentar hinzugefügt.

Antworten (1)

Deine Frage ist nicht ganz klar. Jede DApp ist per Definition dezentralisiert ( Dezentralisierte Anwendung ). web3Es besteht aus einem oder mehreren Verträgen, die auf der Ethereum-Blockchain leben und mit denen über aktivierte Browser wie Mist interagiert werden kann . Das bedeutet, dass sich Ihr Client als Endbenutzer über die web3.jsBibliothek direkt mit Ihrem/Ihren Ethereum-Vertrag(en) verbindet, die wiederum als Schnittstelle für JSON-RPCMethoden fungiert, die mit Ethereum-Knoten interagieren.

Was AWS Lambda betrifft, dient es einem anderen Zweck als Ethereum insgesamt. Wenn Sie in der EVM (Ethereum Virtual Machine) mit einem Vertrag in Ethereum sprechen, ist die einzige Arbeit, um die sich andere Knoten kümmern, die Überprüfung von Änderungen im Vertragsstatus. Das heißt, wenn Sie eine Funktion ausführen, die sie hinzufügt 1+1und zurückgibt, ändern Sie den Status nicht. Somit läuft der Zusatz clientseitig, auf Ihrer Maschine. Wenn Sie diesen Wert jedoch einer vorzeichenlosen 32-Bit-Ganzzahl mit dem Wert 5 zuweisen, ändern Sie den Zustand, der vom Netzwerk überprüft werden muss und daher Gas als finanziellen Anreiz dafür erfordert. Betrachten Sie das folgende Beispiel:

Contract myContract {

uint32 i = 5;

    function CalculateSum(){

        // This calcuation is run by the client.
        // j has local scope because it is in the function,
        // meaning assigning to j does not change the contract state, 
        // and therefore this calculation costs no gas:

        uint32 j = 1 + 1;

        // This calculation is also run by the client, 
        // but because i is scoped to the contract
        // by assigning it the client-calculated value of 2,
        // we require the network to verify the change in state.
        // This costs gas:

        i = 1 + 1;

    }
}

Wenn Sie außerdem eine dezentrale API erstellen möchten und eine API nur Daten offenlegt, können Sie eine bescheidene Datenmenge im Vertragszustand speichern und Funktionen haben, die Benutzer über die web.jsBibliothek und aufrufen können JSON-RPCMethoden. Dann könnten Sie eine Funktion zum Aktualisieren/Einstellen der Daten einbauen, aber das würde ein gewisses Maß an Zentralisierung erfordern, da eine Einzelperson oder eine eingeschränkte Gruppe von Personen die Daten einstellen würde. Sie könnten Orakel verwenden, um Ereignisse in der Blockchain abzuhören und darauf zu reagieren, aber Sie würden immer noch nur Berechnungen auf der Oracle-Hardware außerhalb der Kette ausführen.

Wenn sich schließlich jemand mit Ihrer API verbindet, vertraut er höchstwahrscheinlich den Daten, die Sie sowieso offenlegen. Wenn es darum geht, den Daten nicht zu vertrauen, haben Sie nicht wirklich viele Möglichkeiten, außer physisch zu versuchen, sicherzustellen, dass die Daten gültig sind, da Sie es mit zentralisierten Endpunkten zu tun haben. Beispielsweise versuchte Intel, eine Blockchain zu implementieren, um die Lieferketten für Fisch zu verfolgen, und kombinierte Blockchain mit IOT:

http://www.coindesk.com/intel-demos-seafood-tracking-sawtooth-lake-blockchain/

Aber Sie müssen immer noch auf die Authentizität und Genauigkeit der von den IoT-Geräten gemeldeten Daten vertrauen, was eine Off-Chain-Lösung erfordert.

Grundsätzlich ist Ethereum nicht für das gedacht, was Sie zu tun versuchen. Es ist keine Cloud-Computing-Plattform wie Lambda. Es ist auch nicht für die dezentrale Speicherung gedacht (siehe dazu IPFS ). Schließlich macht es keinen Sinn, eine API auf Ethereum zu erstellen, da Sie dazu unweigerlich nur Daten aus einer zentralen oder mehreren zentralen Quellen offenlegen. Ethereum ist eine Plattform, um Verträge und Bedingungen durchzusetzen und Änderungen an ihrem Zustand zu überprüfen.

Eric – vielen Dank, das war sehr umfassend. Ich denke, ich hätte besser klarstellen können, dass ich nicht nach einer API für die Dapp-Funktionalität im Ethereum-Netzwerk suche, sondern eher nach Off-Chain-Funktionalität (was normalerweise der größte Teil der App sein wird), wie z. B. das Überprüfen von Aktienpreisen, Versandstatus usw. Ich gehe davon aus, dass es aufgrund der vollständigen Dezentralisierung keinen Sinn macht, diesen Code langfristig auf Amazon und ähnlichen Cloud-Diensten zu hosten.