Author

Topic: solidity, разбираюсь со смартконтрактами (Read 990 times)

newbie
Activity: 88
Merit: 0
Я собираюсь начать разбираться со смартконтрактами, немного погуглив заметил что в большинстве примеров использовался линукс, первый вопрос какую ОС лучше использовать для разработки смартконтрактов?
...
Ну вобщем с чего посоветуете начать изучение solidity?
На винде тоже можно работать. Набор -> Git/ Truffle/testrpc/MetaMask -  компилируй и  тестируй спокойно контракты
sr. member
Activity: 770
Merit: 305
А что если делать ГСЧ на основе нескольких последних блоков?
Это ничем не отличается от генератора на основе последнего блока.
Последний майнер видит контракт, вычисляющий случайное число, вычисляет его
сам перед публикацией блока в сеть и таким образом может "подкручивать" ваш
генератор в выгодную для себя сторону (разумеется, если на кону серьёзная ставка)

Пример для понятности.
Допустим, ваш ГСЧ выдает рандомно 0 или 1. Если выдалась 1 - то игрок получает
от вас миллион рублей. Если выдался 0 - ставка игрока в миллион рублей идёт вам.
Майнер ставит на кон миллион и майнит блок. Если блок смайнил кто-то другой - в
этом случае вероятность выигрыша и проигрыша 50:50
Если блок смайнил сам майнер - он сперва проверяет - если выиграл - то публикует
блок. Если проиграл - он его выбрасывает в /dev/nul и продолжает майнить. Таким
образом, он, конечно, наказывает себя на награду от блока, но зато его шансы
выиграть у вас в долгосроке увеличиваются.

А вы лично будете на этом только терять деньги. Причем чем больше будет
таких хитрожопых майнеров, тем больше вы будете терять. В случае если все просекут
эту фишку - то ваш генератор будет выдавать последовательность 1-1-1-1-1-1...
sr. member
Activity: 613
Merit: 256
Другой вариант генерации, без оракула, на базе данных из самой транзакции, описан здесь - https://habrahabr.ru/post/325988/

Любой ГСЧ на эфире уязвим. Сам майнер во время включения транзакций в блок уже знает результат вычислений и может не включить транзакцию http://martin.swende.se/blog/Breaking_the_house.html
Тут вопрос такой что одному майнеру может быть не интересно включать транзакцию в свой блок а другой будет заинтересован в том чтобы включить эту транзакцию и ГСЧ позволит ему выиграть, но кроме того есть большое число безразличных к конкретной транзакции майнеров и среди них конечно найдется такой майнер который включит эту транзакцию в блок.
А что если делать ГСЧ на основе нескольких последних блоков?
full member
Activity: 138
Merit: 101
Но с одной стороны, вы правы. Но это должен быть сговор майнеров и, как минимум, модификация ПО чтобы отвергать/изменять конкретные транзакции контрактов - пока, как минимум, из того что известно, такого нет. Но вектор атаки вообще - интересен, да.
member
Activity: 108
Merit: 250
Другой вариант генерации, без оракула, на базе данных из самой транзакции, описан здесь - https://habrahabr.ru/post/325988/

Любой ГСЧ на эфире уязвим. Сам майнер во время включения транзакций в блок уже знает результат вычислений и может не включить транзакцию http://martin.swende.se/blog/Breaking_the_house.html
full member
Activity: 138
Merit: 101
Можно поставить кошелек Mist, там будут интегрированные инструменты (Remix) сразу. Много ссылок есть здесь (https://solidity.readthedocs.io/en/develop/), можно подобрать под платформу.

По поводу ГСЧ - придется писать сервис-оракула, который будет отсылать вашему контракту числа, можно даже сразу генерировать блоками, например, 10 и хранить их, используя сколько надо.

Другой вариант генерации, без оракула, на базе данных из самой транзакции, описан здесь - https://habrahabr.ru/post/325988/
member
Activity: 108
Merit: 250
Кстати, на Маке надеюсь не придется ставить убунту

На маке не придется
newbie
Activity: 19
Merit: 0
Лучше да, линукс. Если у вас windows просто поставьте ubuntu server на виртуалку.
Официальная документация очень хорошая, прочитайте полностью.


Quote
Как можно из solidity(смартконтракта узнать текущую дату и время)?
now

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


Quote
Есть ли какая IDE поддерживающая solidity или может плагин под Eclipse есть?

онлайн редактор, можно запусать и дебажить
https://ethereum.github.io/browser-solidity/

Плагин для атома (сам не смотрел)
https://atom.io/packages/language-ethereum

Quote
Ну вобщем с чего посоветуете начать изучение solidity?

Чтобы не городить велосипеды, посмотрите эти видюшки, в них описаны лучшие практики https://m.youtube.com/playlist?list=PLoQp1VPBv3SmVjFlXR7EIPFTri6yjrvtE

Спасибо, как раз тоже искал инфу по этому вопросу.

Кстати, на Маке надеюсь не придется ставить убунту
member
Activity: 108
Merit: 250
Лучше да, линукс. Если у вас windows просто поставьте ubuntu server на виртуалку.
Официальная документация очень хорошая, прочитайте полностью.


Quote
Как можно из solidity(смартконтракта узнать текущую дату и время)?
now

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


Quote
Есть ли какая IDE поддерживающая solidity или может плагин под Eclipse есть?

онлайн редактор, можно запусать и дебажить
https://ethereum.github.io/browser-solidity/

Плагин для атома (сам не смотрел)
https://atom.io/packages/language-ethereum

Quote
Ну вобщем с чего посоветуете начать изучение solidity?

Чтобы не городить велосипеды, посмотрите эти видюшки, в них описаны лучшие практики https://m.youtube.com/playlist?list=PLoQp1VPBv3SmVjFlXR7EIPFTri6yjrvtE
sr. member
Activity: 613
Merit: 256
Я собираюсь начать разбираться со смартконтрактами, немного погуглив заметил что в большинстве примеров использовался линукс, первый вопрос какую ОС лучше использовать для разработки смартконтрактов? (Если большинство примеров идет с командной строкой линукса то я могу и линукс поставить, если есть удобная среда разработки под мастдай то его могу оставить)
второй вопрос это посоветуйте подробную документацию по solidity , я пока нашел лучшую эту: http://solidity.readthedocs.io/en/develop/installing-solidity.html , но хочется еще более емкую и еще хочется чтобы как в любом языке программирования был бы список reserved words языка, для solidity я пока не нашел такого списка.
Как можно из solidity(смартконтракта узнать текущую дату и время)?
Как можно использовать ГСЧ? (если в solidity есть такая возможность)
Есть ли какая IDE поддерживающая solidity или может плагин под Eclipse есть?
Ну вобщем с чего посоветуете начать изучение solidity?
Jump to: