Goal
A full 100% port of the official Java API SDK to Microsoft .NET Core Library. This library will have ALL functionality of the Java library. This includes a fork of XdrGen we wrote during this process that outputs xdr files into .NET Core C# code as well (https://github.com/michaeljmonte/xdrgen). This port will be cross platform compatible as it will be 100% core compatible, so it will run on Windows, MacOS, and Linux platforms or any other platform the .NET Core is capable of running such as Android, iOS using Xamarin.
This library will also be available as a Nuget Package to the world on http://www.nuget.org for easy digestion and easy integration into developers code bases. In addition, the code is being written to be as close to possible to the Java library so that future maintenance costs will be drastically reduced.
Port is 100% completed and is ready for use. Can be downloaded from the following locations:
Capabilities
- Accounts - Create, Query, Payment, Path Payment, Manage Offer, Create Passive Offer, Set Options, Change Trust, Allow Trust, Account Merge, Inflation, Manage Data, Paging (Limit, Cursor, Sorting)
- Assets - CreateNonNativeAsset types (AlphaNum4, AlphaNum12), XDR Conversion
- Distributed Exchange - Orderbook, Passive Offers
- Federation
- Inflation - Inflation Operation
- Ledger Create, Query, Paging (Limit, Cursor, Sorting)
- Multisignature - Allows multiple signature per transaction, Thresholds, ed25519 signature scheme, Transaction Signing, Allow Trust, Set Options, Hash, Envelopes
- Stellar.toml - Supports the Stellar TOML format.
- Testnet - Supports Network switching from Public to Testnet
- Transactions - Source Accounmt, Fee, Sequence Number, Supported Operations (see below), Signatures (multiple), Memo (Text, Id, Hash, Return)
- XDR - Full XDR Support, Custom XDRGenerator, Supports .x files
Supported Operations
I will post regular updates of our progress below:
UPDATE #5 (100% Complete)
GitHub: https://github.com/elucidsoft/dotnetcore-stellar-sdk
Nuget: https://www.nuget.org/packages/stellar-dotnetcore-sdk/1.0.0
We are now done with all of our tasks, the following was completed:
- Full Port of Official Java SDK
- Published to Nuget.org
- Documentation
- Sample Application
UPDATE #4
This port is completely done, we are now working on a sample app, documentation, and a Nuget package. You may use this code for your applications! Read below for more details...
Update #3
- ITS DONE!!!!! The port is now 100% done, and in a usable state for the public to consume. We will be working to add ancillary items such as getting the documentation exported and up on GitHub pages, and getting the Nuget Package done and published. But all unit tests pass, so the code is good to go...
- We have successfully ported over 313 classes.
- We have ported over 146 unit tests which are all passing 100%, we even added a couple unit tests.
Todo:
- Fix any code documentation that needs to be fixed up. Export code documentation and beef it up and get it up on GitHub pages.
- Write a sample application to demo the features. We were thinking of a clone of Laboratory as a good example.
- Wrap up as a Nuget Package and publish to http://www.nuget.org
Update 2
- We have successfully ported over 200 classes.
- We have ported over 57 unit tests for those 200 classes and all unit tests are passing.
- We wrote a custom XdrGen port, available here: https://github.com/michaeljmonte/xdrgen, which will generate C# classes based on the .x classes.
- During our port we found a bug in the Java API SDK and we successfully issued a pull request and got the fix committed to the Java API SDK repo. (https://github.com/stellar/java-stellar-sdk/pull/52)
- We have integrated our repo with Travis-CI so all builds are participating in continuous integration and unit tests on every commit. There is a badge on the repo to indicate the health of the build.
Todo:
- We have 162 classes including unit test classes to port over.
- Keep all unit tests passing at 100%
- Write a sample application to demo some of the features.
- Wrap build up as a Nuget Package and publish to http://www.nuget.org
- Documentation
- Please follow our repo to keep track of all the effort we are putting into it! It's a ton of work but its been a blast and we are having a lot of fun doing it!!