Author

Topic: Вопросы по solidity (Read 889 times)

sr. member
Activity: 613
Merit: 256
October 23, 2017, 03:39:40 PM
#9
Quote
Еще вопрос чем отличаются между собой такие декларации функции:
Code:
function generateRandomNumber() public returns (uint) { }
и
Code:
function generateRandomNumber() public constant returns (uint) { }
?

constant функцию можно вызвать без оформления транзакции, то есть сразу и не платя газ. В этом случае функция запускается у вас локкально, так как вся необходимя информация уже есть в сети.
Ну хорошо, допустим я описываю функцию как constant и хочу из нее обратиться к блоку и узнать его номер, какой номер блока я тогда получу тот в который загрузится мой смарт контракт или каждый раз будет новый номер блока?
newbie
Activity: 18
Merit: 0
October 19, 2017, 10:57:22 AM
#8
Quote
Еще вопрос чем отличаются между собой такие декларации функции:
Code:
function generateRandomNumber() public returns (uint) { }
и
Code:
function generateRandomNumber() public constant returns (uint) { }
?

constant функцию можно вызвать без оформления транзакции, то есть сразу и не платя газ. В этом случае функция запускается у вас локкально, так как вся необходимя информация уже есть в сети.
sr. member
Activity: 613
Merit: 256
October 17, 2017, 05:21:24 PM
#7
Пишу контракт A.
Пишу контракт B наследуемый от A, пытаюсь переопределить функцию в контракте B и оказывается что нельзя? переопределить функцию, а можно только перегрузить? Я даже в классе контракте A делал эту функцию internal но это не помогает.
jr. member
Activity: 53
Merit: 10
October 07, 2017, 08:30:06 PM
#6
Да, оно платное. Если делать контракт, чтобы просто побаловаться - не подойдет.
jr. member
Activity: 98
Merit: 3
October 07, 2017, 11:30:55 AM
#5
На сегодняшний день, самое стоящее решение - http://oraclize.it
Подробнее у них в блоге https://blog.oraclize.it/the-random-datasource-a-scalable-architecture-for-on-demand-untrusted-delivery-of-entropy-7dbae6536322
Разобрались, используем, работает.

Оно ж вроде как платное, ваш оракалайз? ) Или я ошибаюсь?
sr. member
Activity: 613
Merit: 256
October 03, 2017, 06:02:08 PM
#4
По рандому я вот такой пример нашел, https://github.com/oraclize/ethereum-examples/blob/master/solidity/random-datasource/randomExample.sol

но мне не нравится что там есть колбэк функция и мне не понятно что именно будет ее вызывать, да и как отработает оракловая функция тоже нет гарантии что там рандом будет.
Вобщем хотелось бы иметь прозрачный рандом, а не кота в мешке.
jr. member
Activity: 53
Merit: 10
September 29, 2017, 07: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
Разобрались, используем, работает.
full member
Activity: 138
Merit: 101
September 29, 2017, 12:25:49 AM
#2
Модификатор constant указывает, что метод не изменяет ничего в контракте, а просто, к примеру, возвращает значение какого-то поля.
sr. member
Activity: 613
Merit: 256
September 28, 2017, 05: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) { }
?
Jump to: