Так как любой программист будет делать, я сделал свою собственную C # обертку интерфейса RPC JSON, который предлагается стандартным программным обеспечением бумажника Bitcoin. Проект можно найти на GitHub: https://github.com/BitKoot/BitcoinRpcSharp. Я планирую добавить больше возможностей, как они нужны мне для моих собственных проектов.
Я пытался сохранить интерфейс, как похож на интерфейс JSON RPC, как это возможно. Я представил резюме с каждым методом, предложенным. Большинство из них происходит от вики, и я заполнил пробелы, где вещи не были немедленно ясны.
Решение содержит два проекта.
- BitcoinRpcSharp: это библиотека, которая содержит фактическую реализацию (см примеры ниже). Я реализовал около 95% всех вызовов RPC. Некоторые вызовы deprected, другие не имеют значения (например, помощь). Есть два метода, которые мне нужно смотреть в более, прежде чем я могу завершить список реализованных методов: listlockunspent и lockunspent.
- TestConsoleApplication: это консольное приложение позволяет вам вызывать большинство методов из командной строки (см пример ниже). Это приложение, чтобы опробовать методы бумажника Bitcoin. Он не предназначен в качестве полноценного интерфейса командной строки в Bitcoin кошелек.
Библиотека примеров использования
Давайте получить некоторую информацию:
Код:
BitcoinWallet бумажник = новый BitcoinWallet ("http://192.168.56.1:19001", "контрольная работа", "123", ложный);
Информация Информация = wallet.GetInfo ();
Console.WriteLine ("Текущая сложность: {0}", Info.Difficulty);
Информация Информация = wallet.GetInfo ();
Console.WriteLine ("Текущая сложность: {0}", Info.Difficulty);
Если мы хотим, чтобы переместить некоторые биткойна на вновь созданном адрес, связанный с новой учетной записью:
Код:
BitcoinWallet бумажник = новый BitcoinWallet ("http://192.168.56.1:19001", "контрольная работа", "123", ложный);
Строка newAddress = wallet.GetNewAddress ("Новый аккаунт");
Успех BOOL = wallet.Move ("Новый аккаунт", "OldAccount", 1m);
Строка newAddress = wallet.GetNewAddress ("Новый аккаунт");
Успех BOOL = wallet.Move ("Новый аккаунт", "OldAccount", 1m);
Или давайте попробуем что-то немного более сложным: создать сырую сделку и подписать:
Код:
BitcoinWallet бумажник = новый BitcoinWallet ("http://192.168.56.1:19001", "контрольная работа", "123", ложный);
// Создать объект, содержащий входные и выходные данные сделки.
вар createRawTransaction = новый CreateRawTransaction ();
createRawTransaction.AddInput ("bfe0d11bdb73df37709a9f84fabf272576136bcd80589d52ab8ef35f25b48eda", 1); // идентификатор и выход транзакции
createRawTransaction.AddOutput ("n4AiGgWQvZtbo6vjnHWhXTB3ayYF3CFa55", 0.0001m); // адрес назначения и количество
createRawTransaction.AddOutput ("mxDuX7VAPVEhDLtiMy5YgZSt1tLkss8e6G", 0.0001m); // адрес назначения и количество
// Получить строку шестигранную необработанного сделки
вар unsignedHex = wallet.CreateRawTransaction (createRawTransaction);
// Подписать сделку и получить шестнадцатеричную строку подписанного сделки
вар signRawTransaction = новый SignRawTransaction (unsignedHex); // Этот объект может содержать больше информации для сложный сценарий-х
вар signedTransaction = wallet.SignRawTransaction (signRawTransaction);
// Направлена подписанная сделка
wallet.SentRawTransaction (signedTransaction.Hex);
// Создать объект, содержащий входные и выходные данные сделки.
вар createRawTransaction = новый CreateRawTransaction ();
createRawTransaction.AddInput ("bfe0d11bdb73df37709a9f84fabf272576136bcd80589d52ab8ef35f25b48eda", 1); // идентификатор и выход транзакции
createRawTransaction.AddOutput ("n4AiGgWQvZtbo6vjnHWhXTB3ayYF3CFa55", 0.0001m); // адрес назначения и количество
createRawTransaction.AddOutput ("mxDuX7VAPVEhDLtiMy5YgZSt1tLkss8e6G", 0.0001m); // адрес назначения и количество
// Получить строку шестигранную необработанного сделки
вар unsignedHex = wallet.CreateRawTransaction (createRawTransaction);
// Подписать сделку и получить шестнадцатеричную строку подписанного сделки
вар signRawTransaction = новый SignRawTransaction (unsignedHex); // Этот объект может содержать больше информации для сложный сценарий-х
вар signedTransaction = wallet.SignRawTransaction (signRawTransaction);
// Направлена подписанная сделка
wallet.SentRawTransaction (signedTransaction.Hex);
Применение Test Console
Способ вызова метода является ввод его номер в меню, а затем через запятую аргументов. Например, если мы хотим сделать резервную копию бумажник в D: \ Резервные копии, мы должны ввести: 2, D: \ Резервные копии.
Я хотел бы услышать, если люди находят это Usefull, есть предложения или пожелания. Пожалуйста, будьте осторожны при использовании этой библиотеки, так как некоторые функции могут действительно испортить ваш кошелек. Я использовал и рекомендовать testnet в коробке (https://github.com/freewil/bitcoin-testnet-box) для развития.
Я вы собираетесь использовать свое программное обеспечение, напишите мне сообщение. Я всегда хотел, чтобы услышать, что вы используете его для, и если у вас есть какие-либо просьбы или рекомендации. И если вы чувствуете себя очень filantropic, напишите мне небольшой совет по адресу: 16rC9F5f5gWc3BNVDSX8Z9MRhcjWeRQ8uU.