Wie integriert man Monero in seine eigene Applikation?

Randbedingungen: macOS & Monero Testnet Zuerst einmal benötigen wir den Monero Daemon monerod und andere Binaries von hier.

Anschließend laden wir uns die Monero Blockchain herunter um mit ihr arbeiten zu können. Dazu lediglich

./monerod --testnet

ausführen und warten bis die Blockchain (in diesem Fall vom Testnet) heruntergeladen worden ist.

Dann legen wir uns eine Testnet Wallet an:

./monero-wallet-cli --testnet --generate-new-wallet testwallet

Den RPC Server starten wir mit:

./monero-wallet-rpc --testnet --wallet-file testwallet --password "" --rpc-bind-port 28088 --disable-rpc-login

Wenn monerod synchronisiert ist (gesamte Blockchain heruntergeladen) können wir z.B. überprüfen ob wir ein Guthaben auf unserer neu erzeugten Wallet haben mit dem folgenden Aufruf:

curl -X POST http://127.0.0.1:28088/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getbalance"}' -H 'Content-Type: application/json'

Als Ergebnis sollten wir etwas ähnliches wie das hier sehen:

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "balance": 0,
    "multisig_import_needed": false,
    "unlocked_balance": 0
  }
}

Um zu testen ob das wirklich alles funktioniert hat, schürfen wir uns auf die Schnelle ein paar Monero Coins und führen den Aufruf dann noch einmal auf. Um zu schürfen, zurück zum Daemon wechseln und dort eingeben:

start_mining 9w5Y8tRHHfSQigShVq2G5Fj4yBZTH8CgW5wHsJoTPp6TFKYpcB1iDTtaVWSxkd496YbJe2oNbHHcUekH2LNwGAiVMEjkHHv

Wobei hier die Wallet Adresse nur beispielhaft ist. Nach ein wenig Zeit haben wir dann erfolgreich einen Block geschürft und ein paar Monero Coins bekommen. Wenn wir dann nochmal versuchen die Balance auszulesen, sollte wir etwas ähnliches bekommen wie hier:

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "balance": 13506665241640,
    "multisig_import_needed": false,
    "per_subaddress": [{
      "address": "9w5Y8tRHHfSQigShVq2G5Fj4yBZTH8CgW5wHsJoTPp6TFKYpcB1iDTtaVWSxkd496YbJe2oNbHHcUekH2LNwGAiVMEjkHHv",
      "address_index": 0,
      "balance": 13506665241640,
      "label": "Primary account",
      "num_unspent_outputs": 2,
      "unlocked_balance": 0
    }],
    "unlocked_balance": 0
  }
}

Grundsätzlich funktioniert also alles. Wenn wir aber nicht zwingend selbst JSON Requests zusammenbauen wollen sondern einen komfortablen Weg benötigen auf die Daten zuzugreifen, können wir z.B. das Python Modul monero-python verwenden. Installiert werden kann es mit:

pip3 install monero-python

Mit diesem Python Modul können wir dann recht simpel z.B. folgendes ausführen:

from monero.wallet import Wallet
from monero.backends.jsonrpc import JSONRPCWallet

w = Wallet(JSONRPCWallet(port=28088))
print("Address: " + str(w.address()))
print("Balance: " + str(w.balance()))

Für weitere Beispiele wie man "roh" auf die Daten zugreift findet man hier und die offizielle Dokumentation ist hier zu finden.

Quelle

Kommentare unterstützt von Disqus.

Vorheriger Beitrag