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 шт):

Автор решения: D .Stark

Проблема связана с тем, что JsonConvert сериализует дату в неподходящем формате. Нужно добавить:

JsonConvert.DefaultSettings = new Func<JsonSerializerSettings>(() => {
    return new JsonSerializerSettings() {
        DateTimeZoneHandling = DateTimeZoneHandling.Utc
    };
});
→ Ссылка