существует ли платформа для размещения API, аналогичная AWS Lambda, только децентрализованная?

Я ищу платформу, которая позволяет размещать бессерверный код для Dapps без облачных сервисов, чтобы приложение могло оставаться полностью централизованным.

Вы имели в виду полностью децентрализованный?
Да, Игорь, я добавил уточнение в качестве комментария к ответу Эрика.

Ответы (1)

Ваш вопрос не очень ясен. Любое децентрализованное приложение по определению децентрализовано ( децентрализованное приложение ) . Он состоит из одного или нескольких контрактов, которые живут в блокчейне Ethereum и с которыми можно взаимодействовать через включенные браузеры, такие как Mist. В качестве конечного пользователя ваш клиент подключается напрямую к вашему контракту (контрактам) Ethereum через библиотеку, которая, в свою очередь, действует как интерфейс для методов, которые взаимодействуют с узлами Ethereum.web3web3.jsJSON-RPC

Что касается конкретно AWS Lambda, то он служит иной цели, чем Ethereum в целом. Когда вы общаетесь с контрактом в Ethereum в EVM (виртуальная машина Ethereum), единственная работа, которой занимаются другие узлы, — это проверка изменений в состоянии контракта. Это означает, что если вы запускаете функцию, которая добавляет 1+1и возвращает ее, вы не меняете состояние. Таким образом, дополнение работает на стороне клиента на вашем компьютере. Но если вы присвоите это значение беззнаковому 32-битному целому числу со значением 5, вы измените состояние, которое должно быть проверено сетью, и, следовательно, для этого потребуется газ в качестве финансового стимула. Рассмотрим следующий пример:

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;

    }
}

Кроме того, если вы хотите создать децентрализованный API, если все, что делает API, — это предоставление данных, тогда вы можете хранить скромный объем данных в состоянии контракта и иметь функции, которые люди могут вызывать через web.jsбиблиотеку и JSON-RPCметоды. Затем вы можете включить функцию для обновления/установки данных, но это потребует некоторой степени централизации, потому что данные будет устанавливать отдельное лицо или ограниченная группа лиц. Вы можете использовать оракулы для прослушивания и реагирования на события в блокчейне, но вы все равно будете выполнять вычисления на аппаратном обеспечении оракула вне сети.

Наконец, если кто-то подключается к вашему API, он, скорее всего, доверяет данным, которые вы предоставляете. Если речь идет о недоверии к данным, то у вас действительно не так много вариантов, кроме как физически попытаться убедиться, что данные действительны, потому что вы имеете дело с централизованными конечными точками. Например, Intel пыталась внедрить блокчейн для отслеживания цепочек поставок рыбы, объединив блокчейн с IOT:

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

Но вы все равно должны доверять подлинности и точности данных, сообщаемых устройствами IOT, для чего требуется автономное решение.

По сути, Ethereum не предназначен для того, что вы пытаетесь сделать. Это не платформа облачных вычислений, как Lambda. Он также не предназначен для децентрализованного хранения (для этого ознакомьтесь с IPFS ). Наконец, нет смысла создавать API на Ethereum, потому что при этом вы неизбежно просто предоставляете данные из центрального или нескольких централизованных источников. Ethereum — это платформа для обеспечения соблюдения контрактов и условий и проверки изменений их состояния.

Эрик - большое спасибо, это было очень исчерпывающе. Думаю, я мог бы лучше уточнить, что я не ищу API для функциональности Dapp В сети Ethereum, а скорее функциональность вне сети (которая обычно будет в большинстве приложений), такая как проверка цен на акции, статусы доставки и т. д. Я предполагаю, что при полной децентрализации не имеет смысла хранить этот код на Amazon и подобных облачных сервисах в долгосрочной перспективе.