Comments 38
Если вы хотите получать доступ к внешним данным, то это нужно делать наоборот — сделайте приложение (оракул) которое получает данные из внешнего мира и делает транзакции к вашим смарт контрактам.
Существуют ли какие то техники, позволяющие запускать приложение-оракул на нескольких (многих) машинах, большая часть из которых ненадежна (злонамеренный владелец)?
Если нет, то в чем достоинства использования EVM перед централизованным подходом? или как пример, переноса всей логики, которая могла бы быть запрограммирована в приложение-оракул, и только данные хранить в блокчейне (например bitcoin)?
Да можно сделать oracle network. Чтобы противостоять злонамереным владельцам вам потребуется добавить алгоритм консенсуса в вашу сеть, берите этот.
То сколько вычислительных операций вы будете выполнять внутри ethereum и вне его — это ваш выбор, учитывая что внутри они скорее всего будут дороже, возможно вы сделаете выбор хранить в блокчейне только данные. В качестве оправдания вычислительных операций — код контракта не меняется, и вы можете сделать его открытым и обще доступным, тогда ваши эвристические формулы вычисления, например комиссии, будут общедоступны и неизменны — это может повысить доверие к вашему продукту.
Если хранить данные только в блокчейне, то зачем нам вообще нужен ethereum? если есть bitcoin?
Я просто пытаюсь понять, что именно такого интересного в ethereum что ломанулись писать под него инструментарий, почему не развивать уже существующие блокчейны?
p.s. если сравнивать орг.проблемы, то у ethereum идеологически все еще хуже (форк спасения DAO) чем у bitcoin, с его размером блока.
Мы не только данные храним в блокчейне, какая-то часть логики там находится.
Вообще мне нравятся идеи ethash, ghost и gas, вот уже хотя бы три причины почему ethereum.
Да, про орг. проблемы согласен, про это есть в статье.
просто причины использование EVM для меня все еще остаются туманными и непонятными, и главное я не могу понять, для каких именно задач этот инструмент становится оправданным
т.е. ваш ответ, выбор ethereum потому что 'красивенько и перламутровые пуговицы', да?
1) при получении банком подтверждающих документов по аккредитиву должен быть совершен перевод. И (если он в другой банк) «откатить» его нельзя.
2) при получении банком подтверждающих документов по аккредитиву должен быть закрыть контракт в etherium. И его тоже «откатить» его нельзя.
3) это должно происходить в одной распределённой транзакции.
Как у вас целостность поддерживается?
Тригерром для изменения статуса является проверка данных сотрудником банка и успешное выполнение операций внутри банка, поэтому просто последовательное выполнение операций, в случае ошибки — продолжаем с того места на котором остановились.
Но вот по этой части много вопросов:
Что же такое смарт-контракты Ethereum? Это просто программы, исполняемые EVM (Ethereum Virtual Machine). Контракты могут писаться на нескольких языках, например, на solidity. Все поддерживаемые языки тьюринг-полные, но это не значит, что вы можете всё сделать на EVM. Исполнение вашего кода должно контролироваться, т.к. его будут исполнять другие участники сети, поэтому за исполнение вы будете платить деньги — wei (деноминация ether). Чтобы код, написанный в вашем контракте, начал исполняться, вам нужно создать транзакцию. Эти транзакции передаются майнерам — тем участникам сети, которые занимаются её поддержкой. Они добавляют новые блоки с валидными транзакциями в блокчейн (объяснение намеренно упрощено, подробнее можно почитать тут и тут). Если в качестве адресата транзакции указан смарт-контракт, то майнер исполняет код функции, которая вызывается в транзакции, это стоит вычислительных ресурсов майнера, их использование вы должны оплатить.
Создание смарт-контракта это тоже транзакция, но с пустым адресатом, сохранение контракта в следующее состояние сети потребует ресурсов, которые тоже нужно оплатить. Чтобы сделать процесс оплаты более открытым (превратить его в маркетплэйс), введена концепция внутрисетевого ресурса — газа (вам надо будет много газа, так что вы, видимо, протосс). Газ не является деноминацией эфира, но у любых вычислительных операций и у сохранения данных есть ценник в единицах газа. В транзакции, которую вы хотите сделать, указывается число startgas — сколько газа будет стоить её исполнить, а стоимость одной единицы газа (gasprice) вы назначаете сами, поэтому, указывая более высокий gasprice, вы повышаете шанс включения вашей транзакции в блок, хотя стоит сказать, что большинство майнеров не отбирают транзакции, значит, можно оставлять дефолтное значение.
— создание самого смарт-контракта — оплачивается газом, формируется блок. Откуда брать этот газ? На основании чего определяется его дефолтное значение? Про приватный чейн все понятно, но неинтересно.
— исполнение контракта — оплачивается wei — это тоже блок (транзакция)? Эту криптовалюту тоже надо покупать?
— как определяется цена «обслуживания» умного контракта, от чего зависит ее размер?
inContract.sendLetterOfCreditToNextContractAsync(id, { value: 0, gas: 100 })
«gas 100» — означает что ваша транзакция будет стоить 100 * gasprice
gasprice — задаёте либо вы сами, указав прямо в web3 (т.е. добавив вконце gasPrice: 999) либо используется дефолтное значение для клиента сети, которым вы пользуетесь. Обычно клиенты вычисляют дефолтное значение газа, используя для этого информацию о последних транзакциях. подробнее
ether — 1e18 wei про деноминации
Цена выполнения функций контракта зависит от количества вычислительных операций и количества данных которые вы хотите сохранить в блокчейн.
?!?!??!?!?!!!?
Чтоа? Что вы, собственно, сделали? Прежде чем писать маркетинговый буллшит и показывать веб-интерфейсы, расскажите, в чём суть произошедшего?
В общем, пролистал пару первых абзацев вашей статьи и отвечаю.
Прежде чем начать свой коммент, хочу сказать пару слов о терминологии. Ethereum — это децентрализованная сеть. Это вполне конкретная децентрализованная сеть (конкретный instance) с некой вполне конкретной цепочкой блоков. Когда мы говорим "Ethereum", мы имеем в виду именно её, эту сеть. Если речь идёт об альтернативной сети, построенной с помощью того же кода и той же технологии, это оговаривается отдельно. Ether — это децентрализованная валюта, лежащая в основе сети Ethereum. По словам разработчиков, "Ether — это топливо для контрактов Ethereum". Опять-таки, Ether — это конкретная валюта с конретным курсом по отношению к доллару. Сейчас Ether равен 19.7 долларов. Если речь идёт об альтернативной валюте на основе той же технологии, то это нужно оговаривать отдельно.
Итак, вы воспользовались одной из существующих криптовалют, одной из запущенных децентрализованных сетей? Одним конкретным запущенным instance'м децентрализованной сети, такой как например, главный instance (main net) сети ethereum, той главной сети, к которой по дефолту подключается скачанный с оф. сайта клиент ethereum? Или вы просто воспользовались технологией блокчейн, т. е. создали свой блокчейн на основе существующего кода? Скажем, взяли код ethereum на его основе запустили свой instance ethereum-сети, получили свою основанную на ethereum сеть?
Если второе, то ничего особого в такой новости нет. Это всего лишь значит, что вы воспользовались технологией блокчейн для своих внутренних нужд. Запустили свой блокчейн на своих мощностях. И получили централизованную, т. е. контролируемую вами, сеть. Которая, таким образом, ничем не отличается от всяких банков, яндекс денег, веб мани и пр. Заменили какие-то одни технологии другими, а именно блокчейном. Ну и воспользовались в результате положительными сторонами технологии блокчейн (устойчивость к выключению узлов и т. д.) Но это никак не является продвижением в деле признания криптовалют (таких как биткоин и этер) на государственном уровне.
Если первое, то это меняет дело. Это отличный прецедент для России. Это отличная новость для тех, кто с нетерпением ждёт законодательных продвижений в области криптовалют. Это значит, что реальный российский банк воспользовался существующей криптовалютой (этер).
В случае если верно первое, у меня к вам куча доп. вопросов. Во-первых, где вы взяли этеры? Вы их купили? У кого, на какой бирже? Как вы легально оформили сделку? Проблема ведь в том, что насколько мне известно, ни одна из криптобирж не является полностью легальной (как и сами криптовалюты, впрочем). И, как мне известно, никаких действительно законных документов, тем более признаваемых в России, они не дают. И налоговыми агентами не являются. И лицензии на ведение биржевой деятельности у них нет. У них нет лицензии на ведение биржевой деятельности ни в одной стране, но не смотря на это они ведут свою биржевую деятельность во всех странах сразу, не спрашивая порой у очередного клиента, из какой он, собственно, страны.
Далее, как вы легально оформили сами эти контракты на Ethereum? Где вы взяли документы, подтверждающие, что эти контакты на Ethereum заключены? Которые, в случае чего, будете показывать налоговой и пр.? Вы продублировали каждый контракт Ethereum реальным контрактом?
Как вы подстраховались от резкого изменения курса? Вот купили вы кучу этеров, заключили контакты, всё у вас ок. Теперь пришла пора продать этеры. А цена резко изменилась. И вы в убытке. Вы подстраховались от такого? Как?
Ответьте, пожалуйста, на все эти вопросы.
Итак, мне совершенно не нравится ваша статья. С чего нужно начать статью? Можно начать с короткого абзаца для привлечения внимания, который в двух словах рассказывает, что и как. Он может быть непонятным, главное, чтобы он привлёк внимание. И его можно опустить. А вот дальше нужно по порядку рассказать всё как есть. Рассказать, действительно ли вы воспользовались главным instance'ом Ethereum, где вы взяли этеры, кому они перешли в распоряжение после покупки, как вы юридически всё это оформляете и так далее и тому подобное. А потом уже рассказывать про этот ваш веб интерфейс. И про особенности настройки Ethereum. И конкретный код на solidity. Иначе ничего не понятно вообще.
Комментов у вас мало, и просмотров тоже. А если б назвали статью так, чтоб было понятно, что речь идёт у существенном продвижении в деле легализации криптовалют, и в тексте самой статьи начали бы именно с этого (где купили этеры, как оформили), то, мне кажется, и просмотров у вас было бы больше, и комментов. Это же всем интересно
В общем, пролистал пару первых абзацев вашей статьи и отвечаю.
Ну наверное стоило бы дочитать до конца, на большинство ваших вопросов есть ответы в статье.
Вопрос на который не было ответа в статье
где вы взяли этеры?
Друг подарил, хотя уже есть даже физические обменники.
А, ну да, ещё вопросы. Как наличие контактов Ethereum гарантирует реальное совершение услуги? Что такое вообще этот ваш аккредетатив? Блин, если бы вы захотели, вы бы могли в одном абзаце всё уместить! В чём суть аккредетатива, т. е. что именно за договор нужно было переместить на блокчейн, и как конкретно вы его на блокчейне разместили.
Далее, действительно ли вам понадобилось количество этеров, равное по своей ценности сумме сделки? Или нет, вы просто воспользовались неким символическим маленьким количеством этеров, к сумме сделке не имеющем отношения? Если маленьким, то какой тогда вообще смысл в этом Ethereum контракте? Что он вообще будет гарантировать? Это поиграться что ли? У вас Ethereum тогда просто для учёта сделок, но для их гарантии что ли?
Комментом выше я спросил у вас, где вы взяли этеры и как юридически всё это оформили. Понятное дело, я так спросил, потому что я сперва решил, что вы реально воспользовались количеством этеров, равным объёму сделки. Если же вам понадобилось лишь символическое маленькое количество этеров, понятное дело, это значения не имеет, можно просто по-тихому купить и никому не говорить. И юридически можно эти операции с этерами не оформлять. И страховаться от изменения курса тогда тоже не надо, понятное дело. И никакого такого прецедента для российского закона это тоже не создаёт, увы.
И блин, всё это нужно было запихнуть в начало статьи. Сразу всё написать: мы воспользовались реальным instance'ом Ethreum (или не воспользовались), закупили Ether'ов на всю сумму, на все миллионы рублей (или не закупили), юридически оформили так-то (или не оформили) и т. д.
Хорошо, когда вы можете использовать одну из доступных криптовалют, чтобы производить денежный оборот, но, как известно, у нас законодательно запрещена работа с криптовалютами, даже если это не будет фактически валютой, а, например, colored coins, поэтому никакого эквивалента реальным деньгам мы не переносили внутрь сети.
Если вы знакомы с ethereum проектами, то наверное уже должны были догадаться, что мы сделали. Кстати есть мнение, что другие ребята которые делали аккредитивы на блокчейне делали также, во всяком случае те с кем я говорил.
Я, кажется, понял. Вы воспользовались реальным Ethereum. Но большие суммы через Ethereum-контакты не гоняли. Вы использовали контракты как своего рода логическую машину. Т. е. как некий компьютер, которому все контрагенты могут доверять. (В приниципе, это хорошо, это одно из главных применений, для которого Ethrereum и создавался.) И с его помощью отслеживали статус реального, бумажного контакта. Контрагенты могут слать в Ethereum-контракт подписанные, верифицированные сообщения и тем самым менять его статус. Но сами крупные суммы через Ethereum-контакт не проводили, а проводили лишь записи о них. Так? Ну тогда так и нужно было написать. Потому что первая мысль, возникающая у любого знакомого с Ethereum-технологиями, такова: вы реальные суммы (миллионы рублей) протаскивали через эти Ethereum-контракты.
поэтому никакого эквивалента реальным деньгам мы не переносили внутрь сети.
Как вы понимаете, сейчас в смарт-контрактах реализовано просто сохранение хэшей от некоторых полей аккредитива, его статус и проверка информации при закрытии. Да, у нас было больше идей того, что можно перенести на сторону блокчейна, и, возможно, в дальнейшем их получится реализовать. В данном проекте мы большую часть времени потратили на создание приложений: фронт-энд и апи. Хотя есть мнение, что так происходит во многих проектах, связанных с блокчейном.
А зачем это нужно вам? Вы же банк, по идее как раз торгуете своим авторитетом в сделках. Любые децентрализованные сделки конкурируют с вашим основным бизнесом. Какая польза от блокчейна может быть для банка?
С этой точки зрения сделка, которая обеспечивается не банком, а этериумом, кажется не такой выгодной для банка. Ну и как можно стандартизировать по ГОСТу этериум совершенно не ясно — ведь большая часть сети находится не в России и теоретически могут сговориться, чтобы облапошить российский сегмент. От банков ждёшь большего уровня надёжности.
Я имел ввиду отличную от ethereum реализацию концепции блокчейна/платформы для смартконтрактов, использующую гостовые алгоритмы, в целях обеспечения необходимой юридической доказательной базы.
Но менять придётся всю концепцию proof of work. Во-первых, нечего банкам жечь электричество попусту. Во-вторых, изначальная идея proof of work рассчитана на децентрализацию, а банки стремятся к централизации. Когда у тебя не несколько тысяч акторов, а пара десятков, они вполне могут вступить в сговор. В-третьих, о сговорах — зачем соревноваться в количестве сожжённого электричества, когда можно договориться о каком-то уровне выработки газа.
Да и вообще лучше отказаться от proof of work и заменить его на что-то другое, на предустановленную способность банка проводить какой-то процент контрактов, который банки между собой распределяют прямыми договорами, без всякой электронной мишуры.
В результате появится авторитетный орган «совет банков», который устанавливает правила технологической игры, и которому все должны доверять. И снова мы приходим к исходным условиям задачи — есть единственный актор. А если мы не можем его установить, то и договориться не сможем.
Не очень понятно почему должен создаваться совет банков, вырожденный в одного актора, вы почему-то хотите всё централизовать :)
Как мы делали первую сделку-аккредитив на блокчейн в Альфа-Банке