Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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
3 changes: 3 additions & 0 deletions config.e2e-local.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ canton:
token:
cip56_package_id: "c8c6fe7c34d96b88d6471769aae85063c8045783b2a226fd24f8c573603d17c2"
splice_transfer_package_id: "55ba4deb0ad4662c4168b39859738a0e91388d252286480c7331b3f71a517281"
splice_holding_package_id: "placeholder-updated-by-bootstrap"

bridge:
package_id: "6fac182df4943e7e2f70360b413b6e3ab10e65289ba0d971978b6d861a860d72"
Expand All @@ -67,10 +68,12 @@ token:
name: "PROMPT"
symbol: "PROMPT"
decimals: 18
instrument_id: "PROMPT"
"0xDE30000000000000000000000000000000000001":
name: "Demo Token"
symbol: "DEMO"
decimals: 18
instrument_id: "DEMO"
native_balance_wei: "1000000000000000000000"

# Ethereum JSON-RPC facade (MetaMask compatibility)
Expand Down
4 changes: 4 additions & 0 deletions pkg/cantonsdk/token/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ type Config struct {

CIP56PackageID string `yaml:"cip56_package_id" validate:"required"`
SpliceTransferPackageID string `yaml:"splice_transfer_package_id" validate:"required"`
SpliceHoldingPackageID string `yaml:"splice_holding_package_id" validate:"required"`
Comment thread
salindne marked this conversation as resolved.
}

func (c *Config) validate() error {
Expand All @@ -31,5 +32,8 @@ func (c *Config) validate() error {
if c.SpliceTransferPackageID == "" {
return errors.New("splice_transfer_package_id is required")
}
if c.SpliceHoldingPackageID == "" {
return errors.New("splice_holding_package_id is required")
}
return nil
}
1 change: 1 addition & 0 deletions pkg/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,7 @@ func setDefaultConfigEnv(t *testing.T) {
t.Setenv("CANTON_IDENTITY_PACKAGE_ID", "identity-package-id")
t.Setenv("CANTON_CIP56_PACKAGE_ID", "cip56-package-id")
t.Setenv("CANTON_SPLICE_TRANSFER_PACKAGE_ID", "splice-transfer-package-id")
t.Setenv("CANTON_SPLICE_HOLDING_PACKAGE_ID", "splice-holding-package-id")
t.Setenv("CANTON_BRIDGE_PACKAGE_ID", "bridge-package-id")
t.Setenv("ETHEREUM_RPC_URL", "https://eth.example")
t.Setenv("ETHEREUM_WS_URL", "wss://eth.example/ws")
Expand Down
3 changes: 3 additions & 0 deletions pkg/config/defaults/config.api-server.docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ canton:
token:
cip56_package_id: "c8c6fe7c34d96b88d6471769aae85063c8045783b2a226fd24f8c573603d17c2"
splice_transfer_package_id: "55ba4deb0ad4662c4168b39859738a0e91388d252286480c7331b3f71a517281"
splice_holding_package_id: "718a0f77e505a8de22f188bd4c87fe74101274e9d4cb1bfac7d09aec7158d35b"

bridge:
package_id: "6fac182df4943e7e2f70360b413b6e3ab10e65289ba0d971978b6d861a860d72"
Expand All @@ -58,10 +59,12 @@ token:
name: "PROMPT"
symbol: "PROMPT"
decimals: 18
instrument_id: "PROMPT"
"0xDE30000000000000000000000000000000000001":
name: "Demo Token"
symbol: "DEMO"
decimals: 18
instrument_id: "DEMO"
native_balance_wei: "1000000000000000000000"

# Ethereum JSON-RPC facade (MetaMask compatibility)
Expand Down
3 changes: 3 additions & 0 deletions pkg/config/defaults/config.api-server.local-devnet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ canton:
token:
cip56_package_id: "c8c6fe7c34d96b88d6471769aae85063c8045783b2a226fd24f8c573603d17c2"
splice_transfer_package_id: "55ba4deb0ad4662c4168b39859738a0e91388d252286480c7331b3f71a517281"
splice_holding_package_id: "718a0f77e505a8de22f188bd4c87fe74101274e9d4cb1bfac7d09aec7158d35b"

bridge:
package_id: "6fac182df4943e7e2f70360b413b6e3ab10e65289ba0d971978b6d861a860d72"
Expand All @@ -52,10 +53,12 @@ token:
name: "PROMPT"
symbol: "PROMPT"
decimals: 18
instrument_id: "PROMPT"
"0xDE30000000000000000000000000000000000001":
name: "Demo Token"
symbol: "DEMO"
decimals: 18
instrument_id: "DEMO"
native_balance_wei: "1000000000000000000000"

# Ethereum JSON-RPC facade (MetaMask compatibility)
Expand Down
2 changes: 2 additions & 0 deletions pkg/config/defaults/config.api-server.mainnet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ canton:
token:
cip56_package_id: "${CANTON_CIP56_PACKAGE_ID}"
splice_transfer_package_id: "${CANTON_SPLICE_TRANSFER_PACKAGE_ID}"
splice_holding_package_id: "${CANTON_SPLICE_HOLDING_PACKAGE_ID}"

bridge:
package_id: "${CANTON_BRIDGE_PACKAGE_ID}"
Expand All @@ -50,6 +51,7 @@ token:
name: "Demo Token"
symbol: "DEMO"
decimals: 18
instrument_id: "DEMO"
native_balance_wei: "1000000000000000000000"

eth_rpc:
Expand Down
1 change: 1 addition & 0 deletions pkg/config/defaults/config.relayer.docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ canton:
token:
cip56_package_id: "c8c6fe7c34d96b88d6471769aae85063c8045783b2a226fd24f8c573603d17c2"
splice_transfer_package_id: "55ba4deb0ad4662c4168b39859738a0e91388d252286480c7331b3f71a517281"
splice_holding_package_id: "718a0f77e505a8de22f188bd4c87fe74101274e9d4cb1bfac7d09aec7158d35b"

bridge:
package_id: "6fac182df4943e7e2f70360b413b6e3ab10e65289ba0d971978b6d861a860d72"
Expand Down
1 change: 1 addition & 0 deletions pkg/config/defaults/config.relayer.local-devnet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ canton:
token:
cip56_package_id: "c8c6fe7c34d96b88d6471769aae85063c8045783b2a226fd24f8c573603d17c2"
splice_transfer_package_id: "55ba4deb0ad4662c4168b39859738a0e91388d252286480c7331b3f71a517281"
splice_holding_package_id: "718a0f77e505a8de22f188bd4c87fe74101274e9d4cb1bfac7d09aec7158d35b"

bridge:
package_id: "6fac182df4943e7e2f70360b413b6e3ab10e65289ba0d971978b6d861a860d72"
Expand Down
1 change: 1 addition & 0 deletions pkg/config/defaults/config.relayer.mainnet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ canton:
token:
cip56_package_id: "${CANTON_CIP56_PACKAGE_ID}"
splice_transfer_package_id: "${CANTON_SPLICE_TRANSFER_PACKAGE_ID}"
splice_holding_package_id: "${CANTON_SPLICE_HOLDING_PACKAGE_ID}"

bridge:
package_id: "${CANTON_BRIDGE_PACKAGE_ID}"
Expand Down
2 changes: 2 additions & 0 deletions pkg/config/tests/env-substitution.api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

token:
supported_tokens:
"0x0000000000000000000000000000000000000001":
name: "PROMPT"
symbol: "PROMPT"
decimals: 18
instrument_id: "PROMPT"

eth_rpc:
chain_id: 31337
Expand Down
2 changes: 2 additions & 0 deletions pkg/config/tests/invalid-database-url.api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

token:
supported_tokens:
"0x0000000000000000000000000000000000000001":
name: "PROMPT"
symbol: "PROMPT"
decimals: 18
instrument_id: "PROMPT"

eth_rpc:
chain_id: 31337
Expand Down
2 changes: 2 additions & 0 deletions pkg/config/tests/minimal.api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

token:
supported_tokens:
"0x0000000000000000000000000000000000000001":
name: "PROMPT"
symbol: "PROMPT"
decimals: 18
instrument_id: "PROMPT"

eth_rpc:
chain_id: 31337
Expand Down
1 change: 1 addition & 0 deletions pkg/config/tests/minimal.relayer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

bridge:
max_transfer_amount: "1000"
Expand Down
2 changes: 2 additions & 0 deletions pkg/config/tests/missing-env.api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

token:
supported_tokens:
"0x0000000000000000000000000000000000000001":
name: "PROMPT"
symbol: "PROMPT"
decimals: 18
instrument_id: "PROMPT"

eth_rpc:
chain_id: 31337
Expand Down
1 change: 1 addition & 0 deletions pkg/config/tests/missing-required.relayer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

bridge:
max_transfer_amount: "1000"
Expand Down
1 change: 1 addition & 0 deletions pkg/config/tests/monitoring-enabled-no-server.relayer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

bridge:
max_transfer_amount: "1000"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

bridge:
max_transfer_amount: "1000"
Expand Down
1 change: 1 addition & 0 deletions pkg/config/tests/unknown-field.relayer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ canton:
token:
cip56_package_id: "cip56-package"
splice_transfer_package_id: "splice-package"
splice_holding_package_id: "test-splice-holding-pkg-id"

bridge:
max_transfer_amount: "1000"
Expand Down
10 changes: 6 additions & 4 deletions pkg/token/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ import (
"github.com/ethereum/go-ethereum/common"
)

// ERC20Token contains ERC-20 token metadata
// ERC20Token contains ERC-20 token metadata and Canton instrument mapping.
type ERC20Token struct {
Name string `yaml:"name" validate:"required"`
Symbol string `yaml:"symbol" validate:"required"`
Decimals int `yaml:"decimals" validate:"gte=0,lte=18"`
Name string `yaml:"name" validate:"required"`
Symbol string `yaml:"symbol" validate:"required"`
Decimals int `yaml:"decimals" validate:"gte=0,lte=18"`
InstrumentID string `yaml:"instrument_id" validate:"required"`
InstrumentAdmin string `yaml:"instrument_admin"` // defaults to IssuerParty if empty
Comment thread
salindne marked this conversation as resolved.
Outdated
Comment thread
salindne marked this conversation as resolved.
Outdated
}

// Config holds token metadata indexed by contract address.
Expand Down
8 changes: 4 additions & 4 deletions pkg/token/erc20_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ var (

func newCfg() *token.Config {
cfg := token.NewConfig("5000000000000000000") // 5 ETH in wei
cfg.AddToken(promptAddr, token.ERC20Token{Name: "Prompt Token", Symbol: "PROMPT", Decimals: 18})
cfg.AddToken(demoAddr, token.ERC20Token{Name: "Demo Token", Symbol: "DEMO", Decimals: 18})
cfg.AddToken(promptAddr, token.ERC20Token{Name: "Prompt Token", Symbol: "PROMPT", Decimals: 18, InstrumentID: "PROMPT"})
cfg.AddToken(demoAddr, token.ERC20Token{Name: "Demo Token", Symbol: "DEMO", Decimals: 18, InstrumentID: "DEMO"})
return cfg
}

Expand Down Expand Up @@ -98,7 +98,7 @@ func TestERC20_Decimals(t *testing.T) {
t.Run("decimals value 255 (MaxUint8) is preserved", func(t *testing.T) {
cfg := newCfg()
addr255 := common.HexToAddress("0x3000000000000000000000000000000000000003")
cfg.AddToken(addr255, token.ERC20Token{Name: "T255", Symbol: "T255", Decimals: 255})
cfg.AddToken(addr255, token.ERC20Token{Name: "T255", Symbol: "T255", Decimals: 255, InstrumentID: "T255"})
svc := token.NewTokenService(cfg, nil, nil, nil)
erc20 := token.NewERC20(addr255, svc)

Expand All @@ -108,7 +108,7 @@ func TestERC20_Decimals(t *testing.T) {
t.Run("decimals value 256 (> MaxUint8) returns zero", func(t *testing.T) {
cfg := newCfg()
addr256 := common.HexToAddress("0x4000000000000000000000000000000000000004")
cfg.AddToken(addr256, token.ERC20Token{Name: "T256", Symbol: "T256", Decimals: 256})
cfg.AddToken(addr256, token.ERC20Token{Name: "T256", Symbol: "T256", Decimals: 256, InstrumentID: "T256"})
svc := token.NewTokenService(cfg, nil, nil, nil)
erc20 := token.NewERC20(addr256, svc)

Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/devstack/dsl/dsl.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ func (d *DSL) Deposit(ctx context.Context, t *testing.T, account stack.Account,
// ERC-20 balance of ownerAddr for tok is >= minTokens (human-readable token
// amount, e.g. "50"). This is the preferred balance check for api-server tests
// — no indexer needed. Pass sys.Tokens.DEMO or sys.Tokens.PROMPT as tok.
func (d *DSL) WaitForAPIBalance(ctx context.Context, t *testing.T, tok stack.Token, ownerAddr common.Address, minTokens string) {
func (d *DSL) WaitForAPIBalance(ctx context.Context, t *testing.T, tok *stack.Token, ownerAddr common.Address, minTokens string) {
t.Helper()
// Scale minTokens by 10^tok.Decimals.
exp := new(big.Int).Exp(big.NewInt(decimalBase), big.NewInt(int64(tok.Decimals)), nil)
Expand Down
4 changes: 2 additions & 2 deletions tests/e2e/devstack/system/system.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@ type Tokens struct {
func NewTokens(manifest *stack.ServiceManifest) *Tokens {
return &Tokens{
DEMO: stack.Token{
ERC20Token: token.ERC20Token{Symbol: "DEMO", Decimals: 18},
ERC20Token: token.ERC20Token{Symbol: "DEMO", Decimals: 18, InstrumentID: "DEMO"},
Address: common.HexToAddress(manifest.DemoTokenAddr),
},
PROMPT: stack.Token{
ERC20Token: token.ERC20Token{Symbol: "PROMPT", Decimals: 18},
ERC20Token: token.ERC20Token{Symbol: "PROMPT", Decimals: 18, InstrumentID: "PROMPT"},
Address: common.HexToAddress(manifest.PromptTokenAddr),
},
}
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/tests/api/balance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func TestGetBalance_AfterMintDEMO(t *testing.T) {
mintAmount := "100"
sys.DSL.MintDEMO(ctx, t, resp.Party, mintAmount)

sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.DEMO, sys.Accounts.User1.Address, mintAmount)
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.DEMO, sys.Accounts.User1.Address, mintAmount)
}

// TestERC20Balance_AfterDeposit_ReflectsChange verifies that after depositing
Expand Down
8 changes: 4 additions & 4 deletions tests/e2e/tests/api/transfer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func TestTransfer_DEMO_BetweenExternalUsers(t *testing.T) {

mintAmount := "50"
sys.DSL.MintDEMO(ctx, t, resp1.Party, mintAmount)
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.DEMO, sys.Accounts.User1.Address, mintAmount)
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.DEMO, sys.Accounts.User1.Address, mintAmount)

transferAmount := "10"
prepResp, err := sys.APIServer.PrepareTransfer(ctx, &sys.Accounts.User1, &transfer.PrepareRequest{
Expand All @@ -83,7 +83,7 @@ func TestTransfer_DEMO_BetweenExternalUsers(t *testing.T) {
t.Fatalf("expected status 'completed', got %q", execResp.Status)
}

sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.DEMO, sys.Accounts.User2.Address, transferAmount)
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.DEMO, sys.Accounts.User2.Address, transferAmount)
}

// TestTransfer_CustodialUser_PrepareRejects verifies that calling PrepareTransfer
Expand Down Expand Up @@ -175,7 +175,7 @@ func TestTransfer_InvalidSignature_Fails(t *testing.T) {
_, _ = sys.DSL.RegisterExternalUser(ctx, t, sys.Accounts.User2)

sys.DSL.MintDEMO(ctx, t, resp1.Party, "10")
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.DEMO, sys.Accounts.User1.Address, "10")
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.DEMO, sys.Accounts.User1.Address, "10")

prepResp, err := sys.APIServer.PrepareTransfer(ctx, &sys.Accounts.User1, &transfer.PrepareRequest{
To: sys.Accounts.User2.Address.Hex(),
Expand Down Expand Up @@ -221,7 +221,7 @@ func TestTransfer_InsufficientBalance_Fails(t *testing.T) {

// Mint a small amount.
sys.DSL.MintDEMO(ctx, t, resp1.Party, "1")
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.DEMO, sys.Accounts.User1.Address, "1")
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.DEMO, sys.Accounts.User1.Address, "1")

// Try to transfer more than the minted balance.
_, err := sys.APIServer.PrepareTransfer(ctx, &sys.Accounts.User1, &transfer.PrepareRequest{
Expand Down
6 changes: 3 additions & 3 deletions tests/e2e/tests/bridge/deposit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func TestDeposit_PROMPT_EthereumToCanton(t *testing.T) {
// Also verify the balance is reflected through the api-server's /eth JSON-RPC
// facade. This exercises the full path: indexer → token service → user store
// EVM-address→party lookup → eth_call balanceOf response.
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.PROMPT, account.Address, "1")
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.PROMPT, account.Address, "1")
}

// TestDeposit_SmallAmount_Succeeds verifies that a small PROMPT deposit (0.1
Expand All @@ -71,7 +71,7 @@ func TestDeposit_SmallAmount_Succeeds(t *testing.T) {

sys.DSL.WaitForRelayerTransfer(ctx, t, txHash.Hex())
sys.DSL.WaitForCantonBalance(ctx, t, regResp.Party, admin, id, "0.1")
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.PROMPT, account.Address, "0.1")
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.PROMPT, account.Address, "0.1")
}

// TestDeposit_TwoDeposits_Accumulate verifies that two sequential deposits from
Expand Down Expand Up @@ -104,5 +104,5 @@ func TestDeposit_TwoDeposits_Accumulate(t *testing.T) {
tx2 := sys.DSL.Deposit(ctx, t, account, new(big.Int).Set(one18))
sys.DSL.WaitForRelayerTransfer(ctx, t, tx2.Hex())
sys.DSL.WaitForCantonBalance(ctx, t, regResp.Party, admin, id, "2")
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.PROMPT, account.Address, "2")
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.PROMPT, account.Address, "2")
}
6 changes: 3 additions & 3 deletions tests/e2e/tests/bridge/withdrawal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func TestWithdrawal_PROMPT_CantonToEthereum(t *testing.T) {
// WaitForAPIBalance uses the same indexer data source as WaitForCantonBalance but
// exercises the additional api-server path: user-store EVM→party lookup + eth_call facade.
sys.DSL.WaitForCantonBalance(ctx, t, regResp.Party, admin, id, "1")
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.PROMPT, account.Address, "1")
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.PROMPT, account.Address, "1")
}

// TestWithdrawal_PartialAmount verifies that withdrawing only part of the
Expand Down Expand Up @@ -92,7 +92,7 @@ func TestWithdrawal_PartialAmount(t *testing.T) {

// The remaining 2 PROMPT must be visible both on Canton and via the api-server.
sys.DSL.WaitForCantonBalance(ctx, t, regResp.Party, admin, id, "2")
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.PROMPT, account.Address, "2")
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.PROMPT, account.Address, "2")
}

// TestWithdrawal_AfterCantonTransfer verifies that a user who received PROMPT
Expand Down Expand Up @@ -172,5 +172,5 @@ func TestWithdrawal_AfterCantonTransfer(t *testing.T) {
// (User1 withdrew their entire PROMPT holding).
sys.DSL.WaitForEthBalance(ctx, t, tokenAddr, sys.Accounts.User1.Address, one18)
sys.DSL.WaitForCantonBalance(ctx, t, regResp1.Party, admin, id, "0")
sys.DSL.WaitForAPIBalance(ctx, t, sys.Tokens.PROMPT, sys.Accounts.User1.Address, "0")
sys.DSL.WaitForAPIBalance(ctx, t, &sys.Tokens.PROMPT, sys.Accounts.User1.Address, "0")
}
Loading