Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions packages/evm/contracts/utils/MimicHelper.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,38 @@ pragma solidity ^0.8.20;
* @dev Collection of helper functions for the Mimic Protocol
*/
contract MimicHelper {
// Custom byte storage per user and key
mapping (address => mapping (string => bytes)) internal _customStorage;

/**
* @dev Emitted every time the storage is set
*/
event StorageSet(address indexed user, string indexed key, bytes indexed data);

/**
* @dev Tells the native token balance of an address
* @param target Address to get native token balance
*/
function getNativeTokenBalance(address target) external view returns (uint256) {
return target.balance;
}

/**
* @dev Tells the data set for the user and the key
* @param user Address of the user being queried
* @param key String of the key being queried
*/
function getStorage(address user, string calldata key) external view returns (bytes memory) {
return _customStorage[user][key];
}

/**
* @dev Sets a data for the user and a key
* @param key String of the key to set the data for
* @param data Bytes to be set
*/
function setStorage(string calldata key, bytes memory data) external {
_customStorage[msg.sender][key] = data;
emit StorageSet(msg.sender, key, data);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../build-info/b650d0a8e9df290d290e91b2999a1f7443c2b528.json"
"buildInfo": "../build-info/aff78ea499dfc3816c16d86afdeabd6ee3eea381.json"
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,31 @@
"contractName": "MimicHelper",
"sourceName": "contracts/utils/MimicHelper.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": true,
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "StorageSet",
"type": "event"
},
{
"inputs": [
{
Expand All @@ -21,13 +46,55 @@
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "string",
"name": "key",
"type": "string"
}
],
"name": "getStorage",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "setStorage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x6080604052348015600e575f5ffd5b5060cf80601a5f395ff3fe6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063effd663c14602a575b5f5ffd5b604f60353660046061565b73ffffffffffffffffffffffffffffffffffffffff163190565b60405190815260200160405180910390f35b5f602082840312156070575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff811681146092575f5ffd5b939250505056fea2646970667358221220bb1ce2cd0b8d26244d77e180ab4e56bb52690949ec0a30d5c25e3ac02f58774664736f6c634300081c0033",
"deployedBytecode": "0x6080604052348015600e575f5ffd5b50600436106026575f3560e01c8063effd663c14602a575b5f5ffd5b604f60353660046061565b73ffffffffffffffffffffffffffffffffffffffff163190565b60405190815260200160405180910390f35b5f602082840312156070575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff811681146092575f5ffd5b939250505056fea2646970667358221220bb1ce2cd0b8d26244d77e180ab4e56bb52690949ec0a30d5c25e3ac02f58774664736f6c634300081c0033",
"bytecode": "0x6080604052348015600e575f5ffd5b506105dd8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80631c1bbd371461004357806353f71fd314610058578063effd663c14610081575b5f5ffd5b610056610051366004610295565b6100b7565b005b61006b61006636600461039f565b610150565b60405161007891906103ee565b60405180910390f35b6100a961008f366004610423565b73ffffffffffffffffffffffffffffffffffffffff163190565b604051908152602001610078565b335f908152602081905260409081902090518291906100d99086908690610443565b908152602001604051809103902090816100f391906104d6565b50806040516101029190610591565b6040518091039020838360405161011a929190610443565b6040519081900381209033907f56ab5c6148f0ccf4e18c36573ddf31db2c597b58811188358cc6935661a38836905f90a4505050565b60605f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20838360405161019e929190610443565b908152602001604051809103902080546101b790610452565b80601f01602080910402602001604051908101604052809291908181526020018280546101e390610452565b801561022e5780601f106102055761010080835404028352916020019161022e565b820191905f5260205f20905b81548152906001019060200180831161021157829003601f168201915b505050505090509392505050565b5f5f83601f84011261024c575f5ffd5b50813567ffffffffffffffff811115610263575f5ffd5b60208301915083602082850101111561027a575f5ffd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f604084860312156102a7575f5ffd5b833567ffffffffffffffff8111156102bd575f5ffd5b6102c98682870161023c565b909450925050602084013567ffffffffffffffff8111156102e8575f5ffd5b8401601f810186136102f8575f5ffd5b803567ffffffffffffffff81111561031257610312610281565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561034157610341610281565b604052818152828201602001881015610358575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b803573ffffffffffffffffffffffffffffffffffffffff8116811461039a575f5ffd5b919050565b5f5f5f604084860312156103b1575f5ffd5b6103ba84610377565b9250602084013567ffffffffffffffff8111156103d5575f5ffd5b6103e18682870161023c565b9497909650939450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610433575f5ffd5b61043c82610377565b9392505050565b818382375f9101908152919050565b600181811c9082168061046657607f821691505b60208210810361048457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104d157805f5260205f20601f840160051c810160208510156104af5750805b601f840160051c820191505b818110156104ce575f81556001016104bb565b50505b505050565b815167ffffffffffffffff8111156104f0576104f0610281565b610504816104fe8454610452565b8461048a565b6020601f821160018114610536575f831561051f5750848201515b5f19600385901b1c1916600184901b1784556104ce565b5f84815260208120601f198516915b828110156105655787850151825560209485019460019092019101610545565b508482101561058257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f92019182525091905056fea2646970667358221220c539e81f90b7e5554ba1dcf1c0cdd13d960f41ee3dbf256624cd7edd11bbbafa64736f6c634300081c0033",
"deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80631c1bbd371461004357806353f71fd314610058578063effd663c14610081575b5f5ffd5b610056610051366004610295565b6100b7565b005b61006b61006636600461039f565b610150565b60405161007891906103ee565b60405180910390f35b6100a961008f366004610423565b73ffffffffffffffffffffffffffffffffffffffff163190565b604051908152602001610078565b335f908152602081905260409081902090518291906100d99086908690610443565b908152602001604051809103902090816100f391906104d6565b50806040516101029190610591565b6040518091039020838360405161011a929190610443565b6040519081900381209033907f56ab5c6148f0ccf4e18c36573ddf31db2c597b58811188358cc6935661a38836905f90a4505050565b60605f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20838360405161019e929190610443565b908152602001604051809103902080546101b790610452565b80601f01602080910402602001604051908101604052809291908181526020018280546101e390610452565b801561022e5780601f106102055761010080835404028352916020019161022e565b820191905f5260205f20905b81548152906001019060200180831161021157829003601f168201915b505050505090509392505050565b5f5f83601f84011261024c575f5ffd5b50813567ffffffffffffffff811115610263575f5ffd5b60208301915083602082850101111561027a575f5ffd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f604084860312156102a7575f5ffd5b833567ffffffffffffffff8111156102bd575f5ffd5b6102c98682870161023c565b909450925050602084013567ffffffffffffffff8111156102e8575f5ffd5b8401601f810186136102f8575f5ffd5b803567ffffffffffffffff81111561031257610312610281565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561034157610341610281565b604052818152828201602001881015610358575f5ffd5b816020840160208301375f602083830101528093505050509250925092565b803573ffffffffffffffffffffffffffffffffffffffff8116811461039a575f5ffd5b919050565b5f5f5f604084860312156103b1575f5ffd5b6103ba84610377565b9250602084013567ffffffffffffffff8111156103d5575f5ffd5b6103e18682870161023c565b9497909650939450505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610433575f5ffd5b61043c82610377565b9392505050565b818382375f9101908152919050565b600181811c9082168061046657607f821691505b60208210810361048457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156104d157805f5260205f20601f840160051c810160208510156104af5750805b601f840160051c820191505b818110156104ce575f81556001016104bb565b50505b505050565b815167ffffffffffffffff8111156104f0576104f0610281565b610504816104fe8454610452565b8461048a565b6020601f821160018114610536575f831561051f5750848201515b5f19600385901b1c1916600184901b1784556104ce565b5f84815260208120601f198516915b828110156105655787850151825560209485019460019092019101610545565b508482101561058257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f92019182525091905056fea2646970667358221220c539e81f90b7e5554ba1dcf1c0cdd13d960f41ee3dbf256624cd7edd11bbbafa64736f6c634300081c0033",
"linkReferences": {},
"deployedLinkReferences": {},
"immutableReferences": {},
"inputSourceName": "project/contracts/utils/MimicHelper.sol",
"buildInfoId": "b650d0a8e9df290d290e91b2999a1f7443c2b528"
"buildInfoId": "aff78ea499dfc3816c16d86afdeabd6ee3eea381"
}
Loading