function addApp(address app, uint32 chain, uint32 token, string proposal) external 
    {
        require(isVoter(tx.origin) && !mStopped && !isApper(app) && isChainCode(chain));
        
        if(!confirmation(uint256(keccak256(msg.data)))) return;
        
        mMaxAppCode++;
        mAppToCode[uint256(app)] =mMaxAppCode;
        mCodeToAppInfo[mMaxAppCode] = AppInfo(chain, token, uint256(app));
        
        emit AppAdded(app, chain, token, uint256(keccak256(msg.data)));
    }