Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
}
],
"Hash" : "44A947DA083030551B1E763863BDED69A339B45577A31AEF6D2DA34328EB9B99"
},
"Transactions" : [
{
"TransactionType" : 1,
"Data" : null,
"Metadata" : "empty tran",
"TransactionTime" : {
"DateTime" : ISODate("2017-08-24T04:51:51.912Z"),
"Ticks" : NumberLong(636391471119123930)
},
"Sign" : null,
"SignerCert" : null,
"_id" : "047AD9C42C94F6188F66C57EBB527C40B39613A8AA486940DDDAC9003148AB62",
"TransactionIn" : null,
"TransactionOut" : null
}
]
}
Порядок выпуска блоков
В ПО СОВ существует 3 варианта наступления события выпуска блоков:
- выпуск блока по расписанию (интервал установлен равным четырем часам, то есть каждый промежуток времени будет выпускаться блок независимо, присутствуют ли пуле транзакции для помещения в блок (если их нет блок будет содержать одну пустую транзакцию типа 1 (alert)); выпуск блока по накоплению в пуле определенного количества транзакций ( установленное количество равняется 10 транзакциям), выпуск блока осуществляется немедленно; выпуск блока через определенный интервал времени, после получения в пуле хотя бы одной транзакции (интервал установлен равным десяти минутам).
Также существует возможность выпустить блок принудительно, через Web-интерфейс, нажав кнопку «Выпустить блок» – при наличии права выпуск блока. В данном случае жеребьевка не проводится. Если пользователь является суперпользователем (первый ключ), то также для выпуска и проверки блока не требуется достижения консенсуса. Соответственно, транзакций в блоке может быть от одной до десяти на данный момент.
При наступлении события выпуска блока, узлы, имеющие на это право, проводят жеребьевку и выявляют победителя. Жеребьевка реализована с использованием алгоритма лотереи.
Алгоритм лотереи сформирован по принципу «Задачи о византийских генералах» и предполагает, что при наступлении события выпуска блока удостоверяющие узлы начинают лотерею для определения кому именно необходимо выпустить блок.
На первом шаге лотереи каждый удостоверяющий узел – участник лотереи – генерирует случайное число в диапазоне от 0 до 100 и ключ, далее осуществляет шифрование случайного числа сгенерированным ключом и отправляет его в зашифрованном виде другим участникам лотереи. После того как каждый участник лотереи сформировал вектора зашифрованных случайных чисел, полученных от всех остальных участников лотереи либо 75% (алгоритм консенсуса), осуществляется переход ко второму шагу лотереи. Таким образом осуществляется первоначальный отбор дальнейших участников лотереи.
На втором шаге предполагается обмен ключами, сгенерированными на первом шаге, для расшифровки полученных от других участников лотереи случайных чисел.
На третьем шаге осуществляется дальнейший отбор участников лотереи (отсеиваются ненадежные участники, предоставившие разные числа остальным участникам), далее выявляется победитель лотереи:
Суммируются случайные числа, сгенерированные оставшимися участниками лотереи. Вычисляется остаток от деления суммы, полученной в п. 1), на количество оставшихся участников лотереи. Формируется отсортированный по алфавиту массив хэшей оставшихся участников лотереи. Определяется победитель лотереи – элемент массива с индексом, вычисленным в п. 3).На четвертом шаге происходит обмен информацией о победителе между всеми участниками лотереи. Должно быть достигнуто согласие между участниками лотереи, определенными на третьем шаге, далее победитель осуществляет выпуск блока (на выпуск блока победителю отводится 60 секунд). В противном случае лотерея инициируется повторно.
В ПО СОВ при подписи блоков заложен алгоритм консенсуса. Алгоритм консенсуса предполагает, что для выпуска блоков и проверки их корректности, удостоверяющему узлу необходимо собрать не менее 75% подписей других удостоверяющих узлов. При достижении консенсуса подписей формируется заголовок блока, от него высчитывается хэш значение и подписывается сертификатом удостоверяющего узла, выпустившего блок, в заголовок дописывается значение подписи.
ПРИЛОЖЕНИЕ 1
Коды ошибок и их описание
Код ошибки | Текст ошибки |
1 | Иная ошибка |
2 | Ошибка связи c другим daemon |
3 | Ошибка запуска mongodb |
4 | Ошибка запуска daemon на порту |
5 | Ошибка запуска daemon-api |
6 | Ошибка выпуска блока - в пуле отсутствуют транзакции |
7 | Ошибка выпуска блока - в цепочке прав отсутствуют узлы с правом подписи блока |
8 | Ошибка выпуска блока - не собрано достаточное количество подписей для консенсуса выпуска блока |
9 | Ошибка выпуска блока - ошибка выработки подписи блока |
10 | Ошибка выпуска блока - ошибка валидации блока |
11 | Ошибка выпуска блока - таймаут ожидания выпуска блока другим узлом-майнером |
12 | Ошибка выпуска блока - ошибка проведения лотереи |
13 | Ошибка выпуска блока - иная ошибка |
14 | Ошибка валидации блока |
15 | Ошибка обработки пришедшего блока |
16 | Ошибка валидации транзакции |
17 | Ошибка отправки транзакции в сеть |
18 | Ошибка добавления транзакции через API |
19 | Ошибка получения файла через API |
Ошибки логируются в файл yyyy-MM-dd. log в папку logs\errors в корне приложения Blockchain. Daemon.
Формат записи события следующий: yyyy-MM-dd HH:mm:ss. ms | ERROR | Код ошибки | Краткое описание с минимальной детализацией | Объект ошибки (Exception) – может отсутствовать
Пример записи:
2017-08-23 12:59:21.2246 | ERROR | 2 | {"Name":"tracker 2","CertificateOpenKeyId":null,"Hash":null,"DaemonVersion":null,"BlockHeight":0} | System. ServiceModel. EndpointNotFoundException: Не удалось подключиться к net. tcp://192.168.0.139:50002/IBlockChainDaemonService. Попытки подключения выполнялись в течение интервала времени 00:00:01.0117772. Код ошибки TCP 10061: Подключение не установлено, т. к. конечный компьютер отверг запрос на подключение 192.168.0.139:50002. ---> . Sockets. SocketException: Подключение не установлено, т. к. конечный компьютер отверг запрос на подключение 192.168.0.139:50002
в . Sockets. Socket. DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
в . Sockets. Socket. Connect(EndPoint remoteEP)
в System. ServiceModel. Channels. SocketConnectionInitiator. Connect(Uri uri, TimeSpan timeout)
--- Конец трассировки внутреннего стека исключений ---
Server stack trace:
в System. ServiceModel. Channels. SocketConnectionInitiator. Connect(Uri uri, TimeSpan timeout)
в System. ServiceModel. Channels. BufferedConnectionInitiator. Connect(Uri uri, TimeSpan timeout)
в System. ServiceModel. Channels. ConnectionPoolHelper. EstablishConnection(TimeSpan timeout)
в System. ServiceModel. Channels. ClientFramingDuplexSessionChannel. OnOpen(TimeSpan timeout)
в System. ServiceModel. municationObject. Open(TimeSpan timeout)
в System. ServiceModel. Channels. ServiceChannel. OnOpen(TimeSpan timeout)
в System. ServiceModel. municationObject. Open(TimeSpan timeout)
в System. ServiceModel. Channels. ServiceChannel. CallOpenOnce. System. ServiceModel. Channels. ServiceChannel. ICallOnce. Call(ServiceChannel channel, TimeSpan timeout)
в System. ServiceModel. Channels. ServiceChannel. CallOnceManager. CallOnce(TimeSpan timeout, CallOnceManager cascade)
в System. ServiceModel. Channels. ServiceChannel. Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
в System. ServiceModel. Channels. ServiceChannelProxy. InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
в System. ServiceModel. Channels. ServiceChannelProxy. Invoke(IMessage message)
Exception rethrown at [0]:
в System. Runtime. Remoting. Proxies. RealProxy. HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
в System. Runtime. Remoting. Proxies. RealProxy. PrivateInvoke(MessageData& msgData, Int32 type)
в BLOCKCHAIN. work. IDaemonService. GetPeerInfo()
в BLOCKCHAIN. workInfo.<>c.<SyncPeerInfo>b__23_0(IDaemonService c) в C:\CBTTFS\BLOCKCHAIN\Sources\src\BLL\BLOCKCHAIN. Daemon\Network\NetworkInfo. cs:строка 274
в BLOCKCHAIN. workInfo. InvokeChannelAction[T](PeerInfo peer, Func`2 action, Boolean needCloseChannel) в C:\CBTTFS\BLOCKCHAIN\Sources\src\BLL\BLOCKCHAIN. Daemon\Network\NetworkInfo. cs:строка 398
в BLOCKCHAIN. workInfo. SyncPeerInfo(PeerInfo peer, Boolean needCloseChannel) в C:\CBTTFS\BLOCKCHAIN\Sources\src\BLL\BLOCKCHAIN. Daemon\Network\NetworkInfo. cs:строка 274
ПРИЛОЖЕНИЕ 2
Установка и настройка модуля выработки ЭЦП
Перед осуществлением установки необходимо создать каталог для программного обеспечения ПО РБГ.
Для установки модуля выработки ЭЦП следует открыть папку «Install» ̶ «ПО РБГ», а затем выбрать папку «Модуль выработки ЭЦП».
Для начала установки модуля выработки ЭЦП необходимо запустить приложение «setup». В результате появляется окно, представленное на рисунке 1.

Рисунок 1 – Окно начала установки ПО СОВ
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


