CHIA-RPC
1.8.1.16
See the version list below for details.
dotnet add package CHIA-RPC --version 1.8.1.16
NuGet\Install-Package CHIA-RPC -Version 1.8.1.16
<PackageReference Include="CHIA-RPC" Version="1.8.1.16" />
paket add CHIA-RPC --version 1.8.1.16
#r "nuget: CHIA-RPC, 1.8.1.16"
// Install CHIA-RPC as a Cake Addin #addin nuget:?package=CHIA-RPC&version=1.8.1.16 // Install CHIA-RPC as a Cake Tool #tool nuget:?package=CHIA-RPC&version=1.8.1.16
Welcome to the CHIA-RPC Nuget package!
This package is a wrapper for RPC-JSON files used to communicate with the Chia client through the HTTP-API, WebSocket API, or CLI.
The wrapper allows you to easily create the appropriate RPC object for all wallet endpoint calls, and deserialize the response JSON and accessing its objets.
CHIA-RPC
ONLY contains the rpc wrappers (.net objects for RPC, Response and Chia Objects) In ;rder to cummiunicate with the chia client, you need to either implement your own client solution or use theChia-Client-API
package which implements all rpc endpoints and supports remote management of the chia client.
Useful links
- nuget package: https://www.nuget.org/packages/CHIA-RPC
- github repo to submit issues/requests: https://github.com/KryptomineCH/CHIA-RPC
- official chia rpc documentation: https://docs.chia.net/rpc/
- chia-client-api for communication with the chia client: https://www.nuget.org/packages/Chia-Client-API/
Usage
General functions
All classes support the following base functions:
SaveToFile(string path)
: saves the rpc as a json-formatted file to the specified path on disk.LoadFromFile(string path)
: loads an rpc file from the specified path from disk.ToString()
: returns a json-formatted string representation of the class.LoadObjectFromString(string json)
: converts a json string (eg. response) into a given object.
Types
There are 3 types in this library:
EndpointName_RPC
these classes represent the request content which is issued against the chia client.EndpointName_Response
these classes represent the chia clients response and are beeing used to deserialize the server response into workable c# objectsObjectName
these classes represent objects in the chia space such as aCoinRecord
, aTransaction
and so on
RPC Creation
Most endpoints are implemented with a constructor:
// Create a new instance of the SendXCH_RPC class
var rpc = new SendXCH_RPC(1234, "chia1q2jzm7eg5t2k8vnq3tkkf5l7zj9mfx9v7p9t5", 1000, 500, new string[] { "Transaction from Example program" })
If this is not the case or for whatever other reason, You can also creath them like so:
// Create a new instance of the SendXCH_RPC class
var rpc = new SendXCH_RPC
{
wallet_id = 1234,
address = "chia1q2jzm7eg5t2k8vnq3tkkf5l7zj9mfx9v7p9t5",
amount = 10000,
fee = 500,
memos = new string[] { "Transaction from Example program" }
};
Some endpoints already implement Constructors which make things a litte easier:
GetNextAddress_RPC rpc = new GetNextAddress_RPC(1, false);
Some endpoins already have implicit conversions which make working a lot easier. The support is quite sparse still:
WalletID_Response walletID = WalletID_Response.LoadResponseFromString(serverResponse);
GetNextAddress_RPC rpc = new GetNextAddress_RPC(walletID);
Serialisation
in order to work with the rpcs, you want to serialize/deserialize them to and from json.
Serialisation
All classes have a .ToString()
method to convert a class to json content:
WalletID_RPC rpc = new WalletID_RPC(1);
string json = rpc.Tostring();
Deserialisation
Deserialisation is implemented as static method and can be used to convert the server response:
GetNextAddress_Response nextAddress = GetNextAddress_Response.LoadResponseFromString(serverResponse);
IO
Often it can be helpful to load and store objects such as an initiated transaction to disk for later reuse:
Saving object to disk
All objects and classes implement a SaveToFile method. The method automatically appends a filename .rpc .response or .object in respect of the basetype
TransactionID_Response pendingTransaction = new TransactionID_Response();
pendingTransaction.SaveResponseToFile("C:\\temp\\pendingTransactions\\mytransaction-001");
Loading object from disk
Simmilar to the Deserialisation, loading from disk is implemented as a static method:
TransactionID_Response pendingTransaction = TransactionID_Response.LoadResponseFromFile("C:\\temp\\pendingTransactions\\mytransaction-001");
Remarks
The structure of the chia API can be confusing and many rpcs (eg
WalletID_RPC
) are used for multiple endpoints so it is strongly recommended to use theChia-Client-API
to see how the interaction with the RPC requests is.
Per default, the chia client will only listen to rpc requests from the local machine.
If you have remote machines to manage, eg a full node or farmers, you need to enable public port listening.
For that, edit the chia configuration (default at~/.chia/mainnet/config/config.yaml
).
Look for a line starting with self-hostname like so:self_hostname: &self_hostname "localhost"
change it to:self_hostname: 0.0.0.0
to listen on all interfaces or to the local interface ip to listen on a specific interface.
For a full documentation besides xml markup, please refer to the official chia documentation: https://docs.chia.net/rpc
Thank you for using CHIA-RPC!
Dependencies
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Chia-Metadata (>= 1.6.2.5)
- NFT.Storage.Net (>= 1.0.1.2)
-
net7.0
- Chia-Metadata (>= 1.6.2.5)
- NFT.Storage.Net (>= 1.0.1.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on CHIA-RPC:
Package | Downloads |
---|---|
Chia-Client-API
CHIA-RPC is a C# Nuget library that allows developers to easily communicate with the Chia client. It provides a wrapper for making requests, sending transactions, and minting, making it a versatile tool for interacting with the Chia blockchain. With CHIA-RPC, you can easily integrate Chia functionality into your C# projects. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.2.0.17 | 188 | 3/13/2024 |
2.2.0.10 | 128 | 3/5/2024 |
2.2.0 | 141 | 3/1/2024 |
2.1.3 | 219 | 12/21/2023 |
2.1.1.8 | 171 | 12/8/2023 |
2.1.1.7 | 175 | 11/26/2023 |
2.1.1.6 | 170 | 11/15/2023 |
2.1.1.5 | 144 | 11/15/2023 |
2.1.1.4 | 150 | 11/9/2023 |
2.1.1.2 | 170 | 10/19/2023 |
2.1.1 | 178 | 10/13/2023 |
2.0.1 | 166 | 10/5/2023 |
2.0.0.1 | 188 | 8/31/2023 |
2.0.0 | 192 | 8/28/2023 |
1.8.2.13 | 228 | 8/22/2023 |
1.8.2.5 | 223 | 8/10/2023 |
1.8.2.4 | 194 | 8/9/2023 |
1.8.2.3 | 207 | 8/9/2023 |
1.8.2.2 | 193 | 8/9/2023 |
1.8.2.1 | 197 | 8/9/2023 |
1.8.2 | 194 | 7/26/2023 |
1.8.1.16 | 198 | 6/26/2023 |
1.8.1.15 | 213 | 6/23/2023 |
1.8.1.14 | 216 | 6/22/2023 |
1.8.1.13 | 191 | 6/22/2023 |
1.8.1.12 | 200 | 6/22/2023 |
1.8.1.11 | 203 | 6/22/2023 |
1.8.1.10 | 194 | 6/22/2023 |
1.8.1.9 | 212 | 6/21/2023 |
1.8.1.8 | 215 | 6/14/2023 |
1.8.1.7 | 205 | 6/14/2023 |
1.8.1.6 | 221 | 6/12/2023 |
1.8.1.5 | 229 | 6/9/2023 |
1.8.1.4 | 208 | 6/9/2023 |
1.8.1.3 | 212 | 6/9/2023 |
1.8.1.2 | 201 | 6/7/2023 |
1.8.1.1 | 204 | 6/7/2023 |
1.8.1 | 199 | 6/2/2023 |
1.8.0 | 213 | 5/11/2023 |
1.7.1 | 249 | 4/21/2023 |
1.6.2.14 | 369 | 2/8/2023 |
1.6.2.13 | 340 | 2/8/2023 |
1.6.2.12 | 364 | 2/5/2023 |
1.6.2.11 | 281 | 2/5/2023 |
1.6.2.10 | 290 | 2/5/2023 |
1.6.2.9 | 419 | 1/31/2023 |
1.6.2.8 | 390 | 1/28/2023 |
1.6.2.6 | 469 | 1/25/2023 |
1.6.2.5 | 356 | 1/24/2023 |
1.6.2.4 | 340 | 1/17/2023 |
1.6.2.3 | 361 | 1/16/2023 |
1.6.2.2 | 356 | 1/15/2023 |
1.6.2.1 | 364 | 1/13/2023 |
1.6.2 | 372 | 1/12/2023 |
1.6.1.5 | 390 | 1/11/2023 |
1.6.1.3 | 421 | 1/10/2023 |
1.6.1.2 | 315 | 1/10/2023 |
1.6.1.1 | 360 | 12/29/2022 |
1.6.1 | 326 | 12/29/2022 |
1.8.1.16: added implicit conversion and critical bug workaround
- added a workaround where the getTransactions endpoint returns an amount of 0 in an unknown circumstance. In this unexpected case, the application would crash when calling GetPrimaryCoin on the transaction.
Now returns the first coin if acount is 0 but coins are specified
- added an implicit conversion from TradeRecord to GetOffer
1.8.1.15: fixed critical bug introduced in 1.8.1.11
- fixed critical bug in 1.8.1.11 where I thought fee (in mojos) would be of type ulong. But its decimal o.O
- removed old GestStandardTransactionFeeEstimate (Use GetFeeEstimate instead)
- improvement on GetFeeEstimate_RPC (changed from explicit to implicit operator)
- improvements for unit tests
1.8.1.14: File handling fixed
- Wrote unit test for file handling. The naming when offering a FileInfo is now actually fixed.
1.8.1.13: Fix for RPC file extension
- Fixed the file naming if the file path was specified with a '.' as an extension.
1.8.12: Hotfix for offers
- Offers do not get updated when modifying offers_in_xch (added workaround. .NET issue).
1.8.1.11: GetFeeEstimate improvements
- Improvements on XML documentation.
- Added explicit conversion so that the API can be called directly with a DateTime.
- Fixed a fee value which was displayed in decimal rather than ulong.
- Returned time array can now also be viewed in TimeSpan.
1.8.1.10: Convenience upgrades
- Added overloads so that files can now be loaded and exported with FileInfo.
- Added an implicit conversion to GetCatOfferSummary.
- Added constructor to GetFeeEstimate which accepts a single Time rather than an array.
- Slight improvement in GetFeeEstimate_RPC Documentation.
1.8.1.9: Hotfix and offering improvements
- Added null value hotfix.
- Improved XML coded documentation for offers.
- Added unit test for offer creation.
- Improved constructor for offerings.
- Improved cancel offers endpoint.
1.8.1.8: Hotfix
- Hotfix for 1.8.1.7 null reference issue.
1.8.1.7: Allow decimal
- This is a rather big update which adds decimal properties to many endpoints. These decimal properties allow to read/write amounts in XCH rather than having to manually do the conversion to mojos.
1.8.1.6: Improve Transaction and response classes
- Added functionality to obtain primary coin from transaction (please test this!!!)
- Reworked objects and code to include the raw request answer data.
1.8.1.5: Improve wait for transaction code
- Renamed wallet API to confirm.
- Created full node API to wait for coin creation (this should really await transaction completeness).
- Added an implicit conversion for the checkers.
- Added TimeSpan code for the await.
1.8.1.4: Improve SendTransaction_RPC
- Added a global variable in General_NS.GlobalVar which specifies the amount of mojos which make up one chia.
- Improved constructor of SendTransaction_RPC to allow for different combinations of ulong (mojos) and double (XCH) for amount and fee.
1.8.1.3: Improve Constructor for SendTransaction_RPC
- Now has default null values which can be left blank.
1.8.1.2: Improvements to GetFeeEstimate
- Minor documentation typo fix.
- Fixed either/or condition in a class.
- Major improvement for GetFeeEstimates constructor now properly reflecting either spend or cost condition and adding standard chia transaction value, hence making `GetStandardTransactionFeeEstimate` obsolete.
- Added property to `GetFeeEstimate_Response` which displays fee in full chia fraction rather than in Mojos.
1.8.1.1: The updates are mostly in Chia-RPC. This update ensures compatibility with Chia-RPC 1.8.1.1 and brings the following improvements:
- Major documentation update.
- Added constructors to all RPC endpoints.
- A few minor bugfixes.
- Added further implicit conversions.