![Page 1: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/1.jpg)
PRIVATESKY
Proiect de cercetare al Facultatii de Informatica Iasi
https://profs.info.uaic.ro/~ads/PrivateSky
https://github.com/PrivateSky/privatesky
![Page 2: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/2.jpg)
Agenda
- Introducere
- Concepte
- Tehnologii
- Arhitectura
- Exemple de aplicatii
![Page 3: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/3.jpg)
Introducere
PrivateSKY este un proiect open-source ce ofera solutii celor ce doresc ca
aplicatiile dezvoltate de ei sa aibe una sau mai multe din caracteristicile
urmatoare:
- Integrare intra si inter-organizationala
- Arhitectura distribuita
- Arhitectura descentralizata
- Serverless
- Prelucreaza date private
- Implementari de sisteme ce au componente de blockchain public sau privat
![Page 4: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/4.jpg)
Introducere
PrivateSKY foloseste concepte si tehnologii validate in cadrul proiectului
SwarmESB, dar vine ca o versiune noua si mult imbunatatita a acestuia.
![Page 5: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/5.jpg)
Introducere
Proiectul SwarmESB este open source si se gaseste la adresa
https://github.com/salboaie/swarmESB
SwarmESB si tehnologiile oferite de acesta au fost validate atat in proiecte
comerciale cat si de cercetare de-a lungul timpului. A fost folosit de firme
romanesti in cadrul unor consortii mari cu parteneri puternici din domeniul IT.
![Page 6: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/6.jpg)
Concepte cheie
- SWARM
- Flow
- Blockchain
- Asset
- Contracte SMART
![Page 7: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/7.jpg)
SWARM
Este un concept de baza si reprezinta:
- Paradigma noua de programare ce pune accent pe definirea modelelor si
descrierea interactiunilor
- Metafora...
![Page 8: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/8.jpg)
SWARM - metafora
Cand se executa un cod de tip SWARM defapt se porneste si ruleaza un
workflow. Acesta trece prin mai multe faze (SWARM phase) executate pe unul
sau mai multe noduri PrivateSKY in functie de modelare si nevoi. Drept urmare
putem spune “ca se porneste un roi cu scopul de a executa un task”.
![Page 9: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/9.jpg)
SWARM si derivate
In PrivateSky pe langa SWARM mai este si alte derivate a acestuia:
- Flow
- Asset
- Transaction
Derivatele au fost obtinute fie prin limitarea unor functionalitati fie prin adaugarea
unor mecanisme specifice.
![Page 10: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/10.jpg)
SWARM
Mecanism de baza ce permite modelarea si executia unui workflow ce urmeaza
sa fie executat pe unul sau mai multe noduri PrivateSKY.
Primitive specifice:
- this.swarm(“domainName/agent/AgentName”, “phaseName”, [arg1, arg2 …]);
- this.return([arg1, arg2 …]);
- this.onReturn(callback);
![Page 11: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/11.jpg)
SWARM - modelare
$$.swarm.describe(“SwarmName”, {
public:{ /*description of public members*/},
protected:{/*description of the members that are available to be used only on the node that defines them*/},
private:{/*description of the members that store privacy related data*/},
phaseOne: function(arg1, arg2, ...){
/* phase code - available APIs:
this.swarm(“domainName/agent/AgentName”, “phaseName”, [arg1, arg2 …]);
this.return([arg1, arg2 …]);
this.onReturn(callback); */
}
});
![Page 12: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/12.jpg)
SWARM - executie
$$.swarm.describe(“SwarmName”, {...});
var swarm = $$.swarm.start(“swarmName”, “phase”, [arg1, arg2 ..]);
swarm.onReturn(function([arg1, arg2 ...]){
…
});
![Page 13: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/13.jpg)
Flows
Mecanism ce permite modelarea si executia unui workflow. Un flow se executa
doar in cadrul unui singur node PrivateSKY. Nu detine capabilitatea de a continua
sau muta executia pe alt node PrivateSKY.
Practic putem spune ca este un SWARM limitat in a fi executat doar local.
In principal sunt folosite pentru modelarea proceselor interne PrivateSKY.
Pot fi apelate in cadrul unui SWARM pentru a adauga si refolosi cod privind unul
dintre flow-urile necesare dezvoltarii unei aplicatii.
![Page 14: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/14.jpg)
Flows - modelare
$$.flow.describe(“FlowName”, {
public:{ /*description of public members*/},
protected:{/*description of the members that are avaible to be used only on the node that defines them*/},
private:{/*description of the members that store privacy related data*/},
phaseOne: function(arg1, arg2, ...){
//phase code
},
phaseTwo: function(arg1, arg2, ...){
//phase code
}
});
![Page 15: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/15.jpg)
Flows - executie
var Flow = $$.flow.describe(“FlowName”, {...});
$$.flow.start(“FlowName”, “phaseName”, [arg1, arg2 ...]);
sau
var flowInstance = Flow();
flowInstance.phaseName([arg1, arg2 ...]);
Nota: Nu exista conceptul de “constructor” (metoda ce se apeleaza obligatoriu
prima data in momentul in care se instantiaza un flow). Odata descris flow-ul si
instantiat poate fi apelata oricare din metodele modelate in cadrul flow-ului.
![Page 16: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/16.jpg)
Flows - exemplu
https://github.com/PrivateSky/privatesky/blob/master/libraries/launcher/mkDirRec.js
![Page 17: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/17.jpg)
Assets
Mecanism de modelare a datelor stocate in cadrul blochckain-ului PrivateSKY.
API similar cu cel al flow-urilor.
![Page 18: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/18.jpg)
Assets - modelare
$$.asset.describe(“AssetName”, {
public:{ /*description of public members*/},
protected:{/*description of the members that are avaible to be used only on the node that defines them*/},
private:{/*description of the members that store privacy related data*/},
methodOne: function(arg1, arg2, ...){
//method code
},
methodTwo: function(arg1, arg2, ...){
//method code
}
});
![Page 19: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/19.jpg)
Assets - exemplu
https://github.com/PrivateSky/psk-
examples/blob/master/token_example/assets/Account.js
![Page 20: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/20.jpg)
Transactions
Sunt SWARM-uri speciale ce lucreaza cu obiecte de tip Assets in ideea de a
consulta, modifica si valida informatii din blockchain-ul PrivateSKY.
![Page 21: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/21.jpg)
Transactions - modelare
$$.transaction.describe(“TransactionName”, {
public:{ /*description of public members*/},
protected:{/*description of the members that are available to be used only on the node that defines them*/},
private:{/*description of the members that store privacy related data*/},
phaseOne: function(arg1, arg2, ...){
},
phaseTwo: function(arg1, arg2, …){
}
});
![Page 22: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/22.jpg)
Transactions - exemplu
https://github.com/PrivateSky/psk-
examples/blob/master/token_example/transactions/accountManagement.js
![Page 23: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/23.jpg)
Instalare si rulare nod PrivateSKY
Preconditii: Node instalat minim versiunea 10.15.3 sau mai nou
1. git clone https://github.com/PrivateSky/privatesky
2. cd privatesky
3. npm run install
4. npm run start
Observatii:
- pentru instalare si rulare pe Windows trebuie folosit un terminal rulat cu
drepturi privilegiate.
- De adaugat o regula privind portul 8080 in firewall pentru a permite
comunicarea
![Page 24: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/24.jpg)
Instalare si rulare nod PrivateSKY
Daca instalarea a decurs bine in consola se vor afisa datele necesare conectarii la
noul PrivateSKY.
Daca rezultatul difera verificati ca fiecare pas din instalare sa se fi incheiat fara
erori.
![Page 25: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/25.jpg)
Configurare nod PrivateSKY
Nodurile PrivateSKY se pot configura folosind aplicatia tip linie de comanda
PSKAdmin.
Aplicatia PSKAdmin se regaseste in folderul {root_folder_PrivateSky}/bin
![Page 26: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/26.jpg)
Structura si organizare fisiere proiect PrivateSKY
Cele mai importante fisiere si foldere in care se
lucreaza cand dezvoltam noi functionalitati sunt:
bin/scripts/build-devel.js
builds/build.json
libraries/
modules/
![Page 27: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/27.jpg)
bin/scripts/build-devel.js
PrivateSKY foloseste un mecanism propriu pentru descarcarea si instalarea
dependintelor necesare rularii.
Evitam instalarea modulelor direct cu NPM din considerente de securitate. ( a se
vedea numeroasele probleme cauzate de module neintretinute sau registri NPM
neactualizati etc.)
Cand doreste a adauga o noua dependinta se editeaza fisierul si se ruleaza din
nou comanda de instalare cu conditia ca nodul PrivateSKY sa fie oprit.
npm run install
![Page 28: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/28.jpg)
bin/scripts/build-devel.js
![Page 29: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/29.jpg)
builds/build.json
Codul necesar rularii PrivateSKY este impachetat in bundle-uri folosind
Browserify.
In cadrul fisierului sunt descrise structura bundle-urilor.
Cand este nevoie de a include intr-unul din bundle-uri o noua librarie sau modul
se editeaza fisierul dupa care se reporneste nodul PrivateSKY.
npm run start
sau exista si optiunea
npm run build
![Page 30: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/30.jpg)
builds/build.json
![Page 31: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/31.jpg)
Libraries
Librariile PrivateSKY reprezinta colectii de SWARM-uri (assets, flows,
transactions, swarms).
Structura unei librarii PrivateSKY este similara unui pachet npm. (prezenta unui
fisier index.js sau un package.json ce sa indice fisierul principal)
![Page 32: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/32.jpg)
Libraries
![Page 33: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/33.jpg)
Modules
Modulele PrivateSKY sunt proiectele adiacente si necesare rularii unui nod
PrivateSKY. In principal proiectul PrivateSKY foloseste cat mai putine dependente
externe si se bazeaza pe o colectie destul de bogata de module proprii.
Lista tuturor modulelor PrivateSKY poate fi consultata la adresa
https://github.com/PrivateSky
![Page 34: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/34.jpg)
Modules
![Page 35: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/35.jpg)
How to SWARM
![Page 36: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/36.jpg)
How to SWARM
![Page 37: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/37.jpg)
How to SWARM
![Page 38: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/38.jpg)
How to SWARM
Continut fisier index.js
$$.swarms.describe("Echo", {
say:function(message){
this.return("Echo is saying: " + message);
}
});
![Page 39: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/39.jpg)
How to SWARM
![Page 40: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/40.jpg)
How to SWARM
![Page 41: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/41.jpg)
How to SWARM
![Page 42: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/42.jpg)
How to SWARM
![Page 43: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/43.jpg)
How to SWARM
![Page 44: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/44.jpg)
How to SWARM
![Page 45: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/45.jpg)
How to SWARM
![Page 46: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/46.jpg)
How to SWARM
Explicatii detaliate pas cu pas se regasesc la adresa
https://github.com/PrivateSky/privatesky/wiki/How-to-web
![Page 47: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/47.jpg)
PrivateSKY - arhitectura unui nod
Agent Local
Domain
Agent
Domain Agent
Launcher
VirtualMQ
FolderMQ
with IPC
Client
/ remote agent
PSK DB
PSK DB
PubSub
Channels
HTTP Sandbox
Sandbox
Sandbox
PrivateSKY
Node
![Page 48: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/48.jpg)
PrivateSKY - arhitectura explicata
Cand se porneste un nod PrivateSKY se executa urmatorii pasi:
- Se porneste un process pentru nodul de comunicare (VirtualMQ)
- Se porneste un process pentru Launcher.
- Odata pornit Launcher-ul acesta verifica configuratia din PSKDB-ul primit ca
si parametru de intrare. Odata incarcata configuratia se porneste si
monitorizeaza cate un proces de tip domeniu.
- Odata pornit procesul domeniu acesta se va conecta la un nod de
comunicare (VirtualMQ) pentru a comunica cu alte domenii sau aplicatii client
![Page 49: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/49.jpg)
PrivateSKY - arhitectura explicata
Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu
PrivateSKY configurat intr-un nod PrivateSKY se conecteaza la un nod de
comunicare (VirtualMQ) si pune un un mesaj pe canalul domeniului.
Domeniul via http long polling trage mesaj cu mesaj. Odata receptionat mesajul
este deserializat si in functie de agentul vizat transmite catre acesta mesajul
folosind canalul FolderMQ a agentului.
Agentul executa cererea si intoarce catre domeniul raspunsul sau alta cerere in
functie de nevoi.
Domeniul fie transmite raspunsul catre Clientul ce a initializat cererea fie transmite
altui agent sau alt nod PrivateSKY cererea.
![Page 50: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/50.jpg)
Tipuri de aplicatii - exemple
Integrare intra si inter-organizationala
Aplicatii ce respecta reglementarile GDPR
Aplicatii de tip Blockchain (DAPP)
Aplicatii cu arhitecturi Serverless
![Page 51: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/51.jpg)
Exemple si documentatie
Proiect mod de lucru cu blockchain-ul PrivateSKY (modelare asset-uri/transactii si
apelare acestora) si nu numai.
https://github.com/PrivateSky/psk-examples
PrivateSKY WIKI project
https://github.com/PrivateSky/privatesky/wiki
![Page 52: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/52.jpg)
Tehnologii dezvoltate in PrivateSKY - CSB
CSB - Cloud Safe Box
Tehnologie PrivateSKY ce permite stocarea si distribuirea de date sensibile intr-un
mod controlat.
CSB-ul este o arhiva criptata ce contine unul sau mai multe blockchain-uri private
cu date sensibile.
Orice accesare a datelor stocate in cadrul CSB-ului (citire, scriere) este notarizata.
Un CSB poate contine si referinte catre alte CSB.
CSB-urile sunt implementate cu ajutorul modulului PrivateSKY pe nume PskDB.
![Page 53: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/53.jpg)
Tehnologii dezvoltate in PrivateSKY - EDFS
EDFS = Encrypted Data File System
Middleware de stocare fisiere CSB.
![Page 54: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/54.jpg)
Aplicatii - CSBWizard
Server HTTP dedicat realizarii de CSB-uri.
Ofera API pentru initializarea unui CSB, adaugarea de fisiere, definirea adreselor
unde sa se faca backup si constructia unui CSB.
Poate fi utilizat de aplicatii dezvoltate pe tehnologii variante (ex. Java, .Net etc.) ce
doresc sa exporte in mod securizat si criptat datele detinute despre utilizatori.
![Page 55: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/55.jpg)
Aplicatii - PSKWallet
Aplicatie NodeJS de tip linie de comanda.
Permite managementul si lucrul cu CSB-uri locale folosind comenzi intuitive direct
din linia de comanda.
Ofera suport ridicat in ceea ce priveste accesarea flow-urilor de interactiune cu
CSB-urile.
![Page 56: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/56.jpg)
Aplicatii - PSKWallet
![Page 57: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/57.jpg)
Aplicatii - CSBUI
Aplicatie React Native dedicata managementul CSB-urilor personale.
Ofera suport in crearea, editarea si distribuirea de CSB-uri.
Ofera posibilitatea de a recupera unul sau mai multe CSB-uri “pierdute”
(recuperarea dintr-un backup anterior a unui CSB si vizualizarea/editarea lui pe un
nou echipament fie el PC, telefon, tableta etc.)
Ofera posibilitatea distribuirii de CSB-uri catre alte entitati sau utilizatori.
https://github.com/PrivateSky/csbui
![Page 59: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/59.jpg)
CSBUI
![Page 60: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/60.jpg)
CSBUI
DEMO folosind https://github.com/PrivateSky/csbui/tree/master/docker
Preconditii: Avem nevoie de infrastructura de tip Docker
1. Build Dockerfile folosind scriptul ./build.sh
2. Lansare container folosind scriptul ./start.sh
3. Accesare pagina http://localhost:3000
In caz ca apar schimbari sau erori si se doreste reluarea procesului de instalare
mai intai se ruleaza scriptul clean.sh abia mai apoi reluand pasii de la 1 pana la 3.
![Page 61: PRIVATESKY - profs.info.uaic.roadria/teach/courses/pcd/resources/PrivateSky.pdf · Cand o aplicatie Client/Agent remote doreste sa comunice cu un domeniu PrivateSKY configurat intr-un](https://reader030.vdocuments.net/reader030/viewer/2022041301/5e115c2d3faf4f0550457a9e/html5/thumbnails/61.jpg)
Tema
Tema 5
Dezvoltati o aplicatie care foloseste ca back-end PrivateSKY. Realizati o
documentatie care sa prezinte sistemul dezvoltat.
Tema 5 + echivalare Test 2
Dezvoltati o aplicatie integrabila cu CSBUI in care sa implementati usecase-uri ce
folosesc date confidentiale (parole, notite, cheltuieli etc.) care pot fi partajate intre
grupuri de persoane. Realizati o documentatie care sa prezinte sistemul dezvoltat.