Determine whether this is a fake deposit

[
  {
    "update": {
      "Transaction": {
        "value": {
          "updateId": "12205af58737ef43256b66f2e3747dd788117f6d0318a8e7f78da687713d397bf779",
          "commandId": "",
          "workflowId": "",
          "effectiveAt": "2026-04-11T07: 23: 00.775770Z",
          "events": [
            {
              "ExercisedEvent": {
                "offset": 3206017,
                "nodeId": 1,
                "contractId": "008c3212d325f169b57c867c85aa7e0071157d7ffd224c13d8032457a250562fa1ca12122095f977bb4161387db10ea2ebfcc0f21510aaf4273d5fa3476227f3459db34280",
                "templateId": "c208d7ead1e4e9b610fc2054d0bf00716144ad444011bce0b02dcd6cd0cb8a23:Splice.AmuletRules:TransferPreapproval",
                "interfaceId": null,
                "choice": "TransferPreapproval_Send",
                "choiceArgument": {
                  "context": {
                    "amuletRules": "006183fd00806750daaf45e9a0fbab710dc0ad8f275c169ad3847d16b6ce976b0bca121220e9d15cdea12881d86c85ed7dd5bbdddd7fc001b2b255d08f9af8980ac799ecef",
                    "context": {
                      "openMiningRound": "002e7b52f733b54d92be12ff288d2cd941c0b7b67e58dcce38ae7d92ac7a1d7118ca12122099c728791c6d643f132130692072b3636ff37bd981de052d1118898144aaa259",
                      "issuingMiningRounds": ,
                      "validatorRights":
                    }
                  },
                  "inputs": [
                    {
                      "tag": "InputAmulet",
                      "value": "009e07a3b96d5310c0f49bdeafbd56a6e1048104ef464c580fbd999ed351ebad33ca121220c71ea82efc2d41d76f24629e261870f943659375b42340037b3513bfffda60d5"
                    }
                  ],
                  "amount": "13.2423760000",
                  "sender": "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179",
                  "description": "88888888"
                },
                "actingParties": [
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "consuming": false,
                "witnessParties": [
                  "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "htx-validator-1: : 1220968c44e8ff599a05ae7136a729a5289a5e1be765f6126d8649cc3b4a6670a3cf",
                  "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "lastDescendantNodeId": 7,
                "exerciseResult": {
                  "result": {
                    "round": {
                      "number": "91251"
                    },
                    "summary": {
                      "inputAppRewardAmount": "0.0000000000",
                      "inputValidatorRewardAmount": "0.0000000000",
                      "inputSvRewardAmount": "0.0000000000",
                      "inputAmuletAmount": "15.8386700000",
                      "balanceChanges": [
                        [
                          "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                          {
                            "changeToInitialAmountAsOfRoundZero": "24.9330343654",
                            "changeToHoldingFeesRate": "0.0001281154"
                          }
                        ],
                        [
                          "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179",
                          {
                            "changeToInitialAmountAsOfRoundZero": "-13.3559623414",
                            "changeToHoldingFeesRate": "-0.0000012632"
                          }
                        ]
                      ],
                      "holdingFees": "0.0000000000",
                      "outputFees": [
                        "0.0000000000"
                      ],
                      "senderChangeFee": "0.0000000000",
                      "senderChangeAmount": "2.5962940000",
                      "amuletPrice": "0.1485060000",
                      "inputValidatorFaucetAmount": "0.0000000000",
                      "inputUnclaimedActivityRecordAmount": "0.0000000000",
                      "inputDevelopmentFundAmount": "0.0000000000"
                    },
                    "createdAmulets": [
                      {
                        "tag": "TransferResultAmulet",
                        "value": "000b0e1ef010393796992678141674ad365874f48f5445790262aa178e654d1aa3ca1212200a4e18e0b023a931de14a58713b07c0e7ef6f8221dbaca3de91c09be7dc884ea"
                      }
                    ],
                    "senderChangeAmulet": "004c53b1880f4771c9c1bb2e2e518cd785ae1c037543a321f482282c55e34914e0ca121220e5c2aef7ac6f0590d1751963ea4a5b5157df57c9162fc02bdbc71bef917a9699"
                  },
                  "meta": {
                    "values": {
                      "splice.lfdecentralizedtrust.org/reason": "88888888",
                      "splice.lfdecentralizedtrust.org/sender": "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179",
                      "splice.lfdecentralizedtrust.org/tx-kind": "transfer"
                    }
                  }
                },
                "packageName": "splice-amulet",
                "implementedInterfaces": ,
                "acsDelta": false
              }
            },
            {
              "ExercisedEvent": {
                "offset": 3206017,
                "nodeId": 2,
                "contractId": "006183fd00806750daaf45e9a0fbab710dc0ad8f275c169ad3847d16b6ce976b0bca121220e9d15cdea12881d86c85ed7dd5bbdddd7fc001b2b255d08f9af8980ac799ecef",
                "templateId": "c208d7ead1e4e9b610fc2054d0bf00716144ad444011bce0b02dcd6cd0cb8a23:Splice.AmuletRules:AmuletRules",
                "interfaceId": null,
                "choice": "AmuletRules_Transfer",
                "choiceArgument": {
                  "transfer": {
                    "sender": "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179",
                    "provider": "htx-validator-1: : 1220968c44e8ff599a05ae7136a729a5289a5e1be765f6126d8649cc3b4a6670a3cf",
                    "inputs": [
                      {
                        "tag": "InputAmulet",
                        "value": "009e07a3b96d5310c0f49bdeafbd56a6e1048104ef464c580fbd999ed351ebad33ca121220c71ea82efc2d41d76f24629e261870f943659375b42340037b3513bfffda60d5"
                      }
                    ],
                    "outputs": [
                      {
                        "receiver": "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                        "receiverFeeRatio": "0.0000000000",
                        "amount": "13.2423760000"
                      }
                    ]
                  },
                  "context": {
                    "openMiningRound": "002e7b52f733b54d92be12ff288d2cd941c0b7b67e58dcce38ae7d92ac7a1d7118ca12122099c728791c6d643f132130692072b3636ff37bd981de052d1118898144aaa259",
                    "issuingMiningRounds": ,
                    "validatorRights":
                  },
                  "expectedDso": "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc"
                },
                "actingParties": [
                  "htx-validator-1: : 1220968c44e8ff599a05ae7136a729a5289a5e1be765f6126d8649cc3b4a6670a3cf",
                  "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "consuming": false,
                "witnessParties": [
                  "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "htx-validator-1: : 1220968c44e8ff599a05ae7136a729a5289a5e1be765f6126d8649cc3b4a6670a3cf",
                  "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "lastDescendantNodeId": 7,
                "exerciseResult": {
                  "round": {
                    "number": "91251"
                  },
                  "summary": {
                    "inputAppRewardAmount": "0.0000000000",
                    "inputValidatorRewardAmount": "0.0000000000",
                    "inputSvRewardAmount": "0.0000000000",
                    "inputAmuletAmount": "15.8386700000",
                    "balanceChanges": [
                      [
                        "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                        {
                          "changeToInitialAmountAsOfRoundZero": "24.9330343654",
                          "changeToHoldingFeesRate": "0.0001281154"
                        }
                      ],
                      [
                        "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179",
                        {
                          "changeToInitialAmountAsOfRoundZero": "-13.3559623414",
                          "changeToHoldingFeesRate": "-0.0000012632"
                        }
                      ]
                    ],
                    "holdingFees": "0.0000000000",
                    "outputFees": [
                      "0.0000000000"
                    ],
                    "senderChangeFee": "0.0000000000",
                    "senderChangeAmount": "2.5962940000",
                    "amuletPrice": "0.1485060000",
                    "inputValidatorFaucetAmount": "0.0000000000",
                    "inputUnclaimedActivityRecordAmount": "0.0000000000",
                    "inputDevelopmentFundAmount": "0.0000000000"
                  },
                  "createdAmulets": [
                    {
                      "tag": "TransferResultAmulet",
                      "value": "000b0e1ef010393796992678141674ad365874f48f5445790262aa178e654d1aa3ca1212200a4e18e0b023a931de14a58713b07c0e7ef6f8221dbaca3de91c09be7dc884ea"
                    }
                  ],
                  "senderChangeAmulet": "004c53b1880f4771c9c1bb2e2e518cd785ae1c037543a321f482282c55e34914e0ca121220e5c2aef7ac6f0590d1751963ea4a5b5157df57c9162fc02bdbc71bef917a9699",
                  "meta": {
                    "values": {
                      "splice.lfdecentralizedtrust.org/sender": "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179",
                      "splice.lfdecentralizedtrust.org/tx-kind": "transfer"
                    }
                  }
                },
                "packageName": "splice-amulet",
                "implementedInterfaces": ,
                "acsDelta": false
              }
            },
            {
              "ExercisedEvent": {
                "offset": 3206017,
                "nodeId": 5,
                "contractId": "009e07a3b96d5310c0f49bdeafbd56a6e1048104ef464c580fbd999ed351ebad33ca121220c71ea82efc2d41d76f24629e261870f943659375b42340037b3513bfffda60d5",
                "templateId": "c208d7ead1e4e9b610fc2054d0bf00716144ad444011bce0b02dcd6cd0cb8a23:Splice.Amulet:Amulet",
                "interfaceId": null,
                "choice": "Archive",
                "choiceArgument": {},
                "actingParties": [
                  "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "consuming": true,
                "witnessParties": [
                  "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "htx-validator-1: : 1220968c44e8ff599a05ae7136a729a5289a5e1be765f6126d8649cc3b4a6670a3cf",
                  "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "lastDescendantNodeId": 5,
                "exerciseResult": {},
                "packageName": "splice-amulet",
                "implementedInterfaces": ,
                "acsDelta": false
              }
            },
            {
              "CreatedEvent": {
                "offset": 3206017,
                "nodeId": 6,
                "contractId": "000b0e1ef010393796992678141674ad365874f48f5445790262aa178e654d1aa3ca1212200a4e18e0b023a931de14a58713b07c0e7ef6f8221dbaca3de91c09be7dc884ea",
                "templateId": "c208d7ead1e4e9b610fc2054d0bf00716144ad444011bce0b02dcd6cd0cb8a23:Splice.Amulet:Amulet",
                "contractKey": null,
                "createArgument": {
                  "dso": "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "owner": "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                  "amount": {
                    "initialAmount": "13.2423760000",
                    "createdAt": {
                      "number": "91251"
                    },
                    "ratePerRound": {
                      "rate": "0.0001281154"
                    }
                  }
                },
                "createdEventBlob": "CgMyLjES7gQKRQALDh7wEDk3lpkmeBQWdK02WHT0j1RFeQJiqheOZU0ao8oSEiAKThjgsCOpMd4UpYcTsHwOfvb4Ih26yj3pHAm+fciE6hINc3BsaWNlLWFtdWxldBpaCkBjMjA4ZDdlYWQxZTRlOWI2MTBmYzIwNTRkMGJmMDA3MTYxNDRhZDQ0NDAxMWJjZTBiMDJkY2Q2Y2QwY2I4YTIzEgZTcGxpY2USBkFtdWxldBoGQW11bGV0IucBauQBCk0KSzpJRFNPOjoxMjIwYjE0MzFlZjIxNzM0MmRiNDRkNTE2YmI5YmVmZGU4MDJiZTdkODg5OTYzN2QyOTA4OTVmYTU4ODgwZjE5YWNjYwpUClI6UGh0eC13YWxsZXQ6OjEyMjBkMDcyY2IwN2UzYzJhMjgwZjMxZDk0NWI5ZDhmOWU3YjAxZDU2N2M2YmM5NWIxZTkzYzkxODY0Y2I4NDk1NjRlCj0KO2o5ChEKDzINMTMuMjQyMzc2MDAwMAoMCgpqCAoGCgQY5pELChYKFGoSChAKDjIMMC4wMDAxMjgxMTU0KklEU086OjEyMjBiMTQzMWVmMjE3MzQyZGI0NGQ1MTZiYjliZWZkZTgwMmJlN2Q4ODk5NjM3ZDI5MDg5NWZhNTg4ODBmMTlhY2NjKlBodHgtd2FsbGV0OjoxMjIwZDA3MmNiMDdlM2MyYTI4MGYzMWQ5NDViOWQ4ZjllN2IwMWQ1NjdjNmJjOTViMWU5M2M5MTg2NGNiODQ5NTY0ZTlaM5geKk8GAEIqCiYKJAgBEiAx36Ukq0HbIWRIGrDuEsI82aWe346O6kYFt4GtFfGJ6xAe",
                "interfaceViews": ,
                "witnessParties": [
                  "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "htx-validator-1: : 1220968c44e8ff599a05ae7136a729a5289a5e1be765f6126d8649cc3b4a6670a3cf",
                  "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "signatories": [
                  "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e"
                ],
                "observers": ,
                "createdAt": "2026-04-11T07: 23: 00.775770Z",
                "packageName": "splice-amulet",
                "representativePackageId": "c208d7ead1e4e9b610fc2054d0bf00716144ad444011bce0b02dcd6cd0cb8a23",
                "acsDelta": true
              }
            },
            {
              "CreatedEvent": {
                "offset": 3206017,
                "nodeId": 7,
                "contractId": "004c53b1880f4771c9c1bb2e2e518cd785ae1c037543a321f482282c55e34914e0ca121220e5c2aef7ac6f0590d1751963ea4a5b5157df57c9162fc02bdbc71bef917a9699",
                "templateId": "c208d7ead1e4e9b610fc2054d0bf00716144ad444011bce0b02dcd6cd0cb8a23:Splice.Amulet:Amulet",
                "contractKey": null,
                "createArgument": {
                  "dso": "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "owner": "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179",
                  "amount": {
                    "initialAmount": "2.5962940000",
                    "createdAt": {
                      "number": "91251"
                    },
                    "ratePerRound": {
                      "rate": "0.0001281154"
                    }
                  }
                },
                "createdEventBlob": "CgMyLjES4wQKRQBMU7GID0dxycG7Li5RjNeFrhwDdUOjIfSCKCxV40kU4MoSEiDlwq73rG8FkNF1GWPqSltRV99XyRYvwCvbxxvvkXqWmRINc3BsaWNlLWFtdWxldBpaCkBjMjA4ZDdlYWQxZTRlOWI2MTBmYzIwNTRkMGJmMDA3MTYxNDRhZDQ0NDAxMWJjZTBiMDJkY2Q2Y2QwY2I4YTIzEgZTcGxpY2USBkFtdWxldBoGQW11bGV0IuEBat4BCk0KSzpJRFNPOjoxMjIwYjE0MzFlZjIxNzM0MmRiNDRkNTE2YmI5YmVmZGU4MDJiZTdkODg5OTYzN2QyOTA4OTVmYTU4ODgwZjE5YWNjYwpPCk06S29reC0xOjoxMjIwODExMTRkZmQ4OGViM2ViNzVjM2E0M2EyNjU4M2M1YzI3ZmJiZmE4NGEzOTk1OTM1NDA1ZGRjMWZhMjQ0YzE3OQo8CjpqOAoQCg4yDDIuNTk2Mjk0MDAwMAoMCgpqCAoGCgQY5pELChYKFGoSChAKDjIMMC4wMDAxMjgxMTU0KklEU086OjEyMjBiMTQzMWVmMjE3MzQyZGI0NGQ1MTZiYjliZWZkZTgwMmJlN2Q4ODk5NjM3ZDI5MDg5NWZhNTg4ODBmMTlhY2NjKktva3gtMTo6MTIyMDgxMTE0ZGZkODhlYjNlYjc1YzNhNDNhMjY1ODNjNWMyN2ZiYmZhODRhMzk5NTkzNTQwNWRkYzFmYTI0NGMxNzk5WjOYHipPBgBCKgomCiQIARIgkTIo7saeFEm3OW1QPPfnMEO6VroT2NEKFpfXzzc8sGIQHg==",
                "interfaceViews": ,
                "witnessParties": [
                  "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "htx-validator-1: : 1220968c44e8ff599a05ae7136a729a5289a5e1be765f6126d8649cc3b4a6670a3cf",
                  "htx-wallet: : 1220d072cb07e3c2a280f31d945b9d8f9e7b01d567c6bc95b1e93c91864cb849564e",
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "signatories": [
                  "DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
                  "okx-1: : 122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179"
                ],
                "observers": ,
                "createdAt": "2026-04-11T07: 23: 00.775770Z",
                "packageName": "splice-amulet",
                "representativePackageId": "c208d7ead1e4e9b610fc2054d0bf00716144ad444011bce0b02dcd6cd0cb8a23",
                "acsDelta": false
              }
            }
          ],
          "offset": 3206017,
          "synchronizerId": "global-domain: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc",
          "traceContext": {
            "traceparent": "00-451bd0bd5a63ef6e7d7c4568d8482151-f7db512f7e3cc14c-01",
            "tracestate": null
          },
          "recordTime": "2026-04-11T07: 23: 01.051987Z",
          "externalTransactionHash": null,
          "paidTrafficCost": null
        }
      }
    }
  }
]

This is a test transaction from OKX to HTX.

  1. How can I determine whether this transaction is valid?

  2. How can I determine whether this is a fake deposit?

  3. Previously, I tried to use templateId with a whitelist approach, but templateId changes frequently, even when our node has not been upgraded.

What is the identifier used to mark a CC asset?
Could there be other tokens as well?

Since the templateId changes with each upgrade, how should I uniquely identify the CC asset instead of other assets?

Hi @Bb_Hi ,

I formatted your JSON for easier readability, hope you don’t mind.
The JSON doesn’t have the interface views for CIP-0056 so one cannot use a standardized method to infer whether it’s “real”.

Generally the way to do it is to look at the instrumentId and check that it matches that of Canton Coin - specifically whether it has the right admin party DSO: : 1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc. This is the real “Decentralized Synchronizer Operations” party representing super validator consensus so this is indeed a real transaction.

Did you get this transaction from your own Ledger API? If so, to get the interface views, add them to the transaction filter. Example here:

OFFSET=$(curl -X GET http://localhost:8080/api/ledger/v2/state/ledger-end | jq '.offset')
echo $OFFSET

curl -X POST http://localhost:8080/api/ledger/v2/updates/flats -d '{
  "verbose" : false,
  "beginExclusive": '"$OFFSET"',
  "updateFormat": {
    "includeTransactions" : {
      "transactionShape" : "TRANSACTION_SHAPE_LEDGER_EFFECTS",
      "eventFormat" : {
        "verbose" : true,
        "filtersForAnyParty": {
          "cumulative":  [
          {
            "identifierFilter": {"WildcardFilter": {"value": {
              "includeCreatedEventBlob": false
            }}}
          },
          {
            "identifierFilter": {"InterfaceFilter": {"value": {
              "includeInterfaceView":true,
              "includeCreatedEventBlob": false,
              "interfaceId": "#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding"
            }}}
          },
          {
            "identifierFilter": {"InterfaceFilter": {"value": {
              "includeInterfaceView":true,
              "includeCreatedEventBlob": false,
              "interfaceId": "#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferInstruction"
            }}}
          }]
        }
      }
    }
  }
}'

“interfaceViews”: [
{
“interfaceId”: “718a0f77e505a8de22f188bd4c87fe74101274e9d4cb1bfac7d09aec7158d35b:Splice.Api.Token.HoldingV1:Holding”,
“viewStatus”: {
“code”: 0,
“message”: “”,
“details”:
},
“viewValue”: {
“owner”: “okx-1::122081114dfd88eb3eb75c3a43a26583c5c27fbbfa84a3995935405ddc1fa244c179”,
“instrumentId”: {
“admin”: “DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc”,
“id”: “Amulet”
},
“amount”: “2.5962940000”,
“lock”: null,
“meta”: {
“values”: {
“amulet.splice.lfdecentralizedtrust.org/created-in-round”: “91251”,
“amulet.splice.lfdecentralizedtrust.org/rate-per-round”: “0.0001281154”
}
}
}
}
] Will DSO::1220b1431ef217342db44d516bb9befde802be7d8899637d290895fa58880f19accc in the instrumentId (admin field) change frequently with exchange node upgrades?

That value never changes.

There is one value for the dso Party per network (DevNet, TestNet, MainNet), which you can extract from the network configs (e.g. for DevNet: https://docs.dev.global.canton.network.sync.global/dso ). Once you’ve extracted the value, you can hard-code it.