mirror of
				https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
				synced 2025-10-31 02:17:24 +00:00 
			
		
		
		
	Update 12_2_Accessing_Bitcoind_with_C.md
This commit is contained in:
		
							parent
							
								
									87b5b46d8e
								
							
						
					
					
						commit
						7a95148d73
					
				| @ -120,18 +120,8 @@ In order to you an RPC method in `bitcoinrpc`, you must initialize a variable of | ||||
| bitcoinrpc_method_t *getmininginfo  = NULL; | ||||
| getmininginfo = bitcoinrpc_method_init(BITCOINRPC_METHOD_GETMININGINFO); | ||||
| ``` | ||||
| You must next input the parameters for your methods, which is done by creating a JSON array, then (if necessary) filling it. This is done with the `jansson` library; see the [jansson Reference](http://jansson.readthedocs.io/en/2.8/apiref.html) for more information on its specific function calls.  | ||||
| Usually you would set parameters here, but in this get, `getmininginfo` requires no parameters, so we can skip that. | ||||
| 
 | ||||
| In this case, we just input an empty array, because we're not sending any arguments to `getmininginfo`. We'll have some increasingly complex examples of parameter submission later on. | ||||
| ``` | ||||
| json_t *params = NULL; | ||||
| params = json_array(); | ||||
| ``` | ||||
| The parameters are input to the method as follows. After inputting the parameters into the method, they can be neatly cleared away. | ||||
| ``` | ||||
| bitcoinrpc_method_set_params(getmininginfo, params); | ||||
| json_decref(params); | ||||
| ``` | ||||
| Two more objects are required, a "response object" and an "error object". They're created via standard `bitcoinrpc` function calls: | ||||
| ``` | ||||
| bitcoinrpc_resp_t *btcresponse  = NULL; | ||||
| @ -143,4 +133,40 @@ And now you can put it all together to make a `getmininginfo` RPC call: | ||||
| ``` | ||||
| bitcoinrpc_call (rpc_client, getmininginfo, btcresponse, &btcerror); | ||||
| ``` | ||||
| [[AND, I JUST GET LITERALLY INDECIPHERABLE ERROR MESSAGES AT THIS POINT, AND THE SAMPLE CODE DOESN'T WORK EITHER. I'M NOT SURE IF THIS LIBRARY STILL WORKS.]] | ||||
| ### Output Your Response | ||||
| 
 | ||||
| Retrieve the output of your call with `bitcoinrpc_resp_get`. | ||||
| ``` | ||||
| json_t *jsonresponse = NULL; | ||||
| jsonresponse = bitcoinrpc_resp_get (btcresponse); | ||||
| ``` | ||||
| If you want to output the complete JSON results of the RPC call, you can do so with a simple invocation of `json_dumps`, from the `jansson` library: | ||||
| ``` | ||||
| fprintf (stderr, "%s\n", json_dumps (j, JSON_INDENT(2))); | ||||
| ``` | ||||
| However since your now writing complete programs, you're probably going to want to do more subtle work, such as pulling out individual JSON values for specific usage. The [jansson Reference](https://jansson.readthedocs.io/en/2.10/apiref.html) tells how to do so. | ||||
| 
 | ||||
| You can then drill down to the `result` JSON object: | ||||
| ``` | ||||
| json_t *jsonresult = NULL; | ||||
| jsonresult = json_object_get(jsonresponse,"result"); | ||||
| fprintf (stderr, "%s\n", json_dumps (jsonresult, JSON_INDENT(2))); | ||||
| ``` | ||||
| Finall, you can drill down to an individual item like `blocks`: | ||||
| ``` | ||||
| json_t *jsonblocks = NULL; | ||||
| jsonresult = json_object_get(jsonresult,"blocks"); | ||||
| 
 | ||||
| int blocks; | ||||
| blocks = json_integer_value(jsonresult); | ||||
| printf("Block Count: %d\n",blocks); | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| [[SUMMARY]] | ||||
| [[APPENDIX 1: First Code]] | ||||
| [[APPENDIX 2: First Code]] | ||||
|    [[clean up organizing of initialization of variables]] | ||||
|    [[FREE up the JSON objects]] | ||||
| 
 | ||||
| [[BREAK OUT TWO MORE CHAPTERS ON GETTING INFO + PUTTING TRANSACTION TOGETHER; OR 1?]] | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user