API-Referenz (JSON-RPC): Unterschied zwischen den Versionen

Aus Bitcoin Wiki
Wechseln zu: Navigation, Suche
(Added Interwiki)
K
Zeile 1: Zeile 1:
 
== Bitcoin steuern ==
 
== Bitcoin steuern ==
 
Bitcoin muss zuerst im Server-Modus gestartet werden.
 
Bitcoin muss zuerst im Server-Modus gestartet werden.
Um den servermodus starten zu können muüssen Sie zunächst einen ''rpcuser'' und ein ''rpcpassword'' ein der ''bitcoin.conf'' festlegen. Starten Sie danach entweder ''bicoind'' oder ''bitcoin -server''.
+
Um den Servermodus starten zu können müssen Sie zunächst einen ''rpcuser'' und ein ''rpcpassword'' ein der ''bitcoin.conf'' festlegen. Starten Sie danach entweder ''bicoind'' oder ''bitcoin -server''.
  
Sie können den Server nun entweder über die Komandozeile oder über [http://json-rpc.org/wiki/specification HTTP JSON-RPC] kommandos steuern.
+
Sie können den Server nun entweder über die Kommandozeile oder über [http://json-rpc.org/wiki/specification HTTP JSON-RPC] Kommandos steuern.
  
 
Hierzu ein paar Beispiele:
 
Hierzu ein paar Beispiele:
Zeile 15: Zeile 15:
  
 
=== JSON-RPC ===
 
=== JSON-RPC ===
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.
+
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.
Ab version 0.3.14 wird SSL (HTTPS) für verbindungen unterstützt.
+
Ab version 0.3.14 wird SSL (HTTPS) für Verbindungen unterstützt.
  
 
== Beispiele ==
 
== Beispiele ==
Hier ein paar Beispiele für die Komminukation per JSON-RPC in verschiedenen Programmiersprachen
+
Hier ein paar Beispiele für die Kommunikation per JSON-RPC in verschiedenen Programmiersprachen
 
=== Python ===
 
=== Python ===
[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.
+
[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.
  
So lange nur die ''ServiceProxy'' Klasse genutzt wird ist es dem benutzer überlassen welceh der beiden Oaket genutzt werden.
+
So lange nur die ''ServiceProxy'' Klasse genutzt wird, ist es dem Benutzer überlassen welche der beiden Paket genutzt werden.
  
 
Hier ein Beispiel:
 
Hier ein Beispiel:
Zeile 36: Zeile 36:
 
</source>
 
</source>
 
=== Ruby ===
 
=== Ruby ===
Stelllen sie sicher, dass Sie den ''rest-client'' installiert haben oder führen sie gegebenenfalls den Befehl
+
Stellen Sie sicher, dass Sie den ''rest-client'' installiert haben oder führen sie gegebenenfalls den Befehl
 
  $ gem install rest-client
 
  $ gem install rest-client
 
aus.
 
aus.

Version vom 19. Januar 2012, 13:18 Uhr

Bitcoin steuern

Bitcoin muss zuerst im Server-Modus gestartet werden. Um den Servermodus starten zu können müssen Sie zunächst einen rpcuser und ein rpcpassword ein der bitcoin.conf festlegen. Starten Sie danach entweder bicoind oder bitcoin -server.

Sie können den Server nun entweder über die Kommandozeile oder über HTTP JSON-RPC Kommandos steuern.

Hierzu ein paar Beispiele:

$ ./bitcoind
bitcoin server starting
$ ./bitcoind help
#Zeigt den Hilfetext mit allen RPC-API Befehlen
#z.B
$ ./bitcoind getbalance
2000.00000

JSON-RPC

Um mit dem Server über JSON-RPC zu kommunizieren muss eine HTTP-Authentifizierung verwendet werden und aus Sicherheitsgründen werden standardmäßig nur Verbindungen von Prozessen auf der lokalen Maschine angenommen. Ab version 0.3.14 wird SSL (HTTPS) für Verbindungen unterstützt.

Beispiele

Hier ein paar Beispiele für die Kommunikation per JSON-RPC in verschiedenen Programmiersprachen

Python

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) Python-BitcoinRPC erstellt. Diese Version sollte wenn möglich bevorzugt werden.

So lange nur die ServiceProxy Klasse genutzt wird, ist es dem Benutzer überlassen welche der beiden Paket genutzt werden.

Hier ein Beispiel:

  from jsonrpc import ServiceProxy
 
  access = ServiceProxy("http://user:password@127.0.0.1:8332")
  access.getinfo()
  access.listreceivedbyaddress(6)
  #usw...

Ruby

Stellen Sie sicher, dass Sie den rest-client installiert haben oder führen sie gegebenenfalls den Befehl

$ gem install rest-client

aus.

=begin
Benutzung:
    h = ServiceProxy.new('http://user:password@127.0.0.1:8332')
    puts h.getinfo.call
    puts h.getbalance.call 'accname'
=end
require 'json'
require 'rest_client'
 
class JSONRPCException < RuntimeError
    def initialize()
        super()
    end
end
 
class ServiceProxy
    def initialize(service_url, service_name=nil)
        @service_url = service_url
        @service_name = service_name
    end
 
    def method_missing(name, *args, &block)
        if @service_name != nil
            name = "%s.%s" % [@service_name, name]
        end
        return ServiceProxy.new(@service_url, name)
    end
 
    def respond_to?(sym)
    end
 
    def call(*args)
        postdata = {"method" => @service_name, "params" => args, "id" => "jsonrpc"}.to_json
        respdata = RestClient.post @service_url, postdata
        resp = JSON.parse respdata
        if resp["error"] != nil
            raise JSONRPCException.new, resp['error']
        end
        return resp['result']
    end
end