diff --git a/CellFrameDashboardGUI/CellFrameDashboardGUI.pro b/CellFrameDashboardGUI/CellFrameDashboardGUI.pro
index 1c1fecd38a7b2f678444679f6967aee0bbfd75bf..ee40b83defb9b11a32c43257f2704df0a6770f80 100644
--- a/CellFrameDashboardGUI/CellFrameDashboardGUI.pro
+++ b/CellFrameDashboardGUI/CellFrameDashboardGUI.pro
@@ -213,7 +213,7 @@ INCLUDEPATH += $$PWD/../cellframe-node/dap-sdk/crypto/include/ \
     $$PWD/../cellframe-node/dap-sdk/crypto/src/XKCP/lib/common
 
 INCLUDEPATH += $$NODE_BUILD_PATH/dap-sdk/deps/include/json-c/
-LIBS += $$NODE_BUILD_PATH/dap-sdk/deps/lib/libdap_json-c.a
+LIBS += -L$$NODE_BUILD_PATH/dap-sdk/deps/lib/ -ldap_json-c
 #PRE_TARGETDEPS += $$NODE_BUILD_PATH/cellframe-sdk/deps/lib/libdap_json-c.a
 
 include (../cellframe-ui-sdk/chain/wallet/libdap-qt-chain-wallet.pri)
diff --git a/CellFrameDashboardGUI/DapApplication.cpp b/CellFrameDashboardGUI/DapApplication.cpp
index 0382619cd3a21c3461f630274fcd1c5145cb1117..a481571af17e7cf2f00e43275301a1769aebf30f 100644
--- a/CellFrameDashboardGUI/DapApplication.cpp
+++ b/CellFrameDashboardGUI/DapApplication.cpp
@@ -3,7 +3,6 @@
 #include <DapLogMessage.h>
 #include <QIcon>
 #include <QClipboard>
-#include <iostream>
 #include "quickcontrols/qrcodequickitem.h"
 #include "DapVpnOrdersModel.h"
 #include "dapvpnorderscontroller.h"
diff --git a/CellFrameDashboardGUI/DapApplication.h b/CellFrameDashboardGUI/DapApplication.h
index d72102a83a5082656aa6c8a9c2fb1c7ba78e3f63..f32aaa81f292d34c347cb7df956594a53913c3ba 100644
--- a/CellFrameDashboardGUI/DapApplication.h
+++ b/CellFrameDashboardGUI/DapApplication.h
@@ -15,10 +15,10 @@
 //#include "DapMath.h"
 //#include "DiagnosticWorker/models/NodeModel.h"
 
+#include <iostream>
 #include "DapLogger.h"
 #include "DapDataLocal.h"
 #include "DapLogHandler.h"
-#include <iostream>
 
 #include "StockDataWorker/stockdataworker.h"
 
diff --git a/CellFrameDashboardGUI/DapServiceController.cpp b/CellFrameDashboardGUI/DapServiceController.cpp
index e6b723e17f0722c2c9562ff754d3dc5b09185a2d..bc850b0e674be1f915dc903f24bd863b8b2f8438 100644
--- a/CellFrameDashboardGUI/DapServiceController.cpp
+++ b/CellFrameDashboardGUI/DapServiceController.cpp
@@ -291,6 +291,7 @@ void DapServiceController::registerCommand()
 
     m_transceivers.append(qMakePair(dynamic_cast<DapAbstractCommand*>(m_DAPRpcSocket->addService(new DapRemoveChainsOrGdbCommand("DapRemoveChainsOrGdbCommand",m_DAPRpcSocket))), QString("rcvRemoveResult")));
 
+    m_transceivers.append(qMakePair(dynamic_cast<DapAbstractCommand*>(m_DAPRpcSocket->addService(new DapGetFeeCommand("DapGetFeeCommand",m_DAPRpcSocket))), QString("rcvFee")));
 
 
 #ifdef SERVICE_IMITATOR
@@ -429,26 +430,26 @@ void DapServiceController::registerCommand()
         emit ordersReceived(orders);
     });
 
-    connect(this, &DapServiceController::networkStatesListReceived, [=] (const QVariant& networkList)
-    {
-        QByteArray  array = QByteArray::fromHex(networkList.toByteArray());
-        QList<DapNetworkStr> tempNetworks;
+//    connect(this, &DapServiceController::networkStatesListReceived, [=] (const QVariant& networkList)
+//    {
+//        QByteArray  array = QByteArray::fromHex(networkList.toByteArray());
+//        QList<DapNetworkStr> tempNetworks;
 
-        QDataStream in(&array, QIODevice::ReadOnly);
-        in >> tempNetworks;
+//        QDataStream in(&array, QIODevice::ReadOnly);
+//        in >> tempNetworks;
 
-        QList<QObject*> networks;
-        auto begin = tempNetworks.begin();
-        auto end = tempNetworks.end();
-        DapNetworkStr * network = nullptr;
-        for(;begin != end; ++begin)
-        {
-            network = new DapNetworkStr(*begin);
-            networks.append(network);
-        }
+//        QList<QObject*> networks;
+//        auto begin = tempNetworks.begin();
+//        auto end = tempNetworks.end();
+//        DapNetworkStr * network = nullptr;
+//        for(;begin != end; ++begin)
+//        {
+//            network = new DapNetworkStr(*begin);
+//            networks.append(network);
+//        }
 
-        emit networksStatesReceived(networks);
-    });
+//        emit networksStatesReceived(networks);
+//    });
 
     connect(this, &DapServiceController::networksListReceived, [=] (const QVariant& networksList)
     {
diff --git a/CellFrameDashboardGUI/DapServiceController.h b/CellFrameDashboardGUI/DapServiceController.h
index 3bfb674c0b6bb82f0784f883cbdb3d1fafb18daf..1330d961ca92346c660db0d9ecc317a8edaa3bd6 100644
--- a/CellFrameDashboardGUI/DapServiceController.h
+++ b/CellFrameDashboardGUI/DapServiceController.h
@@ -54,6 +54,7 @@
 #include "handlers/DapWalletActivateOrDeactivateCommand.h"
 #include "handlers/DapNodeRestart.h"
 #include "handlers/DapRemoveChainsOrGdbCommand.h"
+#include "handlers/DapGetFeeCommand.h"
 
 #include "NotifyController/DapNotifyController.h"
 #include "serviceClient/DapServiceClient.h"
@@ -234,7 +235,7 @@ signals:
     void ordersReceived(QList<QObject*> orderList);
 
     void networkStatesListReceived(const QVariant& networksStateList);
-    void networksStatesReceived(QList<QObject*> networksStatesList);
+//    void networksStatesReceived(QList<QObject*> networksStatesList);
 
     void networksReceived(QList<QObject*> networksList);
 
@@ -257,6 +258,8 @@ signals:
 
     void rcvActivateOrDeactivateReply(const QVariant& rcvData);
 
+    void rcvFee(const QVariant& rcvData);
+
 
     void dapRcvNotify(const QVariant& rcvData);
     void notifyReceived(const QVariant& rcvData);
diff --git a/CellFrameDashboardGUI/Modules/DapModulesController.cpp b/CellFrameDashboardGUI/Modules/DapModulesController.cpp
index 0e9bfa47b0e4e71647b4ed843115f36a8c2e0d24..0cb183514f672c7852cad5126e0f4f604e470bf7 100644
--- a/CellFrameDashboardGUI/Modules/DapModulesController.cpp
+++ b/CellFrameDashboardGUI/Modules/DapModulesController.cpp
@@ -35,6 +35,8 @@ DapModulesController::DapModulesController(QQmlApplicationEngine *appEngine, QOb
     connect(m_timerUpdateData, &QTimer::timeout, this, &DapModulesController::getNetworkList);
     connect(s_serviceCtrl, &DapServiceController::walletsListReceived, this, &DapModulesController::rcvWalletList);
     connect(s_serviceCtrl, &DapServiceController::networksListReceived, this, &DapModulesController::rcvNetList);
+    connect(s_serviceCtrl, &DapServiceController::rcvFee, this, &DapModulesController::rcvFee);
+
     m_timerUpdateData->start(10);
     m_timerUpdateData->start(5000);
 
@@ -215,8 +217,14 @@ void DapModulesController::restoreIndex()
     setCurrentWalletIndex(0);
 }
 
-QString DapModulesController::getComission(QString token, QString network)
+void DapModulesController::getComission(QString network)
 {
 //    qDebug()<<"get comisson" << token << network;
-    return "0.05";
+    s_serviceCtrl->requestToService("DapGetFeeCommand",QStringList()<<QString(network));
+}
+
+void DapModulesController::rcvFee(const QVariant &rcvData)
+{
+//    qDebug()<<rcvData;
+    emit sigFeeRcv(rcvData);
 }
diff --git a/CellFrameDashboardGUI/Modules/DapModulesController.h b/CellFrameDashboardGUI/Modules/DapModulesController.h
index 52bc22dfefac71b3f7a1dd325147d34a40d2bb4a..70e96bffd6da7f86c2cc63798b4aece22a0cdd6e 100644
--- a/CellFrameDashboardGUI/Modules/DapModulesController.h
+++ b/CellFrameDashboardGUI/Modules/DapModulesController.h
@@ -37,7 +37,7 @@ public:
     Q_PROPERTY (QString currentWalletName READ currentWalletName NOTIFY currentWalletNameChanged)
     QString currentWalletName(){return m_currentWalletName;};
 
-    Q_INVOKABLE QString getComission(QString token, QString network);
+    Q_INVOKABLE void getComission(QString network);
 
     QString testData{"test data"};
 
@@ -73,6 +73,7 @@ private slots:
 
     void rcvWalletList(const QVariant &rcvData);
     void rcvNetList(const QVariant &rcvData);
+    void rcvFee(const QVariant &rcvData);
 
 signals:
     void initDone();
@@ -81,6 +82,7 @@ signals:
     void netListUpdated();
     void currentWalletIndexChanged();
     void currentWalletNameChanged();
+    void sigFeeRcv(const QVariant &rcvData);
 
 };
 
diff --git a/CellFrameDashboardGUI/Modules/Wallet/DapModuleWallet.cpp b/CellFrameDashboardGUI/Modules/Wallet/DapModuleWallet.cpp
index b4ea7948ca907159cac3f4cfcedd0ccf2c2359c1..fefdafa7c2d59c6e3b732b3991ccedd21cb7bc29 100644
--- a/CellFrameDashboardGUI/Modules/Wallet/DapModuleWallet.cpp
+++ b/CellFrameDashboardGUI/Modules/Wallet/DapModuleWallet.cpp
@@ -92,6 +92,8 @@ QByteArray DapModuleWallet::getWalletsModel()
 void DapModuleWallet::rcvWalletInfo(const QVariant &rcvData)
 {
 //    qDebug()<<rcvData;
+    if(rcvData == "isEqual")
+        return;
     emit sigWalletInfo(rcvData);
 }
 
diff --git a/CellFrameDashboardGUI/logic/MainApplicationLogic.qml b/CellFrameDashboardGUI/logic/MainApplicationLogic.qml
index b00c23a6e383fc90cc2218286f6120824d5651bc..695d2140e529e886f0d773324264236ccee99079 100644
--- a/CellFrameDashboardGUI/logic/MainApplicationLogic.qml
+++ b/CellFrameDashboardGUI/logic/MainApplicationLogic.qml
@@ -192,6 +192,7 @@ QtObject {
 
     function rcvNetList(networksList)
     {
+//        console.log("net list rcv", networksList, dapNetworkModel.count, networksList.length)
         if (!networksList.length)
             console.error("networksList is empty")
         else
diff --git a/CellFrameDashboardGUI/main.cpp b/CellFrameDashboardGUI/main.cpp
index 57d84638de22968374283b1d10d28330fdafed56..7d56a4537242d75d2f8ba758061b200229eea009 100644
--- a/CellFrameDashboardGUI/main.cpp
+++ b/CellFrameDashboardGUI/main.cpp
@@ -120,11 +120,14 @@ const int OS_WIN_FLAG = 0;
 const int OS_WIN_FLAG = 1;
 #endif
 
-#ifdef Q_OS_MAC
+//#ifdef Q_OS_MAC
+//const int USING_NOTIFY = 0;
+//#else
+//const int USING_NOTIFY = 1;
+//#endif
+
+
 const int USING_NOTIFY = 0;
-#else
-const int USING_NOTIFY = 1;
-#endif
 
 QByteArray scaleCalculate(int argc, char *argv[])
 {
diff --git a/CellFrameDashboardGUI/qml.qrc b/CellFrameDashboardGUI/qml.qrc
index a61f5900136d9b088aad8c0dad3c8acba5e3f74f..9dd4858f70d45444820d01306784af28e1c62e6e 100644
--- a/CellFrameDashboardGUI/qml.qrc
+++ b/CellFrameDashboardGUI/qml.qrc
@@ -333,5 +333,6 @@
         <file>Resources/BlackTheme/icons/other/icon_reload_hover.svg</file>
         <file>Resources/BlackTheme/icons/other/icon_pause_hover.svg</file>
         <file>screen/desktop/Dashboard/DapWalletComboBox.qml</file>
+        <file>screen/desktop/controls/DapFeePopup.qml</file>
     </qresource>
 </RCC>
diff --git a/CellFrameDashboardGUI/screen/desktop/Dashboard/DapDashboardTab.qml b/CellFrameDashboardGUI/screen/desktop/Dashboard/DapDashboardTab.qml
index 18fbeff8d7c309bf2eb2fb44271985578d3c2209..9d131a59c73a825022d1240ab40f670fab697b87 100644
--- a/CellFrameDashboardGUI/screen/desktop/Dashboard/DapDashboardTab.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Dashboard/DapDashboardTab.qml
@@ -237,7 +237,7 @@ DapPage
 
             var item = dapModelWallets.get(modulesController.currentWalletIndex);
 
-//            console.log(modulesController.currentWalletIndex, item.status)
+//            console.log(model)
 
             logicWallet.updateWallet(model)
 
diff --git a/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapLastActionsRightPanelForm.ui.qml b/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapLastActionsRightPanelForm.ui.qml
index c881de24d90c03b3ffe0945e90f61ace1892fb83..010cfd7cfb4a933dffa0be5f1d526a3a384809a2 100755
--- a/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapLastActionsRightPanelForm.ui.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapLastActionsRightPanelForm.ui.qml
@@ -143,18 +143,15 @@ DapRectangleLitAndShaded
                         toolTip.x: -toolTip.width/2 + 8
 
                         enabled: tx_status === "DECLINED" || tx_status === "PROCESSING" ? false :
-                                  network === "subzero" || network === "Backbone" ||
-                                  network === "mileena" || network === "kelvpn-minkowski"  ?
+                                  network !== "private"?
                                   true : false
 
                         indicatorSrcNormal: tx_status === "DECLINED"  || tx_status === "PROCESSING" ? disabledIcon :
-                                                network === "subzero" || network === "Backbone" ||
-                                                network === "mileena" || network === "kelvpn-minkowski"  ?
+                                                network !== "private"?
                                                 normalIcon : disabledIcon
 
                         indicatorSrcHover: tx_status === "DECLINED"   || tx_status === "PROCESSING" ? disabledIcon :
-                                                network === "subzero" || network === "Backbone" ||
-                                                network === "mileena" || network === "kelvpn-minkowski"  ?
+                                                network !== "private"?
                                                 hoverIcon : disabledIcon
 
                         onClicked: Qt.openUrlExternally("https://explorer.cellframe.net/transaction/" + network + "/" + tx_hash)
diff --git a/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapNewPaymentMainRightPanel.qml b/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapNewPaymentMainRightPanel.qml
index 14207569e65e0209efde7b0b896cb160bdcb83a3..a9682718f3234725769b3bafa9a5afca1ffb2eee 100644
--- a/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapNewPaymentMainRightPanel.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapNewPaymentMainRightPanel.qml
@@ -113,9 +113,9 @@ DapNewPaymentMainRightPanelForm
                 console.log("dapWalletMessagePopup.smartOpen")
                 dapWalletMessagePopup.smartOpen(
                             qsTr("Confirming the transaction"),
-                            qsTr("Attention, the transaction fee will be ")
-                            + modulesController.getComission("","")
-                            + " " + dapComboBoxToken.displayText )
+                            qsTr("Attention, the transaction fee will be "))
+
+                modulesController.getComission(dapComboboxNetwork.displayText)
 
             }
         }
@@ -140,10 +140,12 @@ DapNewPaymentMainRightPanelForm
             }
             else
             {
-
                 var amount = mathWorker.coinsToBalance(dapTextInputAmountPayment.text)
-                var commission = modulesController.getComission(dapComboBoxToken.displayText, dapComboboxNetwork.displayText)
-                var amountWithCommission = mathWorker.sumCoins(dapTextInputAmountPayment.text, commission, false)
+                var commission = mathWorker.sumCoins(dapWalletMessagePopup.feeStruct.network_fee.fee_datoshi,
+                                                     dapWalletMessagePopup.feeStruct.validator_fee.average_fee_datoshi,
+                                                     false)
+                var fee = dapWalletMessagePopup.feeStruct.validator_fee.average_fee_datoshi
+                var amountWithCommission = mathWorker.sumCoins(dapTextInputAmountPayment.text, commission, true)
 
                 commission = mathWorker.coinsToBalance(commission)
                 var full_balance = dapComboBoxTokenModel.get(dapComboBoxToken.currentIndex).coins
@@ -171,7 +173,7 @@ DapNewPaymentMainRightPanelForm
                     console.log("   wallet to:", dapTextInputRecipientWalletAddress.text)
                     console.log("   token:", dapComboBoxToken.displayText)
                     console.log("   amount:", amount)
-                    console.log("   comission:", commission)
+                    console.log("   fee:", fee)
 
 
 
@@ -179,7 +181,7 @@ DapNewPaymentMainRightPanelForm
                         dapComboboxNetwork.displayText,
                         walletInfo.name,
                         dapTextInputRecipientWalletAddress.text,
-                        dapComboBoxToken.displayText, amount, commission)
+                        dapComboBoxToken.displayText, amount, fee)
 
                     walletModule.createTx(argsRequest);
                 }
diff --git a/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapNewPaymentMainRightPanelForm.qml b/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapNewPaymentMainRightPanelForm.qml
index ed79f213ccb3ae025d455c7d4de67f8e4fa6f475..8538d36776c7c0e1b9948f5d7051f1b5b6fbde77 100644
--- a/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapNewPaymentMainRightPanelForm.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Dashboard/RightPanel/DapNewPaymentMainRightPanelForm.qml
@@ -45,7 +45,6 @@ DapRectangleLitAndShaded
     property alias dapTextInputRecipientWalletAddress: textInputRecipientWalletAddress
 
     property alias balance: balance
-
 //    signal calculatePrecentAmount(var precent)
 
     color: currTheme.secondaryBackground
@@ -53,10 +52,22 @@ DapRectangleLitAndShaded
     shadowColor: currTheme.shadowColor
     lightColor: currTheme.reflectionLight
 
-    DapMessagePopup
+    DapFeePopup
     {
         id: walletMessagePopup
         dapButtonCancel.visible: true
+
+        Connections
+        {
+            target: modulesController
+            function onSigFeeRcv(feeDoc)
+            {
+                walletMessagePopup.feeStruct = JSON.parse(feeDoc)
+                walletMessagePopup.isLoading = true
+
+//                console.log(walletMessagePopup.feeStruct, feeDoc)
+            }
+        }
     }
 
     contentData:
diff --git a/CellFrameDashboardGUI/screen/desktop/Dashboard/logic/LogicWallet.qml b/CellFrameDashboardGUI/screen/desktop/Dashboard/logic/LogicWallet.qml
index 6d1a5e1b2b3f285dd1cac1ea4f7bfbcaca8955ff..7d3985d0c646cc752cdcb27310434bf74ecaf125 100644
--- a/CellFrameDashboardGUI/screen/desktop/Dashboard/logic/LogicWallet.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Dashboard/logic/LogicWallet.qml
@@ -57,7 +57,7 @@ QtObject {
     }
 
     function updateWallet(wallet)
-    {
+    {        
         var jsonDocument = JSON.parse(wallet)
 
 //        console.log("AAAAAAAAAAAAA", dapModelWallets.count, wallet, jsonDocument)
diff --git a/CellFrameDashboardGUI/screen/desktop/Diagnostic/DapDiagnosticTopPanel.qml b/CellFrameDashboardGUI/screen/desktop/Diagnostic/DapDiagnosticTopPanel.qml
index f0844b4f4ebe44f616e320415cd2577aab650ab4..a952204ecab857694e440fb46e70274d629bdeda 100644
--- a/CellFrameDashboardGUI/screen/desktop/Diagnostic/DapDiagnosticTopPanel.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Diagnostic/DapDiagnosticTopPanel.qml
@@ -151,6 +151,7 @@ Controls.DapTopPanel {
             Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
             Layout.preferredHeight: 26
             Layout.preferredWidth: 46
+            indicatorSize: 30
 
             backgroundColor: currTheme.mainBackground
             borderColor: currTheme.reflectionLight
diff --git a/CellFrameDashboardGUI/screen/desktop/Diagnostic/Parts/TextInfoElement.qml b/CellFrameDashboardGUI/screen/desktop/Diagnostic/Parts/TextInfoElement.qml
index 0158c313b59c68097078edf35841a288a12d6bae..11cc6a0bbdc509f71b3674a9ce7011545aec0749 100644
--- a/CellFrameDashboardGUI/screen/desktop/Diagnostic/Parts/TextInfoElement.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Diagnostic/Parts/TextInfoElement.qml
@@ -44,6 +44,7 @@ RowLayout{
         Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
         Layout.preferredHeight: 26
         Layout.preferredWidth: 46
+        indicatorSize: 30
 //        Layout.rightMargin: 16
 
         backgroundColor: currTheme.mainBackground
diff --git a/CellFrameDashboardGUI/screen/desktop/History/DapHistoryRightPanel.qml b/CellFrameDashboardGUI/screen/desktop/History/DapHistoryRightPanel.qml
index 13c73c4aca16390258a22a16e1e88f9495038715..32218e33c61557f48930e07649f1769c9dac93c1 100755
--- a/CellFrameDashboardGUI/screen/desktop/History/DapHistoryRightPanel.qml
+++ b/CellFrameDashboardGUI/screen/desktop/History/DapHistoryRightPanel.qml
@@ -13,11 +13,11 @@ Item
 
     ColumnLayout {
         anchors.fill: parent
-        spacing: 0 
+        spacing: 0
 
         Text {
-            Layout.minimumHeight: 35 
-            Layout.maximumHeight: 35 
+            Layout.minimumHeight: 35
+            Layout.maximumHeight: 35
             Layout.leftMargin: 16
             verticalAlignment: Text.AlignVCenter
             font: mainFont.dapFont.bold14
@@ -27,7 +27,7 @@ Item
 
         ColumnLayout
         {
-//            Layout.margins: 3 
+//            Layout.margins: 3
             Layout.leftMargin: 3
             Layout.topMargin: 5
             spacing: 6
@@ -38,8 +38,8 @@ Item
                 Layout.fillWidth: true
                 nameRadioButton: qsTr("All statuses")
                 checked: true
-                indicatorInnerSize: 46 
-                spaceIndicatorText: 3 
+                indicatorInnerSize: 46
+                spaceIndicatorText: 3
                 fontRadioButton: mainFont.dapFont.regular16
                 implicitHeight: indicatorInnerSize
                 onClicked: {
@@ -53,8 +53,8 @@ Item
                 id: buttonSelectionPending
                 Layout.fillWidth: true
                 nameRadioButton: qsTr("Pending")
-                indicatorInnerSize: 46 
-                spaceIndicatorText: 3 
+                indicatorInnerSize: 46
+                spaceIndicatorText: 3
                 fontRadioButton: mainFont.dapFont.regular16
                 implicitHeight: indicatorInnerSize
                 onClicked: {
@@ -68,8 +68,8 @@ Item
                 id: buttonSelectionSent
                 Layout.fillWidth: true
                 nameRadioButton: qsTr("Sent")
-                indicatorInnerSize: 46 
-                spaceIndicatorText: 3 
+                indicatorInnerSize: 46
+                spaceIndicatorText: 3
                 fontRadioButton: mainFont.dapFont.regular16
                 implicitHeight: indicatorInnerSize
                 onClicked: {
@@ -83,8 +83,8 @@ Item
                 id: buttonSelectionReceived
                 Layout.fillWidth: true
                 nameRadioButton: qsTr("Received")
-                indicatorInnerSize: 46 
-                spaceIndicatorText: 3 
+                indicatorInnerSize: 46
+                spaceIndicatorText: 3
                 fontRadioButton: mainFont.dapFont.regular16
                 implicitHeight: indicatorInnerSize
                 onClicked: {
@@ -98,8 +98,8 @@ Item
                 id: buttonSelectionError
                 Layout.fillWidth: true
                 nameRadioButton: qsTr("Declined")
-                indicatorInnerSize: 46 
-                spaceIndicatorText: 3 
+                indicatorInnerSize: 46
+                spaceIndicatorText: 3
                 fontRadioButton: mainFont.dapFont.regular16
                 implicitHeight: indicatorInnerSize
                 onClicked: {
@@ -147,14 +147,14 @@ Item
 
                 anchors.centerIn: parent
                 anchors.fill: parent
-                anchors.margins: 10 
-                anchors.leftMargin: 15 
+                anchors.margins: 10
+                anchors.leftMargin: 15
                 anchors.rightMargin: 15
 
                 dapIndicatorImageNormal: "qrc:/Resources/"+pathTheme+"/icons/other/icon_arrow_down.png"
                 dapIndicatorImageActive: "qrc:/Resources/"+pathTheme+"/icons/other/ic_arrow_up.png"
-                dapSidePaddingNormal: 10 
-                dapSidePaddingActive: 10 
+                dapSidePaddingNormal: 10
+                dapSidePaddingActive: 10
                 dapNormalColorText: currTheme.white
                 dapHilightColorText: currTheme.mainBackground
                 dapNormalColorTopText: currTheme.white
@@ -163,26 +163,26 @@ Item
                 dapHilightTopColor: currTheme.secondaryBackground //"blue" //currTheme.backgroundMainScreen
                 dapNormalColor: currTheme.secondaryBackground
                 dapNormalTopColor: currTheme.secondaryBackground //"blue" //currTheme.backgroundMainScreen
-                dapWidthPopupComboBoxNormal: 318 
-                dapWidthPopupComboBoxActive: 318 
-                dapHeightComboBoxNormal: 46 
-                dapHeightComboBoxActive: 46 
-    //            dapBottomIntervalListElement: 8 
+                dapWidthPopupComboBoxNormal: 318
+                dapWidthPopupComboBoxActive: 318
+                dapHeightComboBoxNormal: 46
+                dapHeightComboBoxActive: 46
+    //            dapBottomIntervalListElement: 8
                 dapTopEffect: false
                 x: popup.visible ? dapSidePaddingActive * (-1) : dapSidePaddingNormal
-                dapPaddingTopItemDelegate: 8 
-                dapHeightListElement: 42 
-    //            dapIntervalListElement: 10 
-                dapIndicatorWidth: 24 
+                dapPaddingTopItemDelegate: 8
+                dapHeightListElement: 42
+    //            dapIntervalListElement: 10
+                dapIndicatorWidth: 24
                 dapIndicatorHeight: dapIndicatorWidth
-                dapIndicatorLeftInterval: 16 
+                dapIndicatorLeftInterval: 16
                 dapColorTopNormalDropShadow: "#00000000"
                 dapColorDropShadow: currTheme.shadowColor
                 dapTextFont:  mainFont.dapFont.regular16
                 dapDefaultMainLineText: "All time"
                 dapIsDefaultNeedToAppend: true
-                dapRangeElementWidth: 74 
-                dapRangeSpacing: 6 
+                dapRangeElementWidth: 74
+                dapRangeSpacing: 6
                 dapRangeDefaultText: "dd.mm.yyyy"
                 dapInactiveRangeTextFont:  mainFont.dapFont.regular14
                 dapUnselectedRangeColorTopText: "#ACAAB5"
@@ -192,18 +192,18 @@ Item
                 dapCalendars:
                     DapCalendar
                     {
-                        dapLeftPadding: 16 
-                        dapRightPadding: 16 
-                        dapTopPadding: 0 
-                        dapBottomPadding: 16 
-                        dapTitleTopPadding: 20 
-                        dapTitleBottomPadding: 14 
-                        dapButtonInterval: 8 
-                        dapTitleWidth: 108 
-                        dapDayWidth: 24 
-                        dapDayHeight: 24 
-                        dapDayLeftInterval: 8 
-                        dapDayTopInterval: 2 
+                        dapLeftPadding: 16
+                        dapRightPadding: 16
+                        dapTopPadding: 0
+                        dapBottomPadding: 16
+                        dapTitleTopPadding: 20
+                        dapTitleBottomPadding: 14
+                        dapButtonInterval: 8
+                        dapTitleWidth: 108
+                        dapDayWidth: 24
+                        dapDayHeight: 24
+                        dapDayLeftInterval: 8
+                        dapDayTopInterval: 2
                         dapCalendarFont:  mainFont.dapFont.regular14
 
                         dapCalendarBackgroundColor: currTheme.mainBackground
diff --git a/CellFrameDashboardGUI/screen/desktop/History/DapHistoryScreen.qml b/CellFrameDashboardGUI/screen/desktop/History/DapHistoryScreen.qml
index da85c5076032db62c97fe303a3a1e5cee9d42262..5b04d139d530a91e19b4ff11fbddc5b816a6e6ea 100755
--- a/CellFrameDashboardGUI/screen/desktop/History/DapHistoryScreen.qml
+++ b/CellFrameDashboardGUI/screen/desktop/History/DapHistoryScreen.qml
@@ -183,18 +183,15 @@ Page
                     toolTip.x: -toolTip.width/2 + 8
 
                     enabled: tx_status === "DECLINED" || tx_status === "PROCESSING" ? false :
-                              network === "subzero" || network === "Backbone" ||
-                              network === "mileena" || network === "kelvpn-minkowski"  ?
+                              network !== "private"?
                               true : false
 
                     indicatorSrcNormal: tx_status === "DECLINED"  || tx_status === "PROCESSING" ? disabledIcon :
-                                            network === "subzero" || network === "Backbone" ||
-                                            network === "mileena" || network === "kelvpn-minkowski"  ?
+                                            network !== "private"?
                                             normalIcon : disabledIcon
 
                     indicatorSrcHover: tx_status === "DECLINED"   || tx_status === "PROCESSING" ? disabledIcon :
-                                            network === "subzero" || network === "Backbone" ||
-                                            network === "mileena" || network === "kelvpn-minkowski"  ?
+                                            network !== "private"?
                                             hoverIcon : disabledIcon
                 }
             }
diff --git a/CellFrameDashboardGUI/screen/desktop/Networks/DapNetworksPanel.qml b/CellFrameDashboardGUI/screen/desktop/Networks/DapNetworksPanel.qml
index b4fbdd1168e1232fa7e9732e381368b0d3920394..20b1a7aafe943bf87bed00edf27611115d7aed69 100644
--- a/CellFrameDashboardGUI/screen/desktop/Networks/DapNetworksPanel.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Networks/DapNetworksPanel.qml
@@ -180,12 +180,18 @@ Item {
                 logicNet.notifyModelUpdate(netState)
         }
 
-        function onNetworksStatesReceived(networksStatesList)
+        function onNetworkStatesListReceived(rcvData)
         {
-            if (!logicNet.isNetworkListsEqual(networksModel, networksStatesList)) {
+
+            var jsonDocument = JSON.parse(rcvData)
+//            console.log("RCV NET STATES", jsonDocument, rcvData)
+
+            if (!logicNet.isNetworkListsEqual(networksModel, jsonDocument)) {
                 networkList.closePopups()
             }
-            logicNet.modelUpdate(networksStatesList)
+
+
+            logicNet.modelUpdate(jsonDocument)
             logicNet.updateContentInAllOpenedPopups(networksModel)
         }
     }
diff --git a/CellFrameDashboardGUI/screen/desktop/Networks/logic/LogicNetworks.qml b/CellFrameDashboardGUI/screen/desktop/Networks/logic/LogicNetworks.qml
index 39d25e5f0325e5b65acffa968662b22f065a9134..7ed62106807e50ce82c494955cccbb6e45a4d6e9 100644
--- a/CellFrameDashboardGUI/screen/desktop/Networks/logic/LogicNetworks.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Networks/logic/LogicNetworks.qml
@@ -52,13 +52,13 @@ QtObject {
             networksModel.clear()
             for (var i = 0; i < networksStatesList.length; ++i)
             {
-                networksModel.append({ "name" : networksStatesList[i].name,
-                                                "networkState" : networksStatesList[i].networkState,
-                                                "targetState" : networksStatesList[i].targetState,
-                                                "errorMessage" : networksStatesList[i].errorMessage,
-                                                "linksCount" : networksStatesList[i].linksCount,
-                                                "activeLinksCount" : networksStatesList[i].activeLinksCount,
-                                                "nodeAddress" : networksStatesList[i].nodeAddress})
+                networksModel.append({  "name" : networksStatesList[i].name,
+                                        "networkState" : networksStatesList[i].networkState,
+                                        "targetState" : networksStatesList[i].targetState,
+                                        "errorMessage" : networksStatesList[i].errorMessage,
+                                        "linksCount" : networksStatesList[i].linksCount,
+                                        "activeLinksCount" : networksStatesList[i].activeLinksCount,
+                                        "nodeAddress" : networksStatesList[i].nodeAddress})
             }
         } else {
             updateContentForExistingModel(networksModel, networksStatesList)
diff --git a/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapAppearanceBlock.qml b/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapAppearanceBlock.qml
index d96069e9e662dd2661f16091ed6670ef60eb7fd4..73196f43069cb6027d78717bb8a8b8e455d2b526 100644
--- a/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapAppearanceBlock.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapAppearanceBlock.qml
@@ -272,6 +272,7 @@ ColumnLayout
                         Layout.preferredHeight: 26
                         Layout.preferredWidth: 46
 //                        Layout.rightMargin: 19
+                        indicatorSize: 30
 
                         backgroundColor: currTheme.mainBackground
                         borderColor: currTheme.reflectionLight
diff --git a/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapExtensionsBlock.qml b/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapExtensionsBlock.qml
index f8f45b9c770526a838ab9e4ae6035edb42321ef8..059b284b0347b8c03b67f8ec81633bee88f1e798 100644
--- a/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapExtensionsBlock.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapExtensionsBlock.qml
@@ -140,6 +140,7 @@ Page
                                     Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
                                     Layout.preferredHeight: 26
                                     Layout.preferredWidth: 46
+                                    indicatorSize: 30
 
                                     backgroundColor: currTheme.mainBackground
                                     borderColor: currTheme.reflectionLight
diff --git a/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapLinksBlock.qml b/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapLinksBlock.qml
index f60d3f5ed184f4e188f5213d36e89bbe190c3b71..63fa6599baa037a8e2d3da4b5bb3780e4417833a 100644
--- a/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapLinksBlock.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Settings/MenuBlocks/DapLinksBlock.qml
@@ -124,6 +124,7 @@ ColumnLayout
                         Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
                         Layout.preferredHeight: 26
                         Layout.preferredWidth: 46
+                        indicatorSize: 30
 
                         backgroundColor: currTheme.secondaryBackground
                         borderColor: currTheme.reflectionLight
diff --git a/CellFrameDashboardGUI/screen/desktop/Stock/parts/MyOrders/RightPanels/DefaultRightPanel.qml b/CellFrameDashboardGUI/screen/desktop/Stock/parts/MyOrders/RightPanels/DefaultRightPanel.qml
index 0e74716cdd46427636c3648f43a63276342db29d..4b55876af621f1c7266470f6f70d82f94b519316 100644
--- a/CellFrameDashboardGUI/screen/desktop/Stock/parts/MyOrders/RightPanels/DefaultRightPanel.qml
+++ b/CellFrameDashboardGUI/screen/desktop/Stock/parts/MyOrders/RightPanels/DefaultRightPanel.qml
@@ -170,7 +170,9 @@ Item
             visible: false
             Layout.topMargin: 10
             height: 35
-            itemHorisontalBorder: 41
+            itemHorisontalBorder: 40
+
+            radius: 30
 
             selectorModel: sideModel
 
diff --git a/CellFrameDashboardGUI/screen/desktop/VPNClient/RightPanel/VPNOrders.qml b/CellFrameDashboardGUI/screen/desktop/VPNClient/RightPanel/VPNOrders.qml
index a7309afecf32c99c0b50530ae45e630681528934..69856be1b57d66c4780456d6d07c321656fac19e 100644
--- a/CellFrameDashboardGUI/screen/desktop/VPNClient/RightPanel/VPNOrders.qml
+++ b/CellFrameDashboardGUI/screen/desktop/VPNClient/RightPanel/VPNOrders.qml
@@ -195,6 +195,7 @@ Item
                                 Layout.preferredHeight: 26 * pt
                                 Layout.preferredWidth: 46 * pt
                                 Layout.rightMargin: 10 * pt
+                                indicatorSize: 30
 
                                 backgroundColor: currTheme.backgroundMainScreen
                                 borderColor: currTheme.reflectionLight
diff --git a/CellFrameDashboardGUI/screen/desktop/controls/DapFeePopup.qml b/CellFrameDashboardGUI/screen/desktop/controls/DapFeePopup.qml
new file mode 100644
index 0000000000000000000000000000000000000000..20d4a1ab56a66eec772f98b559d38b77963ca68d
--- /dev/null
+++ b/CellFrameDashboardGUI/screen/desktop/controls/DapFeePopup.qml
@@ -0,0 +1,319 @@
+import QtQuick 2.4
+import QtQuick.Controls 2.5
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.0
+
+import "qrc:/widgets"
+
+Popup {
+    id: dialog
+
+    signal signalAccept(var accept);
+    property alias dapButtonOk: buttonOk
+    property alias dapButtonCancel: buttonCancel
+
+    property alias fee1Layout: fee1Layout
+    property alias fee1Name  : fee1Name
+    property alias fee1Value : fee1Value
+
+    property alias fee2Layout: fee2Layout
+    property alias fee2Name  : fee2Name
+    property alias fee2Value : fee2Value
+
+    property alias fee3Layout: fee3Layout
+    property alias fee3Name  : fee3Name
+    property alias fee3Value : fee3Value
+
+    property bool isLoading: false
+
+    property var feeStruct:
+    {
+        "network": "",
+        "network_fee": {
+            "fee_addr": "",
+            "fee_coins": "0.0",
+            "fee_datoshi": "0",
+            "fee_ticker": ""
+        },
+        "validator_fee": {
+            "average_fee_coins": "0.0",
+            "average_fee_datoshi": "0",
+            "fee_ticker": "",
+            "max_fee_coins": "0.0",
+            "max_fee_datoshi": "0",
+            "min_fee_coins": "0.0",
+            "min_fee_datoshi": "0"
+        }
+    }
+
+    width: 306
+    height: 298
+
+    parent: Overlay.overlay
+    x: (parent.width - width) * 0.5
+    y: (parent.height - height) * 0.5
+
+    scale: mainWindow.scale
+
+    modal: true
+
+    closePolicy: Popup.NoAutoClose
+
+    background:
+    Item
+    {
+        Rectangle{
+            id: backgroundFrame
+            anchors.fill: parent
+            border.width: 0
+            radius: 16
+            color: currTheme.secondaryBackground
+        }
+        InnerShadow {
+            anchors.fill: backgroundFrame
+            source: backgroundFrame
+            color: currTheme.reflection
+            horizontalOffset: 1
+            verticalOffset: 1
+            radius: 0
+            samples: 10
+            opacity: backgroundFrame.opacity
+            fast: true
+            cached: true
+        }
+        DropShadow {
+            anchors.fill: backgroundFrame
+            source: backgroundFrame
+            color: currTheme.shadowMain
+            horizontalOffset: 5
+            verticalOffset: 5
+            radius: 10
+            samples: 20
+            opacity: backgroundFrame.opacity ? 0.42 : 0
+            cached: true
+        }
+    }
+    contentItem:
+    ColumnLayout
+    {
+        anchors.fill: parent
+        anchors.margins: 32
+        spacing: 0
+
+        Text {
+            id: dapContentTitle
+            Layout.fillWidth: true
+            font: mainFont.dapFont.medium16
+            color: currTheme.white
+            verticalAlignment: Text.AlignVCenter
+            horizontalAlignment: Text.AlignHCenter
+            wrapMode: Text.WordWrap
+        }
+
+        Text {
+            id: dapContentText
+            Layout.fillWidth: true
+            Layout.topMargin: 16
+            font: mainFont.dapFont.medium14
+            color: currTheme.white
+            verticalAlignment: Text.AlignVCenter
+            horizontalAlignment: Text.AlignHCenter
+            wrapMode: Text.WordWrap
+        }
+
+        Rectangle{
+            Layout.topMargin: 16
+            Layout.fillWidth: true
+            height: 1
+            color: currTheme.rowHover
+        }
+
+        DapLoadIndicator {
+            Layout.topMargin: 16
+            visible: !isLoading
+            Layout.alignment: Qt.AlignHCenter
+
+            indicatorSize: 45
+            countElements: 8
+            elementSize: 7
+
+            running: !isLoading
+        }
+
+        ColumnLayout
+        {
+            visible: isLoading
+            Layout.fillWidth: true
+
+            RowLayout{
+                id: fee1Layout
+                Layout.fillWidth: true
+                Layout.topMargin: 16
+                spacing: 0
+
+                Text{
+                    id:fee1Name
+                    Layout.fillWidth: true
+                    text:"Network:"
+                    color: currTheme.gray
+                    font: mainFont.dapFont.medium14
+                    verticalAlignment: Text.AlignVCenter
+                    horizontalAlignment: Text.AlignLeft
+                }
+
+                Item{
+                    Layout.minimumWidth: 150
+                    height: 20
+
+                    DapBigText
+                    {
+                        id: fee1Value
+                        anchors.fill: parent
+                        textFont: mainFont.dapFont.medium14
+                        textColor: currTheme.white
+                        fullText: feeStruct.network_fee.fee_coins + " " + feeStruct.network_fee.fee_ticker
+                        horizontalAlign: Text.AlignRight
+                    }
+                }
+            }
+
+            RowLayout{
+                id: fee2Layout
+                Layout.fillWidth: true
+                Layout.topMargin: 12
+                spacing: 0
+
+                Text{
+                    id:fee2Name
+                    Layout.fillWidth: true
+                    text:"Validator:"
+                    color: currTheme.gray
+                    font: mainFont.dapFont.medium14
+                    verticalAlignment: Text.AlignVCenter
+                    horizontalAlignment: Text.AlignLeft
+                }
+
+                Item{
+                    Layout.minimumWidth: 150
+                    height: 20
+
+                    DapBigText
+                    {
+                        id: fee2Value
+                        anchors.fill: parent
+                        textFont: mainFont.dapFont.medium14
+                        textColor: currTheme.white
+                        fullText: feeStruct.validator_fee.average_fee_coins + " " + feeStruct.validator_fee.fee_ticker
+                        horizontalAlign: Text.AlignRight
+                    }
+                }
+            }
+
+            RowLayout{
+                id: fee3Layout
+                visible: false
+                Layout.fillWidth: true
+                Layout.topMargin: 12
+                spacing: 0
+
+                Text{
+                    id:fee3Name
+                    Layout.fillWidth: true
+                    text:"Service:"
+                    color: currTheme.gray
+                    font: mainFont.dapFont.medium14
+                    verticalAlignment: Text.AlignVCenter
+                    horizontalAlignment: Text.AlignLeft
+                }
+
+                Item{
+                    Layout.minimumWidth: 150
+                    height: 20
+
+                    DapBigText
+                    {
+                        id: fee3Value
+                        anchors.fill: parent
+                        textFont: mainFont.dapFont.medium14
+                        textColor: currTheme.white
+                        fullText: "0.0 CELL"
+                        horizontalAlign: Text.AlignRight
+                    }
+                }
+            }
+        }
+
+
+        Rectangle{
+            Layout.topMargin: 16
+            Layout.fillWidth: true
+            height: 1
+            color: currTheme.rowHover
+        }
+
+        RowLayout
+        {
+            Layout.topMargin: 24
+            Layout.bottomMargin: 32
+            spacing: 10
+
+            DapButton
+            {
+                id:buttonOk
+
+                Layout.fillWidth: true
+
+                enabled: isLoading
+
+                Layout.minimumHeight: 36
+                Layout.maximumHeight: 36
+
+                textButton: qsTr("Ok")
+
+                implicitHeight: 36
+                fontButton: mainFont.dapFont.medium14
+                horizontalAligmentText: Text.AlignHCenter
+
+                onClicked:
+                {
+                    dialog.close()
+                    signalAccept(true)
+                    isLoading = false
+                }
+            }
+
+            DapButton
+            {
+                id:buttonCancel
+
+                visible: false
+                Layout.fillWidth: true
+
+                Layout.minimumHeight: 36
+                Layout.maximumHeight: 36
+
+                textButton: qsTr("Cancel")
+
+                implicitHeight: 36
+                fontButton: mainFont.dapFont.medium14
+                horizontalAligmentText: Text.AlignHCenter
+
+                onClicked:
+                {
+                    dialog.close()
+                    signalAccept(false)
+                    isLoading = false
+                }
+            }
+        }
+
+        Item{Layout.fillHeight: true}
+    }
+
+    function smartOpen(title, contentText) {
+        dapContentTitle.text = title
+        dapContentText.text = contentText
+        dialog.open()
+    }
+}
diff --git a/CellFrameDashboardService/CellFrameDashboardService.pro b/CellFrameDashboardService/CellFrameDashboardService.pro
index 079a36678acce8312c1cb2f060e20a2fe23bc4e4..57f1dbd974b4ee0fec88baf5628956f1d16139c0 100755
--- a/CellFrameDashboardService/CellFrameDashboardService.pro
+++ b/CellFrameDashboardService/CellFrameDashboardService.pro
@@ -90,7 +90,7 @@ INCLUDEPATH += $$_PRO_FILE_PWD_/../cellframe-node/ \
                $$_PRO_FILE_PWD_/../dapRPCProtocol/
 
 INCLUDEPATH += $$NODE_BUILD_PATH/dap-sdk/deps/include/json-c/
-LIBS += $$NODE_BUILD_PATH/dap-sdk/deps/lib/libdap_json-c.a
+LIBS += -L$$NODE_BUILD_PATH/dap-sdk/deps/lib/ -ldap_json-c
 #PRE_TARGETDEPS += $$NODE_BUILD_PATH/cellframe-sdk/deps/lib/libdap_json-c.a
 
 linux-* {
diff --git a/CellFrameDashboardService/DapServiceController.cpp b/CellFrameDashboardService/DapServiceController.cpp
index e5cbc794ba6538a45791e31b9f2925f721de982a..2b26f1e381d4f7f3bc90975ed3504e32a2a6248c 100755
--- a/CellFrameDashboardService/DapServiceController.cpp
+++ b/CellFrameDashboardService/DapServiceController.cpp
@@ -43,6 +43,7 @@
 #include "handlers/DapWalletActivateOrDeactivateCommand.h"
 #include "handlers/DapNodeRestart.h"
 #include "handlers/DapRemoveChainsOrGdbCommand.h"
+#include "handlers/DapGetFeeCommand.h"
 
 #ifdef Q_OS_WIN
 #include "registry.h"
@@ -106,7 +107,7 @@ bool DapServiceController::start()
     if(m_pServer->listen(DAP_BRAND)) 
     {
         connect(m_pServer, &DapUiService::onClientConnected, this,  &DapServiceController::onNewClientConnected);
-        connect(m_pServer, &DapUiService::onClientDisconnected, this, &DapServiceController::onNewClientConnected);
+        connect(m_pServer, &DapUiService::onClientDisconnected, this, &DapServiceController::onClientDisconnected);
         // Register command
         registerCommand();
         // Send data from notify socket to client
@@ -243,6 +244,8 @@ void DapServiceController::registerCommand()
 
     m_pServer->addService(new DapRemoveChainsOrGdbCommand("DapRemoveChainsOrGdbCommand", m_pServer, CLI_PATH));
 
+    m_pServer->addService(new DapGetFeeCommand("DapGetFeeCommand", m_pServer, CLI_PATH));
+
 
     m_pServer->addService(new DapWebConnectRequest("DapWebConnectRequest", m_pServer));
 
diff --git a/CellFrameDashboardService/main.cpp b/CellFrameDashboardService/main.cpp
index e63acea4cee8cddc4447ac3df11a312a21d46b7b..beedc2a123cb2650c447085c237ee9fae7c73e15 100755
--- a/CellFrameDashboardService/main.cpp
+++ b/CellFrameDashboardService/main.cpp
@@ -14,6 +14,8 @@
 #include "DapHelper.h"
 #include "DapServiceController.h"
 #include "DapLogger.h"
+#include "DapDataLocal.h"
+#include "DapLogHandler.h"
 #include "DapPluginsPathControll.h"
 #include "dapconfigreader.h"
 #include <sys/stat.h>
@@ -21,6 +23,44 @@
 #include <DapNotificationWatcher.h>
 void processArgs();
 
+void createDapLogger()
+{
+    DapLogger *dapLogger = new DapLogger (QCoreApplication::instance(), "Service");
+    QString logPath = DapDataLocal::instance()->getLogFilePath();
+
+#if defined(QT_DEBUG) && defined(ANDROID)
+    DapLogHandler *logHandlerGui = new DapLogHandler (logPath, QCoreApplication::instance());
+
+    QObject::connect (logHandlerGui, &DapLogHandler::logChanged, [logHandlerGui]()
+                     {
+                         for (QString &msg : logHandlerGui->request())
+#ifdef ANDROID
+                             __android_log_print (ANDROID_LOG_DEBUG, DAP_BRAND "*** Gui ***", "%s\n", qPrintable (msg));
+#else
+                std::cout << ":=== Srv ===" << qPrintable (msg) << "\n";
+#endif
+
+                     });
+#endif
+
+#ifdef QT_DEBUG
+    logPath = DapLogger::currentLogFilePath (DAP_BRAND, "Service");
+    DapLogHandler *serviceLogHandler = new DapLogHandler (logPath, QCoreApplication::instance());
+
+    QObject::connect (serviceLogHandler, &DapLogHandler::logChanged, [serviceLogHandler]()
+                     {
+                         for (QString &msg : serviceLogHandler->request())
+                         {
+#ifdef ANDROID
+                             __android_log_print (ANDROID_LOG_DEBUG, DAP_BRAND "=== Srv ===", "%s\n", qPrintable (msg));
+#else
+                std::cout << "=== Srv ===" << qPrintable (msg) << "\n";
+#endif
+                         }
+                     });
+#endif
+}
+
 #if defined(Q_OS_WIN) && !defined(QT_DEBUG)
 #include "registry.h"
 #include "Service.h"
@@ -31,7 +71,7 @@ void ServiceMain(int argc, char *argv[]) {
         a.setOrganizationDomain(DAP_BRAND_BASE_LO ".net");
         a.setApplicationName(DAP_BRAND "Service");
 
-        DapLogger *dapLogger = new DapLogger(QCoreApplication::instance(), "Service");
+        createDapLogger();
 
         DapPluginsPathControll dapPlugins;
         dapPlugins.setPathToPlugin(DapPluginsPathControll::defaultPluginPath(DAP_BRAND_LO));
@@ -53,12 +93,6 @@ void ServiceMain(int argc, char *argv[]) {
             system(str.toUtf8().data());
         }
 
-        DapConfigReader configReader;
-        bool debug_mode = configReader.getItemBool("general", "debug_dashboard_mode", false);
-        qDebug() << "debug_dashboard_mode" << debug_mode;
-//        dapLogger.setLogLevel(debug_mode ? L_DEBUG : L_INFO);
-        dapLogger->setLogLevel(L_DEBUG);
-
         ServiceProcClass *s = ServiceProcClass::me();
         s->serviceStatusHandle = RegisterServiceCtrlHandler(ServiceProcClass::serviceName, (LPHANDLER_FUNCTION)ControlHandler);
         if (s->serviceStatusHandle == (SERVICE_STATUS_HANDLE)0) {
@@ -158,14 +192,9 @@ int main(int argc, char *argv[])
     a.setOrganizationDomain(DAP_BRAND_BASE_LO ".net");
     a.setApplicationName(DAP_BRAND "Service");
 
-    DapLogger *dapLogger = new DapLogger(QCoreApplication::instance(), "Service");
-    DapPluginsPathControll dapPlugins;
+    createDapLogger();
 
-    DapConfigReader configReader;
-//    bool debug_mode = configReader.getItemBool("general", "debug_dashboard_mode", false);
-//    qDebug() << "debug_dashboard_mode" << debug_mode;
-////    dapLogger.setLogLevel(debug_mode ? L_DEBUG : L_INFO);
-//    dapLogger->setLogLevel(L_DEBUG);
+    DapPluginsPathControll dapPlugins;
 
     //plugins path
     dapPlugins.setPathToPlugin(DapPluginsPathControll::defaultPluginPath(DAP_BRAND_LO));
diff --git a/CellFrameNode/CellFrameNode.pro b/CellFrameNode/CellFrameNode.pro
index e6a9951e5de0e3e83821cabf367bdaeef143a66c..344145038eb583b6f8eb2c20a260e3a250be881d 100644
--- a/CellFrameNode/CellFrameNode.pro
+++ b/CellFrameNode/CellFrameNode.pro
@@ -14,7 +14,7 @@ linux {
 
 win32 {
     contains(QMAKE_HOST.os, "Windows") {
-        node_build.commands = $$PWD/../cellframe-node/prod_build/build.bat
+        node_build.commands = $$PWD/../cellframe-node/prod_build/build.sh --target windows
         node_targets.files = $$OUT_PWD/build_windows_release/dist/opt
     }
     else {
diff --git a/cellframe-node b/cellframe-node
index f7983d1ce7df4c6c18e4f69bd2be7b0dd7bf44e9..3bc65d0da369bc44277aeca8298fb6624a6837d7 160000
--- a/cellframe-node
+++ b/cellframe-node
@@ -1 +1 @@
-Subproject commit f7983d1ce7df4c6c18e4f69bd2be7b0dd7bf44e9
+Subproject commit 3bc65d0da369bc44277aeca8298fb6624a6837d7
diff --git a/cellframe-ui-sdk b/cellframe-ui-sdk
index c593fcbef5e35127c09b1997f17d6a127eddb3e4..e00a4298145ad02d9907f05de5531d0e49600578 160000
--- a/cellframe-ui-sdk
+++ b/cellframe-ui-sdk
@@ -1 +1 @@
-Subproject commit c593fcbef5e35127c09b1997f17d6a127eddb3e4
+Subproject commit e00a4298145ad02d9907f05de5531d0e49600578
diff --git a/config.pri b/config.pri
index b78c99c9327746ea160786d719b3fbda6426eb2f..89214ed8dcac69aa1e05c6f5341d082b79c46840 100644
--- a/config.pri
+++ b/config.pri
@@ -3,7 +3,10 @@ QMAKE_CFLAGS += -std=gnu11
 QMAKE_CFLAGS_DEBUG += -DDAP_DEBUG
 QMAKE_CXXFLAGS_DEBUG += -DDAP_DEBUG
 
-LIBS += -ldl
+! win32 {
+        LIBS += -ldl
+}
+
 
 # version.mk should look just-like .pro file (and it does if there is only variables`)
 VER_MAJ = $$fromfile(version.mk, VERSION_MAJOR)
diff --git a/dap-ui-sdk b/dap-ui-sdk
index 570da38f705d6b8e2f5e2ff3ddf19336065045b5..781c152281f5e335c056949fb9332625a743b124 160000
--- a/dap-ui-sdk
+++ b/dap-ui-sdk
@@ -1 +1 @@
-Subproject commit 570da38f705d6b8e2f5e2ff3ddf19336065045b5
+Subproject commit 781c152281f5e335c056949fb9332625a743b124
diff --git a/version.mk b/version.mk
index 260912d2d929c5921472d8a60468b22dbec3fc4f..0005c84cb09b556d287bfd4541ca44ea90274861 100644
--- a/version.mk
+++ b/version.mk
@@ -1,4 +1,4 @@
 VERSION_MAJOR=2
 VERSION_MINOR=12
-VERSION_PATCH=21
+VERSION_PATCH=30
 
diff --git a/web3_api b/web3_api
index 5c7e33ce6d697e00f327b2795f9c498eff83a36a..088b509b9d78c23bd814e1e8990347e98a9e4619 160000
--- a/web3_api
+++ b/web3_api
@@ -1 +1 @@
-Subproject commit 5c7e33ce6d697e00f327b2795f9c498eff83a36a
+Subproject commit 088b509b9d78c23bd814e1e8990347e98a9e4619