Holochain Dev Pulse 20 - Tillid og datavalidering

Kryptografi og fangstkompleksiteter

Holochain Dev Pulse 20

Resumé

Denne uge har været en forfriskende mulighed for at gøre en masse 'usynlig' arbejde - udforske arkitektur, kortlægge og forstå kompleksiteter, vi har afsløret, og så videre. Vi har også fået det godt med vores nye udgivelsesproces og glæder os med vores nye DevOps-ingeniør.

Højdepunkter

  1. At fange kompleksitet og kortlægge de tilstødende muligheder
  2. API-funktion: Signaturverifikation og KeyStore-understøttelse på lavt niveau
  3. Holo Enablement: Live Instance Booting
  4. Udvikleroplevelse: Test af DNA-enheder med Rust HDK
  5. Breaking Change / API-funktion: CRUD-validering
  6. Udfordringer: Synkronisering af frigørelsesprocessen og DevOps Support
Holochain Dev Pulse 11. - 18. marts 2019

detaljer

1. Fangst af kompleksitet og kortlægning af de tilstødende muligheder

KISS-princippet - uanset hvad du siger disse S's stand for - er axiomatisk for udviklere. Enkle koncepter og simpel kode gør det nemmere at styre din codebase. Imidlertid har hvert projekt en målestok for ureducerbar kompleksitet, og det viser sig, at det at bygge en ny distribueret stak til Internettet har en hel del af det.

Vi tager design-signaler fra levende systemer, hvor mange enheder anvender enkle regler til at styre deres interaktion. Disse basisregler resulterer i overraskende kompleksitet og fremkommer ofte endda fra komplekse systemer på lavere niveau. Denne kompleksitet er faktisk et aktiv for levende systemer - det er det, der giver dem mulighed for at tilpasse sig trusler, trives og føde den vidunderlige rigdom, vi ser rundt omkring os.

Meget af kompleksiteten i Holochains designrum bliver kun opdaget, mens vi går - når vi udforsker ting, der synes ligetil, udfolder de sig i weber med underproblemer. Det kan være vanskeligt at holde øje med alle sammenvævede stykker.

Vi har gjort en masse bag kulisserne arbejde i sidste uge og kortlagt al den kompleksitet, vi har afsløret indtil videre. Vi har produceret en masse arkitektoniske diagrammer og dokumenter undervejs. Det endelige resultat er dog ikke papirstykker - det er tillid. Vi ved, hvor vi er kommet fra, og vi ved, hvor vi skal hen videre. Hver bit af kompleksitet, når det forstås og nedskrevet, bliver en kendt ting.

Denne kortlægning, reflektion og udforskning giver et mere robust design. Det er godt at gå ind i denne fase lige nu.

2. API-funktion: Signaturverifikation og KeyStore-understøttelse på lavt niveau

Kryptografi er kernen i Holochains design; det er det, der giver deltagerne mulighed for at stole på gyldigheden af ​​de data, de ser. Kryptografi med offentlig nøgle - specifikt underskrifter - er en af ​​de vigtigste primitiver for opbygning af iboende tillid til data.

Holochain vedhæfter en overskrift med en signatur til hvert stykke data på niveauet 'underbevidsthed'. Dog har mange brugssager også brug for underskrifter i appen.

Digital verifikation

Den næste alpha-frigivelse vil se tilføjelsen af ​​funktionen `verificere_signatur ()` som supplement til `tegn () '. Dette bringer os tættere på funktionsparitet med Holochain-Proto. Det er ret spændende, fordi vigtige apps som DPKI og HoloFuel er meget afhængige af data, der er underskrevet af to eller flere nøgler. Hvis du designer en app, der kræver undertegnede transaktioner eller tredjepartsgarantier - såsom kontrakter, valutaer og identitetsverifikation - er disse to funktioner afgørende for dig.

Når en person bruger flere Holochain-apps, genererer de en masse nøgler, der repræsenterer og kontrollerer deres identitet på de netværk, de tilhører. DPKI er en kerne-app designet til at styre disse nøgler. Nogle gange er det nødvendigt at underskrive data med nøgler fra andre apps. Vi bygger i øjeblikket understøttelse på lavt niveau til en 'keystore', der indeholder alle brugers nøgler på en enhed og gør dem tilgængelige for de relevante apps. Bemærk: Denne funktion er i 0.0.8-alfa.

3. Holo Enablement: Live Instance Booting

Når vi øger vores Holo Closed Alpha-test, fortsætter Holo-kravene med at skubbe Holochain-funktioner. Der er en lederadministrator-API-slutpunkt, 'admin / instans / tilføj', som giver dig mulighed for at oprette en forekomst af et specifikt DNA. Holo Hosting Interceptor, der spinder nye tilfælde på hosting-enheder på vegne af webbrugere, bruger dette slutpunkt til at udføre sit arbejde. Indtil videre havde det kun skrevet poster til konfigurationsfilen, hvilket betød, at du var nødt til at genstarte lederen for at ændringerne skulle træde i kraft. Nu oprettes tilfælde straks. Bemærk: Dette betyder, at de er instantieret til en bruger, ikke faktisk startet.

4. Udvikleroplevelse: Test af DNA-enheder med Rust HDK

Her er et lidt kendt faktum - du kan skrive enhedstests for din zomekode, kompilere dit DNA i testtilstand og køre testene uden at skyde den fulde udviklingsleder op. Uden denne pull-anmodning, ville du selv have været nødt til at tilføje tomme funktionsdefinitioner for alle HDK API-funktioner for ikke at få "uopløste referencer", når du prøver at køre "last test".

Denne ændring tilføjer stubber for hver HDK API-funktion, så du kan skrive enhedstest for dine zome-funktioner, der afhænger af API. Det er temmelig begrænset; dine test bør ikke forvente reelle svar fra Holochain API-opkald, som f.eks. 'commit_entry ()' og 'get_entry ()'. Returneringsværdier vil altid være en succes med en tom nyttelast!

5. Breaking Change / API-funktion: CRUD-validering

Du kan nu specificere valideringsregler til fjernelse eller opdatering af en post. Dette kommer med en ødelæggende ændring: valideringsfunktioner modtager kun et argument, et enum kaldet `hdk :: EntryValidation `, når denne funktion lander med 0.0.8-alfa. Den generiske parameter 'T' repræsenterer strukturen for dine indgangstyper. Enum leveres i tre varianter:

  • 'Opret', som indeholder den nye post.
  • 'Ændr', der indeholder de gamle og nye poster, såvel som den gamle indgangs overskrift.
  • 'Slet', der indeholder den gamle post og dens overskrift.

Alle tre af disse indeholder også valideringspakken. Vi leverer mere dokumentation, når denne funktion er tilgængelig.

6. Udfordringer: Synkronisering af frigivelsesprocessen og DevOps Support

Vi er stadig i færd med at tilpasse os til vores nye udgivelsesproces, og vi er taknemmelige for din tålmodighed, når vi udarbejder kinks - erfaringer - følg udgivelsesskriptet til brevet og pas på de Windows-test mislykkes på frigør kandidat! Vores mål er at få den ugentlige Dev Pulses synkroniseret med ugentlige udgivelser.

Vi er også glade for at rapportere, at vi hyrede en DevOps Engineer i sidste uge, og han ramte jorden i gang. En af vores devs kommenterede, at han allerede har bevist sin værdi.

Han er et sus med at spore build-problemer, manglende eller ødelagte afhængigheder og CI-problemer. Han hjælper enormt med konstante udgivelser i høj kvalitet.
Kryptografi er kernen i Holochains design

Bygger du en app / platform på Holochain? Vi vil gerne høre fra dig!

Bygger du på Holochain? Vi vil meget gerne oprette forbindelse og høre mere om din app / platform. Vær venlig at tage et par øjeblikke på at udfylde denne undersøgelse! Vores mål er at liste alle projekter, der bygger på Holochain på vores hjemmeside.

Stabeloverløb: Udvid Holochain Knowledge Base

Hjælp os med at udvide Holochain-videnbasen om Stack Overflow!

Indsend dit Holochain-spørgsmål.
Indsend dit Holochain Rust-spørgsmål.

Kommer op:

1) 0.0.8-alpha Developer Preview Release

Opret forbindelse til udviklerfællesskabet:

  • Byg på Holochain: Developer Portal
  • Anvend: Vi leder efter en Rust Dev og en produktejer og frigørelseskoordinator!
  • Opret forbindelse på Twitter