two types of requests: authorized and open request authorized requests use ManageNodeRequest.proto and ManageNodeBody.proto (maybe better name later) which use the same strategy like Hedera Transactions with signMap Node server check if he knows signer signer must put there public key at first in node server config message ManageNodeGroupAdd { string group_name = 1; string group_alias = 2; HederaID hedera_topic_id = 3; //string parent_group_alias = 4; } - add blockchain to node server - sync with neigbhor node server - discover new neighbor if known neighbor hasn't blockchain - ask hedera for last transaction of this topic to know if sync Open request: open for everyone, no need to check sender but don't sending personal data like e-mail address (which shouldn't be on blockchain anyway) only read access access via json-rpc? method: "checkPubkeysBelongToGroup" params: {"pubkeys": [], "groupAlias": ""} check for every pubkey in array if user belong to group - user belong only to group if he was added to group - OR moved into group from another group - AND wasn't moved out of group return: [] return array in same order as input with true for every existing pubkey and false for every not existing pubkey method: "getBalance" params: {"groupAlias": "", "pubkey": ""} return: {"balance":, deflationTime:} - if user is currently in group return current balance from user with deflation calculated on request time - if group wasn't known or user public key wasn't know to group at all return error - if user isn't any longer in group return balance with deflation at time of moving out method: "getTransactions" params: {"groupAlias": "", "lastKnownSequenceNumber": } return transactions with sequence number bigger as input sequence number return: already implemented json dump format method: "getCreationSum" params: {"groupAlias": "", "month": , "year":, "pubkey": ""} return: {"balance": } calculate and return creation sum from all creation transaction from user with targetDate in month and year