Сравнение платформ смарт контрактов

Смарт-контракт — компьютерный алгоритм, предназначенный для заключения и поддержания коммерческих проектов в технологии блокчейн. Есть некая разновидность платформ смарт контрактов, каждая со своими особенностями.

Мы живем в эру умного контракта. В то время как биткоин, возможно, показал нам, что платежная система может существовать в децентрализованной одноранговой атмосфере. Однако это было с появлением Ethereum, что шлюзы хорошо и действительно открылись. Ethereum возвестил эру второго поколения blockchain, и люди наконец видели истинный потенциал Dapps и Smart Contracts.

Более глубокий взгляд на различные умные платформы контракта

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

Прежде чем мы сделаем это хотя, давайте зададим нам вопрос.

Что такое точно умные контракты?

Умные контракты автоматизированы контракты. Они самовыполняют с особыми указаниями, написанными на его кодексе, который выполнен, когда определенные условия сделаны.

Вы можете узнать больше об умных контрактах в нашем всестороннем руководстве здесь.

Так, каковы желательные свойства, которые мы хотим в нашем умном контракте?

Что-либо, что работает на blockchain, должно быть неизменным и должно иметь способность пробежать многократные узлы, не ставя под угрозу ее целостность. В результате которого, умная функциональность контракта должна быть тремя вещами:

Детерминированный.
Срочный.
Изолированный.

Особенность № 1: детерминированный

Программа детерминирована, если она дает ту же самую продукцию данному, вводит каждый раз. Например, Если 3+1 = 4 тогда 3+1 ВСЕГДА будет 4 (принятие той же самой основы). Таким образом, когда программа дает ту же самую продукцию тому же самому набору исходных данных в различных компьютерах, программу называют детерминированной.

Есть различные моменты, когда программа может действовать недетерминированным способом:

Вызывание недетерминированных системных функций: Когда программист вызывает недетерминированную функцию в их программе.

Недетерминированные информационные ресурсы: Если программа приобретает данные во время времени выполнения, и тот источник данных не детерминирован тогда, программа становится недетерминированной. Например, Предположим программа, которая приобретает лучшие 10 поисков Google конкретного вопроса. Список может продолжать изменяться.

Динамические Требования: Когда программа называет вторую программу, это называют динамическим запросом. Так как цель требования определена только во время выполнения, это не детерминировано по своей природе.

Особенность № 2: срочный

В математической логике у нас есть ошибка, названная “несовершенная проблема”. В основном это указывает, что есть неспособность знать, может ли данная программа выполнить свою функцию в течение срока. В 1936 Алан Тьюринг вывел, используя Диагональную проблему Регента, что нет никакого способа знать, может ли данная программа закончиться в срок или нет.

Это – очевидно, проблема с умными контрактами, потому что, контракты по определению, должно быть способно к завершению в данный срок. Есть некоторые меры, принятые, чтобы гарантировать, что есть способ внешне “убить” контракт и не вступает в бесконечную петлю, которая истощит ресурсы:

Туринg Неполнота: Тьюринг Неполный blockchain ограничит функциональность и не быть способным к созданию скачков и/или петель. Следовательно они не могут войти в бесконечную петлю.

Шаг и Метр Сбора: программа может просто отслеживать число “шаги”, которые это сделало, т.е. количество инструкций, которые это выполнило, и затем заканчивает, как только особое количество шага было казнено. 

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

Таймер: Здесь предопределенный таймер сохранен. Если выполнение контракта превышает срок тогда, это внешне прервано.

Особенность № 3: изолированный

В blockchain любой и все могут загрузить умный контракт. Однако из-за этого контракты могут, сознательно и бессознательно содержать вирус и жуков.

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

Теперь, когда мы видели эти особенности, важно знать, как они выполнены. Обычно, умными контрактами управляют, используя одну из этих двух систем:

Виртуальные машины: Ethereum и Neo используют это
Докер: Ткань использует это.
Давайте сравним эти два и давайте определим, который делает для лучшей экосистемы. Для пользы простоты мы собираемся сравнить Ethereum (Виртуальная машина) с Тканью (Докер).

Так, как видно, Виртуальные машины обеспечивают лучшую Детерминированную, срочную и изолированную окружающую среду для Умных контрактов.

Хорошо, поэтому теперь мы знаем то, что умные контракты и то, что Виртуальные машины – лучшие платформы для умных контрактов. Давайте посмотрим на то, что точно делает Dapps требуют, чтобы бежать эффективно.

Чего требуют Dapps?

Или, чтобы создать его более определенно, чего DAPP требует, чтобы быть успешным и хит с господствующей аудиторией? Каковы его необходимые минимальные требования?

Поддержка миллионов пользователей

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

Бесплатное использование

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

Легко Обновляемый

Платформа должна позволить разработчикам свободу модернизировать Dapp как и когда они хотят. Кроме того, если некоторая ошибка действительно затрагивает Dapp, devs должен быть в состоянии зафиксировать DAPP, не затрагивая платформу.

Низкое время ожидания

DAPP должен бежать максимально гладко и с самым низким временем ожидания.

Параллельная работа

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

Последовательная работа

Однако не все функции на blockchain должны быть сделаны тот путь. Думатьсамо операционное выполнение. Многократные сделки не могут быть выполнены параллельно; это должно быть сделано по одному, чтобы избежать, чтобы ошибки как двойной потратили.

Так, что платформы доступны нам когда дело доходит до создания DAPP?

BitShares и Графен имеют хорошую пропускную способность, но являются определенно не умным подходящим контрактом.
Ethereum – ясно наиболее очевидный выбор на рынке. У этого есть удивительные умные способности к контракту, но низкая операционная скорость – главная проблема. Плюс, цена на газ может быть проблематичной также.

Хорошо, поэтому теперь, когда мы знаем то, чего требуют Dapps, давайте пройдем некоторые умные платформы контракта.

Мы будем смотреть на:
Ethereum
ЭОС
Звездный
Кардано
Нео
Ткань гипербухгалтерской книги

Ethereum

Прежде всего у нас есть Ethereum, тот, который начал все это.

Это – то, как веб-сайт Этэреума определяет его:

“Ethereum – децентрализованная платформа, которая управляет умными контрактами: заявления, которые бегут точно, как запрограммировано без любой возможности времени простоя, цензуры, мошенничества или стороннего вмешательства. Эти приложения работают на сделанном на заказ blockchain, чрезвычайно сильная общая глобальная инфраструктура, которая может переместить стоимость и представлять собственность на имущество”.

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

Виртуальная машина Ethereum или EVM – виртуальная машина, в которой все умные контракты функционируют в Ethereum. Это – простой все же влиятельный Тьюринг Полная 256-битная виртуальная машина. Полный Тьюринг подразумевает, что, учитывая ресурсы и память, любая программа, выполненная в EVM, может решить любую проблему.

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

Основательность – целеустремленно сокращенный, свободно напечатанный язык с синтаксисом, очень похожим на ECMAScript (JavaScript). Есть некоторые ключевые пункты, чтобы помнить из документа Объяснения Дизайна Ethereum, а именно, что мы работаем в рамках модели стека-и-памяти с 32-байтовым размером слова инструкции, EVM (Виртуальная машина Ethereum) предоставляет нам доступ к программе “стек”, который похож на пространство регистра, где мы можем также засунуть адреса памяти, чтобы сделать петлю/скачок Прилавка Программы (для последовательного контроля за программой), растяжимая временная “память” и более постоянное “хранение”, которое на самом деле написано в постоянный blockchain, и самое главное, EVM требует полного детерминизма в рамках умных контрактов.

Так, прежде чем мы продолжим, давайте проверим основной пример контракта Основательности. (Кодексы были взяты от GitHub).

Давайте управлять простым в то время как петля в основательности:

контракт BasicIterator

{

создатель адреса;//резервируют один “”адрес”” – пятно типа

целые числа uint8 [10];//резервируют кусок хранения для 10 8-битных неподписанных целых чисел во множестве

функционируйте BasicIterator ()

{

создатель = message.sender;

uint8 x = 0;

//Раздел 1: Как while(x < integers.length) { integers[x] = x; x++; } } function getSum() constant returns (uint) { uint8 sum = 0; uint8 x = 0; //Section 2: Adding the integers in an array. while(x < integers.length) { sum = sum + integers[x]; x++; } return sum; } // Section 3: Killing the contract function kill() { if (msg.sender == creator) { suicide(creator); } } } So, let’s analyze the code. For ease of understanding, we have divided the code into 3 sections. Section 1: Assigning Values In the first step, we are filling up an array called “integers” which takes in 10 8-bit unsigned integers. The way we are doing it is via a while loop. Let’s look at what is happening inside the while loop. while(x < integers.length) { integers[x] = x; x++; } Помните, мы уже назначили ценность “0” к целому числу x. В то время как петля идет от 0 до integers.length. Integers.length - функция, которая возвращает макс. способность множества. Так, если мы решили, что у множества будет 10 целых чисел, arrayname.length возвратит ценность 10. В петле выше, ценность x идет от 0 – 9 (<10) и назначает ценность себя ко множеству целых чисел также. Так, в конце петли у целых чисел будет следующая стоимость: 0,1,2,3,4,5,6,7,8,9. Раздел 2: Добавление содержания множества В getSum () функционируют, мы собираемся сложить содержание самого множества. Путь собирается сделать это, повторяя то же самое в то время как петля как выше и использование переменной “суммы”, чтобы добавить содержание множества. Раздел 3: Убийство контракта Эта функция убивает контракт и посылает остающиеся фонды в контракте назад создателю контракта.

Что такое Газ?

“Газ” – жизненная основа экосистемы Ethereum, нет никакого другого способа поместить это. Газ – единица, которая измеряет количество вычислительных усилий, которые это приложит, чтобы выполнить определенные операции.

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

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

Это может привести к двум сценариям:

Требуемый газ является больше, чем набор предела. Если это так, тогда государство контракта вернулось назад к его исходному состоянию, и весь газ израсходован.
2. Требуемый газ является меньше, чем набор предела. Если это так, тогда контракт закончен, и оставшемуся газу предаются сеттер контракта.

В то время как Ethereum, возможно, проложил путь к умным контрактам. Это действительно сталкивается с некоторыми проблемами масштабируемости. Однако инновации, такие как плазма, raiden, sharding и т.д. могут решить эту проблему.

ЭОС

ЭОС стремитсястаньте децентрализованной операционной системой, которая может поддержать децентрализованные приложения промышленных весов.

Это кажется довольно удивительным, но что действительно захватило воображение общественности, следующие два требования:

Они планируют полностью удалить комиссионные за транзакции.

Они утверждают, что имели способность провести миллионы сделок в секунду.

Эти две особенности – причины, почему разработчики Dapp очарованы ЭОС. Давайте посмотрим на то, как ЭОС достигает обеих из этих вещей.

Удаление сборов

Работы ЭОС над моделью собственности, посредством чего пользователи владеют и наделены правом использовать ресурсы, пропорциональные их доле, вместо того, чтобы иметь необходимость заплатить за каждую сделку. Так, в сущности, если Вы держите символы N ЭОС тогда, Вы наделены правом на сделки N*k. Это, в сущности, устраняет комиссионные за транзакции.

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

Принципиальное различие между способом, которым действуют Этэреум и ЭОС, – то, что, в то время как Этэреум сдает в аренду их вычислительную мощность разработчикам, ЭОС дает собственность их ресурсов. Так, в сущности, если Вы будете владеть 1/1000-й из доли в ЭОС тогда, то у Вас будет собственность 1/1000-й из полной вычислительной мощности и ресурсов в ЭОС.

Как ico-рассматривает государства в их статье:

“Модель собственности ЭОС предоставляет разработчикам DAPP предсказуемые затраты на оказание гостеприимства, требуя, чтобы они только поддержали определенный процент или уровень доли, и позволяет создать свободно распространяемые приложения. Кроме того, так как держатели символа ЭОС будут в состоянии арендовать/делегировать свою долю ресурсов другим разработчикам, модель собственности связывает ценность символов ЭОС к спросу и предложению пропускной способности и хранению”.

Увеличенная масштабируемость

EOS получает свою масштабируемость от ее механизма согласия DPOS. DPOS обозначает делегированное доказательство доли, и это – то, как это работает:

Во-первых, любой, кто считает символы на blockchain интегрированными в программное обеспечение ЭОС, может выбрать производителей блока через непрерывную систему голосования одобрения. Любой может участвовать в выборах производителя блока, и им дадут возможность произвести блоки, пропорциональные полным голосам, которые они получают относительно всех других производителей.

Как это работает?

Блоки произведены в раундах 21.

В начале каждого блока раунда 21 выбраны производители. Лучшие 20 автоматически выбраны, в то время как 21-й выбран пропорциональный количеству их голосов относительно других производителей.

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

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

Язык WASM

ЭОС использует WebAssembly иначе язык программирования WASM. Причина, почему они используют его, из-за после свойств (взята под эгидой webassembly.org):

Скорость и Эффективность: WebAssembly выполняет на родной скорости, используя в своих интересах общие возможности аппаратных средств, доступные на широком спектре платформ.

Open и Debuggable: Это разработано, чтобы быть довольно напечатанным в текстовом формате для отладки, тестирования, экспериментирования, оптимизации, изучения, обучения и написания программ вручную.

Безопасный: WebAssembly описывает безопасную от памяти, поигравшую в песочнице окружающую среду выполнения, которая может даже быть осуществлена в существующих виртуальных машинах JavaScript.

ЭОС – прекрасная платформа, чтобы создать промышленные весы Dapps. Давайте предположим, что Вы создаете децентрализованный Твиттер. Если бы Вы создали это на Ethereum, то пользователь должен был бы потратить немного газа, выполняя каждый шаг твита.

Если Вы сделали то же самое в ЭОС, пользователи не должны будут тратить газ, потому что комиссионные за транзакции 0! Однако, так как ЭОС столь не децентрализована как Ethereum, Dapps, которые требуют, высокие степени сопротивления цензуры могут не быть подходящим вариантом для него.

Звездный

Звездный детище Джеда Маккэлеба, и Джойс Ким был сформирован назад в 2014, когда ему придали форму вилки из протокола Ряби. Звездный, согласно их веб-сайту,

“платформа, которая соединяет банки, платежные системы и людей. Объединяйтесь, чтобы переместить деньги быстро, достоверно, и по почти никакой стоимости”.

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

В отличие от Ethereum, Stellar Smart Contracts (SSC) не полный Тьюринг. Следующая таблица дает Вам хорошую идею различий между Stellar и Ethereum умные контракты:

Кредит изображения: Hackernoon

Некоторая статистика может немедленно появиться.

Прежде всего, в 5 вторых раз подтверждения и то, что единственная сделка в сети Stellar стоит только ~ 0.0000002$!

$stellarNetwork-> buildTransaction ($customerKeypair)
-> addCreateAccountOp ($escrowKeypair, 100.00006)//100 XLM после того, как сборы за установку + передают сделку
-> подчиняются ($customerKeypair);
}

напечатайте “”Созданный счет условного депонирования””:. $escrowKeypair-> getPublicKey (). PHP_EOL;

/*
*, Чтобы сделать это счетом условного депонирования, мы должны доказать рабочему это
* никто не в состоянии отозвать фонды из него, в то время как рабочий ищет
* адрес тщеславия.
*
* Это достигнуто:
* – Создание подписывающих лиц рабочего и клиента равного веса (1)
* – Требующий, чтобы оба подписывающих лица договорились о любой сделке (пороги установлены к 2),
*
* Однако мы также должны обращаться со случаем, где никакой рабочий не устраивается на работу и нас
* должен исправить счет. Это может быть сделано, добавив предсанкционированное слияние
* сделка это не действительно до 30 дней с этого времени.
*
* Это позволяет рабочему знать, что фонды, как гарантируют, будут доступны
* в течение 30 дней.
*/

//Загрузите счет условного депонирования
$account = $stellarNetwork-> getAccount ($escrowKeypair);

//Предварительно вычислите некоторые порядковые номера, так как они необходимы для сделок
$startingSequenceNumber = $account-> getSequence ();
//След, сколько сделок необходимо, чтобы настроить счет условного депонирования
//Нам нужно это так, мы можем правильно вычислить, “”исправляют счет”” порядковый номер
$numSetupTransactions = 5;

$reclaimAccountOrPaySeqNum = $startingSequenceNumber + $numSetupTransactions + 1;

//Обновите счет со значением данных, указывающим что обращение тщеславия к поиску
напечатайте “”Добавляющий ввод данных, чтобы просить адрес тщеславия…””;
$stellarNetwork-> buildTransaction ($escrowKeypair)
-> setAccountData (‘request:generateVanityAddress ‘, G*ZULU’)
-> подчиняются ($escrowKeypair);
“”СДЕЛАННАЯ”” печать. PHP_EOL;

//Сделка отступления: исправьте счет условного депонирования, если никакие рабочие не производят
//адрес тщеславия за 30 дней
$reclaimTx = $stellarNetwork-> buildTransaction ($escrowKeypair)
-> setSequenceNumber (новый BigInteger ($reclaimAccountOrPaySeqNum))
//todo: не прокомментируйте это в реальном внедрении
//-> setLowerTimebound (новый \DateTime (‘ +30 дней))
-> setAccountData (‘request:generateVanityAddress’)
-> addMergeOperation ($customerKeypair)
-> getTransactionEnvelope ();

//Добавьте мешанину $reclaimTx как подписывающее лицо на счете
//См.: https://www.stellar.org/developers/guides/concepts/multi-sig.html#pre-authorized-transaction
$txHashSigner = новое Подписывающее лицо (
SignerKey:: fromPreauthorizedHash ($reclaimTx-> getHash ()),
2 / / вес должен состоять достаточно в том, таким образом, никакие другие подписывающие лица не необходимы
);
$addReclaimTxSignerOp = новый SetOptionsOp ();
$addReclaimTxSignerOp-> updateSigner ($txHashSigner);

напечатайте “”Добавление предуполномоченного, исправляют сделку как подписывающее лицо…””;
$stellarNetwork-> buildTransaction ($escrowKeypair)
-> addOperation ($addReclaimTxSignerOp)
-> подчиняются ($escrowKeypair);
“”СДЕЛАННАЯ”” печать. PHP_EOL;

печать “”Добавленный предавтор исправляет сделку, действительную в последовательности””. $reclaimAccountOrPaySeqNum. PHP_EOL;
напечатайте, “”Чтобы исправить счет условного депонирования, бежать 90, исправляют escrow.php””. PHP_EOL;

//Добавьте счет рабочего как подписывающее лицо веса 1
$workerSigner = новое Подписывающее лицо (
SignerKey:: fromKeypair ($workerKeypair),
1 / / требует другого подписывающего лица
);
$addSignerOp = новый SetOptionsOp ();
$addSignerOp-> updateSigner ($workerSigner);
$stellarNetwork-> buildTransaction ($escrowKeypair)
-> addOperation ($addSignerOp)
-> подчиняются ($escrowKeypair);

//Добавьте клиентский счет как второе подписывающее лицо веса 1
$workerSigner = новое Подписывающее лицо (
SignerKey:: fromKeypair ($customerKeypair),
1 / / требует другого подписывающего лица
);
$addSignerOp = новый SetOptionsOp ();
$addSignerOp-> updateSigner ($workerSigner);
$stellarNetwork-> buildTransaction ($escrowKeypair)
-> addOperation ($addSignerOp)
-> подчиняются ($escrowKeypair);

//Пороги увеличения и вес владельца набора к 0
//Все операции теперь требуют порога 2

$thresholdsOp = новый SetOptionsOp ();
$thresholdsOp-> setLowThreshold (2);
$thresholdsOp-> setMediumThreshold (2);
$thresholdsOp-> setHighThreshold (2);
$thresholdsOp-> setMasterWeight (0);
$stellarNetwork-> buildTransaction ($escrowKeypair)
-> addOperation ($thresholdsOp)
-> подчиняются ($escrowKeypair);

печать PHP_EOL;
напечатайте “”Законченный счет условного депонирования формирования””. PHP_EOL;

Кардано

Одним из самых интересных проектов выйти является Кардано. Подобный Ethereum, Кардано – умная платформа контракта, однако, Кардано предлагает масштабируемость и безопасность через слоистую архитектуру. Подход Карданоа уникален в самом космосе, так как это основано на научной философии и рецензируемом научном исследовании

Кардано стремится увеличивать масштабируемость через их доказательство Ouroboros механизма согласия доли. Чтобы закодировать умные контракты в Карданое, Вы должны будете использовать Plutus, который основан на Хаскелле, язык раньше кодировал Карданоа.

В то время как C ++ и самые традиционные языки являются Обязательными языками программирования, Плутус и Хаскелл – функциональные языки программирования.

Так, как функциональное программирование работает?
Предположим, что есть функция f (x), что мы хотим использовать, чтобы вычислить функцию g (x), и затем мы хотим использовать это, чтобы работать с функцией h (x). Вместо того, чтобы решить все те в последовательности, мы можем просто избить всех их вместе в единственной функции как это:

h (g (f (x)))

Это делает функциональный подход легче рассуждать математически. Поэтому функциональные программы, как предполагается, являются более безопасным подходом к умному созданию контракта. Это также помогает в более простой Формальной Проверке, которая в значительной степени означает, что легче математически доказать то, что делает программа и как это разыгрывает. Это дает Карданоу его “Высокую Кодовую собственность” Гарантии.

Давайте возьмем реальный пример этого и давайте посмотрим, почему это может стать чрезвычайно очень важным и даже спасительным в определенных условиях.

Предположим, мы кодируем программу, которая управляет воздушным движением.

Как Вы можете предположить, кодирование такой системы требует высокой степени точности и точности. Мы не можем только вслепую закодировать что-то и надеяться на лучшее, когда жизни людей находятся в опасности. В ситуациях как они нам нужен кодекс, который, как могут доказывать, работает в высокой степени математической уверенности.

Это точно, почему функциональный подход так желателен.

И это точно, что Кардано использует Хаскелла, чтобы закодировать их экосистему и Плутуса для их умных контрактов. И Хаскелл и Плутус – функциональные языки.

Следующая таблица сравнивает Обязательный подход с Функциональным подходом.

Кредит изображения: Docs.Microsoft.com

Так, давайте позволим нам посмотреть на преимущества функционального подхода:

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

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

Кодекс легче к линзовому телескопу, и любые изменения в кодексе более просты осуществить. Это делает повторяющееся развитие легче.

Отдельные функции могут быть легко изолированы, который делает их легче проверить и отладить.

Нео

Нео, раньше известный как Antshares, часто известен как “Ethereum Китая”.

Согласно их веб-сайту, Нео “некоммерческий основанный на сообществе blockchain проект, который использует blockchain технологию и цифровую идентичность, чтобы оцифровать активы, автоматизировать управление цифровыми активами, используя умные контракты и понять “умную экономику” с распределенной сетью”.

Основная цель Нео состоит в том, чтобы быть распределенной сетью для “умной экономики”. Как их государства веб-сайта:

Цифровые активы + цифровая идентичность + умный контракт = умная экономика.

Нео был развит базирующейся blockchain R&D компанией Шанхая “OnChain”. Onchain был основан генеральным директором Да Онгфеи и CTO Эриком Чжаном. Исследование в области Нео начатого приблизительно в 2014. В 2016 Onchain был перечислен в Лучших 50 Fintech Company в Китае KPMG.

Нео требуемый, чтобы создать умную платформу контракта, у которой есть все преимущества Виртуальной машины Ethereum, не нанося вред их разработчикам с языковыми барьерами. В ethereum Вы должны будете изучить основательность, чтобы закодировать умные контракты, в то время как в Нео, Вы можете даже использовать JavaScript, чтобы закодировать умные контракты.

Нео умный контракт 2.0
У умной системы контракта Нео иначе Умный Контракт 2.0 есть три части к нему:

NeoVM.
InteropService
DevPack
NeoVm
Это – иллюстрированное представление Нео Виртуальной машины:

Кредит изображения: нео отчет

Как Нео государства Отчета, NeoVM или Нео Виртуальная машина – легкий, VM общего назначения, архитектура которого тесно напоминает JVM и.NET Время выполнения. Это подобно виртуальному центральному процессору, который читает и выполняет инструкции в контракте в последовательности, выполняет управление процессом на основе функциональности операций по инструкции, логических операций и так далее. Это универсально с хорошей скоростью запуска, которая делает его большой окружающей средой, чтобы управлять умными контрактами.

InteropService

InteropService увеличивает полезность умных контрактов. Это позволяет контрактам получать доступ к данным за пределами NeoVM, не идя на компромисс на полной стабильности и эффективности системы.

В настоящее время совместимый сервисный слой обеспечивает некоторую ПЧЕЛУ для доступа к данным цепи цепи умного контракта. Данные, к которым это может получить доступ:

Информация о блоке.
Информация о сделке
Информация о контракте.
Информация об активе
… .among другие.

Это также обеспечивает место для хранения для умных контрактов.

DevPack

DevPack включает языковой компилятор высокого уровня и программное расширение IDE. Так как архитектура NeoVM довольно подобна JVM и.NET Времени выполнения, это позволяет контрактам быть закодированными на других языках. Как Вы можете предположить, это значительно уменьшило время, потраченное разработчиками, чтобы изучить, как создать умные контракты.

Ткань гипербухгалтерской книги

Accor звените к их веб-сайту, “Гипербухгалтерская книга – общедоступное совместное усилие, созданное, чтобы продвинуть поперечную промышленность blockchain технологии. Это – глобальное сотрудничество, принятое Фондом Linux, включая лидеров в финансах, банковском деле, Интернете Вещей, систем поставок, производства и Технологии”.

Возможно, самый интересный проект в семье Гипербухгалтерской книги – Ткань IBM. Вместо единственной blockchain Ткани основа для развития базирующихся решений blockchain с модульной архитектурой.

С Тканью различные компоненты Blockchains, как согласие и услуги членства могут стать Plug and Play. Ткань разработана, чтобы служить основой, с которой предприятия могут соединить свою собственную, отдельную blockchain сеть, которая может быстро измерить больше чем к 1,000 сделок в секунду.

Что такое Ткань и как она работает? Структура осуществлена в Движении. Это сделано для предоставления возможности консорциума blockchains с различными степенями разрешений. Ткань в большой степени полагается на умную систему контракта под названием Chaincode, которым каждый пэр сетей управляет в контейнерах Докера.

Чтобы написать Chaincode, нужно быть сведущим в четырех функциях:

PutState: Создайте новый актив или обновите существующий.

GetState: Восстановите актив.

GetHistoryForKey: Восстановите историю изменений.

DelState: ‘Удалите’ актив.

Ниже приведен пример Chaincode:

//Определите Умную структуру Контракта
напечатайте структуру SmartContract {}

//Определите автомобильную структуру с 4 свойствами.
напечатайте Автомобильную структуру {
Сделайте последовательность ‘json: “сделайте””‘
Образцовая последовательность ‘json: “модель””‘
Цветная последовательность ‘json: “цвет””‘
Последовательность владельца ‘json: “владелец””‘
}

/*
* Призвать метод называют в результате прикладной просьбы управлять Умным Контрактом “”fabcar””
* Приложение запроса также определило конкретную умную функцию контракта, которую назовут с аргументами
*/
func (s *SmartContract) Призывают (прокладка APIstub. ChaincodeStubInterface) sc. Ответ {

//Восстановите требуемую Умную функцию Контракта и аргументы
функция, args: = APIstub. GetFunctionAndParameters ()

//Маршрут соответствующему укладчику функционирует, чтобы взаимодействовать с бухгалтерской книгой соответственно
если функция == “”initLedger”” {
возвратите s.initLedger (APIstub)
} еще, если функция == “”createCar”” {
возвратите s.createCar (APIstub, args)
}

возвратите прокладку. Ошибка (“”Недействительное Умное имя функции Контракта “”.)
}

func (s *SmartContract) initLedger (прокладка APIstub. ChaincodeStubInterface) sc. Ответ {
возвратите прокладку. Успех ([] байт (“”Бухгалтерская книга теперь бежит, успех!””))
}

//Добавьте новый автомобиль к базе данных с полученными аргументами
func (s *SmartContract) createCar (прокладка APIstub. ChaincodeStubInterface, args [] последовательность) sc. Ответ {

если len (args)! = 5 {
возвратите прокладку. Ошибка (“”Неправильное количество аргументов. Ожидание 5 дюймов”)
}

автомобиль вара = Автомобиль {Делает: args[1], Модель: args[2], Цвет: args[3], Владелец: args[4]}
carAsBytes, _: = json. Маршал (автомобиль)

APIstub. PutState (args [0], carAsBytes)

возвратите прокладку. Успех (ноль)
}

главный func () {
//Создайте новый Умный Контракт
допустите ошибку: = прокладка. Начните (новый (SmartContract))

если допускают ошибку! = ноль {
fmt. Printf (“”Ошибка при создании нового Умного Контракта: %s””, допускают ошибку),
}
}

Заключение

Так, там у Вас есть он. Некоторые умные платформы контракта и различные свойства, которые делают их уникальными. Там не “едино”, по крайней мере на данный момент. Вы должны будете выбрать платформу, которой лучшие иски функциональности потребовали для Вашего Dapp.

Читайте также: