Auf Bibliotheken zurückgreifen
Code, wie wir ihn oben selbst geschrieben haben, kommt häufig vor. Es ist daher nicht sinnvoll, diesen stets von Neuem zu schreiben. Stattdessen bietet es sich an, auf bereits bewährten Code zurückzugreifen. Solidity ermöglicht dies mittels Bibliotheken.
Dies gelingt mittels „import“. Remix findet diese Abhängigkeiten selbständig.
Man kann nun auf die Bibliothek zugreifen, indem man den eigenen Contract mit dem Keyword „is“ erweitert. (Zeile 8)
Wir binden die Bibliotheken ERC20 und Ownable von OpenZeppelin ein.
Wir definieren unseren Constructor und fügen eine eigen Funktion getBalance() ein. Diese soll nur durch den Owner aufrufbar sein.
Wenn wir den Contract compilieren und deployen, sehen wir, dass viele andere Funktionen hinzugekommen sind. Diese kommen aus den beiden eingebundenen Bibliotheken.
Den folgenden Code finden Sie in der Datei contract_s2_07.sol.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
contract EasyERC20 is ERC20, Ownable{
//constructor() ERC20("MyToken", "MTK") {}
constructor(uint256 initialSupply) ERC20("Gold", "GLD") Ownable(msg.sender) {
_mint(msg.sender, initialSupply);
_transfer(msg.sender, 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2, initialSupply);
}
function getBalance() public onlyOwner() view returns(uint256){
return address(this).balance;
}
}
Wir binden die Bibliotheken ERC20 und Ownable von OpenZeppelin ein.
Dies gelingt mittels „import“. Remix findet diese Abhängigkeiten selbständig.
Man kann nun auf die Bibliothek zugreifen, indem man den eigenen Contract mit dem Keyword „is“ erweitert. (Zeile 8)
Wir definieren unseren Constructor und fügen eine eigen Funktion getBalance() ein. Diese soll nur durch den Owner aufrufbar sein.
Wenn wir den Contract compilieren und deployen, sehen wir, dass viele andere Funktionen hinzugekommen sind. Diese kommen aus den beiden eingebundenen Bibliotheken.
Aufgabe
Erstellen Sie einen NFT-Contract, der dem ERC721 folgt. Nutzen Sie dafür eine Bibliothek.
Lösungshinweis
Lösung
// SPDX-License-Identifier: unlicensed
pragma solidity ^0.8.26;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract MyToken is ERC721 {
constructor() ERC721("BAS2024 Token", "B24") {}
}
Den Quellcode finden Sie auch in der Datei contract_s2_08.sol.