Wie kann ich Ethereum Tokens mit Open-Source-Verträgen (open-Zeppelin) erstellen?


#1

Die Erstellung eines Best-Practice-Tokens ist ein einfacher Prozess. WiR werden zwar ein wenig in der Ethereum Programmiersprache Solidity programmieren, aber es wird nicht sehr viel sein.

WiR verwenden Solidity um unser Ethereum-Token zu erstellen. Aber keine Sorge, es gibt eine Menge Open-Source-Bibliotheken und Verträge, die uns dabei unterstützen.


#2

WiR wollen ein ERC-20- kompatibles Token bauen. Die Ethereum-Entwickler haben eine Reihe von Funktionen festgelegt, die für die häufigsten Token-Anwendungen erforderlich sind.

Was brauchen WiR?

  • Github für den Quellcode
  • WiR arbeiten im Terminal
  • NodeJS & NPM
  • Metamask (für die erste Kontoerstellung)

Okay, fangen WiR an zu programmieren! Die Beispiele hier werden direkt im Terminal auf einem PC mit Ubuntu Desktop LTS 18.04 ausgeführt. Hier findest mehr Informationen zu Ubuntu LinuX.

Tipp: Im LinuX Terminal kannst du mit Shift+Strg+T einen weitern Tab öffnen. Shift ist die Taste für Großbuchstaben, Strg kann auf deiner Tastatur auch in englisch mit Ctrl beschriftet sein.

Als erstes laden WiR truffle aus dem Internet herunter. Du kannst das Repo unter truffle auf Github (DE) besuchen oder gleich über folgenden Befehl in deinem Terminal installieren:

npm install -g truffle

Truffle übernimmt die intelligente Vertragszusammenstellung, -verknüpfung und -bereitstellung für uns. Es ist eine Bibliothek, die unser Leben für die Tokenerstellung erleichtert.

Jetzt müssen WiR ein Verzeichnis erstellen, in dem unser Projekt leben wird. In diesem Fall nennen WiR es eth_token_tutor

mkdir -p /usr/src/eth_token_tutor
cd /usr/src/eth_token_tutor

In unserem Terminal rufen WiR jetzt innerhalb des neuen Verzeichnisses auf:

truffle init

eth-01

Nach dem Aufruf von truffle init sollte das Verzeichnis so aussehen:

eth-02

Großartig, das ist unsere Grundlage. WiR können auch mit Truffle intelligente Verträge erstellen und bereitstellen. WiR werden aber unsere intelligenten Vertragsdateien mit dem Open-Zeppelin Projekt erstellen.

Open-Zeppelin ist ein Open-Source-Projekt, in dem WiR intelligente Verträge mit allgemeinen Best Practices Erfahrungen, einer guten Testabdeckung und höchstwahrscheinlich in einem Audit bereits gut geprüft auf Sicherheit finden.

Geprüft auf Sicherheit (Audit) bedeutet, dass professionelle Entwickler Ihre Smart Contracts auf Lecks, Bugs oder Möglichkeiten bösartiger Angriffe überprüft haben.

Wenn du dich für intelligente Vertragsangriffe interessierst, findest du hier einen Link: Link (DE)

Um Open-Zeppelin Verträge nutzen zu können, müssen WiR sie in unserem Repository installieren:

npm init -y
npm install -E zeppelin-solidity
  1. WiR haben mit npm init -y eine package.json initialisiert.
  2. WiR haben das Paket zeppelin-solidity zur Nutzung der Open-Zeppelin-Verträge installiert.

eth-03

Okay, jetzt schreiben WiR etwas Solidity Programmcode, es sind aber nur sehr wenige Programmierzeilen!

WiR erstellen eine neue Datei im Ordner contracts . In unserem Fall nennen WiR die Datei IOTestToken.sol

cd /usr/src/eth_token_tutor/contracts
nano IOTestToken.sol

Jetzt sollte unser Verzeichnis wie folgt aussehen:

eth_token_tutor
├── contracts
│   ├── Migrations.sol
│   └── IOTestToken.sol *** (dieser ist neu)
├── migrations
│   ├── 1_initial_migration.js
│   └── 2_deploy_contracts.js
├──  test
│   └── truffle.js

In IOTestToken.sol schreiben WiR folgenden Code:

// IO-TestToken.sol
pragma solidity ^0.4.24;
import "zeppelin-solidity/contracts/token/ERC20/MintableToken.sol";
contract TestToken is MintableToken {
    string public constant name = "IOTest Token";
    string public constant symbol = "IOTT";
    uint8 public constant decimals = 18;
}

Lass uns das auflösen, da es ziemlich viel ist, obwohl es nur ein paar Zeilen Code sind.

// IOTestToken.sol
pragma solidity ^0.4.24;

Es ist am Anfang der Datei erforderlich, da es die von uns verwendete Version von Solidity angibt.

import "zeppelin-solidity/contracts/token/ERC20/MintableToken.sol";

Das obige Code-Snippet ist der Grund, warum Open-Zeppelin so nützlich ist. Wenn du verstehst, wie Vererbung in der Programmierung funktioniert, weißt du, dass unser Vertrag alle Eigenschaften von MintableToken erbt.

Wenn du nicht weißt wie Vererbung funktioniert, genügt es zu wissen, dass WiR mit MintableToken viele Funktionen importieren, die in MintableToken.sol gespeichert sind. WiR können diese Funktionalitäten nutzen, um unsere Token zu erstellen.

Wenn du den MintableToken Quellcode auf Github besuchst, wirst du eine Menge an Funktionen und noch mehr Vererbung entdecken.

Es kann ein bisschen wie ein Kaninchenloch sein, aber zu diesem Demonstrationszweck werden WiR ein Token in das Testnetz geben.

Lass uns so viele Tokens erstellen, wie WiR wollen um mit einer Erstversorgung beginnen zu können. Im nächsten Artikel werden WiR einen NodeJS Dienst erstellen, der neue Token erstellt und andere ERC-20-Standardfunktionen handhaben wird.

Die nächsten Programmier-Zeilen:

contract TestToken is MintableToken {
    string public constant name = "IOTest Token";
    string public constant symbol = "IOTT";
    uint8 public constant decimals = 18;
}

Hier können WiR das Token anpassen. In unserem Fall haben WiR dem “Test-Token” das Symbol “IOTT” und 18 Dezimalzahlen gegeben. Aber warum 18 Dezimalzahlen?

18 Dezimalzahlen sind in der Community so etwas wie ein Standard. Wenn WiR also ein Test-Token haben, kann es möglicherweise wie folgt aussehen: 1.111111111111111111.

That’s it, have fun. Das ist die gesamte Programmierung in der Sprache Solidity, die WiR für unser Token durchführen müssen. WiR übernehmen alle Hauptfunktionalitäten für ein standardisiertes ERC 20-Token von Open-Zeppelin. Danach müssen WiR unsere Konstanten für den Namen, das Symbol und die Dezimalzahlen festlegen.

Bevor WiR es vergessen, sollten WiR ein Metamask-Konto erstellen und es mit Testnet Ethereum finanzieren.

Verwende einfach die MetaMask Erweiterung im Chrome Browser oder folge diesem Link

Fortsetzung folgt …

Wenn du schon jetzt wissen möchtest wie es weitergeht, verwende bitte die Quelle (DE) zu diesem Artikel.