Technisch Ontwerp MAATSCHAPPELIJKE DIENSTVERLENING VERREKENEN IN DE BLOCKCHAIN VOOR DE BELASTINGDIENST

Vergelijkbare documenten
Functioneel Ontwerp MAATSCHAPPELIJKE DIENSTVERLENING VERREKENEN IN DE BLOCKCHAIN VOOR DE BELASTINGDIENST

Eindgebruikershandleiding Jira

Systeemeisen Exact Compact product update 406

Eindgebruikershandleiding Jira

INSTALLATIE EXCHANGE CONNECTOR

Installatie Cloud Backup

OPENTEXT RIGHTFAX 16.4

Systeemvereisten. Datum: Naam: Systeemvereisten versie 43 revisie 15 Status:

Installatiehandleiding. Facto minifmis

Van dvd naar webserver. Marcel Nijenhof 18 Juli

Handleiding. CardAccess Database Utility CA4000. Aanvullende informatie. Versie: 1.0

SecureLink Customer portal handleiding

Pagina 1. Installatiehandleiding vanaf versie 2017

Project plan. Erwin Hannaart Sander Tegelaar

Release notes UNIT4 Multivers Online 8.0

Handleiding Simon. 5 juni Schouw Informatisering B.V. Danny Cevaal. Versienummer 1.0

Beschrijving webmail Enterprise Hosting

Handleiding gebruik photo-gallery

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen

Private Cloud: Virtuele servers op basis van Windows Azure Pack

Handleiding Yuki Connect

Enterprise SSO Manager (E-SSOM) Security Model

Installatiehandleiding FWG 3.0/ Stand-alone / Netwerkversie. Nieuwe Installatie van FWG 3.0/ met een MS Access database

End-user handleiding voor Virtualmin Handleiding gemaakt door Digibel BVBA Copyright 2010 Digibel BVBA

CAROLA. Computerapplicatie voor Risicoberekeningen aan Ondergrondse Leidingen met Aardgas. Installatiehandleiding. Versie: 1.2 Datum: 1 juni 2013

Handleiding VANAD Comvio SBC Windows

Handleiding voor het inloggen op Terminal Server van GLT-PLUS

Inhoudsopgave. versie 0.8

Installatiehandleiding Privacy- en Verzendmodule DIS voor Windows, Mac OS en Linux

naar een SQL-server Rev 00

De ontwikkelaar heeft het recht om af te zien van verdere ontwikkeling en/of ondersteuning van dit pakket.

HANDLEIDING SERVICEDESKPORTAL

HANDLEIDING scoolfolio OUDER

Productbeschrijving Remote Backup

DE NIEUWE MANIER VAN LICENTIES BESTELLEN VIA CLICK2LICENSE

MINIMALE SYSTEEMEISEN. Vakware 6

Pervasive Server V9 Installatiegids

Databases - Inleiding

VERBINDING MAKEN EN INLOGGEN...

Zakelijk Veiligheidspakket van InterNLnet Handleiding voor de installatie van Windows besturingssystemen.

Handleiding aanmaak CSR

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

EasyAccess 2.0 Handleiding. Maak een Domain aan

Perceptive Process. Release Notes. Versie: 3.7.x

emaxx Systeem eisen ManagementPortaal voor de ZakenMagazijn database

Administrators. EasySecure International B.V. +31(0) Support.EasySecure.nl. v

Gebruikershandleiding

Handleiding SteamOS op VirtualBox

De ontwikkelaar heeft het recht om af te zien van verdere ontwikkeling en/of ondersteuning van dit pakket.

Software Design Document

Werkinstructie. Technisch Beheer. uitvoeren MAP scan. voor. Datum: 15 oktober Versie: 1.0

Easyhosting Handleiding SSL Certificaat installeren in DirectAdmin

Globale kennismaking

SenBox Handleiding. Versie: juli

Producten toevoegen. Inleiding

TECHNISCH ONTWERP Windows Server Door: Tomas, Zubin, Sammy en Vincent

FO Gebruikersadministratie

Handleiding aanmaak CSR

GEBRUIKERSHANDLEIDING DOCENTEN

Taxis Pitane SQL beheerder. Censys BV - Eindhoven

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen:

5/5 Red Carpet. 5/5.1 Inleiding

Handleiding Decentrale Validatiemodule istandaarden

1 Inleiding. 3 Handmatig... invoeren zaken basis 4 Verwerken... zaken 5 Afhandelen... van zaken. 7 Uitgebreidere... zaak opties

INSTALLATIE NIS UPDATE 2014-Q Q4-01

Gebruik Self-service applicatie

Installatiehandleiding Business Assistent

Gebruikershandleiding. StUF Testplatform Versie 1.3.0

INSTALLATIE NIS UPDATE Q Q

OSCOMMERCE INSTALLATIE

Linux Server Installatie

2.ouderbeleid.3.plaatsingsprocedure werk admini Pagina 1 van 14

Oracle Rolling Upgrades met SharePlex Systems Consultant Quest Software Nederland 9/

Beheer van databanken

Nieuw in Mamut Business Software en Mamut Online

Starten met Watermelon Messenger

Pervasive PSQL Product activeren. Hoofdstuk 1 Pervasive PSQL product activeren. Online activeren. Remote activeren

15 July Betaalopdrachten web applicatie gebruikers handleiding

Handleiding Verkoopmodule Verkoper WOSI

KPN Server Back-up Online

Handleiding Back-up Online voor Servers Versie maart 2016

Deel 5: Ontleding van een thema en subtheming. 20. YML-bestanden en subtheming

Ten opzichte van de vorige versie zijn er een aantal functionaliteiten verbeterd, ook zijn er een aantal functionaliteiten toegevoegd:

Application interface. service. Application function / interaction

STARTGIDS AUTODESK ABONNEMENTEN

Arjen Glas Stage: Viaict. Opdracht virtualisatie I44

Perceptive Process. Release Notes. Version: 3.5.x

IBIS-TRAD Handleiding installatie IBIS-TRAD databases (MS-SQL)

Handleiding voor gebruikers

Dit document beschrijft de hardware eisen voor het gebruik van WBI software.

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

CareConnect Fin Pre-requirements

Handleiding voor Zotero versie 2.0

Transcriptie:

Technisch Ontwerp MAATSCHAPPELIJKE DIENSTVERLENING VERREKENEN IN DE BLOCKCHAIN VOOR DE BELASTINGDIENST Tim de Kruijf Tim Hendriksen Mike Geenacker Arthur Scheps Bas Polman Hogeschool van Arnhem en Nijmegen 14-06-2017 1

Inhoudsopgave 1 INLEIDING... 3 2 ARCHITECTUUR... 4 2.1 SOFTWARE... 4 2.2 HARDWARE... 6 3 PHYSICAL DATA MODEL... 8 4 HIGH-LEVEL COMPONENTEN... 9 4.1 DATA DATABASE... 9 4.2 TRANSACTIE DATABASE... 10 4.3 COMMAND API... 12 4.4 FRONT-END... 12 4.5 TAKENSYSTEEM... 12 4.6 PERMISSIES... 13 4.7 STREAMS... 13 4.8 APPLICATIE... 14 5 SCHERMONTWERPEN... 16 6 BIJLAGEN... 19 6.1 CDM... 20 Technisch Ontwerp SocialCoin 2

1 Inleiding De Overheid kampt met grote groepen mensen waarvan de schulden oninbaar zijn. Het gaat hierbij vaak om de Belastingdienst, CJIB of DUO. De Overheid kan deze mensen de mogelijkheid bieden om deze schulden te vereffenen door deze mensen sociaalmaatschappelijk relevant activiteiten te laten verrichten. Deze activiteiten worden in samenspraak met de gemeente uitgevoerd. De gemeente bepaalt de maatschappelijke waarde van deze activiteiten. Op basis van deze waarde wordt de schuld deels of geheel vereffent. Dit document gaat dieper in op de architectuur van de software. Er zal worden beschreven in welke omgeving het systeem en wat de structuur van het systeem is. Dit zal verduidelijkt worden aan de hand van een Architectural Overview, een Physical Data Model (PDM). Normaal gesproken zal in een Technisch Ontwerp ook een gedetailleerd UI-design opgenomen worden omdat de focus van de te ontwikkelen applicatie niet bij de front end ligt. Er zal dus minimale aandacht aan het uiterlijk van de applicatie worden besteed. Dit document heeft als doel om voor zowel het ontwikkelteam als De Belastingdienst duidelijk te maken hoe het systeem in elkaar zit en het zijn processen afhandelt. Technisch Ontwerp SocialCoin 3

2 Architectuur In dit hoofdstuk is genoteerd welke systemen benodigd zijn en de softwarepakketten. 2.1 Software We maken gebruik van Docker om MultiChain te installeren, de systemen waarvan men gebruik kan maken voor Docker zijn te zien in de platformmatrix hieronder. In de matrix kijken we naar Docker CE x86_64 en EE, de community en Enterprise versies, en kunnen we zien welke operatie systemen welke versie kan draaien. Waar de community versie gratis is, moet betaald worden om van de Enterprise versie gebruik te mogen maken. De Enterprise versie biedt meer mogelijkheden dan de community editie zoals hieronder te zien in de matrix. Technisch Ontwerp SocialCoin 4

De Community en Enterprise hebben vastgelegde momenten voor het releasen van updates. Hieronder is te zien in welke maanden beide edities updates releasen. Technisch Ontwerp SocialCoin 5

2.2 Hardware Om MultiChain op te zetten gaan we in onze situatie een Docker instantie draaien. Deze Docker instantie zal in dit geval moeten draaien op een server bij De Belastingdienst (Docker, 2017). Docker CE draait niet op Windows Servers, wel op Azure en Amazon Web Services. Docker EE draait wel op Windows Servers. De minimale eisen van Docker zijn dat de desbetreffende computer/server Hyper-V moet ondersteunen en netwerk toegang hebben, 4GB RAM, 3GB schijfruimte en 64bit moet zijn. Ook moet er bij alle deelnemende gemeenten een server staan die verbonden is met het netwerk. Deze hebben dezelfde eisen als de server die bij De Belastingdienst staat. Andere eisen zijn dat de gebruikers toegang hebben tot een webbrowser om taken aan te maken, werk te bekijken enzovoorts. Figuur 1 Architectuurontwerp Hieronder volgen de Docker systeemvereisten: Voor Linux systemen: 64-bit, ondersteunt Ubuntu 12.04+, CentOS 6.2+, Debian 7+, Fedora 15+ Voor Windows systemen: 64-bit, ondersteunt Windows 10 Andere sytemen: Microsoft Azure, Amazon Web Services Hieronder volgen de MultiChain hardware-en systeemvereisten: Voor Linux systemen: 64-bit, ondersteunt Ubuntu 12.04+, CentOS 6.2+, Debian 7+, Fedora 15+, RHEL 6.2+. Voor Windows systemen: 64-bit, supports Windows 7, 8, 10, Server 2008 or later. 512 MB aan RAM 1 GB aan schijfruimte Wrappers voor MultiChain API: Ruby, Python, PHP, Javascript, Java, C# (MultiChain, 2017) Technisch Ontwerp SocialCoin 6

In het onderstaande figuur is het deployment diagram weergegeven: Figuur 2: Deployment Diagram Technisch Ontwerp SocialCoin 7

3 Physical Data Model Binnen het hoofdstuk Physical Data Model is het datamodel naar aanleiding van het CDM, te vinden in bijlage 7.1 Figuur 3: Physical Data Model Technisch Ontwerp SocialCoin 8

4 High-level componenten Om een goed beeld te geven hoe ons systeem in elkaar zit, is het belangrijk om op hoog niveau een onderscheid te maken tussen de databases die gebruikt worden. Op het hoogste niveau bestaat de applicatie uit 4 onderdelen. 4.1 Data Database Dit is de database waar alle applicatie data wordt opgeslagen. Dit is in essentie een key/value pair database. Adressen worden gebruikt om data in de adressen op te halen, deze data kan van alles zijn van JSON data voor onze objecten tot user objecten en permissielijsten. Ook wordt de assets onder een adres opgeslagen. Deze database zal vanaf nu gewoon de database genoemd worden. Verandering in deze database worden gefaciliteerd door de transactie database. Het is dus niet gewenst om veranderingen direct in deze database te maken. Key Value WAL324IGJF {Type: Wallet, asset: socialcoin, balance: 100, owner: USR892GN5} STRF9849JD {Type: Stream, naam: Rozen Snoeien, streamitems: 2, publishers: 2, open: false, Creator: USR892GN5} STIFGR8349 {Type: Streamitem, publisher: USR892GN5, Data: Rozen snoeien, Added: 2017-06-13 13:46:25 GMT } USR892GN5 {Type: User, name: Label: Gemeentenode, Permissions: PRMTGRFOT} PRMTGRFOT {Type: Permission, ForAddress: USR892GN5, PermissionType: Send } Key Value WAL324IGJF {Type: Wallet, asset: socialcoin, balance: 90, owner: USR892GN5} WALFHT561 {Type: Wallet, asset: socialcoin, balance: 10, owner: USR892GN5} STRF9849JD {Type: Stream, naam: Rozen Snoeien, streamitems: 2, publishers: 2, open: false, Creator: USR892GN5} STIFGR8349 {Type: Streamitem, publisher: USR892GN5, Data: Rozen snoeien, Added: 2017-06-13 13:46:25 GMT } USR892GN5 {Type: User, name: Label: Gemeentenode, Permissions: PRMTGRFOT} PRMTGRFOT {Type: Permission, ForAddress: USR892GN5, PermissionType: Send } Transactie(tx ) Database Technisch Ontwerp SocialCoin 9

4.2 Transactie Database De transactie database, vanaf nu TxDatabase, wordt gebruikt om alle verandering te recorden die op de database gedaan worden. Als je een asset vanaf adres 1x naar adres 2x wil verplaatsen moet dit met een transactie gedaan worden. Transactie 1 txid 3301 from 3300 vout WAL324IGJF data Asset : SocialCoin, Amount : 10 Transactie 2 txid 3302 from 3301 vout WALFHT561 data Asset : SocialCoin, Amount : 10 Al deze transacties worden dan in een Block samengevoegd en gevalideerd door de validators op het netwerk. Block 4123 Transacti e 1 Transacti e txid 3305 txid 3306 from 1337 from 3305 vout WALAQW159 vout WAL324IGJF data Asset : SocialCoin, Amount : 12 Block 4122 Transacti e 1 Transacti e 2 data Asset : SocialCoin, Amount : 12 txid 3303 txid 3304 from 3302 from 3303 vout WALFHT561 vout WAL324IGJF data Asset : SocialCoin, Amount : 5 data Asset : SocialCoin, Amount : 5 2 Block 4121 Transactie 1 Transactie 2 txid 3301 txid 3302 from 3300 from 3301 vout WAL324IGJF vout WALFHT561 data Asset : SocialCoin, Amount : 10 data Asset : SocialCoin, Amount : 10 Technisch Ontwerp SocialCoin 10

Figuur 4: Transactiedatabase Technisch Ontwerp SocialCoin 11

4.3 Command API Dit is het aanspreekpunt voor de eerdere TxDatabase. Hier kunnen via RPC calls commando's worden doorgevoerd naar de TxDatabase die er vervolgens transacties van maakt en de verandering opslaat in de database. De 3 voorgaande delen worden samengevoegd in 1 pakket. Dit noemen we een MultiChain Server 4.4 Front-End Dit is een NodeJS server die op dezelfde fysieke server leeft als de 3 eerdere onderdelen. De server maakt RPC calls naar de Command API en haalt hier ook de resultaten vandaan om ze vervolgens te serveren met de relevante html/css. Deze 4 onderdelen vormen samen een MultiChain node die bij een stakeholder kan worden neergezet (gemeente). 4.5 Takensysteem Centraal binnen ons systeem is de mogelijkheid om met taken te werken. Onder taken zien wij objecten die door gemeentes worden aangemaakt en aan een schuldhebbende wordt gekoppeld. Deze taak wordt vervolgens gedaan en hiervan wordt de status aangepast. Als de taak compleet is wordt hier de desbetreffende beloning door de gemeente overgemaakt naar de wallet van de schuldhebbende. Omdat we te maken hebben met een append-only database kunnen we niet de documenten van de taken rechtstreeks aanpassen, daarom hebben we er voor gekozen om per taak een stream aan te maken en hierin een taakgeschiedenis systeem aan te maken, waar iedere nieuwe item een verandering voor stelt. Taak Item Items inhoud Datum Buurtfeest Arnhem Buurtfeest Arnhem Buurtfeest Arnhem Buurtfeest Arnhem 4 {"beschrijving":"als maar meer VEGEN!""voortgang":"20"} 2017-06-13 13:04:03 GMT 3 {"beschrijving":"meer VEGEN!"} 2017-06-13 12:33:17 GMT 2 {"status":"toegewezen"} 2017-06-13 11:39:44 GMT 1 {"schuldhebbende":"1t4ip6sfhjhcbdrcwkecocq ZZWKUpcZTM4KPH4, "beschrijving":"vegen!", "beloning":"10","looptijd":"2","status":"open","voo rtgang":"0"} 2017-06-13 11:39:44 GMT Technisch Ontwerp SocialCoin 12

4.6 Permissies Ieder user adres heeft permissies binnen de blockchain, deze permissies zijn: - Connect Permissie om te kunnen verbinden met andere nodes in de blockchain en de inhoud van de blockchain te kunnen zien. - Send Assets kunnen sturen binnen de blockchain. In principe de mogelijk om de input (from) van een transactie te kunnen ondertekenen. - Receive "Dingen" kunnen ontvangen binnen de blockchain. In principe de mogelijkheid om in een output(vout) van een transactie genoemd te kunnen worden. - Issue De input kunnen ondertekenen van transacties die nieuwe assets aanmaken. - Create De input kunnen ondertekenen van transacties die nieuwe streams aanmaken. - Mine De mogelijkheid om transacties te kunnen valideren. - Activate Om connect, send en receive permissies aan andere adressen toe te kennen. In principe de mogelijkheid om inputs te ondertekenen van transacties die deze permissies toekennen. - Admin Om alle permissies aan andere adressen toe te kennen, inclusief issue, mine en active. In principe de mogelijkheid om inputs te ondertekenen van transacties die deze permissies toekennen. Wanneer je permissies zonder entity meegeeft dan worden dit global permissies. Dit zijn permissies die het open deel van de blockchain van toepassing zijn. Wat niet onder het open deel valt zijn de streams. 4.7 Streams Streams is een concept binnen MultiChain dat een deel van de database afschermt en hierop speciale permissies toe past. Zo zou je eens stream kunnen aanmaken waar alleen een zekere user op mag schrijven. Om deze permissie te geven moet je de permissie prefixen met de naam van de stream. Bijvoorbeeld: send > streamnaam.send. In ons systeem geldt 1 taal = 1 stream. Technisch Ontwerp SocialCoin 13

4.8 Applicatie Om de communicatie tussen de applicatie en de MultiChain node te modelleren hebben wij gebruik gemaakt van een aantal SSD s. Deze SSD s staan met meerderen weergegeven binnen één afbeelding. Deze SSD s reflecteren niet exact de structuur van de applicatie, maar proberen de communicatie tussen de NodeJS- en de MultiChain Server in kaart te brengen De actor Gemeente geeft aan een taak te willen maken. De NodeJS applicatie voert vervolgens de volgende acties uit: aanmaken stream, subscriben op de stream, permissies zetten, en een item aanmaken op de stream. Dit item wordt vervolgens teruggegeven. De actor Schuldhebbende geeft aan een taak te willen bekijken. De NodeJS applicatie vraagt de gegevens op van de taak, waarop de MultiChain Server deze gegevens terugstuurt naar de Schuldhebbende De actor Gemeente geeft aan een taak te willen wijzigen. De NodeJS applicatie maakt een nieuw item aan op de stream die deze veranderingen weergeeft. Technisch Ontwerp SocialCoin 14

De actor Gemeente geeft aan een nieuw adres aan te willen maken. De NodeJS applicatie vraagt een nieuw adres op van de MultiChain Server en geeft deze vervolgens aan de Gemeente. De actor Gemeente of de actor Schuldhebbende geeft aan in te willen loggen. Beide geven hun adres op, waarop de MultiChain Server controleert of dat adres bestaat. De localstorage wordt geïnstantieerd en de Gemeente/Schuldhebbende is ingelogd. Technisch Ontwerp SocialCoin 15

5 Schermontwerpen Binnen dit hoofdstuk worden de schermontwerpen van de applicatie weergegeven: Bovenstaande afbeelding geeft de structuur van de website weer zoals die is ontworpen. Men begint op de hoofdpagina, SocialChain Home, die in de afbeelding rechts weergegeven staat. Op de hoofdpagina is de keuze tussen gemeente en schuldhebbende te zien. Ook staan er onder en rechts op de pagina twee blokken weergegeven die, respectievelijk, de dichtstbijzijnde taken en het nieuws weergegeven. Vanaf de hoofdpagina kan de gebruiker kiezen bij welke partij hij hoort: gemeente of schuldhebbende. Is hij van de gemeente, dan moet hij inloggen met zijn gegevens om te verifiëren dat hij bij de gemeente hoort, en wordt hij doorverwezen naar de gemeentepagina, die op de volgende pagina te zien is. Technisch Ontwerp SocialCoin 16

Op deze pagina kan de gemeentemedewerker kiezen uit vier opties: Taak aanmaken, Taak bekijken, wallet aanmaken en wallets bekijken. Ondanks dat dit verkeerd staat aangegeven in de afbeelding, is dit wel hoe de pagina is ontworpen. Bij het aanmaken en bekijken van de wallets wordt de medewerker doorverwezen naar een overzichtspagina die simpelweg een lijst met wallets toont. Elke wallet is een clickable link die de medewerker naar een detailpagina stuurt. Hierop wordt het saldo en de permissies van de wallet weergegeven. Bij het aanmaken van een wallet wordt de medewerker doorverwezen naar een aanmaakpagina. Hier kan de medewerker op een knop klikken om automatisch een wallet te genereren. Wanneer dat gedaan wordt, wordt het adres van de wallet weergegeven op het scherm en is de wallet aangemaakt. Wanneer de medewerker alle taken wilt bekijken zal hij, net zoals bij wallets bekijken, doorverwezen worden naar een overzicht pagina waar alle taken in een lijst worden weergegeven. Ook hier zijn de taken een clickable link die naar een detailpagina leidt. Per taak worden de naam, degene die de taak heeft aangemaakt, het aantal gebeurtenissen en het aantal personen die een gebeurtenis hebben geplaatst, weergegeven. Per gebeurtenis staat: degene die het geplaatst heeft, de beschrijving van de taak, de datum van toevoeging en de key weergegeven. Bij het aanmaken van een taak wordt de medewerker doorverwezen naar een aanmaakpagina met invulvelden waar de eerder opgenoemde gegevens door de gemeentemedewerker worden ingevuld. De taak wordt vervolgens aangemaakt. Technisch Ontwerp SocialCoin 17

Wanneer een gebruiker aangeeft dat hij een schuldhebbende is wordt hij verzocht om het adres van zijn wallet in te vullen om daarmee in te loggen. Hij wordt dan doorverwezen naar de hoofdpagina voor schuldhebbende. Hier kan hij kiezen uit twee opties: het bekijken van zijn saldo en het bekijken van zijn taken. Wanneer hij zijn taken wilt bekijken krijgt hij, net zoals de gemeentemedewerker, een overzicht van taken te zien die in een lijst onder elkaar staan weergegeven waarbij elke taak een clickable link is die doorverwijst naar een detailpagina. Het enige verschil is dat de schuldhebbende alleen taken krijgt te zien waar hij aan is gekoppeld. Wanneer een schuldhebbende kiest om zijn saldo te bekijken, wordt hij doorverwezen naar een pagina waar zijn saldo te zien is. Ook staat er op die pagina in procenten in hoeverre hij zijn schuld heeft afgelost. Technisch Ontwerp SocialCoin 18

6 Bibliografie Docker. (2017). Docker. Opgehaald van Docker: docker.com MultiChain. (2017). JSON-RPC-API. Opgehaald van MultiChain: http://www.multichain.com/developers/json-rpc-api/ Technisch Ontwerp SocialCoin 19

7 Bijlagen 7.1 PDM Het PDM is in de map bijlagen onder de naam PDM.png bijgevoegd. Technisch Ontwerp SocialCoin 20