USDC Yield With Cover Built InQuicknode Earn now runs USDC yield with cover for protocol risk built in, underwritten by OpenCover. Six covered vaults on Base.
Lesen Sie die AnkündigungEine Einführung in DaiJS
Das MakerDAO-Projekt hat den Stablecoin DAI ins Leben gerufen. Ein Stablecoin ist an eine bestimmte Fiat-Währung gekoppelt, wodurch er als Rechnungseinheit dienen kann. Dai ist ein dezentraler Stablecoin, der an den Wert des US-Dollars gekoppelt ist (d. h. 1 Dai = 1 $).

SOC 2 Typ II-zertifiziert · ISO 27001
15. April 2019 – 8 Minuten Lesezeit

Hier antwortet Alan Greenspan (Vorsitzender der US-Notenbank – 1987 bis 2006) im Jahr 2011 auf eine Frage von David Gregory:
David Gregory: „Sind US-Staatsanleihen immer noch eine sichere Anlage?“
Alan Greenspan: „Ganz genau. Hier geht es nicht um die Bonität. Die Vereinigten Staaten können jede ihrer Schulden begleichen, da wir dafür jederzeit Geld drucken können. Die Wahrscheinlichkeit eines Zahlungsausfalls liegt also bei null.“
Die derzeitigen Zentralbanksysteme haben die Macht, Geld aus dem Nichts zu drucken, und die Lösung dieses Problems stand im Mittelpunkt der Entstehung von „ Bitcoin“. Heute verfügen wir über Technologien, die dieselben Systeme nachbilden, jedoch auf eine vertrauensunabhängigere Weise. Ein Beispiel hierfür ist MakerDAO.
Das MakerDAO-Projekt hat den Stablecoin DAI ins Leben gerufen. Ein Stablecoin ist an eine Fiat-Währung gekoppelt, wodurch er als Rechnungseinheit dienen kann. Dai ist ein dezentraler Stablecoin, der an den Wert des US-Dollars gekoppelt ist (d. h. 1 Dai = 1 $).
Stellen Sie sich Dai als einen elektronischen Dollar vor – einen Dollar auf der „ Ethereum “-Blockchain.
Die Governance des DAI-Tokens hängt vom MKR-Token ab, wodurch es sich um eine DAO (dezentrale autonome Organisation) handelt – daher der Name MakerDAO. Zum Zeitpunkt der Erstellung dieses Artikels ist das DAI-System zu 150 % besichert – das bedeutet, dass man für 100 DAI Ether (ETH) im Wert von mindestens 150 US-Dollar benötigt.
Eine besicherte Schuldenposition (CDP) ist die einzige Möglichkeit, DAI zu generieren. Laut dem MakerDao -Whitepaper:
Jeder, der über Sicherheiten verfügt, kann diese nutzen, um auf der Maker-Plattform über die einzigartigen Smart Contracts von Maker, die als „Collateralized Debt Positions“ (CDPs) bezeichnet werden, Dai zu generieren. Eine Sicherheit ist ein digitaler Vermögenswert, der im Rahmen des dezentralen Maker-Governance-Prozesses in das System eingebracht wurde.
Einfach ausgedrückt ist ein CDP ein Kredit, der gegen einen digitalen Vermögenswert (wie beispielsweise Ether/ETH) aufgenommen wird. Wenn Sie ein CDP eröffnen, generiert das System Dai.
Nun wollen wir uns mit Dai JS beschäftigen und damit ein CDP erstellen. Zuvor müssen wir jedoch einige Schritte durchführen:
Adresse im Koven-Netzwerk generieren
Um mit dai.js zu experimentieren, erstellen wir eine brandneue Adresse im Koven-Netzwerk. Wir werden Node.js verwenden, also installiere es bitte zuerst, falls du es noch nicht hast.
mkdir wallet cd wallet npm i ethereumjs-wallet
Erstellen Sie nun im selben Wallet-Verzeichnis eine Datei namens „app.js“ und fügen Sie den folgenden Code ein.
const Wallet = require('ethereumjs-wallet');
const wallet = Wallet.generate();
console.log("privateKey: " , wallet.getPrivateKeyString());
console.log("address: " , wallet.getAddressString());Öffnen Sie nun das Terminal und führen Sie folgenden Befehl aus: Knoten app.js , Das war’s schon – Sie haben einen privaten Schlüssel für „ Ethereum “ mit einer öffentlichen Adresse erstellt.
Adresse in Metamask importieren
Als Nächstes werden wir diese Adresse in Metamask importieren, damit alles einfacher wird (das wirst du später sehen).
Um Adressen zu importieren, gehen Sie wie folgt vor:
Klicken Sie auf „Metamask“ und wählen Sie das Koven-Netzwerk aus.
Klicken Sie anschließend auf den Kreis oben rechts und wählen Sie die Option „Konto erstellen“ aus.
Klicken Sie anschließend auf „Importieren“ und fügen Sie Ihre privaten Schlüssel (die oben generiert wurden) ein.

Nun wollen wir uns über diese Website etwas Test-ETH vom Kovan Faucet besorgen .
Dai JS
Mit der aktuellen Version von MakerDao können Sie Folgendes tun:
CDPs öffnen und schließen
Sicherheiten sperren und entsperren
Dai abheben und zurückzahlen
Automatisierte Token-Konvertierungen
Funktionalität des Token-Vertrags für WETH, PETH, MKR, Dai und ETH
Kauf und Verkauf von MKR und Dai mit integrierter DEX-Anbindung
MakerDao hat bereits ein GitHub-Repo mit verschiedenen Beispielen erstellt , das wir geforkt haben. Importieren wir also das Repo mit den folgenden Befehlen:
cd && git clone https://github.com/buddies2705/integration-examples
Dieses Repo enthält folgende Arten von Beispielen:
Erstellung und Abwicklung von CDPs
Beispiele für die Integration von Hardware-Wallets wie Ledger und Tezos
Hebelwirkung (Ähnlich wie beim Margin-Handel: CDP erstellen → DAI erhalten → Mit DAI ETH an der Börse kaufen → Wiederholen)
Laden Sie Ihr CDP auf
DAI mit Wyre in Fiat-Währung umwandeln
Ein umfassendes Beispiel zur Erstellung und Schließung eines CDP
In diesem Tutorial werden wir uns das Beispiel zum Erstellen und Schließen eines CDP ansehen, aber zuvor wollen wir unsere Anwendung ausführen und uns die Funktionsweise in der Praxis ansehen.
Zunächst fügen wir unseren privaten Schlüssel in unseren Code ein:
cd integration-examples/react-example cp .env.example .env
Fügen Sie anschließend die privaten Schlüssel in die .env-Datei ein. Wir benötigen einen Web3-Anbieter, um mit der „ Ethereum “-Blockchain zu interagieren. Halten Sie daher Ihre Web3-URL bereit (wir verwenden Quicknode ← hier registrieren):
npm install npm start
Dadurch wird ein Fenster im Browser geöffnet. Vergewissern Sie sich, dass Sie oben das richtige Metamask-Konto (das Konto, das wir kürzlich hinzugefügt haben) und das Kovan-Netzwerk ausgewählt haben. Öffnen Sie anschließend die Browserkonsole mit F12 und klicken Sie auf die Schaltfläche „Start“. Warten Sie nun, bis die folgenden Schritte ausgeführt wurden.
Ersteller erstellt
CDP wurde eröffnet
Eth gesperrt
Dai Drawn
Schulden erlassen
CDP geschlossen
Weitere Protokollausgaben finden Sie in der Browserkonsole.
CDP in der Praxis

Hinter den Kulissen
Schauen wir uns nun den Code genauer an und sehen wir uns an, was dort passiert. Öffnen Sie die Datei „index.js“ im Ordner „action“.
import Maker from '@makerdao/dai';
const infuraProjectId = 'c3f0f26a4c1742e0949d8eedfc47be67'; //dai.js project id
export const started = () => ({
type: 'STARTED'
});
export const makerCreated = () => ({
type: 'MAKER_CREATED'
});
export const cdpOpened = () => ({
type: 'CDP_OPENED'
});
export const ethLocked = () => ({
type: 'ETH_LOCKED'
});
export const daiDrawn = () => ({
type: 'DAI_DRAWN'
});
export const daiWiped = () => ({
type: 'DAI_WIPED'
});
export const cdpShut = () => ({
type: 'CDP_SHUT'
});
const drawDaiAsync = (maker, cdp) => async dispatch => {
const defaultAccount = maker
.service('token')
.get('web3')
.defaultAccount();
const dai = maker.service('token').getToken('DAI');
const txn = await cdp.drawDai(0.1);
const balance = await dai.balanceOf(defaultAccount);
console.log('Transaction from drawing Dai:', txn);
console.log('Dai balance after drawing:', balance.toString());
dispatch(daiDrawn());
};
const wipeDebtAsync = (maker, cdp) => async dispatch => {
const defaultAccount = maker
.service('token')
.get('web3')
.defaultAccount();
const dai = maker.service('token').getToken('DAI');
const txn = await cdp.wipeDai(0.1);
const balance = await dai.balanceOf(defaultAccount);
console.log('Transaction from wiping Dai:', txn);
console.log('Dai balance after wiping:', balance.toString());
dispatch(daiWiped());
};
const shutCdpAsync = cdp => async dispatch => {
const txn = await cdp.shut();
console.log('Transaction from shutting the CDP:', txn);
dispatch(cdpShut());
};
export const startAsync = () => async dispatch => {
dispatch(started());
const maker = Maker.create(process.env.REACT_APP_NETWORK, {
privateKey: process.env.REACT_APP_PRIVATE_KEY,
overrideMetamask: true,
provider: {
infuraProjectId
}
});
console.log('maker:', maker);
dispatch(makerCreated());
const cdp = await maker.openCdp();
console.log('cdp:', cdp);
dispatch(cdpOpened());
const lockEthTx = await cdp.lockEth(0.01);
console.log('transaction to lock eth:', lockEthTx);
dispatch(ethLocked());
await dispatch(drawDaiAsync(maker, cdp));
await dispatch(wipeDebtAsync(maker, cdp));
await dispatch(shutCdpAsync(cdp));
};Dies ist die Hauptdatei, in der das Geschehen stattfindet. Wie Sie sehen können, wird hier eine „Maker“-Instanz unter Verwendung unseres bereitgestellten privaten Schlüssels und Netzwerks erstellt. Als Nächstes führen wir die folgenden Schritte durch:
maker.openCdp() — Eine CDP-Instanz abrufen
cdp.lockEth(0,01) — Sperrung 0,01 CDP
drawDaiAsync(maker, cdp) — Dai für unser gesperrtes Ether erhalten.
const drawDaiAsync = (maker, cdp) => async dispatch => {
//Getting default account
const defaultAccount = maker.service('token')
.get('web3').defaultAccount();
//Getting token
const dai = maker.service('token').getToken('DAI');
//Drawing CDP
const txn = await cdp.drawDai(0.1);
//checking Dai balance
const balance = await dai.balanceOf(defaultAccount);
console.log('Transaction from drawing Dai:', txn);
console.log('Dai balance after drawing:', balance.toString());
dispatch(daiDrawn());
};Hier ist unsere DAI-Adresse angegeben. Sie können die letzten beiden Zeilen auskommentieren, falls Sie dieses CPD nicht schließen und Ihren Kontostand hier überprüfen möchten. Vergewissern Sie sich, dass Sie in Metamask das Kovan-Netzwerk und das richtige Konto ausgewählt haben.
dispatch(started());
const maker = Maker.create(process.env.REACT_APP_NETWORK, {
privateKey: process.env.REACT_APP_PRIVATE_KEY,
overrideMetamask: true,
provider: {
infuraProjectId
}
});
console.log('maker:', maker);
dispatch(makerCreated());
const cdp = await maker.openCdp();
console.log('cdp:', cdp);
dispatch(cdpOpened());
const lockEthTx = await cdp.lockEth(0.01);
console.log('transaction to lock eth:', lockEthTx);
dispatch(ethLocked());
await dispatch(drawDaiAsync(maker, cdp));
await dispatch(wipeDebtAsync(maker, cdp));
await dispatch(shutCdpAsync(cdp));Als Nächstes sehen Sie, dass wir unsere Schulden mithilfe der letzten beiden Zeilen tilgen.
await dispatch(wipeDebtAsync(maker, cdp)) — Dadurch werden die Dai in unserem Wallet gelöscht. Wenn du ein CDP schließt, werden diese Dai-Token vernichtet.
await dispatch(shutCdpAsync(cdp)) — Als Nächstes können wir unser CDP herunterfahren.
Das war’s! Sie haben ein CDP erfolgreich angelegt und geschlossen.
Hinter den Kulissen ist einiges passiert. Schauen wir uns das einmal genauer an.
Was passiert, wenn man DAI generiert?
ETH wird in WETH (Wrapped ETH) umgewandelt. WETH ist ein ERC20-Token, bei dem 1 ETH = 1 WETH gilt, und Sie können diese jederzeit umtauschen.
WETH wird in PETH (Pooled ETH) umgewandelt, was bedeutet, dass es in einen großen ETH-Pool einfließt, der als Sicherheit für alle geschaffenen Dai dient. Dieses PETH wird tatsächlich in einem Smart Contract gesperrt, der zur Erstellung des CDP verwendet wird.
Außerdem müssen Sie beim Schließen eines CDP eine jährliche Gebühr in Höhe von 1 % in MKR-Token (Maker-Token) sowie eine im Voraus festgelegte Stabilitätsgebühr in PETH (die derzeit 11,5 % beträgt) auf den Kreditbetrag entrichten.
Hier können Sie Ihre Kontostände einsehen.
In diesem Artikel haben wir also gesehen, wie man DaiJS einsetzt und mit CDP experimentiert. Mit DaiJS lassen sich viele Dinge realisieren – die Entwicklerdokumentation findest du hier. Dai verfügt außerdem über eine DAI-CLI, mit der man ebenfalls mit CDP experimentieren kann .
Falls ein Schritt nicht klar war und ihr gerne mehr Details dazu hättet oder euch weitere Tutorials zu Dai JS wünscht, lasst es uns in den Kommentaren wissen!
Dai eröffnet zahlreiche Möglichkeiten. Es ist an den US-Dollar gekoppelt und programmierbar. Mit dem Multi-Collateral-Maker werden viele Vermögenswerte mit dem MakerDAO-Projekt kompatibel sein. Man kann sein Gold oder seine Immobilien digitalisieren und dafür DAI erhalten. Weltweit haben 1,7 Milliarden Erwachsene noch immer keinen Zugang zu Bankdienstleistungen, doch zwei Drittel von ihnen besitzen ein Mobiltelefon. Man kann sich vorstellen, was Kryptowährungen diesen Menschen ohne Bankkonto bieten können.
„Bankdienstleistungen für Menschen ohne Bankkonto“
Benötigst du Hilfe bei deinem Projekt oder hast du Fragen? Kontaktiere uns über dieses Formular, auf Twitter unterQuicknode oder schreib uns auf Discord!
Quicknode wurde 2017 gegründet und Quicknode Entwicklern und Unternehmen eine Blockchain-Infrastruktur auf institutionellem Niveau Quicknode . Dank einer Verfügbarkeit von 99,99 % und der Unterstützung von mehr als 80 Blockchains können Teams On-Chain-Anwendungen ohne Kompromisse entwickeln und skalieren.
Die neuesten Erkenntnisse aus der Technik, Produkt-Updates und Neuigkeiten aus der Web3-Welt – direkt in Ihren Posteingang.