Smart Contracts - где в нем контракт?

Я новичок в смарт-контрактах. Когда я увидел пример Smart Contracts, я понял, что это всего лишь фрагмент кода, а не контракты.

Например function sendCoin(address receiver, uint amount) это метод, определенный в смарт-контракте, который берет адрес получателя и сумму, чтобы отправить монеты получателю

Но контракт не о том, как отправить монеты, а о том, сколько нужно отправить. Например, если материал доставлен вовремя, произведите полную оплату, в противном случае взимайте штраф в размере 10% за каждую неделю задержки.

Насколько я понимаю, вызов - где написаны эти правила if-then (представляющий контракт) - находится вне умного контракта.

Правильно ли мое понимание? Термин "Умный контракт" вводит в заблуждение?

Реальные контракты все еще закодированы вне цепочки блоков в приложении, запускающем эти функции? Если да, то почему умными контрактами нельзя манипулировать, приложения все равно могут поставить под угрозу контракт - например. не платя в соответствии с условиями контракта.

4 ответа

Я не юрист, но да, я считаю, что вы в целом правы. "Умные контракты" в смысле Ethereum не заменяют юридические контракты, по крайней мере, ни в какой юрисдикции, о которой я знаю, как чисто юридический вопрос. Если вы хотите заключить контракт с кем-то, вы все равно захотите обратиться к настоящему юристу по мясному пространству и подписать настоящий договор по мясному пространству.

С чисто технической точки зрения, даже если вы попытаетесь определить контракт на мясное пространство исключительно на основе контракта Ethereum, вы столкнетесь с трудностью, заключающейся в том, что контракт Ethereum может действовать только на информацию, которая находится в блокчейне. В качестве простого примера, скажем, вы хотели заключить простейший договор страхования от наводнения, в котором вы платите некоторую сумму авансом, и если в течение следующих 10 лет в вашем почтовом индексе будет наводнение, вы можете подать иск и получить $ х. Это оставляет в стороне все грязные детали того, что именно было повреждено и так далее, но нам все еще нужны некоторые средства, чтобы определить, был ли наводнение или нет.

Вы можете сказать: "Но это просто! Конечно, правительство публикует такие данные, и мы можем просто указать в контракте, что мы считаем данные правительства, а не кого-либо еще". Итак, правительство публикует данные, но они не публикуют их в цепочке блоков Эфириума.

"О, хорошо, мы можем просто опубликовать данные в блокчейне. Легко!" Кто такие "мы"? Тот, кому вы доверяете публиковать правительственные данные, может по сути урегулировать вашу ставку так, как хочет. Страховая компания не допустит, чтобы это были вы, потому что вы можете сразу же опубликовать сообщение "да, есть флуд" и получить бесплатные деньги. Точно так же вы не хотите доверять им это, потому что, если когда-либо случится потоп, они могут просто отклонить ваше требование таким же образом.

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

Теперь мы уже установили, что и вы, и страховая компания доверяют правительству (NOAA или кому-либо еще) сделать этот звонок. Если это так, вы уже выбрали оракула: правительство. Если вы можете каким-то образом убедить NOAA выпустить их отчеты непосредственно в цепочку блоков, или даже с помощью какой-либо сигнатуры с закрытым ключом, которую можно проверить в цепочке блоков, то вы решили проблему. В реальном мире почти нет таких доверенных оракулов, как правительственные учреждения, по крайней мере, пока.

Smart Contract - это просто кусок кода, который выполняется на блокчейне. То, что вы увидите, - это некоторые функции, и разработчик, который разработал код, написал бы логику внутри функций.

Большинство Smart Contracts опубликовано в некоторых репозиториях для справедливости логики кода, и вы также можете увидеть код.

Смарт-контрактами нельзя манипулировать, так как после его написания он остается в блокчейне, и благодаря свойству блокчейна данные не могут быть изменены до тех пор, пока хакеры не получат 51% доступа к сети.

После того, как данные были записаны в блокчейн, никто, даже системный администратор, не сможет их изменить. Это дает преимущества для аудита. Как поставщик данных вы можете доказать, что ваши данные не были изменены, а как получатель данных вы можете быть уверены, что данные не были изменены. Эти преимущества полезны для баз данных финансовых транзакций. Неизменность относительно. Например, если я отправлю электронное письмо большому списку друзей, эти данные будут довольно неизменными с моей точки зрения. Чтобы изменить его, мне нужно было бы убедить каждого из моих друзей удалить письмо (или убедить Gmail и людей, управляющих всеми почтовыми серверами моих друзей). С моей точки зрения и с имеющимся у меня контролем это письмо является неизменным - я не могу отменить или отозвать его без совместной работы и риска обнаружения. Так что неизменность относительна и связана с тем, как трудно что-то изменить.

Вы недопонимаете. В смысле программирования. Смарт-контракт — это разновидность приложения, разработанного с использованием смарт-контракта. Таким образом, смарт-контракт может иметь логику приложения, как и другое приложение, используя if, for и т. д. Если функция не имеет тела функции, это будет виртуальная функция, обернутая переопределением. переопределение функции sendCoin(адрес получателя, сумма uint);

По моему опыту, функция sendCoin не является встроенной функцией, поэтому в контракте или в дочернем контракте будет тело функции.

Другие вопросы по тегам