April 15, 2019

Stateful-Clientbibliotheken: Teil 2

Stateful-Clientbibliotheken: Teil 2

Im vorherigen Beitrag haben wir einige der wichtigsten Änderungen in den Client-Bibliotheken hervorgehoben und dargestellt, wie sie die Entwicklung auf IOTA vereinfachen. In diesem Beitrag werden wir uns das Konzept der bedingten Einzahlungsadressen (CDAs) näher ansehen.

CDAs sind spezielle Adressen, mit denen du die Bedingungen angeben kannst, für die sie verwendbar bleiben. Solange die von dir angegebenen Bedingungen gelten, können die CDAs für Abhebungen und Einzahlungen verwendet werden.

Die Hauptanwendung für CDAs besteht darin, die Wiederverwendung von Adressen zu vermeiden. Wenn du IOTAs von einer Partei anforderst, erstellst du eine CDA, die dann für einen bestimmten Zeitraum aktiv bleibt und auch die genaue Menge an IOTAs angeben kann. Auf diese Weise teilst du dem Absender die Absicht mit, der dann beurteilt, ob eine Einzahlung vorzunehmen ist. Ein vereinfachter Ablauf ist:

  1. Du generierst eine CDA.
  2. Beim Erstellen der CDA legst du Bedingungen wie z.b. ein Zeitlimit fest - wie lange der CDA gültig bleibt und wie lange darauf IOTAs hinterlegt werden können. Oder du legst einen Betrag fest, wie viele IOTAs du von dem Sender auf dieser Adresse erwartest.
  3. Du teilst die CDA mit dem Betrag über ein Medium deiner Wahl und serialisiert sie als Objekt deiner Wahl, z.B. als QR-Code, protocol buffer oder Magnetlink.
  4. Der Einzahler sendet entweder Token an die in der CDA angegebene Adresse oder fordert eine neue CDA an, wenn die CDA beispielsweise bereits abgelaufen ist.

CDAs sind einfache, beschreibende Objekte, und du kannst sie in jedes Format serialisieren. So sieht beispielsweise ein CDA-Magnetlink aus:

iota://GODULTSVAVRXBJFKTAEAJTULFKJUHIMKKVBCS9TJCNBWEVWFHAAVKVKLABMYTSK9EKWPMZJUVHAKGULLDAMABAGQIZ/?timeout_at=1554372484&expected_amount=1000

Die Bibliotheken können den Magnet-Link analysieren und das Senden an einen Link, den du erhälst, kann ziemlich einfach sein:

account.sendToCDA({
  magnetLink: magnetLink
})
  .then()
  .catch();

Probiere die bedingte Einzahlung aus

Um dieses Konzept zu veranschaulichen, hat Luca Moser eine Webanwendung entwickelt, die als Web-Wallet fungiert (Hinweis - dies läuft unter Verwendung von Test-Tokens auf Devnet):

  1. Geh zur Sigma Wallet-Website
  2. Erstelle ein Konto.
  3. Generiere im Web-Wallet eine Adresse, deren Betrag auf 1000 eingestellt ist.
  4. Drücke den “COPY RAW ADDRESS” Knopf und verwenden ihn, um Geld vom Devnet faucet zu erhalten. Das Geld sollte in Kürze verfügbar sein, wie du im Abschnitt 'Balance' sehen kannst.
  5. Generiere eine neue Adresse in der Web-Wallet und drücke “COPY MAGNET LINK”.
  6. Du kannst diesen Magnet-Link in das Adressfeld des Abschnitts 'Senden' der Brieftasche einfügen und einen bestimmten Betrag an dich selber senden.

Wenn du die Menge an IOTAs beim Generieren der CDA angegeben hast, werden die IOTAs in deinen Guthaben verfügbar sein, sobald sie angekommen sind. Andernfalls werden sie bis zum Ablauf der CDA gesperrt, in diesem Fall also nach 30 Minuten.

Spendenadressen und andere Szenarien

Ein Szenario, das von CDAs ermöglicht wird, ist die Implementierung von Spendenadressen zu festen Zeiten. Du zeigst eine CDA auf deiner Website an, zum Beispiel als QR-Code. Jedes Mal, wenn die aktuelle CDA abläuft, sagen wir in den letzten 48 Stunden der Gültigkeit der CDA, wird eine neue generiert und zeigt einen neuen QR-Code an. Damit bleibt ausreichend Zeit für die bereits eingehenden Transaktionen, und es wird sichergestellt, dass alle neuen Spenden von der neuen CDA abgeholt werden.

In diesem Spenden-PoC-Repository kannst du ein Beispiel für diesen in Go implementierten Ansatz sehen.

Weitere Informationen zu den Client-Bibliotheken findest du in unserer Dokumentation. Oder hole dir die Bibliotheken einfach aus ihren jeweiligen Repositories:

Danke!


Quelle: https://blog.iota.org/stateful-client-libraries-part-2-d15752922780