Coder Social home page Coder Social logo

pjensen / bitcoinlib Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cryptean/bitcoinlib

1.0 2.0 0.0 5.82 MB

The most complete, up-to-date, battle-tested Library and RPC Wrapper for Bitcoin, Litecoin, Dogecoin and Bitcoin-Clones in C#.

License: GNU General Public License v3.0

C# 92.95% PowerShell 6.34% Shell 0.71%

bitcoinlib's Introduction

BitcoinLib Build Status

.Net Bitcoin, Litecoin, Dogecoin and Bitcoin-Clones Library & RPC Wrapper in C#

Features

  • Fully compatible and up-to-date with Bitcoin 0.11.1 RPC API.
  • Available on NuGet.
  • Design-by-contract, service-oriented architecture.
  • Strongly-typed structures for complex RPC requests and responses.
  • Implicit JSON casting for all RPC messages.
  • Extended methods for every-day scenarios where the built-in methods fall short.
  • Exposure of all RPC API's functionality as well as the extended methods through a single interface.
  • Fallback mechanism for timed-out RPC requests.
  • Custom RPC exceptions.
  • Supports all Bitcoin clones.
  • Can operate on unlimited daemons with a single library reference.
  • Bitcoin, Litecoin and Dogecoin integrations included.
  • Each coin instance can be fully parametrized at run-time and implement its own constants.
  • Demo client included.
  • Disconnected raw RPC connector included for quick'n'dirty debugging.
  • Handles and relays RPC internal server errors along with their error code.
  • Can work without a .config file.
  • Fully compatible with Mono.
  • Test Network (testnet) and Regression Test Mode (regtest) ready.
  • Fully configurable.

Instructions for Bitcoin

  • Locate your bitcoin.conf file (in Windows it's under: %AppData%\Roaming\Bitcoin, if it's not there just go ahead and create it) and add these lines:

    • rpcuser = MyRpcUsername
    • rpcpassword = MyRpcPassword
    • server=1
    • txindex=1
  • Call bitcoind -reindex -txindex -debug=net -printtoconsole and wait until it's finished re-indexing (it might take a while). Append -testnet if you want to run it for Testnet. You need to do this just once.

  • Shut down bitcoind and run it again with these arguments: bitcoind -daemon -debug=net -printtoconsole. Append -testnet if you want to run it for Testnet. Wait until it is fully synchronized.

  • Edit the app.config file in the Console test client to best fit your needs. Make sure you also update the bitcoin.conf when you alter the Bitcoin_RpcUsername and Bitcoin_RpcPassword parameters.

  • You're good to go.

Instructions for Litecoin and other Bitcoin clones

  • Perform the same steps as those mentioned above for Bitcoin.

  • Litecoin configuration file is: litecoin.conf under: %AppData%\Roaming\Litecoin and its daemon is: litecoind.

  • Each coin can be initialized by its own interface specification:

    • IBitcoinService BitcoinService = new BitcoinService();
    • ILitecoinService LitecoinService = new LitecoinService();
  • Any bitcoin clone can be adopted without any further installation steps with the use of the generic ICryptocoinService:

    • ICryptocoinService cryptocoinService = new CryptocoinService("daemonUrl", "rpcUsername", "rpcPassword", "walletPassword");
  • Use (ICryptocoinService).Parameters to fully configure each coin pointer at run-time.

Configuration

Sample configuration:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<appSettings>

		<!-- BitcoinLib settings start -->

			<!-- Shared RPC settings start -->
			<add key="RpcRequestTimeoutInSeconds" value="10" />
			<add key="RpcResendTimedOutRequests" value="false" />
			<add key="RpcTimedOutRequestsResendAttempts" value="5" />
			<add key="RpcDelayResendingTimedOutRequests" value="true" />
			<add key="RpcUseBase2ExponentialDelaysWhenResendingTimedOutRequests" value="true" />
			<add key="RpcUnlockWalletImplicitlyWhenRequired" value="true" />
			<!-- Shared RPC settings end -->

			<!-- Bitcoin settings start -->
			<add key="Bitcoin_DaemonUrl" value="http://localhost:8332" />
			<add key="Bitcoin_DaemonUrl_Testnet" value="http://localhost:18332" />
			<add key="Bitcoin_WalletPassword" value="MyWalletPassword" />
			<add key="Bitcoin_RpcUsername" value="MyRpcUsername" />
			<add key="Bitcoin_RpcPassword" value="MyRpcPassword" />
			<!-- Bitcoin settings end -->

		<!-- BitcoinLib settings end -->
		
	</appSettings>
</configuration>

License

BitcoinLib is released under the terms of the GPLv3 license. See LICENSE for more information or see http://opensource.org/licenses/GPL-3.0.

Donations

This library took a significant amount of time and effort to build and requires continuous maintenance in order to keep up with changes introduced with every new Bitcoin-Core release. Keep it up by donating at: 14cSZjrLSWU1QX7DsKr2ogAfULq9pbgQG3

Support

Please use GitHub's Issues to report any issues. For Premium Support and other inquiries please contact: [email protected].

bitcoinlib's People

Contributors

chaz27 avatar jflecool2 avatar laptopu avatar operatoroverload avatar xeniacx avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.