保存地址

问题描述

我有项目地址,我想用一个函数创建更多项目。所以我想把这些地址保存在某个地方。 那么,这些项目地址应该不止一个key。 我还想通过项目地址访问这些密钥。

Example

例如,我有项目 1 地址。项目1以apple的地址和Orange的地址为key 当我问“项目 1 地址有苹果地址吗?”它应该返回 True 重要的部分是我想创建一个具有功能的项目,然后按照我的说法到达它们。 我该怎么做?

解决方法

您可以将地址存储在映射中,其中键是字符串“apple”、“banana”等

如果设置了键,则不会进行验证(因为映射存储数据的方式)。但是可以验证指定键的值是否为非零(零为默认值)。

pragma solidity ^0.8.4;

contract Project {
    mapping (string => address) addresses;
    
    constructor() {
        addresses['apple'] = address(0x123);
        addresses['orange'] = address(0x456);
    }
    
    function hasAddressOf(string memory _identifier) external view returns (bool) {
        return addresses[_identifier] != address(0);
    }
}

这个合约可以部署到“项目1地址”。然后,您的客户端应用调用其 hasAddressOf() 函数以查看“项目 1 是否存储了一个 Orange 地址”。


或者甚至是更简单的 Solidity 代码,您可以在其中公开 addresses 属性。

客户端应用程序可以获取返回 addresses['apple']0x123 或返回 addresses['mango']0x0 的值。

pragma solidity ^0.8.4;

contract Project {
    mapping (string => address) public addresses;
    
    constructor() {
        addresses['apple'] = address(0x123);
        addresses['orange'] = address(0x456);
    }
}