面试题:Solidity中Mapping是如何存储的?
泰岳区块链采用的是EVM solidity合约。那么Map在solidity合约里面到底怎么存储的呢?我们写一个测试用例来测试一下。
pragma solidity ^0.6.0;
// SPDX-License-Identifier: MIT
contract Test1{
uint256 public pID;
uint256 public rID;
string public contractName;
//简单写一个玩家id,
mapping(uint256=>uint256) public plyid; //rid -> pid
mapping(address=>uint256) public plyAddr_id;
constructor() public{
rID = 1;
contractName = "test1";
}
function joinGame() public{
if (plyAddr_id[msg.sender] == 0){
pID++;

本文通过一个简单的Solidity合约示例,探讨了Mapping在合约中的存储方式。合约包含uint256、string类型变量及两个Mapping,分别存储player ID与地址映射。在EVM中,storage用于持久化存储,而memory则用于临时存储。当加入游戏时,新生成的值会在storage中以KEY/Value的形式存储,Mapping的key通过address和偏移量扩展到32位并哈希处理,形成独特的存储键。
最低0.47元/天 解锁文章
1855

被折叠的 条评论
为什么被折叠?



