Polymath
master
master
  • README
  • api
    • Proxy (Proxy.sol)
    • Base abstract contract to be extended by all STO modules (STO.sol)
    • OwnedUpgradeabilityProxy (OwnedUpgradeabilityProxy.sol)
    • Transfer Manager module for core transfer validation functionality (GeneralTransferManager.sol)
    • VotingCheckpointStorage.sol
    • PLCRVotingCheckpoint.sol
    • Factory for deploying VestingEscrowWallet module (VestingEscrowWalletFactory.sol)
    • Helper library use to compare or validate the semantic versions (VersionUtils.sol)
    • Interface to be implemented by all Wallet modules (Wallet.sol)
    • Factory for deploying CappedSTO module (CappedSTOFactory.sol)
    • Checkpoint module for issuing ERC20 dividends (ERC20DividendCheckpoint.sol)
    • Interface to be implemented by all Transfer Manager modules (ITransferManager.sol)
    • StableOracle.sol
    • VolumeRestrictionTM.sol
    • SecurityTokenRegistryProxy (SecurityTokenRegistryProxy.sol)
    • PreSaleSTO module Proxy (PreSaleSTOProxy.sol)
    • DataStoreProxy Proxy (DataStoreProxy.sol)
    • Proxy for deploying SecurityToken instances (STFactory.sol)
    • Ownable (IOwnable.sol)
    • Checkpoint module for issuing ether dividends (DividendCheckpoint.sol)
    • CountTransferManager module Proxy (BlacklistTransferManagerProxy.sol)
    • Security Token contract (mock) (MockSTGetter.sol)
    • Permission Manager module for core permissioning functionality (GeneralPermissionManager.sol)
    • Contract used to store layout for the CountTransferManager storage (CountTransferManagerStorage.sol)
    • DummySTO module Proxy (DummySTOProxy.sol)
    • Transfer Manager module for limiting percentage of token supply a single address can hold (Percentag
    • Helps contracts guard against reentrancy attacks. (ReentrancyGuard.sol)
    • Factory for deploying EtherDividendCheckpoint module (ScheduledCheckpointFactory.sol)
    • Interface that every module factory contract should implement (IModuleFactory.sol)
    • Factory for deploying GeneralTransferManager module (TrackedRedemptionFactory.sol)
    • SafeMath (SafeMath.sol)
    • USDTiered STO module Proxy (SecurityTokenProxy.sol)
    • USDTiered STO module Proxy (USDTieredSTOProxy.sol)
    • IOracle.sol
    • ManualApprovalTransferManager module Proxy (ManualApprovalTransferManagerProxy.sol)
    • Interface to be implemented by all permission manager modules (IPermissionManager.sol)
    • Factory for deploying PreSaleSTO module (PreSaleSTOFactory.sol)
    • MockPolyOracle.sol
    • Transfer Manager module for verifing transations with a signed message (SignedTransferManager.sol)
    • DataStoreFactory.sol
    • OraclizeAddrResolverI.sol
    • PolyTokenFaucet.sol
    • Registry contract for issuers to register their security tokens (MockModuleRegistry.sol)
    • VolumeRestrictionLib.sol
    • Contract used to store layout for the PercentageTransferManager storage (PercentageTransferManagerSt
    • Transfer Manager for limiting maximum number of token holders (CountTransferManager.sol)
    • ModuleRegistryProxy (ModuleRegistryProxy.sol)
    • Voting module for governance (WeightedVoteCheckpointProxy.sol)
    • Factory for deploying BlacklistTransferManager module (BlacklistTransferManagerFactory.sol)
    • Contract used to store layout for the GeneralPermissionManager storage (GeneralPermissionManagerStor
    • CountTransferManager module Proxy (LockUpTransferManagerProxy.sol)
    • Holds the storage variable for the DividendCheckpoint modules (i.e ERC20, Ether) (DividendCheckpoint
    • Factory for deploying DummySTO module (DummySTOFactory.sol)
    • IERC1644.sol
    • Core functionality for registry upgradability (PolymathRegistry.sol)
    • Utility contract to allow owner to retreive any ERC20 sent to the contract (ReclaimTokens.sol)
    • SecurityTokenMock.sol
    • Factory for deploying CappedSTO module (USDTieredSTOFactory.sol)
    • Factory for deploying ManualApprovalTransferManager module (ManualApprovalTransferManagerFactory.sol
    • IERC1643.sol
    • Transfer Manager module for core transfer validation functionality (EtherDividendCheckpointProxy.sol
    • solcChecker.sol
    • It holds the storage variables related to ERC20DividendCheckpoint module (ERC20DividendCheckpointSto
    • Interface for all security tokens (ISecurityToken.sol)
    • Base abstract contract to be implemented by all Transfer Manager modules (TransferManager.sol)
    • Storage layout for VolumeRestrictionTM (VolumeRestrictionTMStorage.sol)
    • Security Token contract (mock) (MockSecurityTokenLogic.sol)
    • Transfer Manager module for core transfer validation functionality (GeneralTransferManagerStorage.so
    • IERC1410.sol
    • VotingCheckpoint.sol
    • Factory for deploying WeightedVoteCheckpoint module (WeightedVoteCheckpointFactory.sol)
    • PLCRVotingCheckpointStorage.sol
    • IDataStore.sol
    • TestSTOFactory.sol
    • Ownable (Ownable.sol)
    • UpgradeabilityProxy (UpgradeabilityProxy.sol)
    • Mock Contract Not fit for production environment (MockFactory.sol)
    • Registry contract for issuers to register their security tokens (SecurityTokenRegistryMock.sol)
    • ICheckPermission.sol
    • Factory for deploying LockUpTransferManager module (LockUpTransferManagerFactory.sol)
    • Storage layout for the STO contract (STOStorage.sol)
    • Interface for the Polymath Security Token Registry contract (ISecurityTokenRegistry.sol)
    • Mock Contract Not fit for production environment (MockWrongTypeFactory.sol)
    • Transfer Manager module for core transfer validation functionality (KYCTransferManager.sol)
    • Factory for deploying EtherDividendCheckpoint module (EtherDividendCheckpointFactory.sol)
    • functionSigClash2.sol
    • Standard Interface of ERC1594 (IERC1594.sol)
    • TokenLib.sol
    • MakerDAOOracle.sol
    • Interface that any module contract should implement (Module.sol)
    • Interface that any module factory contract should implement (ModuleFactory.sol)
    • STGetter.sol
    • Interface to be implemented by upgradable token factories (IUpgradableTokenFactory.sol)
    • ERC20 interface (IERC20.sol)
    • KYCTransferManagerFactory.sol
    • Checkpoint module for issuing ether dividends (EtherDividendCheckpoint.sol)
    • functionSigClash1.sol
    • Wallet for core vesting escrow functionality (VestingEscrowWalletStorage.sol)
    • Interface for managing polymath feature switches (IFeatureRegistry.sol)
    • Encoder.sol
    • STRGetter.sol
    • OraclizeI.sol
    • Contract used to store layout for the CappedSTO storage (CappedSTOStorage.sol)
    • LockUpTransferManager.sol
    • Checkpoint module for token weighted vote (WeightedVoteCheckpoint.sol)
    • Registry contract to store registered modules (ModuleRegistry.sol)
    • Factory for deploying upgradable modules (UpgradableModuleFactory.sol)
    • Utility contract to allow pausing and unpausing of certain functions (Pausable.sol)
    • CountTransferManager module Proxy (CountTransferManagerProxy.sol)
    • Math (Math.sol)
    • IPolymathRegistry.sol
    • MockOracle.sol
    • Transfer Manager module for manually approving transactions between accounts (ManualApprovalTransfer
    • DecimalMath.sol
    • STO module for standard capped crowdsale (USDTieredSTO.sol)
    • Security Token contract (SecurityToken.sol)
    • PercentageTransferManager module Proxy (PercentageTransferManagerProxy.sol)
    • Interface to be implemented by all checkpoint modules (IBurn.sol)
    • Burn module for burning tokens and keeping track of burnt amounts (MockRedemptionManager.sol)
    • GeneralPermissionManager module Proxy (GeneralPermissionManagerProxy.sol)
    • STO module for sample implementation of a different crowdsale module (DummySTO.sol)
    • Factory for deploying CountTransferManager module (CountTransferManagerFactory.sol)
    • Interface to be implemented by all STO modules (ISTO.sol)
    • Data store contract that stores data for all the modules in a central contract. (DataStore.sol)
    • Transfer Manager module to automate blacklist and restrict transfers (BlacklistTransferManager.sol)
    • Contract used to store layout for the PreSaleSTO storage (PreSaleSTOStorage.sol)
    • Migrations.sol
    • Contract used to store layout for the CountTransferManager storage (BlacklistTransferManagerStorage.
    • STO module for private presales (PreSaleSTO.sol)
    • DataStoreStorage.sol
    • Storage layout for the ISTO contract (ISTOStorage.sol)
    • Registry contract for issuers to register their tickers and security tokens (SecurityTokenRegistry.s
    • Factory for deploying SignedTransferManager module (SignedTransferManagerFactory.sol)
    • Transfer Manager module for core transfer validation functionality (ERC20DividendCheckpointProxy.sol
    • Burn module for burning tokens and keeping track of burnt amounts (ScheduledCheckpoint.sol)
    • ERC20 interface (IPoly.sol)
    • Transfer Manager module for core transfer validation functionality (VolumeRestrictionTMProxy.sol)
    • Contract used to store layout for the DummySTO storage (DummySTOStorage.sol)
    • Burn module for burning tokens and keeping track of burnt amounts (TrackedRedemption.sol)
    • Interface that every module contract should implement (IModule.sol)
    • Contract used to store layout for the ManualApprovalTransferManager storage (ManualApprovalTransferM
    • Elliptic curve signature operations (ECDSA.sol)
    • Factory for deploying PercentageTransferManager module (PercentageTransferManagerFactory.sol)
    • Transfer Manager module for core transfer validation functionality (GeneralTransferManagerProxy.sol)
    • Utility contract for reusable code (Util.sol)
    • SecurityTokenStorage.sol
    • Contract used to store layout for the USDTieredSTO storage (USDTieredSTOStorage.sol)
    • Factory for deploying GeneralPermissionManager module (GeneralPermissionManagerFactory.sol)
    • Address.sol
    • StatusCodes.sol
    • Standard ERC20 token
    • Voting module for governance (PLCRVotingCheckpointProxy.sol)
    • CBOR.sol
    • Registry for managing polymath feature switches (FeatureRegistry.sol)
    • WeightedVoteCheckpointStorage.sol
    • Interface for the Polymath Module Registry contract (IModuleRegistry.sol)
    • Interface for security token proxy deployment (ISTFactory.sol)
    • Registry contract for issuers to register their security tokens (MockSTRGetter.sol)
    • Buffer.sol
    • BokkyPooBahsDateTimeLibrary.sol
    • Mock Contract Not fit for production environment (MockBurnFactory.sol)
    • Wallet for core vesting escrow functionality (LockUpTransferManagerStorage.sol)
    • Factory for deploying VolumeRestrictionTM module (VolumeRestrictionTMFactory.sol)
    • usingOraclize.sol
    • STO module for standard capped crowdsale (CappedSTO.sol)
    • Interface to MakerDAO Medianizer contract (IMedianizer.sol)
    • Interface to be implemented by all checkpoint modules (ICheckpoint.sol)
    • Factory for deploying ERC20DividendCheckpoint module (ERC20DividendCheckpointFactory.sol)
    • Factory for deploying GeneralTransferManager module (GeneralTransferManagerFactory.sol)
    • Escrow wallet module for vesting functionality (VestingEscrowWalletProxy.sol)
    • OZStorage.sol
    • Wallet for core vesting escrow functionality (VestingEscrowWallet.sol)
    • EternalStorage.sol
    • Factory for deploying PLCRVotingCheckpoint module (PLCRVotingCheckpointFactory.sol)
    • IVoting.sol
    • Transfer Manager for limiting maximum number of token holders (MockCountTransferManager.sol)
    • CappedSTO module Proxy (CappedSTOProxy.sol)
    • Storage for Module contract (ModuleStorage.sol)
  • wiki
    • Dividend-Module
    • Transfer-manager-results
    • General Permission Manager
    • Transfer-Feature
    • Voting-Checkpoint-Modules
    • USDTieredSTO
    • Contract-Manager
    • Vesting-Escrow-Wallet
    • General Transfer Manager
    • Permission-Manager
    • Dividends-Manager
    • Manual Approval Transfer Manager
    • Transfer-Ownership
    • Transfer-Manager
    • How-to-Use-the-Investor-Portal
    • Count Transfer Manager
    • VolumeRestrictionTransferManager
    • Time-Travel-(Contract-Testing)
    • Percentage Transfer Manager
    • Prerequisite-Instructions-for-Deploying-and-Setting-Up-the-Polymath-Contracts
    • How to Create and Launch an STO
    • Token-Manager
    • How to set up and use the POLY Faucet
    • Advanced PLCR Voting Checkpoint
    • Welcome to the Polymath Core Wiki
    • Capped STO
    • _Sidebar
    • CLI for Polymath-core
    • Lockup Transfer Manager
    • The-STO-Manager
    • Blacklist Transfer Manager (BTM)
  • misc
    • Multiple Transfer Managers
    • PolyOracle Encrypted URL
    • ethereum_status_codes
    • Flags List
    • Permissions List
Powered by GitBook
On this page
  • Contract Members
  • Functions
  • set
  • set
  • set
  • set
  • set
  • set
  • deleteArrayAddress
  • deleteArrayBytes32
  • deleteArrayUint
  • deleteArrayString
  • pushArray
  • pushArray
  • pushArray
  • pushArray
  • setArray
  • setArray
  • setArray
  • setArray
  • getArrayAddress
  • getArrayBytes32
  • getArrayUint
  • setArrayIndexValue
  • setArrayIndexValue
  • setArrayIndexValue
  • setArrayIndexValue
  • getUintValue
  • getBoolValue
  • getStringValue
  • getAddressValue
  • getBytes32Value
  • getBytesValue

Was this helpful?

  1. api

EternalStorage.sol

PreviousWallet for core vesting escrow functionality (VestingEscrowWallet.sol)NextFactory for deploying PLCRVotingCheckpoint module (PLCRVotingCheckpointFactory.sol)

Last updated 5 years ago

Was this helpful?

View Source:

↘ Derived Contracts: , , , ,

EternalStorage

Contract Members

Constants & Variables

mapping(bytes32 => uint256) internal uintStorage;
mapping(bytes32 => string) internal stringStorage;
mapping(bytes32 => address) internal addressStorage;
mapping(bytes32 => bytes) internal bytesStorage;
mapping(bytes32 => bool) internal boolStorage;
mapping(bytes32 => int256) internal intStorage;
mapping(bytes32 => bytes32) internal bytes32Storage;
mapping(bytes32 => bytes32[]) internal bytes32ArrayStorage;
mapping(bytes32 => uint256[]) internal uintArrayStorage;
mapping(bytes32 => address[]) internal addressArrayStorage;
mapping(bytes32 => string[]) internal stringArrayStorage;

Functions

set

Set the key values using the Overloaded set functions Ex- string version = "0.0.1"; replace to set(keccak256(abi.encodePacked("version"), "0.0.1"); same for the other variables as well some more example listed below ex1 - address securityTokenAddress = 0x123; replace to set(keccak256(abi.encodePacked("securityTokenAddress"), 0x123); ex2 - bytes32 tokenDetails = "I am ST20"; replace to set(keccak256(abi.encodePacked("tokenDetails"), "I am ST20"); ex3 - mapping(string => address) ownedToken; set(keccak256(abi.encodePacked("ownedToken", "Chris")), 0x123); ex4 - mapping(string => uint) tokenIndex; tokenIndex["TOKEN"] = 1; replace to set(keccak256(abi.encodePacked("tokenIndex", "TOKEN"), 1); ex5 - mapping(string => SymbolDetails) registeredSymbols; where SymbolDetails is the structure having different type of values as {uint256 date, string name, address owner} etc. registeredSymbols["TOKEN"].name = "MyFristToken"; replace to set(keccak256(abi.encodePacked("registeredSymbolsname", "TOKEN"), "MyFirstToken"); More generalized- set(keccak256(abi.encodePacked("registeredSymbols", "keyname"), "value");

function set(bytes32 _key, uint256 _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

uint256

set

function set(bytes32 _key, address _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

address

set

function set(bytes32 _key, bool _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

bool

set

function set(bytes32 _key, bytes32 _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

bytes32

set

function set(bytes32 _key, string _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

string

set

function set(bytes32 _key, bytes _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

bytes

deleteArrayAddress

Function used to delete the array element. Ex1- mapping(address => bytes32[]) tokensOwnedByOwner; For deleting the item from array developers needs to create a funtion for that similarly in this case we have the helper function deleteArrayBytes32() which will do it for us deleteArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1), 3); -- it will delete the index 3

function deleteArrayAddress(bytes32 _key, uint256 _index) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_index

uint256

deleteArrayBytes32

function deleteArrayBytes32(bytes32 _key, uint256 _index) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_index

uint256

deleteArrayUint

function deleteArrayUint(bytes32 _key, uint256 _index) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_index

uint256

deleteArrayString

function deleteArrayString(bytes32 _key, uint256 _index) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_index

uint256

pushArray

Below are the helper functions to facilitate storing arrays of different data types. Ex1- mapping(address => bytes32[]) tokensOwnedByTicker; tokensOwnedByTicker[owner] = tokensOwnedByTicker[owner].push("xyz"); replace with pushArray(keccak256(abi.encodePacked("tokensOwnedByTicker", owner), "xyz");

function pushArray(bytes32 _key, address _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

bytes32 type

_value

address

[uint256, string, bytes32, address] any of the data type in array

pushArray

function pushArray(bytes32 _key, bytes32 _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

bytes32

pushArray

function pushArray(bytes32 _key, string _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

string

pushArray

function pushArray(bytes32 _key, uint256 _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

uint256

setArray

used to intialize the array Ex1- mapping (address => address[]) public reputation; reputation[0x1] = new address; It can be replaced as setArray(hash('reputation', 0x1), new address);

function setArray(bytes32 _key, address[] _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

address[]

setArray

function setArray(bytes32 _key, uint256[] _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

uint256[]

setArray

function setArray(bytes32 _key, bytes32[] _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

bytes32[]

setArray

function setArray(bytes32 _key, string[] _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_value

string[]

getArrayAddress

Get functions to get the array of the required data type Ex1- mapping(address => bytes32[]) tokensOwnedByOwner; getArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1)); It return the bytes32 array Ex2- uint256 _len = tokensOwnedByOwner[0x1].length; replace with getArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1)).length;

function getArrayAddress(bytes32 _key) public view
returns(address[])

Arguments

Name

Type

Description

_key

bytes32

getArrayBytes32

function getArrayBytes32(bytes32 _key) public view
returns(bytes32[])

Arguments

Name

Type

Description

_key

bytes32

getArrayUint

function getArrayUint(bytes32 _key) public view
returns(uint256[])

Arguments

Name

Type

Description

_key

bytes32

setArrayIndexValue

set the value of particular index of the address array Ex1- mapping(bytes32 => address[]) moduleList; general way is -- moduleList[moduleType][index] = temp; It can be re-write as -- setArrayIndexValue(keccak256(abi.encodePacked('moduleList', moduleType)), index, temp);

function setArrayIndexValue(bytes32 _key, uint256 _index, address _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_index

uint256

_value

address

setArrayIndexValue

function setArrayIndexValue(bytes32 _key, uint256 _index, uint256 _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_index

uint256

_value

uint256

setArrayIndexValue

function setArrayIndexValue(bytes32 _key, uint256 _index, bytes32 _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_index

uint256

_value

bytes32

setArrayIndexValue

function setArrayIndexValue(bytes32 _key, uint256 _index, string _value) internal nonpayable

Arguments

Name

Type

Description

_key

bytes32

_index

uint256

_value

string

getUintValue

Get function use to get the value of the singleton state variables Ex1- string public version = "0.0.1"; string _version = getString(keccak256(abi.encodePacked("version")); Ex2 - assert(temp1 == temp2); replace to assert(getUint(keccak256(abi.encodePacked(temp1)) == getUint(keccak256(abi.encodePacked(temp2)); Ex3 - mapping(string => SymbolDetails) registeredSymbols; where SymbolDetails is the structure having different type of values as {uint256 date, string name, address owner} etc. string _name = getString(keccak256(abi.encodePacked("registeredSymbols_name", "TOKEN"));

function getUintValue(bytes32 _variable) public view
returns(uint256)

Arguments

Name

Type

Description

_variable

bytes32

getBoolValue

function getBoolValue(bytes32 _variable) public view
returns(bool)

Arguments

Name

Type

Description

_variable

bytes32

getStringValue

function getStringValue(bytes32 _variable) public view
returns(string)

Arguments

Name

Type

Description

_variable

bytes32

getAddressValue

function getAddressValue(bytes32 _variable) public view
returns(address)

Arguments

Name

Type

Description

_variable

bytes32

getBytes32Value

function getBytes32Value(bytes32 _variable) public view
returns(bytes32)

Arguments

Name

Type

Description

_variable

bytes32

getBytesValue

function getBytesValue(bytes32 _variable) public view
returns(bytes)

Arguments

Name

Type

Description

_variable

bytes32

contracts/storage/EternalStorage.sol
ModuleRegistry
ModuleRegistryProxy
SecurityTokenRegistry
SecurityTokenRegistryProxy
STRGetter
set(bytes32 _key, uint256 _value)
set(bytes32 _key, address _value)
set(bytes32 _key, bool _value)
set(bytes32 _key, bytes32 _value)
set(bytes32 _key, string _value)
set(bytes32 _key, bytes _value)
deleteArrayAddress(bytes32 _key, uint256 _index)
deleteArrayBytes32(bytes32 _key, uint256 _index)
deleteArrayUint(bytes32 _key, uint256 _index)
deleteArrayString(bytes32 _key, uint256 _index)
pushArray(bytes32 _key, address _value)
pushArray(bytes32 _key, bytes32 _value)
pushArray(bytes32 _key, string _value)
pushArray(bytes32 _key, uint256 _value)
setArray(bytes32 _key, address[] _value)
setArray(bytes32 _key, uint256[] _value)
setArray(bytes32 _key, bytes32[] _value)
setArray(bytes32 _key, string[] _value)
getArrayAddress(bytes32 _key)
getArrayBytes32(bytes32 _key)
getArrayUint(bytes32 _key)
setArrayIndexValue(bytes32 _key, uint256 _index, address _value)
setArrayIndexValue(bytes32 _key, uint256 _index, uint256 _value)
setArrayIndexValue(bytes32 _key, uint256 _index, bytes32 _value)
setArrayIndexValue(bytes32 _key, uint256 _index, string _value)
getUintValue(bytes32 _variable)
getBoolValue(bytes32 _variable)
getStringValue(bytes32 _variable)
getAddressValue(bytes32 _variable)
getBytes32Value(bytes32 _variable)
getBytesValue(bytes32 _variable)