JSON-RPC 클라이언트

비트코인: JSON-RPC 클라이언트

JSON-RPC 서버 설정

비트코인 서버(bitcoind)는 디폴트로 로컬 컴퓨터에서만 JSON-RPC 연결을 허용하는데, 다음과 같은 rpc 설정으로 외부 네트워크 컴퓨터에서 JSON-RPC를 사용할 수 있다. rpcallowip 에는 허용 가능한 외부 네트워크의 IP 주소 혹은 범위를 지정하고, rpcbind=0.0.0.0는 로컬과 외부에서 접속할 수 있도록 바인딩한다.

server=1
rpcuser=user
rpcpassword=pwd699969110f5c4bc38ef687fd0705c
rpcallowip=192.168.4.0/22
rpcbind=0.0.0.0   

rpcbind=127.0.0.1 (디폴트)을 사용하면 localhost에서만 접속할 수 있으며, rpcbind=192.168.4.100 을 사용하면, 192.168.4.100으로 들어오는 네트워크 Connection만 받아들이며, rpcbind=0.0.0.0 이면 해당 컴퓨터가 가진 모든 네트워크 주소로 들어오는 Connection을 받아들인다.

JSON-RPC 클라이언트

JSON-RPC 클라이언트는 JSON-RPC API를 사용해서 JSON Request를 보내고 JSON Response를 얻게 된다. 사용가능한 JSON-RPC API는 https://developer.bitcoin.org/reference/rpc/ 에 설명되어 있다.

string server="http://192.168.4.10:8332";
string user="user";
string passwd="pwd699969110f5c4bc38ef687fd0705c";

JObject jo = new JObject();
jo.Add(new JProperty("jsonrpc", "1.0"));
jo.Add(new JProperty("id", "1"));
jo.Add(new JProperty("method", "getbalance"));
jo.Add(new JProperty("params", new JArray()));
string jsonString = JsonConvert.SerializeObject(jo);

using var client = new HttpClient();
string basicAuth = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{user}:{passwd}"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", basicAuth);

var content = new StringContent(jsonString, Encoding.UTF8, "application/json-rpc");
HttpResponseMessage resp = await client.PostAsync(new Uri(server), content).ConfigureAwait(false);

string result = await resp.Content.ReadAsStringAsync().ConfigureAwait(false);
Console.WriteLine(result);
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.