Где инициализируется эта переменная отображения Solidity? - PullRequest
1 голос
/ 29 июня 2019

В «Модульные контракты» есть пример кода , в котором используется сопоставление, но я не вижу, где назначаются значения каждого индекса сопоставления.

Отображение определяется как:

mapping(address => uint256) balances;

и передается в библиотеку функции «Балансы»:

library Balances {
    function move(mapping(address => uint256) storage balances, 
        address from, 
        address to, 
        uint amount) internal {
            require(balances[from] >= amount);
            require(balances[to] + amount >= balances[to]);
            balances[from] -= amount;
            balances[to] += amount;
        ...

Но я не вижу, где какое-либо значение фактически добавляется к balances в какой-либо части полного примера кода .

Функция move сначала проверяет, является ли balances[from] >= amount. В конце этой функции вы видите, что она добавляет и вычитает из идентифицированного balances, но этот код никогда не будет достигнут, верно? Поскольку require(balances[from] >= amount); всегда будет возвращать false.

Что мне не хватает?

1 Ответ

1 голос
/ 29 июня 2019

Это всего лишь пример модульных контрактов, вы можете добавить любой баланс в вашем конструкторе, например

constructor() public {
  balances[yourAddress] = amount
}
...