Awesome
Hathor.Client
C# / .NET Client for Hathor Wallet API
Install
Install the latest version from NuGet
NuGet package name: Hathor
Getting Started
Make sure you have access to the Hathor Headless Wallet API. You can use the hathornetwork/hathor-wallet-headless docker image.
Start docker image:
docker pull hathornetwork/hathor-wallet-headless
docker run -p 8000:8000 hathornetwork/hathor-wallet-headless --seed_default "YOUR 24 SEED WORDS"
#Example, do not use:
docker run -p 8000:8000 hathornetwork/hathor-wallet-headless --seed_default "work above economy captain advance bread logic paddle copper change maze tongue salon sadness cannon fish debris need make purpose usage worth vault shrug"
#Example for testnet, do not use:
docker run -p 8000:8000 hathornetwork/hathor-wallet-headless --network "testnet" --server "https://node1.testnet.hathor.network/v1a/" --seed_default "work above economy captain advance bread logic paddle copper change maze tongue salon sadness cannon fish debris need make purpose usage worth vault shrug"
#Example with API key, do not use:
docker run -p 8000:8000 hathornetwork/hathor-wallet-headless --api_key "MYSECRETKEY" --seed_default "work above economy captain advance bread logic paddle copper change maze tongue salon sadness cannon fish debris need make purpose usage worth vault shrug"
The Hathor Headless Wallet API is now available on http://localhost:8000
Sample App
There are two sample apps in this repository.
First, install Microsoft .Net 7 SDK from https://dot.net, then run the following commands:
dotnet restore
dotnet build
Start the included Hathor.Client.Sample.ConsoleApp
sample app to get a quick demo of what's possible with this library.
dotnet run --project Hathor.Client.Sample.ConsoleApp
Start the included Hathor.Client.Sample.WebApp
sample website get a visual look at the data.
dotnet run --project Hathor.Client.Sample.WebApp
Use the Hathor Client
Create a new Hathor Client
string walletId = "my-wallet";
IHathorWalletApi client = HathorClient.GetWalletClient("http://localhost:8000", walletId, "optional-api-key");
Start the wallet
//"default" refers to the seed key you used when starting the docker image
var req = new StartRequest(walletId, "default");
var response = await client.Start(req);
When the wallet is started, you can view transaction history, create new transactions etc
//Get balance
var balance = await client.GetBalance();
//Tx history
var txHistory = await client.GetTxHistory();
//Create a transaction
var transaction = new SendTransactionSimpleRequest("ADDRESS", 1);
var response = await client.SendTransaction(transaction);
Check the sample apps and unit tests for more example usage.
Stop the wallet:
var response = await client.Stop();
Multi Sig
View the MULTISIG.md documentation to use the Multi Sig APIs from the Headless Wallet.
Atomic Swap
View the ATOMICSWAP.md documentation to use the Atomic Swap APIs from the Headless Wallet.
Full node support
There is partial support to use the Hathor full node API
IHathorNodeApi nodeClient = HathorClient.GetNodeClient("https://node2.mainnet.hathor.network/v1a/");
//Get node version info
var versionInfo = await nodeClient.GetVersion();
//Get balance of an address
var balanceInfo = await nodeClient.GetBalanceForAddress("ANY HATHOR ADDRESS")
Open source credits
Acknowledgements
Development has been made possible with a grant from Hathor.
Hathor API Reference
https://docs.hathor.network/references/headless-wallet/http-api/