Разработка смарт контрактов для ICO
Предпосылки создания технологии смарт-контрактов. Основные преимущества и недостатки технологии блокчейн. Выбор языка программирования и описание особенностей языка Solidity от Ethereum. Проведение исследования порядка действий при выпуске криптовалют.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 15.09.2018 |
Размер файла | 811,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
«ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»
Факультет бизнеса и менеджмента
Школа бизнес-информатики
Кафедра бизнес-аналитики
Выпускная квалификационная
по направлению подготовки 38.03.05
Образовательная программа «Бизнес-информатика»
Разработка смарт контрактов для ICO
Сахаров Даниил Андреевич
Оглавление
Введение
Глава 1. Теоретические составляющие технологий смарт-контрактов, блокчейн и криптовалют для ICO
1.1 Предпосылки создания технологии смарт-контрактов
1.2 История смарт-контрактов
1.3 Примеры использования смарт-контрактов
1.4 Недостатки смарт-контрактов
1.5 Блокчейн
1.6 ICO
1.7 Резюмирование главы 1
Глава 2. Выбор языка программирования и описание особенностей языка Solidity от Ethereum
2.1 Выбор языка программирования и ICO
2.2 Особенности Solidity от Etherium
2.3 Оплата за работу
Глава 3. Создание смарт-контракта для ICO
3.1 Постановка задачи
3.2 Подготовка
3.3 Описание смарт-контракта
3.4 Возможности смарт-контракта
3.5 Особенности смарт-контракта
3.6 Написание смарт-контракта
3.7 Результат смарт-контракта
Заключение
Введение
Проблема доверия при заключении договора и трудностей в разрешениях споров послужила причиной изобретения смарт-контрактов. Благодаря созданию специальных платформ, их написание в настоящее время не требует больших временных и трудозатрат. Как следствие, использование смарт-контрактов проникает в жизнь корпораций и людей. Тесная связь блокчейна, смарт-контрактов и криптовалют, в свою очередь, привлекает множество инвесторов и разработчиков. Уже сейчас крупные компании занимаются внедрением технологии блокчейн в свои бизнес-процессы. Данная исследовательская работа будет посвящена изучению этой технологии с последующим написанием собственного смарт-контракта.
Актуальность работы. По состоянию на текущий момент множество крупных сделок заключается с привлечением третьей стороны - юридических компаний, финансовых и бизнес консультантов. смарт-контракты позволят перейти от традиционной системы, основанной на необходимости доверять контрагенту, к автоматизированным транзакциям с невозможностью изменения условий договоренности.
Цель. Разработать смарт-контракт для ICO (Initial Coin Offering) (Momoh O, 2018)
Задачи исследования. Анализ смарт-контрактов в широком смысле этого термина, анализ технологии блокчейн и ее роль в смарт-контрактах, анализ ICO, анализ рынка криптовалют, позволяющих написание смарт-контрактов, создание смарт-контракта на базе криптовалюты, тестирование смарт-контракта.
Методы исследования. Анализ технологий смарт-контрактов и блокчейн, сравнение криптовалют и языков написания смарт-контрактов, написание кода программы, являющейся смарт-контрактом на базе одной из криптовалют.
Структура работы (краткое описание содержания глав).
В первой главе будут подробно рассмотрены теоретические особенности смарт-контрактов для ICO. Сюда включены:
- описание смарт-контрактов как отдельного явления, предпосылок для их создания, их плюсы и минусы
- технологии блокчейн, без которой использование смарт-контрактов невозможно
- роль криптовалют для смарт-контрактов.
Во второй главе будут рассмотрены языки программирования смарт-контрактов, рассмотрены криптовалюты, на базе которых можно запускать смарт-контракты. Также будет указан принцип оплаты за использование возможностей криптовалют.
В третьей главе будет подробно расписан созданный в рамках работы смарт-контракт для ICO.
Глава 1. Теоретические составляющие технологий смарт-контрактов, блокчейн и криптовалют для ICO
Перед созданием непосредственно смарт-контракта для ICO, который будет представлен в 3 главе необходимо провести исследование технологии смарт-контрактов на базе ICO, необходимо сперва ввести определение, что подразумевается под термином “смарт-контракт”. Общепринятое определение говорит, что смарт-контракт - это "компьютерный алгоритм, предназначенный для заключения и поддержания коммерческих контрактов технологии блокчейн" (Bartoletti M., Pompianu L., 2017). Под смарт-контрактом понимается программа, которая запускается в системе блокчейн. Ключевой особенностью которой является невозможность изменения кода программы после запуска программы.
1.1 Предпосылки создания технологии смарт-контрактов
Первопричина появления этой технологии состоит в том, что существующие до сих пор механизмы и инструменты заключения сделок между сторонами несовершенны. В случае, если предмет договора соответствует заявленным требованиям, стороны не имеют друг к другу претензий и за него выплачена полная стоимость, договор можно считать успешно выполненным. Но поскольку в процессе осуществления сделок зачастую возникают непредвиденные, а иногда форс-мажорные обстоятельства, не всегда ясно, на какой из сторон лежит вина, кто должен понести ответственность за убытки и в каком объеме. Также существует проблема гарантии перевода денежных средств за выполнение работ по договору. Во избежание разбирательств, доходящих до судебных тяжб, и неявных, скрытых условий и трактовок в договоре, заключение сделки нередко возлагается на некоторую третью сторону, которую участники сделки воспринимают как независимого судью. Привлечение третьей стороны не только является дорогостоящим выходом, но и зачастую не гарантирует объективность принятия решений. Как правило, эту роль выполняют финансовые и юридические консультанты, которые получают комиссию с суммы договора за его курирование. Это ведёт к новым проблемам, таким, как максимальное использование правил договора в своих интересах, которое может быть расценено другими участниками сделки как мошенничество, хотя с правовой точки зрения это не обязательно будет незаконно. Однако возникает проблема доверия третьей стороне и ее возможной аффилированности с одной из сторон сделки.
Существуют также электронные сервисы, выполняющие роль третьей стороны в сделке. Одной из таких третьих сторон является сервис Kickstarter. Это краудфандинговая компания, которая помогает разработчикам собрать деньги на свой продукт; людям, которые делают пожертвования, за это полагается бесплатный образец продукции, скидка или иной результат работы компании. Однако если предположить, что компания, которая собирала деньги, действовала в мошеннических целях, то она не будет иметь возможности собирать деньги только после проверок и выяснения обстоятельств, а процесс возврата средств займет долгое время из-за необходимости привлечения судебно-правовых институтов. (Kickstarter)
Смарт-контракты помогают решить проблему необходимости привлечения третьей стороны, поскольку после того, как смарт-контракт будет заключён, его невозможно изменить. Таким образом, с самого начала можно учесть все риски и компенсации за каждый из них. Если всё же есть необходимость изменить смарт-контракт, стороны должны заключить новый смарт-контракт - аналог дополнительных соглашений в договорах. Возможность заключать контракты, сразу закрепляя условия договора, с уверенностью, что если одно из них не будет выполнено, то уже все обговоренные условия в контракте будут выполнены в полном объеме, является ключевым принципом, лежащим в основе технологии смарт-контрактов. (Smart Contracts Alliance -- In collaboration with Deloitte Smart Contracts, 2016)
1.2 История смарт-контрактов
Принцип работы смарт-контрактов был разработан 1997 году программистом и математиком Ником Сзабо. По словам создателя, ключевой принцип заключается в том, что работа смарт-контракта схожа с аппаратом по продаже еды. (Smart Contracts Alliance -- In collaboration with Deloitte Smart Contracts, 2016) После того, как деньги внесены в автомат и совершена процедура выбора продукта, сразу же реализуется заданный алгоритм, автомат выдает выбранный товар и возвращает сдачу. Доверие к аппарату возникает вследствие того, что он исполняет набор строгих правил, которые были запрограммированы в него ранее. Отдельно Ник Сзабо отмечал, что стоимость взлома такого аппарата дороже, чем сумма денег внутри него. Это решает вопрос рентабельности, и в дальнейшем мы считаем, что этот аппарат не будет взломан в процессе использования.
1.3 Примеры использования смарт-контрактов
Некоторые примеры использования смарт-контрактов описан в докладе Палаты Цифровой коммерции (Smart Contracts Alliance -- In collaboration with Deloitte Smart Contracts, 2016).
Одной из площадок для применения смарт-контрактов являются логистические цепочки, где все участники цепи со множеством звеньев получают подтверждение от предыдущего звена о выполнении своей работы. Для того, чтобы это было возможно, необходимо установить цифровую подпись выполнения каждого события. Субъектом такого смарт-контракта может являться посылка, ответственность за доставку которой несут все участники цепи, а виновным в утрате или задержки посылки считается та сторона, которая не передала ее следующему звену в течение заданного количества дней. При этом, при считывании трек-номера посылки на входе и на выходе в каждом элементе цепи можно знать наверняка, где именно была совершена потеря.
На Рисунке 1.3.1 указаны текущее состояние логистической поставки продукции и решение, которое может предложить смарт-контракт. В текущей модели поставок, посылка передается по этапам от завода к конечному потребителю. В этой модели используется разделение по очередности на загрузку товара, транзит, разгрузку, загрузку для локального транзита, локальный транзит и новую разгрузку в магазине. При этом, информация о состоянии и нахождении товара посредством RFID - системы автоматического идентифицирования объектов, (Wiki RFID, 2018) и GPS (Wiki GPS, 2018) передается в систему оборота данными между компаниями. Использование смарт-контрактов делает возможным заключение договора, условия которого будут завязаны на данные, передаваемые этими датчиками. В смарт-контракте заранее прописываются значения, которые должны быть получены при автоматическом считывании товара. Таким образом, основываясь на данных, передающихся автоматически, будет исполнен договор.
Рисунок 1.3.1 Логистическая цепь поставок (Smart Contracts Alliance -- In collaboration with Deloitte Smart Contracts, 2016)
Использование смарт-контрактов также имеет почву для развития в сфере страхования. (Smart Contracts Alliance -- In collaboration with Deloitte Smart Contracts, 2016) Для этого необходимо, чтобы договор был заключён по технологии смарт-контракта. В этом контракте заранее будут указаны все действия, которые должны производить стороны в случае наступления страховых случаев. Для полного выполнения смарт-контракта вся информация, которая передается в него и используется им, должна быть независимой и обладать доверием со стороны участников. Таким образом, помимо страхователя и страховщика, в системе появляются электронные потоки данных от ГИБДД, а применительно к автострахованию, выписки из решений судов, касающихся субъекта страхования. В связи с тем, что вышеперечисленные инстанции являются независимыми, их решение принимается всеми странами как объективное. Соответственно, после решения суда или сотрудника ГИБДД страховая компания будет автоматически выплачивать или, напротив, не выплачивать компенсацию. Это поможет почувствовать себя более защищенными как людям, так и самим компаниям, поскольку возрастет доверие к ним. Люди будут скорее использовать услуги страхования, если будут абсолютно уверены в том, что в случае возникновения чрезвычайной ситуации страховая автоматически выплатит им деньги, а не будет затягивать оплату, стараясь решить вопрос в юридическом русле.
Пример принципа работы смарт-контракта для автострахования приведен на Рисунке 1.3.2. В текущей модели, в случае инцидента с застрахованным автомобилем, страхователю необходимо собирать документы об аварии, решения ГИБДД, решения судей, на рассмотрении к которым может попасть дело. Это ведет к потерям во времени, увеличению числа ошибок, связанных с повторением одной работы разными людьми. Помимо этого, страховая компания должны содержать бэк-офис для проверки достоверности передаваемых страхователем данных. В случае с использованием смарт-контракта, информация от государственных структур автоматически попадает в информацию внутри данного контракта. Таким образом, для страховой компании не будет необходимости содержать бэк-офис для проверки документов, страхователь сможет сэкономить время на собирании документов от компетентных структур. Помимо этого, будет проще отслеживать историю водителя (его клиентское поведение, в рамках которого формируется предложение). Комплиментарно, предлагается использование датчиков внутри машины, чтобы улучшить оценку повреждений и вывести ее из субъективно-экспертной в объективно-достоверное состояние.
Рисунок 1.3.2 Заключение страховой сделки (Smart Contracts Alliance -- In collaboration with Deloitte Smart Contracts, 2016)
Помимо использования смарт-контрактов в больших компаниях из финансовых отраслей, они могут быть использованы в повседневной жизни. Так они могут регулировать отношения арендодателя с квартиросъемщиком. В текущем модели отношений квартиросъемщик обязуется раз в некоторое оговоренное количество времени выплачивать денежные средства арендодателю, как правило, ежемесячно. Однако в случае, если квартиросъемщик не выплачивает деньги в срок, арендодатель вынужден обратиться в суд, что затягивает этот процесс еще больше. В качестве альтернативы можно заключить некий смарт-контракт, условием которого будет пополнение кошелька арендодателя каждый месяц на установленную сумму. Если оплата не будет произведена в срок или будет просрочена более чем на определённое количество дней замок в квартиру не будет открываться. Реализация такого смарт-контракта возможна, если замок в квартиру электронный и подключается к сети интернет. Как арендодатель, так и квартиросъемщик в этом случае доверяют замку: арендодатель уверен в том, что если оплата будет просрочена, замок не откроется, а квартиросъемщик уверен, что если деньги внесены, то управляет замком он. Подобный сценарий возможен благодаря внедрению интернета вещей в повседневную жизнь. Таким образом, умные вещи могут являться гарантами выполнения сделок и чем больше умные вещи будут проникать в дома людей, тем больше и качественнее можно будет совершать сделки.
Резюмируя вышеизложенное, для создания полноценного смарт-контракта необходимо выполнение нескольких условий. Во-первых, вся информация, которая поступает в смарт-контракт, должна быть достоверной, то есть полученной из достоверных источников: правительственные решения, официальные данные о котировках акций, курсы валют и прочее. Помимо этого необходимо иметь субъект договора, контроль над которым имеет сам смарт-контракт и действие над которым будет автоматически выполнено по завершении контракта. Это может быть кошелек участника смарт-контракта или же электронный прибор, как в кейсе про умный замок. В-третьих, нужно иметь блокчейн сеть для того, чтобы осуществлялась независимая проверка правильного выполнения действий. Другими словами, всегда должны быть сторонние проверяющие, которые выяснят, было ли произведено то или иное действие. Такими участниками могут быть заинтересованные лица, как в случае цепи поставок, где все участники хранят данные о посылке. Или это могут быть сторонние люди, которые абсолютно не заинтересованы в конкретном результате смарт-контракта.
1.4 Недостатки смарт-контрактов
Говоря о смарт-контрактах, необходимо также указать и на отрицательные стороны этой технологии. Во-первых, смарт-контракты, как и большинство инновационных технологий вызывают недоверие у пользователей и агентов. Поскольку для этой технологии необходима серьезная инфраструктура как в предприятии, которое заинтересовано в внедрении смарт-контрактов, так и доработки со стороны контрагентов, вероятно даже после удачного внедрения в одной области бизнеса, в другой сфере процесс может тормозится. Во-вторых, внесение изменений в запущенный смарт-контракт строго запрещены правилами. Таким образом, для того, чтобы внести новые условия, необходимо изначально учитывать возможность заключения нового смарт-контракта, “поверх” действующего. Так же к этому пункту необходимо добавить, что при запуске смарт-контракта, необходимо прописать все возможные условия его завершения. В противном случае, контракт будет выполняться бесконечно. В-третьих, есть мнение, что третьи стороны, от которых и задумывалось избавиться, не исчезают, а просто меняют свои роли. И в дальнейшем понадобится большое число юристов в сфере IT для сопровождения смарт-контрактов на фазе их разработки. (Grybniak S., 2018)
1.5 Блокчейн
В дальнейшем для рассмотрения особенности смарт-контрактов необходимо ввести понятие блокчейн. Именно эта технология позволила сейчас рассматривать прикладные вопросы использования смарт-контрактов, при том, что сама идея смарт-контрактов была упомянута более 20 лет назад.
Первым прикладным использованием этой технологии считается запуск системы Bitcoin в 2008 году. После успешного запуска проекта Bitcoin многие фирмы начали задумываться над использованием блокчейна для себя, а как следствие и внедрение смарт-контрактов. Достаточно много аналитических статей датированы с 2010 по 2014 годы. Как будет видно в дальнейшем, все технологии: блокчейн, смарт-контракты, ICO, криптовалюты - очень тесно связаны. Возвращаясь к технологии блокчейн, необходимо указать, что именно хранится в этих блоках информации. Для каждого конкретного применения технологии это могут быть свои данные: для криптовалют это данные о транзакциях и состоянии счетов, для цепей поставок, которые были описаны ранее - это информация о товаре, его местонахождении и обязательства поставщиков. Вся эта информация группируются в блоки, которые еще раз рассчитываются. Затем они проверяются другими участниками цепи и в случае, если все участники согласны с результатом, этот блок считается верным и следующий расчет происходит исходя из данных этого блока. В случае, если несколько участников не согласны с результатами полученными в блоке, используется результат, который получен большинством как наиболее верный. Это помогает решить вопрос доверия, особенно в тех случаях, где независимых участников много. По-прежнему существует риск того что группа лиц сможет завладеть более 50 процентами блокчейна и диктовать свои данные. Однако здесь уже используется принцип Ника Сзабо, что стоимость взлома должна быть выше, чем ценность внутри. Именно этот принцип и гарантирует, что информация будет сохранна.
Применение блокчейна
Технология блокчейн уже применяется в некоторых отраслях, таких, как банковский сектор, инвестиции, землевладение. Пример с земельным реестром очень показателен, поскольку на этом рынке достаточно часто бывают спорные ситуации и привлекается государство для его урегулирования, однако, если у всех будет одинаково информация о праве собственности на землю, то таких прецедентов будет гораздо меньше, и как следствие будет гораздо меньше привлекаться государство в решении этих вопросов. Власти Индии одними из первых внедрили технологию блокчейн в землевладельческой сфере и их опыт оказался положительным (Browne R, 2017) . В 2018 году планируется перевод ЕГРН в Москве на технологию блокчейн (ТАСС. 2017). Это показывает, что технология активно используется сейчас и зачастую государство, которое стремится минимизировать риски, использует технологию, которая находится на старте своего развития. Во всех вышеуказанных кейсах целью внедрения системы блокчейн является улучшение прозрачности рынка и по возможности избежание судебных разбирательств в финансовых и бытовых вопросах. Технология блокчейн позволит заключать сделки и договоренности, в которых все участники будут в равном информационном положении.
Основные недостатки технологии блокчейн
Особенности работы технологии блокчейн ведут так же и к слабостям системы (Fauvel W, 2017) :
- Расточительство ресурсов. Каждый узел в цепи запускает по расписанию расчет блока для того чтобы прийти к консенсусу. Это является необходимо для высокого уровня отказоустойчивости и приводит к минимальному времени простоя, однако несет колоссальные затраты по времени и электроэнергии. На текущий момент, разрабатываются новые методы для снижения затрат на подтверждения верности блока, такие как “Proof of ...” (“Доказательство”)
- Скорость и стоимость работы. При запуске новой сети блокчейн необходимо сразу достаточно большое количество узлов. В противном случае, произойдет серьезное увеличение вознаграждение за обеспечение работы в модели, где спрос превышает предложение. Это же приведет к тому, что будут рассчитываться самые прибыльные вычисления. Что в свою очередь может привести к тому, что не самые прибыльные вычисления будут “откладываться” и копиться, не выполняясь.
- Размер блока. Поскольку каждый новый блок добавляется в систему, не стирая старые данные возникают следующие сценарии. Первый - узел системы не хранит всю информацию, это облегчит данные необходимые для хранения, но вызовет осложнения в процессе прихождения к консенсусу. Второй - все данные хранятся в каждом из узлов, что приведет к высокому порогу вхождения в данную блокчейн-систему.
Основные преимущества технологии блокчейн
- Распределенность. Технология блокчейн позволяет снизить нагрузку на один источник, распределив данные по нескольким. При этом порог вхождения в систему может быть невысок, что позволит даже обычным пользователям вносить скромную лепту в вычислительные процессы.
- Надежность. В случае, если один из участников сделки может дописать некоторое значение, что его прибыль увеличится, реальная стоимость такого договора близка к нулю. Блокчейн, базово, позволяет всем участникам сделки перепроверять информацию и в случае обмана, сразу выявлять его.
- Неизменность. В случае, если какая то информация попадает в блокчейн, она оттуда не может быть стерта. (Конечно в случае, если все участники цепи пришли к консенсусу, о достоверности). Это свойство помогает как для отслеживания транзакций, так и для проверки результата работ смарт-контрактов.
- Децентрализованность. Отдельно от свойства распределенности необходимо указать плюсы от отсутствия монополии на запись/хранение/использования информации. Система масштабируема без серьезных инвестиций, и за счет уменьшения посредников снижает стоимость информации. (Fauvel W, 2017)
1.6 ICO
Аббревиатура ICO расшифровывается как Initial coin offering. Дословный перевод термина гласит: “первичное предложение монет”. Это является формой привлечение инвестиций за счет продажи конечного числа монет криптовалюты. ICO активно используется компаниями для привлечения дополнительных инвестиций. При этом, инвесторы не становятся владельцами акций компании и на этом рынке отсутствует государственное регулирование. Для инвесторов главная мотивация вкладываться в новый проект - надежда на успех после запуска.
Порядок действий при выпуске ICO обычно следующий:
1. Запуск Pre-ICO - предварительная продажа единиц новой валюты, обычно по заниженной цене, относительно той, которая будет в первый момент продажи ICO
2. Запуск ICO - непосредственный запуск первичного предложения монет. Закупкой в основном занимаются инвесторы, которые планируют перепродать валюту после увеличения ее стоимости через некоторое время.
В широком смысле этого термина любую криптовалюту отличной от Bitcoin можно считать ICO. Во-первых, криптовалюты попадают под определение компаний, главный продукт которых является сами токены новой криптовалюты. Во-вторых, при запуске ICO, выпускаются новые токены, которые и являются валютой новой криптовалюты. В-третьих, основные вложения в покупку токенов является инвестиционной деятельностью. (Momoh O, 2018)
Примером проекта ICO можно назвать Ethereum, который в 2014 году после запуска собрал 18 миллионов долларов инвестиций в биткоинах (единица криптовалюты Bitcoin) по цене 0,4 доллара за один эфир. В 2016 году капитализация Ethereum превысила 1 миллиард долларов.
Для того, чтобы объект договора проверялся большим количеством людей и был выполнен верно, смарт-контракты пишутся на базе криптовалют, поскольку количество майнеров, обслуживающих крупную криптовалюту, порой достигает сотен тысяч человек. Криптовалюта почти полностью построена на технологии блокчейн и выставлена таким образом, что проверка транзакций на достоверность улучшается пропорционально количеству людей, обслуживающих криптовалюту. Для того, чтобы “обмануть” криптовалюту, необходимо иметь контроль более чем над половиной всех мощностей этой криптовалюты.
Создатели криптовалют же заинтересованы в том, чтобы достойно платить большому количеству майнеров, так как это способствует устойчивости криптовалюты и доверию к ней, поскольку чем больше майнеров ее обслуживают, тем тяжелее набрать критическую массу голосов и начать манипулировать результатами транзакций. В текущем состоянии криптовалюты выплачивает определенные деньги майнерам за обслуживание своей сети. Доходы за выполнение смарт-контрактов являются дополнительными и делают криптовалюту более надежной, поскольку даже если вознаграждения за нахождение хэш функции будет недостаточно для того, чтобы большое количество людей обслуживало эту блокчейн сеть, дополнительные деньги от смарт-контрактов, распределенные между участниками-майнерами, составляют еще одну мотивацию. Сами же майнеры заинтересованы в том, чтобы получать как можно больше денег за результаты своего труда и при наличии устраивающей цены будут выполнять смарт-контракты.
1.7 Резюмирование главы 1
Если рассматривать краудфандинг на примере смарт-контрактов, практическая реализация этой задачи может выглядеть следующим образом: люди переводят деньги компании, выпускающей ICO. Если у инвесторов есть заинтересованность в проекте, то таким образом можно собрать большую сумму денег. При этом сама фирма не эмитирует выпуск акций.
Для реализации данного процесса необходимо иметь крупную блокчейн сеть. Такая сеть есть и хорошо функционирует у крупных криптовалют. В силу привлечения инвестиций и клиентов, это также выгодно и криптовалютам.
Сами смарт-контракты для ICO представляют собой программу, которая сопоставляет 1 единицу новой монеты, которая будет представлена, определенному количеству действующей криптовалюты. При этом в необходимом и достаточном случае, указывается начальная цена за единицу новой валюты и количество выпущенных монет.
Глава 2. Выбор языка программирования и описание особенностей языка Solidity от Ethereum
2.1 Выбор языка программирования и ICO
Перед описанием вариантов языков для написания смарт-контрактов необходимо ввести новое определение - полнота по тьюрингу. Языки, полные по тьюрингу, могут обеспечивать написание любой функции. Большинство используемых языков тьюринг-полные, в этот список входят языки наподобие C#, C++, Python. Также тьюринг-полными являются нормальный алгоритм Маркова и сеть Петри. Примером неполных языков являются “конечные автоматы примитивно рекурсивные функции” Эта характеристика будет использоваться в работе для того, чтобы выбрать наиболее подходящий язык. Основным языком для написание смарт-контрактов сейчас является Solidity от блокчейна Etherium. Именно это считается одной из причин популярности этой криптовалюты. Существует мнение экспертов (SINGH N.I.T.I.S.H, 2018) , что Etherium перегонит по стоимости Bitcoin именно за счёт смарт-контрактов, которые обеспечивают постоянный заработок для майнеров. В таблице 2.1 приведено сравнение других языков для написания смарт-контрактов. Как видно из таблицы, язык программирования, основным на биткоине, не является тьюринг-полным и, как следствие, имеет серьезные ограничения, которые замедляют развитие смарт-контрактов на нём.
Таблица 2.1 Сравнение языков программирования
Язык |
Преимущества |
Недостатки |
|
Script |
Основан на платформе Bitcoin, что обеспечивает стабильность и безопасность |
Не тьюринг-полный |
|
Automated Transactions (AT) |
Тьюринг-полный язык. |
Blockchain должен будет поддерживать спецификации AT для того, чтобы пользователь мог создавать интеллектуальные контракты в AT. |
|
NXT |
Простой язык с распространенными вариантами использования, предусмотренными в шаблонах. |
Содержит ограниченное количество шаблонов. Невозможно разработать контракты по собственному желанию. |
|
Chain |
1) Блокчейн платформа для предприятий 2) Обеспечивает программирование на известных языках разработчика, таких как Java, Ruby и Node. |
Не публичная блокчейн платформа. Доступна только для компаний / сетей, которые реализуют блокчейн цепочку. |
На рисунке 2.1 указаны капитализация 5 крупнейших криптовалют на 12 мая 2018 года (Cryptocurrency Market Capitalizations, 2018). Не вошедшие в этот список криптовалюты не имеют в капитализации 10 миллиардов долларов. Как видно из рисунка 2.1, Bitcoin и Ethereum сильно дороже других криптовалют. Исходя из прямой корреляции между ценой криптовалюты и ее надежности, то стоит выбирать криптовалюты из топа по капитализации. Под надежностью стоит понимать стоимость взлома криптовалюты. Если говорить о мошеннических схемах с обманом, то самые популярный криптовалюты лучше защищены от этого за счет большого количества пользователей, которые проверяют блоки.
Рисунок 2.1 Капитализация криптовалют (Cryptocurrency Market Capitalizations, 2018)
2.2 Особенности Solidity от Etherium
Язык Solidity, как было отмечено раньше, является самым популярным для написания смарт-контрактов. Созданный в 2014 году Гэйвином Вудом, предметно-ориентированный язык для написания смарт-контрактов. Во многом схож с JavaScript. В качестве среды разработки предполагается использование веб версии по адресу: http://remix.ethereum.org/ (Solidity Remix Solidity, 2018) или внутри десктопного приложения Etherium Wallet. На май 2018 года, имеет 3 тестовых среды для запуска смарт-контрактов и возможножность запускать код на локальном сервере.
- Ropsten Test Network (является первой тестовой средой. Большая часть обучающего контента находится в этой сети.);
- Rinkeby Test Network;
- Kovan Test Network (не поддерживается в приложении Etherium Wallet).
Для выполнения смарт-контракта, на счете необходимо достаточное количество “тестовых” Эфириумов на транзакционные издержки. Получение “тестовых” Эфириумов возможно за счет процесса майнинга - выполнения расчета хэш-функций тестового блокчейна. Альтернативным способом получения денег для запуска смарт-контракта может являться автоматическое пожертвование для разработчиков. Например: (Ethernet Faucet, 2018) в котором раз в 7 секунд одному из запросивших в процессе живой очереди переводится 1 Эфириум на тестовый счет.
Изменения относительно JavaScript в основном связаны с упрощением функций связанных с транзакциями, просмотром счетов и прочее, что делает язык предметно ориентированным. Solidity также является объектно ориентированным языком. смарт контракт блокчейн программирование
Бывший коммерческий директор Ethereum Стефан Туал 19 марта 2018 года отметил главные недостатки языка Solidity. По его мнению, по причине молодости этого языка и небольшого размера команды разработчиков документация, поддержка пользователей и т. д. сильно ограничена на текущий момент. Также Туал отметил, что невозможно утверждать о правильности работы смарт-контракта, пока он не будет запущен. Сейчас производится разработка алгоритма для определения частей кода, которые потенциально могут дать сбой. А как стоит еще раз отметить, смарт-контракт нельзя изменить после того, как он информация о нем попала в блокчейн. Однако все эти проблемы языка Solidity встречаются и в других языках для написания смарт-контрактах по заявлению Туала.(Tual S., 2018)
2.3 Оплата за работу
После выбора языка программирования необходимо указать, каким именно образом будет происходить оплата за выполнение смарт-контракта. В среде Etherium существует собственная валюта для подобных транзакции - gas. Данная единица была придумана для того, чтобы уберечь майнеров от колебаний курса эфириума, поскольку цена за газ является ценой за работу. За gas можно выполнять различные функции в блокчейне; расходование gas пропорционально сложности работы. Таким образом простое сложение двух чисел будет стоить дешевле, чем добавление информации в блокчейн. Принцип работы достаточно прост: человек, который хочет, чтобы его контракт выполнили, указывает, сколько топлива необходимо для выполнения контракта и цену за единицу топлива. Майнеры выполняют поочередно смарт-контракты в порядке возрастания цены за единицу топлива. Таким образом, в смарт-контракте изначально указывается количество gas, которое будет потрачено на выполнение и стоимость за единицу gas. При условии, что в контракте будет выставлено 100 единиц газа, а на деле будет потрачено 50, со счёта покупатели услуг будут списаны только 50 единиц gas. Это также помогает не попасть в бесконечный цикл для смарт-контракта, который написан с ошибками и, как следствие не может быть выполнен. Помимо этого, сами майнеры уверены, что они не будут трудиться бесплатно. Это может показаться несколько странным, поскольку даже без результата майнеры получат свои деньги, однако майнеры дают в аренду свои производительные мощности на вычисление функций. Даже если функция не принесла результат, производственные мощности майнера были задействованы и он должен получить за это деньги.
В смарт-контракте любая транзакция состоит из 4 частей: первая часть - это адрес получателя, второе - сумма перевода, третья - предельная величина газа на выполнение транзакции и четвертая - дополнительные данные. Ниже приведена таблица 2.3 с рекомендованными ценами за газ в зависимости от времени на выполнение данного смарт-контракта.
Таблица 2.3 Стоимость единицы газа на 10.05.2018
Speed |
Gas Price (gwei) |
|
SafeLow (<30m) |
4 |
|
Standard (<5m) |
12 |
|
Fast (<2m) |
13 |
Цены указаны в gwei, что соответствует 0,000000001 от 1 Eth, эта единица была создана для удобства расчетов внутри блокчейна.
На конец апреля приблизительная стоимость 1 доллара равняется полутора миллионам gwei.
Стоимость одного перевода оценивается в 21000 gwei, что равняется примерно полуторам центам долларов.
Глава 3. Создание смарт-контракта для ICO
В рамках практической части было решено написать собственный смарт-контракт на базе языка Solidity и запустить его в тестовой среде эфириум. В рамках постановки задачи были оценены такие характеристики, как дороговизна запуска этого смарт-контракта необходимой инфраструктуры и результат от его действий. Более дешевым вариантом является использование данных, которые уже находятся в системе блокчейн. Было решено сделать лотерею.
Для решения этой задачи был написан смарт-контракт, который впоследствии был запущен. Результатом данной работы является создание нового токена Sakharov(SHR), который представляет собой ICO. Комплиментарно к стандартным правилам обмена, добавляется использование лотереи, таким образом, чтобы каждый второй покупатель токена Sakharov получает призовые токены.
3.1 Постановка задачи
Как уже было указано, было решено сделать смарт-контракт для ICO с встроенной лотерей. Правила обменного курса должны быть установлены в момент запуска, общее количество выпущенных токенов. Необходима возможность любого человека со счетом на Эфириуме и возможностью производить транзакции, участвовать в покупке новой валюты. Лотерейная часть смарт-контракта должна производить разовые выплаты каждому N-ому участнику лотереи. Участие в лотерее определяется как покупка новых токенов на сумму, превышающую установленный порог в программе.
3.2 Подготовка
Для написания смарт-контракта было установлено программное обеспечение EthereumWallet (Рисунок 3.2.1).
Рисунок 3.2.1 Приложение EthereumWallet
Это официальный клиент блокчейн сети Ethereum. В рамках написания смарт-контрактов, приложение работало нестабильно. Информация о состоянии счета не обновлялась своевременно. Награда за майнинг в тестовой среде не начислялась. Помимо этого, не всегда удавалось сменить рабочую сеть без переустановки приложения. На текущий момент так же присутствуют проблемы с отображением средств на счете: указывается эквивалент в долларах, при использовании символа валюты в Ethereum. Самой главной из проблем является серьезные сбои связанные с запуском контракта. А именно: часто контракт не отображается среди информации в блоках, полученных после запуска контракта.
Ввиду подобных недоработок десктопной версии, было решено использовать веб версию Remix, доступную по адресу http://remix.ethereum.org . Помимо этого для более удобной работы использовалось расширение для браузера MetaMask (Рисунок 3.2.2). В левом верхнем углу производится выбор сети, по нажатию кнопки Send, можно отправить деньги на адрес получателя, В поле Sent внизу приложения указываются все переводы с этого счета на другие.
Рисунок 3.2.2 Расширение MetaMask
Это расширение позволяет быстро создать счет в Ethereum, переключаться между счетами на разных сетях. При использовании этого расширения на сайте Remix, автоматически заполняются такие поля как номера счета автора, тип сети.
3.3 Описание смарт-контракта
Для того, чтобы выпустить собственный токен, необходимо написать смарт-контракт, который будет высылать выпущенные токены в обмен на криптовалюту, в данном случае - Ethereum. В рамках работы был написан смарт-контракт, выпускающий токен Sakharov(SHR). Курс обмена созданного токена равен 5000 SHR за 1 ETH. При инициализации контракта владельцу контракта автоматически выплачивается 1.000.000 SHR, при этом с его счета снимается только плата за выполнение транзакции создания контракта. Эта сумма - первоначальный пакет акций. Данное решение позволяет при выпуске токена сразу перевести на счет его автора “контрольный пакет” токенов, которым он впоследствии сможет распоряжаться. В противном случае владельцу пришлось бы за них платить и, помимо того, тем самым уменьшить общее количество выпускаемых токенов и, как следствие, свою прибыль.
Также для дополнительной мотивации людей спонсировать проект было решено добавить лотерею, в которой можно выиграть заданное заранее количество токенов, сделав пожертвование больше определенной суммы. В рамках постановки задачи, для упрощения тестирования, было решено ограничиться количеством участников каждого розыгрыша - 2, призовой фонд - 1000 токенов, минимальное пожертвование для участия в лотерее - 0.05 ETH. Таким образом, для каждых двух покупателей токенов, которые пожертвовали более 0.05 ETH, разыгрывался призовой фонд.
3.4 Возможности смарт-контракта
Основные возможности смарт-контракта заключаются в:
- Возможность участия в лотерее при покупке токенов на сумму, большую или равную 0.05 ETH;
- Вся информация по платежам хранится в блокчейне и доступна онлайн в тестовой среде Ropsten, на которой запускался смарт-контракт;
- Возможность перевода собранных средств на счет владельца;
- Возможность изменить владельца смарт-контракта;
- Возможность переводить токены от их обладателя другому аккаунту;
3.5 Особенности смарт-контракта
Одна из основных особенностей написания смарт-контракта заключается в том, что можно использовать находящиеся внутри блокчейна данные. Таким образом, привычный в программировании выбор случайного числа посредством запуска функции невозможен(Hovsepyan N, 2018). Однако генерация случайного числа необходима для выбора победителя проводимой лотереи среди покупателей. В рамках написания этого контракта, было решено брать значение хэш предыдущего блока за случайное число. Хэш - характеристика каждого блока. Новый блок появляется приблизительно раз в 7 секунд. Заранее просчитать хэш невозможно, поскольку хэш отражает транзакции и смарт-контракты, которые были выполнены в данном блоке. Пример значения хэш приведен ниже “0xb0f6665d692e255449e026796d9091024e3f94b65be0cfda2e5e38f377a2414e”.
Номер победителя лотереи определяется как остаток от деления случайного числа на количество участников.
3.6 Написание смарт-контракта
На рисунке 3.6.1 указан вид панели платформы Remix, где происходит запуск смарт-контракта. После компиляции кода, появляется выбор проекта, который будет запущен, в данном случае это программа SakharovCrowdsale. После нажатия кнопки “Deploy” смарт-контракт запускается.
Розовые и синие кнопки внизу панели соответствуют функциям и переменным контракта после его запуска. Розовые кнопки - функции, синие - переменные. Ниже приведено подробное описание переменных и функций смарт-контракта:
- Функция fallback запускается по умолчанию при выполнении смарт-контракта - в момент, когда желающий приобрести токены переводит на счет смарт-контракта сумму в ETH. В ней прописаны:
- курс обмена Ethereum на токены,
- проверка, не превышает ли количество запрашиваемых токенов их общее количество
- перевод нужного количества токенов по заданному курсу на счет покупателя
- Функция changeOwner доступна только владельцу смарт-контракта и позволяет передать права на владение другому аккаунту. Для этого необходимо ввести хэш-адрес нового владельца и запустить функцию. При этом сам владелец лишается администраторских прав.
- Функция killMe лишает смарт-контракта такого понятия, как владелец. Данную функцию может выполнить только сам владелец.
- Функция transfer позволяет переводить токены от их обладателя другому аккаунту.
- Функция withdraw переводит баланс смарт-контракта в Etherium на счет его владельца
- Переменная balanceOf показывает баланс токенов заданного аккаунта
- Переменные decimals, name, standard, symbol - это параметры самого выпускаемого токена
- Переменная owner показывает адрес текущего владельца смарт-контракта
- Переменная participants - массив, содержащий всех текущих участников лотереи
- Переменная participantLimit - лимит участников лотереи
- Переменная ticketPrice - минимальный порог пожертвования для участия в лотерее
- Переменная totalSupply обозначает общее количество токенов которое может выпустить смарт-контракт. В данном решении это 21000000 токенов.
- После запуска смарт-контракта (нажатия на кнопку Deploy) появляется новое окно, запускаемое расширением MetaMask (Рисунок 3.6.2). В этом окне производится оплата смарт-контракта. Номер аккаунта используется по умолчанию аккаунтом, в который был произведен вход в расширении. Gas Limit - максимально допустимое количество газа для запуска контракта рассчитывается автоматически. Необходимо указать стоимость за единицу газа. Для ускоренного выполнения выставляется цена выше рыночной. Стоимость газа и соответствие скорости выполнения были указаны ранее в Таблице 2.3
Рисунок 3.6.1 Панель смарт-контракта на платформе Remix
После подтверждения, средства на запуск контракта автоматически списываются со счета и контракт появлятся в системе блокчейн.
После запуска смарт-контракта информация о нем попала в блок и стала доступна на платформе Etherscan. Контракту был присвоен хэш-адрес 0x5fe3f91b1edb4fdbe7a984e11c2bad945860e925. На рисунке 3.6.3 показано, как выглядит страница контракта. На странице указаны следующие данные смарт-контракта:
- Значение Balance указывает баланс смарт-контракта: те средства которые лежат на счете.
- Значение Transactions указывает количество транзакций. Создание смарт-контракта не считается транзакцией и выносится в отдельное действие внутри каждого блока.
Рисунок 3.6.2 Подтверждение транзакции
- Значение Token Contract указывает, какой токен выпускает смарт-контракт. В данном случае это Sakharov(SHR), который был описан ранее.
- На вкладке Transactions перечисляются входящие транзакции и события создания и вызовов функций смарт-контрактов с указанием хэш, номера блока, датой, отправителем, получателем и значением передаваемой величины.
Рисунок 3.6.3 Страница созданного смарт-контракта на Etherscan
Первая транзакция с адресатом “Contract Creation” - момент создания контракта. При этом плата за эту операцию не взимается, только комиссия за мощности сети (TxFee). Как видно на Рисунке 3.6.4, после запуска смарт-контракта на счет владельца были переведены 1000000 токенов, а отправившему 0.1 Ether аккаунту - переведены 500 токенов и 0.2 Ether - 1000 токенов. Также первому покупателю в случайном порядке был выплачен призовой фонд - 1000 токенов. Это свидетельствует о правильном выполнении заложенной логики смарт-контракта.
Рисунок 3.6.4 Отправленные смарт-контрактом токены
После получения токенов в обмен на Ethereum в окне MetaMask появилась информация о балансе в токенах SHR (Рисунок 3.6.5).
Рисунок 3.6.5 Информация о балансе аккаунта
Также на платформе Etherscan появилась информация о самом выпущенном токене SHR (Рисунок 3.6.6). На ней доступна информация об общем количестве токенов, количестве его владельцев и количестве трансферов токена. Ниже на странице в таблице приведены все переводы и транзакции, выпущенные с данным токеном.
Рисунок 3.6.6 Страница созданного токена на Etherscan
Во складке Token Holders приведены все владельцы токена, включая сам смарт-контракт, с указанием их долей (Рисунок 3.6.7). Как видно из рисунка, владелец транзакции обладает 4,7% токенов, из которых 1.000.000 был выдан ему при инициализации смарт-контракта, а 1500 токенов - в обмен на 0.3
1 ETH и после выигрыша.
Рисунок 3.6.7 Владельцы выпущенного токена
3.7 Результат смарт-контракта
Написанный смарт-контракт полностью удовлетворяет логике поставленной при создании задачи. После перевода Etherium на счет смарт-контракта аккаунту возвращается количество токенов SHR, рассчитанное по заданному курсу. Каждый второй, кто пожертвовал сумму, более 0.05 ETH выигрывает в лотерее 1000 токенов.
Данное решение является прикладным решением выпуска новых токенов для компаний как способ прозрачного и простого привлечения инвестиций. Комплиментарные выплаты должны привлечь дополнительный интерес к выпущенным токенам как способ поощрения покупок валюты выше определенного количества.
Заключение
Подводя итог, необходимо отметить, что технология смарт-контрактов быстро развивается в различных сферах. Возможность заключения сделок без участия посредников должна заинтересовать бизнес. Сами смарт-контракты для ICO помогут фирмам с дополнительными инвестициями. Проекты стоимостью в десятки миллионов долларов собирают необходимую сумму в течение считанных минут, часов или дней. Однако для существования смарт-контракты для ICO необходима большая блокчейн платформа, которую предоставляют криптовалюты. Основным принципом выбора криптовалют как базы для смарт-контрактов можно назвать следующие 2 причины:
- Для криптовалюты необходимо поддерживать большую блокчейн сеть, чтобы стоимость обмана сети была слишком большой. Это гарантирует правильное исполнение работы смарт-контракта
- Для смарт-контрактов, используемых при ICO, необходима привязка к существующим криптовалютам, чтобы быстро и удобно привлекать средства. Возможность писать смарт-контракты на базе криптовалюты существенно упрощает работу.
Криптовалютам, в свою очередь, выгодно поддерживать наличие смарт-контрактов, как дополнительные инвестиции, которые получают майнеры за обслуживание действий этих программ. Увеличение числа майнеров и удержание старых способствует увеличению стабильности работы криптовалюты.
Программа, созданная в рамках данной работы, сочетает в себе как стандартные функции ICO - покупки единиц новой валюты за старую, так и дополнительные, в рамках привлечения инвесторов.
Размещено на Allbest.ru
...Подобные документы
Общие характеристики смарт-карт. Архитектура микросхемы: компоновка элементов микрокомпьютера смарт-карты, размещение процессора, памяти, периферийных модулей, блока ввода-вывода. Комплексный подход к обеспечению информационной безопасности смарт-карт.
курсовая работа [423,9 K], добавлен 26.11.2013Характеристика организации обработки информации в информационной системе управления. Программная реализация и алгоритм решения комплекса задач по внедрению смарт-карт. Анализ и оценка эффективности информационных технологий управления документооборотом.
дипломная работа [2,3 M], добавлен 05.07.2010История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.
отчет по практике [700,5 K], добавлен 24.11.2014Логические конструкции в системе программирования Паскаль. Команды языка программирования, использование функций, процедур. Постановка и решение задач механики в среде системы Паскаль. Задачи статики, кинематики, динамики решаемые с помощью языка Паскаль.
курсовая работа [290,9 K], добавлен 05.12.2008Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.
курсовая работа [738,1 K], добавлен 17.05.2010Сравнение языка Php с другими языками программирования web-приложений. Язык разметки гипертекстовых страниц Html. Технология Macromedia Flash, её преимущества и недостатки. Этапы создания флеш-сайта, руководство пользователя и листинг программы.
дипломная работа [2,3 M], добавлен 04.10.2013Портал государственных услуг как основной компонент системы электронного правительства для граждан в Российской Федерации. Хранение данных в распределенном реестре - одно из важнейших преимуществ информационно-коммуникационной технологии блокчейн.
курсовая работа [155,9 K], добавлен 03.07.2017Выбор технологии, языка и среды программирования. Анализ процесса обработки информации и выбор структур данных для ее хранения, разработка основных алгоритмов. Проектирование интерфейса пользователя. Выбор стратегии тестирования и разработка тестов.
курсовая работа [332,3 K], добавлен 09.12.2014Рассмотрение теории и технологии работы со средой программирования Delphi. Описание Описание интерфейса программы, структуры данных, генерации точек. Разработка задания по выявлению всех квадратов, которые могут быть образованы точками на плоскости.
реферат [21,0 K], добавлен 13.01.2015Понятие и классификация информационных технологий. Обзор основных этапов развития Интернет-технологий; современные реалии. Цифровое гражданство: основы ИКТ-компетентности. Особенности информатизации учебного процесса. Описание идей смарт-образования.
реферат [550,5 K], добавлен 23.02.2016Разработка автоматизированной системы анализа исполнения государственных контрактов и договоров отдела информатизации Управления Федеральной службы судебных приставов. Технология создания программных средств и баз данных. Безопасность приложения.
дипломная работа [1,2 M], добавлен 11.04.2012Понятие и специфические особенности языка программирования Си, история его создания. Интегрированная система Borland C. Процесс программирования с помощью данного языка. Графические примитивы в языках программирования. Преобразования на плоскости.
курс лекций [782,2 K], добавлен 04.10.2011Анализ платформы GATE и ее инструмента для аннотирования текста. Обзор существующих редакторов для визуальных языков и языка JAPE, их возможности, преимущества и недостатки. Проектирование визуальных конструкций на основе языка программирования JAPE.
дипломная работа [770,5 K], добавлен 08.02.2017Основные теоретические положения объектно–ориентированной технологии программирования. Характеристика языка и словарь моделирования UML. Представление управления моделью. Построение диаграммы классов и описание функционирования предметной области.
курсовая работа [859,4 K], добавлен 11.05.2015Стандартизированный процедурный язык программирования. Создание системного программного обеспечения и прикладных программ. Особенности языка Си, его основные недостатки. Передача параметров в функцию по значению. Стандартная библиотека языка Си.
презентация [396,3 K], добавлен 12.11.2012Инструментальные средства и технологии. Разработка интерактивных решений. Преимущества WPF, как языка программирования. Разработка автоматизированной информационной системы. Метод сопряженных градиентов. Переход между шаблонами в ходе презентации.
отчет по практике [493,0 K], добавлен 10.06.2013Разработка программного модуля, позволяющего создать с помощью шаблона класса "бинарное дерево" картотеку абонентов, содержащую сведенья о телефонах и их владельцах. Выбор технологии, языка и среды программирования. Выбор стратегии тестирования программы.
курсовая работа [1,1 M], добавлен 11.12.2010Перспективы развития компьютерного обучения. Предпосылки создания автоматизированной обучающей системы. Выбор языка программирования и средств создания. Разработка и создание диалоговых окон. Ротор гидронасоса в разрезе. Операционные системы и браузеры.
дипломная работа [3,0 M], добавлен 12.12.2011Постановка задачи и математическое описание ее решения. Назначение программного обеспечения. Описание принятых идентификаторов. Выбор языка программирования и написание программы на входном языке. Методика отладки программы и проведение ее тестирования.
курсовая работа [96,1 K], добавлен 25.06.2013