Как отказаться от одобрения транзакции как организации - PullRequest
0 голосов
/ 21 февраля 2019

У меня всегда есть теоретический и общий вопрос: давайте предположим, что есть две организации: org1 и org2.И у каждой организации есть один пэр.Если для политики одобрения задано AND (org1, org2), это означает, что каждая транзакция нуждается в одобрении со стороны партнера org1 и org2.

Давайте предположим сценарий: org1 и org2 уже одобрили 5 транзакций.Но когда-нибудь, скажем, org1 вообще не хочет подтверждать какую-либо транзакцию, а это означает, что для каждой новой входящей транзакции (например, 6-й транзакции) org1 хочет сказать «нет» и отказывается одобрить новую транзакцию.Итак, мой вопрос: как org1 может отказаться от одобрения новой входящей транзакции?В более ярких словах, как орг, как сказать нет?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

На самом деле вы можете выполнить это с помощью небольшого настраиваемого подключаемого кода , который можно загрузить при запуске узла.Что вам нужно сделать, это создать фильтр аутентификации, который будет предотвращать одобрения и возвращать ошибки, а не пересылать запрос следующему фильтру аутентификации.

Из файла core.yaml :

    handlers:
        authFilters:
          -
            name: DefaultAuth
          -
            name: ExpirationCheck    # This filter checks identity x509 certificate expiration

Это встроенные фильтры по умолчанию, которые существуют в узле.Например, фильтр ExpirationCheck - проверяет срок действия идентификатора клиента.

Вам необходимо добавить еще один фильтр, который просто отклоняет предложения от клиентов (назовем его- NopeFilter), а затем скомпилируйте его в плагин golang и добавьте следующую запись:

-  
  name: FilterOne
  library: /opt/lib/filter.so

Содержимое фильтра будет очень похоже на фильтр DefaulAuth (который ничего не делает):

func (nf *NopeFilter) ProcessProposal(ctx context.Context, signedProp *peer.SignedProposal) (*peer.ProposalResponse, error) {
    return nil, errors.New("nope")
}

При запуске равноправного узла список фильтров читается из раздела core.yaml, а затем объединяется в цепочку фильтров , которые либо отклоняют предложение, либопередать его следующему фильтру.

Последний фильтр всегда является реальной службой индоссанта в одноранговом узле, которая фактически выполняет выполнение и подтверждение цепного кода (подписание результатов).

0 голосов
/ 21 февраля 2019

Одобрение не вариант, когда пользователь выбирает между да и нет.Транзакции выполняются в одноранговых узлах, имеющих цепной код, и когда одноранговые узлы, как указано в политике одобрения, согласовывают результат, тогда транзакция считается одобренной.Процесс выполнения транзакции может зависеть от бухгалтерских книг партнера.Например, все одноранговые узлы сохранили в бухгалтерской книге, что Ram имеет значение 50 Ram:50, теперь новая транзакция добавляет 20 значений к учетной записи Рама.Это выполняется в подтверждающих одноранговых узлах, и добавленный результат Ram:70 согласовывается всеми одноранговыми узлами.Теперь сделка будет одобрена.Но если регистр одного однорангового узла изменяется как Ram:40, и этот узел должен подтвердить транзакцию, он получит результат Ram:60, который не будет совпадать с результатом остальных участников, и транзакция не будетбыть одобренным.

...