Solidity的嵌套映射有没有真实世界的例子?

3

有没有实际的例子展示Solidity中嵌套映射的应用? 昨天我在处理映射函数时,发现了很多简单映射的实际应用,但并没有看到嵌套映射的应用。请帮忙。 点击此处查看图片

3个回答

4

一个非常普遍的情况是在ERC-20和其他代币标准上的批准机制。

mapping (address => mapping (address => uint256)) approvals;

这个结构用于跟踪代币批准情况。例如:"Alice (第一个地址) 批准 Bob (第二个地址) 使用 100 (uint) 个代币"。
比“人与人之间的批准”更常见的情况是,一个人向 DApp 批准。例如:"Alice 批准 Uniswap 从她的钱包中提取 100 USDT"。而 Uniswap 只在她用 USDT 购买其他代币时才编程获取她的 USDT。
在 OpenZeppelin ERC20 实现 中也出于同样的原因使用了这个结构。

1

是的,今天我有一个例子: 在一个NFT合约中,我想创建一个将元数据与地址相链接的映射。所以我尝试了一下:

//create a mapping
mapping(string => address) public metadataUri;

//set a mapping
metadataUri[_uri] = _address;

但是在这种情况下,如果我有一个与相同字符串相匹配的额外地址,第一个地址将会覆盖所有后续相同字符串的地址。所以在这种情况下,我应该使用类似于以下方式的内容:

//create a mapping
mapping(string => mapping(address => uint)) public metadataUri;

//set a mapping
metadataUri[_stringURI][_address] = _uint;

0

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。-【来自审查】 - node_modules
抱歉,这个链接并没有回答问题。 这是我作为答案所写的一个例子。 如果链接失效,那么用户可以直接搜索提到的合同。 谢谢。 - Zartaj Afser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接