这个Solidity映射变量在哪里初始化?

时间:2019-06-29 00:19:56

标签: ethereum solidity

"Modular Contracts"中有使用映射的示例代码,但是我看不到每个映射索引的值在哪里分配。

映射定义为:

mapping(address => uint256) balances;

并将其传递给库函数“ 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;
        ...

但是我看不到最初在完整code example的任何部分中将任何值实际添加到balances的地方。

move函数首先检查是否为balances[from] >= amount。在该函数的末尾,您会看到它在标识的balances上进行了加减,但是该代码将永远无法到达,对吗?由于require(balances[from] >= amount);将始终返回false。

我想念什么?

1 个答案:

答案 0 :(得分:1)

这只是模块化合同的一个示例,您可以在构造函数中添加任何余额,例如

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