Возможно, я ошибаюсь, но я понимаю, что транзакции смарт-контрактов всегда должны содержать поле «ЗНАЧЕНИЕ», то есть количество эфира, которое Алиса переведет Бобу в случае выполнения определенного условия.
Принимая это во внимание, означает ли это, что смарт-контракты Ethereum нельзя использовать для установления условий, не связанных с эфиром? Например:
а) ЕСЛИ Алиса передает Бобу право собственности на дом, ТО Боб взамен передает ей другое право собственности;
Или, например: б) ЕСЛИ значение температуры для января ниже X, ТО страховка уменьшает страховой взнос на следующий месяц;
в) ЕСЛИ потребитель А покупает что-то сломанное, ТО получает (неденежную) компенсацию от продавца.
В случае, если это возможно, узлы получат компенсацию в соответствии с использованным Газом, даже если между сторонами нет транзакции Эфира. Не так ли?
Заранее спасибо.
Ты не понимаешь.
Транзакции содержатся data
и value
на уровне протокола. data
для возможной интерпретации смарт-контрактом. value
может содержать ненулевое значение, а сам протокол применяет такие правила, как не тратить ETH, которого нет у отправителя.
Транзакция может быть строго о data
и возможном изменении состояния в хранилище контракта. Во всех случаях стоимость выполнения (вычислительный вес) выражается в единицах gas
и gas
оплачивается в ETH.
Вот простой контракт, не связанный с передачей стоимости. Плата за газ для вызова будет стоить небольшую сумму ETH set()
.
pragma solidity 0.4.25;
contract Simple {
uint public number;
function set(uint _number) public {
number = _number;
}
}
Надеюсь, поможет.
пользователь19510
value
поле, но значение может быть просто0
.Ниак3
Роб Хитченс