<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://de.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rising</id>
	<title>Bitcoin Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://de.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rising"/>
	<link rel="alternate" type="text/html" href="https://de.bitcoin.it/wiki/Spezial:Beitr%C3%A4ge/Rising"/>
	<updated>2026-04-09T04:09:29Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Block&amp;diff=851</id>
		<title>Block</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Block&amp;diff=851"/>
		<updated>2013-01-15T18:51:32Z</updated>

		<summary type="html">&lt;p&gt;Rising: Die Seite wurde neu angelegt: „Die zentrale Datenstruktur in Bitcoin ist der Block. Ein Block enthält alle oder einen Teil der Transaktionen, die noch nicht in früheren Blocks notiert wurd…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die zentrale Datenstruktur in Bitcoin ist der Block. Ein Block enthält alle oder einen Teil der Transaktionen, die noch nicht in früheren Blocks notiert wurden. Ein Block entspricht etwa einer Seite eines Grundbuchs oder eines Orderbuchs an der Börse. Normalerweise werden Blöcke immer an das Ende einer Kette von Blöcken ([[Blockkette]]) gehängt und werden, wenn einmal festgelegt, nie geändert oder entfernt. &lt;br /&gt;
&lt;br /&gt;
===Blockstruktur===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Feld&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Größe&lt;br /&gt;
|-&lt;br /&gt;
|Fixer Wert&lt;br /&gt;
|immer 0xD9B4BEF9&lt;br /&gt;
|4 Bytes&lt;br /&gt;
|-&lt;br /&gt;
|Blockgröße&lt;br /&gt;
|Zahl der Bytes bis zum Ende des Blocks&lt;br /&gt;
|4 Bytes&lt;br /&gt;
|-&lt;br /&gt;
|Blockheader&lt;br /&gt;
|[[Blockhash-Algorithmus|besteht aus sechs Teilen]]&lt;br /&gt;
|80 Bytes&lt;br /&gt;
|-&lt;br /&gt;
|Transaktionszähler&lt;br /&gt;
| positive Ganzzahl&lt;br /&gt;
| 1 bis 9 Bytes&lt;br /&gt;
|-&lt;br /&gt;
|[[Transaktion|Transaktionen]]&lt;br /&gt;
|die (nichtleere) Liste von Transaktionen&lt;br /&gt;
|So viele Transaktionen, wie im Transaktionszähler genannt&lt;br /&gt;
|}&lt;br /&gt;
==Beschreibung==&lt;br /&gt;
Jeder Block enthält unter anderem in seinem Blockheader eine Auflistung aller oder einiger kürzlich erfolgter [[Transaktion]]en und eine Referenz auf den Block, der vor ihm kam. Er enthält auch eine Antwort auf eine schwierig zu lösende mathematische Aufgabe, deren Antwort in jedem Block unterschiedlich ist. Neue Blöcke werdem vom Netzwerk nur akzeptiert, wenn sie die richtige Antwort enthalten - [[Mining]] ist nichts anderes als ein Wettbewerb, wer als Erster die Antwort auf die im aktuellen Block gestellte Aufgabe nennt. Das mathematische Problem ist schwierig zu lösen, aber, ist einmal eine Lösung gefunden, ist es sehr einfach zu überprüfen, ob die Lösung korrekt ist. Es gibt mehrere richtige Lösungen für jeden beliebigen Block - es muss nur eine Lösung gefunden werden, damit der Block als gelöst gilt.&lt;br /&gt;
&lt;br /&gt;
Da es bei jeder korrekten Lösung eines Blocks eine Belohnung in Form von neuen Bitcoins gibt, enthält jeder Block auch eine Aufzeichnung darüber, welche Bitcoin-[[Adresse]] das Recht hat, die Belohnung zu kassieren. Dies nennt man eine generierende Transaktion oder [[Coinbase]]-Transaktion, und sie ist immer an erster Stelle der Transaktionenliste zu finden. Die Zahl der generierten Bitcoins begann bei 50 und wird alle 210.000 Blocks halbiert (das dauert etwa vier Jahre, derzeit ist die Belohnung 25 Bitcoins). &lt;br /&gt;
&lt;br /&gt;
Der Miner sendet den Block nach der Lösung an das Netzwerk, sodass alle Teilnehmer, die versuchen, Blocks zu minen, die bereits bestätigten Transaktionen in ihre Aufzeichnungen übernehmen können.&lt;br /&gt;
&lt;br /&gt;
Die Schwierigkeit des mathematischen Problems wird automatisch durch das Netzwerk angepasst, sodass im Durchschnitt sechs Blocks pro Stunde erzeugt werden. Alle 2016 Blöcke (also alle zwei Wochen) überprüfen alle Bitcoin-Clients die tatsächliche Zahl mit der Zielzahl und passen die Schwierigkeit an den Sollwert an, um die Schwierigkeit zu erhöhen oder zu reduzieren.&lt;br /&gt;
&lt;br /&gt;
Da jeder Block eine Referenz auf den vorherigen Block enthält, bilden alle Blöcke gemeinsam eine Kette. Allerdings kann die Kette sich temporär aufteilen, zum Beispiel wenn zwei Miner unabhängig voneinander gleichzeitig zwei verschiedene gültige Lösungen für denselben Block finden. Das Netzwerk ist so ausgelegt, dass derartige Aufteilungen nach kurzer Zeit aufgelöst werden und nur eine der beiden Äste überlebt.&lt;br /&gt;
&lt;br /&gt;
Der Client akzeptiert die längste [[Blockkette]] als gültig. Die Länge der gesamten Blockkette bezeichnet immer die Kette mit der höchsten gemeinsamen Schwierigkeit, nicht der mit den meisten Blocks. Das verhindert, dass ein Angreifer einen Ast der Blockkette mit einer großen Zahl an Blöcken mit niedriger Schwierigkeit generiert und das Netzwerk seine alternative Blockkette akzeptiert.&lt;br /&gt;
&lt;br /&gt;
== Häufige Fragen ==&lt;br /&gt;
&lt;br /&gt;
=== Wie viele Blöcke gibt es? ===&lt;br /&gt;
[http://blockexplorer.com/q/getblockcount Aktuelle Zahl der Blöcke]&lt;br /&gt;
&lt;br /&gt;
=== Wie viele Blöcke kann es höchstens geben? ===&lt;br /&gt;
Es gibt keine maximale Zahl von Blöcken, Blöcke werden immer weiter am Ende der Kette hinzugefügt, durchschnittlich alle 10 Minuten.&lt;br /&gt;
&lt;br /&gt;
==== Auch, wenn alle 21 Millionen Bitcoins generiert wurden? ====&lt;br /&gt;
Ja. Die Blöcke zeichnen die Transaktionen auf. Transaktionen wird es weiterhin geben, wenn alle Bitcoins generiert wurden - so lange Bitcoins gehandelt werden, wird es Transaktionen geben.&lt;br /&gt;
&lt;br /&gt;
=== Wie lange würde es für mich dauern, einen Block zu generieren= ===&lt;br /&gt;
Das kann niemand genau sagen. Es gibt einen [[Erzeugungsrechner]], der sagen kann, wie lange es dauern könnte.&lt;br /&gt;
&lt;br /&gt;
=== Was bedeutet es, wenn ich 1% eines Blocks gelöst habe? ===&lt;br /&gt;
So etwas gibt es nicht. Man hat einen Block entweder gelöst oder nicht. Nehmen wir an, einen Block zu lösen wäre dasselbe wie eine Münze zu werfen und &amp;quot;Zahl&amp;quot; zu bekommen. Dann ist es völlig egal, ob man zuvor ein Mal, zehn Mal oder hundert Mal &amp;quot;Kopf&amp;quot; geworfen hat, die Chance, &amp;quot;Zahl&amp;quot; zu werfen, ist immer gleich.&lt;br /&gt;
&lt;br /&gt;
=== Wo gibt es mehr technische Details? ===&lt;br /&gt;
Auf der Seite zum [[Blockhash-Algorithmus]].&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
[https://bitcointalk.org/index.php?topic=101514.0 Format der BDB-Blockdateien]&lt;br /&gt;
* [http://en.bitcoin.it/wiki/File:Total_bitcoins_over_time_graph.png Zahl der Bitcoins im Lauf der Zeit]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Technisches]]&lt;br /&gt;
[[Kategorie:Vokabular]]&lt;br /&gt;
&lt;br /&gt;
[[fr:Blocs]][[pl:Bloki]][[zh-cn:Block]][[en:Blocks]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Doppelausgabe&amp;diff=837</id>
		<title>Doppelausgabe</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Doppelausgabe&amp;diff=837"/>
		<updated>2012-12-28T16:11:01Z</updated>

		<summary type="html">&lt;p&gt;Rising: Die Seite wurde neu angelegt: „Man spricht von einer Doppelausgabe, wenn es gelingt, dasselbe Geld mehr als einmal auszugeben. Bitcoin schützt grundsätzlich vor solchen Angriffen durch die…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Man spricht von einer Doppelausgabe, wenn es gelingt, dasselbe Geld mehr als einmal auszugeben. Bitcoin schützt grundsätzlich vor solchen Angriffen durch die Überprüfung jeder Transaktion vor dem Hinzufügen zur Blockchain. Transaktionen, deren Eingaben schon einmal ausgegeben wurden, werden nicht akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Andere Systeme aus dem Bereich des elektronischen Geldes haben meist eine Zentralstelle, die ein Logbuch über alle Transaktionen führt und so Doppelausgaben vermeidet. Bitcoin verwendet ein dezentralisiertes System, in dem ein Konsens zwischen Teilnehmern die Zentralstelle ersetzt.&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin besteht unter bestimmten Bedingungen die Möglichkeit, Doppelausgaben zu erzeugen, wobei das Risiko mit der Zahl der Bestätigungen zurückgeht.&lt;br /&gt;
&lt;br /&gt;
==Angriffsmöglichkeiten==&lt;br /&gt;
&lt;br /&gt;
===Wettlaufsangriff===&lt;br /&gt;
Händler, die eine Zahlung sofort akzeptieren, obwohl sie noch nicht bestätigt wurde, laufen Gefahr, Opfer einer Doppelausgabe zu werden, falls eine weitere Transaktion, die dieselben Coins ausgibt, diejenige wird, die schließlich in der Blockchain landet.&lt;br /&gt;
&lt;br /&gt;
Sie können durch Vorsichtsmaßnahmen wie dem Deaktivieren direkter eingehender Verbindungen und durch das Verbinden nur zu gut eingebundenen Teilnehmern des Bitcoin-Netzwerks das Risiko dafür verkleinern, aber nicht eliminieren. Daher muss eine Risikoabwägung getroffen werden, insbesondere wenn es keine Möglichkeit gibt, auf den Angreifer zurückzukommen.&lt;br /&gt;
&lt;br /&gt;
Der Forschungsartikel [http://eprint.iacr.org/2012/248.pdf Two Bitcoins at the Price of One] kommt zu dem Schluss, dass die Erfolgsquote bei Wettlaufangriffen hoch ist. Die Methode, die in dem Artikel betrachtet wurde, hängt stark von den Verbindungen des Händlers ab.&amp;lt;ref&amp;gt;[http://bitcointalk.org/index.php?topic=79090.msg881283#msg881283 BitcoinTalk-Diskussion - Two Bitcoins at the Price of One]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Finney-Angriff===&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Angriff, der gegen Händler ausgeführt werden kann, wenn Zahlungen ohne Bestätigungen akzeptiert werden. Beim Finney-Angriff wird die Mitarbeit eines Miners benötigt, sobald der Block gemint wurde.&amp;lt;ref&amp;gt;[http://www.bitcointalk.org/index.php?topic=3441.msg48384#msg48384 Best practice for fast transaction acceptance - how high is the risk?]&amp;lt;/ref&amp;gt;. Das Risiko eines Finney-Angriffs kann nicht eliminiert werden, unabhängig von den Vorsichtsmaßnahmen des Händlers, allerdings wird in jedem Fall die Mitarbeit eines Miners benötigt und eine bestimmte Abfolge von Ereignissen muss ablaufen. Daher ist dieser Angriff weder trivial noch billig in der Durchführung und macht nur Sinn, wenn die Gewinne aus dem Angriff hoch sind. Wie beim Wettlauf-Angriff sollte ein Händler eine Risikoabwägung durchführen, wenn er Zahlungen ohne Bestätigungen akzeptiert.&lt;br /&gt;
&lt;br /&gt;
===Vector76-Angriff===&lt;br /&gt;
&lt;br /&gt;
Dies ist eine Kombination aus dem Wettlauf- und dem Finney-Angriff, die eine Doppelausgabe bei einer Transaktion, die bereits eine Bestätigung hat, ermöglicht. Dieselben Vorsichtsmaßnahmen wie beim Wettlauf-Angriff können das Risiko minimieren.&lt;br /&gt;
&lt;br /&gt;
===Brute-Force-Angriff===&lt;br /&gt;
&lt;br /&gt;
Dieser Angriff kann auch nach einigen Bestätigungen funktionieren, setzt aber eine hohe Hashrate voraus.&lt;br /&gt;
&lt;br /&gt;
Der Angreifer sendet an das Netzwerk zunächst eine Transaktion an den Händler und mint währenddessen privat an einer alternativen Blockchain, in der eine andere Transaktion stattdessen inkludiert ist. Nachdem der Händler &#039;&#039;n&#039;&#039; Bestätigungen erhalten hat, versendet er seine Ware oder führt seine Dienstleistung aus. Wenn der Angreifer bis dann mehr als &#039;&#039;n&#039;&#039; Blöcke gemint hat, sendet er seine alternative Blockchain aus und erhält seine Coins zurück; ansonsten kann er weiter probieren und hoffen, irgendwann die Hauptblockchain zu überholen. Falls er das nie schafft, scheitert der Angriff.&lt;br /&gt;
&lt;br /&gt;
Die Wahrscheinlichkeit, mit der der Angriff funktioniert, ist eine Funktion der Hashrate des Angreifers (prozentuell gesehen) und die Zahl der Bestätigungen, die der Händler benötigt. Wenn der Angreifer zum Beispiel 10% der Hashrate kontrolliert und der Händler auf 6 Bestätigungen wartet, liegt die Wahrscheinlichkeit um die 0,1%.&lt;br /&gt;
&lt;br /&gt;
===&amp;gt;50%-Angriff===&lt;br /&gt;
&lt;br /&gt;
Falls der Angreifer mehr als die Hälfte der Hashrate des gesamten Netzwerks kontrolliert, hat dieser Angriff eine hundertprozentige Erfolgswahrscheinlichkeit. Da er Blöcke schneller als der Rest des Netzwerks generieren kann, kann er einfach so lange bei seiner alternativen Blockchain bleiben, bis sie länger wird als die Hauptblockchain.&lt;br /&gt;
&lt;br /&gt;
Keine Anzahl von Bestätigungen kann diesen Angriff verhindern, allerdings erhöht das Warten auf Bestätigungen die Kosten des Angriffs, die ihn unprofitabel machen könnten oder so verzögern können, dass sich die Umstände ändern und der Angriff scheitert.&lt;br /&gt;
&lt;br /&gt;
==Risikomanagement==&lt;br /&gt;
&lt;br /&gt;
Es gibt Third-Party-Services, die Händlern beim Risikomanagement helfen oder gegen Verluste aus solchen Angriffen versichern.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Schwachstellen]]&lt;br /&gt;
* [[Wie Bitcoin funktioniert]]&lt;br /&gt;
* [http://codinginmysleep.com/bitcoin-attacks-in-plain-english Bitcoin Attacks in Plain English] von David Perry&lt;br /&gt;
&lt;br /&gt;
[[en:Double-spending]]&lt;br /&gt;
&lt;br /&gt;
==Literatur==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Technisches]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=API_f%C3%BCr_Faule&amp;diff=836</id>
		<title>API für Faule</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=API_f%C3%BCr_Faule&amp;diff=836"/>
		<updated>2012-12-28T15:52:03Z</updated>

		<summary type="html">&lt;p&gt;Rising: Die Seite wurde neu angelegt: „Für den faulen oder inkompetenten Webprogrammierer, hier die Bitcoin-API für Faule (ursprünglich einem [http://www.bitcoin.org/smf/index.php?topic=4324.msg7…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Für den faulen oder inkompetenten Webprogrammierer, hier die Bitcoin-API für Faule (ursprünglich einem [http://www.bitcoin.org/smf/index.php?topic=4324.msg77187#msg77187 Forenpost] entnommen, aus dem [https://en.bitcoin.it/wiki/Lazy_API Englischen] übersetzt):&lt;br /&gt;
&lt;br /&gt;
==Problem==&lt;br /&gt;
&lt;br /&gt;
Ein fauler Webprogrammierer will am Bitcoin-System teilnehmen, ohne bitcoind installieren und ein Interface einrichten zu müssen, oder sonstige Händler-Services zu verwenden.&lt;br /&gt;
&lt;br /&gt;
==Senden von Bitcoins==&lt;br /&gt;
&lt;br /&gt;
Hierfür kann man die [https://mtgox.com/support/tradeAPI MtGox API] verwenden.&lt;br /&gt;
&lt;br /&gt;
==Empfangen von Bitcoins==&lt;br /&gt;
&lt;br /&gt;
# Einfügen einer Liste von Bitcoin-Adressen in die Datenbank&lt;br /&gt;
# Jeder Kunde, der mit Bitcoins zahlen möchte, erhält eine dieser Adressen&lt;br /&gt;
# Der Kunde muss sich melden, wenn er bezahlt hat und mindestens X Bestätigungen erhalten hat (X sollte mindestens 1 sein, um das Risiko von Doppelausgaben zu reduzieren)&lt;br /&gt;
# Auf Blockexplorer nachsehen, ob die Coins angekommen sind (unter einer URL wie [http://blockexplorer.com/q/getreceivedbyaddress/19hMEAaRMbEhfSkeU4GT8mgSuyR4t4M6TH/1 dieser) - /1 ist die Mindestzahl der Bestätigungen&lt;br /&gt;
# Wenn die Coins angekommen und die Transaktion bestätigt ist, die Ware versenden oder die Dienstleistung erbringen&lt;br /&gt;
# Nach einiger Zeit kann die Adresse für einen anderen Kunden wiederverwendet werden.&lt;br /&gt;
&lt;br /&gt;
Das Erstellen einer Liste von Adressen und die Wiederverwendung kann vermeidet werden, in dem man einen Wallet-Service verwendet, der eine API hat, die das Erzeugen von neuen Adressen ermöglicht (z.B. [https://instawallet.org/static/api Instawallet]).&lt;br /&gt;
&lt;br /&gt;
==Risiken==&lt;br /&gt;
&lt;br /&gt;
===Externer Service===&lt;br /&gt;
&lt;br /&gt;
BlockExplorer ist ein Service, der von der Blockchain unabhängig betrieben wird. Es gibt keine Garantie außer dem Wort des Betreibers, dass die Information in BlockExplorer mit dem Status der Blockchain übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
Es gab allerdings bisher keine Fälle, in denen solche Abweichungen bekannt wurden.&lt;br /&gt;
&lt;br /&gt;
===Doppelausgaben===&lt;br /&gt;
&lt;br /&gt;
Ein Händler kann Opfer einer [[Doppelausgabe]] werden, wenn er eine Zahlung als erfolgt ansieht, bevor genügend Bestätigungen eingegangen sind.&lt;br /&gt;
&lt;br /&gt;
Da allerdings Angreifer viel Aufwand betreiben müssen, um einen solchen Angriff auszuführen, ist das Risiko, als normaler Händler Opfer eines solchen Angriffs zu werden, gering. Allerdings sollte man nicht auf zu wenige Bestätigungen warten, sofern man keine weiteren Daten über den Käufer hat.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[BitAddress]] zum Generieren von Adressen und Private Keys für ein Offline-Wallet&lt;br /&gt;
* [[BitcoinNotify]] Hier können Adressen registriert werden und E-Mails oder SMS verschickt werden, wenn auf diese Adresse eingezahlt wird&lt;br /&gt;
&lt;br /&gt;
[[en:Lazy_API]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=835</id>
		<title>Einführung für PHP-Entwickler</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=835"/>
		<updated>2012-12-28T15:39:46Z</updated>

		<summary type="html">&lt;p&gt;Rising: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&#039;&#039;&#039;L&#039;&#039;&#039;inux-&#039;&#039;&#039;A&#039;&#039;&#039;pache-&#039;&#039;&#039;M&#039;&#039;&#039;ySQL-&#039;&#039;&#039;P&#039;&#039;&#039;HP) zur Verfügung haben und eine Webanwendung entwickeln möchten, die mit dem Bitcoin-Netzwerk interagiert. Grundlegende Kenntnisse in Bitcoin und PHP sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier geht es um PHP, aber die Prinzipien sind natürlich in jeder Programmiersprache gleich. Informationen über andere Sprachen findest du in der [[API-Referenz (JSON-RPC)|API-Referenz]].&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist es, Bitcoin als Daemon laufen zu lassen, mit dem PHP über lokale HTTP-Requests kommunizieren kann. Eine Library namens [http://jsonrpcphp.org/ JSON-RPC] wird verwendet, um die Funktionen von bitcoind aufzurufen. Bitcoind antwortet dann mit einem [http://de.wikipedia.org/wiki/JSON JSON-Objekt].&lt;br /&gt;
&lt;br /&gt;
== Bitcoin aufsetzen ==&lt;br /&gt;
&lt;br /&gt;
Der Bitcoin-Daemon kann von der [[Hauptseite]] als Binary oder als Quellcode heruntergeladen werden. Details zum Thema Konfiguration von bitcoind findest du zur Zeit leider nur im englischen Wiki unter [https://en.bitcoin.it/wiki/Running_Bitcoin Running Bitcoin].&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Start von bitcoind musst du eine Konfigurationsdatei erstellen (~/.bitcoin/bitcoin.conf unter Linux). Erstellst du keine Konfigurationsdatei, warnt dich bitcoind beim Start.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rpcuser=user&lt;br /&gt;
rpcpassword={hier aus Sicherheitsgründen ein starkes Passwort wählen}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du bitcoind starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind&lt;br /&gt;
# warte einige Sekunden, während es startet.&lt;br /&gt;
$ ./bitcoind getinfo&lt;br /&gt;
# diverse Informationen werden angezeigt. Bekommst du einen Fehler, probiere es so lange erneut, bis du Daten bekommst.&lt;br /&gt;
$ ./bitcoind help&lt;br /&gt;
# für Hilfe zu den Befehlen&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitcoind wird damit beginnen, mit dem Netzwerk zu synchronisieren, und wird die Blockchain komplett herunterladen. Derzeit (Dezember 2012) handelt es sich dabei um mehr als 2 GB Daten, die heruntergeladen und überprüft werden müssen. Es wird daher mehrere Stunden dauern. Du weißt, dass es fertig ist, wenn die Zahl der heruntergeladenen Blocks der [http://blockexplorer.com/q/getblockcount Nummer des aktuellen Blocks] entspricht. &lt;br /&gt;
&lt;br /&gt;
== Getinfo (Bitcoinds Version von &amp;quot;Hello World&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Wenn bitcoind mit dem Initialisierungsprozess fertig ist und die Blockchain heruntergeladen hat, lade die Datei jsonRPCClient.php von [http://jsonrpcphp.org/ JSON-RPC PHP] herunter und platziere sie in einem Verzeichnis, aus dem der Webserver auf Dateien zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Dann erzeuge eine PHP-Datei mit folgendem Inhalt und rufe sie mit dem Browser auf, um zu testen, ob alles funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  require_once &#039;jsonRPCClient.php&#039;;&lt;br /&gt;
  &lt;br /&gt;
  $bitcoin = new jsonRPCClient(&#039;http://benutzername:passwort@127.0.0.1:8332/&#039;);&lt;br /&gt;
   &lt;br /&gt;
  echo &amp;quot;&amp;lt;pre&amp;gt;\n&amp;quot;;&lt;br /&gt;
  print_r($bitcoin-&amp;gt;getinfo());&lt;br /&gt;
  echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Bitcoinmengen können von einem Satoshi (0,00000001 BTC) bis 2,1 Billiarden Satoshis (21 Millionen BTC) reichen. Um Rundungsfehler zu vermelden, musst du sicherstellen, dass deine PHP-Implementation diese Werte unterstützt, ohne Ungenauigkeiten einzubauen. Die meisten PHP-Implementationen unterstützen IEEE-64-Bit-Gleitkommazahlen mit 53 Bits Genauigkeit; in diesem Fall können alle Werte korrekt verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen findest du unter [[Korrektes Handling von Geldbeträgen (JSON-RPC)|Korrektes Handling von Geldbeträgen]].&lt;br /&gt;
&lt;br /&gt;
Falls deine PHP-Implementation 64-Bit-Gleitkommazahlen nicht unterstützen sollte (was sehr selten ist), musst du eine Version von bitcoind verwenden, die die Werte als Zeichenketten (Strings) sendet (&amp;quot;genjix&amp;quot; bietet eine solche Version unter [http://github.com/genjix/bitcoin] an) und die [http://php.net/manual/de/ref.gmp.php GMP-] und [http://php.net/manual/de/ref.bc.php BC-Math-]Libraries für alle Berechnungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Konten ==&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin wird Geld an Adressen gesendet, wobei auf ein Wallet beliebig viele Adressen zeigen können. Standardmäßig zeigt bitcoind die Summe aller Bitcoins in allen Adressen, die zum Wallet gehören.&lt;br /&gt;
&lt;br /&gt;
Allerdings kannst du auch Konten einrichten. Auch Konten können mehrere Adressen zugewiesen sein; jedes Konto agiert wie eine eigene Instanz [https://en.bitcoin.it/wiki/Accounts_explained Mehr Informationen im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind listaccounts&lt;br /&gt;
# zeige die Liste aller Konten und Infos über sie&lt;br /&gt;
$ ./bitcoind getaccountaddress user889&lt;br /&gt;
# zeige die erste Adresse, die dem Konto &amp;quot;user889&amp;quot; zugewiesen ist&lt;br /&gt;
$ ./bitcoind getbalance user889&lt;br /&gt;
# zeige die Summe des Geldes in allen Adressen an, die dem Konto &amp;quot;user889&amp;quot; zugewiesen sind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In deiner Applikation sollte jeder Kunde einen eigenen Benutzernamen (also ein eigenes Konto) haben. Bitcoind gibt mit dem Befehl $bitcoin-&amp;gt;getaccountaddress(&amp;quot;user889&amp;quot;); die erste Adresse des Kontos &amp;quot;user889&amp;quot; aus; mit $bitcoin-&amp;gt;getnewaddress(&amp;quot;user889&amp;quot;); wird eine neue Adresse erzeugt und &amp;quot;user889&amp;quot; zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Der Kunde kann dann sein Geld auf diese Adresse einzahlen. Du kannst dann mit $bitcoin-&amp;gt;getbalance(&amp;quot;user889&amp;quot;, 4); überprüfen, ob die Zahlung am Konto angekommen ist. Die 4 steht für die minimale Zahl an Bestätigung, die eingehen müssen, bis die Zahlung als gültig angesehen wird.&lt;br /&gt;
&lt;br /&gt;
Falls du Konten für mehrere Ein- und Auszahlungen längerfristig nutzen willst, ist es für dich möglicherweise sinnvoller, die Zahlungen in deiner eigenen Datenbank zu speichern. Das vereinfacht Transfers zwischen zwei Konten und löst die Verbindung zwischen Kundenkonten und Bitcoinkonten.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von &amp;quot;getnewaddress&amp;quot; ermöglicht eine größere Anonymität für dich und deine Kunden, da immer neue Adressen es schwer machen, von außen die Geldflüsse zu verfolgen. Allerdings bedeutet es auch, dass dein Wallet mit zahlreichen neuen Adressen gefüllt wird.&lt;br /&gt;
&lt;br /&gt;
Es wird daher empfohlen, die Zahl der Adressen, die ein Kunde verlangen kann, zu beschränken. Hier ein Beispiel (mit Sessions):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    require_once(&#039;jsonRPCClient.php&#039;);&lt;br /&gt;
    $bitcoin = new jsonRPCClient(&#039;http://root:root@127.0.0.1:8332/&#039;); &lt;br /&gt;
    # überprüfe, ob Geld vorhanden ist&lt;br /&gt;
    try {&lt;br /&gt;
        $benutzername = ...&lt;br /&gt;
        if(isset($_SESSION[&#039;sendeadresse&#039;]))&lt;br /&gt;
            $sendeadresse = $_SESSION[&#039;sendeadresse&#039;];&lt;br /&gt;
        else {&lt;br /&gt;
            $sendeadresse = $bitcoin-&amp;gt;getnewaddress($benutzername);&lt;br /&gt;
            $_SESSION[&#039;sendeadresse&#039;] = $sendeadresse;&lt;br /&gt;
        }&lt;br /&gt;
        $balance = $bitcoin-&amp;gt;getbalance($benutzername);&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
        die(&amp;quot;&amp;lt;p&amp;gt;Serverfehler! Bitte den Administrator kontaktieren.&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Codestück erzeugt eine neue Adresse pro Session und speichert sie in einer Session-Variable.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [[API für Faule]]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/eMerchant_Howto eMerchant Howto]&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
&lt;br /&gt;
Diese Seite wurde aus dem [https://en.bitcoin.it/wiki/PHP_developer_intro Englischen] übersetzt.&lt;br /&gt;
&lt;br /&gt;
[[es:Introducción para desarrolladores de PHP]]&lt;br /&gt;
[[en:PHP_developer_intro]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Korrektes_Handling_von_Geldbetr%C3%A4gen_(JSON-RPC)&amp;diff=827</id>
		<title>Korrektes Handling von Geldbeträgen (JSON-RPC)</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Korrektes_Handling_von_Geldbetr%C3%A4gen_(JSON-RPC)&amp;diff=827"/>
		<updated>2012-12-23T19:15:21Z</updated>

		<summary type="html">&lt;p&gt;Rising: Die Seite wurde neu angelegt: „== Überblick == Der Original-Bitcoin-Client speichert alle Bitcoin-Beträge als 64-Bit-Ganzzahlen (Integers), wobei 1 BTC als 100.000.000 (einhundert Millione…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Überblick ==&lt;br /&gt;
Der Original-Bitcoin-Client speichert alle Bitcoin-Beträge als 64-Bit-Ganzzahlen (Integers), wobei 1 BTC als 100.000.000 (einhundert Millionen Satoshis) verarbeitet wird. In der JSON-API werden Beträge hingehen als Gleitkommazahlen mit doppelter Präzision dargestellt, also 1 BTC als 1.00000000.&lt;br /&gt;
&lt;br /&gt;
Wenn du Software schreibst, die das JSON-RPC-Interface verwendet, musst du auf mögliche Gleitkommafehler achten. Du, oder die JSON-Library, die du verwendest, sollte die Beträge entweder zu einer Fixkommadarstellung (mit 8 Nachkommastellen) oder zu einer Ganzzahldarstellung konvertieren. In beiden Fällen muss gerundet werden.&lt;br /&gt;
&lt;br /&gt;
Falsches Handling kann zu problematischen Fehlern führen; wenn du z.B. Nachkommastellen abschneidest, anstatt zu runden, könnten 0.1 BTC als &lt;br /&gt;
&amp;quot;0.09999999 BTC&amp;quot; angezeigt werden (oder schlimmer, &amp;quot;0.09 BTC&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Der Original-Bitcoin-Client führt eine korrekte Rundung für alle Werte, die er über das RPC-Interface enthält, durch. Das heißt, dass wenn der Wert 0.1 durch deine JSON-RPC-Library zum Wert &amp;quot;0.099999999999&amp;quot; konvertiert wird, dass dieser Wert wieder zu den nächsten 0.00000001 Bitcoins gerundet und daher korrekt als 0.1 BTC behandelt wird.&lt;br /&gt;
&lt;br /&gt;
Der Rest der Seite enthält Beispielcode für verschiedene JSON-Libraries und Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
== BASH ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 function JSONtoAmount() {&lt;br /&gt;
     printf &#039;%.8f&#039; &amp;quot;$1&amp;quot; | tr -d &#039;.&#039;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== C/C++ ==&lt;br /&gt;
C/C++ JSON-Libraries geben die JavaScript-Zahl als Typ &amp;quot;double&amp;quot; zurück. Um von einem &amp;quot;double&amp;quot; auf einen 64-Bit-Integer zu konvertieren, multipliziere mit 100.000.000 und runde auf die nächste ganze Zahl:&lt;br /&gt;
 int64_t JSONtoAmount(double value) {&lt;br /&gt;
     return (int64_t)(value * 1e8 + (value &amp;lt; 0.0 ? -.5 : .5));&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Um auf einen JSON-Wert zu konvertieren, dividiere durch 100.000.000,0 und stelle sicher, dass deine JSON-Implementation &amp;quot;doubles&amp;quot; mit mindestens 8 Stellen nach dem Komma ausgibt:&lt;br /&gt;
  double forJSON = (double)amount / 1e8;&lt;br /&gt;
&lt;br /&gt;
== ECMAScript ==&lt;br /&gt;
&lt;br /&gt;
 function JSONtoAmount(value) {&lt;br /&gt;
     return Math.round(1e8 * value);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Perl ==&lt;br /&gt;
 sub JSONtoAmount {&lt;br /&gt;
     return sprintf &#039;%.0f&#039;, 1e8 * shift;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
 function JSONtoAmount($value) {&lt;br /&gt;
     return round($value * 1e8);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
 def JSONtoAmount(value):&lt;br /&gt;
     return long(round(value * 1e8))&lt;br /&gt;
 def AmountToJSON(amount):&lt;br /&gt;
     return float(amount / 1e8)&lt;br /&gt;
&lt;br /&gt;
== Common Lisp ==&lt;br /&gt;
  (defun json-to-amount (n)&lt;br /&gt;
    (coerce (round (* n 1e8)) &#039;integer))&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorsicht&#039;&#039;&#039;: Die CL-JSON-Library behandelt Zahlen standardmäßig als Gleitkommazahlen mit einfacher Präzision. Mit dem folgenden Codestück kannst du stattdessen Zahlen mit doppelter Präzision verwenden:&lt;br /&gt;
&lt;br /&gt;
   (set-custom-vars :real (lambda (n)&lt;br /&gt;
                             (json::parse-number (concatenate &#039;string n &amp;quot;d0&amp;quot;))))&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel wurde aus dem [https://en.bitcoin.it/wiki/Proper_Money_Handling_%28JSON-RPC%29 Englischen]] übersetzt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Technisches]]&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;br /&gt;
&lt;br /&gt;
[[en:Proper_Money_Handling_(JSON-RPC)]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=826</id>
		<title>Einführung für PHP-Entwickler</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=826"/>
		<updated>2012-12-23T19:07:02Z</updated>

		<summary type="html">&lt;p&gt;Rising: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&#039;&#039;&#039;L&#039;&#039;&#039;inux-&#039;&#039;&#039;A&#039;&#039;&#039;pache-&#039;&#039;&#039;M&#039;&#039;&#039;ySQL-&#039;&#039;&#039;P&#039;&#039;&#039;HP) zur Verfügung haben und eine Webanwendung entwickeln möchten, die mit dem Bitcoin-Netzwerk interagiert. Grundlegende Kenntnisse in Bitcoin und PHP sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier geht es um PHP, aber die Prinzipien sind natürlich in jeder Programmiersprache gleich. Informationen über andere Sprachen findest du in der [[API-Referenz (JSON-RPC)|API-Referenz]].&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist es, Bitcoin als Daemon laufen zu lassen, mit dem PHP über lokale HTTP-Requests kommunizieren kann. Eine Library namens [http://jsonrpcphp.org/ JSON-RPC] wird verwendet, um die Funktionen von bitcoind aufzurufen. Bitcoind antwortet dann mit einem [http://de.wikipedia.org/wiki/JSON JSON-Objekt].&lt;br /&gt;
&lt;br /&gt;
== Bitcoin aufsetzen ==&lt;br /&gt;
&lt;br /&gt;
Der Bitcoin-Daemon kann von der [[Hauptseite]] als Binary oder als Quellcode heruntergeladen werden. Details zum Thema Konfiguration von bitcoind findest du zur Zeit leider nur im englischen Wiki unter [https://en.bitcoin.it/wiki/Running_Bitcoin Running Bitcoin].&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Start von bitcoind musst du eine Konfigurationsdatei erstellen (~/.bitcoin/bitcoin.conf unter Linux). Erstellst du keine Konfigurationsdatei, warnt dich bitcoind beim Start.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rpcuser=user&lt;br /&gt;
rpcpassword={hier aus Sicherheitsgründen ein starkes Passwort wählen}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du bitcoind starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind&lt;br /&gt;
# warte einige Sekunden, während es startet.&lt;br /&gt;
$ ./bitcoind getinfo&lt;br /&gt;
# diverse Informationen werden angezeigt. Bekommst du einen Fehler, probiere es so lange erneut, bis du Daten bekommst.&lt;br /&gt;
$ ./bitcoind help&lt;br /&gt;
# für Hilfe zu den Befehlen&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitcoind wird damit beginnen, mit dem Netzwerk zu synchronisieren, und wird die Blockchain komplett herunterladen. Derzeit (Dezember 2012) handelt es sich dabei um mehr als 2 GB Daten, die heruntergeladen und überprüft werden müssen. Es wird daher mehrere Stunden dauern. Du weißt, dass es fertig ist, wenn die Zahl der heruntergeladenen Blocks der [http://blockexplorer.com/q/getblockcount Nummer des aktuellen Blocks] entspricht. &lt;br /&gt;
&lt;br /&gt;
== Getinfo (Bitcoinds Version von &amp;quot;Hello World&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Wenn bitcoind mit dem Initialisierungsprozess fertig ist und die Blockchain heruntergeladen hat, lade die Datei jsonRPCClient.php von [http://jsonrpcphp.org/ JSON-RPC PHP] herunter und platziere sie in einem Verzeichnis, aus dem der Webserver auf Dateien zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Dann erzeuge eine PHP-Datei mit folgendem Inhalt und rufe sie mit dem Browser auf, um zu testen, ob alles funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  require_once &#039;jsonRPCClient.php&#039;;&lt;br /&gt;
  &lt;br /&gt;
  $bitcoin = new jsonRPCClient(&#039;http://benutzername:passwort@127.0.0.1:8332/&#039;);&lt;br /&gt;
   &lt;br /&gt;
  echo &amp;quot;&amp;lt;pre&amp;gt;\n&amp;quot;;&lt;br /&gt;
  print_r($bitcoin-&amp;gt;getinfo());&lt;br /&gt;
  echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Bitcoinmengen können von einem Satoshi (0,00000001 BTC) bis 2,1 Billiarden Satoshis (21 Millionen BTC) reichen. Um Rundungsfehler zu vermelden, musst du sicherstellen, dass deine PHP-Implementation diese Werte unterstützt, ohne Ungenauigkeiten einzubauen. Die meisten PHP-Implementationen unterstützen IEEE-64-Bit-Gleitkommazahlen mit 53 Bits Genauigkeit; in diesem Fall können alle Werte korrekt verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen findest du unter [[Korrektes Handling von Geldbeträgen (JSON-RPC)|Korrektes Handling von Geldbeträgen]].&lt;br /&gt;
&lt;br /&gt;
Falls deine PHP-Implementation 64-Bit-Gleitkommazahlen nicht unterstützen sollte (was sehr selten ist), musst du eine Version von bitcoind verwenden, die die Werte als Zeichenketten (Strings) sendet (&amp;quot;genjix&amp;quot; bietet eine solche Version unter [http://github.com/genjix/bitcoin] an) und die [http://php.net/manual/de/ref.gmp.php GMP-] und [http://php.net/manual/de/ref.bc.php BC-Math-]Libraries für alle Berechnungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Konten ==&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin wird Geld an Adressen gesendet, wobei auf ein Wallet beliebig viele Adressen zeigen können. Standardmäßig zeigt bitcoind die Summe aller Bitcoins in allen Adressen, die zum Wallet gehören.&lt;br /&gt;
&lt;br /&gt;
Allerdings kannst du auch Konten einrichten. Auch Konten können mehrere Adressen zugewiesen sein; jedes Konto agiert wie eine eigene Instanz [https://en.bitcoin.it/wiki/Accounts_explained Mehr Informationen im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind listaccounts&lt;br /&gt;
# zeige die Liste aller Konten und Infos über sie&lt;br /&gt;
$ ./bitcoind getaccountaddress user889&lt;br /&gt;
# zeige die erste Adresse, die dem Konto &amp;quot;user889&amp;quot; zugewiesen ist&lt;br /&gt;
$ ./bitcoind getbalance user889&lt;br /&gt;
# zeige die Summe des Geldes in allen Adressen an, die dem Konto &amp;quot;user889&amp;quot; zugewiesen sind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In deiner Applikation sollte jeder Kunde einen eigenen Benutzernamen (also ein eigenes Konto) haben. Bitcoind gibt mit dem Befehl $bitcoin-&amp;gt;getaccountaddress(&amp;quot;user889&amp;quot;); die erste Adresse des Kontos &amp;quot;user889&amp;quot; aus; mit $bitcoin-&amp;gt;getnewaddress(&amp;quot;user889&amp;quot;); wird eine neue Adresse erzeugt und &amp;quot;user889&amp;quot; zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Der Kunde kann dann sein Geld auf diese Adresse einzahlen. Du kannst dann mit $bitcoin-&amp;gt;getbalance(&amp;quot;user889&amp;quot;, 4); überprüfen, ob die Zahlung am Konto angekommen ist. Die 4 steht für die minimale Zahl an Bestätigung, die eingehen müssen, bis die Zahlung als gültig angesehen wird.&lt;br /&gt;
&lt;br /&gt;
Falls du Konten für mehrere Ein- und Auszahlungen längerfristig nutzen willst, ist es für dich möglicherweise sinnvoller, die Zahlungen in deiner eigenen Datenbank zu speichern. Das vereinfacht Transfers zwischen zwei Konten und löst die Verbindung zwischen Kundenkonten und Bitcoinkonten.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von &amp;quot;getnewaddress&amp;quot; ermöglicht eine größere Anonymität für dich und deine Kunden, da immer neue Adressen es schwer machen, von außen die Geldflüsse zu verfolgen. Allerdings bedeutet es auch, dass dein Wallet mit zahlreichen neuen Adressen gefüllt wird.&lt;br /&gt;
&lt;br /&gt;
Es wird daher empfohlen, die Zahl der Adressen, die ein Kunde verlangen kann, zu beschränken. Hier ein Beispiel (mit Sessions):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    require_once(&#039;jsonRPCClient.php&#039;);&lt;br /&gt;
    $bitcoin = new jsonRPCClient(&#039;http://root:root@127.0.0.1:8332/&#039;); &lt;br /&gt;
    # überprüfe, ob Geld vorhanden ist&lt;br /&gt;
    try {&lt;br /&gt;
        $benutzername = ...&lt;br /&gt;
        if(isset($_SESSION[&#039;sendeadresse&#039;]))&lt;br /&gt;
            $sendeadresse = $_SESSION[&#039;sendeadresse&#039;];&lt;br /&gt;
        else {&lt;br /&gt;
            $sendeadresse = $bitcoin-&amp;gt;getnewaddress($benutzername);&lt;br /&gt;
            $_SESSION[&#039;sendeadresse&#039;] = $sendeadresse;&lt;br /&gt;
        }&lt;br /&gt;
        $balance = $bitcoin-&amp;gt;getbalance($benutzername);&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
        die(&amp;quot;&amp;lt;p&amp;gt;Serverfehler! Bitte den Administrator kontaktieren.&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Codestück erzeugt eine neue Adresse pro Session und speichert sie in einer Session-Variable.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/Lazy_API Lazy API]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/eMerchant_Howto eMerchant Howto]&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
&lt;br /&gt;
Diese Seite wurde aus dem [https://en.bitcoin.it/wiki/PHP_developer_intro Englischen] übersetzt.&lt;br /&gt;
&lt;br /&gt;
[[es:Introducción para desarrolladores de PHP]]&lt;br /&gt;
[[en:PHP_developer_intro]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=825</id>
		<title>Einführung für PHP-Entwickler</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=825"/>
		<updated>2012-12-23T19:04:58Z</updated>

		<summary type="html">&lt;p&gt;Rising: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&#039;&#039;&#039;L&#039;&#039;&#039;inux-&#039;&#039;&#039;A&#039;&#039;&#039;pache-&#039;&#039;&#039;M&#039;&#039;&#039;ySQL-&#039;&#039;&#039;P&#039;&#039;&#039;HP) zur Verfügung haben und eine Webanwendung entwickeln möchten, die mit dem Bitcoin-Netzwerk interagiert. Grundlegende Kenntnisse in Bitcoin und PHP sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier geht es um PHP, aber die Prinzipien sind natürlich in jeder Programmiersprache gleich. Informationen über andere Sprachen findest du in der [[API-Referenz (JSON-RPC)|API-Referenz]].&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist es, Bitcoin als Daemon laufen zu lassen, mit dem PHP über lokale HTTP-Requests kommunizieren kann. Eine Library namens [http://jsonrpcphp.org/ JSON-RPC] wird verwendet, um die Funktionen von bitcoind aufzurufen. Bitcoind antwortet dann mit einem [http://de.wikipedia.org/wiki/JSON JSON-Objekt].&lt;br /&gt;
&lt;br /&gt;
== Bitcoin aufsetzen ==&lt;br /&gt;
&lt;br /&gt;
Der Bitcoin-Daemon kann von der [[Hauptseite]] als Binary oder als Quellcode heruntergeladen werden. Details zum Thema Konfiguration von bitcoind findest du zur Zeit leider nur im englischen Wiki unter [https://en.bitcoin.it/wiki/Running_Bitcoin Running Bitcoin].&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Start von bitcoind musst du eine Konfigurationsdatei erstellen (~/.bitcoin/bitcoin.conf unter Linux). Erstellst du keine Konfigurationsdatei, warnt dich bitcoind beim Start.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rpcuser=user&lt;br /&gt;
rpcpassword={hier aus Sicherheitsgründen ein starkes Passwort wählen}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du bitcoind starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind&lt;br /&gt;
# warte einige Sekunden, während es startet.&lt;br /&gt;
$ ./bitcoind getinfo&lt;br /&gt;
# diverse Informationen werden angezeigt. Bekommst du einen Fehler, probiere es so lange erneut, bis du Daten bekommst.&lt;br /&gt;
$ ./bitcoind help&lt;br /&gt;
# für Hilfe zu den Befehlen&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitcoind wird damit beginnen, mit dem Netzwerk zu synchronisieren, und wird die Blockchain komplett herunterladen. Derzeit (Dezember 2012) handelt es sich dabei um mehr als 2 GB Daten, die heruntergeladen und überprüft werden müssen. Es wird daher mehrere Stunden dauern. Du weißt, dass es fertig ist, wenn die Zahl der heruntergeladenen Blocks der [http://blockexplorer.com/q/getblockcount Nummer des aktuellen Blocks] entspricht. &lt;br /&gt;
&lt;br /&gt;
== Getinfo (Bitcoinds Version von &amp;quot;Hello World&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Wenn bitcoind mit dem Initialisierungsprozess fertig ist und die Blockchain heruntergeladen hat, lade die Datei jsonRPCClient.php von [http://jsonrpcphp.org/ JSON-RPC PHP] herunter und platziere sie in einem Verzeichnis, aus dem der Webserver auf Dateien zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Dann erzeuge eine PHP-Datei mit folgendem Inhalt und rufe sie mit dem Browser auf, um zu testen, ob alles funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  require_once &#039;jsonRPCClient.php&#039;;&lt;br /&gt;
  &lt;br /&gt;
  $bitcoin = new jsonRPCClient(&#039;http://benutzername:passwort@127.0.0.1:8332/&#039;);&lt;br /&gt;
   &lt;br /&gt;
  echo &amp;quot;&amp;lt;pre&amp;gt;\n&amp;quot;;&lt;br /&gt;
  print_r($bitcoin-&amp;gt;getinfo());&lt;br /&gt;
  echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Bitcoinmengen können von einem Satoshi (0,00000001 BTC) bis 2,1 Billiarden Satoshis (21 Millionen BTC) reichen. Um Rundungsfehler zu vermelden, musst du sicherstellen, dass deine PHP-Implementation diese Werte unterstützt, ohne Ungenauigkeiten einzubauen. Die meisten PHP-Implementationen unterstützen IEEE-64-Bit-Gleitkommazahlen mit 53 Bits Genauigkeit; in diesem Fall können alle Werte korrekt verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen findest du auf [https://en.bitcoin.it/wiki/Proper_Money_Handling_%28JSON-RPC%29 dieser Seite im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
Falls deine PHP-Implementation 64-Bit-Gleitkommazahlen nicht unterstützen sollte (was sehr selten ist), musst du eine Version von bitcoind verwenden, die die Werte als Zeichenketten (Strings) sendet (&amp;quot;genjix&amp;quot; bietet eine solche Version unter [http://github.com/genjix/bitcoin] an) und die [http://php.net/manual/de/ref.gmp.php GMP-] und [http://php.net/manual/de/ref.bc.php BC-Math-]Libraries für alle Berechnungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Konten ==&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin wird Geld an Adressen gesendet, wobei auf ein Wallet beliebig viele Adressen zeigen können. Standardmäßig zeigt bitcoind die Summe aller Bitcoins in allen Adressen, die zum Wallet gehören.&lt;br /&gt;
&lt;br /&gt;
Allerdings kannst du auch Konten einrichten. Auch Konten können mehrere Adressen zugewiesen sein; jedes Konto agiert wie eine eigene Instanz [https://en.bitcoin.it/wiki/Accounts_explained Mehr Informationen im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind listaccounts&lt;br /&gt;
# zeige die Liste aller Konten und Infos über sie&lt;br /&gt;
$ ./bitcoind getaccountaddress user889&lt;br /&gt;
# zeige die erste Adresse, die dem Konto &amp;quot;user889&amp;quot; zugewiesen ist&lt;br /&gt;
$ ./bitcoind getbalance user889&lt;br /&gt;
# zeige die Summe des Geldes in allen Adressen an, die dem Konto &amp;quot;user889&amp;quot; zugewiesen sind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In deiner Applikation sollte jeder Kunde einen eigenen Benutzernamen (also ein eigenes Konto) haben. Bitcoind gibt mit dem Befehl $bitcoin-&amp;gt;getaccountaddress(&amp;quot;user889&amp;quot;); die erste Adresse des Kontos &amp;quot;user889&amp;quot; aus; mit $bitcoin-&amp;gt;getnewaddress(&amp;quot;user889&amp;quot;); wird eine neue Adresse erzeugt und &amp;quot;user889&amp;quot; zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Der Kunde kann dann sein Geld auf diese Adresse einzahlen. Du kannst dann mit $bitcoin-&amp;gt;getbalance(&amp;quot;user889&amp;quot;, 4); überprüfen, ob die Zahlung am Konto angekommen ist. Die 4 steht für die minimale Zahl an Bestätigung, die eingehen müssen, bis die Zahlung als gültig angesehen wird.&lt;br /&gt;
&lt;br /&gt;
Falls du Konten für mehrere Ein- und Auszahlungen längerfristig nutzen willst, ist es für dich möglicherweise sinnvoller, die Zahlungen in deiner eigenen Datenbank zu speichern. Das vereinfacht Transfers zwischen zwei Konten und löst die Verbindung zwischen Kundenkonten und Bitcoinkonten.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von &amp;quot;getnewaddress&amp;quot; ermöglicht eine größere Anonymität für dich und deine Kunden, da immer neue Adressen es schwer machen, von außen die Geldflüsse zu verfolgen. Allerdings bedeutet es auch, dass dein Wallet mit zahlreichen neuen Adressen gefüllt wird.&lt;br /&gt;
&lt;br /&gt;
Es wird daher empfohlen, die Zahl der Adressen, die ein Kunde verlangen kann, zu beschränken. Hier ein Beispiel (mit Sessions):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    require_once(&#039;jsonRPCClient.php&#039;);&lt;br /&gt;
    $bitcoin = new jsonRPCClient(&#039;http://root:root@127.0.0.1:8332/&#039;); &lt;br /&gt;
    # überprüfe, ob Geld vorhanden ist&lt;br /&gt;
    try {&lt;br /&gt;
        $benutzername = ...&lt;br /&gt;
        if(isset($_SESSION[&#039;sendeadresse&#039;]))&lt;br /&gt;
            $sendeadresse = $_SESSION[&#039;sendeadresse&#039;];&lt;br /&gt;
        else {&lt;br /&gt;
            $sendeadresse = $bitcoin-&amp;gt;getnewaddress($benutzername);&lt;br /&gt;
            $_SESSION[&#039;sendeadresse&#039;] = $sendeadresse;&lt;br /&gt;
        }&lt;br /&gt;
        $balance = $bitcoin-&amp;gt;getbalance($benutzername);&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
        die(&amp;quot;&amp;lt;p&amp;gt;Serverfehler! Bitte den Administrator kontaktieren.&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Codestück erzeugt eine neue Adresse pro Session und speichert sie in einer Session-Variable.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/Lazy_API Lazy API]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/eMerchant_Howto eMerchant Howto]&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
&lt;br /&gt;
Diese Seite wurde aus dem [https://en.bitcoin.it/wiki/PHP_developer_intro Englischen] übersetzt.&lt;br /&gt;
&lt;br /&gt;
[[es:Introducción para desarrolladores de PHP]]&lt;br /&gt;
[[en:PHP_developer_intro]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=824</id>
		<title>Einführung für PHP-Entwickler</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=824"/>
		<updated>2012-12-23T19:01:45Z</updated>

		<summary type="html">&lt;p&gt;Rising: /* &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&#039;&#039;&#039;L&#039;&#039;&#039;inux-&#039;&#039;&#039;A&#039;&#039;&#039;pache-&#039;&#039;&#039;M&#039;&#039;&#039;ySQL-&#039;&#039;&#039;P&#039;&#039;&#039;HP) zur Verfügung haben und eine Webanwendung entwickeln möchten, die mit dem Bitcoin-Netzwerk interagiert. Grundlegende Kenntnisse in Bitcoin und PHP sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier geht es um PHP, aber die Prinzipien sind natürlich in jeder Programmiersprache gleich. Informationen über andere Sprachen findest du in der [[API-Referenz (JSON-RPC)|API-Referenz]].&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist es, Bitcoin als Daemon laufen zu lassen, mit dem PHP über lokale HTTP-Requests kommunizieren kann. Eine Library namens [http://jsonrpcphp.org/ JSON-RPC] wird verwendet, um die Funktionen von bitcoind aufzurufen. Bitcoind antwortet dann mit einem [http://de.wikipedia.org/wiki/Json JSON-Objekt].&lt;br /&gt;
&lt;br /&gt;
== Bitcoin aufsetzen ==&lt;br /&gt;
&lt;br /&gt;
Der Bitcoin-Daemon kann von der [[Hauptseite]] als Binary oder als Quellcode heruntergeladen werden. Details zum Thema Konfiguration von bitcoind findest du zur Zeit leider nur im englischen Wiki unter [https://en.bitcoin.it/wiki/Running_Bitcoin Running Bitcoin].&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Start von bitcoind musst du eine Konfigurationsdatei erstellen (~/.bitcoin/bitcoin.conf unter Linux). Erstellst du keine Konfigurationsdatei, warnt dich bitcoind beim Start.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rpcuser=user&lt;br /&gt;
rpcpassword={hier aus Sicherheitsgründen ein starkes Passwort wählen}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du bitcoind starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind&lt;br /&gt;
# warte einige Sekunden, während es startet.&lt;br /&gt;
$ ./bitcoind getinfo&lt;br /&gt;
# diverse Informationen werden angezeigt. Bekommst du einen Fehler, probiere es so lange erneut, bis du Daten bekommst.&lt;br /&gt;
$ ./bitcoind help&lt;br /&gt;
# für Hilfe zu den Befehlen&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitcoind wird damit beginnen, mit dem Netzwerk zu synchronisieren, und wird die Blockchain komplett herunterladen. Derzeit (Dezember 2012) handelt es sich dabei um mehr als 2 GB Daten, die heruntergeladen und überprüft werden müssen. Es wird daher mehrere Stunden dauern. Du weißt, dass es fertig ist, wenn die Zahl der heruntergeladenen Blocks der [http://blockexplorer.com/q/getblockcount Nummer des aktuellen Blocks] entspricht. &lt;br /&gt;
&lt;br /&gt;
== Getinfo (Bitcoinds Version von &amp;quot;Hello World&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Wenn bitcoind mit dem Initialisierungsprozess fertig ist und die Blockchain heruntergeladen hat, lade die Datei jsonRPCClient.php von [http://jsonrpcphp.org/ JSON-RPC PHP] herunter und platziere sie in einem Verzeichnis, aus dem der Webserver auf Dateien zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Dann erzeuge eine PHP-Datei mit folgendem Inhalt und rufe sie mit dem Browser auf, um zu testen, ob alles funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  require_once &#039;jsonRPCClient.php&#039;;&lt;br /&gt;
  &lt;br /&gt;
  $bitcoin = new jsonRPCClient(&#039;http://benutzername:passwort@127.0.0.1:8332/&#039;);&lt;br /&gt;
   &lt;br /&gt;
  echo &amp;quot;&amp;lt;pre&amp;gt;\n&amp;quot;;&lt;br /&gt;
  print_r($bitcoin-&amp;gt;getinfo());&lt;br /&gt;
  echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Bitcoinmengen können von einem Satoshi (0,00000001 BTC) bis 2,1 Billiarden Satoshis (21 Millionen BTC) reichen. Um Rundungsfehler zu vermelden, musst du sicherstellen, dass deine PHP-Implementation diese Werte unterstützt, ohne Ungenauigkeiten einzubauen. Die meisten PHP-Implementationen unterstützen IEEE-64-Bit-Gleitkommazahlen mit 53 Bits Genauigkeit; in diesem Fall können alle Werte korrekt verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen findest du auf [https://en.bitcoin.it/wiki/Proper_Money_Handling_%28JSON-RPC%29 dieser Seite im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
Falls deine PHP-Implementation 64-Bit-Gleitkommazahlen nicht unterstützen sollte (was sehr selten ist), musst du eine Version von bitcoind verwenden, die die Werte als Zeichenketten (Strings) sendet (&amp;quot;genjix&amp;quot; bietet eine solche Version unter [http://github.com/genjix/bitcoin] an) und die [http://php.net/manual/de/ref.gmp.php GMP-] und [http://php.net/manual/de/ref.bc.php BC-Math-]Libraries für alle Berechnungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Konten ==&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin wird Geld an Adressen gesendet, wobei auf ein Wallet beliebig viele Adressen zeigen können. Standardmäßig zeigt bitcoind die Summe aller Bitcoins in allen Adressen, die zum Wallet gehören.&lt;br /&gt;
&lt;br /&gt;
Allerdings kannst du auch Konten einrichten. Auch Konten können mehrere Adressen zugewiesen sein; jedes Konto agiert wie eine eigene Instanz [https://en.bitcoin.it/wiki/Accounts_explained Mehr Informationen im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind listaccounts&lt;br /&gt;
# zeige die Liste aller Konten und Infos über sie&lt;br /&gt;
$ ./bitcoind getaccountaddress user889&lt;br /&gt;
# zeige die erste Adresse, die dem Konto &amp;quot;user889&amp;quot; zugewiesen ist&lt;br /&gt;
$ ./bitcoind getbalance user889&lt;br /&gt;
# zeige die Summe des Geldes in allen Adressen an, die dem Konto &amp;quot;user889&amp;quot; zugewiesen sind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In deiner Applikation sollte jeder Kunde einen eigenen Benutzernamen (also ein eigenes Konto) haben. Bitcoind gibt mit dem Befehl $bitcoin-&amp;gt;getaccountaddress(&amp;quot;user889&amp;quot;); die erste Adresse des Kontos &amp;quot;user889&amp;quot; aus; mit $bitcoin-&amp;gt;getnewaddress(&amp;quot;user889&amp;quot;); wird eine neue Adresse erzeugt und &amp;quot;user889&amp;quot; zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Der Kunde kann dann sein Geld auf diese Adresse einzahlen. Du kannst dann mit $bitcoin-&amp;gt;getbalance(&amp;quot;user889&amp;quot;, 4); überprüfen, ob die Zahlung am Konto angekommen ist. Die 4 steht für die minimale Zahl an Bestätigung, die eingehen müssen, bis die Zahlung als gültig angesehen wird.&lt;br /&gt;
&lt;br /&gt;
Falls du Konten für mehrere Ein- und Auszahlungen längerfristig nutzen willst, ist es für dich möglicherweise sinnvoller, die Zahlungen in deiner eigenen Datenbank zu speichern. Das vereinfacht Transfers zwischen zwei Konten und löst die Verbindung zwischen Kundenkonten und Bitcoinkonten.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von &amp;quot;getnewaddress&amp;quot; ermöglicht eine größere Anonymität für dich und deine Kunden, da immer neue Adressen es schwer machen, von außen die Geldflüsse zu verfolgen. Allerdings bedeutet es auch, dass dein Wallet mit zahlreichen neuen Adressen gefüllt wird.&lt;br /&gt;
&lt;br /&gt;
Es wird daher empfohlen, die Zahl der Adressen, die ein Kunde verlangen kann, zu beschränken. Hier ein Beispiel (mit Sessions):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    require_once(&#039;jsonRPCClient.php&#039;);&lt;br /&gt;
    $bitcoin = new jsonRPCClient(&#039;http://root:root@127.0.0.1:8332/&#039;); &lt;br /&gt;
    # überprüfe, ob Geld vorhanden ist&lt;br /&gt;
    try {&lt;br /&gt;
        $benutzername = ...&lt;br /&gt;
        if(isset($_SESSION[&#039;sendeadresse&#039;]))&lt;br /&gt;
            $sendeadresse = $_SESSION[&#039;sendeadresse&#039;];&lt;br /&gt;
        else {&lt;br /&gt;
            $sendeadresse = $bitcoin-&amp;gt;getnewaddress($benutzername);&lt;br /&gt;
            $_SESSION[&#039;sendeadresse&#039;] = $sendeadresse;&lt;br /&gt;
        }&lt;br /&gt;
        $balance = $bitcoin-&amp;gt;getbalance($benutzername);&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
        die(&amp;quot;&amp;lt;p&amp;gt;Serverfehler! Bitte den Administrator kontaktieren.&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Codestück erzeugt eine neue Adresse pro Session und speichert sie in einer Session-Variable.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/Lazy_API Lazy API]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/eMerchant_Howto eMerchant Howto]&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
&lt;br /&gt;
Diese Seite wurde aus dem [https://en.bitcoin.it/wiki/PHP_developer_intro Englischen] übersetzt.&lt;br /&gt;
&lt;br /&gt;
[[es:Introducción para desarrolladores de PHP]]&lt;br /&gt;
[[en:PHP_developer_intro]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=823</id>
		<title>Einführung für PHP-Entwickler</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=823"/>
		<updated>2012-12-23T18:59:23Z</updated>

		<summary type="html">&lt;p&gt;Rising: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&#039;&#039;&#039;L&#039;&#039;&#039;inux-&#039;&#039;&#039;A&#039;&#039;&#039;pache-&#039;&#039;&#039;M&#039;&#039;&#039;ySQL-&#039;&#039;&#039;P&#039;&#039;&#039;HP) zur Verfügung haben und eine Webanwendung entwickeln möchten, die mit dem Bitcoin-Netzwerk interagiert. Grundlegende Kenntnisse in Bitcoin und PHP sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier geht es um PHP, aber die Prinzipien sind natürlich in jeder Programmiersprache gleich. Informationen über andere Sprachen findest du in der [[API-Referenz (JSON-RPC)|API-Referenz]].&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist es, Bitcoin als Daemon laufen zu lassen, mit dem PHP über lokale HTTP-Requests kommunizieren kann. Eine Library namens [http://jsonrpcphp.org/ JSON-RPC] wird verwendet, um die Funktionen von bitcoind aufzurufen. Bitcoind antwortet dann mit einem [http://de.wikipedia.org/wiki/Json JSON-Objekt].&lt;br /&gt;
&lt;br /&gt;
== Bitcoin aufsetzen ==&lt;br /&gt;
&lt;br /&gt;
Der Bitcoin-Daemon kann von der [[Hauptseite]] als Binary oder als Quellcode heruntergeladen werden. Details zum Thema Konfiguration von bitcoind findest du zur Zeit leider nur im englischen Wiki unter [https://en.bitcoin.it/wiki/Running_Bitcoin Running Bitcoin].&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Start von bitcoind musst du eine Konfigurationsdatei erstellen (~/.bitcoin/bitcoin.conf unter Linux). Erstellst du keine Konfigurationsdatei, warnt dich bitcoind beim Start.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rpcuser=user&lt;br /&gt;
rpcpassword={hier aus Sicherheitsgründen ein starkes Passwort wählen}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du bitcoind starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind&lt;br /&gt;
# warte einige Sekunden, während es startet.&lt;br /&gt;
$ ./bitcoind getinfo&lt;br /&gt;
# diverse Informationen werden angezeigt. Bekommst du einen Fehler, probiere es so lange erneut, bis du Daten bekommst.&lt;br /&gt;
$ ./bitcoind help&lt;br /&gt;
# für Hilfe zu den Befehlen&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitcoind wird damit beginnen, mit dem Netzwerk zu synchronisieren, und wird die Blockchain komplett herunterladen. Derzeit (Dezember 2012) handelt es sich dabei um mehr als 2 GB Daten, die heruntergeladen und überprüft werden müssen. Es wird daher mehrere Stunden dauern. Du weißt, dass es fertig ist, wenn die Zahl der heruntergeladenen Blocks der [http://blockexplorer.com/q/getblockcount Nummer des aktuellen Blocks] entspricht. &lt;br /&gt;
&lt;br /&gt;
== Getinfo (Bitcoinds Version von &amp;quot;Hello World&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Wenn bitcoind mit dem Initialisierungsprozess fertig ist und die Blockchain heruntergeladen hat, lade die Datei jsonRPCClient.php von [http://jsonrpcphp.org/ JSON-RPC PHP] herunter und platziere sie in einem Verzeichnis, aus dem der Webserver auf Dateien zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Dann erzeuge eine PHP-Datei mit folgendem Inhalt und rufe sie mit dem Browser auf, um zu testen, ob alles funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  require_once &#039;jsonRPCClient.php&#039;;&lt;br /&gt;
  &lt;br /&gt;
  $bitcoin = new jsonRPCClient(&#039;http://benutzername:passwort@127.0.0.1:8332/&#039;);&lt;br /&gt;
   &lt;br /&gt;
  echo &amp;quot;&amp;lt;pre&amp;gt;\n&amp;quot;;&lt;br /&gt;
  print_r($bitcoin-&amp;gt;getinfo());&lt;br /&gt;
  echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Bitcoinmengen können von einem Satoshi (0,00000001 BTC) bis 2,1 Billiarden Satoshis (21 Millionen BTC) reichen. Um Rundungsfehler zu vermelden, musst du sicherstellen, dass deine PHP-Implementation diese Werte unterstützt, ohne Ungenauigkeiten einzubauen. Die meisten PHP-Implementationen unterstützen IEEE-64-Bit-Gleitkommazahlen mit 53 Bits Genauigkeit; in diesem Fall können alle Werte korrekt verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen findest du auf [https://en.bitcoin.it/wiki/Proper_Money_Handling_%28JSON-RPC%29 dieser Seite im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
Falls deine PHP-Implementation 64-Bit-Gleitkommazahlen nicht unterstützen sollte (was sehr selten ist), musst du eine Version von bitcoind verwenden, die die Werte als Zeichenketten (Strings) sendet (&amp;quot;genjix&amp;quot; bietet eine solche Version unter [http://github.com/genjix/bitcoin] an) und die [http://php.net/manual/de/ref.gmp.php GMP-] und [http://php.net/manual/de/ref.bc.php BC-Math-]Libraries für alle Berechnungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Konten ==&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin wird Geld an Adressen gesendet, wobei auf ein Wallet beliebig viele Adressen zeigen können. Standardmäßig zeigt bitcoind die Summe aller Bitcoins in allen Adressen, die zum Wallet gehören.&lt;br /&gt;
&lt;br /&gt;
Allerdings kannst du auch Konten einrichten. Auch Konten können mehrere Adressen zugewiesen sein; jedes Konto agiert wie eine eigene Instanz [https://en.bitcoin.it/wiki/Accounts_explained Mehr Informationen im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind listaccounts&lt;br /&gt;
# zeige die Liste aller Konten und Infos über sie&lt;br /&gt;
$ ./bitcoind getaccountaddress user889&lt;br /&gt;
# zeige die erste Adresse, die dem Konto &amp;quot;user889&amp;quot; zugewiesen ist&lt;br /&gt;
$ ./bitcoind getbalance user889&lt;br /&gt;
# zeige die Summe des Geldes in allen Adressen an, die dem Konto &amp;quot;user889&amp;quot; zugewiesen sind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In deiner Applikation sollte jeder Kunde einen eigenen Benutzernamen (also ein eigenes Konto) haben. Bitcoind gibt mit dem Befehl $bitcoin-&amp;gt;getaccountaddress(&amp;quot;user889&amp;quot;); die erste Adresse des Kontos &amp;quot;user889&amp;quot; aus; mit $bitcoin-&amp;gt;getnewaddress(&amp;quot;user889&amp;quot;); wird eine neue Adresse erzeugt und &amp;quot;user889&amp;quot; zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Der Kunde kann dann sein Geld auf diese Adresse einzahlen. Du kannst dann mit $bitcoin-&amp;gt;getbalance(&amp;quot;user889&amp;quot;, 4); überprüfen, ob die Zahlung am Konto angekommen ist. Die 4 steht für die minimale Zahl an Bestätigung, die eingehen müssen, bis die Zahlung als gültig angesehen wird.&lt;br /&gt;
&lt;br /&gt;
Falls du Konten für mehrere Ein- und Auszahlungen längerfristig nutzen willst, ist es für dich möglicherweise sinnvoller, die Zahlungen in deiner eigenen Datenbank zu speichern. Das vereinfacht Transfers zwischen zwei Konten und löst die Verbindung zwischen Kundenkonten und Bitcoinkonten.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von &amp;quot;getnewaddress&amp;quot; ermöglicht eine größere Anonymität für dich und deine Kunden, da immer neue Adressen es schwer machen, von außen die Geldflüsse zu verfolgen. Allerdings bedeutet es auch, dass dein Wallet mit zahlreichen neuen Adressen gefüllt wird.&lt;br /&gt;
&lt;br /&gt;
Es wird daher empfohlen, die Zahl der Adressen, die ein Kunde verlangen kann, zu beschränken. Hier ein Beispiel (mit Sessions):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    require_once(&#039;jsonRPCClient.php&#039;);&lt;br /&gt;
    $bitcoin = new jsonRPCClient(&#039;http://root:root@127.0.0.1:8332/&#039;); &lt;br /&gt;
    # überprüfe, ob Geld vorhanden ist&lt;br /&gt;
    try {&lt;br /&gt;
        $benutzername = ...&lt;br /&gt;
        if(isset($_SESSION[&#039;sendeadresse&#039;]))&lt;br /&gt;
            $sendeadresse = $_SESSION[&#039;sendeadresse&#039;];&lt;br /&gt;
        else {&lt;br /&gt;
            $sendeadresse = $bitcoin-&amp;gt;getnewaddress($benutzername);&lt;br /&gt;
            $_SESSION[&#039;sendeadresse&#039;] = $sendeadresse;&lt;br /&gt;
        }&lt;br /&gt;
        $balance = $bitcoin-&amp;gt;getbalance($benutzername);&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
        die(&amp;quot;&amp;lt;p&amp;gt;Serverfehler! Bitte den Administrator kontaktieren.&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Codestück erzeugt eine neue Adresse pro Session und speichert sie in einer Session-Variable&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/Lazy_API Lazy API]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/eMerchant_Howto eMerchant Howto]&lt;br /&gt;
&lt;br /&gt;
== Hinweis ==&lt;br /&gt;
&lt;br /&gt;
Diese Seite wurde aus dem [https://en.bitcoin.it/wiki/PHP_developer_intro Englischen] übersetzt.&lt;br /&gt;
&lt;br /&gt;
[[es:Introducción para desarrolladores de PHP]]&lt;br /&gt;
[[en:PHP_developer_intro]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=822</id>
		<title>Einführung für PHP-Entwickler</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=822"/>
		<updated>2012-12-23T18:58:32Z</updated>

		<summary type="html">&lt;p&gt;Rising: /* Siehe auch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&#039;&#039;&#039;L&#039;&#039;&#039;inux-&#039;&#039;&#039;A&#039;&#039;&#039;pache-&#039;&#039;&#039;M&#039;&#039;&#039;ySQL-&#039;&#039;&#039;P&#039;&#039;&#039;HP) zur Verfügung haben und eine Webanwendung entwickeln möchten, die mit dem Bitcoin-Netzwerk interagiert. Grundlegende Kenntnisse in Bitcoin und PHP sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier geht es um PHP, aber die Prinzipien sind natürlich in jeder Programmiersprache gleich. Informationen über andere Sprachen findest du in der [[API-Referenz (JSON-RPC)|API-Referenz]].&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist es, Bitcoin als Daemon laufen zu lassen, mit dem PHP über lokale HTTP-Requests kommunizieren kann. Eine Library namens [http://jsonrpcphp.org/ JSON-RPC] wird verwendet, um die Funktionen von bitcoind aufzurufen. Bitcoind antwortet dann mit einem [http://de.wikipedia.org/wiki/Json JSON-Objekt].&lt;br /&gt;
&lt;br /&gt;
== Bitcoin aufsetzen ==&lt;br /&gt;
&lt;br /&gt;
Der Bitcoin-Daemon kann von der [[Hauptseite]] als Binary oder als Quellcode heruntergeladen werden. Details zum Thema Konfiguration von bitcoind findest du zur Zeit leider nur im englischen Wiki unter [https://en.bitcoin.it/wiki/Running_Bitcoin Running Bitcoin].&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Start von bitcoind musst du eine Konfigurationsdatei erstellen (~/.bitcoin/bitcoin.conf unter Linux). Erstellst du keine Konfigurationsdatei, warnt dich bitcoind beim Start.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rpcuser=user&lt;br /&gt;
rpcpassword={hier aus Sicherheitsgründen ein starkes Passwort wählen}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du bitcoind starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind&lt;br /&gt;
# warte einige Sekunden, während es startet.&lt;br /&gt;
$ ./bitcoind getinfo&lt;br /&gt;
# diverse Informationen werden angezeigt. Bekommst du einen Fehler, probiere es so lange erneut, bis du Daten bekommst.&lt;br /&gt;
$ ./bitcoind help&lt;br /&gt;
# für Hilfe zu den Befehlen&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitcoind wird damit beginnen, mit dem Netzwerk zu synchronisieren, und wird die Blockchain komplett herunterladen. Derzeit (Dezember 2012) handelt es sich dabei um mehr als 2 GB Daten, die heruntergeladen und überprüft werden müssen. Es wird daher mehrere Stunden dauern. Du weißt, dass es fertig ist, wenn die Zahl der heruntergeladenen Blocks der [http://blockexplorer.com/q/getblockcount Nummer des aktuellen Blocks] entspricht. &lt;br /&gt;
&lt;br /&gt;
== Getinfo (Bitcoinds Version von &amp;quot;Hello World&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Wenn bitcoind mit dem Initialisierungsprozess fertig ist und die Blockchain heruntergeladen hat, lade die Datei jsonRPCClient.php von [http://jsonrpcphp.org/ JSON-RPC PHP] herunter und platziere sie in einem Verzeichnis, aus dem der Webserver auf Dateien zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Dann erzeuge eine PHP-Datei mit folgendem Inhalt und rufe sie mit dem Browser auf, um zu testen, ob alles funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  require_once &#039;jsonRPCClient.php&#039;;&lt;br /&gt;
  &lt;br /&gt;
  $bitcoin = new jsonRPCClient(&#039;http://benutzername:passwort@127.0.0.1:8332/&#039;);&lt;br /&gt;
   &lt;br /&gt;
  echo &amp;quot;&amp;lt;pre&amp;gt;\n&amp;quot;;&lt;br /&gt;
  print_r($bitcoin-&amp;gt;getinfo());&lt;br /&gt;
  echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Bitcoinmengen können von einem Satoshi (0,00000001 BTC) bis 2,1 Billiarden Satoshis (21 Millionen BTC) reichen. Um Rundungsfehler zu vermelden, musst du sicherstellen, dass deine PHP-Implementation diese Werte unterstützt, ohne Ungenauigkeiten einzubauen. Die meisten PHP-Implementationen unterstützen IEEE-64-Bit-Gleitkommazahlen mit 53 Bits Genauigkeit; in diesem Fall können alle Werte korrekt verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen findest du auf [https://en.bitcoin.it/wiki/Proper_Money_Handling_%28JSON-RPC%29 dieser Seite im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
Falls deine PHP-Implementation 64-Bit-Gleitkommazahlen nicht unterstützen sollte (was sehr selten ist), musst du eine Version von bitcoind verwenden, die die Werte als Zeichenketten (Strings) sendet (&amp;quot;genjix&amp;quot; bietet eine solche Version unter [http://github.com/genjix/bitcoin] an) und die [http://php.net/manual/de/ref.gmp.php GMP-] und [http://php.net/manual/de/ref.bc.php BC-Math-]Libraries für alle Berechnungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Konten ==&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin wird Geld an Adressen gesendet, wobei auf ein Wallet beliebig viele Adressen zeigen können. Standardmäßig zeigt bitcoind die Summe aller Bitcoins in allen Adressen, die zum Wallet gehören.&lt;br /&gt;
&lt;br /&gt;
Allerdings kannst du auch Konten einrichten. Auch Konten können mehrere Adressen zugewiesen sein; jedes Konto agiert wie eine eigene Instanz [https://en.bitcoin.it/wiki/Accounts_explained Mehr Informationen im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind listaccounts&lt;br /&gt;
# zeige die Liste aller Konten und Infos über sie&lt;br /&gt;
$ ./bitcoind getaccountaddress user889&lt;br /&gt;
# zeige die erste Adresse, die dem Konto &amp;quot;user889&amp;quot; zugewiesen ist&lt;br /&gt;
$ ./bitcoind getbalance user889&lt;br /&gt;
# zeige die Summe des Geldes in allen Adressen an, die dem Konto &amp;quot;user889&amp;quot; zugewiesen sind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In deiner Applikation sollte jeder Kunde einen eigenen Benutzernamen (also ein eigenes Konto) haben. Bitcoind gibt mit dem Befehl $bitcoin-&amp;gt;getaccountaddress(&amp;quot;user889&amp;quot;); die erste Adresse des Kontos &amp;quot;user889&amp;quot; aus; mit $bitcoin-&amp;gt;getnewaddress(&amp;quot;user889&amp;quot;); wird eine neue Adresse erzeugt und &amp;quot;user889&amp;quot; zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Der Kunde kann dann sein Geld auf diese Adresse einzahlen. Du kannst dann mit $bitcoin-&amp;gt;getbalance(&amp;quot;user889&amp;quot;, 4); überprüfen, ob die Zahlung am Konto angekommen ist. Die 4 steht für die minimale Zahl an Bestätigung, die eingehen müssen, bis die Zahlung als gültig angesehen wird.&lt;br /&gt;
&lt;br /&gt;
Falls du Konten für mehrere Ein- und Auszahlungen längerfristig nutzen willst, ist es für dich möglicherweise sinnvoller, die Zahlungen in deiner eigenen Datenbank zu speichern. Das vereinfacht Transfers zwischen zwei Konten und löst die Verbindung zwischen Kundenkonten und Bitcoinkonten.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von &amp;quot;getnewaddress&amp;quot; ermöglicht eine größere Anonymität für dich und deine Kunden, da immer neue Adressen es schwer machen, von außen die Geldflüsse zu verfolgen. Allerdings bedeutet es auch, dass dein Wallet mit zahlreichen neuen Adressen gefüllt wird.&lt;br /&gt;
&lt;br /&gt;
Es wird daher empfohlen, die Zahl der Adressen, die ein Kunde verlangen kann, zu beschränken. Hier ein Beispiel (mit Sessions):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    require_once(&#039;jsonRPCClient.php&#039;);&lt;br /&gt;
    $bitcoin = new jsonRPCClient(&#039;http://root:root@127.0.0.1:8332/&#039;); &lt;br /&gt;
    # überprüfe, ob Geld vorhanden ist&lt;br /&gt;
    try {&lt;br /&gt;
        $benutzername = ...&lt;br /&gt;
        if(isset($_SESSION[&#039;sendeadresse&#039;]))&lt;br /&gt;
            $sendeadresse = $_SESSION[&#039;sendeadresse&#039;];&lt;br /&gt;
        else {&lt;br /&gt;
            $sendeadresse = $bitcoin-&amp;gt;getnewaddress($benutzername);&lt;br /&gt;
            $_SESSION[&#039;sendeadresse&#039;] = $sendeadresse;&lt;br /&gt;
        }&lt;br /&gt;
        $balance = $bitcoin-&amp;gt;getbalance($benutzername);&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
        die(&amp;quot;&amp;lt;p&amp;gt;Serverfehler! Bitte den Administrator kontaktieren.&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Codestück erzeugt eine neue Adresse pro Session und speichert sie in einer Session-Variable&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/Lazy_API Lazy API]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/eMerchant_Howto eMerchant Howto]&lt;br /&gt;
&lt;br /&gt;
[[es:Introducción para desarrolladores de PHP]]&lt;br /&gt;
[[en:PHP_developer_intro]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=821</id>
		<title>Einführung für PHP-Entwickler</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=821"/>
		<updated>2012-12-23T18:57:31Z</updated>

		<summary type="html">&lt;p&gt;Rising: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&#039;&#039;&#039;L&#039;&#039;&#039;inux-&#039;&#039;&#039;A&#039;&#039;&#039;pache-&#039;&#039;&#039;M&#039;&#039;&#039;ySQL-&#039;&#039;&#039;P&#039;&#039;&#039;HP) zur Verfügung haben und eine Webanwendung entwickeln möchten, die mit dem Bitcoin-Netzwerk interagiert. Grundlegende Kenntnisse in Bitcoin und PHP sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier geht es um PHP, aber die Prinzipien sind natürlich in jeder Programmiersprache gleich. Informationen über andere Sprachen findest du in der [[API-Referenz (JSON-RPC)|API-Referenz]].&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist es, Bitcoin als Daemon laufen zu lassen, mit dem PHP über lokale HTTP-Requests kommunizieren kann. Eine Library namens [http://jsonrpcphp.org/ JSON-RPC] wird verwendet, um die Funktionen von bitcoind aufzurufen. Bitcoind antwortet dann mit einem [http://de.wikipedia.org/wiki/Json JSON-Objekt].&lt;br /&gt;
&lt;br /&gt;
== Bitcoin aufsetzen ==&lt;br /&gt;
&lt;br /&gt;
Der Bitcoin-Daemon kann von der [[Hauptseite]] als Binary oder als Quellcode heruntergeladen werden. Details zum Thema Konfiguration von bitcoind findest du zur Zeit leider nur im englischen Wiki unter [https://en.bitcoin.it/wiki/Running_Bitcoin Running Bitcoin].&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Start von bitcoind musst du eine Konfigurationsdatei erstellen (~/.bitcoin/bitcoin.conf unter Linux). Erstellst du keine Konfigurationsdatei, warnt dich bitcoind beim Start.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rpcuser=user&lt;br /&gt;
rpcpassword={hier aus Sicherheitsgründen ein starkes Passwort wählen}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du bitcoind starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind&lt;br /&gt;
# warte einige Sekunden, während es startet.&lt;br /&gt;
$ ./bitcoind getinfo&lt;br /&gt;
# diverse Informationen werden angezeigt. Bekommst du einen Fehler, probiere es so lange erneut, bis du Daten bekommst.&lt;br /&gt;
$ ./bitcoind help&lt;br /&gt;
# für Hilfe zu den Befehlen&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitcoind wird damit beginnen, mit dem Netzwerk zu synchronisieren, und wird die Blockchain komplett herunterladen. Derzeit (Dezember 2012) handelt es sich dabei um mehr als 2 GB Daten, die heruntergeladen und überprüft werden müssen. Es wird daher mehrere Stunden dauern. Du weißt, dass es fertig ist, wenn die Zahl der heruntergeladenen Blocks der [http://blockexplorer.com/q/getblockcount Nummer des aktuellen Blocks] entspricht. &lt;br /&gt;
&lt;br /&gt;
== Getinfo (Bitcoinds Version von &amp;quot;Hello World&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Wenn bitcoind mit dem Initialisierungsprozess fertig ist und die Blockchain heruntergeladen hat, lade die Datei jsonRPCClient.php von [http://jsonrpcphp.org/ JSON-RPC PHP] herunter und platziere sie in einem Verzeichnis, aus dem der Webserver auf Dateien zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Dann erzeuge eine PHP-Datei mit folgendem Inhalt und rufe sie mit dem Browser auf, um zu testen, ob alles funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  require_once &#039;jsonRPCClient.php&#039;;&lt;br /&gt;
  &lt;br /&gt;
  $bitcoin = new jsonRPCClient(&#039;http://benutzername:passwort@127.0.0.1:8332/&#039;);&lt;br /&gt;
   &lt;br /&gt;
  echo &amp;quot;&amp;lt;pre&amp;gt;\n&amp;quot;;&lt;br /&gt;
  print_r($bitcoin-&amp;gt;getinfo());&lt;br /&gt;
  echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Bitcoinmengen können von einem Satoshi (0,00000001 BTC) bis 2,1 Billiarden Satoshis (21 Millionen BTC) reichen. Um Rundungsfehler zu vermelden, musst du sicherstellen, dass deine PHP-Implementation diese Werte unterstützt, ohne Ungenauigkeiten einzubauen. Die meisten PHP-Implementationen unterstützen IEEE-64-Bit-Gleitkommazahlen mit 53 Bits Genauigkeit; in diesem Fall können alle Werte korrekt verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen findest du auf [https://en.bitcoin.it/wiki/Proper_Money_Handling_%28JSON-RPC%29 dieser Seite im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
Falls deine PHP-Implementation 64-Bit-Gleitkommazahlen nicht unterstützen sollte (was sehr selten ist), musst du eine Version von bitcoind verwenden, die die Werte als Zeichenketten (Strings) sendet (&amp;quot;genjix&amp;quot; bietet eine solche Version unter [http://github.com/genjix/bitcoin] an) und die [http://php.net/manual/de/ref.gmp.php GMP-] und [http://php.net/manual/de/ref.bc.php BC-Math-]Libraries für alle Berechnungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Konten ==&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin wird Geld an Adressen gesendet, wobei auf ein Wallet beliebig viele Adressen zeigen können. Standardmäßig zeigt bitcoind die Summe aller Bitcoins in allen Adressen, die zum Wallet gehören.&lt;br /&gt;
&lt;br /&gt;
Allerdings kannst du auch Konten einrichten. Auch Konten können mehrere Adressen zugewiesen sein; jedes Konto agiert wie eine eigene Instanz [https://en.bitcoin.it/wiki/Accounts_explained Mehr Informationen im englischen Wiki].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind listaccounts&lt;br /&gt;
# zeige die Liste aller Konten und Infos über sie&lt;br /&gt;
$ ./bitcoind getaccountaddress user889&lt;br /&gt;
# zeige die erste Adresse, die dem Konto &amp;quot;user889&amp;quot; zugewiesen ist&lt;br /&gt;
$ ./bitcoind getbalance user889&lt;br /&gt;
# zeige die Summe des Geldes in allen Adressen an, die dem Konto &amp;quot;user889&amp;quot; zugewiesen sind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In deiner Applikation sollte jeder Kunde einen eigenen Benutzernamen (also ein eigenes Konto) haben. Bitcoind gibt mit dem Befehl $bitcoin-&amp;gt;getaccountaddress(&amp;quot;user889&amp;quot;); die erste Adresse des Kontos &amp;quot;user889&amp;quot; aus; mit $bitcoin-&amp;gt;getnewaddress(&amp;quot;user889&amp;quot;); wird eine neue Adresse erzeugt und &amp;quot;user889&amp;quot; zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Der Kunde kann dann sein Geld auf diese Adresse einzahlen. Du kannst dann mit $bitcoin-&amp;gt;getbalance(&amp;quot;user889&amp;quot;, 4); überprüfen, ob die Zahlung am Konto angekommen ist. Die 4 steht für die minimale Zahl an Bestätigung, die eingehen müssen, bis die Zahlung als gültig angesehen wird.&lt;br /&gt;
&lt;br /&gt;
Falls du Konten für mehrere Ein- und Auszahlungen längerfristig nutzen willst, ist es für dich möglicherweise sinnvoller, die Zahlungen in deiner eigenen Datenbank zu speichern. Das vereinfacht Transfers zwischen zwei Konten und löst die Verbindung zwischen Kundenkonten und Bitcoinkonten.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von &amp;quot;getnewaddress&amp;quot; ermöglicht eine größere Anonymität für dich und deine Kunden, da immer neue Adressen es schwer machen, von außen die Geldflüsse zu verfolgen. Allerdings bedeutet es auch, dass dein Wallet mit zahlreichen neuen Adressen gefüllt wird.&lt;br /&gt;
&lt;br /&gt;
Es wird daher empfohlen, die Zahl der Adressen, die ein Kunde verlangen kann, zu beschränken. Hier ein Beispiel (mit Sessions):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    require_once(&#039;jsonRPCClient.php&#039;);&lt;br /&gt;
    $bitcoin = new jsonRPCClient(&#039;http://root:root@127.0.0.1:8332/&#039;); &lt;br /&gt;
    # überprüfe, ob Geld vorhanden ist&lt;br /&gt;
    try {&lt;br /&gt;
        $benutzername = ...&lt;br /&gt;
        if(isset($_SESSION[&#039;sendeadresse&#039;]))&lt;br /&gt;
            $sendeadresse = $_SESSION[&#039;sendeadresse&#039;];&lt;br /&gt;
        else {&lt;br /&gt;
            $sendeadresse = $bitcoin-&amp;gt;getnewaddress($benutzername);&lt;br /&gt;
            $_SESSION[&#039;sendeadresse&#039;] = $sendeadresse;&lt;br /&gt;
        }&lt;br /&gt;
        $balance = $bitcoin-&amp;gt;getbalance($benutzername);&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
        die(&amp;quot;&amp;lt;p&amp;gt;Serverfehler! Bitte den Administrator kontaktieren.&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Codestück erzeugt eine neue Adresse pro Session und speichert sie in einer Session-Variable&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/Lazy_API]&lt;br /&gt;
* [https://en.bitcoin.it/wiki/eMerchant_Howto]&lt;br /&gt;
&lt;br /&gt;
[[es:Introducción para desarrolladores de PHP]]&lt;br /&gt;
[[en:PHP_developer_intro]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=820</id>
		<title>Einführung für PHP-Entwickler</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Einf%C3%BChrung_f%C3%BCr_PHP-Entwickler&amp;diff=820"/>
		<updated>2012-12-23T18:55:39Z</updated>

		<summary type="html">&lt;p&gt;Rising: Die Seite wurde neu angelegt: „Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&amp;#039;&amp;#039;&amp;#039;L&amp;#039;&amp;#039;&amp;#039;inux-&amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;pache-&amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;ySQL-&amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;HP) zur Verfügung haben und eine Webanwend…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist für Entwickler geschrieben, die eine LAMP-Umgebung (&#039;&#039;&#039;L&#039;&#039;&#039;inux-&#039;&#039;&#039;A&#039;&#039;&#039;pache-&#039;&#039;&#039;M&#039;&#039;&#039;ySQL-&#039;&#039;&#039;P&#039;&#039;&#039;HP) zur Verfügung haben und eine Webanwendung entwickeln möchten, die mit dem Bitcoin-Netzwerk interagiert. Grundlegende Kenntnisse in Bitcoin und PHP sollten vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier geht es um PHP, aber die Prinzipien sind natürlich in jeder Programmiersprache gleich. Informationen über andere Sprachen findest du in der [[API-Referenz (JSON-RPC)|API-Referenz]].&lt;br /&gt;
&lt;br /&gt;
Die einfachste Möglichkeit ist es, Bitcoin als Daemon laufen zu lassen, mit dem PHP über lokale HTTP-Requests kommunizieren kann. Eine Library namens [http://jsonrpcphp.org/ JSON-RPC] wird verwendet, um die Funktionen von bitcoind aufzurufen. Bitcoind antwortet dann mit einem [http://de.wikipedia.org/wiki/Json JSON-Objekt].&lt;br /&gt;
&lt;br /&gt;
== Bitcoin aufsetzen ==&lt;br /&gt;
&lt;br /&gt;
Der Bitcoin-Daemon kann von der [[Hauptseite]] als Binary oder als Quellcode heruntergeladen werden. Details zum Thema Konfiguration von bitcoind findest du zur Zeit leider nur im englischen Wiki unter [[en:Running Bitcoin]].&lt;br /&gt;
&lt;br /&gt;
Vor dem ersten Start von bitcoind musst du eine Konfigurationsdatei erstellen (~/.bitcoin/bitcoin.conf unter Linux). Erstellst du keine Konfigurationsdatei, warnt dich bitcoind beim Start.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rpcuser=user&lt;br /&gt;
rpcpassword={hier aus Sicherheitsgründen ein starkes Passwort wählen}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt kannst du bitcoind starten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind&lt;br /&gt;
# warte einige Sekunden, während es startet.&lt;br /&gt;
$ ./bitcoind getinfo&lt;br /&gt;
# diverse Informationen werden angezeigt. Bekommst du einen Fehler, probiere es so lange erneut, bis du Daten bekommst.&lt;br /&gt;
$ ./bitcoind help&lt;br /&gt;
# für Hilfe zu den Befehlen&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bitcoind wird damit beginnen, mit dem Netzwerk zu synchronisieren, und wird die Blockchain komplett herunterladen. Derzeit (Dezember 2012) handelt es sich dabei um mehr als 2 GB Daten, die heruntergeladen und überprüft werden müssen. Es wird daher mehrere Stunden dauern. Du weißt, dass es fertig ist, wenn die Zahl der heruntergeladenen Blocks der [http://blockexplorer.com/q/getblockcount Nummer des aktuellen Blocks] entspricht. &lt;br /&gt;
&lt;br /&gt;
== Getinfo (Bitcoinds Version von &amp;quot;Hello World&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
Wenn bitcoind mit dem Initialisierungsprozess fertig ist und die Blockchain heruntergeladen hat, lade die Datei jsonRPCClient.php von [http://jsonrpcphp.org/ JSON-RPC PHP] herunter und platziere sie in einem Verzeichnis, aus dem der Webserver auf Dateien zugreifen kann.&lt;br /&gt;
&lt;br /&gt;
Dann erzeuge eine PHP-Datei mit folgendem Inhalt und rufe sie mit dem Browser auf, um zu testen, ob alles funktioniert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  require_once &#039;jsonRPCClient.php&#039;;&lt;br /&gt;
  &lt;br /&gt;
  $bitcoin = new jsonRPCClient(&#039;http://benutzername:passwort@127.0.0.1:8332/&#039;);&lt;br /&gt;
   &lt;br /&gt;
  echo &amp;quot;&amp;lt;pre&amp;gt;\n&amp;quot;;&lt;br /&gt;
  print_r($bitcoin-&amp;gt;getinfo());&lt;br /&gt;
  echo &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Genauigkeit ==&lt;br /&gt;
&lt;br /&gt;
Bitcoinmengen können von einem Satoshi (0,00000001 BTC) bis 2,1 Billiarden Satoshis (21 Millionen BTC) reichen. Um Rundungsfehler zu vermelden, musst du sicherstellen, dass deine PHP-Implementation diese Werte unterstützt, ohne Ungenauigkeiten einzubauen. Die meisten PHP-Implementationen unterstützen IEEE-64-Bit-Gleitkommazahlen mit 53 Bits Genauigkeit; in diesem Fall können alle Werte korrekt verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen findest du auf [[en:Proper Money Handling (JSON-RPC)|dieser Seite im englischen Wiki]].&lt;br /&gt;
&lt;br /&gt;
Falls deine PHP-Implementation 64-Bit-Gleitkommazahlen nicht unterstützen sollte (was sehr selten ist), musst du eine Version von bitcoind verwenden, die die Werte als Zeichenketten (Strings) sendet (&amp;quot;genjix&amp;quot; bietet eine solche Version unter [http://github.com/genjix/bitcoin] an) und die [http://php.net/manual/de/ref.gmp.php GMP-] und [http://php.net/manual/de/ref.bc.php BC-Math-]Libraries für alle Berechnungen verwenden.&lt;br /&gt;
&lt;br /&gt;
== Konten ==&lt;br /&gt;
&lt;br /&gt;
Bei Bitcoin wird Geld an Adressen gesendet, wobei auf ein Wallet beliebig viele Adressen zeigen können. Standardmäßig zeigt bitcoind die Summe aller Bitcoins in allen Adressen, die zum Wallet gehören.&lt;br /&gt;
&lt;br /&gt;
Allerdings kannst du auch Konten einrichten. Auch Konten können mehrere Adressen zugewiesen sein; jedes Konto agiert wie eine eigene Instanz [[en:Accounts explained|Mehr Informationen im englischen Wiki]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ./bitcoind listaccounts&lt;br /&gt;
# zeige die Liste aller Konten und Infos über sie&lt;br /&gt;
$ ./bitcoind getaccountaddress user889&lt;br /&gt;
# zeige die erste Adresse, die dem Konto &amp;quot;user889&amp;quot; zugewiesen ist&lt;br /&gt;
$ ./bitcoind getbalance user889&lt;br /&gt;
# zeige die Summe des Geldes in allen Adressen an, die dem Konto &amp;quot;user889&amp;quot; zugewiesen sind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In deiner Applikation sollte jeder Kunde einen eigenen Benutzernamen (also ein eigenes Konto) haben. Bitcoind gibt mit dem Befehl $bitcoin-&amp;gt;getaccountaddress(&amp;quot;user889&amp;quot;); die erste Adresse des Kontos &amp;quot;user889&amp;quot; aus; mit $bitcoin-&amp;gt;getnewaddress(&amp;quot;user889&amp;quot;); wird eine neue Adresse erzeugt und &amp;quot;user889&amp;quot; zugewiesen.&lt;br /&gt;
&lt;br /&gt;
Der Kunde kann dann sein Geld auf diese Adresse einzahlen. Du kannst dann mit $bitcoin-&amp;gt;getbalance(&amp;quot;user889&amp;quot;, 4); überprüfen, ob die Zahlung am Konto angekommen ist. Die 4 steht für die minimale Zahl an Bestätigungen, die eingehen müssen, bis die Zahlung als gültig angesehen wird.&lt;br /&gt;
&lt;br /&gt;
Falls du Konten für mehrere Ein- und Auszahlungen längerfristig nutzen willst, ist es für dich möglicherweise sinnvoller, die Zahlungen in deiner eigenen Datenbank zu speichern. Das vereinfacht Transfers zwischen zwei Konten und löst die Verbindung zwischen Kundenkonten und Bitcoinkonten.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;getnewaddress&amp;quot; vs. &amp;quot;getaccountaddress&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von &amp;quot;getnewaddress&amp;quot; ermöglicht eine größere Anonymität für dich und deine Kunden, da immer neue Adressen es schwer machen, von außen die Geldflüsse zu verfolgen. Allerdings bedeutet es auch, dass dein Wallet mit zahlreichen neuen Adressen gefüllt wird.&lt;br /&gt;
&lt;br /&gt;
Es wird daher empfohlen, die Zahl der Adressen, die ein Kunde verlangen kann, zu beschränken. Hier ein Beispiel (mit Sessions):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    require_once(&#039;jsonRPCClient.php&#039;);&lt;br /&gt;
    $bitcoin = new jsonRPCClient(&#039;http://root:root@127.0.0.1:8332/&#039;); &lt;br /&gt;
    # überprüfe, ob Geld vorhanden ist&lt;br /&gt;
    try {&lt;br /&gt;
        $benutzername = ...&lt;br /&gt;
        if(isset($_SESSION[&#039;sendeadresse&#039;]))&lt;br /&gt;
            $sendeadresse = $_SESSION[&#039;sendeadresse&#039;];&lt;br /&gt;
        else {&lt;br /&gt;
            $sendeadresse = $bitcoin-&amp;gt;getnewaddress($benutzername);&lt;br /&gt;
            $_SESSION[&#039;sendeadresse&#039;] = $sendeadresse;&lt;br /&gt;
        }&lt;br /&gt;
        $balance = $bitcoin-&amp;gt;getbalance($benutzername);&lt;br /&gt;
    }&lt;br /&gt;
    catch (Exception $e) {&lt;br /&gt;
        die(&amp;quot;&amp;lt;p&amp;gt;Serverfehler! Bitte den Administrator kontaktieren.&amp;lt;/p&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Codestück erzeugt eine neue Adresse pro Session und speichert sie in einer Session-Variable&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [[en:Lazy_API]]&lt;br /&gt;
* [[en:Merchant Howto]]&lt;br /&gt;
&lt;br /&gt;
[[es:Introducción para desarrolladores de PHP]]&lt;br /&gt;
[[en:PHP_developer_intro]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwickler]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Vorlage:MainPage_Topics&amp;diff=819</id>
		<title>Vorlage:MainPage Topics</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Vorlage:MainPage_Topics&amp;diff=819"/>
		<updated>2012-12-23T18:32:25Z</updated>

		<summary type="html">&lt;p&gt;Rising: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
First table is for tutorials. Left column = pages written for end users. Right column = pages for developers.&lt;br /&gt;
Second table is for categories.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;background-color: inherit;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
* [[Einführung]]&lt;br /&gt;
* [[Erste Schritte]]&lt;br /&gt;
* [[Sichere deine Geldbörse]]&lt;br /&gt;
* [[Sicheres Handeln|Beste Handelsmethoden]]&lt;br /&gt;
* [[Mythen]]&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
* [[Einführung für PHP-Entwickler]]&lt;br /&gt;
* [[API-Referenz (JSON-RPC)]]&lt;br /&gt;
* [[Protokoll-Spezifikation]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;background-color: inherit;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[:Category:Client-Anwendungen|Client-Anwendungen]]&lt;br /&gt;
* [[:Category:Mining|Mining]]&lt;br /&gt;
* [[:Category:Wechselmärkte|Wechselmärkte]]&lt;br /&gt;
* [[Presse]]&lt;br /&gt;
|&lt;br /&gt;
* [[:Category:Wirtschaft|Wirtschaft]]&lt;br /&gt;
* [[Handel|Bitcoin-akzeptierende Webseiten]]&lt;br /&gt;
* [[Spenden|Bitcoinspenden-akzeptierende Webseiten]]&lt;br /&gt;
* [[Aktive Prämien|Bitcoin Prämien]]&lt;br /&gt;
* [[Treffen|Treffen]]&lt;br /&gt;
* [[Projekte|Bitcoin Spiele &amp;amp; Projekte]]&lt;br /&gt;
* [[Bitcoin_als_Geschäft_akzeptieren|Bitcoin als Geschäft akzeptieren]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot; class=&amp;quot;noprint&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:Template:MainPage_Topics|action=edit}} &#039;&#039;&#039;Edit&#039;&#039;&#039;]&amp;lt;/span&amp;gt; &amp;amp;ndash; &#039;&#039;&#039;[[Special:Categories|See More]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=API_Referenz_(JSON-RPC)&amp;diff=818</id>
		<title>API Referenz (JSON-RPC)</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=API_Referenz_(JSON-RPC)&amp;diff=818"/>
		<updated>2012-12-23T18:29:35Z</updated>

		<summary type="html">&lt;p&gt;Rising: Rising verschob Seite API Referenz (JSON-RPC) nach API-Referenz (JSON-RPC)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[API-Referenz (JSON-RPC)]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=API-Referenz_(JSON-RPC)&amp;diff=817</id>
		<title>API-Referenz (JSON-RPC)</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=API-Referenz_(JSON-RPC)&amp;diff=817"/>
		<updated>2012-12-23T18:29:35Z</updated>

		<summary type="html">&lt;p&gt;Rising: Rising verschob Seite API Referenz (JSON-RPC) nach API-Referenz (JSON-RPC)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bitcoin steuern ==&lt;br /&gt;
Bitcoin muss zuerst im Server-Modus gestartet werden.&lt;br /&gt;
Um den Servermodus starten zu können müssen Sie zunächst einen &#039;&#039;rpcuser&#039;&#039; und ein &#039;&#039;rpcpassword&#039;&#039; ein der &#039;&#039;bitcoin.conf&#039;&#039; festlegen. Starten Sie danach entweder &#039;&#039;bicoind&#039;&#039; oder &#039;&#039;bitcoin -server&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Sie können den Server nun entweder über die Kommandozeile oder über [http://json-rpc.org/wiki/specification HTTP JSON-RPC] Kommandos steuern.&lt;br /&gt;
&lt;br /&gt;
Hierzu ein paar Beispiele:&lt;br /&gt;
 $ ./bitcoind&lt;br /&gt;
 bitcoin server starting&lt;br /&gt;
 $ ./bitcoind help&lt;br /&gt;
 #Zeigt den Hilfetext mit allen [[Original_Bitcoin_Client/API_call_Liste|RPC-API Befehlen]]&lt;br /&gt;
 #z.B&lt;br /&gt;
 $ ./bitcoind getbalance&lt;br /&gt;
 2000.00000&lt;br /&gt;
&lt;br /&gt;
=== JSON-RPC ===&lt;br /&gt;
Um mit dem Server über JSON-RPC zu kommunizieren muss eine [http://de.wikipedia.org/wiki/HTTP-Authentifizierung HTTP-Authentifizierung] verwendet werden und aus Sicherheitsgründen werden standardmäßig nur Verbindungen von Prozessen auf der lokalen Maschine angenommen.&lt;br /&gt;
Ab version 0.3.14 wird SSL (HTTPS) für Verbindungen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Hier ein paar Beispiele für die Kommunikation per JSON-RPC in verschiedenen Programmiersprachen&lt;br /&gt;
=== Python ===&lt;br /&gt;
[http://json-rpc.org/wiki/python-json-rpc JSON-RPC for Python] ist die offizielle JSON-RPC Implementierung für Python. Sie generiert die RPC-Aufrufe Automatisch. Leider ist die Bibliothek aus Gründen der Kompatibilität relativ ineffizient. [[User:Jgarzik]] hat aus diesem die optimierte Version (nur für Python 2.6 aufwärts) [https://github.com/jgarzik/python-bitcoinrpc Python-BitcoinRPC] erstellt. Diese Version sollte wenn möglich bevorzugt werden.&lt;br /&gt;
&lt;br /&gt;
So lange nur die &#039;&#039;ServiceProxy&#039;&#039; Klasse genutzt wird, ist es dem Benutzer überlassen welche der beiden Paket genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
  from jsonrpc import ServiceProxy&lt;br /&gt;
 &lt;br /&gt;
  access = ServiceProxy(&amp;quot;http://user:password@127.0.0.1:8332&amp;quot;)&lt;br /&gt;
  access.getinfo()&lt;br /&gt;
  access.listreceivedbyaddress(6)&lt;br /&gt;
  #usw...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
Stellen Sie sicher, dass Sie den &#039;&#039;rest-client&#039;&#039; installiert haben oder führen sie gegebenenfalls den Befehl&lt;br /&gt;
 $ gem install rest-client&lt;br /&gt;
aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
=begin&lt;br /&gt;
Benutzung:&lt;br /&gt;
    h = ServiceProxy.new(&#039;http://user:password@127.0.0.1:8332&#039;)&lt;br /&gt;
    puts h.getinfo.call&lt;br /&gt;
    puts h.getbalance.call &#039;accname&#039;&lt;br /&gt;
=end&lt;br /&gt;
require &#039;json&#039;&lt;br /&gt;
require &#039;rest_client&#039;&lt;br /&gt;
 &lt;br /&gt;
class JSONRPCException &amp;lt; RuntimeError&lt;br /&gt;
    def initialize()&lt;br /&gt;
        super()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
class ServiceProxy&lt;br /&gt;
    def initialize(service_url, service_name=nil)&lt;br /&gt;
        @service_url = service_url&lt;br /&gt;
        @service_name = service_name&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    def method_missing(name, *args, &amp;amp;block)&lt;br /&gt;
        if @service_name != nil&lt;br /&gt;
            name = &amp;quot;%s.%s&amp;quot; % [@service_name, name]&lt;br /&gt;
        end&lt;br /&gt;
        return ServiceProxy.new(@service_url, name)&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    def respond_to?(sym)&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    def call(*args)&lt;br /&gt;
        postdata = {&amp;quot;method&amp;quot; =&amp;gt; @service_name, &amp;quot;params&amp;quot; =&amp;gt; args, &amp;quot;id&amp;quot; =&amp;gt; &amp;quot;jsonrpc&amp;quot;}.to_json&lt;br /&gt;
        respdata = RestClient.post @service_url, postdata&lt;br /&gt;
        resp = JSON.parse respdata&lt;br /&gt;
        if resp[&amp;quot;error&amp;quot;] != nil&lt;br /&gt;
            raise JSONRPCException.new, resp[&#039;error&#039;]&lt;br /&gt;
        end&lt;br /&gt;
        return resp[&#039;result&#039;]&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:API reference (JSON-RPC)]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Vorlage:MainPage_Topics&amp;diff=816</id>
		<title>Vorlage:MainPage Topics</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Vorlage:MainPage_Topics&amp;diff=816"/>
		<updated>2012-12-23T18:27:10Z</updated>

		<summary type="html">&lt;p&gt;Rising: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
First table is for tutorials. Left column = pages written for end users. Right column = pages for developers.&lt;br /&gt;
Second table is for categories.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;background-color: inherit;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
* [[Einführung]]&lt;br /&gt;
* [[Erste Schritte]]&lt;br /&gt;
* [[Sichere deine Geldbörse]]&lt;br /&gt;
* [[Sicheres Handeln|Beste Handelsmethoden]]&lt;br /&gt;
* [[Mythen]]&lt;br /&gt;
| scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
* [[Einführung für PHP-Entwickler]]&lt;br /&gt;
* [[API Referenz (JSON-RPC)]]&lt;br /&gt;
* [[Protokoll-Spezifikation]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;background-color: inherit;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 200px;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[:Category:Client-Anwendungen|Client-Anwendungen]]&lt;br /&gt;
* [[:Category:Mining|Mining]]&lt;br /&gt;
* [[:Category:Wechselmärkte|Wechselmärkte]]&lt;br /&gt;
* [[Presse]]&lt;br /&gt;
|&lt;br /&gt;
* [[:Category:Wirtschaft|Wirtschaft]]&lt;br /&gt;
* [[Handel|Bitcoin-akzeptierende Webseiten]]&lt;br /&gt;
* [[Spenden|Bitcoinspenden-akzeptierende Webseiten]]&lt;br /&gt;
* [[Aktive Prämien|Bitcoin Prämien]]&lt;br /&gt;
* [[Treffen|Treffen]]&lt;br /&gt;
* [[Projekte|Bitcoin Spiele &amp;amp; Projekte]]&lt;br /&gt;
* [[Bitcoin_als_Geschäft_akzeptieren|Bitcoin als Geschäft akzeptieren]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right;&amp;quot; class=&amp;quot;noprint&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:Template:MainPage_Topics|action=edit}} &#039;&#039;&#039;Edit&#039;&#039;&#039;]&amp;lt;/span&amp;gt; &amp;amp;ndash; &#039;&#039;&#039;[[Special:Categories|See More]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
	<entry>
		<id>https://de.bitcoin.it/w/index.php?title=Bitcoin_als_Gesch%C3%A4ft_akzeptieren&amp;diff=784</id>
		<title>Bitcoin als Geschäft akzeptieren</title>
		<link rel="alternate" type="text/html" href="https://de.bitcoin.it/w/index.php?title=Bitcoin_als_Gesch%C3%A4ft_akzeptieren&amp;diff=784"/>
		<updated>2012-12-16T15:18:39Z</updated>

		<summary type="html">&lt;p&gt;Rising: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Anleitung richtet sich an Unternehmen, die Waren oder Dienstleistungen für herkömmliche Währungen (wie Euro oder Franken) anbieten und Bitcoin als weitere Bezahlmöglichkeit akzeptieren möchten.&lt;br /&gt;
&lt;br /&gt;
==Warum Bitcoins akzeptieren?==&lt;br /&gt;
&lt;br /&gt;
Bitcoin ist &amp;quot;digitales Bargeld&amp;quot;. Im Gegensatz zur Banküberweisung dauert es nicht mehrere Tage, bis der Betrag angekommen ist und im Gegensatz zur Lastschrift- oder Kreditkartenzahlung gibt es keine Rückbuchungen oder Händlergebühren.&lt;br /&gt;
&lt;br /&gt;
==Rechtliche Grundlagen==&lt;br /&gt;
&lt;br /&gt;
Derzeit ist Bitcoin nicht offiziell als Währung eingestuft, jedoch weist die BaFin (Bundesanstalt für Finanzdienstleistungsaufsicht) in ihrem Merkblatt zum Thema [http://www.bafin.de/SharedDocs/Veroeffentlichungen/DE/Merkblatt/mb_111222_zag.html &amp;quot;Hinweise zu dem Gesetz über die Beaufsichtigung von Zahlungsdiensten (Zahlungsdiensteaufsichtsgesetz - ZAG)&amp;quot;] darauf hin, dass sowohl die Schaffung als Zahlungsmittel bestimmter Werteinheiten als auch ihr Einsatz als Zahlungsmittel erlaubnisfrei zulässig ist.&lt;br /&gt;
&lt;br /&gt;
Somit ist die Akzeptanz von Bitcoin unserer Meinung nach legal, sofern alle anderen gesetzlichen Bestimmungen beachtet werden.&lt;br /&gt;
&lt;br /&gt;
Für die Steuer sind Bitcoin-Umsätze in Euro umzurechnen und als solche zu versteuern. &lt;br /&gt;
&lt;br /&gt;
Diese Hinweise gelten lediglich für Deutschland. In Österreich, der Schweiz und anderen Ländern gelten möglicherweise andere Bestimmungen.&lt;br /&gt;
&lt;br /&gt;
== Bitcoins im Ladengeschäft akzeptieren ==&lt;br /&gt;
&lt;br /&gt;
Falls Sie Bitcoins in einem Ladengeschäft akzeptieren möchten, stellen Sie an Ihrer Kasse einen QR-Code auf, der Ihre Bitcoin-Adresse angibt. (Einen QR-Code-Generator finden Sie zum Beispiel [http://ma.eatgold.com/accept hier].) Diesen QR-Code können Kunden mit ihrem Smartphone scannen und direkt bezahlen. Sie müssen dann nur noch überprüfen, ob die Zahlung eingegangen ist, und können dann die Transaktion über Ihre Kasse wie eine Bargeldtransaktion abrechnen.&lt;br /&gt;
&lt;br /&gt;
Damit Ihre Kunden auch wissen, dass Sie Bitcoins akzeptieren, können Sie ein Schild oder einen Aufkleber prominent an der Kasse anbringen, oder Kunden direkt darauf ansprechen.&lt;br /&gt;
&lt;br /&gt;
[[{{ns:file}}:WeAcceptBitcoin.png‎]]&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nicht gerade in Berlin oder einer anderen Großstadt sitzen, könnte es sich bei dieser Gelegenheit lohnen, bei der Lokalzeitung anzurufen und bekanntzugeben, dass Sie als erster Händler in X-Stadt Bitcoins akzeptieren. Vielleicht finden Sie in der nächsten Ausgabe einen Artikel, der nicht nur für Ihr Geschäft, sondern auch für Bitcoin kostenlose Werbung bedeutet.&lt;br /&gt;
&lt;br /&gt;
== Nutzung eines Händler-Services  ==&lt;br /&gt;
Falls Sie einen Online-Shop betreiben, ist die einfachste Lösung, einen [[#Händler-Service|Händler-Service]] zu nutzen. Dieser Service akzeptiert für Sie die Bitcoins. Wenn Sie mit Bitcoins direkt nichts zu tun haben möchten (was Ihre Buchhaltung vereinfacht), können Sie den Service auch nutzen, um Bitcoin-Einnahmen direkt in Euro oder Franken umzuwandeln und auf Ihr Geschäftskonto zu buchen.&lt;br /&gt;
&lt;br /&gt;
==Lieferungen auf Rechnung==&lt;br /&gt;
&lt;br /&gt;
Liefern Sie Waren gegen Rechnung, ist es am besten, wenn Sie für jede Rechnung eine eigene Bitcoin-Adresse erstellen. Auf diese Weise kann es keine Verwirrung geben, wenn zwei Kunden denselben Rechnungsbetrag an Sie bezahlen sollen.&lt;br /&gt;
&lt;br /&gt;
Vergessen Sie nicht, auf der Rechnung anzugeben, wieviele BTC Ihnen der Kunde überweisen sollte. Ein Hinweis auf der Rechnung könnte etwa so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Alternativ zu den üblichen Zahlungsmethoden bieten wir auch die Zahlung mit Bitcoins an. Mehr Informationen über Bitcoin finden Sie unter http://weusecoins.com. Überweisen Sie bis zum (Datum) die Summe von (Summe) BTC auf die Adresse (Adresse), gilt die Rechnung als bezahlt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sie müssen dann nur noch auf den Zahlungseingang auf der entsprechenden Adresse warten. Auch der Kunde hat die Möglichkeit, z.B. über [[Block Explorer]] nachzuweisen, dass die Rechnung bezahlt wurde.&lt;br /&gt;
&lt;br /&gt;
Betreiben Sie eine Webseite, können Sie Ihren Kunden außerdem anbieten, unter einer URL wie http://www.ihrewebsite.de/bitcoin/(Rechnungsnummer) die Bitcoin-Adresse für die jeweilige Rechnungsnummer einzusehen. Dies erspart dem Kunden das mühsame und fehlerbehaftete Abtippen der Adresse von der Rechnung und ermöglicht es ihm, die Adresse einfach zu kopieren und in seinen Bitcoin-Client einzufügen.&lt;br /&gt;
&lt;br /&gt;
==Preise festlegen==&lt;br /&gt;
Viele Händler legen ihre Preise nach dem aktuellen Bitcoinkurs zum Zeitpunkt des Angebots fest. Wenn Sie einen [[#Händler-Services | Händler-Service]] nutzen, errechnet dieser automatisch den BTC-Preis anhand des aktuellen Kurses.&lt;br /&gt;
&lt;br /&gt;
Natürlich können Sie den Preis auch selbst festlegen. Nützlich ist dabei die Seite [[Bitcoin Prices]], die die Bitcoin-Wechselkurse zu zahlreichen Währungen auf verschiedenen Börsen auflistet.&lt;br /&gt;
&lt;br /&gt;
Möchten Sie Risiken durch Kursschwankungen eliminieren, können Sie einen [[#Händler-Services | Händler-Service]] nutzen und ihn anweisen, eingehende Bitcoin-Zahlungen sofort in Euro oder Franken umzutauschen und Ihrem Konto gutzuschreiben.&lt;br /&gt;
&lt;br /&gt;
==Kaufvertrag==&lt;br /&gt;
Bei einem Kaufvertrag mit Bezahlung in Bitcoin sollten einige wichtige Punkte beachtet werden, um Probleme für beide Seiten zu verhindern:&lt;br /&gt;
&lt;br /&gt;
* Transaktionsgebühren sind bei Bitcoin stets vom Sender der Zahlung zu bezahlen.&lt;br /&gt;
* Da es keinen &amp;quot;eingebauten Käuferschutz&amp;quot; bei Bitcoin gibt, sollte bei größeren Transaktionen angeboten werden, einen [[:Category:Treuhand_Service| Treuhand-Service]] beizuziehen.&lt;br /&gt;
* Da der Bitcoinkurs stark volatil ist, sollte eine Regelung getroffen werden, die bei großen Kursschwankungen eine Rückabwicklung oder Anpassung des Preises ermöglicht.&lt;br /&gt;
&lt;br /&gt;
==Händler-Services ==&lt;br /&gt;
* [https://www.bitpay.com BitPay]&lt;br /&gt;
* [https://merchant.bitutils.com BitUtils]&lt;br /&gt;
* [https://mtgox.com/merchant MtGox]&lt;br /&gt;
* [https://paysius.com Paysius]&lt;br /&gt;
* [https://walletbit.com WalletBit]&lt;br /&gt;
&lt;br /&gt;
[[Category:Wirtschaft]]&lt;br /&gt;
[[en:How_to_accept_Bitcoin,_for_small_businesses]]&lt;/div&gt;</summary>
		<author><name>Rising</name></author>
	</entry>
</feed>