Почему нельзя подключиться к бухгалтерской книге Daml-on-Sawtooth через dazl python? - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь развернуть этот https://github.com/digital-asset/dazl-client/tree/master/samples/ping-pong интеллектуальный контракт DAML с клиентом dazl на Sawtooth. На основании примера с пилообразным зубом https://github.com/blockchaintp/daml-on-sawtooth. Я использовал следующие команды:

  1. cd /home/.../daml-on-sawtooth-master

export ISOLATION_ID = my-local-build

бен / сборки. sh

cd /home/.../daml-on-sawtooth-master

регистр распределения ресурсов daml Алиса Боб --host localhost --port 9000

регистр daml upload-dar --host localhost --port 9000 /home/.../.daml/dist/pingpong-1.0.0.dar

daml ledger navigator --host localhost --port 9000

До сих пор все в порядке. Я могу получить доступ к навигатору и daml-on-sawtooth-tracer

Однако, когда я пытаюсь отправить транзакции из dazl

/ home /.../ samples / ping-pong / pingpong pipenv run python3 main .py --url http://localhost: 9000

Я получаю эту ошибку: [ОШИБКА] 2020-03-29 20: 13: 13,409 | дазл | Пытался отправить команду и не смог! Трассировка (последний вызов был последним): файл "/home/usr/.local/share/virtualenvs/bot-m0tvQ3xh/lib/python3.7/site-packages/dazl/client/_party_client_impl.py", строка 415, в main_writer ожидают submit_command_asyn c (клиент, p, команды) Файл "/ home / usr anaconda3 / lib / python3 .7 / concurrent / futures / thread.py", строка 57, в результате выполнения result = self.fn ( * self.args, ** self.kwargs) Файл "/home/usr/.local/share/virtualenvs/bot-m0tvQ3xh/lib/python3.7/site-packages/dazl/protocols/v1/grpc .py ", строка 42, в лямбде: self.connection.command_service.SubmitAndWait (запрос)) Файл" /home/usr/.local/share/virtualenvs/bot-m0tvQ3xh/lib/python3.7/site- packages / grpc / _channel.py ", строка 826, в call return _end_unary_response_blocking (состояние, вызов, False, нет) Файл" /home/usr/.local/share/virtualenvs/bot-m0tvQ3xh/lib /python3.7/site-packages/grpc/_channel.py ", строка 729, в _end_unary_response_blocking повысить _InactiveRpcError (состояние) grp c ._ channel._InactiveRpcError: <_InactiveRpcError RP C, который завершен with: status = StatusCode.INVALID_ARGUMENT details = "Недопустимый аргумент: команда TTL (разница между эффективным временем главной книги и максимальным временем записи) PT30S выходит за пределы. Мин: PT41S. Макс: PT1M20S. Клиент может предпринять попытку повторной отправки со значением, которое находится в пределах этого интервала. "Debug_error_string =" {"созданный": "@ 1585501993.408836076", "описание": "Ошибка, полученная от однорангового узла ipv6: [:: 1]: 9000", "файл" : "src / core / lib / surface / call. cc", "file_line": 1056, "grpc_message": "Неверный аргумент: команда TTL (разница между эффективным временем главной книги и максимальным временем записи) PT30S выходит за пределы . Min: PT41S. Max: PT1M20S. Клиент может предпринять попытку повторной отправки со значением, которое находится в пределах этого интервала. "," Grpc_status ": 3}" </p>

1 Ответ

0 голосов
/ 30 марта 2020

Важной частью сообщения об ошибке является самый последний бит.

"Invalid argument: Command TTL (the difference between ledger effective time and maximum record time) PT30S is out of bounds. Min: PT41S. Max: PT1M20S. Client may attempt resubmission with a value that falls within that interval.","grpc_status":3}"

Это говорит о том, что вы / DAZL установили maximum_record_time на ledger_effective_time + 30s, но для DAML на Sawtooth требуются значения между ledger_effective_time + 41s и ledger_effective_time + 120s.

Глядя на источники DAZL, похоже, что 30-ые ​​здесь жестко закодированы: https://github.com/digital-asset/dazl-client/blob/f7ba752b1ae7d007d457f43ef2f723fdc6e94fb9/python/dazl/client/_party_client_impl.py#L408

Чтобы заставить его работать с Sawtooth вам, вероятно, нужно изменить это число. Я создал проблему для настройки здесь: https://github.com/digital-asset/dazl-client/issues/73

...