Merge branch 'develop' of https://github.com/harrellbm/Superalgos into develop
No files matched your search
@@ -3,6 +3,7 @@ Log-Files
|
||||
My-Workspaces
|
||||
My-Social-Trading-Data
|
||||
My-Network-Nodes-Data
|
||||
My-Secrets
|
||||
debug.log
|
||||
.DS_Store
|
||||
*.db
|
||||
|
||||
@@ -45,7 +45,7 @@ exports.newDesktopApp = function newDesktopApp() {
|
||||
*/
|
||||
queryMessage = {
|
||||
queryType: SA.projects.socialTrading.globals.queryTypes.USER_PROFILES,
|
||||
emitterUserProfileId: DK.TEST_NETWORK_CLIENT_USER_PROFILE_ID,
|
||||
emitterUserProfileId: SA.secrets.map.get('Social Trading Desktop').userProfileId,
|
||||
initialIndex: 'Last',
|
||||
amountRequested: 10,
|
||||
direction: 'Past'
|
||||
@@ -74,7 +74,7 @@ exports.newDesktopApp = function newDesktopApp() {
|
||||
let eventMessage = {
|
||||
eventId: SA.projects.foundations.utilities.miscellaneousFunctions.genereteUniqueId(),
|
||||
eventType: SA.projects.socialTrading.globals.eventTypes.FOLLOW_USER_PROFILE,
|
||||
emitterUserProfileId: DK.TEST_NETWORK_CLIENT_USER_PROFILE_ID,
|
||||
emitterUserProfileId: SA.secrets.map.get('Social Trading Desktop').userProfileId,
|
||||
targetUserProfileId: profile.userProfileId
|
||||
}
|
||||
|
||||
@@ -99,8 +99,8 @@ exports.newDesktopApp = function newDesktopApp() {
|
||||
*/
|
||||
queryMessage = {
|
||||
queryType: SA.projects.socialTrading.globals.queryTypes.USER_PROFILE_STATS,
|
||||
emitterUserProfileId: DK.TEST_NETWORK_CLIENT_USER_PROFILE_ID,
|
||||
targetUserProfileId: DK.TEST_NETWORK_CLIENT_USER_PROFILE_ID
|
||||
emitterUserProfileId: SA.secrets.map.get('Social Trading Desktop').userProfileId,
|
||||
targetUserProfileId: SA.secrets.map.get('Social Trading Desktop').userProfileId
|
||||
}
|
||||
|
||||
query = {
|
||||
|
||||
@@ -53,17 +53,16 @@ exports.newDesktopRoot = function newDesktopRoot() {
|
||||
}
|
||||
|
||||
/*
|
||||
We will use this User Profile for Testing Purposes.
|
||||
{
|
||||
"githubUsername": "Test-Network-Client-Profile",
|
||||
"address": "0xA0dCDA81b42C5EBDc45EC2875C72274B67560246",
|
||||
"privateKey": "0x5fed4817a87431c8a328d0936561e63f45b6db289adac6125b9306ded644dfe9"
|
||||
}
|
||||
Setting up Secrets.
|
||||
*/
|
||||
|
||||
DK.TEST_NETWORK_CLIENT_USER_PROFILE_ID = "baa2f02c-2920-4edb-a103-d452fc61d82f"
|
||||
DK.TEST_NETWORK_CLIENT_USER_PROFILE_HANDLE = "Test-Network-Client-Profile"
|
||||
DK.TEST_NETWORK_CLIENT_USER_PROFILE_PRIVATE_KEY = "0x5fed4817a87431c8a328d0936561e63f45b6db289adac6125b9306ded644dfe9"
|
||||
SA.secrets = {
|
||||
array: require('./My-Secrets/Secrets.json'),
|
||||
map: new Map()
|
||||
}
|
||||
for (let i = 0; i < SA.secrets.array.length; i++) {
|
||||
let secret = SA.secrets.array[i]
|
||||
SA.secrets.map.set (secret.codeName, secret)
|
||||
}
|
||||
|
||||
run()
|
||||
|
||||
|
||||
@@ -48,17 +48,17 @@ exports.newNetworkRoot = function newNetworkRoot() {
|
||||
ws: require('ws'),
|
||||
simpleGit: require('simple-git')
|
||||
}
|
||||
|
||||
/*
|
||||
We will use this User Profile for testing purposes.
|
||||
{
|
||||
"githubUsername": "Test-Network-Node-Profile",
|
||||
"address": "0xa153469c57A91F5a59Fc6c45A37aD8dbad85e417",
|
||||
"privateKey": "0xac498ae59407e6b68429a814f64da2339550f93a767578e28c161ff119159271"
|
||||
}
|
||||
Setting up Secrets.
|
||||
*/
|
||||
NT.NETWORK_NODE_USER_PROFILE_HANDLE = "Test-Network-Node-Profile"
|
||||
NT.NETWORK_NODE_USER_PROFILE_PRIVATE_KEY = "0xac498ae59407e6b68429a814f64da2339550f93a767578e28c161ff119159271"
|
||||
SA.secrets = {
|
||||
array: require('./My-Secrets/Secrets.json'),
|
||||
map: new Map()
|
||||
}
|
||||
for (let i = 0; i < SA.secrets.array.length; i++) {
|
||||
let secret = SA.secrets.array[i]
|
||||
SA.secrets.map.set(secret.codeName, secret)
|
||||
}
|
||||
|
||||
NT.app = require('./Network/NetwokNode.js').newNetworkNode()
|
||||
NT.app.run()
|
||||
|
||||
@@ -301,9 +301,11 @@ exports.newGithubServer = function newGithubServer() {
|
||||
if (await validateFileNameEqualsGithubUsername() === false) { continue }
|
||||
if (await validateFileChangedIsUserProfile() === false) { continue }
|
||||
if (await validateMessageSignedIsGithubUsername() === false) { continue }
|
||||
if (await validateMessageSignedHashIsSignatureHash() === false) { continue }
|
||||
if (await validateUserProfileNodeNameEqualsGithubUsername() === false) { continue }
|
||||
if (await validateUserProfileIdDoesNotBelongtoAnotherUserProfile() === false) { continue }
|
||||
if (await validateUserProfileBlockchainAccountDoesNotBelongtoAnotherUserProfile() === false) { continue }
|
||||
if (await validateUserProfileSigningAccountsDoesNotBelongtoAnotherUserProfile() === false) { continue }
|
||||
|
||||
if (await mergePullRequest() === false) {
|
||||
console.log('[WARN] Github Server -> mergeGithubPullRequests -> Merge Failed -> Pull Request "' + pullRequest.title + '" not merged because Github could not merge it. -> mergeResponse.message = ' + mergeResponse.data.message)
|
||||
@@ -440,12 +442,46 @@ exports.newGithubServer = function newGithubServer() {
|
||||
}
|
||||
}
|
||||
|
||||
async function validateMessageSignedHashIsSignatureHash() {
|
||||
/*
|
||||
Validation #5: The message signed has is equal to the signature messageHash.
|
||||
*/
|
||||
let config = JSON.parse(userProfile.config)
|
||||
|
||||
let serverResponse = await PL.servers.WEB3_SERVER.hashData(
|
||||
config.signature.message
|
||||
)
|
||||
let messageSignedHash = serverResponse.hash
|
||||
let signatureHash = config.signature.messageHash
|
||||
|
||||
if (messageSignedHash !== signatureHash) {
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #5 Failed -> Pull Request "' + pullRequest.title + '" not merged because the Message Signed Hash is not equal to the the Signature Hash. -> messageSignedHash = ' + messageSignedHash + '-> signatureHash = ' + signatureHash)
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.issues.createComment({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
issue_number: pullRequest.number,
|
||||
body: 'This Pull Request could not be automatically merged and was closed by the Superalgos Governance System because the Message Signed Hash is not equal to the the Signature Hash.\n\n messageSignedHash = "' + messageSignedHash + '"\n\n signatureHash = "' + signatureHash + '"'
|
||||
});
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.pulls.update({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
pull_number: pullRequest.number,
|
||||
state: 'closed'
|
||||
});
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
async function validateUserProfileNodeNameEqualsGithubUsername() {
|
||||
/*
|
||||
Validation #5: The name of the User Profile node is not the Github Username.
|
||||
Validation #6: The name of the User Profile node is not the Github Username.
|
||||
*/
|
||||
if (userProfile.name !== githubUsername) {
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #5 Failed -> Pull Request "' + pullRequest.title + '" not merged because the Github Username is not equal to the User Profile node\'s name. -> Github Username = ' + githubUsername + '-> userProfile.name = ' + userProfile.name)
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #6 Failed -> Pull Request "' + pullRequest.title + '" not merged because the Github Username is not equal to the User Profile node\'s name. -> Github Username = ' + githubUsername + '-> userProfile.name = ' + userProfile.name)
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.issues.createComment({
|
||||
@@ -468,7 +504,7 @@ exports.newGithubServer = function newGithubServer() {
|
||||
|
||||
async function validateUserProfileIdDoesNotBelongtoAnotherUserProfile() {
|
||||
/*
|
||||
Validation #6: The id of the User Profile can not be the id of an already existing User Profile
|
||||
Validation #7: The id of the User Profile can not be the id of an already existing User Profile
|
||||
unless the existing one belongs to the same Github username.
|
||||
*/
|
||||
let userProfileIdMap = new Map()
|
||||
@@ -493,7 +529,7 @@ exports.newGithubServer = function newGithubServer() {
|
||||
if (testUserProfile === undefined) { return true }
|
||||
if (testUserProfile !== userProfile.name) {
|
||||
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #6 Failed -> Pull Request "' + pullRequest.title + '" not merged because the User Profile Id already exists and belongs to another User Profile on record. -> Profile Id = ' + userProfile.id + '-> User Profile with the same Id = ' + testUserProfile)
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #7 Failed -> Pull Request "' + pullRequest.title + '" not merged because the User Profile Id already exists and belongs to another User Profile on record. -> Profile Id = ' + userProfile.id + '-> User Profile with the same Id = ' + testUserProfile)
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.issues.createComment({
|
||||
@@ -517,7 +553,7 @@ exports.newGithubServer = function newGithubServer() {
|
||||
async function validateUserProfileBlockchainAccountDoesNotBelongtoAnotherUserProfile() {
|
||||
try {
|
||||
/*
|
||||
Validation #7 The blockchain account of the User Profile can not be the
|
||||
Validation #8 The blockchain account of the User Profile can not be the
|
||||
blockchain account of an already existing User Profile
|
||||
unless the existing one belongs to the same Github username.
|
||||
*/
|
||||
@@ -554,7 +590,7 @@ exports.newGithubServer = function newGithubServer() {
|
||||
if (testUserProfile === undefined) { return true }
|
||||
if (testUserProfile !== userProfile.name) {
|
||||
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #7 Failed -> Pull Request "' + pullRequest.title + '" not merged because the User Profile Blockchain Account already exists and belongs to another User Profile on record. -> Profile Blockchain Account = ' + serverResponse.address + '-> User Profile with the same Blockchain Account = ' + testUserProfile)
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #8 Failed -> Pull Request "' + pullRequest.title + '" not merged because the User Profile Blockchain Account already exists and belongs to another User Profile on record. -> Profile Blockchain Account = ' + serverResponse.address + '-> User Profile with the same Blockchain Account = ' + testUserProfile)
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.issues.createComment({
|
||||
@@ -578,6 +614,77 @@ exports.newGithubServer = function newGithubServer() {
|
||||
}
|
||||
}
|
||||
|
||||
async function validateUserProfileSigningAccountsDoesNotBelongtoAnotherUserProfile() {
|
||||
try {
|
||||
|
||||
if (userProfile.signingAccounts === undefined) { return true }
|
||||
|
||||
for (let i = 0; i < userProfile.signingAccounts.signingAccounts.length; i++) {
|
||||
let signingAccount = userProfile.signingAccounts.signingAccounts[i]
|
||||
let config = JSON.parse(signingAccount.config)
|
||||
/*
|
||||
Validation #9 Signing accounts of the User Profile
|
||||
must have a signature of the same Github username of the User Profile.
|
||||
*/
|
||||
let messageSigned = config.signature.message
|
||||
|
||||
if (messageSigned !== githubUsername) {
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #9 Failed -> Pull Request "' + pullRequest.title + '" not merged because the Signing Account ' + signingAccount.name + ' has not signed the current Github User Account, but something else. -> messageSigned = ' + messageSigned + '-> githubUsername = ' + githubUsername)
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.issues.createComment({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
issue_number: pullRequest.number,
|
||||
body: 'This Pull Request could not be automatically merged and was closed by the Superalgos Governance System because the Signing Account "' + signingAccount.name + '" has not signed the current Github User Account, but something else. \n\n messageSigned = "' + messageSigned + '" \n\n githubUsername = "' + githubUsername + '"'
|
||||
});
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.pulls.update({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
pull_number: pullRequest.number,
|
||||
state: 'closed'
|
||||
});
|
||||
return false
|
||||
}
|
||||
/*
|
||||
Validation #10: The message signed has is equal to the signature messageHash.
|
||||
*/
|
||||
let serverResponse = await PL.servers.WEB3_SERVER.hashData(
|
||||
config.signature.message
|
||||
)
|
||||
let messageSignedHash = serverResponse.hash
|
||||
let signatureHash = config.signature.messageHash
|
||||
|
||||
if (messageSignedHash !== signatureHash) {
|
||||
console.log('[INFO] Github Server -> mergeGithubPullRequests -> Validation #10 Failed -> Pull Request "' + pullRequest.title + '" not merged because the Message Signed Hash is not equal to the the Signature Hash. -> messageSignedHash = ' + messageSignedHash + '-> signatureHash = ' + signatureHash)
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.issues.createComment({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
issue_number: pullRequest.number,
|
||||
body: 'This Pull Request could not be automatically merged and was closed by the Superalgos Governance System because the Message Signed Hash is not equal to the the Signature Hash.\n\n messageSignedHash = "' + messageSignedHash + '"\n\n signatureHash = "' + signatureHash + '"'
|
||||
});
|
||||
|
||||
await PL.projects.foundations.utilities.asyncFunctions.sleep(GITHUB_API_WAITING_TIME)
|
||||
await octokit.rest.pulls.update({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
pull_number: pullRequest.number,
|
||||
state: 'closed'
|
||||
});
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
} catch (err) {
|
||||
console.log(err.stack)
|
||||
}
|
||||
}
|
||||
|
||||
async function mergePullRequest() {
|
||||
/*
|
||||
All validations passed, we will proceed an merge this Pull Request.
|
||||
|
||||
@@ -93,6 +93,15 @@ exports.newHttpInterface = function newHttpInterface() {
|
||||
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
|
||||
return
|
||||
}
|
||||
case 'hashData': {
|
||||
|
||||
let serverResponse = await PL.servers.WEB3_SERVER.hashData(
|
||||
params.data
|
||||
)
|
||||
|
||||
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
|
||||
return
|
||||
}
|
||||
case 'recoverAddress': {
|
||||
|
||||
let serverResponse = await PL.servers.WEB3_SERVER.recoverAddress(
|
||||
@@ -1058,6 +1067,15 @@ exports.newHttpInterface = function newHttpInterface() {
|
||||
)
|
||||
|
||||
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
|
||||
|
||||
setInterval(
|
||||
PL.servers.GITHUB_SERVER.mergePullRequests,
|
||||
60000,
|
||||
params.commitMessage,
|
||||
params.username,
|
||||
params.token
|
||||
)
|
||||
|
||||
return
|
||||
}
|
||||
case 'payContributors': {
|
||||
|
||||
@@ -7,6 +7,7 @@ exports.newWeb3Server = function newWeb3Server() {
|
||||
createWalletAccount: createWalletAccount,
|
||||
getWalletBalances: getWalletBalances,
|
||||
signData: signData,
|
||||
hashData: hashData,
|
||||
recoverAddress: recoverAddress,
|
||||
mnemonicToPrivateKey: mnemonicToPrivateKey,
|
||||
payContributors: payContributors,
|
||||
@@ -223,6 +224,22 @@ exports.newWeb3Server = function newWeb3Server() {
|
||||
}
|
||||
}
|
||||
|
||||
async function hashData(data) {
|
||||
try {
|
||||
|
||||
let web3 = new Web3()
|
||||
let hash = web3.eth.accounts.hashMessage(data)
|
||||
|
||||
return {
|
||||
hash: hash,
|
||||
result: 'Ok'
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
return { error: 'Could not hash the data. ' + err.stack }
|
||||
}
|
||||
}
|
||||
|
||||
async function recoverAddress(signature) {
|
||||
try {
|
||||
let signatureObject = JSON.parse(signature)
|
||||
|
||||
@@ -138,7 +138,7 @@ function newAppLoader() {
|
||||
|
||||
for (let i = 0; i < modulesArray.length; i++) {
|
||||
let path = modulesArray[i]
|
||||
console.log(path)
|
||||
|
||||
REQUIREJS([path], onRequired)
|
||||
|
||||
if (INFO_LOG === true) { logger.write('[INFO] loadModules -> Module Requested.') }
|
||||
|
||||
@@ -98,6 +98,9 @@ function newUniqueId () {
|
||||
|
||||
function splitTextIntoPhrases (text, wordsPerLine) {
|
||||
try {
|
||||
if (text.split === undefined) {
|
||||
return []
|
||||
}
|
||||
let splittedLabel = text.split(' ')
|
||||
let phrases = []
|
||||
let phrase = ''
|
||||
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
@@ -33,32 +33,48 @@
|
||||
"propertyNameAtParent": "assets",
|
||||
"alternativeIcons": [
|
||||
{
|
||||
"codeName": "XMR",
|
||||
"iconName": "monero"
|
||||
"codeName": "ADA",
|
||||
"iconName": "cardano"
|
||||
},
|
||||
{
|
||||
"codeName": "USDT",
|
||||
"iconName": "tether"
|
||||
"codeName": "BCH",
|
||||
"iconName": "bitcoin-cash"
|
||||
},
|
||||
{
|
||||
"codeName": "TRX",
|
||||
"iconName": "tron"
|
||||
"codeName": "BNB",
|
||||
"iconName": "binance-coin"
|
||||
},
|
||||
{
|
||||
"codeName": "XLM",
|
||||
"iconName": "stellar"
|
||||
"codeName": "BTC",
|
||||
"iconName": "bitcoin"
|
||||
},
|
||||
{
|
||||
"codeName": "QTUM",
|
||||
"iconName": "qtum"
|
||||
"codeName": "BUSD",
|
||||
"iconName": "binance-usd"
|
||||
},
|
||||
{
|
||||
"codeName": "NEO",
|
||||
"iconName": "neo"
|
||||
"codeName": "CAKE",
|
||||
"iconName": "cake"
|
||||
},
|
||||
{
|
||||
"codeName": "LTC",
|
||||
"iconName": "litecoin"
|
||||
"codeName": "DAI",
|
||||
"iconName": "dai"
|
||||
},
|
||||
{
|
||||
"codeName": "DASH",
|
||||
"iconName": "dash"
|
||||
},
|
||||
{
|
||||
"codeName": "DOGE",
|
||||
"iconName": "dogecoin"
|
||||
},
|
||||
{
|
||||
"codeName": "DOT",
|
||||
"iconName": "polkadot"
|
||||
},
|
||||
{
|
||||
"codeName": "EOS",
|
||||
"iconName": "eos"
|
||||
},
|
||||
{
|
||||
"codeName": "ETC",
|
||||
@@ -69,72 +85,76 @@
|
||||
"iconName": "ethereum"
|
||||
},
|
||||
{
|
||||
"codeName": "EOS",
|
||||
"iconName": "eos"
|
||||
},
|
||||
{
|
||||
"codeName": "DASH",
|
||||
"iconName": "dash"
|
||||
},
|
||||
{
|
||||
"codeName": "ADA",
|
||||
"iconName": "cardano"
|
||||
},
|
||||
{
|
||||
"codeName": "BCH",
|
||||
"iconName": "bitcoin-cash"
|
||||
},
|
||||
{
|
||||
"codeName": "BTC",
|
||||
"iconName": "bitcoin"
|
||||
},
|
||||
{
|
||||
"codeName": "BNB",
|
||||
"iconName": "binance-coin"
|
||||
},
|
||||
{
|
||||
"codeName": "USD",
|
||||
"iconName": "us-dollar"
|
||||
},
|
||||
{
|
||||
"codeName": "ZAR",
|
||||
"iconName": "zar"
|
||||
},
|
||||
{
|
||||
"codeName": "XRP",
|
||||
"iconName": "xrp"
|
||||
},
|
||||
{
|
||||
"codeName": "DOGE",
|
||||
"iconName": "dogecoin"
|
||||
},
|
||||
{
|
||||
"codeName": "SOL",
|
||||
"iconName": "solana"
|
||||
},
|
||||
{
|
||||
"codeName": "DOT",
|
||||
"iconName": "polkadot"
|
||||
},
|
||||
{
|
||||
"codeName": "UNI",
|
||||
"iconName": "uniswap"
|
||||
},
|
||||
{
|
||||
"codeName": "BUSD",
|
||||
"iconName": "binance-usd"
|
||||
},
|
||||
{
|
||||
"codeName": "SXP",
|
||||
"iconName": "swipe"
|
||||
"codeName": "EUR",
|
||||
"iconName": "euro"
|
||||
},
|
||||
{
|
||||
"codeName": "LINK",
|
||||
"iconName": "chainlink"
|
||||
},
|
||||
{
|
||||
"codeName": "EUR",
|
||||
"iconName": "euro"
|
||||
"codeName": "LTC",
|
||||
"iconName": "litecoin"
|
||||
},
|
||||
{
|
||||
"codeName": "NANO",
|
||||
"iconName": "nano"
|
||||
},
|
||||
{
|
||||
"codeName": "NEO",
|
||||
"iconName": "neo"
|
||||
},
|
||||
{
|
||||
"codeName": "QTUM",
|
||||
"iconName": "qtum"
|
||||
},
|
||||
{
|
||||
"codeName": "SOL",
|
||||
"iconName": "solana"
|
||||
},
|
||||
{
|
||||
"codeName": "SXP",
|
||||
"iconName": "swipe"
|
||||
},
|
||||
{
|
||||
"codeName": "TRX",
|
||||
"iconName": "tron"
|
||||
},
|
||||
{
|
||||
"codeName": "XMR",
|
||||
"iconName": "monero"
|
||||
},
|
||||
{
|
||||
"codeName": "UNI",
|
||||
"iconName": "uniswap"
|
||||
},
|
||||
{
|
||||
"codeName": "USD",
|
||||
"iconName": "us-dollar"
|
||||
},
|
||||
{
|
||||
"codeName": "USDC",
|
||||
"iconName": "usdc"
|
||||
},
|
||||
{
|
||||
"codeName": "USDT",
|
||||
"iconName": "tether"
|
||||
},
|
||||
{
|
||||
"codeName": "VET",
|
||||
"iconName": "vechain"
|
||||
},
|
||||
{
|
||||
"codeName": "XLM",
|
||||
"iconName": "stellar"
|
||||
},
|
||||
{
|
||||
"codeName": "XRP",
|
||||
"iconName": "xrp"
|
||||
},
|
||||
{
|
||||
"codeName": "ZAR",
|
||||
"iconName": "zar"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -62,6 +62,10 @@ exports.newFoundationsBotModulesSnapshots = function(processIndex) {
|
||||
}
|
||||
|
||||
function finalize() {
|
||||
//trigger exits added for extra save moment for datapreserve
|
||||
strategyExit()
|
||||
positionExit()
|
||||
|
||||
writeSnapshotFiles()
|
||||
tradingEngine = undefined
|
||||
tradingSystem = undefined
|
||||
@@ -220,8 +224,8 @@ exports.newFoundationsBotModulesSnapshots = function(processIndex) {
|
||||
instruction = instruction.replace(/!==/g, '')
|
||||
instruction = instruction.replace(/==/g, '')
|
||||
instruction = instruction.replace(/===/g, '')
|
||||
instruction = instruction.replace(/{/g, '') //this wrecks something in JS markup?
|
||||
instruction = instruction.replace(/}/g, '') //this wrecks something in JS markup?
|
||||
instruction = instruction.replace(/{/g, '')
|
||||
instruction = instruction.replace(/}/g, '')
|
||||
if (instruction.indexOf('chart') >= 0) {
|
||||
let parts = instruction.split('.')
|
||||
let timeFrame = parts[1]
|
||||
@@ -243,7 +247,6 @@ exports.newFoundationsBotModulesSnapshots = function(processIndex) {
|
||||
}
|
||||
let key = timeFrame + '-' + product + '-' + property
|
||||
let existingKey
|
||||
|
||||
if (addToStrategyValues === true) {
|
||||
addValues(strategyKeys, strategyValues)
|
||||
}
|
||||
@@ -373,15 +376,35 @@ exports.newFoundationsBotModulesSnapshots = function(processIndex) {
|
||||
|
||||
function writeOutput(fileContent) {
|
||||
let separator = '\r\n';
|
||||
let contentArray = [];
|
||||
|
||||
// if we have file content extract rows
|
||||
if (fileContent != '') {
|
||||
contentArray = fileContent.split(separator)
|
||||
}
|
||||
|
||||
parseRecord(snapshots.headers)
|
||||
|
||||
for (let i = 0; i < snapshotArray.length; i++) {
|
||||
let record = snapshotArray[i];
|
||||
parseRecord(record)
|
||||
if (record.length > 0) {
|
||||
parseRecord(record)
|
||||
}
|
||||
}
|
||||
|
||||
function parseRecord(record) {
|
||||
// if we have undefined values, we need to extract the previous stored values for this trade and append them to the new record for completion
|
||||
if (record[record.length - 1] === undefined) {
|
||||
|
||||
let rowToMutateArray = contentArray[contentArray.length - 1].split(',')
|
||||
// check if are for sure on the same tradenumber and merge the data and remove previous line incl separator
|
||||
if (rowToMutateArray[0] == record[0]) {
|
||||
record.pop()
|
||||
rowToMutateArray.splice(0, record.length)
|
||||
record = record.concat(rowToMutateArray)
|
||||
fileContent = fileContent.replace(contentArray[contentArray.length - 1], '')
|
||||
fileContent = fileContent.replace(/\r\n$/, '')
|
||||
}
|
||||
}
|
||||
for (let j = 0; j < record.length; j++) {
|
||||
let property = record[j]
|
||||
|
||||
@@ -426,6 +449,9 @@ exports.newFoundationsBotModulesSnapshots = function(processIndex) {
|
||||
function onFileReceived(err, text) {
|
||||
if (err.result === TS.projects.foundations.globals.standardResponses.DEFAULT_OK_RESPONSE.result) {
|
||||
try {
|
||||
// remove the last linebreak and seperator wich is introduced extra during save
|
||||
text = text.replace(/\n$/, '')
|
||||
text = text.replace(/\r\n$/, '')
|
||||
writeOutput(text)
|
||||
} catch (err) {
|
||||
TS.projects.foundations.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).BOT_MAIN_LOOP_LOGGER_MODULE_OBJECT.write(MODULE_NAME, '[ERROR] start -> loadExistingFiles -> loopBody -> readExistingFile -> onFileReceived -> fileName = ' + filePath);
|
||||
|
||||
@@ -18,6 +18,7 @@ function newWorkspace() {
|
||||
share: shareWorkspace,
|
||||
getNodesByTypeAndHierarchyHeadsType: getNodesByTypeAndHierarchyHeadsType,
|
||||
getProjectsHeads: getProjectsHeads,
|
||||
getProjectHeadByNodeType: getProjectHeadByNodeType,
|
||||
getHierarchyHeads: getHierarchyHeads,
|
||||
getHierarchyHeadsById: getHierarchyHeadsById,
|
||||
getHierarchyHeadsByCodeNameAndNodeType: getHierarchyHeadsByCodeNameAndNodeType,
|
||||
@@ -547,6 +548,17 @@ function newWorkspace() {
|
||||
return nodes
|
||||
}
|
||||
|
||||
function getProjectHeadByNodeType(nodeType) {
|
||||
let projectHeads = getProjectsHeads()
|
||||
if (projectHeads === undefined) { return }
|
||||
for (let i = 0; i < projectHeads.length; i++) {
|
||||
let hierarchyHead = projectHeads[i]
|
||||
if (hierarchyHead.type === nodeType) {
|
||||
return hierarchyHead
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getHierarchyHeadsById(nodeId) {
|
||||
let hierarchyHeads = getHierarchyHeads()
|
||||
if (hierarchyHeads === undefined) { return }
|
||||
|
||||
@@ -668,6 +668,10 @@ function newFoundationsFloatingSpace() {
|
||||
newVector.x = newPosition.x - thisObject.floatingObjetSaved.payload.position.x
|
||||
newVector.y = newPosition.y - thisObject.floatingObjetSaved.payload.position.y
|
||||
|
||||
thisObject.floatingObjetSaved.payload.position = {}
|
||||
thisObject.floatingObjetSaved.payload.position.x = position.x
|
||||
thisObject.floatingObjetSaved.payload.position.y = position.y
|
||||
|
||||
thisObject.floatingObjetSaved.container.displace(newVector)
|
||||
UI.projects.foundations.spaces.cockpitSpace.setStatus('Type : [' + UI.projects.foundations.spaces.floatingSpace.floatingObjetSaved.payload.node.type + '] , Name : [' + UI.projects.foundations.spaces.floatingSpace.floatingObjetSaved.payload.node.name + '] -> Snapped to new position', 100, UI.projects.foundations.spaces.cockpitSpace.statusTypes.ALL_GOOD)
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -10,36 +10,6 @@
|
||||
"config": "{\n \"folderPath\": \"\"\n}",
|
||||
"project": "Governance",
|
||||
"assetClasses": [
|
||||
{
|
||||
"type": "Asset Class",
|
||||
"name": "Icons",
|
||||
"config": "{\n \"folderPath\": \"Governance/Icons\"\n}",
|
||||
"project": "Governance",
|
||||
"assetClasses": [],
|
||||
"assets": [],
|
||||
"id": "a35f2db5-a433-42bc-987f-e80c753dd884",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25339.70509831248,
|
||||
"y": 46730.58557568774
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25096.999999999996,
|
||||
"y": 46554.25
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Asset Class",
|
||||
"name": "GIFs",
|
||||
@@ -50,8 +20,8 @@
|
||||
"id": "147924a4-312e-4835-819d-3c241ef20936",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25189.70509831248,
|
||||
"y": 46839.56695488855
|
||||
"x": 25339.70509831248,
|
||||
"y": 46730.58557568774
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25096.999999999996,
|
||||
@@ -80,7 +50,7 @@
|
||||
"id": "c392025a-2fc6-4d2a-8655-fc8a8db9057e",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25004.294901687514,
|
||||
"x": 25189.70509831248,
|
||||
"y": 46839.56695488855
|
||||
},
|
||||
"targetPosition": {
|
||||
@@ -108,6 +78,67 @@
|
||||
"assetClasses": [],
|
||||
"assets": [],
|
||||
"id": "e97681b3-75d1-4661-9ca3-b10a631ee5e2",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25004.294901687514,
|
||||
"y": 46839.56695488855
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25096.999999999996,
|
||||
"y": 46554.25
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Asset Class",
|
||||
"name": "Icons",
|
||||
"config": "{\n \"folderPath\": \"Governance/Icons\"\n}",
|
||||
"project": "Governance",
|
||||
"assetClasses": [],
|
||||
"assets": [
|
||||
{
|
||||
"type": "Asset",
|
||||
"name": "Beta 10 & Beta 11 Icons Package",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"assetClasses": [],
|
||||
"assets": [],
|
||||
"id": "b63ee118-bb2d-4071-b25e-ee41b6b6fb8e",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 24611.58980337503,
|
||||
"y": 46906.921151375485
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 24854.294901687514,
|
||||
"y": 46730.58557568774
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"id": "88e4c021-476a-4020-8db1-c5502792572e",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 24854.294901687514,
|
||||
|
||||
@@ -127,12 +127,12 @@
|
||||
"id": "f4d39b02-4324-438d-9f74-2bea2b7272ef",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 10242.705098312485,
|
||||
"y": 21727.335575687743
|
||||
"x": 10476.335575687743,
|
||||
"y": 24007.294901687517
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 10000,
|
||||
"y": 21551
|
||||
"x": 10300,
|
||||
"y": 24250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -516,12 +516,12 @@
|
||||
"id": "b6e3c87d-a11b-4b2a-b6a6-edc96375f5da",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 10092.705098312485,
|
||||
"y": 21836.316954888545
|
||||
"x": 10585.316954888545,
|
||||
"y": 24157.294901687517
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 10000,
|
||||
"y": 21551
|
||||
"x": 10300,
|
||||
"y": 24250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -12448,12 +12448,12 @@
|
||||
"id": "bb390957-b8a2-4a8a-9fbf-963ea20f6eaf",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9907.294901687515,
|
||||
"y": 21836.316954888545
|
||||
"x": 10585.316954888545,
|
||||
"y": 24342.705098312483
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 10000,
|
||||
"y": 21551
|
||||
"x": 10300,
|
||||
"y": 24250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -12508,12 +12508,12 @@
|
||||
"id": "b046f4e4-40b1-4e47-8fed-75a6a5c6029d",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9635.273908764775,
|
||||
"y": 22001.399212980523
|
||||
"x": 10750.399212980523,
|
||||
"y": 24614.72609123522
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9757.294901687515,
|
||||
"y": 21727.335575687743
|
||||
"x": 10476.335575687743,
|
||||
"y": 24492.705098312483
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -12549,7 +12549,7 @@
|
||||
"userDelegates": [
|
||||
{
|
||||
"type": "User Delegate",
|
||||
"name": "PLuv",
|
||||
"name": "",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "a2bbd553-e24c-44b8-a199-83114476ce24",
|
||||
@@ -12621,7 +12621,7 @@
|
||||
"userDelegates": [
|
||||
{
|
||||
"type": "User Delegate",
|
||||
"name": "harrellbm",
|
||||
"name": "",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "2c79cd42-28a7-4a4b-ad3b-a8a29e993697",
|
||||
@@ -12693,7 +12693,7 @@
|
||||
"userDelegates": [
|
||||
{
|
||||
"type": "User Delegate",
|
||||
"name": "Raplh2502",
|
||||
"name": "",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "94f99114-fc01-450e-9d9d-0b62c8ea393f",
|
||||
@@ -12765,7 +12765,7 @@
|
||||
"userDelegates": [
|
||||
{
|
||||
"type": "User Delegate",
|
||||
"name": "cozed-gh",
|
||||
"name": "",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "ee1b374b-d4af-494c-93b8-3f83849d85f2",
|
||||
@@ -12837,7 +12837,7 @@
|
||||
"userDelegates": [
|
||||
{
|
||||
"type": "User Delegate",
|
||||
"name": "Smidy13",
|
||||
"name": "",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "6a843bed-6392-4981-9e27-eff22f0f9fb1",
|
||||
@@ -12909,7 +12909,7 @@
|
||||
"userDelegates": [
|
||||
{
|
||||
"type": "User Delegate",
|
||||
"name": "ssplatt",
|
||||
"name": "",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "b053ef35-1efe-46f4-81b2-d0c2e8ad0732",
|
||||
@@ -13007,12 +13007,12 @@
|
||||
"id": "681ff42a-d5af-4fed-971e-935398dac2aa",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9270.142215762084,
|
||||
"y": 21991.83790310513
|
||||
"x": 10740.83790310513,
|
||||
"y": 24979.857784237916
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9458.938333077034,
|
||||
"y": 21758.69411466804
|
||||
"x": 10507.694114668038,
|
||||
"y": 24791.061666922964
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -13042,12 +13042,12 @@
|
||||
"id": "ff3bc7ad-6051-4246-99fa-1210a3378a29",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 8862.225195856072,
|
||||
"y": 21821.411192628635
|
||||
"x": 10570.41119262863,
|
||||
"y": 25387.774804143926
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9160.581764466553,
|
||||
"y": 21790.052653648338
|
||||
"x": 10539.052653648334,
|
||||
"y": 25089.418235533445
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -13066,12 +13066,12 @@
|
||||
"id": "7f642170-d60b-41bc-85ae-dc64fbfc8b4c",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9160.581764466553,
|
||||
"y": 21790.052653648338
|
||||
"x": 10539.052653648334,
|
||||
"y": 25089.418235533445
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9458.938333077034,
|
||||
"y": 21758.69411466804
|
||||
"x": 10507.694114668038,
|
||||
"y": 24791.061666922964
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -13094,12 +13094,12 @@
|
||||
"id": "e4be3ce4-3569-4d97-8d54-95bb4cfcb0c5",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9225.794544639943,
|
||||
"y": 21569.897997353088
|
||||
"x": 10318.897997353088,
|
||||
"y": 25024.205455360054
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9458.938333077034,
|
||||
"y": 21758.69411466804
|
||||
"x": 10507.694114668038,
|
||||
"y": 24791.061666922964
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -13117,12 +13117,12 @@
|
||||
"id": "3ff7f410-911d-4cb8-9094-d816dee4dccb",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9458.938333077034,
|
||||
"y": 21758.69411466804
|
||||
"x": 10507.694114668038,
|
||||
"y": 24791.061666922964
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9757.294901687515,
|
||||
"y": 21727.335575687743
|
||||
"x": 10476.335575687743,
|
||||
"y": 24492.705098312483
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -13140,12 +13140,12 @@
|
||||
"id": "4f35322c-3e7d-49f8-9706-10bf71f0d420",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9757.294901687515,
|
||||
"y": 21727.335575687743
|
||||
"x": 10476.335575687743,
|
||||
"y": 24492.705098312483
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 10000,
|
||||
"y": 21551
|
||||
"x": 10300,
|
||||
"y": 24250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -13163,18 +13163,18 @@
|
||||
"id": "f8182a9c-f830-4ec1-a238-ac3a5efd69e6",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 10000,
|
||||
"y": 21551
|
||||
"x": 10300,
|
||||
"y": 24250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 10000,
|
||||
"y": 21251
|
||||
"y": 24250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
@@ -13190,12 +13190,321 @@
|
||||
"id": "9870ca2a-cefc-484b-b7fc-206d62782ebc",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9700,
|
||||
"y": 21251
|
||||
"x": 9850,
|
||||
"y": 24509.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 10000,
|
||||
"y": 21251
|
||||
"y": 24250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"signingAccounts": {
|
||||
"type": "Signing Accounts",
|
||||
"name": "New Signing Accounts",
|
||||
"project": "Governance",
|
||||
"signingAccounts": [
|
||||
{
|
||||
"type": "Signing Account",
|
||||
"name": "My Signing Account",
|
||||
"config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x44cba4eeebb7f8bfb0d9fedb8b3c5c34ecd75b69969766435ae641547a8158c4\",\n \"s\": \"0x144b9076038085fa5fa51c381e76377cd2bcc87c835698eeb5195cceefb63ead\",\n \"signature\": \"0x44cba4eeebb7f8bfb0d9fedb8b3c5c34ecd75b69969766435ae641547a8158c4144b9076038085fa5fa51c381e76377cd2bcc87c835698eeb5195cceefb63ead1c\"\n }\n}",
|
||||
"project": "Governance",
|
||||
"assignedTo": {
|
||||
"type": "Social Trading Desktop App",
|
||||
"name": "New Social Trading Desktop App",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "bde87a47-5f7b-40a6-82e9-d4ba528d7894",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9250,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9550,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "30858b11-5b8d-46c6-97f8-765e3676fc2f",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9550,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9850,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Signing Account",
|
||||
"name": "My Signing Account",
|
||||
"config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xc56bbcd7a99f47e20c5d83b1d4c102e1c7a223267b76f53200ff87fea7964e95\",\n \"s\": \"0x3e730a7d40a13199ef59f7a2a06a9d43da8f918e37afd6f706eceaea1fa8ed2d\",\n \"signature\": \"0xc56bbcd7a99f47e20c5d83b1d4c102e1c7a223267b76f53200ff87fea7964e953e730a7d40a13199ef59f7a2a06a9d43da8f918e37afd6f706eceaea1fa8ed2d1b\"\n }\n}",
|
||||
"project": "Governance",
|
||||
"assignedTo": {
|
||||
"type": "Social Trading Server App",
|
||||
"name": "New Social Trading Server App",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "ba500984-3766-4a95-85ca-67194bf52052",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9330.384757729338,
|
||||
"y": 23690.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9590.192378864669,
|
||||
"y": 23840.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "beff2691-f55f-401c-87a7-f6f7e59ebfb0",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9590.192378864669,
|
||||
"y": 23840.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9850,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Signing Account",
|
||||
"name": "My Signing Account",
|
||||
"config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x502693fda93e9331e1eb1f5f6bd2896f6175d86816d11437ab8f4c51bdb95c5c\",\n \"s\": \"0x3c901bdb9f56f97cf558159c0f57c94dcade020a992be74a955a2cddf88047e1\",\n \"signature\": \"0x502693fda93e9331e1eb1f5f6bd2896f6175d86816d11437ab8f4c51bdb95c5c3c901bdb9f56f97cf558159c0f57c94dcade020a992be74a955a2cddf88047e11c\"\n }\n}",
|
||||
"project": "Governance",
|
||||
"assignedTo": {
|
||||
"type": "Social Trading Mobile App",
|
||||
"name": "New Social Trading Mobile App",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "8cb693fc-84a0-48d7-b7d7-a88463b34cd5",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9550,
|
||||
"y": 23470.577136594
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9700,
|
||||
"y": 23730.384757729335
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "5828093e-65e1-4b18-9cbc-9ff33c98acc1",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9700,
|
||||
"y": 23730.384757729335
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9850,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Signing Account",
|
||||
"name": "My Signing Account",
|
||||
"config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x363cd2c23617b65f0314a6b1b34c515e0fed9b2da62d53f2cf2609c1bc25e7fb\",\n \"s\": \"0x5e72414fcfe8a1308d7d82f275b3922cfe738374ed74e67086c59cfe7b6c0a24\",\n \"signature\": \"0x363cd2c23617b65f0314a6b1b34c515e0fed9b2da62d53f2cf2609c1bc25e7fb5e72414fcfe8a1308d7d82f275b3922cfe738374ed74e67086c59cfe7b6c0a241c\"\n }\n}",
|
||||
"project": "Governance",
|
||||
"assignedTo": {
|
||||
"type": "Algo Traders Platform",
|
||||
"name": "New Algo Traders Platform",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "27f30390-6f86-4c25-bdc2-7680567a1b4a",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9850,
|
||||
"y": 23390.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9850,
|
||||
"y": 23690.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "fa5647f8-42bc-4d7b-8137-401ac8b5433c",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9850,
|
||||
"y": 23690.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9850,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Signing Account",
|
||||
"name": "My Signing Account",
|
||||
"config": "{\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x1df7b43b26e14a886b0702f3a43bfa7e078a3603a54d5befeb83ae451e423267\",\n \"s\": \"0x19cb2e7ba38cf49e5baa6ea20cbf895e86c9e010217a3f42e4df46b7b4e0bf36\",\n \"signature\": \"0x1df7b43b26e14a886b0702f3a43bfa7e078a3603a54d5befeb83ae451e42326719cb2e7ba38cf49e5baa6ea20cbf895e86c9e010217a3f42e4df46b7b4e0bf361b\"\n }\n}",
|
||||
"project": "Governance",
|
||||
"assignedTo": {
|
||||
"type": "P2P Network Node",
|
||||
"name": "New P2P Network Node",
|
||||
"config": "{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"18041\"\n}",
|
||||
"project": "Governance",
|
||||
"id": "10a196ef-b6ba-4edb-b33f-3604de5a3cd0",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 10150,
|
||||
"y": 23470.577136594
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 10000,
|
||||
"y": 23730.384757729335
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "e7066d66-9e36-4f38-963e-76b915b38c43",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 10000,
|
||||
"y": 23730.384757729335
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9850,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"id": "1aae1fa4-e5cf-48de-a25e-20001523da70",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9850,
|
||||
"y": 23990.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 10000,
|
||||
"y": 24250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -13213,17 +13522,17 @@
|
||||
"id": "a8de78f0-c3e4-4a2a-b7e8-f659073969db",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 39655.1724137931,
|
||||
"y": 18250
|
||||
"x": 10000,
|
||||
"y": 24250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 39655.1724137931,
|
||||
"y": 18250
|
||||
"x": 10000,
|
||||
"y": 24250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": true,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
|
||||
@@ -26,12 +26,12 @@
|
||||
"id": "deaea400-fa7f-48fd-a3fe-653b1bd18650",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9240.90909090909,
|
||||
"y": 20471.577136594
|
||||
"x": 25000,
|
||||
"y": 20430.384757729335
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9390.90909090909,
|
||||
"y": 20731.384757729335
|
||||
"x": 25150,
|
||||
"y": 20690.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -49,18 +49,18 @@
|
||||
"id": "97ae26ad-542d-4373-806a-593e979e1a1b",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9390.90909090909,
|
||||
"y": 20731.384757729335
|
||||
"x": 25150,
|
||||
"y": 20690.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9540.90909090909,
|
||||
"y": 20991.192378864667
|
||||
"x": 25300,
|
||||
"y": 20950
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
@@ -81,12 +81,12 @@
|
||||
"id": "54a2fcd6-e80c-4a30-84c0-d80ae9d197e9",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 10140.90909090909,
|
||||
"y": 20991.192378864667
|
||||
"x": 25600,
|
||||
"y": 20430.384757729335
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9840.90909090909,
|
||||
"y": 20991.192378864667
|
||||
"x": 25450,
|
||||
"y": 20690.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -104,18 +104,18 @@
|
||||
"id": "786e62d1-6b32-49d9-8046-9c8577dbcd87",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9840.90909090909,
|
||||
"y": 20991.192378864667
|
||||
"x": 25450,
|
||||
"y": 20690.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9540.90909090909,
|
||||
"y": 20991.192378864667
|
||||
"x": 25300,
|
||||
"y": 20950
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
@@ -127,12 +127,12 @@
|
||||
"id": "7e7f3e6e-30f4-400d-a1f6-b3611498b7bf",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9540.90909090909,
|
||||
"y": 20991.192378864667
|
||||
"x": 25300,
|
||||
"y": 20950
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9390.90909090909,
|
||||
"y": 21251
|
||||
"x": 25300,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -150,7 +150,7 @@
|
||||
"communityBuildingPrograms": {
|
||||
"type": "Community Building Programs",
|
||||
"name": "New Community Building Programs",
|
||||
"config": "{}",
|
||||
"config": "{\n \"percentage\": 20\n}",
|
||||
"project": "Governance",
|
||||
"referralProgram": {
|
||||
"type": "Referral Program",
|
||||
@@ -166,12 +166,12 @@
|
||||
"id": "bdf5f1d1-8441-4171-859f-d6e13f56ebd5",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9990.070230063444,
|
||||
"y": 21748.196214194737
|
||||
"x": 26137.388593059404,
|
||||
"y": 20800.838860845644
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9690.90909090909,
|
||||
"y": 21770.615242270665
|
||||
"x": 26159.807621135333,
|
||||
"y": 21100
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -207,12 +207,12 @@
|
||||
"id": "67c981c9-f18b-4476-911e-9761b375386a",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9970.17121550235,
|
||||
"y": 21880.217549580582
|
||||
"x": 26269.409928445253,
|
||||
"y": 20820.73787540674
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9690.90909090909,
|
||||
"y": 21770.615242270665
|
||||
"x": 26159.807621135333,
|
||||
"y": 21100
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -233,7 +233,9 @@
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"harrellbm",
|
||||
"User Profile"
|
||||
"User Profile",
|
||||
"Governance",
|
||||
"3af73d3b-7c0e-4de7-a1e1-a72238081740"
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -246,12 +248,12 @@
|
||||
"id": "2ca043e2-2332-4d61-b950-1e66fd360914",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9894.960912240365,
|
||||
"y": 21990.530803819613
|
||||
"x": 26379.72318268428,
|
||||
"y": 20895.948178668725
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9690.90909090909,
|
||||
"y": 21770.615242270665
|
||||
"x": 26159.807621135333,
|
||||
"y": 21100
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -272,7 +274,9 @@
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Luis-Fernando-Molina",
|
||||
"User Profile"
|
||||
"User Profile",
|
||||
"Governance",
|
||||
"a8de78f0-c3e4-4a2a-b7e8-f659073969db"
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -285,18 +289,18 @@
|
||||
"id": "b53f989c-8771-4000-81f3-aef821170101",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9713.328118985017,
|
||||
"y": 22069.77638142502
|
||||
"x": 26446.479462871175,
|
||||
"y": 21011.57344767673
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9690.90909090909,
|
||||
"y": 21770.615242270665
|
||||
"x": 26159.807621135333,
|
||||
"y": 21100
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
@@ -311,7 +315,9 @@
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Julian-Molina",
|
||||
"User Profile"
|
||||
"User Profile",
|
||||
"Governance",
|
||||
"1fd95e41-4b22-48d5-be3a-904c37afcb11"
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -324,18 +330,18 @@
|
||||
"id": "4f6ba6d0-501c-40ec-be81-806d505ca60f",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9470.993529360143,
|
||||
"y": 21974.66706360194
|
||||
"x": 26456.456869002872,
|
||||
"y": 21144.71267985285
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9690.90909090909,
|
||||
"y": 21770.615242270665
|
||||
"x": 26159.807621135333,
|
||||
"y": 21100
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
@@ -351,18 +357,18 @@
|
||||
"id": "a364c990-fdaa-4b29-9c66-bd365d857532",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9394.259843041551,
|
||||
"y": 21725.902562417814
|
||||
"x": 26407.67925343013,
|
||||
"y": 21268.996017419086
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9690.90909090909,
|
||||
"y": 21770.615242270665
|
||||
"x": 26159.807621135333,
|
||||
"y": 21100
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
@@ -374,12 +380,137 @@
|
||||
"id": "4894f190-0535-4e91-b61f-9f74cbc273fb",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9690.90909090909,
|
||||
"y": 21770.615242270665
|
||||
"x": 26159.807621135333,
|
||||
"y": 21100
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9540.90909090909,
|
||||
"y": 21510.807621135333
|
||||
"x": 25900,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 2,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"mentorshipProgram": {
|
||||
"type": "Mentorship Program",
|
||||
"name": "New Mentorship Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userMentors": [
|
||||
{
|
||||
"type": "User Mentor",
|
||||
"name": "harrellbm",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "41d5d8d6-8562-4fb6-a56d-4953ec7ba2db",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26709.392990157383,
|
||||
"y": 21472.354286469243
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 26419.615242270662,
|
||||
"y": 21550
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 2,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "harrellbm",
|
||||
"id": "3af73d3b-7c0e-4de7-a1e1-a72238081740"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"harrellbm",
|
||||
"User Profile",
|
||||
"Governance",
|
||||
"3af73d3b-7c0e-4de7-a1e1-a72238081740"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "6bbd1e87-1691-4a35-9a4d-13f0637185f2",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26679.422863405995,
|
||||
"y": 21700
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 26419.615242270662,
|
||||
"y": 21550
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 2,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "9d0b1f9c-2c43-4692-9f9d-0e11acb24448",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26497.26095580142,
|
||||
"y": 21839.77774788672
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 26419.615242270662,
|
||||
"y": 21550
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 2,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "1cf64e4d-89cd-434a-b2b1-2d845d569271",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26419.615242270662,
|
||||
"y": 21550
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25900,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -397,18 +528,479 @@
|
||||
"id": "db99bd94-cded-4ef0-bfb2-979cac295f7f",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9540.90909090909,
|
||||
"y": 21510.807621135333
|
||||
"x": 25900,
|
||||
"y": 21250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9390.90909090909,
|
||||
"y": 21251
|
||||
"x": 25300,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": true,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 5,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"votesAndClaimsPrograms": {
|
||||
"type": "Votes And Claims Programs",
|
||||
"name": "New Votes And Claims Programs",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"votingProgram": {
|
||||
"type": "Voting Program",
|
||||
"name": "New Voting Program",
|
||||
"config": "{\n\"percentage\": 10\n}",
|
||||
"project": "Governance",
|
||||
"votesSwitch": [
|
||||
{
|
||||
"type": "Votes Switch",
|
||||
"name": "New Votes Switch",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"votesSwitch": [],
|
||||
"claimVotesSwitch": [
|
||||
{
|
||||
"type": "Claim Votes Switch",
|
||||
"name": "New Claim Votes Switch",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"claimVotesSwitch": [],
|
||||
"positionClaimVotes": [],
|
||||
"assetClaimVotes": [],
|
||||
"featureClaimVotes": [
|
||||
{
|
||||
"type": "Feature Claim Vote",
|
||||
"name": "Tentacule23 Tutorial Tab Feature Visual Designer",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "48a23c6d-51fa-4049-bb51-b37c9881a711",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26593.59731237209,
|
||||
"y": 21172.354286469243
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 26381.465278016127,
|
||||
"y": 21384.486320825206
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "Feature Contribution Claim",
|
||||
"name": "Tutorial Tab Feature Visual Designer",
|
||||
"id": "5d6b30bc-4f05-4001-87ba-45cba35fe1ce"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Tentacule23",
|
||||
"User Profile"
|
||||
],
|
||||
[
|
||||
"New Token Power Switch",
|
||||
"Token Power Switch"
|
||||
],
|
||||
[
|
||||
"New Votes And Claims Programs",
|
||||
"Votes And Claims Programs"
|
||||
],
|
||||
[
|
||||
"New Claims Program",
|
||||
"Claims Program"
|
||||
],
|
||||
[
|
||||
"New Feature Claims Folder",
|
||||
"Feature Claims Folder"
|
||||
],
|
||||
[
|
||||
"Tutorial Tab Feature Visual Designer",
|
||||
"Feature Contribution Claim"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature Claim Vote",
|
||||
"name": "Tentacule23 Quick Position Node Feature Visual Designer",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "6a6f2a21-930b-4403-bcee-80ea71022927",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26671.243025902848,
|
||||
"y": 21462.132034355964
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 26381.465278016127,
|
||||
"y": 21384.486320825206
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "Feature Contribution Claim",
|
||||
"name": "Quick Position Node Feature Visual Designer",
|
||||
"id": "d7c5da08-3757-46b4-8175-bc9a7b02359f"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Tentacule23",
|
||||
"User Profile"
|
||||
],
|
||||
[
|
||||
"New Token Power Switch",
|
||||
"Token Power Switch"
|
||||
],
|
||||
[
|
||||
"New Votes And Claims Programs",
|
||||
"Votes And Claims Programs"
|
||||
],
|
||||
[
|
||||
"New Claims Program",
|
||||
"Claims Program"
|
||||
],
|
||||
[
|
||||
"New Feature Claims Folder",
|
||||
"Feature Claims Folder"
|
||||
],
|
||||
[
|
||||
"Quick Position Node Feature Visual Designer",
|
||||
"Feature Contribution Claim"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"id": "008b3b69-cc01-4e09-9122-ec885a882d76",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26381.465278016127,
|
||||
"y": 21384.486320825206
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 26091.687530129406,
|
||||
"y": 21462.132034355964
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"weightVotesSwitch": [],
|
||||
"userProfileVotesSwitch": [],
|
||||
"id": "fb7f7b7e-a2fb-421f-8158-faa5006f4636",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26091.687530129406,
|
||||
"y": 21462.132034355964
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25801.909782242685,
|
||||
"y": 21539.77774788672
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "2bc7d2be-bd4a-47b8-966f-349202f799bf",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26014.04181659865,
|
||||
"y": 21751.909782242685
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25801.909782242685,
|
||||
"y": 21539.77774788672
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "f16e524c-4e32-4a6e-840b-bfdd6080f20c",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25801.909782242685,
|
||||
"y": 21539.77774788672
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25512.132034355964,
|
||||
"y": 21462.132034355964
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"claimsProgram": {
|
||||
"type": "Claims Program",
|
||||
"name": "New Claims Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"assetClaimsFolders": [],
|
||||
"featureClaimsFolders": [
|
||||
{
|
||||
"type": "Feature Claims Folder",
|
||||
"name": "New Feature Claims Folder",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"featureClaimsFolders": [],
|
||||
"featureContributionClaims": [
|
||||
{
|
||||
"type": "Feature Contribution Claim",
|
||||
"name": "Quick Position Node Feature Visual Designer",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "d7c5da08-3757-46b4-8175-bc9a7b02359f",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 26091.687530129406,
|
||||
"y": 22041.687530129406
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25801.909782242685,
|
||||
"y": 21964.04181659865
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "Feature",
|
||||
"name": "Quick Position Node Feature",
|
||||
"id": "98b5642a-faba-4a04-bf72-6efec86de56a"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Foundations-Project",
|
||||
"Features"
|
||||
],
|
||||
[
|
||||
"Foundations Project",
|
||||
"Feature Class"
|
||||
],
|
||||
[
|
||||
"Visual Designer",
|
||||
"Feature Class"
|
||||
],
|
||||
[
|
||||
"Quick Position Node Feature",
|
||||
"Feature"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "Feature Contribution Claim",
|
||||
"name": "Tutorial Tab Feature Visual Designer",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "5d6b30bc-4f05-4001-87ba-45cba35fe1ce",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25879.555495773442,
|
||||
"y": 22253.81956448537
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25801.909782242685,
|
||||
"y": 21964.04181659865
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "Feature",
|
||||
"name": "Tutorial Tab Feature",
|
||||
"id": "5ac7a46b-f462-4dc4-a627-2c7588a67e7a"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Foundations-Project",
|
||||
"Features"
|
||||
],
|
||||
[
|
||||
"Foundations Project",
|
||||
"Feature Class"
|
||||
],
|
||||
[
|
||||
"Visual Designer",
|
||||
"Feature Class"
|
||||
],
|
||||
[
|
||||
"Tutorial Tab Feature",
|
||||
"Feature"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"id": "eb425c2c-6b7c-460d-a74e-650691f52fc7",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25801.909782242685,
|
||||
"y": 21964.04181659865
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25589.77774788672,
|
||||
"y": 21751.909782242685
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"positionClaimsFolders": [],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "9673136d-ac9a-40b7-bd6f-6c8c3fbbb384",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25512.132034355964,
|
||||
"y": 22041.687530129406
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25589.77774788672,
|
||||
"y": 21751.909782242685
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "cce1f59a-bb5d-4700-abf8-ab8d2932ff6a",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25589.77774788672,
|
||||
"y": 21751.909782242685
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25512.132034355964,
|
||||
"y": 21462.132034355964
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "705bfab3-e851-4469-ab70-ac972950de6c",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 25512.132034355964,
|
||||
"y": 21462.132034355964
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 25300,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"angleToParent": 2,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
@@ -420,12 +1012,12 @@
|
||||
"id": "5683e2bf-45ca-4dd6-9ade-53b4cad76ed0",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9390.90909090909,
|
||||
"y": 21251
|
||||
"x": 25300,
|
||||
"y": 21250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9090.90909090909,
|
||||
"y": 21251
|
||||
"x": 25000,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -447,12 +1039,12 @@
|
||||
"id": "96f1c595-f94e-4207-9828-4199c74c4bfd",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 8790.90909090909,
|
||||
"y": 21251
|
||||
"x": 24700,
|
||||
"y": 21250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9090.90909090909,
|
||||
"y": 21251
|
||||
"x": 25000,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
@@ -470,12 +1062,12 @@
|
||||
"id": "7af21baa-ebc0-436f-94a7-a1746209418e",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 9090.90909090909,
|
||||
"y": 21251
|
||||
"x": 25000,
|
||||
"y": 21250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 9090.90909090909,
|
||||
"y": 21251
|
||||
"x": 25000,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
|
||||
@@ -62,12 +62,12 @@
|
||||
"id": "baa2f02c-2920-4edb-a103-d452fc61d82f",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 29310.344827586196,
|
||||
"y": 24250
|
||||
"x": 40000,
|
||||
"y": 21250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 29310.344827586196,
|
||||
"y": 24250
|
||||
"x": 40000,
|
||||
"y": 21250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
|
||||
@@ -62,12 +62,12 @@
|
||||
"id": "36c2b050-631f-4291-987c-418adc94317d",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 27586.206896551714,
|
||||
"y": 21250
|
||||
"x": 30000,
|
||||
"y": 18250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 27586.206896551714,
|
||||
"y": 21250
|
||||
"x": 30000,
|
||||
"y": 18250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"type": "User Profile",
|
||||
"name": "elipwns",
|
||||
"config": "{\n \"signature\": {\n \"message\": \"elipwns\",\n \"messageHash\": \"0x3bd00c8e0bd37dfb3299035ebb44fff3ce3e02394fcec001850f67fa2815cf57\",\n \"v\": \"0x1b\",\n \"r\": \"0xd6bf81ea4e23383cf89ac657353ca22afcfe43c6b1b55d405725d8704d0f2a13\",\n \"s\": \"0x3603f15da062916285612c2b5f701084145e8b0cae39020fe5b6c95e986575a8\",\n \"signature\": \"0xd6bf81ea4e23383cf89ac657353ca22afcfe43c6b1b55d405725d8704d0f2a133603f15da062916285612c2b5f701084145e8b0cae39020fe5b6c95e986575a81b\"\n }\n}",
|
||||
"project": "Governance",
|
||||
"tokenPowerSwitch": {
|
||||
"type": "Token Power Switch",
|
||||
"name": "New Token Power Switch",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"tokenPowerSwitch": [],
|
||||
"id": "7f620c09-d433-44db-b87f-5e688a0be35e",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 12760,
|
||||
"y": 10354.5
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 12752,
|
||||
"y": 10276.5
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensMined": {
|
||||
"type": "Tokens Mined",
|
||||
"name": "New Tokens Mined",
|
||||
"project": "Governance",
|
||||
"id": "dc2abe61-6a58-4477-95ce-99e8216b30e9",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 12805,
|
||||
"y": 10203.5
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 12752,
|
||||
"y": 10276.5
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "863669ed-70e1-4336-a2fd-2957db38d038",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 12752,
|
||||
"y": 10276.5
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 12700,
|
||||
"y": 10325.5
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,736 @@
|
||||
{
|
||||
"type": "User Profile",
|
||||
"name": "end-debug",
|
||||
"config": "{\"signature\":{\"message\":\"end-debug\",\"messageHash\":\"0x1f7f8bc57e6f5599e068e83eb802f255db43dfc4372420441068d244ab9304bb\",\"v\":\"0x1b\",\"r\":\"0x0a6768607452ef641ccf2f938efca8cc76dd85a63bb1e10b9582093485641df9\",\"s\":\"0x08518b226eb7ccf4ec6ce9ab78a6ba4c5606253dc7bcab61e2519302a4909a37\",\"signature\":\"0x0a6768607452ef641ccf2f938efca8cc76dd85a63bb1e10b9582093485641df908518b226eb7ccf4ec6ce9ab78a6ba4c5606253dc7bcab61e2519302a4909a371b\"},\"codeName\":\"end-debug\"}",
|
||||
"project": "Governance",
|
||||
"tokenPowerSwitch": {
|
||||
"type": "Token Power Switch",
|
||||
"name": "New Token Power Switch",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"tokenPowerSwitch": [],
|
||||
"onboardingPrograms": {
|
||||
"type": "Onboarding Programs",
|
||||
"name": "New Onboarding Programs",
|
||||
"config": "{\n \"percentage\": 0\n }",
|
||||
"project": "Governance",
|
||||
"airdropProgram": {
|
||||
"type": "Airdrop Program",
|
||||
"name": "New Airdrop Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "c9ec2b57-c2a3-451b-9fe2-0e91b019477a",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13786.363636363636,
|
||||
"y": 17470.577136594
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 17730.384757729335
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "82456675-a25a-4655-85fb-b56e20861b2b",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 17730.384757729335
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14086.363636363636,
|
||||
"y": 17990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"githubProgram": {
|
||||
"type": "Github Program",
|
||||
"name": "New Github Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "ee49551c-4a7f-408e-a671-92f7478d9e15",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14686.363636363636,
|
||||
"y": 17990.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14386.363636363636,
|
||||
"y": 17990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "d19515b3-2180-496c-a0d6-ebdfd56650a2",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14386.363636363636,
|
||||
"y": 17990.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14086.363636363636,
|
||||
"y": 17990.192378864667
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "d1d5d745-af31-450b-8e90-96f99ddda58a",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14086.363636363636,
|
||||
"y": 17990.192378864667
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 18250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"communityBuildingPrograms": {
|
||||
"type": "Community Building Programs",
|
||||
"name": "New Community Building Programs",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"referralProgram": {
|
||||
"type": "Referral Program",
|
||||
"name": "New Referral Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userReferrers": [
|
||||
{
|
||||
"type": "User Referrer",
|
||||
"name": "Luis-Fernando-Molina",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "9925f3f1-8769-4138-ab52-346a474467f4",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14386.363636363636,
|
||||
"y": 18209.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14386.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "Luis-Fernando-Molina",
|
||||
"id": "a8de78f0-c3e4-4a2a-b7e8-f659073969db"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Luis-Fernando-Molina",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "36a262bc-4e61-477b-b190-ebe303587f14",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14686.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14386.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "3e6261e6-51af-4a02-909e-5a80455a39ff",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14386.363636363636,
|
||||
"y": 18809.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14386.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "b456f6f4-959e-47bc-b9f6-f1bd238d8650",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14346.171257498967,
|
||||
"y": 18359.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14086.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": true,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"supportProgram": {
|
||||
"type": "Support Program",
|
||||
"name": "New Support Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userSupporters": [
|
||||
{
|
||||
"type": "User Supporter",
|
||||
"name": "Luis-Fernando-Molina",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "bd3603f2-c630-4d86-9670-fbf7e32de858",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14236.363636363636,
|
||||
"y": 18769.615242270665
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 18769.615242270665
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "Luis-Fernando-Molina",
|
||||
"id": "a8de78f0-c3e4-4a2a-b7e8-f659073969db"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Luis-Fernando-Molina",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "User Supporter",
|
||||
"name": "Julian-Molina",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "48acbf44-4dd5-4ab2-a967-d96ab124bf37",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14086.363636363636,
|
||||
"y": 19029.422863406
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 18769.615242270665
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "Julian-Molina",
|
||||
"id": "1fd95e41-4b22-48d5-be3a-904c37afcb11"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Julian-Molina",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "User Supporter",
|
||||
"name": "harrellbm",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "11a43317-3cc5-42ce-95ee-3e589e820147",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13786.363636363636,
|
||||
"y": 19029.422863406
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 18769.615242270665
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "harrellbm",
|
||||
"id": "3af73d3b-7c0e-4de7-a1e1-a72238081740"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"harrellbm",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "e13485e7-dc1e-4b95-9391-20c0c944f9f6",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13636.363636363636,
|
||||
"y": 18769.615242270665
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 18769.615242270665
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "1155b928-329e-4a8d-ba54-d6f58a101ee5",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13786.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 18769.615242270665
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "5d9cb63f-30f0-4b75-bb40-0d57385ee4b0",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14236.363636363636,
|
||||
"y": 18769.615242270665
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14086.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": true,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"mentorshipProgram": {
|
||||
"type": "Mentorship Program",
|
||||
"name": "New Mentorship Program",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"userMentors": [
|
||||
{
|
||||
"type": "User Mentor",
|
||||
"name": "Luis-Fernando-Molina",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "4441d08b-31fe-43f8-a044-92bdf29cf472",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14049.499462871523,
|
||||
"y": 18860.54680304299
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13826.556015228305,
|
||||
"y": 18659.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "Luis-Fernando-Molina",
|
||||
"id": "a8de78f0-c3e4-4a2a-b7e8-f659073969db"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Luis-Fernando-Molina",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "User Mentor",
|
||||
"name": "Julian-Molina",
|
||||
"config": "{}",
|
||||
"project": "Governance",
|
||||
"id": "5709decd-446b-47ef-8a53-65f961b81de9",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13704.535022305565,
|
||||
"y": 18933.871258428113
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13826.556015228305,
|
||||
"y": 18659.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
},
|
||||
"referenceParent": {
|
||||
"type": "User Profile",
|
||||
"name": "Julian-Molina",
|
||||
"id": "1fd95e41-4b22-48d5-be3a-904c37afcb11"
|
||||
},
|
||||
"referenceParentCombinedNodePath": [
|
||||
[
|
||||
"Julian-Molina",
|
||||
"User Profile"
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"tokensAwarded": {
|
||||
"type": "Tokens Awarded",
|
||||
"name": "New Tokens Awarded",
|
||||
"project": "Governance",
|
||||
"id": "63362bfd-94f9-40e7-8125-a0a8e0c5ccf7",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13528.199446617824,
|
||||
"y": 18628.449082155035
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13826.556015228305,
|
||||
"y": 18659.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensBonus": {
|
||||
"type": "Tokens Bonus",
|
||||
"name": "New Tokens Bonus",
|
||||
"project": "Governance",
|
||||
"id": "d56f1b31-c3ea-411c-8c99-14859e97f311",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13764.182507982978,
|
||||
"y": 18366.36334091519
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13826.556015228305,
|
||||
"y": 18659.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "0d8e56cf-a925-4822-9a30-31df50743147",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13826.556015228305,
|
||||
"y": 18659.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 14086.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "b47a7be7-985a-4ab1-baea-68ef554cb8a7",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 14086.363636363636,
|
||||
"y": 18509.807621135333
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 18250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "1c8787dc-31af-4852-9c50-4fd2abeac607",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13936.363636363636,
|
||||
"y": 18250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13636.363636363636,
|
||||
"y": 18250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"tokensMined": {
|
||||
"type": "Tokens Mined",
|
||||
"name": "New Tokens Mined",
|
||||
"project": "Governance",
|
||||
"id": "4d63da9f-7429-4ac4-b66c-b51c585ea14b",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13336.363636363636,
|
||||
"y": 18250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13636.363636363636,
|
||||
"y": 18250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "2ba902c6-59f4-40f4-91f5-44d12f807061",
|
||||
"savedPayload": {
|
||||
"position": {
|
||||
"x": 13636.363636363636,
|
||||
"y": 18250
|
||||
},
|
||||
"targetPosition": {
|
||||
"x": 13636.363636363636,
|
||||
"y": 18250
|
||||
},
|
||||
"floatingObject": {
|
||||
"isPinned": false,
|
||||
"isFrozen": false,
|
||||
"isCollapsed": false,
|
||||
"angleToParent": 1,
|
||||
"distanceToParent": 3,
|
||||
"arrangementStyle": 0
|
||||
},
|
||||
"uiObject": {
|
||||
"isRunning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"type": "Algo Traders Platform",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"actionProject": "Foundations",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration",
|
||||
"dontShowAtFullscreen": true,
|
||||
"actionFunction": "uiObject.configEditor.activate"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete-entity",
|
||||
"iconPathOff": "delete-entity",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"initialValues": {
|
||||
"config": "{}"
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 1,
|
||||
"attachingRules": {
|
||||
"compatibleTypes": "->Signing Account->"
|
||||
},
|
||||
"childrenNodesProperties": [
|
||||
],
|
||||
"propertyNameAtParent": "assignedTo"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"type": "P2P Network Node",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"actionProject": "Foundations",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration",
|
||||
"dontShowAtFullscreen": true,
|
||||
"actionFunction": "uiObject.configEditor.activate"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete-entity",
|
||||
"iconPathOff": "delete-entity",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"initialValues": {
|
||||
"config": "{ \n\"host\": \"localhost\", \n\"webPort\": \"34248\", \n\"webSocketsPort\": \"18041\"\n}"
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 1,
|
||||
"attachingRules": {
|
||||
"compatibleTypes": "->Signing Account->"
|
||||
},
|
||||
"childrenNodesProperties": [
|
||||
],
|
||||
"propertyNameAtParent": "assignedTo"
|
||||
}
|
||||
@@ -18,6 +18,16 @@
|
||||
"relatedUiObject": "Profile Constructor",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add Signing Account",
|
||||
"actionProject": "Governance",
|
||||
"label": "Add Signing Account",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Proceed",
|
||||
"workDoneLabel": "Done",
|
||||
"relatedUiObject": "Profile Constructor",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"actionProject": "Foundations",
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"type": "Signing Account",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"actionFunction": "uiObject.configEditor.activate",
|
||||
"actionProject": "Foundations",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"disableIfPropertyIsDefined": true,
|
||||
"propertyToCheckFor": "assignedTo",
|
||||
"label": "Add P2P Network Node",
|
||||
"relatedUiObject": "P2P Network Node",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"disableIfPropertyIsDefined": true,
|
||||
"propertyToCheckFor": "assignedTo",
|
||||
"label": "Add Algo Traders Platform",
|
||||
"relatedUiObject": "Algo Traders Platform",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"disableIfPropertyIsDefined": true,
|
||||
"propertyToCheckFor": "assignedTo",
|
||||
"label": "Add Social Trading Mobile App",
|
||||
"relatedUiObject": "Social Trading Mobile App",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"disableIfPropertyIsDefined": true,
|
||||
"propertyToCheckFor": "assignedTo",
|
||||
"label": "Add Social Trading Desktop App",
|
||||
"relatedUiObject": "Social Trading Desktop App",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"disableIfPropertyIsDefined": true,
|
||||
"propertyToCheckFor": "assignedTo",
|
||||
"label": "Add Social Trading Server App",
|
||||
"relatedUiObject": "Social Trading Server App",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete-entity",
|
||||
"iconPathOff": "delete-entity",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"addLeftIcons": true,
|
||||
"level": 2,
|
||||
"attachingRules": {
|
||||
"compatibleTypes": "->Signing Accounts->"
|
||||
},
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"initialValues": {
|
||||
"config": "{}"
|
||||
},
|
||||
"propertyNameAtParent": "signingAccounts",
|
||||
"childrenNodesProperties": [
|
||||
{
|
||||
"name": "assignedTo",
|
||||
"type": "node",
|
||||
"childType": "P2P Network Node",
|
||||
"autoAdd": false
|
||||
},
|
||||
{
|
||||
"name": "assignedTo",
|
||||
"type": "node",
|
||||
"childType": "Algo Traders Platform",
|
||||
"autoAdd": false
|
||||
},
|
||||
{
|
||||
"name": "assignedTo",
|
||||
"type": "node",
|
||||
"childType": "Social Trading Mobile App",
|
||||
"autoAdd": false
|
||||
},
|
||||
{
|
||||
"name": "assignedTo",
|
||||
"type": "node",
|
||||
"childType": "Social Trading Desktop App",
|
||||
"autoAdd": false
|
||||
},
|
||||
{
|
||||
"name": "assignedTo",
|
||||
"type": "node",
|
||||
"childType": "Social Trading Server App",
|
||||
"autoAdd": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"type": "Signing Accounts",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete-entity",
|
||||
"iconPathOff": "delete-entity",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"addLeftIcons": true,
|
||||
"level": 2,
|
||||
"attachingRules": {
|
||||
"compatibleTypes": "->User Profile->"
|
||||
},
|
||||
"propertyNameAtParent": "signingAccounts",
|
||||
"childrenNodesProperties": [
|
||||
{
|
||||
"name": "signingAccounts",
|
||||
"type": "array",
|
||||
"childType": "Signing Account",
|
||||
"autoAdd": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"type": "Social Trading Desktop App",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"actionProject": "Foundations",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration",
|
||||
"dontShowAtFullscreen": true,
|
||||
"actionFunction": "uiObject.configEditor.activate"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete-entity",
|
||||
"iconPathOff": "delete-entity",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"initialValues": {
|
||||
"config": "{}"
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 1,
|
||||
"attachingRules": {
|
||||
"compatibleTypes": "->Signing Account->"
|
||||
},
|
||||
"childrenNodesProperties": [
|
||||
],
|
||||
"propertyNameAtParent": "assignedTo"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"type": "Social Trading Mobile App",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"actionProject": "Foundations",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration",
|
||||
"dontShowAtFullscreen": true,
|
||||
"actionFunction": "uiObject.configEditor.activate"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete-entity",
|
||||
"iconPathOff": "delete-entity",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"initialValues": {
|
||||
"config": "{}"
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 1,
|
||||
"attachingRules": {
|
||||
"compatibleTypes": "->Signing Account->"
|
||||
},
|
||||
"childrenNodesProperties": [
|
||||
],
|
||||
"propertyNameAtParent": "assignedTo"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"type": "Social Trading Server App",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"actionProject": "Foundations",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration",
|
||||
"dontShowAtFullscreen": true,
|
||||
"actionFunction": "uiObject.configEditor.activate"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"actionProject": "Foundations",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete-entity",
|
||||
"iconPathOff": "delete-entity",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"initialValues": {
|
||||
"config": "{}"
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 1,
|
||||
"attachingRules": {
|
||||
"compatibleTypes": "->Signing Account->"
|
||||
},
|
||||
"childrenNodesProperties": [
|
||||
],
|
||||
"propertyNameAtParent": "assignedTo"
|
||||
}
|
||||
@@ -69,6 +69,12 @@
|
||||
"type": "node",
|
||||
"childType": "Tokens Mined",
|
||||
"autoAdd": true
|
||||
},
|
||||
{
|
||||
"name": "signingAccounts",
|
||||
"type": "node",
|
||||
"childType": "Signing Accounts",
|
||||
"autoAdd": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -38,6 +38,11 @@ function newGovernanceActionSwitch() {
|
||||
UI.projects.governance.functionLibraries.profileConstructor.buildProfile(action.node, action.rootNodes)
|
||||
break
|
||||
}
|
||||
case 'Add Signing Account':
|
||||
{
|
||||
UI.projects.governance.functionLibraries.profileConstructor.addSigningAccount(action.node, action.rootNodes)
|
||||
break
|
||||
}
|
||||
case 'Add Missing Plugin User Profiles':
|
||||
{
|
||||
UI.projects.governance.functionLibraries.pluginsFunctions.addMissingPluginUserProfiles(action.node, action.rootNodes)
|
||||
|
||||
@@ -2,7 +2,7 @@ function newGovernanceFunctionLibraryDelegationProgram() {
|
||||
let thisObject = {
|
||||
calculate: calculate
|
||||
}
|
||||
const MAX_GENERATIONS = 10
|
||||
const MAX_GENERATIONS = 3
|
||||
|
||||
return thisObject
|
||||
|
||||
|
||||
@@ -1,10 +1,24 @@
|
||||
function newGovernanceFunctionLibraryDistributionProcess() {
|
||||
let thisObject = {
|
||||
calculate: calculate
|
||||
calculate: calculate,
|
||||
finalize: finalize,
|
||||
initialize: initialize
|
||||
}
|
||||
|
||||
const DISTRIBUTION_PROCESS_RECALCULATION_DELAY = 5000
|
||||
let loop
|
||||
|
||||
return thisObject
|
||||
|
||||
function initialize() {
|
||||
loop = true
|
||||
calculate()
|
||||
}
|
||||
|
||||
function finalize() {
|
||||
loop = false
|
||||
}
|
||||
|
||||
function calculate() {
|
||||
|
||||
let pools = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('Pools')
|
||||
@@ -125,5 +139,9 @@ function newGovernanceFunctionLibraryDistributionProcess() {
|
||||
UI.projects.governance.functionLibraries.tokenMining.calculate(
|
||||
userProfiles
|
||||
)
|
||||
|
||||
if (loop === true) {
|
||||
setTimeout(calculate, DISTRIBUTION_PROCESS_RECALCULATION_DELAY)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
function newGovernanceFunctionLibraryProfileConstructor() {
|
||||
let thisObject = {
|
||||
buildProfile: buildProfile
|
||||
buildProfile: buildProfile,
|
||||
addSigningAccount: addSigningAccount
|
||||
}
|
||||
|
||||
return thisObject
|
||||
@@ -18,7 +19,7 @@ function newGovernanceFunctionLibraryProfileConstructor() {
|
||||
if (githubUsername === undefined || githubUsername === "") {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
"githubUsername config property missing.",
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
return
|
||||
}
|
||||
@@ -53,7 +54,7 @@ function newGovernanceFunctionLibraryProfileConstructor() {
|
||||
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call via HTTP Interface failed.',
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
return
|
||||
}
|
||||
@@ -67,14 +68,14 @@ function newGovernanceFunctionLibraryProfileConstructor() {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call to WEB3 Server failed. ' + response.error,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
console.log('Call to WEB3 Server failed. ' + response.error)
|
||||
return
|
||||
} else {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call to WEB3 Server failed. Most likely the Mnemonic provided is not correct or you need to run node setup because a dependency is missing. ' + response.error,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
console.log('Call to WEB3 Server failed. Most likely the Mnemonic provided is not correct or you need to run node setup because a dependency is missing. ' + response.error)
|
||||
return
|
||||
}
|
||||
@@ -103,7 +104,7 @@ function newGovernanceFunctionLibraryProfileConstructor() {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call via HTTP Interface failed.',
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -114,7 +115,7 @@ function newGovernanceFunctionLibraryProfileConstructor() {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call to WEB3 Server failed. ' + response.error,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
console.log('Call to WEB3 Server failed. ' + response.error)
|
||||
return
|
||||
}
|
||||
@@ -145,12 +146,186 @@ function newGovernanceFunctionLibraryProfileConstructor() {
|
||||
node.payload.uiObject.setInfoMessage(
|
||||
"Profile Private Key has been successfully created. User Profile installed as a plugin and saved. Use the Private Key at a crypto wallet and delete this node once done.",
|
||||
UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
} else {
|
||||
node.payload.uiObject.setInfoMessage(
|
||||
"Mnemonic successfully imported. User Profile installed as a plugin and saved. Your external wallet was sucessfully linked to your profile.",
|
||||
UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addSigningAccount(
|
||||
node,
|
||||
rootNodes
|
||||
) {
|
||||
let githubUsername = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'githubUsername')
|
||||
let mnemonic = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(node.payload, 'mnemonic')
|
||||
let signingAccounts
|
||||
|
||||
if (githubUsername === undefined || githubUsername === "") {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
"githubUsername config property missing.",
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
Some validations first...
|
||||
*/
|
||||
if (node.payload.referenceParent === undefined) {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
"The Profile Contstructor needs to reference your User Profile.",
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
if (node.payload.referenceParent.signingAccounts === undefined) {
|
||||
signingAccounts = UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(
|
||||
node.payload.referenceParent,
|
||||
'Signing Accounts',
|
||||
UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes
|
||||
)
|
||||
} else {
|
||||
signingAccounts = node.payload.referenceParent.signingAccounts
|
||||
}
|
||||
|
||||
createWallet()
|
||||
|
||||
function createWallet() {
|
||||
let params
|
||||
/*
|
||||
If the user provides a mnemonic then we will get the private key and address from it,
|
||||
otherwise, we will create a new private key and address.
|
||||
*/
|
||||
if (mnemonic === undefined || mnemonic === "") {
|
||||
params = {
|
||||
method: 'createWalletAccount',
|
||||
entropy: node.id + (new Date()).valueOf()
|
||||
}
|
||||
} else {
|
||||
params = {
|
||||
method: 'mnemonicToPrivateKey',
|
||||
mnemonic: mnemonic
|
||||
}
|
||||
}
|
||||
|
||||
let url = 'WEB3' // We will access the default Client WEB3 endpoint.
|
||||
|
||||
httpRequest(JSON.stringify(params), url, onResponse)
|
||||
|
||||
function onResponse(err, data) {
|
||||
/* Lets check the result of the call through the http interface */
|
||||
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call via HTTP Interface failed.',
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
let response = JSON.parse(data)
|
||||
|
||||
/* Lets check the result of the method call */
|
||||
if (response.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
|
||||
|
||||
if (mnemonic === undefined || mnemonic === "") {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call to WEB3 Server failed. ' + response.error,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
console.log('Call to WEB3 Server failed. ' + response.error)
|
||||
return
|
||||
} else {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call to WEB3 Server failed. Most likely the Mnemonic provided is not correct or you need to run node setup because a dependency is missing. ' + response.error,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
console.log('Call to WEB3 Server failed. Most likely the Mnemonic provided is not correct or you need to run node setup because a dependency is missing. ' + response.error)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
signUserProfileData(response.address, response.privateKey)
|
||||
}
|
||||
}
|
||||
|
||||
function signUserProfileData(address, privateKey) {
|
||||
|
||||
let request = {
|
||||
url: 'WEB3',
|
||||
params: {
|
||||
method: "signData",
|
||||
privateKey: privateKey,
|
||||
data: githubUsername
|
||||
}
|
||||
}
|
||||
|
||||
httpRequest(JSON.stringify(request.params), request.url, onResponse)
|
||||
|
||||
function onResponse(err, data) {
|
||||
/* Lets check the result of the call through the http interface */
|
||||
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call via HTTP Interface failed.',
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
let response = JSON.parse(data)
|
||||
|
||||
/* Lets check the result of the method call */
|
||||
if (response.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
|
||||
node.payload.uiObject.setErrorMessage(
|
||||
'Call to WEB3 Server failed. ' + response.error,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
console.log('Call to WEB3 Server failed. ' + response.error)
|
||||
return
|
||||
}
|
||||
|
||||
createSigningAccount(response.signature)
|
||||
}
|
||||
|
||||
function createSigningAccount(signature) {
|
||||
|
||||
let signingAccount = UI.projects.foundations.functionLibraries.uiObjectsFromNodes.addUIObject(
|
||||
signingAccounts,
|
||||
'Signing Account',
|
||||
UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes
|
||||
)
|
||||
/*
|
||||
We store at the User Profile the Signed githubUsername
|
||||
*/
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(signingAccount.payload, 'signature', signature)
|
||||
|
||||
node.config = "{}"
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'nodeName', signingAccount.name)
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'codeName', signingAccount.name)
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'nodeType', signingAccount.type)
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'nodeId', signingAccount.id)
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'address', address)
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'privateKey', privateKey)
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'githubUsername', githubUsername)
|
||||
UI.projects.foundations.utilities.nodeConfig.saveConfigProperty(node.payload, 'userProfileId', node.payload.referenceParent.id)
|
||||
/*
|
||||
Show nice message.
|
||||
*/
|
||||
if (mnemonic === undefined || mnemonic === "") {
|
||||
node.payload.uiObject.setInfoMessage(
|
||||
"Signing Account has been successfully created.",
|
||||
UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR
|
||||
)
|
||||
} else {
|
||||
node.payload.uiObject.setInfoMessage(
|
||||
"Mnemonic successfully imported. Signing Account has been successfully created.",
|
||||
UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,6 +126,7 @@ function newGovernanceFunctionLibraryTokenMining() {
|
||||
if (userProfile === undefined) { return }
|
||||
if (userProfile.payload === undefined) { return }
|
||||
if (userProfile.tokensMined === undefined) { return }
|
||||
if (userProfile.tokensMined.payload === undefined) { return }
|
||||
if (userProfile.tokensMined.payload.tokensMined === undefined) {
|
||||
userProfile.tokensMined.payload.tokensMined = {
|
||||
awarded: 0,
|
||||
@@ -147,6 +148,8 @@ function newGovernanceFunctionLibraryTokenMining() {
|
||||
if (userProfile === undefined) { return }
|
||||
if (userProfile.payload === undefined) { return }
|
||||
if (userProfile.tokensMined === undefined) { return }
|
||||
if (userProfile.tokensMined.payload === undefined) { return }
|
||||
|
||||
if (programNode.payload === undefined) { return }
|
||||
if (programNode.payload[programPropertyName] === undefined) { return }
|
||||
|
||||
@@ -165,6 +168,7 @@ function newGovernanceFunctionLibraryTokenMining() {
|
||||
if (userProfile === undefined) { return }
|
||||
if (userProfile.payload === undefined) { return }
|
||||
if (userProfile.tokensMined === undefined) { return }
|
||||
if (userProfile.tokensMined.payload === undefined) { return }
|
||||
|
||||
const awarded = parseFloat(userProfile.tokensMined.payload.tokensMined.awarded.toFixed(0)).toLocaleString('en')
|
||||
const bonus = parseFloat(userProfile.tokensMined.payload.tokensMined.bonus.toFixed(0)).toLocaleString('en')
|
||||
|
||||
@@ -187,6 +187,7 @@ function newGovernanceFunctionLibraryTokenPower() {
|
||||
if (childNode === undefined) { continue }
|
||||
if (childNode.type === "Delegation Program" && excludeDelegationProgram === true) { continue }
|
||||
if (childNode.type === "Tokens Mined") { continue }
|
||||
if (childNode.type === "Signing Accounts") { continue }
|
||||
|
||||
let percentage = getPercentage(childNode)
|
||||
|
||||
@@ -205,6 +206,7 @@ function newGovernanceFunctionLibraryTokenPower() {
|
||||
if (childNode === undefined) { continue }
|
||||
if (childNode.type === "Delegation Program" && excludeDelegationProgram === true) { continue }
|
||||
if (childNode.type === "Tokens Mined") { continue }
|
||||
if (childNode.type === "Signing Accounts") { continue }
|
||||
|
||||
let percentage = getPercentage(childNode)
|
||||
if (percentage !== undefined && isNaN(percentage) !== true) {
|
||||
@@ -241,6 +243,7 @@ function newGovernanceFunctionLibraryTokenPower() {
|
||||
if (childNode === undefined) { continue }
|
||||
if (childNode.type === "Delegation Program" && excludeDelegationProgram === true) { continue }
|
||||
if (childNode.type === "Tokens Mined") { continue }
|
||||
if (childNode.type === "Signing Accounts") { continue }
|
||||
|
||||
let percentage = getPercentage(childNode)
|
||||
if (percentage === undefined || isNaN(percentage) === true) {
|
||||
@@ -262,6 +265,7 @@ function newGovernanceFunctionLibraryTokenPower() {
|
||||
if (childNode === undefined) { continue }
|
||||
if (childNode.type === "Delegation Program" && excludeDelegationProgram === true) { continue }
|
||||
if (childNode.type === "Tokens Mined") { continue }
|
||||
if (childNode.type === "Signing Accounts") { continue }
|
||||
|
||||
let percentage = getPercentage(childNode)
|
||||
if (percentage === undefined || isNaN(percentage) === true) {
|
||||
|
||||
@@ -3,7 +3,7 @@ function newGovernanceFunctionLibraryVotingProgram() {
|
||||
calculate: calculate,
|
||||
installMissingVotes: installMissingVotes
|
||||
}
|
||||
const MAX_GENERATIONS = 10
|
||||
const MAX_GENERATIONS = 3
|
||||
|
||||
return thisObject
|
||||
|
||||
|
||||
@@ -125,8 +125,8 @@ function newGobernanceReportsSpace() {
|
||||
/*
|
||||
If the workspace is not related to governance, then we exit the Intialize Function
|
||||
*/
|
||||
let resultsArary = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile')
|
||||
if (resultsArary.length === 0) { return }
|
||||
let governanceProject = UI.projects.foundations.spaces.designSpace.workspace.getProjectHeadByNodeType('Governance Project')
|
||||
if (governanceProject === undefined) { return }
|
||||
|
||||
thisObject.container = newContainer()
|
||||
thisObject.container.name = MODULE_NAME
|
||||
|
||||
@@ -16,18 +16,20 @@ function newGovernanceUserProfileSpace() {
|
||||
|
||||
let waitingForResponses = 0
|
||||
const BSC_SCAN_RATE_LIMIT_DELAY = 6000
|
||||
const DISTRIBUTION_PROCESS_RECALCULATION_DELAY = 5000
|
||||
let intervalId
|
||||
let reputationByAddress = new Map()
|
||||
|
||||
return thisObject
|
||||
|
||||
function initialize() {
|
||||
/*
|
||||
If the workspace is not related to governance, then we exit the Intialize Function
|
||||
*/
|
||||
let governanceProject = UI.projects.foundations.spaces.designSpace.workspace.getProjectHeadByNodeType('Governance Project')
|
||||
if (governanceProject === undefined) { return }
|
||||
/*
|
||||
Here we will run the distribution process, that in turn will run all the programs.
|
||||
*/
|
||||
intervalId = setInterval(UI.projects.governance.functionLibraries.distributionProcess.calculate, DISTRIBUTION_PROCESS_RECALCULATION_DELAY)
|
||||
|
||||
UI.projects.governance.functionLibraries.distributionProcess.initialize()
|
||||
/*
|
||||
Here we will get a list of all github usernames who have a star or fork and are watching the
|
||||
Superalgos Repository. This will later be used to know which user profiles are participating
|
||||
@@ -40,11 +42,8 @@ function newGovernanceUserProfileSpace() {
|
||||
thisObject.container = newContainer()
|
||||
thisObject.container.initialize(MODULE_NAME)
|
||||
thisObject.container.isDraggeable = false
|
||||
/*
|
||||
If the workspace is not related to governance, then we exit the Intialize Function
|
||||
*/
|
||||
|
||||
let userProfiles = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile')
|
||||
if (userProfiles.length === 0) { return }
|
||||
/*
|
||||
We are going to collapse all User Profiles to save processing resources at the UI
|
||||
*/
|
||||
@@ -299,15 +298,17 @@ function newGovernanceUserProfileSpace() {
|
||||
}
|
||||
|
||||
function finalize() {
|
||||
clearInterval(intervalId)
|
||||
intervalId = undefined
|
||||
|
||||
UI.projects.governance.functionLibraries.distributionProcess.finalize()
|
||||
|
||||
thisObject.githubStars = undefined
|
||||
thisObject.githubWatchers = undefined
|
||||
thisObject.githubForks = undefined
|
||||
|
||||
thisObject.container.finalize()
|
||||
thisObject.container = undefined
|
||||
if (thisObject.container !== undefined) {
|
||||
thisObject.container.finalize()
|
||||
thisObject.container = undefined
|
||||
}
|
||||
}
|
||||
|
||||
function reset() {
|
||||
@@ -328,8 +329,14 @@ function newGovernanceUserProfileSpace() {
|
||||
}
|
||||
|
||||
function physics() {
|
||||
|
||||
if (UI.projects.foundations.spaces.designSpace.workspace === undefined) { return }
|
||||
/*
|
||||
If the workspace is not related to governance, then we exit the Intialize Function
|
||||
*/
|
||||
let governanceProject = UI.projects.foundations.spaces.designSpace.workspace.getProjectHeadByNodeType('Governance Project')
|
||||
if (governanceProject === undefined) { return }
|
||||
/*
|
||||
Load the user profiles with Token Power.
|
||||
*/
|
||||
let userProfiles = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadsByNodeType('User Profile')
|
||||
@@ -368,7 +375,7 @@ function newGovernanceUserProfileSpace() {
|
||||
userProfile.payload.uiObject.setErrorMessage(
|
||||
'Call via HTTP Interface failed.',
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -379,7 +386,7 @@ function newGovernanceUserProfileSpace() {
|
||||
userProfile.payload.uiObject.setErrorMessage(
|
||||
'Call to WEB3 Server failed. ' + response.error,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
console.log('Call to WEB3 Server failed. ' + response.error)
|
||||
return
|
||||
}
|
||||
@@ -411,7 +418,7 @@ function newGovernanceUserProfileSpace() {
|
||||
} else {
|
||||
userProfile.payload.uiObject.setInfoMessage(data,
|
||||
UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
userProfile.payload.blockchainTokens = Number(data.result) / 1000000000000000000
|
||||
userProfile.payload.reputation = Math.min(reputationByAddress.get(blockchainAccount.toLowerCase()) | 0, userProfile.payload.blockchainTokens)
|
||||
}
|
||||
@@ -422,7 +429,7 @@ function newGovernanceUserProfileSpace() {
|
||||
if (userProfile.payload !== undefined) {
|
||||
userProfile.payload.uiObject.setErrorMessage(message,
|
||||
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
|
||||
)
|
||||
)
|
||||
}
|
||||
waitingForResponses--
|
||||
});
|
||||
|
||||
@@ -7,7 +7,7 @@ function newGovernanceUtilitiesDecendentProgram() {
|
||||
let thisObject = {
|
||||
run: run
|
||||
}
|
||||
const MAX_GENERATIONS = 10
|
||||
const MAX_GENERATIONS = 3
|
||||
|
||||
return thisObject
|
||||
|
||||
|
||||
@@ -242,11 +242,11 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock
|
||||
*/
|
||||
let signedMessage = {
|
||||
callerProfileHandle: messageHeader.callerProfileHandle,
|
||||
calledProfileHandle: NT.NETWORK_NODE_USER_PROFILE_HANDLE,
|
||||
calledProfileHandle: SA.secrets.map.get('P2P Network Node').githubUsername,
|
||||
callerTimestamp: messageHeader.callerTimestamp,
|
||||
calledTimestamp: calledTimestamp
|
||||
}
|
||||
let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), NT.NETWORK_NODE_USER_PROFILE_PRIVATE_KEY)
|
||||
let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), SA.secrets.map.get('P2P Network Node').privateKey)
|
||||
|
||||
let response = {
|
||||
result: 'Ok',
|
||||
@@ -304,12 +304,25 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock
|
||||
caller.socket.send(JSON.stringify(response))
|
||||
return
|
||||
}
|
||||
let signedMessage = JSON.parse(signature.message)
|
||||
/*
|
||||
We will verify that the signature belongs to the signature.message.
|
||||
To do this we will hash the signature.message and see if we get
|
||||
the same hash of the signature.
|
||||
*/
|
||||
let hash = web3.eth.accounts.hashMessage(signature.message)
|
||||
if (hash !== signature.messageHash) {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'signature.message Hashed Does Not Match signature.messageHash.'
|
||||
}
|
||||
caller.socket.send(JSON.stringify(response))
|
||||
return
|
||||
}
|
||||
/*
|
||||
The user profile based on the blockchain account, based on the signature,
|
||||
it is our witness user profile, to validate the caller.
|
||||
*/
|
||||
let signedMessage = JSON.parse(signature.message)
|
||||
|
||||
if (signedMessage.callerProfileHandle !== witnessUserProfile.userProfileHandle) {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
@@ -322,7 +335,7 @@ exports.newNetworkModulesWebSocketsInterface = function newNetworkModulesWebSock
|
||||
We will check that the signature includes this Network Node handle, to avoid
|
||||
man in the middle attackts.
|
||||
*/
|
||||
if (signedMessage.calledProfileHandle !== NT.NETWORK_NODE_USER_PROFILE_HANDLE) {
|
||||
if (signedMessage.calledProfileHandle !== SA.secrets.map.get('P2P Network Node').githubUsername) {
|
||||
let response = {
|
||||
result: 'Error',
|
||||
message: 'calledProfileHandle Does Not Match This Network Node Handle.'
|
||||
|
||||
@@ -30,16 +30,13 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
|
||||
/*
|
||||
Here we will pick a Network Node from all users profiles available that do have a Network Node running. // TODO
|
||||
In the meantime, we will assume that we have chosen the following Network Node to connect to.
|
||||
{
|
||||
"githubUsername": "Test-Network-Node-Profile",
|
||||
"address": "0xa153469c57A91F5a59Fc6c45A37aD8dbad85e417"
|
||||
}
|
||||
|
||||
*/
|
||||
web3 = new SA.nodeModules.web3()
|
||||
|
||||
selectedNetworkNode = {
|
||||
userProfileHandle: "Test-Network-Node-Profile",
|
||||
blockchainAccount: "0xa153469c57A91F5a59Fc6c45A37aD8dbad85e417",
|
||||
userProfileHandle: "Luis-Fernando-Molina",
|
||||
blockchainAccount: "0xeBDCB7a73c4796ca9F025d005630eCe773dd9e54",
|
||||
ranking: 0,
|
||||
host: "localhost",
|
||||
port: global.env.NETWORK_WEB_SOCKETS_INTERFACE_PORT
|
||||
@@ -90,7 +87,7 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
|
||||
let message = {
|
||||
messageType: 'Handshake',
|
||||
callerRole: 'Network Client',
|
||||
callerProfileHandle: DK.TEST_NETWORK_CLIENT_USER_PROFILE_HANDLE,
|
||||
callerProfileHandle: SA.secrets.map.get('Social Trading Desktop').githubUsername,
|
||||
callerTimestamp: callerTimestamp,
|
||||
step: 'One'
|
||||
}
|
||||
@@ -127,7 +124,17 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
|
||||
}
|
||||
|
||||
let signedMessage = JSON.parse(signature.message)
|
||||
|
||||
/*
|
||||
We will verify that the signature belongs to the signature.message.
|
||||
To do this we will hash the signature.message and see if we get
|
||||
the same hash of the signature.
|
||||
*/
|
||||
let hash = web3.eth.accounts.hashMessage(signature.message)
|
||||
if (hash !== signature.messageHash) {
|
||||
console.log('[ERROR] Web Sockets Client -> stepOneResponse -> signature.message Hashed Does Not Match signature.messageHash.')
|
||||
reject()
|
||||
return
|
||||
}
|
||||
/*
|
||||
We will check that the Network Node that responded has the same User Profile Handle
|
||||
that we have on record, otherwise something is wrong and we should not proceed.
|
||||
@@ -141,7 +148,7 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
|
||||
We will check that the profile handle we sent to the Network Node, is returned at the
|
||||
signed message, to avoid man in the middle attackts.
|
||||
*/
|
||||
if (signedMessage.callerProfileHandle !== DK.TEST_NETWORK_CLIENT_USER_PROFILE_HANDLE) {
|
||||
if (signedMessage.callerProfileHandle !== SA.secrets.map.get('Social Trading Desktop').githubUsername) {
|
||||
console.log('[ERROR] Web Sockets Client -> stepOneResponse -> The Network Node callerProfileHandle does not match my own userProfileHandle.')
|
||||
reject()
|
||||
return
|
||||
@@ -171,7 +178,7 @@ exports.newNetworkModulesWebSocketsClient = function newNetworkModulesWebSockets
|
||||
*/
|
||||
socketClient.onmessage = socketMessage => { stepTwoResponse(socketMessage) }
|
||||
|
||||
let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), DK.TEST_NETWORK_CLIENT_USER_PROFILE_PRIVATE_KEY)
|
||||
let signature = web3.eth.accounts.sign(JSON.stringify(signedMessage), SA.secrets.map.get('Social Trading Desktop').privateKey)
|
||||
|
||||
let message = {
|
||||
messageType: 'Handshake',
|
||||
|
||||
@@ -44,7 +44,7 @@ exports.newSocialTradingModulesWebAppInterface = function newSocialTradingModule
|
||||
}
|
||||
return JSON.stringify(response)
|
||||
}
|
||||
queryMessage.emitterUserProfileId = DK.TEST_NETWORK_CLIENT_USER_PROFILE_ID
|
||||
queryMessage.emitterUserProfileId = SA.secrets.map.get('Social Trading Desktop').userProfileId
|
||||
messageHeader.queryMessage = JSON.stringify(queryMessage)
|
||||
|
||||
let response
|
||||
@@ -123,7 +123,7 @@ exports.newSocialTradingModulesWebAppInterface = function newSocialTradingModule
|
||||
eventMessage.postText = undefined
|
||||
}
|
||||
|
||||
eventMessage.emitterUserProfileId = DK.TEST_NETWORK_CLIENT_USER_PROFILE_ID
|
||||
eventMessage.emitterUserProfileId = SA.secrets.map.get('Social Trading Desktop').userProfileId
|
||||
messageHeader.eventMessage = JSON.stringify(eventMessage)
|
||||
|
||||
let response = {
|
||||
@@ -175,9 +175,6 @@ exports.newSocialTradingModulesWebAppInterface = function newSocialTradingModule
|
||||
|
||||
async function getPostText(userProfileHandle, postHash, timestamp) {
|
||||
let promise = new Promise((resolve, reject) => {
|
||||
//https://raw.githubusercontent.com/Luis-Fernando-Molina/My-Social-Trading-Data/main/User-Posts/2021/09/17/0608070d8d2aab12e63cf3aa871918a04e237edff4fc0f886d158311811cf7c9.json
|
||||
|
||||
const userProfileHandle = "Luis-Fernando-Molina" /// TODO Delete this line
|
||||
|
||||
const fileName = postHash + ".json"
|
||||
const filePath = 'My-Social-Trading-Data/main/User-Posts/' + SA.projects.foundations.utilities.filesAndDirectories.pathFromDate(timestamp)
|
||||
|
||||
@@ -52,7 +52,20 @@ exports.newBootstrap = function newBootstrap() {
|
||||
NT.projects.socialTrading.globals.memory.maps.USER_PROFILES_BY_ID.set(userProfileId, userProfile)
|
||||
NT.projects.socialTrading.globals.memory.maps.USER_PROFILES_BY_HANDLE.set(userHandle, userProfile)
|
||||
NT.projects.socialTrading.globals.memory.maps.USER_PROFILES_BY_BLOCHAIN_ACCOUNT.set(blockchainAccount, userProfile)
|
||||
|
||||
/*
|
||||
Each User Profile might have Signing Accounts, meaning
|
||||
accounts that can be siging on behalf of the User Profile.
|
||||
*/
|
||||
if (userProfilePlugin.signingAccounts !== undefined) {
|
||||
for (let j = 0; j < userProfilePlugin.signingAccounts.signingAccounts.length; j++) {
|
||||
let signingAccount = userProfilePlugin.signingAccounts.signingAccounts[j]
|
||||
let config = JSON.parse(signingAccount.config)
|
||||
let signatureObject = config.signature
|
||||
let web3 = new SA.nodeModules.web3()
|
||||
let blockchainAccount = web3.eth.accounts.recover(signatureObject)
|
||||
NT.projects.socialTrading.globals.memory.maps.USER_PROFILES_BY_BLOCHAIN_ACCOUNT.set(blockchainAccount, userProfile)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||