Bitcoin Forum
May 30, 2024, 08:09:21 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: solidity, разбираюсь со смартконтрактами  (Read 972 times)
Jaga-Jaga (OP)
Sr. Member
****
Offline Offline

Activity: 613
Merit: 256



View Profile
September 11, 2017, 10:29:09 PM
 #1

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

           ▀██▄ ▄██▀
            ▐█████▌
           ▄███▀███▄
         ▄████▄  ▀███▄
       ▄███▀ ▀██▄  ▀███▄
     ▄███▀  ▄█████▄  ▀███▄
   ▄███▀  ▄███▀ ▀███▄  ▀███▄
  ███▀  ▄████▌   ▐████▄  ▀███
 ███   ██▀  ██▄ ▄██  ▀██   ███
███   ███  ███   ███  ███   ███
███   ███   ███████   ███   ███
 ███   ███▄▄       ▄▄███   ███
  ███▄   ▀▀█████████▀▀   ▄███
   ▀████▄▄           ▄▄████▀
      ▀▀███████████████▀▀
DeepOnion
███
███
███
███
███
███
███
███
███
███
   Anonymity Guaranteed
   Anonymous and Untraceable
   Guard Your Privacy
      ▄▄██████████▄▄
    ▄███▀▀      ▀▀█▀   ▄▄
   ███▀              ▄███
  ███              ▄███▀   ▄▄
 ███▌  ▄▄▄▄      ▄███▀   ▄███
▐███  ██████   ▄███▀   ▄███▀
███▌ ███  ███▄███▀   ▄███▀
███▌ ███   ████▀   ▄███▀
███▌  ███   █▀   ▄███▀  ███
▐███   ███     ▄███▀   ███
 ███▌   ███  ▄███▀     ███
  ███    ██████▀      ███
   ███▄             ▄███
    ▀███▄▄       ▄▄███▀
      ▀▀███████████▀▀
quantum
Member
**
Offline Offline

Activity: 108
Merit: 250


View Profile
September 12, 2017, 06:12:47 AM
 #2

Лучше да, линукс. Если у вас 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
YuriDnl
Newbie
*
Offline Offline

Activity: 19
Merit: 0


View Profile
September 12, 2017, 06:25:50 PM
 #3

Лучше да, линукс. Если у вас 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

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

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

Activity: 108
Merit: 250


View Profile
September 13, 2017, 03:34:41 AM
 #4

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

На маке не придется
aleks_raiden
Full Member
***
Offline Offline

Activity: 138
Merit: 101


View Profile
September 14, 2017, 02:02:46 PM
 #5

Можно поставить кошелек Mist, там будут интегрированные инструменты (Remix) сразу. Много ссылок есть здесь (https://solidity.readthedocs.io/en/develop/), можно подобрать под платформу.

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

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

Activity: 108
Merit: 250


View Profile
September 14, 2017, 09:28:46 PM
 #6

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

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

Activity: 138
Merit: 101


View Profile
September 15, 2017, 12:25:57 PM
 #7

Но с одной стороны, вы правы. Но это должен быть сговор майнеров и, как минимум, модификация ПО чтобы отвергать/изменять конкретные транзакции контрактов - пока, как минимум, из того что известно, такого нет. Но вектор атаки вообще - интересен, да.
Jaga-Jaga (OP)
Sr. Member
****
Offline Offline

Activity: 613
Merit: 256



View Profile
September 15, 2017, 09:33:50 PM
 #8

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

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

           ▀██▄ ▄██▀
            ▐█████▌
           ▄███▀███▄
         ▄████▄  ▀███▄
       ▄███▀ ▀██▄  ▀███▄
     ▄███▀  ▄█████▄  ▀███▄
   ▄███▀  ▄███▀ ▀███▄  ▀███▄
  ███▀  ▄████▌   ▐████▄  ▀███
 ███   ██▀  ██▄ ▄██  ▀██   ███
███   ███  ███   ███  ███   ███
███   ███   ███████   ███   ███
 ███   ███▄▄       ▄▄███   ███
  ███▄   ▀▀█████████▀▀   ▄███
   ▀████▄▄           ▄▄████▀
      ▀▀███████████████▀▀
DeepOnion
███
███
███
███
███
███
███
███
███
███
   Anonymity Guaranteed
   Anonymous and Untraceable
   Guard Your Privacy
      ▄▄██████████▄▄
    ▄███▀▀      ▀▀█▀   ▄▄
   ███▀              ▄███
  ███              ▄███▀   ▄▄
 ███▌  ▄▄▄▄      ▄███▀   ▄███
▐███  ██████   ▄███▀   ▄███▀
███▌ ███  ███▄███▀   ▄███▀
███▌ ███   ████▀   ▄███▀
███▌  ███   █▀   ▄███▀  ███
▐███   ███     ▄███▀   ███
 ███▌   ███  ▄███▀     ███
  ███    ██████▀      ███
   ███▄             ▄███
    ▀███▄▄       ▄▄███▀
      ▀▀███████████▀▀
amaclin1
Sr. Member
****
Offline Offline

Activity: 770
Merit: 305


View Profile
September 19, 2017, 08:58:51 PM
Last edit: September 19, 2017, 09:09:56 PM by amaclin1
 #9

А что если делать ГСЧ на основе нескольких последних блоков?
Это ничем не отличается от генератора на основе последнего блока.
Последний майнер видит контракт, вычисляющий случайное число, вычисляет его
сам перед публикацией блока в сеть и таким образом может "подкручивать" ваш
генератор в выгодную для себя сторону (разумеется, если на кону серьёзная ставка)

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

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

Bitcoin SV GUI client for Windows and Linux
https://github.com/AlisterMaclin/bitcoin-sv/releases
websalamander
Newbie
*
Offline Offline

Activity: 88
Merit: 0


View Profile
September 30, 2017, 11:09:46 AM
 #10

Я собираюсь начать разбираться со смартконтрактами, немного погуглив заметил что в большинстве примеров использовался линукс, первый вопрос какую ОС лучше использовать для разработки смартконтрактов?
...
Ну вобщем с чего посоветуете начать изучение solidity?
На винде тоже можно работать. Набор -> Git/ Truffle/testrpc/MetaMask -  компилируй и  тестируй спокойно контракты
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!