То-есть этот call.value вызывает функцию из чужого контракта?
Да, именно.
Пролистал еще исходник. Да там кишит этих рекурсивных и не только багов. Вообще не понимаю, почему этот дао не был сломан сразу
Вот еще один интересный
function retrieveDAOReward(bool _toMembers) external noEther returns (bool _success) {
DAO dao = DAO(msg.sender);
...
Прямо на первой строчке. Как можно создавать обьект, заданного типа, но с привязкой к адресу отправителя транзакции?
Тут подразумевается, что отправителем будет являться контракт именно DAO, именно написанный разработчиком. Хотя на самом деле эту функцию может вызвать любой другой контракт, выдав себя за "легитимный".
Ну а дальше все та же рекурсия, все те же гонки:
uint reward =
(rewardToken[msg.sender] * DAOrewardAccount.accumulatedInput()) /
totalRewardToken - DAOpaidOut[msg.sender];
if(_toMembers) {
if (!DAOrewardAccount.payOut(dao.rewardAccount(), reward))
throw;
}
else {
if (!DAOrewardAccount.payOut(dao, reward))
throw;
}
DAOpaidOut[msg.sender] += reward;
Эх, жаль, что вычистили уже DAO од 0, а то я бы сейчас стырил оттуда пару десятков тыщ эфиров, при чем на свой контракт, а не на сплит с заморозкой на 27 дней

Меня даже под угрозой перекрашивания не заставить уже выучить все эти "языки".Китайский не легче изучить (ну как по мне)
Одно реально порадовало,что хоть увидел в ветке человека способного написать контракт.Можешь ведь? Не "ламерский". (ламерский - это матюк какой-то,я так понял? - "редискин" контракт)