Смарт контракты - последняя составная часть блокчейна. Блокчейн часть 6

Я описал основные части чейна, но ничего не сказал про smart контракты.


Мне, честно, не нравится это понятие "smart contract". Оно сбивает с толку и не даёт никакого представления, что же это такое. Это как вместо "молоко" говорить "уникальное супер белое!".


Smart contract - это некий код, который пользователь может использовать, вызвать как часть транзакции. Например, это может быть код, который выдаёт какую-то другую крипту в обмен на, допустим, эфир.


Где этот код? Всё там же - в нашей базе данных. Можно сказать, что у нас Excel из трёх колонок: адрес счёта, сколько денег, код.


Smart contract для базы данных - это такой же пользователь. К нему можно послать деньги, он может отправлять деньги, у него есть адрес финансового счёта. А код хранится тут же в базе данных, как и всё необходимое для выполнения этого кода.


Что за код?

По сути это мог быть любой код на любом языке программирования, который легко контролировать. Но вот это условие про 'легко контролировать' и, я лично так считаю, желание построить всё новое и с нуля родили новые языки программирование, как Solidity. Хотя при желании можно было и JS использовать.


Почему я так говорю. Потому что это не новая штука "smart contracts". Для базы данных это просто то, что называется "хранимая процедура". Некий код, расширяющий возможности базы данных в отношении этих самых данных. Ничего более. И как и хранимые процедуры, solidity имеет доступ только к данным в базе данных, то есть к счетам и всё. Он не может посмотреть, сколько времени на сервере, не может вывести на экран строну, не может принять сетевое сообщение. Только читать и писать в базу данных. Плюс читать данные, которые послал в него пользователь при вызове.


Вот статья из Вики https://ru.wikipedia.org/wiki/Хранимая_процедура : "Например, для этих целей в СУБД Microsoft SQL Server существует язык Transact-SQL, в Oracle — PL/SQL, в InterBase и Firebird — PSQL, в PostgreSQL — PL/pgSQL, PL/Tcl, PL/Perl, PL/Python, в IBM DB2 — SQL/PL (англ.), в Informix — SPL. MySQL достаточно близко следует стандарту SQL:2003, её язык похож на SQL/PL."


Можно добавить всякие Lua в Aerospike и Tarantool.


Баз данных с хранимыми процедурами множество.


Хитрость Ethereum в том, что он сделал их публичными. Любой может добавить свои smart contracts и любой может вызывать чужие.


Это потребовало добавлять безопасность. Часть безопасности обеспечивается тем, что любая команда в solidity (хотя мне бы хотелось говорить об EVM - Ethereum Virtual Machine) стоит сколько-то. Это с одной стороны попытка сделать игру честной и обязать пользователей платить за те ресурсы, которые они используют. С другой стороны защищает от слишком долгих программ.


Код солидити в чистом виде машина Тьюринга: положить на стэк значение, забрать со стэка, передвинуть каретку, передвинуть при условии, прочитать значение, сохранить значение, арифметика, вызвать другой smart contract. Это бОльшая часть инструкций в EVM.


Никакой магии. EVM очень прост. Он сделан простым, чтобы добавить безопасности. Это в каком-то смысле сердце Эфириума. И его стоит защищать. Если оно было бы сложным, то многочисленные ошибки были бы неминуемы. Но он написан так, что пишется с нуля в пределах недели на любом языке программирования. Скорее даже быстрее.


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


Но что сделано, то сделано. Оно работает. Имеет важное свойство в том, что solidity быстро осваивается с любого стартового опыта. Что и дало ему популярность.


Далее у меня к вам вопрос: стоит ли пройти на шаг грубже и взять скомпилированный код Solidity и шаг за шагом его рассмотреть, как работает один smart contract? Там я уже без программирования не обойдусь, но не думаю, что это будет запредельно сложно.


Жду откликов.


Прошлые статьи:

https://pikabu.ru/story/nuzhen_li_rasskaz_kak_rabotayut_krip...

[тут потерялся индекс 4]

Из чего действительно состоит блокчейн. Блокчейн часть 5

Лига Криптовалют

3.8K постов9.3K подписчиков

Добавить пост

Правила сообщества

- Будьте вежливы

- Не используйте реферальные ссылки при обсуждении сторонних ресурсов.

- Никаких ссылок на ТГ и другие соц.сети с вашими сигналами, ботами и инсайдами и тому подобных.

- Если ваш канал аналитический и/или с авторским контентом, то ссылку на ваши соц.сети в посте не запрещена. Только пусть ваш пост будет содержательным.