Chia-Client-API
1.8.2.12
See the version list below for details.
dotnet add package Chia-Client-API --version 1.8.2.12
NuGet\Install-Package Chia-Client-API -Version 1.8.2.12
<PackageReference Include="Chia-Client-API" Version="1.8.2.12" />
paket add Chia-Client-API --version 1.8.2.12
#r "nuget: Chia-Client-API, 1.8.2.12"
// Install Chia-Client-API as a Cake Addin #addin nuget:?package=Chia-Client-API&version=1.8.2.12 // Install Chia-Client-API as a Cake Tool #tool nuget:?package=Chia-Client-API&version=1.8.2.12
Chia-Client-API
Thank you for considering using the Chia Client API for C#! Here is a brief overview of what you can expect to find in this repository:
Description
This repository contains a C# wrapper for the Chia blockchain API. It allows you to easily interact with the Chia blockchain from your C# applications.
This library is also available on NuGet. You can find it by searching for "ChiaClientAPI" in the NuGet Package Manager or by using the following command in the Package Manager Console:
Install-Package Chia-Client-API
Features
A simple, easy-to-use interface for accessing the Chia API Support for all API endpoints, including those for managing accounts, sending and receiving transactions, and querying the blockchain Detailed documentation for each API endpoint, including descriptions of input and output parameters
- viewing, creating and managing wallets
- sending chia, cats, nfts
- creating offers for chia, cats and nfts
- exploring the blockchain
- managing datalayer
- managing simulator
- Minting NFTs
- Creating CATs
Requirements
.NET 6 or higher
Installation
To install this library from the repository, simply clone the repository and open the solution file in Visual Studio. You can then build the solution and reference the compiled library in your own C# projects.
Alternatively, you can install the library from NuGet as described above.
Usage
Note: Per default, chia rpc will only listen to requests from the local machine and also load the certificates of the local machine automatically.
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.
You will need to create an instance of the ChiaClient class and pass in your API certificates:
// ... available endpoints ...
using Chia_Client_API.FullNodeAPI_NS;
using Chia_Client_API.WalletAPI_NS;
using Chia_Client_API.FarmerAPI_NS;
using Chia_Client_API.HarvesterAPI_NS;
using Chia_Client_API.DatalayerAPI_NS;
// ... initialize local host ...
Wallet_RPC_Client client = new Wallet_RPC_Client();
// ... initialize remote host ...
string certificatePath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
@".testnet\ssl\");
Fullnode_Client = new FullNode_RPC_Client(targetApiAddress: "192.168.1.117", targetCertificateBaseFolder: certificatePath);
You can then call any of the API endpoints by calling the corresponding method on the client object. For example, to get the balance of an account, you can use the GetWalletBalance_Sync method:
using Chia_Client_API.WalletAPI_NS;
using CHIA_RPC.General_NS;
using CHIA_RPC.Wallet_NS.Wallet_NS;
namespace ChiaTransactionExaminator
{
internal class Clients
{
private static Wallet_RPC_Client Wallet = new Wallet_RPC_Client();
public decimal GetBalance()
{
WalletID_RPC walletID_RPC = new WalletID_RPC(1);
GetWalletBalance_Response response = Wallet.GetWalletBalance_Sync(walletID_RPC);
return response.wallet_balance.confirmed_wallet_balance_in_xch;
}
}
}
Note that a request usually consists of 3 Steps:
- Compile the RPC document (with the included chia rpc library) This defines the data which you want to pull prom the chia node
- Making the request (with the chia client library) this actually connects to the node and makes the request
- Loading the data into a response
Refer to the documentation for specific usage instructions for each API endpoint.
Creating a cat offer
this is how you offer Cat vs chia:
CatGetAssetId_Response assetId = Testnet_Wallet.Wallet_Client.CatGetAssetID_Sync(new WalletID_RPC(wallet.id));
CreateOfferForIds_RPC offer_rpc = new CreateOfferForIds_RPC();
offer_rpc.offer.Add("1", -50000); // you want to give 500000 mojos
offer_rpc.offer.Add(assetId.asset_id, 500); // you want to receive 0.5 of asset x
OfferFile offer = Testnet_Wallet.Wallet_Client.CreateOfferForIds_Sync(offer_rpc);
offer.Export("btftestoffer");
note you can also give amounts in decimal chia (note that 1 cat is normally 1000 mojos so mind the conversion there)
offer_rpc.AddOfferPosition("1", -0.005); // you want to give 500000 mojos
Contributing
We welcome contributions to this repository! If you have suggestions for improvements or new features, please open an issue or submit a pull request.
License
This library is licensed under the MIT License. Please see the LICENSE file for more information.
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-RPC (>= 1.8.2.12)
- System.Net.Http.Json (>= 7.0.1)
-
net7.0
- CHIA-RPC (>= 1.8.2.12)
- System.Net.Http.Json (>= 7.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.2.0.18 | 109 | 6/11/2024 |
2.2.0.17 | 145 | 3/13/2024 |
2.2.0.14 | 113 | 3/5/2024 |
2.2.0 | 109 | 3/1/2024 |
2.1.3 | 195 | 12/21/2023 |
2.1.1.10 | 152 | 12/8/2023 |
2.1.1.9 | 153 | 11/26/2023 |
2.1.1.8 | 136 | 11/15/2023 |
2.1.1.7 | 115 | 11/15/2023 |
2.1.1.6 | 131 | 11/9/2023 |
2.1.1.4 | 144 | 10/20/2023 |
2.1.1 | 151 | 10/13/2023 |
2.0.1 | 153 | 10/5/2023 |
2.0.0.1 | 159 | 8/31/2023 |
2.0.0 | 155 | 8/28/2023 |
1.8.2.13 | 169 | 8/22/2023 |
1.8.2.12 | 136 | 8/22/2023 |
1.8.2.5 | 180 | 8/10/2023 |
1.8.2.4 | 155 | 8/9/2023 |
1.8.2.3 | 170 | 8/9/2023 |
1.8.2.2 | 155 | 8/9/2023 |
1.8.2.1 | 162 | 8/9/2023 |
1.8.2 | 159 | 7/26/2023 |
1.8.1.16 | 149 | 6/26/2023 |
1.8.1.15 | 159 | 6/23/2023 |
1.8.1.14 | 138 | 6/22/2023 |
1.8.1.13 | 140 | 6/22/2023 |
1.8.1.12 | 142 | 6/22/2023 |
1.8.1.11 | 141 | 6/22/2023 |
1.8.1.10 | 144 | 6/22/2023 |
1.8.1.9 | 159 | 6/21/2023 |
1.8.1.8 | 172 | 6/14/2023 |
1.8.1.7 | 147 | 6/14/2023 |
1.8.1.6 | 180 | 6/12/2023 |
1.8.1.5 | 166 | 6/9/2023 |
1.8.1.4 | 157 | 6/9/2023 |
1.8.1.3 | 161 | 6/9/2023 |
1.8.1.2 | 164 | 6/7/2023 |
1.8.1.1 | 158 | 6/7/2023 |
1.8.1 | 163 | 6/2/2023 |
1.8.0 | 182 | 5/11/2023 |
1.7.1 | 198 | 4/21/2023 |
1.6.2.14 | 298 | 2/8/2023 |
1.6.2.13 | 263 | 2/8/2023 |
1.6.2.12 | 279 | 2/5/2023 |
1.6.2.10 | 297 | 1/31/2023 |
1.6.2.9 | 270 | 1/31/2023 |
1.6.2.8 | 298 | 1/28/2023 |
1.6.2.7 | 303 | 1/26/2023 |
1.6.2.6 | 308 | 1/25/2023 |
1.6.2.5 | 290 | 1/24/2023 |
1.6.2.4 | 293 | 1/17/2023 |
1.6.2.3 | 298 | 1/16/2023 |
1.6.2.2 | 299 | 1/15/2023 |
1.6.2.1 | 303 | 1/13/2023 |
1.6.2 | 314 | 1/12/2023 |
1.6.1.6 | 301 | 1/11/2023 |
1.6.1.5 | 307 | 1/11/2023 |
1.6.1.4 | 308 | 1/11/2023 |
1.6.1.3 | 327 | 1/10/2023 |
1.6.1.1 | 317 | 12/29/2022 |
1.6.1 | 310 | 12/29/2022 |
1.8.2.x
- updated function to get primary coin from transaction to be more resilient
- added amount in cat to transaction
- made coin documentation clearer
- Marked GetCoinID() as deprecated (use CoinName property instead)
- implemented lazy loading and caching for CoinName
- added amount in cat property to coin
- reworked getPrimaryCoin
- added custom transaction type
- added a transaction invalidity check
- added implicit conversion from WalletID_RPC to ulong (Wallet ID)
1.8.2.5
- added property `is_valid` to transaction. This value is beeing checked against the peer node responses to see if they returned an error
- created_at_time can now be fetched as DateTime
1.8.2.4
- hotfix for peer (has no attribute names)
- added unit test
1.8.2.3
- timestamps can now be read as DateTime
- improved resiliense and error handling in case of serialisation failures
1.8.2.2
- Included Peer object
- updated transaction documentationfor `sent_to` and `sent`
- changed `sent_to` from `dynamic?` to `Peer[]?`
related documentation: https://docs.chia.net/walletconnect-commands?_highlight=sent#transactionrecord
1.8.2.1
This is a minor update that introduces changes to Transaction, Transaction Dict Memos, Transaction no memos, and GetTransaction:
- Added the TransactionType enum, making it easier to identify the type of a transaction.
- Added an unknown wallet type, "Ratelimited Wallet," to the WalletType enum.
1.8.2
This release presents a major overhaul of the package, implementing nullable types for all endpoints. It's likely that this will necessitate code changes, or at the very least, produce numerous null value compiler warnings.
Enhanced features:
- Improved Null Parameter Handling: The RPC interface now accurately manages null input parameters. This ensures the application won't crash or exhibit unintended behavior when a null value is passed.
- RPC Parameter Nullability: All RPC parameter objects are now nullable, enhancing request integrity and the stability of our API communication.
- Null Checks in RPC Methods: Functions, such as BatchUpdate_Async, now ascertain if their essential parameters are null prior to execution. This preemptive action helps detect issues early, returning a helpful error message instead of triggering unexpected runtime exceptions.
- Null Reference Exception Fixes: Addressed potential NullReferenceExceptions.
- Expanded XML Comments: We have significantly added to or expanded the XML comments across numerous classes and methods. These annotations act as in-code documentation, offering valuable context and guidance for developers.
- Compiler Warnings: Resolved all compiler warnings within the package.
Please refer to the documentation and the updated code comments for a deeper understanding of these updates. As always, we welcome any issue reports or feedback on these modifications.