Categories
Development

Mein erster Token

Dieses Krypto-Zeug und diese Meme-Token ... das ist alles so verrückt, dass ich mich einfach doch mal eingehender damit beschäftigen muss.

Eine Online-IDE für Ethereum gibt es unter: http://remix.ethereum.org
Programmiert wird das ganze in Solidity, hier die Doku: https://docs.soliditylang.org/en/latest

Eine interessante Firma/Seite dazu: openzeppelin.com
Hochgradig interessant deren Repository: https://github.com/OpenZeppelin
Für den ersten Einstieg in die Welt der Crypto Contracte ist deren Wizard: https://wizard.openzeppelin.com

Einen ersten Contract Code herbeizaubern

Auf die Seite von dem Wizard gehen, alles anklicken, das wird schon so seine Richtigkeit haben, Name, Symbol und Premint anpassen:

Contract Code sichern

Den so mühsam erarbeiteten Code wollen wir natürlich für die Nachwelt sichern und speichern in in ein eigens dafür angelegtes GitHub Repository:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts@4.2.0/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts@4.2.0/token/ERC20/extensions/ERC20Snapshot.sol";
import "@openzeppelin/contracts@4.2.0/access/Ownable.sol";
import "@openzeppelin/contracts@4.2.0/security/Pausable.sol";
import "@openzeppelin/contracts@4.2.0/token/ERC20/extensions/draft-ERC20Permit.sol";

contract DagobertDoge is ERC20, ERC20Snapshot, Ownable, Pausable, ERC20Permit {
    constructor()
        ERC20("DagobertDoge", "DAGOBERTDOGE")
        ERC20Permit("DagobertDoge")
    {
        _mint(msg.sender, 1000000 * 10 ** decimals());
    }

    function snapshot() public onlyOwner {
        _snapshot();
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }

    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount)
        internal
        whenNotPaused
        override(ERC20, ERC20Snapshot)
    {
        super._beforeTokenTransfer(from, to, amount);
    }
}

Der DagobertDoge Token

In der Online IDE wird eine neue Contract Datei angelegt und dort der Code gespeichert:

Anschließend wird der Contract compiliert:

Anschließend wird der Contract (DagobertDoge auswählen) im JavaScript Environment deployed um zu sehen, ob es funktioniert.

Anschließend über Environment Injected Web3 deployen. Dann öffnet sich (zB) das MetaMask Plugin des Browsers und in diesem sollte das BNB Test Netzwerk eingerichtet sein, so dass der Token dann in diesem Test Netzwerk erzeugt wird. Es funktioniert aber auch, wenn man das richtige Smart Chain (BNB) Netzwerk eingerichtet hat.

Da ich grade überlesen habe, dass das Richtige und nicht das Testnetzwerk ausgewählt war, habe ich für 0,077 BNB den DagobertDoge Token erstellt. Glaube ich zumindest.
Laut einem Onlineumrechner sind 0,077 BNB ca. 20 Euro:

NACHTRAG: Anscheinend hatte ich mich verguckt; in meiner TrustWallet wird für die Transaktion eine Netzwerkgebühr von 0,00779352 BNB angezeigt, die dort mit 2,74$ bewertet werden.

Der DagobertDoge Contract

Die Contract ID des wundervollen DagobertDoge Contracts findet sich nach dem Deployment in der Remix IDE unter Deployed Contracts:

DagobertDoge: 0x6ca2cdbc2cdee75b5f3492c4c133f0190aa60fc6

Wenn ich diese Contract ID kopiere und zB bei PooCoin eingebe, findet sich sogar etwas mit DagobertDoge: