Modul #5 Web 3.0 mit Waves

Marc Jansen
Web3 mit Waves Platform
12 min readJul 14, 2019

Modul #5 Tokenisierung und Smart Assets

5.1 Tokenisierung

5.2 Operationen mit Assets: Teil 1

5.3 Operationen mit Assets: Teil 2

5.4 Smart Assets, Smart Accounts und dezentrale Anwendungen (dApps)

5.5 Coupon-Bazaar’s digitale Assets

Was ist Tokenisierung?

The first thing we have to discuss is what, exactly, tokenization is. Broadly speaking, tokenization is the process of converting some form of asset into a token that can be moved, recorded, or stored on a blockchain system. That sounds more complex than it is. To put it simply, tokenization converts the value stored in some object — a physical object, like a painting, or an intangible object, like a carbon credit — into a token that can be manipulated along a blockchain system.

https://blockonomi.com/tokenization-blockchain

Wie wir sehen können, hat die Entwicklung des Geldes mehrere wichtige Meilensteine:

  • Tauschhandel vor Geld
  • Gold und Silber
  • Metallmünzen
  • Papiergeld oder Banknoten
  • Plastikkarten
  • Elektronisches Geld
  • Und schließlich Kryptowährungen und Token — das moderne Phänomen.

Token sind also nur eine effektivere und automatisierte digitale Formen von Assets.

Aufgrund des dezentralen Charakters ist der Betrieb mit Token vollautomatisch und kann nicht von einem einzelnen Dritten moderiert oder blockiert werden. Es macht die tokenisierten Systeme global und für jeden auf der Erde verfügbar. Unabhängig davon, ob es sich um ein Herkunftsland, eine politische Situation, eine Kultur, eine Religion oder eine wirtschaftliche Situation handelt.

Um einen Geldwert zu haben, muss jedes Krypto-Asset (Token) liquide sein. In Unternehmen, Wirtschaft oder Investitionen ist die Marktliquidität das Merkmal eines Marktes, mit dem eine Person oder Firma einen Vermögenswert einfach und schnell kaufen oder verkaufen kann, ohne eine drastische Änderung des Preises des Vermögenswertes zu verursachen.

Um einen Nutzwert zu haben, sollte jedes Token als notwendige Komponente von dApps oder Geschäftsprozessen konzipiert sein.

Sie können auch Tokens mit verschiedenen Strategien an Börsen handeln, indem Sie Orders zum Verkauf oder Kauf platzieren.

Waves DEX — ist eine dezentrale Börse für viele liquid tokenisierte Assets.

Genau wie alles in der Wirtschaft hat auch das Krypto-Asset einen Preis, der durch das Gleichgewicht zwischen Angebot und Nachfrage bestimmt wird. Je höher die Nachfrage, desto höher ist der Preis. (Hinweis: Dies funktioniert möglicherweise nicht mit Smart Assets, bei denen Sie einige Optionen, wie z.B. den Verkauf, durch die Anwendung eines Asset-Skript einschränken können).

Wir sind bereits mit WAVES vertraut — dem nativen Token des Waves-Blockchain-Netzes.

In jeder öffentlichen Blockchain ist ein natives Token sehr wichtig für die Funktionalität der Plattform:

  • Es macht jeden DDoS-Angriff teuer (wegen der Gebühren).
  • Es motiviert Netzwerkknoten/Blockproduzenten, das Netzwerk zu pflegen.
  • Es motiviert die Plattform-Mitwirkenden, die Infrastruktur zu verbessern.

In diesem Modul werden wir versuchen, unsere eigenen Token zu erstellen und einige Operationen mit Token zu automatisieren, indem wir sie intelligent machen.

Lassen Sie uns Token, die keine “nativen” Token für die öffentliche Kette sind, als “benutzerdefinierte Token” bezeichnen. Alle Token außer WAVES-Token sind benutzerdefinierte Token in der Waves Blockchain.

Es gibt viele Dinge, die wir mit benutzerdefinierten Token tun können:

  • Issue — bedeutet, dass wir in der Lage sind, unsere eigenen Token zu erstellen.
  • Re-Issue — bedeutet, dass wir in der Lage sind, mehr Token zu “drucken” (wenn es noch möglich ist — hängt von den Issue-Parametern ab) oder ihre Logik zu ändern, indem wir ein Asset-Skript anwenden.
  • Verbrennen — bedeutet, dass wir unter bestimmten Umständen in der Lage sind, einige Token aus dem Angebot zu löschen.
  • Übertragung
  • Austausch — wir sind in der Lage, Token an der DEX (dezentrale Börse) zu handeln.
  • Aufrufe — unsere dApps können auch mit benutzerdefinierten Token arbeiten.
  • Set Asset Script — der Prozess, um aus dem benutzerdefinierten Asset einen Smart Asset zu machen oder das Verhalten bestehender Smart Assets zu ändern.

Als nächstes lernen wir, wie man mit Token in unseren web3-Anwendungen arbeitet!

Jeder ist in der Lage, ein neues Token mit bestimmten Parametern zu erstellen. Um das in JavaScript zu tun, verwenden Sie einfach die Issue-Transaktionsmethode.

Dies ist der Token-Fall “Custom Currency”.

Schauen Sie sich den Parameter — Dezimalstellen an. Wenn Sie ihn auf 2 setzen, haben Sie das gleiche Bild wie bei EUR und CENT. 1 CENT ist ein 1/100 von 1 EUR und sein minimaler Token-Wert ist für Operationen wie Transfers, Tausch oder Brennen der verfügbar ist.

Wenn Sie den reissuable-Parameter auf false setzen, werden die angegebennen Token-Parameter nie geändert (reissued oder zu einem Smart Asset).

Dokumentation:

https://docs.wavesplatform.com/en/blockchain/token/custom-tokens.html

API:

https://wavesplatform.github.io/waves-transactions/globals.html#issue

P.S.: Im Waves Client UI kann jeder ein Token mit nur wenigen Klicks erzeugen:

(testnet Waves Client UI: https://testnet.wavesplatform.com/tokens)

Anmerkung: Bitte verwenden Sie das “Standardkonto” als Signaturanbieter für alle Herausforderungen in diesem Modul, um sie zu bestehen. Andernfalls werden die Gebühren unterschiedlich sein.

Versuchen Sie, Ihren eigenen Token auszugeben, indem Sie den JS-Code aus “Schritt 2” (mit 2 Dezimalstellen) verwenden. Finden Sie dieses Token im Explorer, die Darstellung sollte etwa wie folgt aussehen:

Hinweis: https://wavesexplorer.com/testnet/assets/{asset_id}

Benutzer sind in der Lage, unteilbare Token zu erstellen, indem sie die Dezimalstellen auf Null setzen.

In unserer Couponbasar dApp arbeiten wir mit unteilbaren digitalen Assets — “Coupons”.

Hinweis: Bitte verwenden Sie das “Standardkonto” als Signaturanbieter für alle Herausforderungen in diesem Modul, um sie zu bestehen. Andernfalls werden die Gebühren unterschiedlich sein.

Versuchen Sie, Ihren eigenen unteilbaren Token (Menge — 100) mit dem JS-Code aus “Schritt 6” (mit 0 Dezimalstellen) auszugeben. Suchen Sie im Explorer (Registerkarte Vermögenswerte) das Konto eines Emittenten. Das Ergebnis sieht in etwa wie folgt aus:

Re-Issue — bedeutet, dass wir in der Lage sind, mehr Token zu “drucken” (wenn es noch möglich ist — hängt von den Issue-Parametern ab) oder ihre Logik zu ändern, indem wir Asset-Skript anwenden.

Der Anbieter möchte möglicherweise etwas mehr Coupons für dieselbe Dienstleistung oder dasselbe Produkt auf dem Marktplatz verkaufen.

Hinweis: Bitte verwenden Sie das “Standardkonto” als Signaturanbieter für alle Herausforderungen in diesem Modul, um sie zu bestehen. Andernfalls werden die Gebühren unterschiedlich sein.

Versuchen Sie, Ihren eigenen unteilbaren Token (Menge — 100) mit dem JS-Code aus “Schritt 6” (mit 0 Dezimalstellen) auszugeben. Gib 10 weitere Token neu aus (“Schritt 8”).

Finden Sie den ReIssue-Tx im Explorer. Das Ergebnis sieht in etwa wie folgt aus:

Im Waves Client kann jeder ein Token von einer Adresse zur anderen übertragen.

Testnet Waves Client UI:

https://testnet.wavesplatform.com/wallet/portfolio

Lassen Sie uns das zuerst in der Benutzeroberfläche und später in JavaScript tun.

Finden Sie Ihren Coupon-Token im Portfolio und versuchen Sie, einen Token an eine andere Adresse zu senden.

Hinweis: Bitte verwenden Sie das “Standardkonto” als Signaturanbieter für alle Herausforderungen in diesem Modul, um sie zu bestehen. Andernfalls werden die Gebühren unterschiedlich sein.

Versuchen Sie, einen Gutschein-Token in der Benutzeroberfläche des Testnet-Clients zu senden. Suchen Sie anschließend die zugehörige Transaktion im Blockexplorer. Dies sollte in etwa wie folgt aussehen:

Hinweis: Bitte verwenden Sie das “Standardkonto” als Signaturanbieter für alle Herausforderungen in diesem Modul, um sie zu bestehen. Andernfalls werden die Gebühren unterschiedlich sein.

Welche api (@waves-transactions) Funktion wird für den Transfer von Assets verwendet?

Handel — wir sind in der Lage, Token an der DEX (dezentrale Börse) zu handeln.

Lassen Sie uns das manuell in der DEX des Testnets machen:

Der Emittent kann seine Token verkaufen, indem er eine Order aufgibt — “Verkaufen”. Andere Benutzer platzieren “Buy”-Order.

Somit haben wir ein Auftragsbuch für unseren Token.

API:

https://wavesplatform.github.io/waves-transactions/globals.html#exchange

Hinweis: Bitte verwenden Sie das “Standardkonto” als Signaturanbieter für alle Herausforderungen in diesem Modul, um sie zu bestehen. Andernfalls werden die Gebühren unterschiedlich sein.

Versuchen Sie, einige Coupon-Token im Testnetz DEX (von einem Konto zum anderen) umzutauschen:

Verwenden Sie das “Coupon / WAVES”-Paar.

Finden Sie die Exchange-Tx im Explorer und schauen sie nach, wie hoch die Höhe der Gebühr (fee) ist. Das Ergebnis sieht in etwa wie folgt aus:

Seite mit dem Waves Client UI-Link:

https://stepik.org/lesson/237607/step/2?unit=209936=209936

Hinweis: Bitte verwenden Sie das “Standardkonto” als Signaturanbieter für alle Herausforderungen in diesem Modul, um sie zu bestehen. Andernfalls werden die Gebühren unterschiedlich sein.

Benutzer sind ebenfalls in der Lage, ihre Token zu verbrennen.

Zum Beispiel: In unserem Fall — Lieferanten können Coupon-Token verbrennen, wenn Coupons von Kunden zurückgegeben wurden.

API:

https://wavesplatform.github.io/waves-transactions/globals.html#burn

Lassen Sie uns 10 Token verbrennen:

Finden Sie die burn tx im Explorer und schauen sie nach dem Feldwert “Fee”.

In früheren Modulen haben wir gesehen, wie dApps mit WAVES — dem nativen Token — funktionieren.

Damit sie mit benutzerdefinierten Token arbeiten können, müssen wir eine gewisse Logik auf die @Callable-Funktionen anwenden.

Betrachten wir das Beispiel “Multi-User-Wallet”, das jetzt nur noch mit der Währung WEUR (Token) funktioniert:

i.payment.assetId — muss verwendet werden, um die Transaktionen von dApp zuzulassen oder zu verweigern.

ScriptTransfer verwendet die richtige assetId, um Überweisungen vom Konto der dApp an bestimmte Adressen durchzuführen.

Die gleiche Logik im JavaScript-Code. Verwenden Sie hier einfach Ihre Asset-ID im Zahlungsparameter der invokeScript Transaktion.

Als nächstes versuchen Sie, mit Ihrer Token-Unterstützung ein neues Wallet dapp (“Schritt 1”) zu implementieren. Setzen Sie hierzu das Kontoskript ein.

Finden Sie dieses Kontoskript im Explorer. Der dekompilierten Code sollte in etwa wie folgt beginnen:

Versuchen Sie, ein neues Wallet dapp (“Schritt 1”) mit Ihrem Token zu implementieren und aktivieren Sie das Kontoskript.

Hinterlegen Sie 3 WEUR Token auf die dApp.

Finden Sie die Einzahlung und schauen Sie sich die Transaktion im Explorer an.

A non-fungible token (NFT) is a special type of cryptographic token which represents something unique; non-fungible tokens are thus not interchangeable. This is in contrast to cryptocurrencies like bitcoin, and many network or utility tokens that are fungible in nature.

https://en.wikipedia.org/wiki/Non-fungible_token

Nicht fungible Token werden verwendet, um eine nachweisbare digitale Knappheit zu erzeugen. NFTs werden in mehreren spezifischen Anwendungen eingesetzt, die einzigartige digitale Elemente wie Krypto-Sammelkarten und Krypto-Gaming, Zertifikate oder einzigartige Coupons erfordern.

In Waves sind NFTs benutzerdefinierte Token mit 0 Dezimalstellen und einer Menge von 1.

Die Emissionsgebühr für NFTs ist 1000x geringer als für Nicht-NFTs. Benutzer können keine Teile dieser Token senden.

Traditionelle Verträge stellen Vereinbarungen zwischen Teilnehmern (Parteien) dar, diese Vereinbarungen werden von einer offiziellen Stelle oder Regierung eines Dritten validiert und durchgesetzt. Drittanbieter sind wichtige Teilnehmer bei der Überprüfung der Vertragsbedingungen, der Umgebungsbedingungen und der Ereignisse, die die Vertragsabwicklung des Kontakts beeinflussen könnten.

Trotz ähnlicher Bedingungen sind Smart Contracts keine Verträge per Definition von “Vereinbarung zwischen Parteien”. Der Smart Contract ist ein Computer-Quellcode oder -Programm, das in einer verteilten Umgebung wie einem Blockchain-Netzwerk ausgeführt werden kann. Alle Operationen und Ausführungsergebnisse werden in der Blockchain gespeichert.

In dieser Definition ist ein Smart Contract kein Vertrag zwischen den Parteien, sondern ein Protokoll über die Zusammenarbeit zwischen den Nutzern, aber auch zwischen Nutzer und Computer oder sogar Computer und Computer gemäß den im Smart Contract Source Code beschriebenen Regeln.

In Waves gibt es zwei Arten von Smart Contracts: Smart Accounts (dApps) und Smart Assets.

Das Smart Asset Skript erlaubt oder verweigert ausgehende Transaktionen mit bestimmten Assets, abhängig von den Bedingungen, die im Smart Asset Skriptcode beschrieben sind.

Werfen wir einen Blick auf das hervorragende FBeispiel von Smart Assets: Waves Belohnungs-Token (WRTs).

Das Ziel: Nur Botschafter können WRT verkaufen, welche das Waves-Team an der DEX zurückkaufen wird. Es ist ein Sonderfall von Loyalitäts- und Motivationsprogrammen.

Waves Community-Mitglieder, die unter bestimmten Bedingungen zufrieden waren, erhalten eine bestimmte Anzahl von WRTs (monatliche oder vierteljährliche Basis).

Anschließend können sie WRT als Belohnung für ihre Aktivitäten an die Botschafter von Waves schicken.

Mit der Einführung von WRT ermutigt das Waves-Team die Community, die Aktivitäten der Botschafter zu verfolgen, Meinungen auszudrücken und sie zu belohnen, wenn sie es verdienen.

Die intelligente Asset wird wie folgt betrieben:

WRT kann nur an Adressen auf der Whitelist (die von Botschaftern) gesendet werden.

Das Token kann nicht gebrannt werden.

Es kann nicht an der DEX gehandelt werden; nur Adressen auf der Whitelist können es verkaufen.

Die Mainnet WRT-Token-ID:

H1RmwqzeXsdQMt6jR6DPkGbZjA2PKUoofP4WjuCRz1st

Finden Sie WRT-Token im Mainnet Waves Explorer. Das dekompilierte Skript für dieses Smart Assets sieht wie folgt aus:

Finden Sie WRT-Token im Mainnet Waves Explorer und lesen Sie das dekompilierte Skript für Smart Assets.

Finden Sie den Key-Value-Speicher. Dieser sieht wie folgt aus:

Versuchen Sie, Ihren eigenen Smart Asset zu erstellen, indem Sie das Skript auf Ihren ausgegebenen Token anwenden (wählen Sie ein beliebiges in diesem Modul erstelltes Skript oder erstellen Sie ein neues).

In diesem Smart Asset-Skript sollen nur Tauschgeschäfte für alle erlaubt sein.

API:

https://wavesplatform.github.io/waves-transactions/globals.html#setassetscript

StackOverflow:

https://stackoverflow.com/questions/55041411/how-to-set-a-script-for-an-asset-using-waves-

Hinweis: IDE’s Bibliothek mit Smart Assets Fällen

Die Nutzer suchen nach Rabatten für Waren und Dienstleistungen und können diese zu einem kleinen Preis auf dem Marktplatz kaufen.

Jeder Coupon — ist ein digitales Asset, der einen speziellen Rabatt des Lieferanten darstellt.

“Coupon Bazaar” ist ein Marktplatz für digitale Assets — tokenisierte Coupons, die von Anbietern bereitgestellt werden.

Lieferanten sind in der Lage, eine gewisse Logik für diese Coupon-Token wie Menge und Ablauf zu konfigurieren.

Wir haben bereits einen Coupon Bazaar dApp Smart Contract und Testfunktionen. Lassen Sie uns einige Funktionen für einen Lieferanten hinzufügen:

1. Lieferanten:

  • Hinzufügen eines Elements => Issue-Token / Re-Issue + Set Asset Script
  • Abhebung von Geldern
  • Token vom Kunden annehmen und Token verbrennen

2. Kunde:

  • Tokenisierten Gutschein kaufen
  • Token an die Benutzer übertragenTrade-Token an DEX handeln

Im RIDE Smart Asset Code erlauben wir das Verbrennen und erneute Ausgeben von Coupons nur für den Lieferanten, welcher der Emittent ist.

Kunden können Coupons kaufen, Coupons an der DEX verkaufen, Coupons an Freunde und Familienmitglieder innerhalb der Verfallszeit übertragen.

P.S.: Schauen Sie sich den Trick in der IDE an. Sie können die Funktion file(….) verwenden, um den RIDE-Quelltext zu verwenden.

Erstellen wir Ihr eigenes “Coupon” Smart Asset! Finden Sie das Asset-Skript im Explorer. Der dekompilierten Code sieht in etwas wie folgt aus:

Eigentlich haben wir jetzt alles, um ein eigene, voll funktionsfähigen Couponbasar web3 dApp aufzubauen.

In Modul 6 werden wir alles miteinander kombinieren!

--

--