Get Contract ID

I am also working on our initial implementation and also can’t figure out how to get the contract id after creating the contract. Was wondering if you could point me in the right direction.

I am currently using the Ledger API v2, submit-and-wait and am able to create the contract. I don’t know how to use the update id and completion offset to get the contract id.

I tried streaming events but it seems there are no js/ts packages for the 3.3-snapshot DSK. I also looked for an example but could only find Java examples.

I also tried using submit, but I was getting 500 errors and no details.

I don’t think it makes sense to post source/errors as I don’t know if my approach is way off.
Cheers!

It looks like /v2/commands/submit-and-wait-for-transaction includes the contract id(s) of the created contract(s).

Payload

{
  "commands": {
    "commandId": "command01",
    "userId": "Alice",
    "actAs": [ "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033" ],
    "commands": [
      {
        "CreateCommand": {
          "templateId": "#getcontractid:Main:Asset",
          "createArguments": {
            "issuer": "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
            "owner": "Bob::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
            "name": "Asset 0001"
          }
        }
      }
    ]
  }
}

Response

{
  "transaction": {
    "updateId": "1220ebae900711ff06c1268db49d3824fe358af7f6b2869a41fe6f748f9c77aa074c",
    "commandId": "command01",
    "workflowId": "",
    "effectiveAt": "2025-06-06T16:27:15.209058Z",
    "events": [
      {
        "CreatedEvent": {
          "offset": 44,
          "nodeId": 0,
          "contractId": "00909a0ed452ff5e50d1145bf23cd26d128a3f5075f6705cfb085560c64e10a1b0ca111220b0604df7ff4c6aaed636ca90bb384f0d1425cfd8985019d34f79801d41afb27d",
          "templateId": "26dfa3676763576f3ec81b111337e5582d036eaae2bffba25bde72e0a061f974:Main:Asset",
          "contractKey": null,
          "createArgument": {
            "issuer": "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
            "owner": "Bob::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
            "name": "Asset 0001"
          },
          "createdEventBlob": "",
          "interfaceViews": [],
          "witnessParties": [
            "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033"
          ],
          "signatories": [
            "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033"
          ],
          "observers": [
            "Bob::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033"
          ],
          "createdAt": "2025-06-06T16:27:15.209058Z",
          "packageName": "getcontractid"
        }
      }
    ],
    "offset": 44,
    "synchronizerId": "mysynchronizer::1220e7570b68dc555fb7d87ec9c679b2e0b6e1a6cea758d90cf2c3da43c4004d8849",
    "traceContext": {
      "traceparent": "00-6ea825d5051d6e6bc356b50ccbc3b938-068ae460e8f998e0-01",
      "tracestate": null
    },
    "recordTime": "2025-06-06T16:27:15.325118Z"
  }
}
1 Like

Do you have a link? I can’t find docs for submit-and-wait-for-transaction anywhere.

You can find it in the JSON Ledger API OpenAPI definition. But it may be easier and more illustrative to look at an example of creating a contract using JSON Ledger API.

1 Like

Thanks for this. I had not seen that documentation.

I tried their example and I’m not sure what I’m doing wrong.

I’m getting

Token verified successfully
Submitting body: {
  "commands": {
    "commandId": "command01",
    "userId": "Alice",
    "actAs": [
      "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033"
    ],
    "commands": [
      {
        "CreateCommand": {
          "templateId": "#getcontractid:Main:Asset",
          "createArguments": {
            "issuer": "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
            "owner": "Bob::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
            "name": "Asset 0001"
          }
        }
      }
    ]
  }
}
Failed to create contract: Error: Request failed with HTTP status code 400
Response body: Invalid value for: body (Missing required field at 'transactionFormat')
    at /Users/paulwilkinson/projects/deploi/cn-quickstart/quickstart/deploi-server/src/routes/contracts.routes.ts:118:15
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
Full error details: {
  message: 'Request failed with HTTP status code 400\n' +
    "Response body: Invalid value for: body (Missing required field at 'transactionFormat')",
  code: undefined,
  details: undefined,
  stack: 'Error: Request failed with HTTP status code 400\n' +
    "Response body: Invalid value for: body (Missing required field at 'transactionFormat')\n" +
    '    at /Users/paulwilkinson/projects/deploi/cn-quickstart/quickstart/deploi-server/src/routes/contracts.routes.ts:118:15\n' +
    '    at processTicksAndRejections (node:internal/process/task_queues:95:5)'
}

The code looks like this:

    const example = {
      commands: {
        commandId: "command01",
        userId: "Alice",
        actAs: ["Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033"],
        commands: [
          {
            CreateCommand: {
              templateId: "#getcontractid:Main:Asset",
              createArguments: {
                issuer: "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
                owner: "Bob::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
                name: "Asset 0001",
              },
            },
          },
        ],
      },
    };

    const userToken = await TokenGenerator.generateUserValidatorToken();
    console.log("Submitting body:", JSON.stringify(example, null, 2));

    try {
      const response = await fetch(`http://localhost:27575/v2/commands/submit-and-wait-for-transaction`, {
        method: "POST",
        headers: {
          Authorization: `Bearer ${userToken}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify(example),
      });

      if (!response.ok) {
        const responseBody = await response.text();
        throw new Error(`Request failed with HTTP status code ${response.status}\nResponse body: ${responseBody}`);
      }

If I add a transactionFormat like this:

    const example = {
      actAs: ["Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033"],
      userId: "app1", // Or "Alice::1220..." if that's your Keycloak user ID
      commandId: "somecommandid2",
      commands: [
        {
          CreateCommand: {
            // <--- Direct command type as key
            createArguments: {
              // <--- Arguments under 'createArguments'
              observers: [], // From their example
              issuer: "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033",
              amount: "999.99",
              currency: "USD",
              owner: "Bob::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033", // Adjusted to your Bob ID
            },
            templateId: "#Main:Asset", // <--- Shorthand templateId
          },
        },
      ],
      transactionFormat: {
        eventFormat: {
          filtersByParty: {
            "Alice::1220f6829fc4e86f8f0632bfc4efb1887939828f4f48e9fd425239cefa4419ef5033": {},
          },
          verbose: true,
        },
        transactionShape: "TRANSACTION_SHAPE_ACS_DELTA",
      },
    };

then the error message seems to come from a bit deeper:

Full error details: {
  message: 'Request failed with HTTP status code 400\n' +
    "Response body: Invalid value for: body (Missing required field at 'commands.commands', Missing required field at 'commands.commandId', Missing required field at 'commands.actAs', JSON decoding to CNil should never happen at 'transactionShape')",
  code: undefined,
  details: undefined,
  stack: 'Error: Request failed with HTTP status code 400\n' +
    "Response body: Invalid value for: body (Missing required field at 'commands.commands', Missing required field at 'commands.commandId', Missing required field at 'commands.actAs', JSON decoding to CNil should never happen at 'transactionShape')\n" +
    '    at /Users/paulwilkinson/projects/deploi/cn-quickstart/quickstart/deploi-server/src/routes/contracts.routes.ts:129:15\n' +
    '    at processTicksAndRejections (node:internal/process/task_queues:95:5)'
}

@WallaceKelly @a_putkov Any chance you could post the full body of a submit-and-wait-for-transaction that includes the transactionFormat? Or @WallaceKelly if that is the full body then lmk if you can think of anything else I might be doing wrong, or anything I might have installed incorrectly. I’m on the 3.3-snapshot.

if that is the full body then lmk if you can think of anything else I might be doing wrong, or anything I might have installed incorrectly. I’m on the 3.3-snapshot.

I posted the full bodies for my request and the response above. The docs say that the transactionFormat field is optional. And I did not include it. So the error message, “Missing required field at ‘transactionFormat’” is currently a mystery for me.

Let’s compare snapshots. I’m using sdk-version: 3.3.0-snapshot.20250603.0. You?

I’m on 3.3.0-snapshot.20250410.0.

The docs that Curis and I were looking at said that transactionFormat is required. I will see if I can dig it up again.

➜ quickstart git:(feature/investment-ui) daml version
SDK versions:
0.13.41
2.8.0
2.10.0
3.3.0-snapshot.20250410.0 (default SDK version for new projects)
➜ quickstart git:(feature/investment-ui) ✗

I’m on 3.3.0-snapshot.20250410.0.

That explains it.

  • Run daml install 3.3.0-snapshot.20250603.0
  • Edit daml.yaml to sdk-version: 3.3.0-snapshot.20250603.0.
  • Rebuild the Daml and restart the ledger.

The latest version correctly marks transactionFormat as optional.

Yep, from the openapi.yaml it looks like it’s supposed to be optional. But I still get that error if I leave it out.

    JsSubmitAndWaitForTransactionRequest:
      title: JsSubmitAndWaitForTransactionRequest
      description: These commands are executed as a single atomic transaction.
      type: object
      required:
        - commands
      properties:
        commands:
          $ref: "#/components/schemas/JsCommands"
          description: |-
            The commands to be submitted.
            Required
        transactionFormat:
          $ref: "#/components/schemas/TransactionFormat"
          description: |-
            If no ``transaction_format`` is provided, a default will be used where ``transaction_shape`` is set to
            TRANSACTION_SHAPE_ACS_DELTA, ``event_format`` is defined with ``filters_by_party`` containing wildcard-template
            filter for all original ``act_as`` and ``read_as`` parties and the ``verbose`` flag is set.
            Optional

Just to be clear…

  • In 3.3.0-snapshot.20250410.0, the transactionFormat was required.
     JsSubmitAndWaitForTransactionRequest:
       title: JsSubmitAndWaitForTransactionRequest
       description: These commands are executed as a single atomic transaction.
       type: object
       required:
       - commands
       - transactionFormat
             :
    
  • In 3.3.0-snapshot.20250603.0, the transactionFormat is optional.
     JsSubmitAndWaitForTransactionRequest:
       title: JsSubmitAndWaitForTransactionRequest
       description: These commands are executed as a single atomic transaction.
       type: object
       required:
       - commands
             :
    

You can get the Open API spec from the currently running ledger:

curl -s http://localhost:7575/docs/openapi > openapi.20250603.yaml

The following payload, including the optional transactionFormat, is successful on 3.3.0-snapshot.20250603.0.

{
  "commands": {
    "commandId": "command01",
    "userId": "Alice",
    "actAs": [ "Alice::1220363cb139ae9913f5ca84d56e6f22eb75773870f1e65c59812aaa0e6d996c014c" ],
    "commands": [
      {
        "CreateCommand": {
          "templateId": "#getcontractid:Main:Asset",
          "createArguments": {
            "issuer": "Alice::1220363cb139ae9913f5ca84d56e6f22eb75773870f1e65c59812aaa0e6d996c014c",
            "owner": "Bob::1220363cb139ae9913f5ca84d56e6f22eb75773870f1e65c59812aaa0e6d996c014c",
            "name": "Asset 0001"
          }
        }
      }
    ]
  },
  "transactionFormat": {
    "eventFormat": {
      "filtersByParty": {
        "Alice::1220363cb139ae9913f5ca84d56e6f22eb75773870f1e65c59812aaa0e6d996c014c": {}
      },
      "verbose": true
    },
    "transactionShape": "TRANSACTION_SHAPE_ACS_DELTA"
  }
}

Thanks again, I will try upgrading to the same SDK version.

What token are you sending with the request?

To discuss this with you, I’ve been using daml start to start a sandbox ledger. The sandbox ledger does not require an authentication token. Consequently, I have not been passing one with my requests.

If your participant has auth enabled, you will need to get a token from the auth service which the participant is connected to.


By the way, I noticed that you quoted 1220363cb139ae9913f5ca84d56e6f22eb75773870f1e65c59812aaa0e6d996c014c in your reply. That was the party namespace fingerprint assigned by my local sandbox when I created the parties. It is different every time I restart the sandbox.

The full party id consists of an identifier (e.g., Alice), two colons (::), and the party namespace fingerprint. The fingerprint associates it with the participant node on which the party was allocated.

You can get the list of parties on your node using something like:

curl -s http://localhost:27575/v2/parties

I will upgrade

We are on the same version of the SDK now. Thanks for the upgrade instructions.

➜ quickstart git:(feature/investment-ui) ✗ daml version
SDK versions:
0.13.41
2.8.0
2.10.0
3.3.0-snapshot.20250410.0
3.3.0-snapshot.20250603.0 (default SDK version for new projects)
➜ quickstart git:(feature/investment-ui) ✗

The easiest way to reproduce the issue is to modify create-app-install-request.sh to use submit-and-wait-for-transaction instead of submit-and-wait. This way I know the parties are correct and that it most likely an issue with the format of the request body. It gives me the same error.

#!/bin/bash
# Copyright (c) 2025, Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: 0BSD

set -eo pipefail
APP_PROVIDER_PARTY=$1
APP_USER_PARTY=$2
DSO_PARTY=$3
APP_USER_WALLET_ADMIN_TOKEN=$4

source /app/utils.sh

create_app_install_request() {
  local token=$1
  local dsoParty=$2
  local appUserParty=$3
  local appProviderParty=$4
  local participantUserId=$5
  local participant=$6

  # Add a timestamp for a unique command ID to allow resubmission
  local time="$(date +%s%N)"

  echo "hi from create_app_install_request" >&2
  echo "create_app_install_request $dsoParty $appUserParty $appProviderParty $participant" >&2

  curl_check "http://$participant/v2/commands/submit-and-wait-for-transaction" "$token" "application/json" \
    --data-raw '{
        "commands": {
          "commands": [
            {
              "CreateCommand": {
                "templateId": "#quickstart-licensing:Licensing.AppInstall:AppInstallRequest",
                "createArguments": {
                  "dso": "'$dsoParty'",
                  "provider": "'$appProviderParty'",
                  "user": "'$appUserParty'",
                  "meta": {
                    "values": []
                  }
                }
              }
            }
          ],
          "workflowId": "create-app-install-request",
          "applicationId": "'$participantUserId'",
          "commandId": "create-app-install-request-'$time'",
          "deduplicationPeriod": {
            "Empty": {}
          },
          "actAs": [
            "'$appUserParty'"
          ],
          "readAs": [
            "'$appUserParty'"
          ],
          "submissionId": "create-app-install-request",
          "disclosedContracts": [],
          "domainId": "",
          "packageIdSelectionPreference": []
      },
      "transactionFormat": {
        "eventFormat": {
          "filtersByParty": {
            "'$appUserParty'": {}
          },
          "verbose": true
        },
        "transactionShape": "TRANSACTION_SHAPE_ACS_DELTA"
      }
    }'
}

create_app_install_request "$APP_USER_WALLET_ADMIN_TOKEN" $DSO_PARTY $APP_USER_PARTY $APP_PROVIDER_PARTY $AUTH_APP_USER_WALLET_ADMIN_USER_ID "canton:2${PARTICIPANT_JSON_API_PORT}"

I had to surround commands in another commands to match the swagger file:

The result is the same error that I get in my code. It complains if I don’t add the transactionFormat tag.

Invalid value for: body (JSON decoding to CNil should never happen at 'transactionShape')

I get the same error with your request body BTW.

Response body: Invalid value for: body (JSON decoding to CNil should never happen at ‘transactionShape’)

Your input looks correct.

I checked with version:
3.3.0-snapshot.20250603.0 and example model:
daml sandbox --json-api-port 7575 --dar model/.daml/dist/model-tests-1.0.0.dar

when I run the command as above (with changed fields due to different model) it worked ok:

EBUG: http://localhost:7575/v2/commands/submit-and-wait-for-transaction
DEBUG: --data-raw {
         "commands": {
        "commands" : [
           {"CreateCommand": {
                   "createArguments": {
                     "observers": [],
                     "issuer": "Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980",
                     "amount": "999.99",
                     "currency": "USD",
                     "owner": "Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980"
                   },
                   "templateId": "#model-tests:Iou:Iou"
                 }
            }
        ],
        "userId": "ledger-api-user",
        "commandId": "example-app-create-16425",
        "actAs": ["Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980"],
        "readAs": ["Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980"]
        },
        "transactionFormat": {
                "eventFormat": {
                  "filtersByParty": {
                    "Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980": {}
                  },
                  "verbose": true
                },
                "transactionShape": "TRANSACTION_SHAPE_ACS_DELTA"
              }
    }
DEBUG: Request HTTP status code 200
DEBUG: Response body: {"transaction":{"updateId":"1220d34f2815aa9c9c5f18c12efa885dcc9065c763d532df6c39bdf377a5cfb3cea6","commandId":"example-app-create-16425","workflowId":"","effectiveAt":"2025-06-10T09:50:57.290950Z","events":[{"CreatedEvent":{"offset":19,"nodeId":0,"contractId":"001e1f058f5b57a2507156c40c6307a94176f606129212c85c6950253ac27632ccca111220b94eb10d7944e10ceebdc522d5a621d28277ec07ddc92c77fa4403a9af338d46","templateId":"47fc5f9bf30bdc147465d7b5fe170a0bc26b3677b45b005573130d951fdaebed:Iou:Iou","contractKey":null,"createArgument":{"issuer":"Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980","owner":"Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980","currency":"USD","amount":"999.9900000000","observers":[]},"createdEventBlob":"","interfaceViews":[],"witnessParties":["Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980"],"signatories":["Alice::12202d382c731c453772927e96340cfc2b09953f931a8c3c028cb78cf7cc9d324980"],"observers":[],"createdAt":"2025-06-10T09:50:57.290950Z","packageName":"model-tests"}}],"offset":19,"synchronizerId":"mysynchronizer::1220f00e66a5e50c26346c053c9db7f549ea389a6282daadd659be7156f95cb37215","traceContext":{"traceparent":"00-e46411347741df38191c52ffe67baa40-374ddddcf2a77f14-01","tracestate":null},"recordTime":"2025-06-10T09:50:57.920759Z"}}

Hi Jarek,
I followed your example carefully and still get the error

"Response body: Invalid value for: body (JSON decoding to CNil should never happen at 'transactionShape')"

Can I get you to try this version of create-app-install-request.sh? It’s part of the Quickstart. Just paste it over yours and run make create-app-install-request. That should reproduce my issue.

#!/bin/bash
# Copyright (c) 2025, Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
# SPDX-License-Identifier: 0BSD

set -eo pipefail
APP_PROVIDER_PARTY=$1
APP_USER_PARTY=$2
DSO_PARTY=$3
APP_USER_WALLET_ADMIN_TOKEN=$4

source /app/utils.sh

create_app_install_request() {
  local token=$1
  local dsoParty=$2
  local appUserParty=$3
  local appProviderParty=$4
  local participantUserId=$5
  local participant=$6

  # Add a timestamp for a unique command ID to allow resubmission
  local time="$(date +%s%N)"

  echo "Hi from create_app_install_request" >&2
  echo "--------------------------------" >&2
  echo "dsoParty: $dsoParty" >&2
  echo "appUserParty: $appUserParty" >&2
  echo "appProviderParty: $appProviderParty" >&2
  echo "participant: $participant" >&2
  echo "participantUserId: $participantUserId" >&2
  echo "create_app_install_request $dsoParty $appUserParty $appProviderParty $participant" >&2

  curl_check "http://$participant/v2/commands/submit-and-wait-for-transaction" "$token" "application/json" \
    --data-raw '{
        "commands": {
          "commands": [
            {
              "CreateCommand": {
                "templateId": "#quickstart-licensing:Licensing.AppInstall:AppInstallRequest",
                "createArguments": {
                  "dso": "'$dsoParty'",
                  "provider": "'$appProviderParty'",
                  "user": "'$appUserParty'",
                  "meta": {
                    "values": []
                  }
                }
              }
            }
          ],
          "workflowId": "create-app-install-request",
          "applicationId": "'$participantUserId'",
          "commandId": "create-app-install-request-'$time'",
          "deduplicationPeriod": {
            "Empty": {}
          },
          "actAs": [
            "'$appUserParty'"
          ],
          "readAs": [
            "'$appUserParty'"
          ],
          "submissionId": "create-app-install-request",
          "disclosedContracts": [],
          "domainId": "",
          "packageIdSelectionPreference": []
      },
      "transactionFormat": {
        "eventFormat": {
          "filtersByParty": {
            "'$appUserParty'": {}
          },
          "verbose": true
        },
        "transactionShape": "TRANSACTION_SHAPE_ACS_DELTA"
      }
    }'
}

create_app_install_request "$APP_USER_WALLET_ADMIN_TOKEN" $DSO_PARTY $APP_USER_PARTY $APP_PROVIDER_PARTY $AUTH_APP_USER_WALLET_ADMIN_USER_ID "canton:2${PARTICIPANT_JSON_API_PORT}"

Hi,
I just tried with fresh cn-quickstart installation (from git),
replaced the file and got this as a result of make create-app-install-request:

{"transaction":{"updateId":"1220355b47ee13feb41d8194d0f1f0890dab8ca76662791fc383b7c0ff3e72229829","commandId":"create-app-install-request-1749575814","workflowId":"create-app-install-request","effectiveAt":"2025-06-10T17:16:54.948486Z","events":[{"CreatedEvent":{"offset":61,"nodeId":0,"contractId":"00200092b8250e432508ba37aae51c6f5f3eec5e975cd55840f39df6c16240d5caca111220bf5b752f73daa66ea4f98d3013406b740024bc7440f84477b79b7ca18ddc843f","templateId":"37d1b3b9cde478027535d62449a61ee816bd1eeabcf396ff0688de17caa2b261:Licensing.AppInstall:AppInstallRequest","contractKey":null,"createArgument":{"dso":"DSO::122090e2b3ff4cca85e4163ebec51785495d0221fdcd4f7c453ef7e3f2e4293a8945","provider":"app_provider_quickstart-jarek-1::122012b1a27ca0ea5034876c3d43f84ce1989beede9db8c1525a29636612a957d6cc","user":"app_user_quickstart-jarek-1::12209648d3f741142e83cd67b9f77eb800e470a2a49f20f3820bea35ff3f4caede9b","meta":{"values":[]}},"createdEventBlob":"","interfaceViews":[],"witnessParties":["app_user_quickstart-jarek-1::12209648d3f741142e83cd67b9f77eb800e470a2a49f20f3820bea35ff3f4caede9b"],"signatories":["app_user_quickstart-jarek-1::12209648d3f741142e83cd67b9f77eb800e470a2a49f20f3820bea35ff3f4caede9b"],"observers":["app_provider_quickstart-jarek-1::122012b1a27ca0ea5034876c3d43f84ce1989beede9db8c1525a29636612a957d6cc"],"createdAt":"2025-06-10T17:16:54.948486Z","packageName":"quickstart-licensing"}}],"offset":61,"synchronizerId":"global-domain::122090e2b3ff4cca85e4163ebec51785495d0221fdcd4f7c453ef7e3f2e4293a8945","traceContext":{"traceparent":"00-0e0421d692c43c01511a0a225ec6eb56-2e7e85ee712a32ca-01","tracestate":null},"recordTime":"2025-06-10T17:16:55.202557Z"}}
~/dev/cn-quickstart/quickstart>

maybe make stop && make clean-all
then git pull
and starting from make build can help?

We have made a change in transactionShape encoding few weeks ago. It looks like you have still traces of our old code somehow.

2 Likes