Почему контракты не могут выполнять вызовы API?

Модель, которая заключает контракты, может принимать и обрабатывать данные вместо того, чтобы также получать данные из Интернета, кажется ограничивающей (даже если нет, она менее прямой). Если проблема связана с тем, что данные или Интернет ненадежны, нельзя ли запрограммировать контракт для обработки таких случаев?

Существуют ли фундаментальные технические ограничения, которые привели к тому, что контракты Ethereum не могут «напрямую обращаться к Интернету»?

39 голосов | спросил eth 22 Jam1000000amFri, 22 Jan 2016 00:52:45 +030016 2016, 00:52:45

3 ответа


55

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

Поскольку интернет не детерминирован и изменяется со временем, то каждый раз, когда я воспроизводил все транзакции в сети, я получал бы другой ответ.

Детерминизм важен, так что узлы могут прийти к консенсусу. Если бы был контракт, который требовал количества upvotes по этому вопросу, значение может время от времени отличаться или даже место для размещения, в результате чего узлы в будущем или без доступа к этому сайту могут прийти к разным выводам о состоянии сети , тем самым нарушая консенсус.

Требуя, чтобы каждый ввод данных инициировался через внешнюю транзакцию, мы можем быть уверены, что сама блок-цепочка содержит всю информацию, необходимую для проверки себя. Используя один оракул на уровне контракта ( https://oraclize.it ) вместо сетевой или консенсусной функции, мы гарантируем, что есть только один канонический результат.

ответил Tjaden Hess 22 Jam1000000amFri, 22 Jan 2016 05:15:26 +030016 2016, 05:15:26
21

Фактически вы можете взять данные из Интернета . Вам просто нужно, чтобы кто-то передал его вашему контракту. Как вы можете доверять этому человеку? Используйте что-то вроде Oraclize. http://www.oraclize.it/ Это идея, которая использует TLS Нотариус, чтобы гарантировать, что ответ аутентичен с веб-сервера.

Я нашел его, потому что изначально думал о том, чтобы делать то же самое с нотариусом TLS. Я послал Виталика на reddit обратно 22 августа 2015 года. Он сказал это:

  

Использование контрактов ethereum для проверки сеансов HTTPS теоретически является   крутая идея; моя главная проблема заключается в том, что EVM сейчас может быть слишком медленным   для его реализации. Если вы хотите попробовать, не стесняйтесь делать исследования и   посмотрите, сколько работы потребуется для этого; возможно, это может быть   возможно в пределах 3 м газа, и я хотел бы сам увидеть результаты.

Я рад, что у кого-то была та же идея, что и у меня, и она уже превратила это в нечто. Если бы все разработки были такими легкими!

ответил linagee 23 Jam1000000amSat, 23 Jan 2016 11:05:25 +030016 2016, 11:05:25
6

Я считаю, что это было разработано как возможность минимизировать нагрузку на сеть и сократить ресурсы. Существует несколько решений, если вы хотите «api call on contract»:

http://www.ethereum-alarm-clock.com/

Источник: https: //forum. ethereum.org/discussion/3571/ethereum-alarm-clock-call-scheduling-for-contracts

pipermerriam Сообщений: 10 месяцев œ сентябрь 2015 года в общей дискуссии по проекту (нетехническая) Я с гордостью объявляю о запуске службы будильника Ethereum.

http://www.ethereum-alarm-clock.com/

Служба «Тревога» облегчает планирование вызовов функций контрактов для указанного номера блока в будущем. Текущий релиз следует рассматривать как альфа-программное обеспечение.

Запланировать вызовы функций контракта, которые будут выполняться в указанном блоке в будущем. Ненадежный. Административный API или специальный доступ не предоставляется никому, включая меня. Опубликованный проверяемый исходный код. Много документации с примерами. Мне очень интересно услышать отзывы людей. Не стесняйтесь присылать мне сообщение на pipermerriam на gitter.

ответил high110 22 Jam1000000amFri, 22 Jan 2016 01:42:17 +030016 2016, 01:42:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132