Bitcoin Forum

Local => Кодеры => Topic started by: Jaga-Jaga on September 11, 2017, 10:29:09 PM



Title: solidity, разбираюсь со смартконтрактами
Post by: Jaga-Jaga on September 11, 2017, 10:29:09 PM
Я собираюсь начать разбираться со смартконтрактами, немного погуглив заметил что в большинстве примеров использовался линукс, первый вопрос какую ОС лучше использовать для разработки смартконтрактов? (Если большинство примеров идет с командной строкой линукса то я могу и линукс поставить, если есть удобная среда разработки под мастдай то его могу оставить)
второй вопрос это посоветуйте подробную документацию по solidity , я пока нашел лучшую эту: http://solidity.readthedocs.io/en/develop/installing-solidity.html , но хочется еще более емкую и еще хочется чтобы как в любом языке программирования был бы список reserved words языка, для solidity я пока не нашел такого списка.
Как можно из solidity(смартконтракта узнать текущую дату и время)?
Как можно использовать ГСЧ? (если в solidity есть такая возможность)
Есть ли какая IDE поддерживающая solidity или может плагин под Eclipse есть?
Ну вобщем с чего посоветуете начать изучение solidity?


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: quantum on September 12, 2017, 06:12:47 AM
Лучше да, линукс. Если у вас 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


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: YuriDnl on September 12, 2017, 06:25:50 PM
Лучше да, линукс. Если у вас 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

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

Кстати, на Маке надеюсь не придется ставить убунту


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: quantum on September 13, 2017, 03:34:41 AM
Кстати, на Маке надеюсь не придется ставить убунту

На маке не придется


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: aleks_raiden on September 14, 2017, 02:02:46 PM
Можно поставить кошелек Mist, там будут интегрированные инструменты (Remix) сразу. Много ссылок есть здесь (https://solidity.readthedocs.io/en/develop/ (https://solidity.readthedocs.io/en/develop/)), можно подобрать под платформу.

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

Другой вариант генерации, без оракула, на базе данных из самой транзакции, описан здесь - https://habrahabr.ru/post/325988/  (https://habrahabr.ru/post/325988/)


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: quantum on September 14, 2017, 09:28:46 PM
Другой вариант генерации, без оракула, на базе данных из самой транзакции, описан здесь - https://habrahabr.ru/post/325988/  (https://habrahabr.ru/post/325988/)

Любой ГСЧ на эфире уязвим. Сам майнер во время включения транзакций в блок уже знает результат вычислений и может не включить транзакцию http://martin.swende.se/blog/Breaking_the_house.html


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: aleks_raiden on September 15, 2017, 12:25:57 PM
Но с одной стороны, вы правы. Но это должен быть сговор майнеров и, как минимум, модификация ПО чтобы отвергать/изменять конкретные транзакции контрактов - пока, как минимум, из того что известно, такого нет. Но вектор атаки вообще - интересен, да.


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: Jaga-Jaga on September 15, 2017, 09:33:50 PM
Другой вариант генерации, без оракула, на базе данных из самой транзакции, описан здесь - https://habrahabr.ru/post/325988/  (https://habrahabr.ru/post/325988/)

Любой ГСЧ на эфире уязвим. Сам майнер во время включения транзакций в блок уже знает результат вычислений и может не включить транзакцию http://martin.swende.se/blog/Breaking_the_house.html
Тут вопрос такой что одному майнеру может быть не интересно включать транзакцию в свой блок а другой будет заинтересован в том чтобы включить эту транзакцию и ГСЧ позволит ему выиграть, но кроме того есть большое число безразличных к конкретной транзакции майнеров и среди них конечно найдется такой майнер который включит эту транзакцию в блок.
А что если делать ГСЧ на основе нескольких последних блоков?


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: amaclin1 on September 19, 2017, 08:58:51 PM
А что если делать ГСЧ на основе нескольких последних блоков?
Это ничем не отличается от генератора на основе последнего блока.
Последний майнер видит контракт, вычисляющий случайное число, вычисляет его
сам перед публикацией блока в сеть и таким образом может "подкручивать" ваш
генератор в выгодную для себя сторону (разумеется, если на кону серьёзная ставка)

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

А вы лично будете на этом только терять деньги. Причем чем больше будет
таких хитрожопых майнеров, тем больше вы будете терять. В случае если все просекут
эту фишку - то ваш генератор будет выдавать последовательность 1-1-1-1-1-1...


Title: Re: solidity, разбираюсь со смартконтрактами
Post by: websalamander on September 30, 2017, 11:09:46 AM
Я собираюсь начать разбираться со смартконтрактами, немного погуглив заметил что в большинстве примеров использовался линукс, первый вопрос какую ОС лучше использовать для разработки смартконтрактов?
...
Ну вобщем с чего посоветуете начать изучение solidity?
На винде тоже можно работать. Набор -> Git/ Truffle/testrpc/MetaMask -  компилируй и  тестируй спокойно контракты