Интересно, что 18 месяцев спустя ни один из трех сайтов, которые вы Список работает больше. К сожалению вы правы. Я не знаю, что планы для нестандартных операций в клиент Сатоши. Я взяла кошелек.DAT-это то, что получает резервное копирование автоматически + по желанию пользователей, чтобы обезопасить свои средства. Большинство людей оставить это значение как 0. Большинство сделок, которые не требуют комиссии пройти своевременно. @Крис, вы можете использовать только 1 биткоин-адрес, но это не рекомендуется. Если вы используете несколько адресов Bitcoin, это гораздо сложнее оценить, сколько денег у вас есть. Большинство кошельков будет создавать новый адрес для каждой транзакции, чтобы сохранить определенную анонимность. не знаю, почему на Windows либо с Bitcoin-Core или bitoind я не могу обновить и установить биткоин.файл conf. Он всегда игнорируется @NickODell не 40 байт? (Редактировать: вы имеете в виду 75 байт я так понял?)

Я пытаюсь получить доступ к МТ.Иди_ API до версии v2 через C# и HTTP-запросов. Я собрал следующий код на основе различных примеров, которые я нашел в интернете (например, закись документации).

частная строковые функции makerequest(строки вызов)
{
 var параметры = новый словарь<строка, строка> ();
 параметры.Добавить ("tonce", Tonce.GenerateTonce().Метод toString());

 string путь = валюта + "/" + вызов;

 ВАР запрос = новый HttpPostRequest(базовый адрес + путь, параметры);
 запрос.Запрос.Заголовки.Добавить ("остаток-ключ", mApiKey);
 запрос.Запрос.Заголовки.Добавить ("остаток-знак", mHmac.Знак(путь, по запросу.GetEncodedPostParams()));

 ответ ВАР = запрос.Запрос.Метод GetResponse();
 вернуть ответ.Метод toString ();
}

(Здесь HttpPostRequest-достаточно простая обертка вокруг .Чистый HTTP-запрос)

Я называю такой код:

Функции makerequest ("деньги/информация");

Это приводит к 403-ошибка от МТ.Поставить сервер (отказано в доступе).

Что я проверил:

  • Tonce создается правильно
  • Подписание ксом работает правильно (проверял с закисью пример)

И вот код для моего HTTP-метод POST класса запрос:

общественные HttpPostRequest класс 
{
 запрос общественного класса HttpWebRequest { получить; набор; }
 строки mPostParams;

 публичных HttpPostRequest (строка url, словарь<строка,строка> postParameters)
{
 mPostParams = "";
 (ключевой строке foreach в postParameters.Ключи)
{
 mPostParams += Ури.EscapeDataString(ключ) + "="
 + Ури.EscapeDataString(postParameters[ключ]) + "&";
}

 если(postParameters.Количество > 0)
 mPostParams = mPostParams.Подстрока (0, mPostParams.Длина - 1);

 Запрос = (Класса HttpWebRequest)HttpWebRequest Будут.Создать(URL-адрес);
 Запрос.Метод = "сообщение";

 Byte[] данные = кодировка.В ASCII.Метод getbytes(mPostParams);

 Запрос.Значение contentType = "применение/х-www-формы-urlencoded";
 Запрос.ContentLength = данные.Длина;
 Запрос.Значение UserAgent = "Mozilla или 4.0 (совместимый; MtGoxTradeCLI)";

 RequestStream поток = запрос.Метод getrequeststream();
 requestStream.Записи(данные, 0, данные.Длина);
requestStream.Закрыть();
}

 общественного строка GetEncodedPostParams()
{
 возвращение mPostParams;
}

 публичных строку отправить()
{
 Класс httpwebresponse myHttpWebResponse = (класс httpwebresponse)запрос.Метод GetResponse();
 ResponseStream поток = myHttpWebResponse.GetResponseStream();
 Что streamreader myStreamReader = новый поток streamreader(responseStream, кодирование.По умолчанию);
 строки pageContent = myStreamReader.ReadToEnd();
myStreamReader.Закрыть();
responseStream.Закрыть();
myHttpWebResponse.Закрыть();
 возвращение pageContent;
}
}

И мой класс ксом:

класс HmacSigner
{
 частная чтения строки mSecret;

 общественные HmacSigner(строка секрет)
{
 mSecret = секрет;
}

 знак общественного строку(метод String, строка postData)
{
 строку сообщения = метод + '\0' + postData;
 HMACSHA512 ксом = новый HMACSHA512(кодирование.По умолчанию.Метод getbytes(сообщение));
 ксом.Ключ = Конвертировать.FromBase64String(mSecret);
 возвращение преобразования.ToBase64String(ксом.Computehash Метод(Кодирование.В utf8.Метод getbytes(сообщение)), Base64FormattingOptions.Нет);
}

Кто-нибудь есть идея, что происходит неправильно здесь? Почему аутентификация не работает? Спасибо!