Могу ли я вызвать функцию внутри функции solidity?

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

Что-то вроде:

function point(min, max) public view returns (uint256) {
    return /* A number betwwen "min" and "max" */;
}

function generateSVG() public pure returns (string memory) {
   .
   .
   .
    svg = string(abi.encodePacked(svg, "stroke-width='" , point(1, 5) , "' "));
   .
   .
   .
}

Спасибо :D

Что такое компоненты React? Введение в компоненты | Типы компонентов
Что такое компоненты React? Введение в компоненты | Типы компонентов
Компонент - это независимый, многократно используемый фрагмент кода, который делит пользовательский интерфейс на более мелкие части. Например, если мы...
0
0
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Краткий ответ: иногда.

Длинный ответ:

В солидности указываем видимость функций и переменных состояния. Существует 4 вида видимости:

  • Внутренний
  • Внешний
  • Общественный
  • Частный

Если не указано явно, видимость по умолчанию равна internal.

Внутренний

Переменная функции/состояния видна только контрактам, которые ее содержат, или наследует контракт, который ее содержит.

Внешний

Может вызываться только другими контрактами

Общественный

Любой контракт, независимо от того, содержит он код или нет, может вызвать

Частный

Только контракт, который объявляет его, может вызывать, а не те, которые его наследуют.

Остерегайтесь случайности

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

«псевдослучайные значения с блок-хэшем / высотой блока» вы имеете в виду что-то вроде: keccak256 (abi.encodePacked (block.timestamp, block.difficulty, msg.sender)) ??

brunovjk 06.04.2022 14:32

Ага может быть. Но имейте в виду, что люди могут предсказать это значение

keser 06.04.2022 14:40

Я новичок в Blockchain, я пытаюсь создать коллекцию произведений искусства NFT со случайным SVG, если я правильно понимаю, узлы могут предсказать это случайное число, и с его помощью предсказать, на что будет похожа вся коллекция. Но они не могут получить доступ к балансу или каким-либо образом обновить контракт, верно? Спасибо за терпение.

brunovjk 06.04.2022 14:56

Я думаю, вам нужно задать другой вопрос для этого, это не входит в рамки этого вопроса.

keser 06.04.2022 15:01

Потрясающе, хе-хе, спасибо за внимание.

brunovjk 06.04.2022 16:06

Как мне проголосовать? Я здесь новенький. Я попробовал использовать стрелку вверх, но: "Спасибо за отзыв! Вам нужно как минимум 15 <a href = "/help/whats-reputation">репутации</a>, чтобы проголосовать, но ваш отзыв был записан".

brunovjk 07.04.2022 13:27

Другие вопросы по теме