π§Mapping of addresses
In this section you'll see how to create a proper Solidity mapping linking two addresses (EVM/Substrate).
Solidity Example
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract PlayerRegistry {
// Mapping to store player information
mapping(address => Player) public players;
// Struct to store player data
struct Player {
address evmAddress;
string substrateAddress;
}
// Modifier to ensure that a function is callable only by the player's EVM address
modifier onlyEvmAddress() {
require(msg.sender == players[msg.sender].evmAddress, "Not authorized");
_;
}
// Function to register a player with EVM and Substrate addresses
function registerPlayer(address _evmAddress, string memory _substrateAddress) public {
players[msg.sender] = Player(_evmAddress, _substrateAddress);
}
// Example function that can only be called by the player's EVM address
function doSomethingRestricted() public onlyEvmAddress {
// Only the player's EVM address can call this function
// Add your restricted logic here
}
// Function to get the Substrate address for a player
function getSubstrateAddress() public view returns (string memory) {
return players[msg.sender].substrateAddress;
}
}
Last updated