Совершить новое состояние без потока в Corda - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь управлять своей собственной базой данных Corda, например, я хочу зафиксировать новое состояние без потока.Можете ли вы сказать мне, как это сделать?И, кстати, любой может дать мне Entity Relationship Diagram базы данных Corda.

Спасибо.

1 Ответ

0 голосов
/ 25 сентября 2018

Это было бы не просто. Вот общее описание шагов, которые вам необходимо выполнить:

  • Используйте клиентскую утилиту для создания SignedTransaction, соответствующего транзакции, которую вы хотите добавить в свою базу данных (, включая подписи контрагента и нотариуса! )
  • Сохраните следующие свойства транзакции для последующего использования:
    • ID транзакции
    • нотариус сделки
    • Сериализованный SignedTransaction BLOB
    • Для каждого состояния вывода:
      • Выходной индекс
      • Наименование класса контракта
    • Для каждого состояния ввода:
      • Ссылка на его состояние (выходной индекс и идентификатор создаваемой транзакции)
  • Войдите в базу данных узла, следуя инструкциям здесь
  • Добавить запись в таблицу NODE_TRANSACTIONS с идентификатором транзакции и сериализованным SignedTransaction blob
  • Для каждого состояния вывода добавьте запись в таблицу VAULT_STATES с информацией, сохраненной ранее.
    • CONSUMED_TIMESTAMP, LOCK_ID и LOCK_TIMESTAMP должны быть пустыми
    • RECORDED_TIMESTAMP должно быть текущим временем
    • STATE_STATUS должен быть не потреблен
  • Для каждого состояния ввода обновите свою запись в таблице VAULT_STATES до потребляемой.
    • Вы можете идентифицировать рассматриваемое состояние ввода, используя ссылку на состояние, сохраненную ранее

И это при условии, что в вашем штате не реализованы интерфейсы, которые потребовали бы обновления дополнительных таблиц, таких как LinearState, QueryableState, SchedulableState или FungibleAsset.

...