Bitcoin Forum
May 24, 2024, 10:57:57 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Вопросы по solidity  (Read 887 times)
Jaga-Jaga (OP)
Sr. Member
****
Offline Offline

Activity: 613
Merit: 256



View Profile
September 28, 2017, 09:49:16 PM
 #1

Начинаю разбираться с solidity, наваял такой вот код:
Code:
pragma solidity ^0.4.0;

contract randomContract {
    
    address public ownerAddr;
    uint public lastBlock;
    uint256 public lastRandomValue;
    uint public randomMaxLimit = 1000000000000;
 
 
    modifier isOwner {
        require(ownerAddr == msg.sender);
        _;
    }  
    
    function randomContract() {
        ownerAddr = msg.sender;
        generateRandomNumber();
    }
    
    function generateRandomNumber() public /*constant*/ returns (uint) {
        lastBlock = block.number;
        lastRandomValue = uint( block.blockhash(block.number) ) % randomMaxLimit;
        return lastRandomValue;
    }
 
    function getRandomNumber() public /*constant*/ returns (uint) {
        generateRandomNumber();
        return lastRandomValue;
    }
    
}
Но мой рандом не работает(тестирую в REMIX на гитхабе), вопрос почему? и как сделать рабочий рандом подскажите плс?

Еще вопрос чем отличаются между собой такие декларации функции:
Code:
function generateRandomNumber() public returns (uint) { }
и
Code:
function generateRandomNumber() public constant returns (uint) { }
?

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

Activity: 138
Merit: 101


View Profile
September 29, 2017, 04:25:49 AM
 #2

Модификатор constant указывает, что метод не изменяет ничего в контракте, а просто, к примеру, возвращает значение какого-то поля.
lottesy
Jr. Member
*
Offline Offline

Activity: 53
Merit: 10


View Profile
September 29, 2017, 11:26:43 AM
 #3

На сегодняшний день, самое стоящее решение - http://oraclize.it
Подробнее у них в блоге https://blog.oraclize.it/the-random-datasource-a-scalable-architecture-for-on-demand-untrusted-delivery-of-entropy-7dbae6536322
Разобрались, используем, работает.

► The smart contract lottery ◄
Get the chance to win 10 ETH for 0.01 ETH.
http://lottesy.com (http://lottesy.com)
Jaga-Jaga (OP)
Sr. Member
****
Offline Offline

Activity: 613
Merit: 256



View Profile
October 03, 2017, 10:02:08 PM
 #4

По рандому я вот такой пример нашел, https://github.com/oraclize/ethereum-examples/blob/master/solidity/random-datasource/randomExample.sol

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

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

Activity: 98
Merit: 3


View Profile
October 07, 2017, 03:30:55 PM
 #5

На сегодняшний день, самое стоящее решение - http://oraclize.it
Подробнее у них в блоге https://blog.oraclize.it/the-random-datasource-a-scalable-architecture-for-on-demand-untrusted-delivery-of-entropy-7dbae6536322
Разобрались, используем, работает.

Оно ж вроде как платное, ваш оракалайз? ) Или я ошибаюсь?
lottesy
Jr. Member
*
Offline Offline

Activity: 53
Merit: 10


View Profile
October 08, 2017, 12:30:06 AM
 #6

Да, оно платное. Если делать контракт, чтобы просто побаловаться - не подойдет.

► The smart contract lottery ◄
Get the chance to win 10 ETH for 0.01 ETH.
http://lottesy.com (http://lottesy.com)
Jaga-Jaga (OP)
Sr. Member
****
Offline Offline

Activity: 613
Merit: 256



View Profile
October 17, 2017, 09:21:24 PM
 #7

Пишу контракт A.
Пишу контракт B наследуемый от A, пытаюсь переопределить функцию в контракте B и оказывается что нельзя? переопределить функцию, а можно только перегрузить? Я даже в классе контракте A делал эту функцию internal но это не помогает.

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

Activity: 18
Merit: 0


View Profile WWW
October 19, 2017, 02:57:22 PM
 #8

Quote
Еще вопрос чем отличаются между собой такие декларации функции:
Code:
function generateRandomNumber() public returns (uint) { }
и
Code:
function generateRandomNumber() public constant returns (uint) { }
?

constant функцию можно вызвать без оформления транзакции, то есть сразу и не платя газ. В этом случае функция запускается у вас локкально, так как вся необходимя информация уже есть в сети.
Jaga-Jaga (OP)
Sr. Member
****
Offline Offline

Activity: 613
Merit: 256



View Profile
October 23, 2017, 07:39:40 PM
 #9

Quote
Еще вопрос чем отличаются между собой такие декларации функции:
Code:
function generateRandomNumber() public returns (uint) { }
и
Code:
function generateRandomNumber() public constant returns (uint) { }
?

constant функцию можно вызвать без оформления транзакции, то есть сразу и не платя газ. В этом случае функция запускается у вас локкально, так как вся необходимя информация уже есть в сети.
Ну хорошо, допустим я описываю функцию как constant и хочу из нее обратиться к блоку и узнать его номер, какой номер блока я тогда получу тот в который загрузится мой смарт контракт или каждый раз будет новый номер блока?

           ▀██▄ ▄██▀
            ▐█████▌
           ▄███▀███▄
         ▄████▄  ▀███▄
       ▄███▀ ▀██▄  ▀███▄
     ▄███▀  ▄█████▄  ▀███▄
   ▄███▀  ▄███▀ ▀███▄  ▀███▄
  ███▀  ▄████▌   ▐████▄  ▀███
 ███   ██▀  ██▄ ▄██  ▀██   ███
███   ███  ███   ███  ███   ███
███   ███   ███████   ███   ███
 ███   ███▄▄       ▄▄███   ███
  ███▄   ▀▀█████████▀▀   ▄███
   ▀████▄▄           ▄▄████▀
      ▀▀███████████████▀▀
DeepOnion
███
███
███
███
███
███
███
███
███
███
   Anonymity Guaranteed
   Anonymous and Untraceable
   Guard Your Privacy
      ▄▄██████████▄▄
    ▄███▀▀      ▀▀█▀   ▄▄
   ███▀              ▄███
  ███              ▄███▀   ▄▄
 ███▌  ▄▄▄▄      ▄███▀   ▄███
▐███  ██████   ▄███▀   ▄███▀
███▌ ███  ███▄███▀   ▄███▀
███▌ ███   ████▀   ▄███▀
███▌  ███   █▀   ▄███▀  ███
▐███   ███     ▄███▀   ███
 ███▌   ███  ▄███▀     ███
  ███    ██████▀      ███
   ███▄             ▄███
    ▀███▄▄       ▄▄███▀
      ▀▀███████████▀▀
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!