Как стать автором
Обновить

Комментарии 4

Хорошая статья для начинающих, но хотелось бы обратить внимание будущих разработчиков смарт-контрактов на документацию Solidity.

В частности Security Considerations
Там приведена частая ошибка, которая встречается и здесь:
if (p.currentResult > 0) { // если большинство проголосовало “за”
            require ( p.recipient.send(p.amount) ); // отправить эфир получателю
            p.proposalPassed = true; // пометить, что предложение одобрено


если злоумышленник сможет внести своё «предложение» адресом получателя у которого будет «контракт» контролируемый им, с помощью соц. инженерии добиться принятия своего предложения, то в контракте-получателе платежа может быть код, который в момент получения денег снова вызовет executeProposal(uint _proposalNumber), который пришлет еще немного денег и снова вызовет сам себя и так до тех пор пока не выгребет весь банк либо не закончится gas на транзакцию. А т.к. транзакция откатится — можно будет вызвать метод снова и забрать то, что не забрал, т.к. p.proposalPassed = true; не вызовется

Так же стоит помнить, что глубина стека в EVM ограничена и злоумышленник может вызвать ваш метод таким образом, что вы не сможете пойти «глубже». Иногда это тоже может иметь значение.

А в остальном — всем удачных контрактов)
И помните про цену размещения мегабайта данных в блокчейне эфира
А у меня вопрос по второй части «Погружение в разработку на Ethereum».
Я опубликовал контракт через Geth, получил его адрес. Ссылка на него сохранилось в локальной переменной.
Каким образом я могу им управлять (вызывать методы) через Geth на другом компьютере?
Какие команды необходимо для этого ввести в консоли Geth?
Для открытия нужен не только адрес, но еще и abi (интерфейс). Как с этими данными открыть контракт описано как раз во второй части в пункте «Hello Command Line!»
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории