Hoe de Blockchain te minen in Java PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Hoe de Blockchain in Java te minen

Hoe de Blockchain te minen in Java PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Laten we beginnen met het maken van een nieuwe service voor gebruikers en mijnwerkers. Het zal een kopie zijn van de andere twee services voor de blockchain en knooppunten, maar we zullen er een nieuwe controller, service en modellen in stoppen. Omdat mijnwerkers gebruikers zijn (dat wil zeggen dat ze een adres nodig hebben om in transacties op te nemen), beginnen we met gebruikers. Laten we een eindpunt maken om informatie over een gebruiker toe te voegen, te vermelden en op te halen. Ik ga basisauthenticatie gebruiken voor de list en get eindpunten. De add eindpunt zal open zijn, omdat iedereen een gebruiker zou moeten kunnen aanmaken.

Hoewel ik een bepaald niveau van authenticatie wil aantonen, wil ik niet verzanden in de details van een echt authenticatiesysteem. Om de controle te simuleren, moeten de gebruikersnaam en het wachtwoord hetzelfde zijn en moet de speciale gebruiker voor het weergeven van alle gebruikers de naam admin hebben. Ik zal ook onmiddellijk de admin-gebruiker maken als deze bij het opstarten niet bestaat.

Dit is wat ik heb voor een controller:

De dienst is vrij eenvoudig:

Gebruik de application.yaml om de parameters voor MongoDB in te stellen:

Nu kunt u de docker-compose.yaml -bestand om MongoDB op te starten en de nieuwe eindpunten te testen. U zou gebruikers aan het systeem moeten kunnen toevoegen en vermelden. Vergeet niet om basisauthenticatie te gebruiken. Het is belangrijk om te onthouden dat de basisauthenticatie de naam van de gebruiker gebruikt, terwijl het eindpunt de ID gebruikt voor efficiรซnter zoeken.

Wat heeft een gebruiker nog meer naast een ID en naam? In een cryptocurrency-systeem denken we dat een gebruiker een portemonnee heeft. De portemonnee bestaat uit een adres en een privรฉ/openbaar sleutelpaar. In ons systeem gaan we deze samenvoegen, zodat een gebruiker slechts รฉรฉn โ€˜portemonneeโ€™ kan hebben (d.w.z. een adres en een privรฉ/openbaar sleutelpaar). Daarmee kan de gebruiker transacties aanmaken. We kunnen de ID niet als adres gebruiken omdat elke gebruiker aan een knooppunt is gekoppeld en de ID niet uniek is voor alle knooppunten. We gebruiken dus een UUID voor het adres. Dan is het gewoon een kwestie van het creรซren van het private/publieke sleutelpaar. Hier is de bijgewerkte versie UserService.addUser:

Omdat we het nooit aan het licht willen brengen privateKey, zullen we deze regel toevoegen aan elke keten in de UserController dat zou een gebruiker of een lijst met gebruikers retourneren:

.doOnNext(u -> u.setPrivateKey(null));

Nu zijn we klaar om een โ€‹โ€‹transactie namens een gebruiker aan te maken.

We hebben een rudimentair eindpunt voor het maken van transacties in de blockchain-service, dus we gaan dat verwijderen. We behouden het eindpunt voor de toegevoegde transactie en kunnen dat oproepen vanuit ons nieuwe eindpunt in de gebruikersservice. Het nieuwe eindpunt in de controller ziet er als volgt uit:

De nieuwe werkwijze in de UserService klasse ziet er als volgt uit:

U kunt zien dat we de privรฉsleutel die in de database is gecodeerd, gebruiken om het invoercontract te ondertekenen. Net zoals we de withHash methode hebben we de withSignature methode omdat de handtekening moet worden berekend nadat de gegevens zijn toegepast. We nemen niet de moeite om het/de uitvoeradres(sen) te controleren, omdat er niet รฉรฉn enkele bron van waarheid voor adressen bestaat. Er zijn enkele specifieke formaten voor adressen die door sommige cryptocurrencies worden gebruikt om te voorkomen dat munten worden weggegeven aan niet-bestaande adressen, maar er is geen manier om ervoor te zorgen dat u uw munten niet naar de spreekwoordelijke bitbucket stuurt.

Bron: https://betterprogramming.pub/how-to-mine-the-blockchain-in-java-9647de36a8fc?source=rssโ€”โ€”-8โ€”โ€”โ€”โ€”โ€”โ€“cryptocurrency

Tijdstempel:

Meer van Medium