Skip to content

client: add verbose signing option

This patch-set adds the option --verbose-signing to many wallet commands of tezos-client.

What the option does is display a bunch of information of about the operation before calling the signer.

It is meant for extra-cautious usage of the hardware ledger but it is actually independent of the signer backend.

Ledger Use-case

In the next version of the Wallet app, in the cases where the full parsing of the operation is not (yet) implemented the ledger will display a Blake 2B hash of what it is asked to sign (so far it has only been displaying “Sign Unverified”).

So the idea is to run the operations with --verbose-signing and --dry-run with ≥ 1 independent tezos-client's (for instance with a separate 99% air-gaped device) to get more assurance that the tezos-client actually doing the operation is not lying to the ledger.

(Of course, UX in this case is still no ideal since the user needs to try-run the operations based on the same branch, e.g. making sure with -b <hash>, but they have to be fast enough for that branch to not become obsolete).

Examples/Tests

Here is what is displayed for most commands that allow --verbose-signing, in the case of the ledger (or any “interactive” signer) the output is paused after the “pre-signature information.”

Start the mini-net flextesa-sandbox (I use --time 5,5,5 to slow it down a bit )

 $ tezos-client import secret key sledger "ledger://back-himalayan-apt-poodle/ed25519/0'/0'" --force 

Please validate (and write down) the public key hash displayed on the Ledger,
it should be equal
to `tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y`:
Tezos address added: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
 $ tezos-client transfer 10000 from bootacc-0 to sledger --verbose-signing --burn-cap 0.3 

Node is bootstrapped, ready for injecting operations.
Estimated gas: 10100 units (will add 100 for safety)
Estimated storage: 257 bytes added (will add 20 for safety)
Pre-signature information (verbose signing):
  * Branch: BL42YCPUEqwEcWnLSS6ckqHZiukJxo6pmZAoJuzNrFHSPpVgC1X
  * Watermark: `Generic-operation` (0x03)
  * Operation bytes:
    2cd54a6d49c82da8807044a41f8670cf31832cb12c151fe2f605407bcdf558960800008bd
    703c4a2d91b8f1d79455be9b99c2693e931fdfa0901d84f950280c8afa0250000d2e495a7
    ab40156d0a7c35b73d2530a3470fc87000
  * Blake 2B Hash (raw): 8YpyejphEGRfTXy3YMPQmMASm5VGsuS4AaLSd7QcwdCv
  * Blake 2B Hash (ledger-style, with operation watermark):
    5MzbDja8eTsyqLHAuJHjScYb8SNfRcWQboUtXCPkqdH4
  * JSON encoding:
    { "branch": "BL42YCPUEqwEcWnLSS6ckqHZiukJxo6pmZAoJuzNrFHSPpVgC1X",
      "contents":
        [ { "kind": "transaction",
            "source": "tz1YPSCGWXwBdTncK2aCctSZAXWvGsGwVJqU", "fee": "1274",
            "counter": "1", "gas_limit": "10200", "storage_limit": "277",
            "amount": "10000000000",
            "destination": "tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y" } ] }

Operation successfully injected in the node.
Operation hash is 'opBQwjhyCEcH5JxUtthPxh7m7sBxGKnCzVYwUcR7xr7MGwotZnW'
Waiting for the operation to be included...
Operation found in block: BLxcnVPonCjWyQSt5vgkUq9pTcrSbhXttZ8wMRS6Nmj8WBM8RhU (pass: 3, offset: 0)
This sequence of operations was run:
  Manager signed operations:
    From: tz1YPSCGWXwBdTncK2aCctSZAXWvGsGwVJqU
    Fee to the baker: ꜩ0.001274
    Expected counter: 1
    Gas limit: 10200
    Storage limit: 277 bytes
    Balance updates:
      tz1YPSCGWXwBdTncK2aCctSZAXWvGsGwVJqU ........... -ꜩ0.001274
      fees(tz1hUXU4DPHPyrEEekqhmEEJvdCpB2gP4qtp,0) ... +ꜩ0.001274
    Transaction:
      Amount: ꜩ10000
      From: tz1YPSCGWXwBdTncK2aCctSZAXWvGsGwVJqU
      To: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
      This transaction was successfully applied
      Consumed gas: 10100
      Balance updates:
        tz1YPSCGWXwBdTncK2aCctSZAXWvGsGwVJqU ... -ꜩ10000
        tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ... +ꜩ10000
        tz1YPSCGWXwBdTncK2aCctSZAXWvGsGwVJqU ... -ꜩ0.257

The operation has only been included 0 blocks ago.
We recommend to wait more.
Use command
  tezos-client wait for opBQwjhyCEcH5JxUtthPxh7m7sBxGKnCzVYwUcR7xr7MGwotZnW to be included --confirmations 30 --branch BL42YCPUEqwEcWnLSS6ckqHZiukJxo6pmZAoJuzNrFHSPpVgC1X
and/or an external block explorer.
 $ tezos-client originate account to_delegate for sledger transferring 1000 from sledger --verbose-signing --delegatable --burn-cap 0.3 

Node is bootstrapped, ready for injecting operations.
Estimated gas: 10000 units (will add 100 for safety)
Estimated storage: 257 bytes added (will add 20 for safety)
Pre-signature information (verbose signing):
  * Branch: BLxcnVPonCjWyQSt5vgkUq9pTcrSbhXttZ8wMRS6Nmj8WBM8RhU
  * Watermark: `Generic-operation` (0x03)
  * Operation bytes:
    a43f08f2b1d38e7c2762fc1b123b3ab772ae34669c2b541a0f7e96a104341e94070000d2e
    495a7ab40156d0a7c35b73d2530a3470fc870ea0902904e0000cda3081bd81219ec494b29
    068dcfd19e427fed9a66abcdc9e9e99ca6478f60e9090000d2e495a7ab40156d0a7c35b73
    d2530a3470fc870920903f44e950200d2e495a7ab40156d0a7c35b73d2530a3470fc87080
    94ebdc03ffff0000
  * Blake 2B Hash (raw): 9r7Kamx86vpGiYgmsj8nQWWN8wBXi3QPEh7qSo13xKGR
  * Blake 2B Hash (ledger-style, with operation watermark):
    51Kq8DEp2DU7bw9tMbFRYW2DzQ5bFC2giAtGCBY6zwvp
  * JSON encoding:
    { "branch": "BLxcnVPonCjWyQSt5vgkUq9pTcrSbhXttZ8wMRS6Nmj8WBM8RhU",
      "contents":
        [ { "kind": "reveal",
            "source": "tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y", "fee": "1258",
            "counter": "2", "gas_limit": "10000", "storage_limit": "0",
            "public_key":
              "edpkvCnetRr7moCiJkEY99Sbi4FTNgmP9yVF8JPXAYwWNkwgAaVkxV" },
          { "kind": "origination",
            "source": "tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y", "fee": "1170",
            "counter": "3", "gas_limit": "10100", "storage_limit": "277",
            "managerPubkey": "tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y",
            "balance": "1000000000" } ] }

Operation successfully injected in the node.
Operation hash is 'ooBsWAJUcvpNaNQgGREyEmdUdd2r1SFPHfSN9RWy9cUpmwVGCWP'
Waiting for the operation to be included...
Operation found in block: BLfaNjKbfcCdDKFNrxcmcu5CsDAS3ZMEikyoygUASGuoWb9fvek (pass: 3, offset: 0)
This sequence of operations was run:
  Manager signed operations:
    From: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
    Fee to the baker: ꜩ0.001258
    Expected counter: 2
    Gas limit: 10000
    Storage limit: 0 bytes
    Balance updates:
      tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ........... -ꜩ0.001258
      fees(tz1SUjpVZe18i2VbPEeQBxcv5erERFuGk1Q8,0) ... +ꜩ0.001258
    Revelation of manager public key:
      Contract: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
      Key: edpkvCnetRr7moCiJkEY99Sbi4FTNgmP9yVF8JPXAYwWNkwgAaVkxV
      This revelation was successfully applied
      Consumed gas: 10000
  Manager signed operations:
    From: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
    Fee to the baker: ꜩ0.00117
    Expected counter: 3
    Gas limit: 10100
    Storage limit: 277 bytes
    Balance updates:
      tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ........... -ꜩ0.00117
      fees(tz1SUjpVZe18i2VbPEeQBxcv5erERFuGk1Q8,0) ... +ꜩ0.00117
    Origination:
      From: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
      For: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
      Credit: ꜩ1000
      No script (accepts all transactions)
      No delegate for this contract
      Spendable by the manager
      Delegate can be changed by the manager
      This origination was successfully applied
      Originated contracts:
        KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8
      Consumed gas: 10000
      Balance updates:
        tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ... -ꜩ0.257
        tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ... -ꜩ1000
        KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8 ... +ꜩ1000

New contract KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8 originated.
The operation has only been included 0 blocks ago.
We recommend to wait more.
Use command
  tezos-client wait for ooBsWAJUcvpNaNQgGREyEmdUdd2r1SFPHfSN9RWy9cUpmwVGCWP to be included --confirmations 30 --branch BLxcnVPonCjWyQSt5vgkUq9pTcrSbhXttZ8wMRS6Nmj8WBM8RhU
and/or an external block explorer.
Contract memorized as to_delegate.
 $ tezos-client set delegate for to_delegate to bootacc-0 --verbose-signing 

Node is bootstrapped, ready for injecting operations.
Estimated gas: 10000 units (will add 100 for safety)
Pre-signature information (verbose signing):
  * Branch: BLfaNjKbfcCdDKFNrxcmcu5CsDAS3ZMEikyoygUASGuoWb9fvek
  * Watermark: `Generic-operation` (0x03)
  * Operation bytes:
    7d8d230a91d1fb8391727f37a1bfeb332b7f249c78315ea4ae934e2103a826630701d315f
    72434520d43d415f0dff4632519501d2d9400ea0901904e0000cda3081bd81219ec494b29
    068dcfd19e427fed9a66abcdc9e9e99ca6478f60e90a01d315f72434520d43d415f0dff46
    32519501d2d9400890902f44e00ff008bd703c4a2d91b8f1d79455be9b99c2693e931fd
  * Blake 2B Hash (raw): 2iQ2VfVa8Q9vRr1qAHeFYo4fzT2d5z9kA46HRVJkbwx3
  * Blake 2B Hash (ledger-style, with operation watermark):
    FwGB7zDG4SNzNkdHNGhQymaTtMwnkkSXQhNmw5M6vYyy
  * JSON encoding:
    { "branch": "BLfaNjKbfcCdDKFNrxcmcu5CsDAS3ZMEikyoygUASGuoWb9fvek",
      "contents":
        [ { "kind": "reveal",
            "source": "KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8", "fee": "1258",
            "counter": "1", "gas_limit": "10000", "storage_limit": "0",
            "public_key":
              "edpkvCnetRr7moCiJkEY99Sbi4FTNgmP9yVF8JPXAYwWNkwgAaVkxV" },
          { "kind": "delegation",
            "source": "KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8", "fee": "1161",
            "counter": "2", "gas_limit": "10100", "storage_limit": "0",
            "delegate": "tz1YPSCGWXwBdTncK2aCctSZAXWvGsGwVJqU" } ] }

Operation successfully injected in the node.
Operation hash is 'opYPiKi4q3H2FFX74Yc1ehzfETF4amMYkriXth3CTcMfXXMNwmp'
Waiting for the operation to be included...
Operation found in block: BLYfaez4in6VgwQ8zvHnCFbNxhAS5Ear7xn53XUUAt2D7Nyjbbe (pass: 3, offset: 0)
This sequence of operations was run:
  Manager signed operations:
    From: KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8
    Fee to the baker: ꜩ0.001258
    Expected counter: 1
    Gas limit: 10000
    Storage limit: 0 bytes
    Balance updates:
      KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8 ........... -ꜩ0.001258
      fees(tz1hUXU4DPHPyrEEekqhmEEJvdCpB2gP4qtp,0) ... +ꜩ0.001258
    Revelation of manager public key:
      Contract: KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8
      Key: edpkvCnetRr7moCiJkEY99Sbi4FTNgmP9yVF8JPXAYwWNkwgAaVkxV
      This revelation was successfully applied
      Consumed gas: 10000
  Manager signed operations:
    From: KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8
    Fee to the baker: ꜩ0.001161
    Expected counter: 2
    Gas limit: 10100
    Storage limit: 0 bytes
    Balance updates:
      KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8 ........... -ꜩ0.001161
      fees(tz1hUXU4DPHPyrEEekqhmEEJvdCpB2gP4qtp,0) ... +ꜩ0.001161
    Delegation:
      Contract: KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8
      To: tz1YPSCGWXwBdTncK2aCctSZAXWvGsGwVJqU
      This delegation was successfully applied
      Consumed gas: 10000

The operation has only been included 0 blocks ago.
We recommend to wait more.
Use command
  tezos-client wait for opYPiKi4q3H2FFX74Yc1ehzfETF4amMYkriXth3CTcMfXXMNwmp to be included --confirmations 30 --branch BLfaNjKbfcCdDKFNrxcmcu5CsDAS3ZMEikyoygUASGuoWb9fvek
and/or an external block explorer.
 $ tezos-client withdraw delegate from to_delegate --verbose-signing 

Node is bootstrapped, ready for injecting operations.
Estimated gas: 10000 units (will add 100 for safety)
Pre-signature information (verbose signing):
  * Branch: BLYfaez4in6VgwQ8zvHnCFbNxhAS5Ear7xn53XUUAt2D7Nyjbbe
  * Watermark: `Generic-operation` (0x03)
  * Operation bytes:
    6ddc5a40fbf955f4339a65aa6861c2273b618fa5ba5791b510c33295e7ab75300a01d315f
    72434520d43d415f0dff4632519501d2d9400d40903f44e0000
  * Blake 2B Hash (raw): AzjxdMYrkXfUSaSNDYGSt6VD6XuMSrV1F5e9Zp8JBGpt
  * Blake 2B Hash (ledger-style, with operation watermark):
    D3wXDH8jE2tgYM72RfAiLUki7J5Zs7FziejUEKA33s69
  * JSON encoding:
    { "branch": "BLYfaez4in6VgwQ8zvHnCFbNxhAS5Ear7xn53XUUAt2D7Nyjbbe",
      "contents":
        [ { "kind": "delegation",
            "source": "KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8", "fee": "1236",
            "counter": "3", "gas_limit": "10100", "storage_limit": "0" } ] }

Operation successfully injected in the node.
Operation hash is 'oowsJaz5ymbci9kdHTATXB7M6XTYfAs6HWycJECkp4ZKSfJHZJY'
Waiting for the operation to be included...
Operation found in block: BKvYwJJdRa6X6GMMHtJ2NbZSPHV4KbGZprKqvwZT68FSxwAut9o (pass: 3, offset: 0)
This sequence of operations was run:
  Manager signed operations:
    From: KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8
    Fee to the baker: ꜩ0.001236
    Expected counter: 3
    Gas limit: 10100
    Storage limit: 0 bytes
    Balance updates:
      KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8 ........... -ꜩ0.001236
      fees(tz1hUXU4DPHPyrEEekqhmEEJvdCpB2gP4qtp,0) ... +ꜩ0.001236
    Delegation:
      Contract: KT1TptTRYx2BEYetm61ABjkBdfHXQ2SQrXo8
      To: nobody
      This delegation was successfully applied
      Consumed gas: 10000

The operation has only been included 0 blocks ago.
We recommend to wait more.
Use command
  tezos-client wait for oowsJaz5ymbci9kdHTATXB7M6XTYfAs6HWycJECkp4ZKSfJHZJY to be included --confirmations 30 --branch BLYfaez4in6VgwQ8zvHnCFbNxhAS5Ear7xn53XUUAt2D7Nyjbbe
and/or an external block explorer.
 $ tezos-client originate contract c0 for sledger transferring 1000 from sledger running tz/vsg/src/bin_client/test/contracts/attic/id.tz --init '"hello"' --verbose-signing --burn-cap 0.4 

Node is bootstrapped, ready for injecting operations.
Estimated gas: 11262 units (will add 100 for safety)
Estimated storage: 303 bytes added (will add 20 for safety)
Pre-signature information (verbose signing):
  * Branch: BKvYwJJdRa6X6GMMHtJ2NbZSPHV4KbGZprKqvwZT68FSxwAut9o
  * Watermark: `Generic-operation` (0x03)
  * Operation bytes:
    1bdbb5b55a6e566bfb5f721230a113412f510c74f4448fc86505c5abe29ec625090000d2e
    495a7ab40156d0a7c35b73d2530a3470fc8709f0b04e258c30200d2e495a7ab40156d0a7c
    35b73d2530a3470fc8708094ebdc03000000ff0000001c020000001705000368050103680
    50202000000080316053d036d03420000000a010000000568656c6c6f
  * Blake 2B Hash (raw): 8h52p7wqCFiSJap5C5D8Q61LXP45E2MPuCwdWaMFBCnu
  * Blake 2B Hash (ledger-style, with operation watermark):
    8bd9eq8uUt2WjCGKeGPN8LFQg4X54jy3wn7PoQxSdX9Q
  * JSON encoding:
    { "branch": "BKvYwJJdRa6X6GMMHtJ2NbZSPHV4KbGZprKqvwZT68FSxwAut9o",
      "contents":
        [ { "kind": "origination",
            "source": "tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y", "fee": "1439",
            "counter": "4", "gas_limit": "11362", "storage_limit": "323",
            "managerPubkey": "tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y",
            "balance": "1000000000", "spendable": false,
            "delegatable": false,
            "script":
              { "code":
                  [ { "prim": "parameter", "args": [ { "prim": "string" } ] },
                    { "prim": "storage", "args": [ { "prim": "string" } ] },
                    { "prim": "code",
                      "args":
                        [ [ { "prim": "CAR" },
                            { "prim": "NIL",
                              "args": [ { "prim": "operation" } ] },
                            { "prim": "PAIR" } ] ] } ],
                "storage": { "string": "hello" } } } ] }

Operation successfully injected in the node.
Operation hash is 'oooVPV8UpxejjTC8ubZRcWfLz8gq8hBDsMmXNeokxJt86WkAsKQ'
Waiting for the operation to be included...
Operation found in block: BMXzD1fUS8StA9aDvEk9HteXhQCYw1r5z5rX4h9yRX6zSKFzr5Q (pass: 3, offset: 0)
This sequence of operations was run:
  Manager signed operations:
    From: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
    Fee to the baker: ꜩ0.001439
    Expected counter: 4
    Gas limit: 11362
    Storage limit: 323 bytes
    Balance updates:
      tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ........... -ꜩ0.001439
      fees(tz1hUXU4DPHPyrEEekqhmEEJvdCpB2gP4qtp,1) ... +ꜩ0.001439
    Origination:
      From: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
      For: tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y
      Credit: ꜩ1000
      Script:
        { parameter string ;
          storage string ;
          code { CAR ; NIL operation ; PAIR } }
        Initial storage: "hello"
        No delegate for this contract
        This origination was successfully applied
        Originated contracts:
          KT19cx8uShwf1cso4JmL5EARvJ6M5uz7Goty
        Storage size: 46 bytes
        Paid storage size diff: 46 bytes
        Consumed gas: 11262
        Balance updates:
          tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ... -ꜩ0.046
          tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ... -ꜩ0.257
          tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y ... -ꜩ1000
          KT19cx8uShwf1cso4JmL5EARvJ6M5uz7Goty ... +ꜩ1000

New contract KT19cx8uShwf1cso4JmL5EARvJ6M5uz7Goty originated.
The operation has only been included 0 blocks ago.
We recommend to wait more.
Use command
  tezos-client wait for oooVPV8UpxejjTC8ubZRcWfLz8gq8hBDsMmXNeokxJt86WkAsKQ to be included --confirmations 30 --branch BKvYwJJdRa6X6GMMHtJ2NbZSPHV4KbGZprKqvwZT68FSxwAut9o
and/or an external block explorer.
Contract memorized as c0.
 $ tezos-client submit proposals for sledger \
             Prqg8m9F3MriiJyKuCmQzJEsnTCcYbuiP8TVbAZsFCwLcg8Xavw \
             PsqMEmUVGEhcFK1B6wG57hoTFn1ckePAH2Y2FQqFDnjmnowLDTe \
             Ps6LVbHPaeVfJe7DELfYncv9mZTRUQmy12wcqu2GWcgbdZBxtZC \
             PsPV5ZRZsTdT6WSS8ehwHARoFZyThpGipfxU8hTKsNbo3rBGM56 \
             PtWRULfDkFagFRjKEh5kKCUJ5nSFQdmSmE82ooiiTX1oDKuZ7fj \
             PsaKxtyuCS7xfNE9cRn7um74n6vG3PCJgkwBZyTNBRXe47PAevy \
             PsfGxJqE8eUpupbKHCPrKM5UxAyeaw2vmxkjg3xxCM4TJEBXeZR \
             ProDLfkDbPg7gf4zGt2znra9FWFe9uuHmpvYkkCZzM2aWGD3udZ \
             PtcXCrhgUC64nn6H9Rzw1yM3xRk14na27piVhx2y6njtGzaYVJm \
             Pt9voHR8FzZUgopzjiKrfEgUHwtUXwa4BTjt8CMKn61BxDVdtV1 \
             PtJc8UYi3ha9yG4c1v2GFfwcW7DcA2UpJhT8faSACJ1PzKD4LCv \
             Prxb97zADA79weKsvjmsqd6ztYjtNdXYHiJkYPbxJj6r5NM4HBd \
             PtEryq5jmynGZfAfQb7Evw4ZBH4Ucn1Jh3hN24J5aP3Gi1KRSWZ \
             PsBFwj3391bt7u24r44vWz9cbfXZqhQhKuEbCDM4K8BYk1UShVc \
             Ps7H4VK9gRMU9kdw8RteNDZWT51e4U74Aivjs6LcyQ34tgmQ5JF \
             PsEUJ6X78R6jEV19hRg5wdypf5chfnMGQqQVG3JXNd5a9ijV8Qu \
             PtcTP3DmWzZePrfDyuLaKGKmjx2zPJRiyETv3bDSBN4NV1Ekbdc \
             PtUnrfPg86aDpqY2g9eTSG7zXG1wPDzDc8MV68f6yDKsb5Va4QN \
             PtNBgBbHL31AsyLmuezRxNJTRobcMxncz5WCBL4SfqtPoecyzs4 \
             Prw1Kp9r68Pjoiyi9PEjwY6mwUP1vZiNzXYbqBdp5XTX8b6ou6p \
             PtNnPJZFr1q44xQ1dTVvSviqoH1Dh182r9HFqjNoxS6ThfETsc1 \
             PtMomAE1hncfVA5nhmtMAkQQ6XRwhts3LUpve5n86b2RLyJaWzN --force --verbose-signing

There are issues with the submission:
* Public-key-hash `tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y` from account
  `sledger` does not appear to have voting rights.
* Protocol PtMomAE1hncfVA5nhmtMAkQQ6XRwhts3LUpve5n86b2RLyJaWzN is not a known
  proposal.
* Protocol PtNnPJZFr1q44xQ1dTVvSviqoH1Dh182r9HFqjNoxS6ThfETsc1 is not a known
  proposal.
* Protocol Prw1Kp9r68Pjoiyi9PEjwY6mwUP1vZiNzXYbqBdp5XTX8b6ou6p is not a known
  proposal.
* Protocol PtNBgBbHL31AsyLmuezRxNJTRobcMxncz5WCBL4SfqtPoecyzs4 is not a known
  proposal.
* Protocol PtUnrfPg86aDpqY2g9eTSG7zXG1wPDzDc8MV68f6yDKsb5Va4QN is not a known
  proposal.
* Protocol PtcTP3DmWzZePrfDyuLaKGKmjx2zPJRiyETv3bDSBN4NV1Ekbdc is not a known
  proposal.
* Protocol PsEUJ6X78R6jEV19hRg5wdypf5chfnMGQqQVG3JXNd5a9ijV8Qu is not a known
  proposal.
* Protocol Ps7H4VK9gRMU9kdw8RteNDZWT51e4U74Aivjs6LcyQ34tgmQ5JF is not a known
  proposal.
* Protocol PsBFwj3391bt7u24r44vWz9cbfXZqhQhKuEbCDM4K8BYk1UShVc is not a known
  proposal.
* Protocol PtEryq5jmynGZfAfQb7Evw4ZBH4Ucn1Jh3hN24J5aP3Gi1KRSWZ is not a known
  proposal.
* Protocol Prxb97zADA79weKsvjmsqd6ztYjtNdXYHiJkYPbxJj6r5NM4HBd is not a known
  proposal.
* Protocol PtJc8UYi3ha9yG4c1v2GFfwcW7DcA2UpJhT8faSACJ1PzKD4LCv is not a known
  proposal.
* Protocol Pt9voHR8FzZUgopzjiKrfEgUHwtUXwa4BTjt8CMKn61BxDVdtV1 is not a known
  proposal.
* Protocol PtcXCrhgUC64nn6H9Rzw1yM3xRk14na27piVhx2y6njtGzaYVJm is not a known
  proposal.
* Protocol ProDLfkDbPg7gf4zGt2znra9FWFe9uuHmpvYkkCZzM2aWGD3udZ is not a known
  proposal.
* Protocol PsfGxJqE8eUpupbKHCPrKM5UxAyeaw2vmxkjg3xxCM4TJEBXeZR is not a known
  proposal.
* Protocol PsaKxtyuCS7xfNE9cRn7um74n6vG3PCJgkwBZyTNBRXe47PAevy is not a known
  proposal.
* Protocol PtWRULfDkFagFRjKEh5kKCUJ5nSFQdmSmE82ooiiTX1oDKuZ7fj is not a known
  proposal.
* Protocol PsPV5ZRZsTdT6WSS8ehwHARoFZyThpGipfxU8hTKsNbo3rBGM56 is not a known
  proposal.
* Protocol Ps6LVbHPaeVfJe7DELfYncv9mZTRUQmy12wcqu2GWcgbdZBxtZC is not a known
  proposal.
* Protocol PsqMEmUVGEhcFK1B6wG57hoTFn1ckePAH2Y2FQqFDnjmnowLDTe is not a known
  proposal.
* Protocol Prqg8m9F3MriiJyKuCmQzJEsnTCcYbuiP8TVbAZsFCwLcg8Xavw is not a known
  proposal.
* Too many proposals: 22 > 20.

Some proposals are not valid, but `--force` was used.
Node is bootstrapped, ready for injecting operations.
Pre-signature information (verbose signing):
  * Branch: BLzta84P2HH33niR5BLqJCnGf2YrxFchA38sgUXHtyXYGQNKTYJ
  * Watermark: `Generic-operation` (0x03)
  * Operation bytes:
    a967cf35a8bba485ddcf711e1254f613bad774ba4e846d24d1867b9ed4e5d8380500d2e49
    5a7ab40156d0a7c35b73d2530a3470fc87000000004000002c00fd923ca5e7218c4ba3c38
    01c26a617ecdbfdaebb9c76ce2eca166e7855efbb892cdf578c47085a5992256f0dcf97d0
    b19f1f1c9de4d5fe30c3ace6191b6e5db31237cdb79ae1dfa7ffb87cde7ea8a80352d300e
    e5ac758a6cddd19d671925ec581348337b0f3e148620173daaa5f94d00d881705dcbf0aa8
    3efdaba61d2ede1eb8649214997574e20c464388a172420d25403682bbbb80c496831c8cc
    1f8f0d70b201352f24bf1c9770b99f8f71201821411cf414377c9b8c2dbcee61db87d67be
    e3bbfb37286d6a41378082e08c12af0084f0b1b92f77983f4c3394e91b5e90a420b072ce7
    2f6a6833576ffa74ea21dcca4ce7c025dbee7b1dae478cba6f29f95f6b30745ba7cbab07c
    cc59fdc83be45649c4c964909b7675ff0b57b15f585bcfd554527e31708adfbfdcaa46092
    238b452331f9c438a3f8b2d891648252a2d0b1be7d92bf8830457c084ff4da1c2841879b4
    83c3cface85dcd40f69e1ab8e1f8c0bfd983fbc0c61f48b51ee0d8a95148dd96756fcd00e
    c76260f6efa8030fc83176b698c10e17d80324d6ea14f2bc47fd2b0d247aa1c10815bb31b
    f1f44953c504a2e2be2c29b5b5f35f6a52f4f7c8733a7f26387484d8ef2d3ff92c53fea33
    465cfcceb111b0c4fc1bd728fbf5d478dd8acc8cffbbb6ff1aa123e3cfcead439be98bf90
    21ac2c94c2e5a0aacd02cf5fc252f9a69b1d32fc32c8293474eadf93916fa5d2fb992814e
    85a225c21fc518c1fc375bcc6415bf127158eeb4fc32e7d20c296e273f8446ea555069d31
    0daebc3a84bf070bad7f184ed8199a6ce23d8d1c9f15f619c5784cc310914e0867500299f
    ac0197e2ee16ce029de21555d61bf3dd7ca6cdfe766f689ed771d8738c3aeb4a0367e9feb
    7b6b65c142a4e31fcda2da4e3366bca0044c0340f33a10067c0be5235a081f4a87b4f3958
    bb2aea77d7f629d9cf2c7ce0404ac62c874a9b1eafe7e31f3747cbcc8b6f56481dc74aed
  * Blake 2B Hash (raw): ApHUdZzq9e1LoGzCn3yCDZaTB5R7ciKqfXhWLk12DZ9U
  * Blake 2B Hash (ledger-style, with operation watermark):
    62CTUKVgVqgJgHTFTatZjN3UZeD448d57EKxVAFj3Mug
  * JSON encoding:
    { "branch": "BLzta84P2HH33niR5BLqJCnGf2YrxFchA38sgUXHtyXYGQNKTYJ",
      "contents":
        [ { "kind": "proposals",
            "source": "tz1es8RjqHUD483BN9APWtvCzgjTFVGeMh3y", "period": 4,
            "proposals":
              [ "Prqg8m9F3MriiJyKuCmQzJEsnTCcYbuiP8TVbAZsFCwLcg8Xavw",
                "PsqMEmUVGEhcFK1B6wG57hoTFn1ckePAH2Y2FQqFDnjmnowLDTe",
                "Ps6LVbHPaeVfJe7DELfYncv9mZTRUQmy12wcqu2GWcgbdZBxtZC",
                "PsPV5ZRZsTdT6WSS8ehwHARoFZyThpGipfxU8hTKsNbo3rBGM56",
                "PtWRULfDkFagFRjKEh5kKCUJ5nSFQdmSmE82ooiiTX1oDKuZ7fj",
                "PsaKxtyuCS7xfNE9cRn7um74n6vG3PCJgkwBZyTNBRXe47PAevy",
                "PsfGxJqE8eUpupbKHCPrKM5UxAyeaw2vmxkjg3xxCM4TJEBXeZR",
                "ProDLfkDbPg7gf4zGt2znra9FWFe9uuHmpvYkkCZzM2aWGD3udZ",
                "PtcXCrhgUC64nn6H9Rzw1yM3xRk14na27piVhx2y6njtGzaYVJm",
                "Pt9voHR8FzZUgopzjiKrfEgUHwtUXwa4BTjt8CMKn61BxDVdtV1",
                "PtJc8UYi3ha9yG4c1v2GFfwcW7DcA2UpJhT8faSACJ1PzKD4LCv",
                "Prxb97zADA79weKsvjmsqd6ztYjtNdXYHiJkYPbxJj6r5NM4HBd",
                "PtEryq5jmynGZfAfQb7Evw4ZBH4Ucn1Jh3hN24J5aP3Gi1KRSWZ",
                "PsBFwj3391bt7u24r44vWz9cbfXZqhQhKuEbCDM4K8BYk1UShVc",
                "Ps7H4VK9gRMU9kdw8RteNDZWT51e4U74Aivjs6LcyQ34tgmQ5JF",
                "PsEUJ6X78R6jEV19hRg5wdypf5chfnMGQqQVG3JXNd5a9ijV8Qu",
                "PtcTP3DmWzZePrfDyuLaKGKmjx2zPJRiyETv3bDSBN4NV1Ekbdc",
                "PtUnrfPg86aDpqY2g9eTSG7zXG1wPDzDc8MV68f6yDKsb5Va4QN",
                "PtNBgBbHL31AsyLmuezRxNJTRobcMxncz5WCBL4SfqtPoecyzs4",
                "Prw1Kp9r68Pjoiyi9PEjwY6mwUP1vZiNzXYbqBdp5XTX8b6ou6p",
                "PtNnPJZFr1q44xQ1dTVvSviqoH1Dh182r9HFqjNoxS6ThfETsc1",
                "PtMomAE1hncfVA5nhmtMAkQQ6XRwhts3LUpve5n86b2RLyJaWzN" ] } ] }

Error:
Error:
  Unauthorized proposal

Merge request reports