How-To:Handle Deposits/nl

From Nxt Wiki
Jump to: navigation, search

Ontwikkelaars hebben inzicht gegeven in goede methodes om functionaliteit in je software op te nemen. Deze tip is van Come-from-Beyond.

1 Een manier om met stortingen om te gaan

  1. Genereer een string van 50+ karakters. Dit is je master passphrase. Hij moet uitzonderlijk sterk zijn. Laten we er in dit voorbeeld van uitgaan dat hij "geheim" is.
  2. Wanneer een gebruiker munten wil storten genereer je een uniek ID. Je kan een userID gebruiken als het niet noodzakelijk is voor elke storting een nieuw adres aan te maken.
  3. Gebruik "secret"+ID om een passphrase aan te maken voor het stortingsaccoount. Bijvoorbeeld "secret8475347836".
  4. Gebruik deze API call om een accountID aan te maken: http://localhost:7874/nxt?requestType=getAccountId&secretPhrase=secret8475347836. Dit geeft het accountID terug. Geef deze ID aan de gebruiker.
  5. Controleer periodiek of het adres inkomende transacties heeft: gebruik http://localhost:7874/nxt?requestType=getAccountTransactionIds&account=6975576163363041725&timestamp=0
  6. Voor elke transactieID in de lijst kun je transactieinformatie verkrijgen: http://localhost:7874/nxt?requestType=getTransaction&transaction=83492836836338756
  7. Wanner je genoeg bevestigingen hebt (minstens 10), kun je het saldo van de gebruiker in je software aanpassen.

2 Een aantal belangrijke zaken

Blokken kunnen verweesd raken en transacties geannuleerd, dus let op de timestamp en de deadlinewaardes van een transactie. De timestamp wordt in secondes vanaf het genesisblok (24 november 2013 12:00:00 UTC) gerekend. De transactiedeadline wordt gemeten in minuten.

Een transactie verloopt wanneer timestamp + deadline * 60 < current time. Hij kan niet in een blok worden opgenomen met een timestamp groter dan timestamp (of the transaction) + deadline * 60. De huidige tijd kan verkregen worden met http://localhost:7874/nxt?requestType=getTime.

Om er zeker van te zijn dat je de transactie niet verliest moet je controleren of de gebruiker een lange deadline hanteert en niet probeert je te bedriegen door een timestamp te gebruiken die te ver in het verleden ligt.

Je moet ook, tot een transactie 720 bevestigingen heeft, of hij nog steeds bevestigd is. Zo niet (door blockchain reorg), verstuur dan de transactie nogmaals naar het netwerk met http://localhost:7874/nxt?requestType=broadcastTransaction&transactionBytes=f11234bd3a2fc19c2ba6b7c0d108deea9fcbafda5f544e4648c651ec4ed34ed2. Transactiebytes kunnen verkregen worden via http://localhost:7874/nxt?requestType=getTransactionBytes&transaction=83492836836338756.