BlockCypher Bitcoin Создание транзакции в тестовой сети
Я использую BlockCypher API для создания транзакции в тестовой сети Bitcoin. Происходит это в 3 этапа:
1.Отправка объекта частично заполненной транзакции:
{
"inputs":[
{
"addresses":[
"mpAR4FZPTwj8tDZKai5HTKRGsoP4CkWVGg"
]
}
],
"outputs":[
{
"value":500000,
"addresses":[
"n4VZdQwm57PoBuTEGYKtbrLxpo8MbY7V5K"
]
}
]
}
2.Локальное подписание полученной транзакции (использую метод Sign отсюда). Подписывается именно содержимое поля tosign, а так же добавляется публичный ключ для нашего адреса в pubkeys.
3.Отправка подписанной транзакции:
{
"pubkeys":[
"03f1b0e3232f041363f4c6d92087639e7f1663f5b2a987dc058389d4aac83fec3e"
],
"signatures":[
"3045022100edd5864db38723ed468b1d93217e126004321eda2a180b2a74eebacf0e52f4a002200138e211f470dbed7d297322d31d5c9a8199e131127f64152294706993441c3e"
],
"tosign":[
"5072a79a73664cb6809eb6e540eae0a3b0e8a2e2a216f79a9c8c1cf2e0679c44"
],
"tx":{
"addresses":[
"mpAR4FZPTwj8tDZKai5HTKRGsoP4CkWVGg",
"n4VZdQwm57PoBuTEGYKtbrLxpo8MbY7V5K"
],
"block_height":-1,
"confirmations":0,
"confirmed":"0001-01-01T00:00:00",
"double_spend":false,
"fees":0,
"hash":"f9695ab967a5338684435aa179a96d6930b7748cc2937895c52c6415b6407f28",
"inputs":[
{
"addresses":[
"mpAR4FZPTwj8tDZKai5HTKRGsoP4CkWVGg"
],
"output_index":1,
"output_value":100000,
"prev_hash":"607ba65e4a168c673819fa21a089b082b75fd4e90a1a4a2ebf32dbee6b5aede9",
"script_type":"pay-to-pubkey-hash"
}
],
"lock_time":0,
"outputs":[
{
"addresses":[
"n4VZdQwm57PoBuTEGYKtbrLxpo8MbY7V5K"
],
"script":"76a914fc078e674113834f297325987d10409af7ec80e688ac",
"script_type":"pay-to-pubkey-hash",
"value":500000
}
],
"preference":"low",
"received":"2021-03-27T11:12:20.259055446Z",
"relayed_by":"92.101.184.223",
"total":500000,
"ver":1,
"vin_sz":1,
"vout_sz":1
}
}
На моменте отправки подписанной транзакции сервер возвращает ошибку:
{"error": "Couldn't deserialize request: parsing time ""0001-01-01T00:00:00"" as ""2006-01-02T15:04:05Z07:00"": cannot parse """ as "Z07:00""}
Средств на адресе хватает (0.001 BTC). Не могу понять с чем связана ошибка.
Ответы (1 шт):
Проблема связана с тем, что JsonConvert сериализует дату в неподходящем формате. Нужно добавить:
JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() => {
return new JsonSerializerSettings() {
DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
});