Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

38 changes: 19 additions & 19 deletions daml/dars.lock
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ splice-amulet 0.1.19 90987abecbcb1d004b063ddfe3b4b5d46cf3814ce89114a86c8cd75ff3c
splice-amulet 0.1.2 1446ffdf23326cef2de97923df96618eb615792bea36cf1431f03639448f1645
splice-amulet 0.1.20 23f47481dab6b1ec01339d6e14494d85bb2844c25f45b26fc5c9ef4cd4942d1f
splice-amulet 0.1.21 73e9ffdb6b0bc19a5f67372b118103926da11547ab9109eccae47e4e4cc35d6f
splice-amulet 0.1.22 2f6846eac4af585ff9bb025538b1596e34372b834cf4876a3f339a81c02d7120
splice-amulet 0.1.22 f9e506727691c0ae29b6c542c672ee9b1885644b68c3b9455b49afa76317117a
splice-amulet 0.1.3 0d89016d5a90eb8bced48bbac99e81c57781b3a36094b8d48b8e4389851e19af
splice-amulet 0.1.4 a36ef8888fb44caae13d96341ce1fabd84fc9e2e7b209bbc3caabb48b6be1668
splice-amulet 0.1.5 b4867a47abbfa2d15482f22c9c50516f0af14036287f299342f5d336391e4997
Expand All @@ -37,16 +37,16 @@ splice-amulet-name-service 0.1.2 711a2974d65e6ebd149704da75f3f71234798687ab895b9
splice-amulet-name-service 0.1.20 0b6748de2e613f5bc9a108b2496b85d2d661b7344c6c55eada9c0a0bf8efe0a5
splice-amulet-name-service 0.1.21 b342bbbd425902283c20eb5011eeab90cc9f69b4c534b8b757fd51b8ca7be589
splice-amulet-name-service 0.1.22 3921e7bd20670dce7530a84ad04b5f83860c21660bf1553908f76e95767c1950
splice-amulet-name-service 0.1.23 edee8f8372a58e52d47764943d908ada244a6b241fa19aa05005e2cfbc06a17e
splice-amulet-name-service 0.1.23 39fc5b49438aafbb0d225be3c2c5ffb5b60c4de6fa3f6a304bffc63a46aee5c1
splice-amulet-name-service 0.1.3 beb4b85f3f0cf36dfb93fc917d3ac218ee5d41b6e70604720cb228d85e168ee0
splice-amulet-name-service 0.1.4 053c7f4c2a77312e7d465a4fa7dc8cb298754ad12c0c987a7c401bd724e65efc
splice-amulet-name-service 0.1.5 6188c8b5f612278f988fc95c11e9742993ad3ac6ad0809f9af06ee9d366dc4a8
splice-amulet-name-service 0.1.6 a208aab2c4a248ab2eff352bd382f8b3bbadc92464123db587e8b359312a2f6c
splice-amulet-name-service 0.1.7 ba7806d9b2d593eac74a050161c54ae1325d170bf175cb66a9c1e5e5ffb88c3d
splice-amulet-name-service 0.1.8 efeb3f9b2b92e55fac4ec2d6164f95407a01477240c7465e576df4e310f54bd3
splice-amulet-name-service 0.1.9 f1b5915ad45ded616f43f83c735b7ee158b5eb58abe758a721e50eee19b3e531
splice-amulet-name-service-test 0.1.27 9d595628e2092c626f8426f455a9a2eb52a69f1e5263478f995535c9f1acb885
splice-amulet-test 0.1.26 3888a095572c524267443aab2d608808b3c1781a73c5ab8a03e747e918550590
splice-amulet-name-service-test 0.1.27 95d5e00c88178331eaa08b2933345d8c8eb72e0477772695574af36044b4f1e2
splice-amulet-test 0.1.26 118e4d620265948af91ddc91c8fd8c36ba1f3a363f58e28dd51cc6a4ae83eecf
splice-api-featured-app-v1 1.0.0 7804375fe5e4c6d5afe067bd314c42fe0b7d005a1300019c73154dd939da4dda
splice-api-featured-app-v2 1.0.0 dd22e3e168a8c7fd0313171922dabf1f7a3b131bd9bfc9ff98e606f8c57707ea
splice-api-reward-assignment-v1 1.0.0 6f7b72361bc2039369651b4195315a2a5849babafec67b3c96e66ea6e560ec35
Expand Down Expand Up @@ -86,23 +86,23 @@ splice-dso-governance 0.1.24 4974c654485d4ecaa6b5caf8ef3c2679efa8195c4b50d4965a8
splice-dso-governance 0.1.25 dfe102514acd41f79945b8363ca84d8243be97b2b235522ce77c754a36bb8479
splice-dso-governance 0.1.26 45099e955ce443f7895125097a62c509b9ad297091c91d6377ffe94f183c0e3e
splice-dso-governance 0.1.27 014473d35514cb36583bdeca269386e46ae4e2283fe9b04beb2f53cdb408e1a2
splice-dso-governance 0.1.28 3d324f0c2063466db85b9c4b00e133efc9b170bfb2fc37f7203e4d2ab9f951a6
splice-dso-governance 0.1.28 a14ed563b1be368afb22ba62c579e6d67921a79d239db07f6f18dd86afa7d465
splice-dso-governance 0.1.3 b0ae3cc03e418790305a3c15f761fe495572de5827f8d322fb8b96996b783c13
splice-dso-governance 0.1.4 dc24fd18b4d151cd1e0ff6bfb7438bafb2f50fe076d0f16f50565e60b153a0be
splice-dso-governance 0.1.5 9e3ca1d22ad495dfabf3d61acae3dc1a7718f527f02092280b58cf69edfdc84c
splice-dso-governance 0.1.6 4e7653cfbf7ca249de4507aca9cd3b91060e5489042a522c589d3c4199580cd8
splice-dso-governance 0.1.7 d406eba1132d464605f4dae3edf8cf5ecbbb34bd8edef0e047e7e526d328718c
splice-dso-governance 0.1.8 1790a114f83d5f290261fae1e7e46fba75a861a3dd603c6b4ef6b67b49053948
splice-dso-governance 0.1.9 9ee83bfd872f91e659b8a8439c5b4eaf240bcf6f19698f884d7d7993ab48c401
splice-dso-governance-test 0.1.34 6d73ff9fdd78a09c68b48b55ba333a3fa6b010e7392f86d0bc4311d2465e83b5
splice-dso-governance-test 0.1.34 16c0246782d6e1ac59762a58ba97dcd89d3b9051f0359ab935545c12d8ea5f81
splice-test-token-v1 1.0.0 aaa0b576b5a3db49b3a4f7a4710fe6f8ae462aabbde4da89f639eb87fd62e90c
splice-test-token-v1-test 1.0.1 971061ba28c980e2f2236f53ba4c51f09ddd72cc1046020bcdc26286623548c0
splice-test-token-v1-test 1.0.1 b9cd4210818bbce36d4427663bd3f062ea2fd8a483cebae7f5c0dfc15002fb05
splice-test-token-v2 1.0.0 a38a96b6f46c14c599b2763bc4fc68911a9cada90f89c599a1401e8e3df685e1
splice-test-token-v2-test 1.0.1 16a1a78766fb7f0ff9239d91c62fb45f07355c2b642067aaaca1dbcc16718342
splice-test-token-v2-test 1.0.1 461d63abb826585f95042ab017929e3c8cfb3cc22d2979daf91f767cbe9dcfd4
splice-token-standard-utils 2.0.0 9a8f41a2b1456d357dee5677565c21b9a5aa45b80f0ed6be469694445dd4f6e1
splice-token-standard-utils-test 1.0.1 8afbd61be63d1e8d45dcd0a5813cf7700e3fbd7f37a55dd3aa6c44613ab13c1a
splice-token-standard-v1-test 1.0.16 40ddebf2b7644ba7b6e859c3b79790b119b3f51a3a385c9454f4dc93b7bfb379
splice-token-standard-v2-test 1.0.1 ea8322f2908b7bab314c1ee1678a266602535139ea163b8c8a3f6d2554421455
splice-token-standard-utils-test 1.0.1 de1ff9e5211f30abddc00c9f3d87007d14437d0955caf838fb0364484c9b0b3b
splice-token-standard-v1-test 1.0.16 677b2f50151679ce836af2da111f5c05523fe9db0be411a47dd2b50b0e0e3f33
splice-token-standard-v2-test 1.0.1 031eea5a3ad04b0b7589d7bd40f1f8a59e3b9180e872d4df9c34511da635b924
splice-token-test-dummy-holding 0.0.1 1cd171c6c42ab46dc9cf12d80c6111369e00cea5cdf054924b4f26ce94b1ef5b
splice-token-test-dummy-holding 0.0.2 4f40fb033ef3db89623642c1b494e846097fa32af138b3864a63aa15937a323d
splice-token-test-dummy-holding 0.0.3 26c72abb5a4b485e58f201021de6f9e525c85863fa115536f768d6ee138ef13e
Expand All @@ -123,19 +123,19 @@ splice-util-batched-markers 1.0.0 727c5e97457d3ff841680816eb70d55834827ef756bac8
splice-util-batched-markers 1.0.1 4d91a9b044e0e996e91ee9aac3442591ffc78f16da4ff5c6f55218ba667f6192
splice-util-batched-markers 1.0.2 ec84eb67802403d91892aad61aee2e4eb34fb4e05e9158b3f677537569bcbc09
splice-util-batched-markers 1.0.3 74ee4c91b80c80b6860005ce627bdaed8f7fe6bdf3e60c9dbf3f48402d55126a
splice-util-batched-markers-test 1.0.9 1a9da132b7feb04699b164efa9abf14693c2fdffc3ec1235fee53e17f4a07c99
splice-util-batched-markers-test 1.0.9 bb82c88cbdd2c4128deaeefcd46126a03e97b3d4dc36c8137664f9308b5f5467
splice-util-featured-app-proxies 1.0.0 48e0c4fe4ea05e3b740404ebe37004ddd741efbdcd665c1c3199a5d6d9d944d7
splice-util-featured-app-proxies 1.1.0 81dd5a9e5c02d0de03208522a895fb85eeb12fbea4aca7c4ad0ad106f3b0bfce
splice-util-featured-app-proxies 1.2.0 653c48879064332d34af5008bdfd8e349493460e67e62b85e8e7e3392831c842
splice-util-featured-app-proxies 1.2.1 06bab917848ef275317c2539b75c23b94e03ceb55b4a1346936f7832084cd7a6
splice-util-featured-app-proxies 1.2.2 2889c094cf9678b2b666221934ea56ab169a31b257450845bd53217a8cdfe44f
splice-util-featured-app-proxies 1.2.3 677ed3473e7d412c06520843790ff27e21aaa7c292208909579592351c8eb55d
splice-util-featured-app-proxies 1.2.4 88bcea6e9990bb2edb5301c042caa25c0594742665866f049f7bd67342d0865d
splice-util-featured-app-proxies-test 1.0.15 6a0760f84e15e570c5fd4d1d11b0ca4f9073a70c1511900284971747c105b9dd
splice-util-featured-app-proxies-test 1.0.15 9b897852c6c22d907a11c4d07129ddfc65e046452748b4ef3921a1eb2b97d9f1
splice-util-token-standard-wallet 1.0.0 1da198cb7968fa478cfa12aba9fdf128a63a8af6ab284ea6be238cf92a3733ac
splice-util-token-standard-wallet 1.0.1 182892381e4245c39d3126082ec0b41a089edb61e63af518f61eae1f5c9e135a
splice-util-token-standard-wallet 1.1.0 1215d3ee8f3cb428d062d8708c2deca33c91ff99f5edefa70616646e57f93012
splice-util-token-standard-wallet-test 1.0.10 46fd8814bee9c866f79a0ae4fc5ddb008e66b806d21bc39509950fff73363778
splice-util-token-standard-wallet-test 1.0.10 e07ecaa91c3c259b5fad208d8b6535c3653d8247d4deaffb876769c06845ef74
splice-validator-lifecycle 0.1.0 cef96fac957362f1fc097120bd13686cac7f84fbc8053afa994a1f9214d9570c
splice-validator-lifecycle 0.1.1 1ddf05c96002914593c929848b786f34c753fb0be07717d1786be177a564aada
splice-validator-lifecycle 0.1.2 57e2f15f9755db1f00e51c52c319294264a21ad71c6bc1e7cd70db4b164c0aaa
Expand All @@ -162,7 +162,7 @@ splice-wallet 0.1.2 c162e08a4ec0428bfa870b6d9040989e575c74199c3a80558c62e03196dd
splice-wallet 0.1.20 e485c2eb59cca556e0e2ecfaaef45346dd0ba64f9976a3957938d814f846c78c
splice-wallet 0.1.21 f799a58fa53dfe48bae52bd5dbcc2b578a7d4dfee3ae3f4eb7635fe9a8cc67d3
splice-wallet 0.1.22 a78daeeb1a4a2405828b29f8c04814725dbd97ee5a60bd02e839f32518640afa
splice-wallet 0.1.23 2f515a6c27c52d4a0438f8b6d2651a33dfb705157165b45d347fc4dfb2b7ba10
splice-wallet 0.1.23 f231edc29b785f6cb1d9a94c7bf6b90f7dcba5ca3c64451e7ef2a21f94854ac8
splice-wallet 0.1.3 2c35bb4f5084ea66db59717d21750bfd64c43147ef5fd5166615092d592a6917
splice-wallet 0.1.4 141dad2d33b6410b8e1c35a0c4f8f76cb691e4d9a4410ce89f33f373855317e1
splice-wallet 0.1.5 614b525a50c624062d851ce7df5bdb90ddfa0d6871c486cb6e2c7b694bfbce59
Expand All @@ -185,15 +185,15 @@ splice-wallet-payments 0.1.19 eae5715f0ddd5ff4b8000cff13191b76d34e5d80d05465de92
splice-wallet-payments 0.1.2 775f5eb9c0249509adda5eb3ea4ee31bb953601168c18880df6f2ff09ec4298a
splice-wallet-payments 0.1.20 340afccb702179069fc81044890c435c5c8565df061b2efbfccf618c33a04e37
splice-wallet-payments 0.1.21 dc1a2f4ff4774e00c388f1bfce48a23c3539b8ea0d0ebf99b8df840a058ef873
splice-wallet-payments 0.1.22 4348c5a3316d2ba3d17b67e203e95a922d9eeba526ef9b2b2218cf2ae532758c
splice-wallet-payments 0.1.22 e4a0df71b783eac004ad0c2acf14de00fdb3a49bbbe88c53e32a2e9368ce55ec
splice-wallet-payments 0.1.3 b953b3729c81a55e598a364be7d0c0574750df3de12a7a1b53a300f217cb5c5c
splice-wallet-payments 0.1.4 12177f54873c1094ea169874ad0d7838383fd137f302d16356e93f28dfbc0fcc
splice-wallet-payments 0.1.5 2177b7a579fe6d3d510c7bcda99d39ece104ae24cfd1b78ac5616990d2d6c675
splice-wallet-payments 0.1.6 6124379528eeb6fa17ecdab15577c29abb33d0c0d34dc5f2680a1ac4f49b1649
splice-wallet-payments 0.1.7 4e3e0d9cdadf80f4bf8f3cd3660d5287c084c9a29f23c901aabce597d72fd467
splice-wallet-payments 0.1.8 e48ea337ee3335c8bb3206a2501ce947ac1a7bdb1825cee8f28bad64f5a7bc4b
splice-wallet-payments 0.1.9 7f4e081ad96f2ccded0c053b0cf5ddddae1139dfc3bb89cefcf77ea70f2cecb7
splice-wallet-test 0.1.27 21669b4dff108336a6b7cb4afc905b4bb3f30163fce70989609fe931ed57756c
splice-wallet-test 0.1.27 286c11dc5e0ab3f65ae60064812badfdc9fa1b482fbb5dc2cf94aabd6a529bc0
splitwell 0.1.0 075c76de553ab88383a7c69de134afa82aacfdf8ea8fcfe8852c4b199c3b2669
splitwell 0.1.1 ccb1a0215053062202052e1a052f9214da3fdae5253a6d43e2e155ff4f57fe75
splitwell 0.1.10 d42676a366f7ca7a2409974dd3054aa4d83ab29baa3b2086ad021407b0a1a295
Expand All @@ -210,12 +210,12 @@ splitwell 0.1.2 778edd2c228c6b68198d4d033885b2d0dae7daaee55d7df3edd9dfdf1f10fbd0
splitwell 0.1.20 af686139dda12540ab05a292987f5fa2edd0c05af62d9651384d005e9a91043e
splitwell 0.1.21 f646cf275b4c5139711469c92fbe702c498614edf200d8085305b2e43e28936a
splitwell 0.1.22 b97352bf1b70f6be481d7cd2b4ce22396008bbf611b488243a694f30437ed3a9
splitwell 0.1.23 a2132140a687424fcad90799736d6ff04e65ee050c72c741769e5ce48b3481b2
splitwell 0.1.23 c0cb70689c3d0f728409a4dabab1d9f89b101b28b641aa711cc25737924a3107
splitwell 0.1.3 7cde068cde689584f86a2499689d5cb165264d96496721e24ac6fb909f770a58
splitwell 0.1.4 85557b86cd4f330f093915db1ea26eac5092de6b5ddae0690146f6059c89419b
splitwell 0.1.5 a68e78774a7be655f5744c8ae0ac8b46d55ef6d1e7661bc27b9296154d56ac74
splitwell 0.1.6 872da0dd7986fd768930f85d6a7310a94a0ef924e7fbb7bb7a4e149f2b5feb74
splitwell 0.1.7 841d1c9c86b5c8f3a39059459ecd8febedf7703e18f117300bb0ebf4423db096
splitwell 0.1.8 63b8153a08ceb4bf40d807acc5712372c3eac548c266be4d5e92470b4f655515
splitwell 0.1.9 b6267905698d2798b9ef171e27d49fb88e052ec0ec0e0675a3a1b275c7d037d4
splitwell-test 0.1.27 4cade4cf6fd75fd5f255bbb187ef1a491c717364e111022dfec6b9f68c64e8b1
splitwell-test 0.1.27 cd99a5708a6982e7eb69b31252b6f5578153d3d725b5b1b9156694e14e8b29ec
Binary file modified daml/dars/splice-amulet-0.1.22.dar
Binary file not shown.
Binary file modified daml/dars/splice-amulet-name-service-0.1.23.dar
Binary file not shown.
Binary file modified daml/dars/splice-dso-governance-0.1.28.dar
Binary file not shown.
Binary file modified daml/dars/splice-wallet-0.1.23.dar
Binary file not shown.
Binary file modified daml/dars/splice-wallet-payments-0.1.22.dar
Binary file not shown.
Binary file modified daml/dars/splitwell-0.1.23.dar
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
-- Copyright (c) 2024 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
-- SPDX-License-Identifier: Apache-2.0

-- | PoC (dedicated-synchronizer traffic), rung 2: buy extra traffic for a governance-registered
-- dedicated synchronizer by burning Amulet on the decentralized synchronizer, and assert the resulting
-- `DedicatedSyncTraffic` record (observed by the operator).
--
-- Rung 1 (`TestRegisterSynchronizer`, in the DSO governance test package) proves the registration is
-- created by a vote. Here we create the `RegisteredSynchronizer` directly as the DSO party to isolate
-- the buy path, then exercise `AmuletRules_BuyDedicatedSyncTraffic` against it.
module Splice.Scripts.TestBuyDedicatedSyncTraffic where

import DA.Assert

import Daml.Script

-- The new buy choice, its result record, and `TransferInput`/`InputAmulet`/`TransferContext`.
import Splice.AmuletRules
-- The registry contract (rung 1) and the purchase record this choice creates.
import Splice.DecentralizedSynchronizer (RegisteredSynchronizer(..), DedicatedSyncTraffic(..))

-- App + user + round + funding helpers (setupDefaultAppWithUsers, tap, getTransferContext, ...).
import Splice.Scripts.Util

-- | Happy path: a registered (non-required) synchronizer can have traffic bought for it; the buy
-- burns Amulet and records a `DedicatedSyncTraffic` naming the operator + synchronizer, observed by
-- the operator.
test_BuyDedicatedSyncTraffic : Script ()
test_BuyDedicatedSyncTraffic = do
d <- setupDefaultAppWithUsers
let app = d.app
let provider = d.provider1
-- Ensure an open mining round exists to price the traffic against.
runNextIssuance app

-- The dedicated synchronizer's operator, plus a synchronizer id that is deliberately NOT in
-- `requiredSynchronizers` (which today holds only the decentralized sync) - authorization comes from the
-- registration instead.
operator <- allocateParty "dedicatedSyncOperator"
let dedicatedSyncId = "dedicated-sync::1220dededededededededededededededededededededededededededededede"

-- Rung 1 creates this via a DSO governance vote; here we create it directly as the DSO party to isolate rung 2.
registeredCid <- submit app.dso $ createCmd RegisteredSynchronizer with
dso = app.dso
synchronizerId = dedicatedSyncId
operator

-- Fund the buyer with Amulet to burn, and build a standard transfer context.
amuletCid <- tap app provider 1_000_000.0
context <- getTransferContext app provider None
(amuletRulesCid, _) <- fetchAmuletRulesByKey app.dso

let memberId = "PAR::participant::1220abababababababababababababababababababababababababababababab"
-- Buy dedicated-sync traffic for the registered synchronizer. `readAs app.dso` gives the buyer
-- visibility of the AmuletRules / OpenMiningRound / RegisteredSynchronizer (all signed by the DSO party) in-script;
-- on a live ledger these are supplied via explicit disclosure.
result <- submit (actAs provider.primaryParty <> readAs app.dso) $
exerciseCmd amuletRulesCid AmuletRules_BuyDedicatedSyncTraffic with
inputs = [InputAmulet amuletCid]
context
provider = provider.primaryParty
memberId
migrationId = 0
trafficAmount = 1_000_000
registeredSynchronizerCid = registeredCid
expectedDso = Some app.dso

-- The purchase burned Amulet...
assertMsg "expected a non-zero Amulet burn" (result.amuletPaid > 0.0)
-- ...and recorded a DedicatedSyncTraffic with the fields drawn from the registration.
Some dst <- queryContractId app.dso result.dedicatedTraffic
dst.dso === app.dso
dst.operator === operator
dst.synchronizerId === dedicatedSyncId
dst.memberId === memberId
dst.totalPurchased === 1_000_000

-- The operator is an observer, so its node can pick up the purchase on-ledger.
operatorView <- query @DedicatedSyncTraffic operator
length operatorView === 1

-- | Negative: the `minTopupAmount` floor still applies even though the `requiredSynchronizers` gate
-- is skipped for dedicated synchronizers - a tiny purchase is rejected.
test_BuyDedicatedSyncTraffic_belowMinTopup : Script ()
test_BuyDedicatedSyncTraffic_belowMinTopup = do
d <- setupDefaultAppWithUsers
let app = d.app
let provider = d.provider1
runNextIssuance app

operator <- allocateParty "dedicatedSyncOperator"
let dedicatedSyncId = "dedicated-sync::1220cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
registeredCid <- submit app.dso $ createCmd RegisteredSynchronizer with
dso = app.dso
synchronizerId = dedicatedSyncId
operator

amuletCid <- tap app provider 1_000_000.0
context <- getTransferContext app provider None
(amuletRulesCid, _) <- fetchAmuletRulesByKey app.dso

submitMustFail (actAs provider.primaryParty <> readAs app.dso) $
exerciseCmd amuletRulesCid AmuletRules_BuyDedicatedSyncTraffic with
inputs = [InputAmulet amuletCid]
context
provider = provider.primaryParty
memberId = "PAR::participant::1220efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef"
migrationId = 0
trafficAmount = 1 -- below any sane minTopupAmount
registeredSynchronizerCid = registeredCid
expectedDso = Some app.dso

-- | Negative: the expected DSO party argument guards against a swapped-out AmuletRules. A mismatched
-- expected DSO party (here, a party that is not the DSO party) is rejected before any Amulet burn.
test_BuyDedicatedSyncTraffic_wrongExpectedDso : Script ()
test_BuyDedicatedSyncTraffic_wrongExpectedDso = do
d <- setupDefaultAppWithUsers
let app = d.app
let provider = d.provider1
runNextIssuance app

operator <- allocateParty "dedicatedSyncOperator"
let dedicatedSyncId = "dedicated-sync::1220bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbc"
registeredCid <- submit app.dso $ createCmd RegisteredSynchronizer with
dso = app.dso
synchronizerId = dedicatedSyncId
operator

amuletCid <- tap app provider 1_000_000.0
context <- getTransferContext app provider None
(amuletRulesCid, _) <- fetchAmuletRulesByKey app.dso

submitMustFail (actAs provider.primaryParty <> readAs app.dso) $
exerciseCmd amuletRulesCid AmuletRules_BuyDedicatedSyncTraffic with
inputs = [InputAmulet amuletCid]
context
provider = provider.primaryParty
memberId = "PAR::participant::1220ababababababababababababababababababababababababababababababab"
migrationId = 0
trafficAmount = 1_000_000
registeredSynchronizerCid = registeredCid
expectedDso = Some provider.primaryParty -- not the DSO party

-- | Negative: `RegisteredSynchronizer` requires a non-empty synchronizer id (template `ensure`).
test_RegisteredSynchronizer_ensureNonEmpty : Script ()
test_RegisteredSynchronizer_ensureNonEmpty = do
d <- setupDefaultAppWithUsers
let app = d.app
operator <- allocateParty "dedicatedSyncOperator"
submitMustFail app.dso $ createCmd RegisteredSynchronizer with
dso = app.dso
synchronizerId = ""
operator
Loading
Loading