From fbbf18e9f437b0bffa221eaae29cf001519f700f Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 19 Aug 2021 10:41:05 +0200 Subject: [PATCH 1/4] Webhooks Bug Fixed --- .../integrations-002-webhook-notifications.json | 16 +++++++++++++--- .../Sensor-Bot/Webhooks/CheckWebhook.js | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Projects/Foundations/Schemas/Docs-Topics/I/Integrations/Integrations/integrations-002-webhook-notifications.json b/Projects/Foundations/Schemas/Docs-Topics/I/Integrations/Integrations/integrations-002-webhook-notifications.json index 59cf5d19a..1befa265e 100644 --- a/Projects/Foundations/Schemas/Docs-Topics/I/Integrations/Integrations/integrations-002-webhook-notifications.json +++ b/Projects/Foundations/Schemas/Docs-Topics/I/Integrations/Integrations/integrations-002-webhook-notifications.json @@ -146,12 +146,22 @@ }, { "style": "Text", - "text": "The Masters Data Mine features the definition of the Webhooks sensor bot used to monitor incoming notifications. You need to run an instance of this bot in the data mining section of the exchange and market of your choice.", - "updated": 1615370092995 + "text": "The Webhooks Data Mine features the definition of the Webhooks sensor bot used to monitor incoming notifications. You need to run an instance of this bot in the data mining section of the exchange and market of your choice.", + "updated": 1629361373616 }, { "style": "Text", - "text": "The default workspace does not feature these tasks. To create a task for the Webhooks sensor bot, you need to uninstall and re-install the corresponding market." + "text": "The Getting-Started-Tutorials workspace does not have this Data Mine as a plugin so you will need to add it first. To do that locate the Plugins node, expand it and at the Plugins Data Mines add a New Plugin File. You can setup it's configuration like this:" + }, + { + "style": "Json", + "text": "{\n \"project\": \"Foundations\",\n \"fileName\": \"Webhooks\",\n \"folderName\": \"Data-Mines\",\n \"nodeType\": \"Data Mine\",\n \"saveWithWorkspace\": false\n}", + "updated": 1629361560976 + }, + { + "style": "Text", + "text": "The default workspace does not feature these tasks. To create a task for the Webhooks sensor bot, you need to uninstall and re-install the corresponding market. The prcess of installing a market adds all the tasks needed to run all the bots defined at all Data Mines present at the workspace.", + "updated": 1629361603647 }, { "style": "Success", diff --git a/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js b/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js index 4d6739de0..84d8cfa01 100644 --- a/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js +++ b/Projects/Foundations/TS/Bot-Modules/Sensor-Bot/Webhooks/CheckWebhook.js @@ -38,7 +38,7 @@ exports.newFoundationsBotModulesCheckWebhook = function (processIndex) { function getContextVariables(callBack) { try { - let reportKey = "Masters" + "-" + "Webhooks" + "-" + "Check-Webhook" + let reportKey = "Webhooks" + "-" + "Webhooks" + "-" + "Check-Webhook" TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, "[INFO] start -> getContextVariables -> reportKey = " + reportKey) From 7848e7c0b8650fe779f153b1b9412199fc020cca Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 19 Aug 2021 11:59:23 +0200 Subject: [PATCH 2/4] Governance: Pancake Swap Listing Votes --- .../Plugins/Assets/Superalgos-Exchanges.json | 331 ++++++-- .../Governance/Plugins/Pools/Superalgos.json | 9 +- .../User-Profiles/Luis-Fernando-Molina.json | 761 +++++++++++++----- 3 files changed, 836 insertions(+), 265 deletions(-) diff --git a/Projects/Governance/Plugins/Assets/Superalgos-Exchanges.json b/Projects/Governance/Plugins/Assets/Superalgos-Exchanges.json index fae67de1c..d4090dcf2 100644 --- a/Projects/Governance/Plugins/Assets/Superalgos-Exchanges.json +++ b/Projects/Governance/Plugins/Assets/Superalgos-Exchanges.json @@ -12,87 +12,119 @@ "assetClasses": [ { "type": "Asset Class", - "name": "Open Negotiations", + "name": "DEXs", "config": "{\n\"folderPath\": \"\"\n}", "project": "Governance", - "assetClasses": [], - "assets": [ + "assetClasses": [ { - "type": "Asset", - "name": "Bittrex", - "config": "{\n \"docs\": {\n \"project\": \"Governance\",\n \"category\": \"Topic\",\n \"type\": \"Exchange Asset - Bittrex\"\n }\n}", + "type": "Asset Class", + "name": "First Listing", + "config": "{\n\"folderPath\": \"\"\n}", "project": "Governance", - "assetClasses": [], - "assets": [], - "id": "548dd163-9991-4de3-9e68-9e8a9a051a2f", - "savedPayload": { - "position": { - "x": 9806.132034355964, - "y": 38608.632034355964 - }, - "targetPosition": { - "x": 9594, - "y": 38396.5 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false + "assetClasses": [ + { + "type": "Asset Class", + "name": " Pancakeswap SA/WBTC", + "config": "{\n\"folderPath\": \"\"\n}", + "project": "Governance", + "assetClasses": [], + "assets": [ + { + "type": "Asset", + "name": "SA Liquidity", + "config": "{}", + "project": "Governance", + "assetClasses": [], + "assets": [], + "id": "2e59edc7-7e37-40e3-808f-9ab3c7c5f0b3", + "savedPayload": { + "position": { + "x": 10303.807621135331, + "y": 39025.922863406 + }, + "targetPosition": { + "x": 10044, + "y": 38875.922863406 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Asset", + "name": "WBTC Liquidity", + "config": "{}", + "project": "Governance", + "assetClasses": [], + "assets": [], + "id": "117afaed-83bd-4b0c-be12-40b8c8dd3a34", + "savedPayload": { + "position": { + "x": 10044, + "y": 39175.922863406 + }, + "targetPosition": { + "x": 10044, + "y": 38875.922863406 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "cc6e34d9-d58a-4aa7-9049-250ea90a8430", + "savedPayload": { + "position": { + "x": 10044, + "y": 38875.922863406 + }, + "targetPosition": { + "x": 9894, + "y": 38616.115242270665 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false, + "shortcutKey": "w" + } + } } - } - }, - { - "type": "Asset", - "name": "LBank", - "config": "{\n \"docs\": {\n \"project\": \"Governance\",\n \"category\": \"Topic\",\n \"type\": \"Exchange Asset - LBank\"\n }\n}", - "project": "Governance", - "assetClasses": [], + ], "assets": [], - "id": "e4e7addb-a840-4ce9-9e01-74c7e57c24ad", + "id": "54f70f64-029a-4f2f-8847-5208c2fa94a1", "savedPayload": { "position": { - "x": 9594, - "y": 38696.5 + "x": 9894, + "y": 38616.115242270665 }, "targetPosition": { - "x": 9594, - "y": 38396.5 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - { - "type": "Asset", - "name": "Probit", - "config": "{\n \"docs\": {\n \"project\": \"Governance\",\n \"category\": \"Topic\",\n \"type\": \"Exchange Asset - Probit\"\n }\n}", - "project": "Governance", - "assetClasses": [], - "assets": [], - "id": "6b27f708-c243-42e9-874b-ceceea7db21f", - "savedPayload": { - "position": { - "x": 9381.867965644036, - "y": 38608.632034355964 - }, - "targetPosition": { - "x": 9594, - "y": 38396.5 + "x": 9744, + "y": 38356.30762113533 }, "floatingObject": { "isPinned": false, @@ -108,11 +140,164 @@ } } ], - "id": "144ad412-94fc-4b80-8dd9-2520f64edfcc", + "assets": [], + "id": "90e0c410-b1e7-4f0a-9dec-99c597a7956d", "savedPayload": { "position": { + "x": 9744, + "y": 38356.30762113533 + }, + "targetPosition": { "x": 9594, - "y": 38396.5 + "y": 38096.5 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Asset Class", + "name": "CEXs", + "config": "{\n\"folderPath\": \"\"\n}", + "project": "Governance", + "assetClasses": [ + { + "type": "Asset Class", + "name": "Open Negotiations", + "config": "{\n\"folderPath\": \"\"\n}", + "project": "Governance", + "assetClasses": [], + "assets": [ + { + "type": "Asset", + "name": "Bittrex", + "config": "{\n \"docs\": {\n \"project\": \"Governance\",\n \"category\": \"Topic\",\n \"type\": \"Exchange Asset - Bittrex\"\n }\n}", + "project": "Governance", + "assetClasses": [], + "assets": [], + "id": "548dd163-9991-4de3-9e68-9e8a9a051a2f", + "savedPayload": { + "position": { + "x": 9371.645713530756, + "y": 38905.89299015739 + }, + "targetPosition": { + "x": 9294, + "y": 38616.115242270665 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Asset", + "name": "LBank", + "config": "{\n \"docs\": {\n \"project\": \"Governance\",\n \"category\": \"Topic\",\n \"type\": \"Exchange Asset - LBank\"\n }\n}", + "project": "Governance", + "assetClasses": [], + "assets": [], + "id": "e4e7addb-a840-4ce9-9e01-74c7e57c24ad", + "savedPayload": { + "position": { + "x": 9144, + "y": 38875.922863406 + }, + "targetPosition": { + "x": 9294, + "y": 38616.115242270665 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + { + "type": "Asset", + "name": "Probit", + "config": "{\n \"docs\": {\n \"project\": \"Governance\",\n \"category\": \"Topic\",\n \"type\": \"Exchange Asset - Probit\"\n }\n}", + "project": "Governance", + "assetClasses": [], + "assets": [], + "id": "6b27f708-c243-42e9-874b-ceceea7db21f", + "savedPayload": { + "position": { + "x": 9004.222252113279, + "y": 38693.76095580142 + }, + "targetPosition": { + "x": 9294, + "y": 38616.115242270665 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "id": "144ad412-94fc-4b80-8dd9-2520f64edfcc", + "savedPayload": { + "position": { + "x": 9294, + "y": 38616.115242270665 + }, + "targetPosition": { + "x": 9444, + "y": 38356.30762113533 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + } + ], + "assets": [], + "id": "ec0ab4b8-e3cc-47e6-94e7-6d181e1008f4", + "savedPayload": { + "position": { + "x": 9444, + "y": 38356.30762113533 }, "targetPosition": { "x": 9594, diff --git a/Projects/Governance/Plugins/Pools/Superalgos.json b/Projects/Governance/Plugins/Pools/Superalgos.json index e5a89de9d..ddd38bb04 100644 --- a/Projects/Governance/Plugins/Pools/Superalgos.json +++ b/Projects/Governance/Plugins/Pools/Superalgos.json @@ -1,7 +1,7 @@ { "type": "Pools", "name": "Superalgos", - "config": "{\"tokens\":\"40960000\",\"codeName\":\"Superalgos\"}", + "config": "{\n \"tokens\": \"60000000\",\n \"codeName\": \"Superalgos\"\n}", "project": "Governance", "poolClasses": [ { @@ -1505,7 +1505,8 @@ "arrangementStyle": 0 }, "uiObject": { - "isRunning": false + "isRunning": false, + "shortcutKey": "a" }, "referenceParent": { "type": "Assets", @@ -1536,7 +1537,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -1789,7 +1790,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index ec67cd93c..56d2fa73c 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -544,7 +544,7 @@ "votingProgram": { "type": "Voting Program", "name": "New Voting Program", - "config": "{\n \"percentage\": 75\n}", + "config": "{\n \"percentage\": 0\n}", "project": "Governance", "votesSwitch": [ { @@ -758,7 +758,7 @@ { "type": "Weight Votes Switch", "name": "New Weight Votes Switch", - "config": "{\n \"percentage\": 75\n}", + "config": "{\n \"percentage\": 80\n}", "project": "Governance", "weightVotesSwitch": [ { @@ -770,7 +770,7 @@ { "type": "Weight Votes Switch", "name": "Exchanges Pool Class", - "config": "{\n \"percentage\": 35\n}", + "config": "{\n \"percentage\": 75\n}", "project": "Governance", "weightVotesSwitch": [], "poolWeightVotes": [ @@ -834,12 +834,12 @@ "id": "58949e1e-3502-4317-ae8e-b4c56350902e", "savedPayload": { "position": { - "x": 30905.003798952057, - "y": 24539.12189221862 + "x": 30945.003798952057, + "y": 24558.121892218624 }, "targetPosition": { - "x": 30657.76594236545, - "y": 24709.04376329607 + "x": 30697.76594236545, + "y": 24728.043763296075 }, "floatingObject": { "isPinned": false, @@ -850,7 +850,8 @@ "arrangementStyle": 0 }, "uiObject": { - "isRunning": false + "isRunning": false, + "shortcutKey": "" }, "referenceParent": { "type": "Pool Class", @@ -876,7 +877,7 @@ { "type": "Weight Votes Switch", "name": "Governance Programs Pool Class", - "config": "{\n \"percentage\": 15\n}", + "config": "{\n \"percentage\": 7.5\n}", "project": "Governance", "weightVotesSwitch": [ { @@ -2558,12 +2559,12 @@ "id": "cb79b91f-d01c-4efa-8fea-e4b7374fdd8b", "savedPayload": { "position": { - "x": 30951.210222585592, - "y": 24646.670256050744 + "x": 30991.210222585592, + "y": 24665.670256050747 }, "targetPosition": { - "x": 30657.76594236545, - "y": 24709.04376329607 + "x": 30697.76594236545, + "y": 24728.043763296075 }, "floatingObject": { "isPinned": false, @@ -2600,7 +2601,7 @@ { "type": "Weight Votes Switch", "name": "Superalgos Software Projects Pools", - "config": "{\n \"percentage\": 5\n}", + "config": "{\n \"percentage\": 2.5\n}", "project": "Governance", "weightVotesSwitch": [], "poolWeightVotes": [ @@ -2876,12 +2877,12 @@ "id": "33c4a72b-4908-478e-b7c3-2304cb211f05", "savedPayload": { "position": { - "x": 30952.74241463464, - "y": 24763.714420943714 + "x": 30992.74241463464, + "y": 24782.714420943717 }, "targetPosition": { - "x": 30657.76594236545, - "y": 24709.04376329607 + "x": 30697.76594236545, + "y": 24728.043763296075 }, "floatingObject": { "isPinned": false, @@ -2918,7 +2919,7 @@ { "type": "Weight Votes Switch", "name": "Trading Intelligence", - "config": "{\n \"percentage\": 9\n}", + "config": "{\n \"percentage\": 4.5\n}", "project": "Governance", "weightVotesSwitch": [], "poolWeightVotes": [ @@ -3088,12 +3089,12 @@ "id": "56c59557-4ab9-4f4b-9c48-e1f9822e4899", "savedPayload": { "position": { - "x": 30909.367112749078, - "y": 24872.43547380058 + "x": 30949.367112749078, + "y": 24891.435473800582 }, "targetPosition": { - "x": 30657.76594236545, - "y": 24709.04376329607 + "x": 30697.76594236545, + "y": 24728.043763296075 }, "floatingObject": { "isPinned": false, @@ -3130,7 +3131,7 @@ { "type": "Weight Votes Switch", "name": "Education, Docs, Tutorials, Videos, Icons", - "config": "{\n \"percentage\": 4\n}", + "config": "{\n \"percentage\": 2\n}", "project": "Governance", "weightVotesSwitch": [], "poolWeightVotes": [ @@ -3406,12 +3407,12 @@ "id": "88c4df8c-48ff-4d7e-a5ed-015c3faf6e69", "savedPayload": { "position": { - "x": 30827.687813442903, - "y": 24956.281619882677 + "x": 30867.687813442903, + "y": 24975.28161988268 }, "targetPosition": { - "x": 30657.76594236545, - "y": 24709.04376329607 + "x": 30697.76594236545, + "y": 24728.043763296075 }, "floatingObject": { "isPinned": false, @@ -3448,7 +3449,7 @@ { "type": "Weight Votes Switch", "name": "Marketing", - "config": "{\n \"percentage\": 14\n}", + "config": "{\n \"percentage\": 7\n}", "project": "Governance", "weightVotesSwitch": [], "poolWeightVotes": [ @@ -3565,12 +3566,12 @@ "id": "34ddd8f7-d8a3-495d-8c7f-2a3f121b3269", "savedPayload": { "position": { - "x": 30720.13944961078, - "y": 25002.488043516212 + "x": 30760.13944961078, + "y": 25021.488043516216 }, "targetPosition": { - "x": 30657.76594236545, - "y": 24709.04376329607 + "x": 30697.76594236545, + "y": 24728.043763296075 }, "floatingObject": { "isPinned": false, @@ -3972,12 +3973,12 @@ "id": "c092f4bb-64fe-47ca-bb13-668d4d65f901", "savedPayload": { "position": { - "x": 30603.09528471781, - "y": 25004.02023556526 + "x": 30643.09528471781, + "y": 25023.020235565262 }, "targetPosition": { - "x": 30657.76594236545, - "y": 24709.04376329607 + "x": 30697.76594236545, + "y": 24728.043763296075 }, "floatingObject": { "isPinned": false, @@ -4019,17 +4020,17 @@ "id": "800e3388-1ea6-40ee-ace5-1811a3373e39", "savedPayload": { "position": { - "x": 30657.76594236545, - "y": 24709.04376329607 + "x": 30697.76594236545, + "y": 24728.043763296075 }, "targetPosition": { - "x": 30406.164771981825, - "y": 24545.652052791564 + "x": 30446.164771981825, + "y": 24564.652052791567 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 @@ -7127,12 +7128,12 @@ "id": "f5b54a5c-0251-4a78-94e6-5e2dc4113d5c", "savedPayload": { "position": { - "x": 30542.36192190369, - "y": 24812.954010048074 + "x": 30582.36192190369, + "y": 24831.954010048077 }, "targetPosition": { - "x": 30406.164771981825, - "y": 24545.652052791564 + "x": 30446.164771981825, + "y": 24564.652052791567 }, "floatingObject": { "isPinned": false, @@ -11942,12 +11943,12 @@ "id": "c5258958-8fd9-4d68-8a9f-481430aa1bb3", "savedPayload": { "position": { - "x": 30390.46398510894, - "y": 24845.240913217935 + "x": 30430.46398510894, + "y": 24864.24091321794 }, "targetPosition": { - "x": 30406.164771981825, - "y": 24545.652052791564 + "x": 30446.164771981825, + "y": 24564.652052791567 }, "floatingObject": { "isPinned": false, @@ -11964,7 +11965,7 @@ }, { "type": "Weight Votes Switch", - "name": "Exchanges", + "name": "Superalgos-Exchanges", "config": "{\n \"percentage\": 5\n}", "project": "Governance", "weightVotesSwitch": [ @@ -11973,23 +11974,264 @@ "name": "SA Token Listings Rewards", "config": "{}", "project": "Governance", - "weightVotesSwitch": [], - "poolWeightVotes": [], - "assetWeightVotes": [ + "weightVotesSwitch": [ { - "type": "Asset Weight Vote", - "name": "Superalgos-Exchanges SA Token Listings Rewards Open Negotiations Bittrex", - "config": "{\n \"percentage\": 45\n}", + "type": "Weight Votes Switch", + "name": "DEXs", + "config": "{\n \"percentage\": 100\n}", "project": "Governance", - "id": "ed4cf0cf-3ef8-4e2e-8ec9-9809e3462994", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "First Listing", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": " Pancakeswap SA/WBTC", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [], + "assetWeightVotes": [ + { + "type": "Asset Weight Vote", + "name": "DEXs First Listing Pancakeswap SA/WBTC SA Liquidity", + "config": "{}", + "project": "Governance", + "id": "132eec8f-8438-429d-bebc-47a5e100e48e", + "savedPayload": { + "position": { + "x": 30208.476140276023, + "y": 26233.922932094443 + }, + "targetPosition": { + "x": 30072.27899035416, + "y": 25966.620974837933 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Asset", + "name": "SA Liquidity", + "id": "2e59edc7-7e37-40e3-808f-9ab3c7c5f0b3" + }, + "referenceParentCombinedNodePath": [ + [ + "Superalgos-Exchanges", + "Assets" + ], + [ + "SA Token Listings Rewards", + "Asset Class" + ], + [ + "DEXs", + "Asset Class" + ], + [ + "First Listing", + "Asset Class" + ], + [ + " Pancakeswap SA/WBTC", + "Asset Class" + ], + [ + "SA Liquidity", + "Asset" + ] + ] + } + }, + { + "type": "Asset Weight Vote", + "name": "DEXs First Listing Pancakeswap SA/WBTC WBTC Liquidity", + "config": "{\n \"percentage\": 55.555556\n}", + "project": "Governance", + "id": "99b1f5b3-d368-49ed-b848-d52e13b586d6", + "savedPayload": { + "position": { + "x": 29908.887279849652, + "y": 26218.22214522156 + }, + "targetPosition": { + "x": 30072.27899035416, + "y": 25966.620974837933 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false, + "shortcutKey": "q" + }, + "referenceParent": { + "type": "Asset", + "name": "WBTC Liquidity", + "id": "117afaed-83bd-4b0c-be12-40b8c8dd3a34" + }, + "referenceParentCombinedNodePath": [ + [ + "Superalgos-Exchanges", + "Assets" + ], + [ + "SA Token Listings Rewards", + "Asset Class" + ], + [ + "DEXs", + "Asset Class" + ], + [ + "First Listing", + "Asset Class" + ], + [ + " Pancakeswap SA/WBTC", + "Asset Class" + ], + [ + "WBTC Liquidity", + "Asset" + ] + ] + } + } + ], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "6188434b-762d-44f9-a459-b79cea727bfe", + "savedPayload": { + "position": { + "x": 30072.27899035416, + "y": 25966.620974837933 + }, + "targetPosition": { + "x": 30087.979777227043, + "y": 25667.032114411562 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Asset Class", + "name": " Pancakeswap SA/WBTC", + "id": "cc6e34d9-d58a-4aa7-9049-250ea90a8430" + }, + "referenceParentCombinedNodePath": [ + [ + "Superalgos-Exchanges", + "Assets" + ], + [ + "SA Token Listings Rewards", + "Asset Class" + ], + [ + "DEXs", + "Asset Class" + ], + [ + "First Listing", + "Asset Class" + ], + [ + " Pancakeswap SA/WBTC", + "Asset Class" + ] + ] + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "d987d5ba-4316-4d62-927a-cf25b16bfbdf", + "savedPayload": { + "position": { + "x": 30087.979777227043, + "y": 25667.032114411562 + }, + "targetPosition": { + "x": 30103.680564099926, + "y": 25367.44325398519 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Asset Class", + "name": "First Listing", + "id": "54f70f64-029a-4f2f-8847-5208c2fa94a1" + }, + "referenceParentCombinedNodePath": [ + [ + "Superalgos-Exchanges", + "Assets" + ], + [ + "SA Token Listings Rewards", + "Asset Class" + ], + [ + "DEXs", + "Asset Class" + ], + [ + "First Listing", + "Asset Class" + ] + ] + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "c06903b5-4a3f-4d0e-bfdb-84003992c271", "savedPayload": { "position": { - "x": 30141.754858218137, - "y": 25342.298673778958 + "x": 30103.680564099926, + "y": 25367.44325398519 }, "targetPosition": { - "x": 30079.38135097281, - "y": 25048.854393558817 + "x": 30119.38135097281, + "y": 25067.85439355882 }, "floatingObject": { "isPinned": false, @@ -12003,116 +12245,273 @@ "isRunning": false }, "referenceParent": { - "type": "Asset", - "name": "Bittrex", - "id": "548dd163-9991-4de3-9e68-9e8a9a051a2f" + "type": "Asset Class", + "name": "DEXs", + "id": "90e0c410-b1e7-4f0a-9dec-99c597a7956d" }, "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets", - "Governance", - "2cefeb95-9fde-418b-a35b-6178a97cac9d" + "Assets" ], [ "SA Token Listings Rewards", - "Asset Class", - "Governance", - "492669d5-223f-426d-845a-f26dd1ae251e" + "Asset Class" ], [ - "Open Negotiations", - "Asset Class", - "Governance", - "144ad412-94fc-4b80-8dd9-2520f64edfcc" - ], - [ - "Bittrex", - "Asset", - "Governance", - "548dd163-9991-4de3-9e68-9e8a9a051a2f" + "DEXs", + "Asset Class" ] ] } }, { - "type": "Asset Weight Vote", - "name": "Superalgos-Exchanges SA Token Listings Rewards Open Negotiations LBank", - "config": "{\n \"percentage\": 25\n}", - "project": "Governance", - "id": "25eed22d-3f2f-4a33-92fc-d43028cfa972", - "savedPayload": { - "position": { - "x": 29915.989640468302, - "y": 25300.455563942443 - }, - "targetPosition": { - "x": 30079.38135097281, - "y": 25048.854393558817 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Asset", - "name": "LBank", - "id": "e4e7addb-a840-4ce9-9e01-74c7e57c24ad" - }, - "referenceParentCombinedNodePath": [ - [ - "Superalgos-Exchanges", - "Assets", - "Governance", - "2cefeb95-9fde-418b-a35b-6178a97cac9d" - ], - [ - "SA Token Listings Rewards", - "Asset Class", - "Governance", - "492669d5-223f-426d-845a-f26dd1ae251e" - ], - [ - "Open Negotiations", - "Asset Class", - "Governance", - "144ad412-94fc-4b80-8dd9-2520f64edfcc" - ], - [ - "LBank", - "Asset", - "Governance", - "e4e7addb-a840-4ce9-9e01-74c7e57c24ad" - ] - ] - } - }, - { - "type": "Asset Weight Vote", - "name": "Superalgos-Exchanges SA Token Listings Rewards Open Negotiations Probit", + "type": "Weight Votes Switch", + "name": "CEXs", "config": "{}", "project": "Governance", - "id": "cc322882-2489-4b4e-989b-d56d3345ad70", + "weightVotesSwitch": [ + { + "type": "Weight Votes Switch", + "name": "Open Negotiations", + "config": "{}", + "project": "Governance", + "weightVotesSwitch": [], + "poolWeightVotes": [], + "assetWeightVotes": [ + { + "type": "Asset Weight Vote", + "name": "SA Token Listings Rewards CEXs Open Negotiations Bittrex", + "config": "{}", + "project": "Governance", + "id": "8f4adb75-d7f5-4ea4-94e6-9126cd9fc1da", + "savedPayload": { + "position": { + "x": 29492.072338147307, + "y": 25625.565648291093 + }, + "targetPosition": { + "x": 29584.77743645979, + "y": 25340.248693402547 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Asset", + "name": "Bittrex", + "id": "548dd163-9991-4de3-9e68-9e8a9a051a2f" + }, + "referenceParentCombinedNodePath": [ + [ + "Superalgos-Exchanges", + "Assets" + ], + [ + "SA Token Listings Rewards", + "Asset Class" + ], + [ + "CEXs", + "Asset Class" + ], + [ + "Open Negotiations", + "Asset Class" + ], + [ + "Bittrex", + "Asset" + ] + ] + } + }, + { + "type": "Asset Weight Vote", + "name": "SA Token Listings Rewards CEXs Open Negotiations LBank", + "config": "{}", + "project": "Governance", + "id": "308cb2e4-23e2-4a7f-a1e2-3fa4e83fd6e2", + "savedPayload": { + "position": { + "x": 29317.47547920328, + "y": 25476.44584332441 + }, + "targetPosition": { + "x": 29584.77743645979, + "y": 25340.248693402547 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Asset", + "name": "LBank", + "id": "e4e7addb-a840-4ce9-9e01-74c7e57c24ad" + }, + "referenceParentCombinedNodePath": [ + [ + "Superalgos-Exchanges", + "Assets" + ], + [ + "SA Token Listings Rewards", + "Asset Class" + ], + [ + "CEXs", + "Asset Class" + ], + [ + "Open Negotiations", + "Asset Class" + ], + [ + "LBank", + "Asset" + ] + ] + } + }, + { + "type": "Asset Weight Vote", + "name": "SA Token Listings Rewards CEXs Open Negotiations Probit", + "config": "{}", + "project": "Governance", + "id": "622a822c-b952-4c17-ab4d-2a8874b60016", + "savedPayload": { + "position": { + "x": 29299.460481571245, + "y": 25247.543595090065 + }, + "targetPosition": { + "x": 29584.77743645979, + "y": 25340.248693402547 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Asset", + "name": "Probit", + "id": "6b27f708-c243-42e9-874b-ceceea7db21f" + }, + "referenceParentCombinedNodePath": [ + [ + "Superalgos-Exchanges", + "Assets" + ], + [ + "SA Token Listings Rewards", + "Asset Class" + ], + [ + "CEXs", + "Asset Class" + ], + [ + "Open Negotiations", + "Asset Class" + ], + [ + "Probit", + "Asset" + ] + ] + } + } + ], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "3c1a71a8-58ff-42f5-b45e-feea25575e97", + "savedPayload": { + "position": { + "x": 29584.77743645979, + "y": 25340.248693402547 + }, + "targetPosition": { + "x": 29852.0793937163, + "y": 25204.051543480684 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "Asset Class", + "name": "Open Negotiations", + "id": "144ad412-94fc-4b80-8dd9-2520f64edfcc" + }, + "referenceParentCombinedNodePath": [ + [ + "Superalgos-Exchanges", + "Assets" + ], + [ + "SA Token Listings Rewards", + "Asset Class" + ], + [ + "CEXs", + "Asset Class" + ], + [ + "Open Negotiations", + "Asset Class" + ] + ] + } + } + ], + "poolWeightVotes": [], + "assetWeightVotes": [], + "featureWeightVotes": [], + "positionWeightVotes": [], + "id": "34e73e02-70aa-4154-9603-58a67a7ff047", "savedPayload": { "position": { - "x": 29785.93707075267, - "y": 25111.227900804144 + "x": 29852.0793937163, + "y": 25204.051543480684 }, "targetPosition": { - "x": 30079.38135097281, - "y": 25048.854393558817 + "x": 30119.38135097281, + "y": 25067.85439355882 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 @@ -12121,50 +12520,40 @@ "isRunning": false }, "referenceParent": { - "type": "Asset", - "name": "Probit", - "id": "6b27f708-c243-42e9-874b-ceceea7db21f" + "type": "Asset Class", + "name": "CEXs", + "id": "ec0ab4b8-e3cc-47e6-94e7-6d181e1008f4" }, "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets", - "Governance", - "2cefeb95-9fde-418b-a35b-6178a97cac9d" + "Assets" ], [ "SA Token Listings Rewards", - "Asset Class", - "Governance", - "492669d5-223f-426d-845a-f26dd1ae251e" + "Asset Class" ], [ - "Open Negotiations", - "Asset Class", - "Governance", - "144ad412-94fc-4b80-8dd9-2520f64edfcc" - ], - [ - "Probit", - "Asset", - "Governance", - "6b27f708-c243-42e9-874b-ceceea7db21f" + "CEXs", + "Asset Class" ] ] } } ], + "poolWeightVotes": [], + "assetWeightVotes": [], "featureWeightVotes": [], "positionWeightVotes": [], "id": "b856fe5a-4f77-4fad-8c41-1b172b9f01df", "savedPayload": { "position": { - "x": 30079.38135097281, - "y": 25048.854393558817 + "x": 30119.38135097281, + "y": 25067.85439355882 }, "targetPosition": { - "x": 30242.773061477317, - "y": 24797.25322317519 + "x": 30282.773061477317, + "y": 24816.253223175194 }, "floatingObject": { "isPinned": false, @@ -12185,15 +12574,11 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets", - "Governance", - "2cefeb95-9fde-418b-a35b-6178a97cac9d" + "Assets" ], [ "SA Token Listings Rewards", - "Asset Class", - "Governance", - "492669d5-223f-426d-845a-f26dd1ae251e" + "Asset Class" ] ] } @@ -12206,17 +12591,17 @@ "id": "9017ca73-7bbd-4228-a59a-9fb85a130e1a", "savedPayload": { "position": { - "x": 30242.773061477317, - "y": 24797.25322317519 + "x": 30282.773061477317, + "y": 24816.253223175194 }, "targetPosition": { - "x": 30406.164771981825, - "y": 24545.652052791564 + "x": 30446.164771981825, + "y": 24564.652052791567 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 @@ -12838,12 +13223,12 @@ "id": "066ec791-bd03-4e03-a180-58c7d90c42c4", "savedPayload": { "position": { - "x": 30138.862814725315, - "y": 24681.849202713427 + "x": 30178.862814725315, + "y": 24700.84920271343 }, "targetPosition": { - "x": 30406.164771981825, - "y": 24545.652052791564 + "x": 30446.164771981825, + "y": 24564.652052791567 }, "floatingObject": { "isPinned": false, @@ -12876,14 +13261,14 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, "uiObject": { "isRunning": false, - "shortcutKey": "a" + "shortcutKey": "" } } } From 85465159e5e7571e86001cdf0ecb18e41d91b839 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 19 Aug 2021 12:43:09 +0200 Subject: [PATCH 3/4] Governance: Superalgos Pools Weights Reviewed --- .../Governance/Plugins/Pools/Superalgos.json | 92 +++--- .../User-Profiles/Luis-Fernando-Molina.json | 262 +++++++++--------- 2 files changed, 179 insertions(+), 175 deletions(-) diff --git a/Projects/Governance/Plugins/Pools/Superalgos.json b/Projects/Governance/Plugins/Pools/Superalgos.json index ddd38bb04..eb2ea2d52 100644 --- a/Projects/Governance/Plugins/Pools/Superalgos.json +++ b/Projects/Governance/Plugins/Pools/Superalgos.json @@ -548,7 +548,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 @@ -844,12 +844,12 @@ "id": "2207c69c-ee9d-4453-8bf4-582d79b4b635", "savedPayload": { "position": { - "x": 25452.076448909353, - "y": 30999.297863215397 + "x": 25433.862855091826, + "y": 31054.64830727775 }, "targetPosition": { - "x": 25162.29870102263, - "y": 31076.943576746155 + "x": 25137.213607224287, + "y": 31099.3609871306 }, "floatingObject": { "isPinned": false, @@ -879,12 +879,12 @@ "id": "ea854cf8-47cd-43f0-b58a-13e61ae3106d", "savedPayload": { "position": { - "x": 25452.076448909353, - "y": 31154.589290276912 + "x": 25416.475731817547, + "y": 31208.963294440517 }, "targetPosition": { - "x": 25162.29870102263, - "y": 31076.943576746155 + "x": 25137.213607224287, + "y": 31099.3609871306 }, "floatingObject": { "isPinned": false, @@ -909,12 +909,12 @@ "id": "3c80032c-51a8-4fd8-ab65-cf219c03ce95", "savedPayload": { "position": { - "x": 25374.430735378595, - "y": 31289.07561110212 + "x": 25324.260547781905, + "y": 31333.91043187101 }, "targetPosition": { - "x": 25162.29870102263, - "y": 31076.943576746155 + "x": 25137.213607224287, + "y": 31099.3609871306 }, "floatingObject": { "isPinned": false, @@ -939,12 +939,12 @@ "id": "0a79ec65-6f67-4c18-823f-48a6d0494a81", "savedPayload": { "position": { - "x": 25239.94441455339, - "y": 31366.721324632876 + "x": 25181.926287077138, + "y": 31396.01023499814 }, "targetPosition": { - "x": 25162.29870102263, - "y": 31076.943576746155 + "x": 25137.213607224287, + "y": 31099.3609871306 }, "floatingObject": { "isPinned": false, @@ -969,12 +969,12 @@ "id": "f51d23aa-742c-40d4-b000-2b90c3ae197c", "savedPayload": { "position": { - "x": 25084.652987491874, - "y": 31366.721324632876 + "x": 25027.61129991437, + "y": 31378.62311172386 }, "targetPosition": { - "x": 25162.29870102263, - "y": 31076.943576746155 + "x": 25137.213607224287, + "y": 31099.3609871306 }, "floatingObject": { "isPinned": false, @@ -1030,12 +1030,12 @@ "id": "7f18003d-f622-46d4-b243-e681d78b0503", "savedPayload": { "position": { - "x": 25162.29870102263, - "y": 31376.943576746155 + "x": 25043.020009434375, + "y": 31411.307175813225 }, "targetPosition": { - "x": 24950.166666666668, - "y": 31164.81154239019 + "x": 24883.410386479773, + "y": 31157.289916044738 }, "floatingObject": { "isPinned": false, @@ -1065,12 +1065,12 @@ "id": "34acbd28-6ae0-494c-ac26-5b253ac758c6", "savedPayload": { "position": { - "x": 24950.166666666668, - "y": 31464.81154239019 + "x": 24816.654106292877, + "y": 31449.768289699285 }, "targetPosition": { - "x": 24950.166666666668, - "y": 31164.81154239019 + "x": 24883.410386479773, + "y": 31157.289916044738 }, "floatingObject": { "isPinned": false, @@ -1100,12 +1100,12 @@ "id": "8f7ad8cf-2c10-4d53-8c3b-baa729ea8292", "savedPayload": { "position": { - "x": 24738.034632310704, - "y": 31376.943576746155 + "x": 24629.393126711286, + "y": 31316.89953899934 }, "targetPosition": { - "x": 24950.166666666668, - "y": 31164.81154239019 + "x": 24883.410386479773, + "y": 31157.289916044738 }, "floatingObject": { "isPinned": false, @@ -1351,7 +1351,8 @@ "arrangementStyle": 0 }, "uiObject": { - "isRunning": false + "isRunning": false, + "shortcutKey": "a" } } }, @@ -1372,12 +1373,12 @@ "id": "c1b99af4-d8ab-446e-b8c4-76d01c2f2766", "savedPayload": { "position": { - "x": 24390.359045531335, - "y": 31014.81154239019 + "x": 24380.714867141585, + "y": 30757.065448730853 }, "targetPosition": { - "x": 24650.166666666668, - "y": 30864.81154239019 + "x": 24679.87600629594, + "y": 30734.646420654924 }, "floatingObject": { "isPinned": false, @@ -1415,12 +1416,12 @@ "id": "ffc5e688-d2d6-4747-ab6e-79d62a4e391b", "savedPayload": { "position": { - "x": 24390.359045531335, - "y": 30714.81154239019 + "x": 24510.879988876855, + "y": 30486.774788360126 }, "targetPosition": { - "x": 24650.166666666668, - "y": 30864.81154239019 + "x": 24679.87600629594, + "y": 30734.646420654924 }, "floatingObject": { "isPinned": false, @@ -1506,7 +1507,7 @@ }, "uiObject": { "isRunning": false, - "shortcutKey": "a" + "shortcutKey": "" }, "referenceParent": { "type": "Assets", @@ -1537,7 +1538,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -1821,7 +1822,8 @@ "arrangementStyle": 0 }, "uiObject": { - "isRunning": false + "isRunning": false, + "shortcutKey": "" } } } \ No newline at end of file diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index 56d2fa73c..82ae85bd5 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -877,13 +877,13 @@ { "type": "Weight Votes Switch", "name": "Governance Programs Pool Class", - "config": "{\n \"percentage\": 7.5\n}", + "config": "{\n \"percentage\": 5\n}", "project": "Governance", "weightVotesSwitch": [ { "type": "Weight Votes Switch", "name": "Community Building Programs Pool Class", - "config": "{\n \"percentage\": 70\n}", + "config": "{\n \"percentage\": 50\n}", "project": "Governance", "weightVotesSwitch": [ { @@ -901,12 +901,12 @@ "id": "d5cfaf67-cacc-4ce2-bcf3-1cf86e104ff3", "savedPayload": { "position": { - "x": 31296.69683694488, - "y": 24603.823102920433 + "x": 31489.106092113674, + "y": 23952.029123225548 }, "targetPosition": { - "x": 31053.991738632398, - "y": 24780.158678608175 + "x": 31381.595707250082, + "y": 24232.103251174707 }, "floatingObject": { "isPinned": false, @@ -966,12 +966,12 @@ "id": "0c7e8840-3b89-48c4-8087-b3e0c2396892", "savedPayload": { "position": { - "x": 31334.065866581557, - "y": 24672.648293744583 + "x": 31557.931282937825, + "y": 23989.398152862224 }, "targetPosition": { - "x": 31053.991738632398, - "y": 24780.158678608175 + "x": 31381.595707250082, + "y": 24232.103251174707 }, "floatingObject": { "isPinned": false, @@ -1030,12 +1030,12 @@ "id": "e234520e-5755-418a-9a32-f53a4d02f04d", "savedPayload": { "position": { - "x": 31053.991738632398, - "y": 24780.158678608175 + "x": 31381.595707250082, + "y": 24232.103251174707 }, "targetPosition": { - "x": 30790.34660483381, - "y": 24923.30630668606 + "x": 31238.448079172198, + "y": 24495.748384973296 }, "floatingObject": { "isPinned": false, @@ -1096,12 +1096,12 @@ "id": "90eeb2fb-aa44-4530-bbeb-44b29a574c9b", "savedPayload": { "position": { - "x": 31370.64003199154, - "y": 24775.930550725934 + "x": 31644.856507790835, + "y": 24056.09822382808 }, "targetPosition": { - "x": 31085.323077102996, - "y": 24868.635649038417 + "x": 31456.060390475883, + "y": 24289.24201226517 }, "floatingObject": { "isPinned": false, @@ -1161,12 +1161,12 @@ "id": "d9180061-a15d-48dc-8330-be63446cf655", "savedPayload": { "position": { - "x": 31384.911937529367, - "y": 24852.934862165534 + "x": 31698.765488788365, + "y": 24112.90643657743 }, "targetPosition": { - "x": 31085.323077102996, - "y": 24868.635649038417 + "x": 31456.060390475883, + "y": 24289.24201226517 }, "floatingObject": { "isPinned": false, @@ -1225,12 +1225,12 @@ "id": "48220c57-0e4b-4ebc-b5af-ac122b17ccf5", "savedPayload": { "position": { - "x": 31085.323077102996, - "y": 24868.635649038417 + "x": 31456.060390475883, + "y": 24289.24201226517 }, "targetPosition": { - "x": 30790.34660483381, - "y": 24923.30630668606 + "x": 31238.448079172198, + "y": 24495.748384973296 }, "floatingObject": { "isPinned": false, @@ -1291,12 +1291,12 @@ "id": "1289397e-3fba-4ff6-b095-d7fb40cd2066", "savedPayload": { "position": { - "x": 31387.78006324595, - "y": 24962.464164352074 + "x": 31760.82483486078, + "y": 24203.2033454263 }, "targetPosition": { - "x": 31087.78006324595, - "y": 24962.464164352074 + "x": 31509.223664477155, + "y": 24366.595055930808 }, "floatingObject": { "isPinned": false, @@ -1356,12 +1356,12 @@ "id": "945ed8a9-4d5d-4304-83ed-ca5a750b27a2", "savedPayload": { "position": { - "x": 31377.557811132672, - "y": 25040.10987788283 + "x": 31794.5406193657, + "y": 24273.889957618325 }, "targetPosition": { - "x": 31087.78006324595, - "y": 24962.464164352074 + "x": 31509.223664477155, + "y": 24366.595055930808 }, "floatingObject": { "isPinned": false, @@ -1420,12 +1420,12 @@ "id": "0efc0384-5f10-493c-bf04-a2eec4b61770", "savedPayload": { "position": { - "x": 31087.78006324595, - "y": 24962.464164352074 + "x": 31509.223664477155, + "y": 24366.595055930808 }, "targetPosition": { - "x": 30790.34660483381, - "y": 24923.30630668606 + "x": 31238.448079172198, + "y": 24495.748384973296 }, "floatingObject": { "isPinned": false, @@ -1474,7 +1474,7 @@ { "type": "Weight Votes Switch", "name": "Influencer Program Pool Class", - "config": "{\n \"percentage\": 10\n}", + "config": "{\n \"percentage\": 0\n}", "project": "Governance", "weightVotesSwitch": [], "poolWeightVotes": [ @@ -1486,12 +1486,12 @@ "id": "7f198bd2-bbe2-47fa-a5e9-b417c453faf8", "savedPayload": { "position": { - "x": 31346.43914502731, - "y": 25145.16473404103 + "x": 31825.65928547106, + "y": 24378.944813776525 }, "targetPosition": { - "x": 31061.122190138765, - "y": 25052.459635728548 + "x": 31535.88153758434, + "y": 24456.590527307282 }, "floatingObject": { "isPinned": false, @@ -1551,12 +1551,12 @@ "id": "3e0ac914-7a36-4dd7-8ba3-19116faafc43", "savedPayload": { "position": { - "x": 31312.723360522392, - "y": 25215.851346233056 + "x": 31835.88153758434, + "y": 24456.590527307282 }, "targetPosition": { - "x": 31061.122190138765, - "y": 25052.459635728548 + "x": 31535.88153758434, + "y": 24456.590527307282 }, "floatingObject": { "isPinned": false, @@ -1615,12 +1615,12 @@ "id": "edf91f0f-7013-428f-9165-59ccea32edff", "savedPayload": { "position": { - "x": 31061.122190138765, - "y": 25052.459635728548 + "x": 31535.88153758434, + "y": 24456.590527307282 }, "targetPosition": { - "x": 30790.34660483381, - "y": 24923.30630668606 + "x": 31238.448079172198, + "y": 24495.748384973296 }, "floatingObject": { "isPinned": false, @@ -1674,12 +1674,12 @@ "id": "c3f7a909-3284-4f5f-86db-41fdab0cf484", "savedPayload": { "position": { - "x": 30790.34660483381, - "y": 24923.30630668606 + "x": 31238.448079172198, + "y": 24495.748384973296 }, "targetPosition": { - "x": 30490.44940734114, - "y": 24931.159391178422 + "x": 30991.210222585592, + "y": 24665.670256050747 }, "floatingObject": { "isPinned": false, @@ -1993,12 +1993,12 @@ "id": "5962ffe0-3120-4573-b996-6bf22cfdc9de", "savedPayload": { "position": { - "x": 30770.5235352903, - "y": 25038.669776042014 + "x": 31284.654502805734, + "y": 24603.29674880542 }, "targetPosition": { - "x": 30490.44940734114, - "y": 24931.159391178422 + "x": 30991.210222585592, + "y": 24665.670256050747 }, "floatingObject": { "isPinned": false, @@ -2506,12 +2506,12 @@ "id": "efa27450-103f-4b2e-b0c5-b26d538e711e", "savedPayload": { "position": { - "x": 30708.061718644825, - "y": 25137.665763886547 + "x": 31286.18669485478, + "y": 24720.34091369839 }, "targetPosition": { - "x": 30490.44940734114, - "y": 24931.159391178422 + "x": 30991.210222585592, + "y": 24665.670256050747 }, "floatingObject": { "isPinned": false, @@ -2601,24 +2601,24 @@ { "type": "Weight Votes Switch", "name": "Superalgos Software Projects Pools", - "config": "{\n \"percentage\": 2.5\n}", + "config": "{\n \"percentage\": 5\n}", "project": "Governance", "weightVotesSwitch": [], "poolWeightVotes": [ { "type": "Pool Weight Vote", "name": "Foundations Project Pool", - "config": "{\n \"percentage\": 28\n}", + "config": "{\n \"percentage\": 5\n}", "project": "Governance", "id": "2a1c7f8b-1cf0-411b-b483-d400885c3728", "savedPayload": { "position": { - "x": 30715.633511156124, - "y": 24944.95077561178 + "x": 31187.576829133694, + "y": 24554.59263126371 }, "targetPosition": { - "x": 30427.987590695666, - "y": 25030.155379022955 + "x": 30992.74241463464, + "y": 24782.714420943717 }, "floatingObject": { "isPinned": false, @@ -2661,17 +2661,17 @@ { "type": "Pool Weight Vote", "name": "TensorFlow Project Pool", - "config": "{\n \"percentage\": 22\n}", + "config": "{\n \"percentage\": 40\n}", "project": "Governance", "id": "6c19b162-0b82-4d3a-a949-7361a2ad2b22", "savedPayload": { "position": { - "x": 30719.69856681497, - "y": 25100.18898817973 + "x": 31275.534861962293, + "y": 24682.572363173585 }, "targetPosition": { - "x": 30427.987590695666, - "y": 25030.155379022955 + "x": 30992.74241463464, + "y": 24782.714420943717 }, "floatingObject": { "isPinned": false, @@ -2714,17 +2714,17 @@ { "type": "Pool Weight Vote", "name": "Governance Project Pool", - "config": "{\n \"percentage\": 25\n}", + "config": "{\n \"percentage\": 50\n}", "project": "Governance", "id": "0c9cc0a5-cbc2-4c85-824e-432875d39dfc", "savedPayload": { "position": { - "x": 30645.59990199935, - "y": 25236.66175173108 + "x": 31287.718886903825, + "y": 24837.38507859136 }, "targetPosition": { - "x": 30427.987590695666, - "y": 25030.155379022955 + "x": 30992.74241463464, + "y": 24782.714420943717 }, "floatingObject": { "isPinned": false, @@ -2767,17 +2767,17 @@ { "type": "Pool Weight Vote", "name": "Education Project Pool", - "config": "{\n \"percentage\": 18\n}", + "config": "{\n \"percentage\": 5\n}", "project": "Governance", "id": "39553f4f-8b18-4194-9d91-38ded93677f3", "savedPayload": { "position": { - "x": 30513.192194106843, - "y": 25317.801299483413 + "x": 31220.864204314646, + "y": 24977.548835442773 }, "targetPosition": { - "x": 30427.987590695666, - "y": 25030.155379022955 + "x": 30992.74241463464, + "y": 24782.714420943717 }, "floatingObject": { "isPinned": false, @@ -2820,17 +2820,17 @@ { "type": "Pool Weight Vote", "name": "Ethereum Project Pool", - "config": "{}", + "config": "{\n \"percentage\": 0\n}", "project": "Governance", "id": "c0e53819-b234-4583-b1c7-b465492ae165", "savedPayload": { "position": { - "x": 30357.953981538893, - "y": 25321.866355142258 + "x": 31092.88447240477, + "y": 25065.50686827137 }, "targetPosition": { - "x": 30427.987590695666, - "y": 25030.155379022955 + "x": 30992.74241463464, + "y": 24782.714420943717 }, "floatingObject": { "isPinned": false, @@ -2919,7 +2919,7 @@ { "type": "Weight Votes Switch", "name": "Trading Intelligence", - "config": "{\n \"percentage\": 4.5\n}", + "config": "{\n \"percentage\": 2.5\n}", "project": "Governance", "weightVotesSwitch": [], "poolWeightVotes": [ @@ -3143,12 +3143,12 @@ "id": "34682b4d-a2de-49da-baa3-bfec87ac0521", "savedPayload": { "position": { - "x": 30481.873497682933, - "y": 25266.693831885383 + "x": 31166.763013562842, + "y": 24951.743891164326 }, "targetPosition": { - "x": 30218.228363884344, - "y": 25123.5462038075 + "x": 30867.687813442903, + "y": 24975.28161988268 }, "floatingObject": { "isPinned": false, @@ -3191,17 +3191,17 @@ { "type": "Pool Weight Vote", "name": "Tensor Flow Project Pool", - "config": "{\n \"percentage\": 35\n}", + "config": "{\n \"percentage\": 30\n}", "project": "Governance", "id": "bd2be404-987e-4568-90c1-12bb74c850e1", "savedPayload": { "position": { - "x": 30374.977933299127, - "y": 25379.338253113725 + "x": 31138.46339874786, + "y": 25104.43494892517 }, "targetPosition": { - "x": 30218.228363884344, - "y": 25123.5462038075 + "x": 30867.687813442903, + "y": 24975.28161988268 }, "floatingObject": { "isPinned": false, @@ -3244,17 +3244,17 @@ { "type": "Pool Weight Vote", "name": "Governance Project Pool", - "config": "{\n \"percentage\": 35\n}", + "config": "{\n \"percentage\": 40\n}", "project": "Governance", "id": "e279f63a-310d-4532-bfc9-54e883c537dd", "savedPayload": { "position": { - "x": 30226.081448376706, - "y": 25423.443401300166 + "x": 31037.609684520354, + "y": 25222.519476469286 }, "targetPosition": { - "x": 30218.228363884344, - "y": 25123.5462038075 + "x": 30867.687813442903, + "y": 24975.28161988268 }, "floatingObject": { "isPinned": false, @@ -3297,17 +3297,17 @@ { "type": "Pool Weight Vote", "name": "Education Project Pool", - "config": "{}", + "config": "{\n \"percentage\": 5\n}", "project": "Governance", "id": "5a656caa-36db-4ee7-a1c3-f748636b80aa", "savedPayload": { "position": { - "x": 30075.08073580646, - "y": 25387.191337606087 + "x": 30891.225542161257, + "y": 25274.35682000262 }, "targetPosition": { - "x": 30218.228363884344, - "y": 25123.5462038075 + "x": 30867.687813442903, + "y": 24975.28161988268 }, "floatingObject": { "isPinned": false, @@ -3355,12 +3355,12 @@ "id": "af3c5702-3ce1-4a32-8987-8bbce440931b", "savedPayload": { "position": { - "x": 29962.436314578117, - "y": 25280.295773222282 + "x": 30738.534484400414, + "y": 25246.057205187637 }, "targetPosition": { - "x": 30218.228363884344, - "y": 25123.5462038075 + "x": 30867.687813442903, + "y": 24975.28161988268 }, "floatingObject": { "isPinned": false, @@ -3417,13 +3417,14 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 2, "distanceToParent": 3, "arrangementStyle": 0 }, "uiObject": { - "isRunning": false + "isRunning": false, + "shortcutKey": "q" }, "referenceParent": { "type": "Pool Class", @@ -4036,7 +4037,8 @@ "arrangementStyle": 0 }, "uiObject": { - "isRunning": false + "isRunning": false, + "shortcutKey": "" } } }, @@ -12079,7 +12081,7 @@ }, "uiObject": { "isRunning": false, - "shortcutKey": "q" + "shortcutKey": "" }, "referenceParent": { "type": "Asset", @@ -13745,12 +13747,12 @@ "id": "928e9ccb-1e90-48a9-af77-b3089225fc4f", "savedPayload": { "position": { - "x": 29829.25291584204, - "y": 24124.4628502733 + "x": 29869.25291584204, + "y": 24143.462850273303 }, "targetPosition": { - "x": 29951.27390876478, - "y": 23850.39921298052 + "x": 29991.27390876478, + "y": 23869.399212980523 }, "floatingObject": { "isPinned": false, @@ -13768,12 +13770,12 @@ "id": "b046f4e4-40b1-4e47-8fed-75a6a5c6029d", "savedPayload": { "position": { - "x": 29951.27390876478, - "y": 23850.39921298052 + "x": 29991.27390876478, + "y": 23869.399212980523 }, "targetPosition": { - "x": 30073.294901687517, - "y": 23576.33557568774 + "x": 30113.294901687517, + "y": 23595.335575687743 }, "floatingObject": { "isPinned": false, @@ -13791,7 +13793,7 @@ "delegationProgram": { "type": "Delegation Program", "name": "New Delegation Program", - "config": "{\n \"percentage\": 85\n}", + "config": "{\n \"percentage\": 100\n}", "project": "Governance", "delegatePowerSwitch": [ { @@ -14066,12 +14068,12 @@ "id": "3ff7f410-911d-4cb8-9094-d816dee4dccb", "savedPayload": { "position": { - "x": 29774.938333077036, - "y": 23607.694114668036 + "x": 29814.938333077036, + "y": 23626.69411466804 }, "targetPosition": { - "x": 30073.294901687517, - "y": 23576.33557568774 + "x": 30113.294901687517, + "y": 23595.335575687743 }, "floatingObject": { "isPinned": false, From 9199a70e4b177c666046226386a2a8449a9106bd Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 19 Aug 2021 19:24:42 +0200 Subject: [PATCH 4/4] Governance: Token Distribution command gov.pay implemented and tested. --- Client/client.js | 2 +- Client/httpInterface.js | 5 +- Client/package-lock.json | 30 +++ Client/package.json | 2 + Client/web3Server.js | 84 +++++++- Projects/Foundations/Icons/web3-api.png | Bin 0 -> 15217 bytes .../Schemas/App-Schema/Api/apis.json | 13 ++ .../Schemas/App-Schema/web3-api.json | 35 ++++ .../Governance/Plugins/Pools/Superalgos.json | 2 +- .../User-Profiles/Luis-Fernando-Molina.json | 192 +++++++++++++----- Projects/Governance/UI/Globals/SaToken.js | 4 +- .../Spaces/Reports-Space/CommandInterface.js | 85 ++++++-- .../UI/Spaces/Reports-Space/Delegation.js | 1 + .../Spaces/User-Profile-Space/UserProfile.js | 2 +- .../UI/Utilities/DescendentTables.js | 1 + 15 files changed, 387 insertions(+), 71 deletions(-) create mode 100644 Projects/Foundations/Icons/web3-api.png create mode 100644 Projects/Foundations/Schemas/App-Schema/web3-api.json diff --git a/Client/client.js b/Client/client.js index 9f4a241e0..3e0999b15 100644 --- a/Client/client.js +++ b/Client/client.js @@ -18,7 +18,7 @@ process.on('uncaughtException', function (err) { process.on('unhandledRejection', (reason, p) => { // Signal user that a necissary node module is missing if (reason.code == 'MODULE_NOT_FOUND') { - console.log("[ERROR] Node Modules not found. Running the node setup command and then restart") + console.log("[ERROR] Dependency library not found. Please try running the 'node setup' command and then restart the Client.") console.log('[ERROR] Client -> client-> reason = ' + JSON.stringify(reason)) process.exit(1) } diff --git a/Client/httpInterface.js b/Client/httpInterface.js index cd8cf6785..d34c0aff0 100644 --- a/Client/httpInterface.js +++ b/Client/httpInterface.js @@ -1102,7 +1102,10 @@ exports.newHttpInterface = function newHttpInterface( case 'payContributors': { let serverResponse = await WEB3_SERVER.payContributors( - params.signature + params.contractAddress, + params.contractAbi, + params.paymentsArray, + params.mnemonic ) respondWithContent(JSON.stringify(serverResponse), httpResponse) diff --git a/Client/package-lock.json b/Client/package-lock.json index 085910bef..119b3c164 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -1397,6 +1397,36 @@ "setimmediate": "^1.0.5" } }, + "ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, "ethereumjs-util": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz", diff --git a/Client/package.json b/Client/package.json index cb0a4b543..d09113f0b 100644 --- a/Client/package.json +++ b/Client/package.json @@ -10,6 +10,8 @@ "@octokit/rest": "^18.9.0", "ccxt": "^1.51.98", "child_process": "^1.0.2", + "ethereumjs-common": "^1.5.2", + "ethereumjs-tx": "^2.1.2", "ethers": "^5.4.4", "lookpath": "^1.2.2", "node-fetch": "2.6.1", diff --git a/Client/web3Server.js b/Client/web3Server.js index a67e1afe7..48745b979 100644 --- a/Client/web3Server.js +++ b/Client/web3Server.js @@ -8,7 +8,8 @@ exports.newWeb3Server = function newWeb3Server() { getWalletBalances: getWalletBalances, signData: signData, recoverAddress: recoverAddress, - mnemonicToPrivateKey: mnemonicToPrivateKey, + mnemonicToPrivateKey: mnemonicToPrivateKey, + payContributors: payContributors, initialize: initialize, finalize: finalize, run: run @@ -245,13 +246,13 @@ exports.newWeb3Server = function newWeb3Server() { if (wallet.privateKey !== undefined) { return { - address: wallet.address, + address: wallet.address, privateKey: wallet.privateKey, result: 'Ok' } } else { return { - address: undefined, + address: undefined, privateKey: undefined, result: 'Fail' } @@ -260,6 +261,83 @@ exports.newWeb3Server = function newWeb3Server() { } catch (err) { return { error: 'Could not convert to Private Key. ' + err.stack } } + } + async function payContributors(contractAddress, contractAbi, paymentsArray, mnemonic) { + try { + let response = await mnemonicToPrivateKey(mnemonic) + let privateKey = response.privateKey + + for (let i = 0; i < paymentsArray.length; i++) { + await CL.projects.foundations.utilities.asyncFunctions.sleep(10000) + let payment = paymentsArray[i] + sendTokens( + i + 1, + payment.userProfile, + payment.from, + payment.to, + payment.amount + ) + } + + async function sendTokens(number, userProfile, fromAddress, toAddress, tokenAmount) { + try { + console.log('') + console.log('---------------------------------------------------------------------------------------------------------------------------------------------------') + console.log(' Payment # ' + number + ' - User Profile: ' + userProfile + ' - SA Tokens Amount: ' + tokenAmount / 1000000000000000000 + ' - Address: ' + toAddress) + console.log('---------------------------------------------------------------------------------------------------------------------------------------------------') + console.log('') + + const Tx = require('ethereumjs-tx').Transaction; + const web3 = new Web3(new Web3.providers.HttpProvider('https://bsc-dataseed.binance.org/')) + const amount = web3.utils.toHex(tokenAmount) + privateKey = privateKey.replace('0x', '') + const privateKeyBuffer = Buffer.from(privateKey, 'hex') + const contractAbiObject = JSON.parse(contractAbi) + const contract = new web3.eth.Contract(contractAbiObject, contractAddress, { from: fromAddress }) + const Common = require('ethereumjs-common').default + const BSC_FORK = Common.forCustomChain( + 'mainnet', + { + name: 'Binance Smart Chain Mainnet', + networkId: 56, + chainId: 56, + url: 'https://bsc-dataseed.binance.org/' + }, + 'istanbul', + ); + + const nonce = await web3.eth.getTransactionCount(fromAddress); + + const rawTransaction = { + "from": fromAddress, + "gasPrice": web3.utils.toHex(5000000000), + "gasLimit": web3.utils.toHex(210000), + "to": contractAddress, "value": "0x0", + "data": contract.methods.transfer(toAddress, amount).encodeABI(), + "nonce": web3.utils.toHex(nonce) + }; + + const transaction = new Tx(rawTransaction, { 'common': BSC_FORK }) + transaction.sign(privateKeyBuffer) + + console.log('Transaction:', rawTransaction) + const result = await web3.eth.sendSignedTransaction('0x' + transaction.serialize().toString('hex')) + console.log('Result:', result) + return result + } catch (err) { + console.log('[ERROR] web3Server -> sendTokens -> err.stack = ' + err.stack) + } + } + + return { + address: wallet.address, + privateKey: wallet.privateKey, + result: 'Ok' + } + + } catch (err) { + return { error: 'Could not convert to Private Key. ' + err.stack } + } } } \ No newline at end of file diff --git a/Projects/Foundations/Icons/web3-api.png b/Projects/Foundations/Icons/web3-api.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ee2a209ae5922e1d49d3686dfabf910a979d02 GIT binary patch literal 15217 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} zk~?Jo7l$6cpqVNOSHaTX#0(6OBq)I)ho<)5NdQcqW4X*uSLW-Y08%)zKy8wTwcTgc zaldh6DNk1$yFk6#OS-=_=iq9W&}%7NiwmjbAj~lRFv#RzCBGqTCGL>5+xL%*U!SXBiPb|1Gjec@*Hqf3Sg2| z+YNTQ168O%HsP@j<3$9vTL~g9VgaR)aLH}=^szzBDR{jEArD_9Xe5}zX=P!?xm@_g zS%}q=H~=OtVV4%l5`%LbIY(<~*S!GH$62Pv3y_#N4h57cn3H13s!4*&dVJENHNb`X*<9Yb`8EIUK3#oAp(-IPY^Eb}{ zPrvjBKv_}v*Wy$*2CLhGv&p3#xsoLW0hPE)*gRAk2j3IM1ueaXWN2XV+_9CU#(DU* zJx9mjsySW+w%oBPCqB(3Bv5;;C;;$F;g7<;xGb751?U!B_gi^9-u4X23uw6t`}7M8 z!&<@~Rs!siOJ#~dLm>DDwMCctZkpjqsDdHaJ^jm^zndrxfG?xMP8u|jp*;I+0Z!-j zOg`Y=R+wf2h=Eqbjj({U!O)t0eK$KFWQ7PVo-m$3D6pq6S|BpcB(C$1k3ORTM=6_*;;MNxS6G`? s;XgsX@9Cd?db;7APIs->" + }, + "propertyNameAtParent": "web3API", + "isPersonalData": true +} \ No newline at end of file diff --git a/Projects/Governance/Plugins/Pools/Superalgos.json b/Projects/Governance/Plugins/Pools/Superalgos.json index eb2ea2d52..a30d80f5e 100644 --- a/Projects/Governance/Plugins/Pools/Superalgos.json +++ b/Projects/Governance/Plugins/Pools/Superalgos.json @@ -1,7 +1,7 @@ { "type": "Pools", "name": "Superalgos", - "config": "{\n \"tokens\": \"60000000\",\n \"codeName\": \"Superalgos\"\n}", + "config": "{\"tokens\":\"60000000\",\"codeName\":\"Superalgos\"}", "project": "Governance", "poolClasses": [ { diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index 82ae85bd5..1c6e76fff 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -12031,27 +12031,39 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "DEXs", - "Asset Class" + "Asset Class", + "Governance", + "90e0c410-b1e7-4f0a-9dec-99c597a7956d" ], [ "First Listing", - "Asset Class" + "Asset Class", + "Governance", + "54f70f64-029a-4f2f-8847-5208c2fa94a1" ], [ " Pancakeswap SA/WBTC", - "Asset Class" + "Asset Class", + "Governance", + "cc6e34d9-d58a-4aa7-9049-250ea90a8430" ], [ "SA Liquidity", - "Asset" + "Asset", + "Governance", + "2e59edc7-7e37-40e3-808f-9ab3c7c5f0b3" ] ] } @@ -12091,27 +12103,39 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "DEXs", - "Asset Class" + "Asset Class", + "Governance", + "90e0c410-b1e7-4f0a-9dec-99c597a7956d" ], [ "First Listing", - "Asset Class" + "Asset Class", + "Governance", + "54f70f64-029a-4f2f-8847-5208c2fa94a1" ], [ " Pancakeswap SA/WBTC", - "Asset Class" + "Asset Class", + "Governance", + "cc6e34d9-d58a-4aa7-9049-250ea90a8430" ], [ "WBTC Liquidity", - "Asset" + "Asset", + "Governance", + "117afaed-83bd-4b0c-be12-40b8c8dd3a34" ] ] } @@ -12148,23 +12172,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "DEXs", - "Asset Class" + "Asset Class", + "Governance", + "90e0c410-b1e7-4f0a-9dec-99c597a7956d" ], [ "First Listing", - "Asset Class" + "Asset Class", + "Governance", + "54f70f64-029a-4f2f-8847-5208c2fa94a1" ], [ " Pancakeswap SA/WBTC", - "Asset Class" + "Asset Class", + "Governance", + "cc6e34d9-d58a-4aa7-9049-250ea90a8430" ] ] } @@ -12203,19 +12237,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "DEXs", - "Asset Class" + "Asset Class", + "Governance", + "90e0c410-b1e7-4f0a-9dec-99c597a7956d" ], [ "First Listing", - "Asset Class" + "Asset Class", + "Governance", + "54f70f64-029a-4f2f-8847-5208c2fa94a1" ] ] } @@ -12254,15 +12296,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "DEXs", - "Asset Class" + "Asset Class", + "Governance", + "90e0c410-b1e7-4f0a-9dec-99c597a7956d" ] ] } @@ -12315,23 +12363,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "CEXs", - "Asset Class" + "Asset Class", + "Governance", + "ec0ab4b8-e3cc-47e6-94e7-6d181e1008f4" ], [ "Open Negotiations", - "Asset Class" + "Asset Class", + "Governance", + "144ad412-94fc-4b80-8dd9-2520f64edfcc" ], [ "Bittrex", - "Asset" + "Asset", + "Governance", + "548dd163-9991-4de3-9e68-9e8a9a051a2f" ] ] } @@ -12370,23 +12428,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "CEXs", - "Asset Class" + "Asset Class", + "Governance", + "ec0ab4b8-e3cc-47e6-94e7-6d181e1008f4" ], [ "Open Negotiations", - "Asset Class" + "Asset Class", + "Governance", + "144ad412-94fc-4b80-8dd9-2520f64edfcc" ], [ "LBank", - "Asset" + "Asset", + "Governance", + "e4e7addb-a840-4ce9-9e01-74c7e57c24ad" ] ] } @@ -12425,23 +12493,33 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "CEXs", - "Asset Class" + "Asset Class", + "Governance", + "ec0ab4b8-e3cc-47e6-94e7-6d181e1008f4" ], [ "Open Negotiations", - "Asset Class" + "Asset Class", + "Governance", + "144ad412-94fc-4b80-8dd9-2520f64edfcc" ], [ "Probit", - "Asset" + "Asset", + "Governance", + "6b27f708-c243-42e9-874b-ceceea7db21f" ] ] } @@ -12478,19 +12556,27 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "CEXs", - "Asset Class" + "Asset Class", + "Governance", + "ec0ab4b8-e3cc-47e6-94e7-6d181e1008f4" ], [ "Open Negotiations", - "Asset Class" + "Asset Class", + "Governance", + "144ad412-94fc-4b80-8dd9-2520f64edfcc" ] ] } @@ -12529,15 +12615,21 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ], [ "CEXs", - "Asset Class" + "Asset Class", + "Governance", + "ec0ab4b8-e3cc-47e6-94e7-6d181e1008f4" ] ] } @@ -12576,11 +12668,15 @@ "referenceParentCombinedNodePath": [ [ "Superalgos-Exchanges", - "Assets" + "Assets", + "Governance", + "2cefeb95-9fde-418b-a35b-6178a97cac9d" ], [ "SA Token Listings Rewards", - "Asset Class" + "Asset Class", + "Governance", + "492669d5-223f-426d-845a-f26dd1ae251e" ] ] } diff --git a/Projects/Governance/UI/Globals/SaToken.js b/Projects/Governance/UI/Globals/SaToken.js index fec31461a..12c4ef3ee 100644 --- a/Projects/Governance/UI/Globals/SaToken.js +++ b/Projects/Governance/UI/Globals/SaToken.js @@ -1,7 +1,9 @@ function newGovernanceGlobalsSaToken() { let thisObject = { SA_TOKEN_BSC_CONTRACT_ADDRESS: '0xfb981ed9a92377ca4d75d924b9ca06df163924fd', - SA_TOKEN_BSC_TREASURY_ACCOUNT_ADDRESS: '0x8d4d2557ce99f83f658adf61eef3e61e04c2ac2c' + SA_TOKEN_BSC_CONTRACT_ABI: '[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"listAddress","type":"address"},{"name":"isBlackListed","type":"bool"}],"name":"blackListAddress","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint256"},{"name":"_supply","type":"uint256"},{"name":"tokenOwner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"blackListed","type":"address"},{"indexed":false,"name":"value","type":"bool"}],"name":"Blacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]', + SA_TOKEN_BSC_TREASURY_ACCOUNT_ADDRESS: '0x8d4d2557ce99f83f658adf61eef3e61e04c2ac2c', + SA_TOKEN_BSC_DECIMAL_FACTOR: 1000000000000000000 } return thisObject } \ No newline at end of file diff --git a/Projects/Governance/UI/Spaces/Reports-Space/CommandInterface.js b/Projects/Governance/UI/Spaces/Reports-Space/CommandInterface.js index d9d5ad775..f7eb10614 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/CommandInterface.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/CommandInterface.js @@ -33,7 +33,7 @@ function newGovernanceReportsCommmandInterface() { UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov PRs Command') return } - if (command.indexOf('gov.prs') !== 0 ) { return 'Not PRs Commands' } + if (command.indexOf('gov.prs') !== 0) { return 'Not PRs Commands' } /* Set up the commit message */ let message = command.trim().substring(command.indexOf(' ') + 1, command.length) @@ -127,28 +127,83 @@ function newGovernanceReportsCommmandInterface() { } if (command.indexOf('gov.pay') !== 0) { return 'Not Pay Commands' } - httpRequest(undefined, 'Gov/Pay/' + UI.projects.education.spaces.docsSpace.currentBranch, onResponse) UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Paying to Contributors') - return + /* + Let's create a list of payments to be made. + */ + let paymentsArray = [] + /* + Here we get from the workspace all User Profiles. + */ + let userProfiles = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile') + /* + Transform the result array into table records. + */ + for (let j = 0; j < userProfiles.length; j++) { + let userProfile = userProfiles[j] + + if (userProfile.payload === undefined) { continue } + if (userProfile.tokensMined === undefined) { continue } + if (userProfile.tokensMined.payload === undefined) { continue } + if (userProfile.tokensMined.payload.tokensMined === undefined) { continue } + + let payment = { + "userProfile": userProfile.name, + "from": UI.projects.governance.globals.saToken.SA_TOKEN_BSC_TREASURY_ACCOUNT_ADDRESS, + "to": userProfile.payload.blockchainAccount, + "amount": 1 * UI.projects.governance.globals.saToken.SA_TOKEN_BSC_DECIMAL_FACTOR //(userProfile.tokensMined.payload.tokensMined.total | 0) * UI.projects.governance.globals.saToken.SA_TOKEN_BSC_DECIMAL_FACTOR + } + + paymentsArray.push(payment) + } + /* Let's get the Mnemonic */ + let web3API = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('APIs')[0].web3API + let mnemonic = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(web3API.payload, 'mnemonic') + + /* Lets execute this command against the Client */ + + let params = { + method: 'payContributors', + contractAddress: UI.projects.governance.globals.saToken.SA_TOKEN_BSC_CONTRACT_ADDRESS, + contractAbi: UI.projects.governance.globals.saToken.SA_TOKEN_BSC_CONTRACT_ABI, + paymentsArray: paymentsArray, + mnemonic: mnemonic + } + + let url = 'GOV' // We will access the default Client GOV endpoint. + + httpRequest(JSON.stringify(params), url, onResponse) function onResponse(err, data) { + /* Lets check the result of the call through the http interface */ - data = JSON.parse(data) - if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result && data.result === GLOBAL.CUSTOM_OK_RESPONSE.result) { - if (data.message.summary.changes + data.message.summary.deletions + data.message.summary.insertions > 0) { - UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Pay Done') - } else { - UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Pay Failed') - } + if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + console.log('[ERROR] Call via HTTP Interface failed.' + err.stack) + console.log('[ERROR] Params = ' + JSON.stringify(params)) + return + } + + let response = JSON.parse(data) + + /* Lets check the result of the method call */ + if (response.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) { + console.log('[ERROR] Call to Client Github Server failed.' + err.stack) + console.log('[ERROR] Params = ' + JSON.stringify(params)) + } + + /* Successful Call */ + + if (response.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Contribution Payments Processed') } else { UI.projects.education.spaces.docsSpace.navigateTo( - data.docs.project, - data.docs.category, - data.docs.type, - data.docs.anchor, + response.docs.project, + response.docs.category, + response.docs.type, + response.docs.anchor, undefined, - data.docs.placeholder + response.docs.placeholder ) } } diff --git a/Projects/Governance/UI/Spaces/Reports-Space/Delegation.js b/Projects/Governance/UI/Spaces/Reports-Space/Delegation.js index 435ff4f5e..6c161a722 100644 --- a/Projects/Governance/UI/Spaces/Reports-Space/Delegation.js +++ b/Projects/Governance/UI/Spaces/Reports-Space/Delegation.js @@ -77,6 +77,7 @@ function newGovernanceReportsDelegation() { if (program === undefined) { continue } if (program.payload === undefined) { continue } if (program.payload[programPropertyName] === undefined) { continue } + if (program.payload[programPropertyName].bonus === undefined) { continue } let tableRecord = { "name": userProfile.name, diff --git a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js index 63d2c0d1c..54cb070fd 100644 --- a/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js +++ b/Projects/Governance/UI/Spaces/User-Profile-Space/UserProfile.js @@ -88,7 +88,7 @@ function newGovernanceUserProfileSpace() { if (transfer.contractAddress !== UI.projects.governance.globals.saToken.SA_TOKEN_BSC_CONTRACT_ADDRESS) { continue } if (transfer.from !== UI.projects.governance.globals.saToken.SA_TOKEN_BSC_TREASURY_ACCOUNT_ADDRESS) { continue } - let currentReputation = Number(transfer.value) / 1000000000000000000 + let currentReputation = Number(transfer.value) / UI.projects.governance.globals.saToken.SA_TOKEN_BSC_DECIMAL_FACTOR let previousReputation = reputationByAddress.get(transfer.to) let newReputation = previousReputation | 0 + currentReputation reputationByAddress.set(transfer.to, newReputation) diff --git a/Projects/Governance/UI/Utilities/DescendentTables.js b/Projects/Governance/UI/Utilities/DescendentTables.js index 89a57fddf..7bebf214a 100644 --- a/Projects/Governance/UI/Utilities/DescendentTables.js +++ b/Projects/Governance/UI/Utilities/DescendentTables.js @@ -91,6 +91,7 @@ function newGovernanceUtilitiesDecendentTables() { if (program === undefined) { continue } if (program.payload === undefined) { continue } if (program.payload[programPropertyName] === undefined) { continue } + if (program.payload[programPropertyName].bonus === undefined) { continue } let tableRecord = { "name": userProfile.name,