查看: 262|回复: 2

比特币API参考手册

[复制链接]

27

主题

29

帖子

141

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
141
发表于 2017-11-21 13:42:34 | 显示全部楼层 |阅读模式
操控 bitcoin 软件
运行 bitcoind 或 bitcoin -server. 你可以通过命令行或HTTP JSON-RPC 命令来操控它.
首先你需要创建bitcoin.conf配置文件并设置rpcuser和rpcpassword;详情请查看运行Bitcoin
示例:
  1. $ ./bitcoind
  2. bitcoin server starting
  3. $ ./bitcoind help
  4. # shows the help text
复制代码

RPC调用列表将显示
  1. $ ./bitcoind getbalance
  2. 2000.00000
复制代码

运行'bitcoin -server'或'bitcoind' 将使bitcoin以HTTP JSON-RPC服务器模式运行,但与其通信时必须使用[1],安全起见,默认情况下服务器只接受同一机器上其他进程的连接。如果你的HTTP或JSON库需要你指定已认证的'realm',请使用'jsonrpc'。
0.3.14版之后版本的Bitcoin支持SSL (https) JSON-RPC连接。配置详情请参考本页面
你需要和你使用语言对应的[2]来访问服务器

Python
python-jsonrpc 是JSON-RPC在Python上的官方实现。它自动生成RPC调用的Python方法。但为了支持旧版本的Python,它效率地下。
jgarzik创建了Python-BitcoinRPC 分支,它对新版本的Python进行了优化(最低需要 Python 2.6+, 而非3.x). 推荐这个版本。
尽管BitcoinRPC缺少jsonrpc的一些特性,在编写仅使用ServiceProxy类的软件时,两个版本可以使用相同的代码
  1. from jsonrpc import ServiceProxy

  2.   access = ServiceProxy("http://user:password@127.0.0.1:8332")
  3.   access.getinfo()
  4.   access.listreceivedbyaddress(6)#access.sendtoaddress("11yEmxiMso2RsFVfBcCa616npBvGgxiBX", 10)
复制代码
Ruby
  1. =begin
  2. Make sure to do:
  3.     gem install rest-client

  4. Usage:
  5.     h = ServiceProxy.new('http://user:password@127.0.0.1:8332')
  6.     puts h.getinfo.call
  7.     puts h.getbalance.call 'accname'
  8. =endrequire'json'require'rest_client'

  9. class JSONRPCException <RuntimeErrordef initialize()super()endend

  10. class ServiceProxy
  11.     def initialize(service_url, service_name=nil)@service_url = service_url
  12.         @service_name = service_name
  13.     end

  14.     def method_missing(name, *args, &block)if@service_name != nil
  15.             name = "%s.%s"%[@service_name, name]endreturn ServiceProxy.new(@service_url, name)end

  16.     def respond_to?(sym)end

  17.     def call(*args)
  18.         postdata = {"method"=>@service_name, "params"=> args, "id"=>"jsonrpc"}.to_json
  19.         respdata = RestClient.post@service_url, postdata
  20.         resp = JSON.parse respdata
  21.         if resp["error"] != nilraise JSONRPCException.new, resp['error']endreturn resp['result']ende
复制代码



PHP
JSON-RPC PHP库连接Bitcoin非常简单,例如:
  1. require_once'jsonRPCClient.php';

  2.   $bitcoin=new jsonRPCClient('http://user:password@127.0.0.1:8332/');

  3.   echo"<pre>\n";print_r($bitcoin->getinfo());echo"\n";echo"Received: ".$bitcoin->getreceivedbylabel("
复制代码

Java
让Java使用HTTP基本认证的最简单方法是创建default Authenticator
  1. finalString rpcuser ="...";finalString rpcpassword ="...";

  2.   Authenticator.setDefault(newAuthenticator(){protectedPasswordAuthentication getPasswordAuthenticati
复制代码

这样一来,任何JSON-RPC Java库(或 URL POSTs)都可以和Bitcoin 服务器通信了。
Perl
用CPAN 的 JSON::RPC 包可以和Bitcoin通信。首先你必须设置客户端证书,例如:
  1. use JSON::RPC::Client;use Data::Dumper;

  2.   my$client=new JSON::RPC::Client;

  3.   $client->ua->credentials('localhost:8332','jsonrpc','user'=>'password'# REPLACE WITH YOUR bitcoin.conf rpcuser/rpcpassword);

  4.   my$uri='http://localhost:8332/';my$obj={
  5.       method  =>'getinfo',
  6.       params  =>[],};

  7.   my$res=$client->call($uri,$obj);

  8.   if($res){if($res->is_error){print"Error : ",$res->error_message;}else{print Dumper($res->result);}
复制代码

.NET (C#)
使用标准的httprequest/response 对象可与rpc服务通信。 用序列化/反序列化Json库可以轻松许多:
  • JayRock for .NET 4.0
  • Json.Net for .NET 2.0 and above
下面的例子使用Json.Net:
  1. HttpWebRequest webRequest =(HttpWebRequest)WebRequest.Create("http://localhost.:8332");
  2. webRequest.Credentials=new NetworkCredential("user", "pwd");/// important, otherwise the service can't desirialse your request properly
  3. webRequest.ContentType="application/json-rpc";
  4. webRequest.Method="POST";

  5. JObject joe =new JObject();
  6. joe.Add(new JProperty("jsonrpc", "1.0"));
  7. joe.Add(new JProperty("id", "1"));
  8. joe.Add(new JProperty("method", Method));// params is a collection values which the method requires..if(Params.Keys.Count==0){
  9.   joe.Add(new JProperty("params", new JArray()));}else{
  10.      JArray props =new JArray();// add the props in the reverse order!for(int i =Params.Keys.Count-1; i >=0; i--){....// add the params}
  11.      joe.Add(new JProperty("params", props));}

  12.      // serialize json for the requeststring s = JsonConvert.SerializeObject(joe);byte[] byteArray = Encoding.UTF8.GetBytes(s);
  13.      webRequest.ContentLength= byteArray.Length;
  14.      Stream dataStream = webRequest.GetRequestStream();
  15.      dataStream.Write(byteArray, 0, byteArray.Length);
  16.      dataStream.Close();


  17.      WebResponse webResponse = webRequest.GetResponse();

  18.      ...// deserialze the response
复制代码

命令行 (cURL)
cURL或其他命令行HTTP-fetching可以发送命令并查看结果,例如:

  curl --user user --data-binary'{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }'-H'content-type: text/plain;' http://127.0.0.1:8332/
你将获得你的rpcpassword,然后你会看到类似下面的信息
{"result":{"balance":0.000000000000000,"blocks":59952,"connections":48,"proxy":"","generate":false,"genproclimit":-1,"difficulty":16.61907875185736,"error":null,"id":"curltest"}




回复

使用道具 举报

27

主题

29

帖子

141

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
141
 楼主| 发表于 2017-11-21 13:48:18 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

  • Copyright   ©2015-2016  U2CC   Powered by©Discuz!   
快速回复 返回顶部 返回列表