diff --git a/LICENSE b/LICENSE index 03b2361..82408b6 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,98 @@ -MIT License - -Copyright (c) 2026 BootNode - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Business Source License 1.1 + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +"Business Source License" is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Parameters + +Licensor: BootNode + +Licensed Work: Canton Token Forge + The Licensed Work is (c) 2026 BootNode. + +Additional Use Grant: None + +Change Date: October 15, 2030 + +Change License: GNU General Public License v2.0 or later + +----------------------------------------------------------------------------- + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License's text to license +your works, and to refer to it using the trademark "Business Source License", +as long as you comply with the Covenants of Licensor below. + +----------------------------------------------------------------------------- + +Covenants of Licensor + +In consideration of the right to use this License's text and the "Business +Source License" name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where "compatible" means that software provided under the Change License + can be included in a program with software provided under GPL Version 2.0 + or a later version. Licensor may specify additional Change Licenses + without limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text "None". + +3. To specify a Change Date. + +4. Not to modify this License in any other way. + +----------------------------------------------------------------------------- + +Notice + +The Business Source License (this document, or the "License") is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. diff --git a/README.md b/README.md index 04b6056..bdc5d04 100644 --- a/README.md +++ b/README.md @@ -285,4 +285,4 @@ the first page a consumer reads naming a version we just moved off. ## License -MIT - see [`LICENSE`](LICENSE). +Business Source License 1.1 (`BUSL-1.1`) - see [`LICENSE`](LICENSE). diff --git a/SPEC.md b/SPEC.md index c43f99f..92c5ee1 100644 --- a/SPEC.md +++ b/SPEC.md @@ -63,15 +63,15 @@ resulting exercise itself over the JSON Ledger API, forwarding the service's ### Size and status -976 lines of production Daml, 2508 lines of Daml tests, 1846 lines of -TypeScript service, 4693 lines of TypeScript tests, each figure a +1003 lines of production Daml, 2547 lines of Daml tests, 1894 lines of +TypeScript service, 4750 lines of TypeScript tests, each figure a `find -name '*.daml'` (or `'*.ts'`) `| xargs wc -l` count over `daml/canton-token-forge/daml`, `daml/canton-token-forge-test/daml`, `registry/src` and `registry/test` respectively. The two Daml paths name the source directory rather than the package root on purpose: a package root that has been built also holds a `.daml/` build directory, whose name the `*.daml` glob matches and whose regenerated data-dependency sources dwarf the figure -above. MIT licensed. Pre-release: the Daml package +above. Licensed under the Business Source License 1.1. Pre-release: the Daml package version is `0.0.1`, and the build is published as release `v0.1.0` for downstream repositories to pin (the tag is deliberately decoupled from the package version), with no compatibility guarantee offered across releases. @@ -623,7 +623,7 @@ Stated plainly, because they are what an evaluation turns on. ``` daml/ Container of dpm packages; not a package itself - canton-token-forge/ Production package, 976 lines + canton-token-forge/ Production package, 1003 lines daml/Canton/TokenForge/ Registry.daml InstrumentConfig, preapproval, the three factory instances Token.daml Token holding, input fetch/consume/spend helpers diff --git a/consumer-smoke/consumer/daml/Consumer.daml b/consumer-smoke/consumer/daml/Consumer.daml index 0a28c8f..f1eeee5 100644 --- a/consumer-smoke/consumer/daml/Consumer.daml +++ b/consumer-smoke/consumer/daml/Consumer.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + -- Every import below resolves through canton-token-forge-0.0.1.dar alone. The -- Splice interface packages are bundled inside that DAR but hidden by default; -- the --package lines in daml.yaml are what make them visible. diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/AllocationTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/AllocationTest.daml index 566b3e0..ff88922 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/AllocationTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/AllocationTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.AllocationTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/BatchTransferTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/BatchTransferTest.daml index 3a27174..4ba3ff4 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/BatchTransferTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/BatchTransferTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.BatchTransferTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/BurnMintTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/BurnMintTest.daml index 7a7819f..515b70e 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/BurnMintTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/BurnMintTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.BurnMintTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/FaucetTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/FaucetTest.daml index d0f3ef3..12b238e 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/FaucetTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/FaucetTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.FaucetTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/LockTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/LockTest.daml index f9d522b..fb426ea 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/LockTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/LockTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.LockTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/MultiInstrumentTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/MultiInstrumentTest.daml index 01109a0..400bc33 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/MultiInstrumentTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/MultiInstrumentTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.MultiInstrumentTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/OfferTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/OfferTest.daml index 0d9bdd4..174d29a 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/OfferTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/OfferTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.OfferTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/RegistryTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/RegistryTest.daml index 8c213f5..34496e2 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/RegistryTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/RegistryTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.RegistryTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/Smoke.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/Smoke.daml index 8dfa9d3..29e9a8d 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/Smoke.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/Smoke.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.Smoke where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TokenTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TokenTest.daml index b73b797..913fc41 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TokenTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TokenTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.TokenTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TransferTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TransferTest.daml index 1c02fbc..943b05b 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TransferTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TransferTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.TransferTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TxMetaTest.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TxMetaTest.daml index 261a7c7..24827a3 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TxMetaTest.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/TxMetaTest.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.TxMetaTest where import Daml.Script diff --git a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/Util.daml b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/Util.daml index 17d0472..5f0f02f 100644 --- a/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/Util.daml +++ b/daml/canton-token-forge-test/daml/Canton/TokenForge/Test/Util.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Test.Util where import Daml.Script diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/Allocation.daml b/daml/canton-token-forge/daml/Canton/TokenForge/Allocation.daml index b25764e..9ddcac8 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/Allocation.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/Allocation.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Allocation where import DA.Assert (assertWithinDeadline) diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/Instruction.daml b/daml/canton-token-forge/daml/Canton/TokenForge/Instruction.daml index b53d6a6..3367194 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/Instruction.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/Instruction.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Instruction where import Splice.Api.Token.HoldingV1 qualified as HoldingV1 diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/Locked.daml b/daml/canton-token-forge/daml/Canton/TokenForge/Locked.daml index 52d5f4f..9346454 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/Locked.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/Locked.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Locked where import DA.Action (unless) diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/Registry.daml b/daml/canton-token-forge/daml/Canton/TokenForge/Registry.daml index c3cff14..a59c1f9 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/Registry.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/Registry.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Registry where import DA.TextMap qualified as TextMap diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/Token.daml b/daml/canton-token-forge/daml/Canton/TokenForge/Token.daml index 8d36db9..b25876c 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/Token.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/Token.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Token where import DA.List (unique) diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/Transfer.daml b/daml/canton-token-forge/daml/Canton/TokenForge/Transfer.daml index 7348141..9e5bb87 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/Transfer.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/Transfer.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + -- | The multi-output transfer (the Splice.AmuletRules analog). No v1 interface -- choice expresses it: HoldingV1 declares no choices and its Lock is view-only -- metadata, and TransferInstructionV1 is single-receiver. BurnMintV1 does take diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/TxMeta.daml b/daml/canton-token-forge/daml/Canton/TokenForge/TxMeta.daml index 5478125..a18d854 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/TxMeta.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/TxMeta.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + -- | Transaction-kind annotations for this registry's own, non-standardized -- choices (the Amulet Splice.Amulet.TokenApiUtils analog). -- diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/Types.daml b/daml/canton-token-forge/daml/Canton/TokenForge/Types.daml index 3723aab..b5afcba 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/Types.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/Types.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Types where import Splice.Api.Token.HoldingV1 qualified as HoldingV1 diff --git a/daml/canton-token-forge/daml/Canton/TokenForge/Version.daml b/daml/canton-token-forge/daml/Canton/TokenForge/Version.daml index a31d0f4..b72e18d 100644 --- a/daml/canton-token-forge/daml/Canton/TokenForge/Version.daml +++ b/daml/canton-token-forge/daml/Canton/TokenForge/Version.daml @@ -1,3 +1,6 @@ +-- Copyright (c) 2026 BootNode. All rights reserved. +-- SPDX-License-Identifier: BUSL-1.1 + module Canton.TokenForge.Version where -- Package version marker. diff --git a/package-lock.json b/package-lock.json index 2067097..29d8100 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "": { "name": "@bootnodedev/canton-token-forge", "version": "0.3.0", - "license": "MIT", + "license": "BUSL-1.1", "dependencies": { "cors": "^2.8.5", "dotenv": "^16.4.5", diff --git a/package.json b/package.json index e01947a..d4dd595 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@bootnodedev/canton-token-forge", "version": "0.3.0", "description": "A reusable, multi-instrument CIP-0056 (CN Token Standard) compliant token for demos and sandboxes, plus its read-only registry HTTP service", - "license": "MIT", + "license": "BUSL-1.1", "type": "module", "scripts": { "setup": "bash scripts/fetch-dep.sh", diff --git a/registry/src/config.ts b/registry/src/config.ts index 0470f65..9483f3b 100644 --- a/registry/src/config.ts +++ b/registry/src/config.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + export interface Config { ledgerApiUrl: string ledgerApiToken: string diff --git a/registry/src/disclose.ts b/registry/src/disclose.ts index 4abe737..32bf0c0 100644 --- a/registry/src/disclose.ts +++ b/registry/src/disclose.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import type { ContractEntry } from './ledger.js' // A disclosure is a ContractEntry minus its decoded payload: the ledger diff --git a/registry/src/index.ts b/registry/src/index.ts index 83d499a..55f3e97 100644 --- a/registry/src/index.ts +++ b/registry/src/index.ts @@ -1,4 +1,7 @@ #!/usr/bin/env node +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import 'dotenv/config' import { type Config, loadConfig } from './config.js' import { HttpLedgerClient } from './ledger.js' diff --git a/registry/src/ledger.ts b/registry/src/ledger.ts index 1b22642..f19c427 100644 --- a/registry/src/ledger.ts +++ b/registry/src/ledger.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { randomUUID } from 'node:crypto' import type { Config } from './config.js' import type { DisclosedContract } from './disclose.js' diff --git a/registry/src/logger.ts b/registry/src/logger.ts index b1d9f9a..8297e55 100644 --- a/registry/src/logger.ts +++ b/registry/src/logger.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { pino } from 'pino' // The structural interface the service depends on, so tests can pass a diff --git a/registry/src/mapping.ts b/registry/src/mapping.ts index 3880f1c..bc52fdd 100644 --- a/registry/src/mapping.ts +++ b/registry/src/mapping.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import type { ContractEntry } from './ledger.js' import type { InstrumentConfigPayload, InstrumentIdValue } from './payloads.js' diff --git a/registry/src/openapi.ts b/registry/src/openapi.ts index 1cf65d4..f944f2c 100644 --- a/registry/src/openapi.ts +++ b/registry/src/openapi.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import path from 'node:path' import { fileURLToPath } from 'node:url' diff --git a/registry/src/payloads.ts b/registry/src/payloads.ts index 9e5c64d..a31ad72 100644 --- a/registry/src/payloads.ts +++ b/registry/src/payloads.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + // JSON shapes of the on-ledger contract payloads this service reads, as the // Canton JSON Ledger API renders create arguments. Only the fields the // service actually reads are declared; extra runtime fields are allowed by diff --git a/registry/src/routes/allocation.ts b/registry/src/routes/allocation.ts index 1d028f3..495d7c1 100644 --- a/registry/src/routes/allocation.ts +++ b/registry/src/routes/allocation.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { Router } from 'express' import { anyValueBool, diff --git a/registry/src/routes/async-handler.ts b/registry/src/routes/async-handler.ts index 3e47d22..5943412 100644 --- a/registry/src/routes/async-handler.ts +++ b/registry/src/routes/async-handler.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import type { NextFunction, Request, RequestHandler, Response } from 'express' // Express 4 does not forward a rejected promise from an async handler to diff --git a/registry/src/routes/lookup.ts b/registry/src/routes/lookup.ts index 76e2fd0..4d7d2cd 100644 --- a/registry/src/routes/lookup.ts +++ b/registry/src/routes/lookup.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import type { Config } from '../config.js' import type { ContractEntry, ContractLookup, LedgerClient } from '../ledger.js' import type { diff --git a/registry/src/routes/metadata.ts b/registry/src/routes/metadata.ts index 3b233fb..8e1dbcd 100644 --- a/registry/src/routes/metadata.ts +++ b/registry/src/routes/metadata.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { Router } from 'express' import type { ContractEntry } from '../ledger.js' import { diff --git a/registry/src/routes/respond.ts b/registry/src/routes/respond.ts index b5124b6..5360031 100644 --- a/registry/src/routes/respond.ts +++ b/registry/src/routes/respond.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import type { Response } from 'express' import type { ContractEntry } from '../ledger.js' import type { ResolveResult } from '../mapping.js' diff --git a/registry/src/routes/transfer.ts b/registry/src/routes/transfer.ts index 9636f80..cd75508 100644 --- a/registry/src/routes/transfer.ts +++ b/registry/src/routes/transfer.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { Router } from 'express' import { anyValueBool, diff --git a/registry/src/server.ts b/registry/src/server.ts index ae0590d..231ba2f 100644 --- a/registry/src/server.ts +++ b/registry/src/server.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import path from 'node:path' import cors from 'cors' import express, { type Express, type NextFunction, type Request, type Response } from 'express' diff --git a/registry/src/startup.ts b/registry/src/startup.ts index 4669655..b12c5bd 100644 --- a/registry/src/startup.ts +++ b/registry/src/startup.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import type { Config } from './config.js' import { type LedgerClient, LedgerRequestError } from './ledger.js' import type { Logger } from './logger.js' diff --git a/registry/test/allocation.test.ts b/registry/test/allocation.test.ts index afd4d8e..faf940d 100644 --- a/registry/test/allocation.test.ts +++ b/registry/test/allocation.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import request from 'supertest' import { describe, expect, it } from 'vitest' import { diff --git a/registry/test/config.test.ts b/registry/test/config.test.ts index 53262dd..a6129b8 100644 --- a/registry/test/config.test.ts +++ b/registry/test/config.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { describe, expect, it } from 'vitest' import { type Config, loadConfig } from '../src/config' diff --git a/registry/test/cors.test.ts b/registry/test/cors.test.ts index 64e05fb..dca3ae8 100644 --- a/registry/test/cors.test.ts +++ b/registry/test/cors.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import request from 'supertest' import { describe, expect, it } from 'vitest' import { createServer } from '../src/server' diff --git a/registry/test/e2e/helpers/fixture.ts b/registry/test/e2e/helpers/fixture.ts index 3b0fecc..c7d8dd7 100644 --- a/registry/test/e2e/helpers/fixture.ts +++ b/registry/test/e2e/helpers/fixture.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import type { Express } from 'express' import request from 'supertest' import type { Config } from '../../../src/config' diff --git a/registry/test/e2e/helpers/sandbox.ts b/registry/test/e2e/helpers/sandbox.ts index 79580f1..0103ebf 100644 --- a/registry/test/e2e/helpers/sandbox.ts +++ b/registry/test/e2e/helpers/sandbox.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { randomUUID } from 'node:crypto' import { readFileSync } from 'node:fs' import { dirname, resolve } from 'node:path' diff --git a/registry/test/e2e/instrument.test.ts b/registry/test/e2e/instrument.test.ts index e6236b4..74786ec 100644 --- a/registry/test/e2e/instrument.test.ts +++ b/registry/test/e2e/instrument.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import request from 'supertest' import { describe, expect, it } from 'vitest' import { holdingsOf, setupInstrument, tapFaucet } from './helpers/fixture' diff --git a/registry/test/e2e/sandbox.test.ts b/registry/test/e2e/sandbox.test.ts index b3286e1..d3594c3 100644 --- a/registry/test/e2e/sandbox.test.ts +++ b/registry/test/e2e/sandbox.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { describe, expect, it } from 'vitest' import { HttpLedgerClient, LedgerRequestError } from '../../src/ledger' import { checkTemplateIds } from '../../src/startup' diff --git a/registry/test/e2e/transfer-direct.test.ts b/registry/test/e2e/transfer-direct.test.ts index cabe484..87eebf1 100644 --- a/registry/test/e2e/transfer-direct.test.ts +++ b/registry/test/e2e/transfer-direct.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { describe, expect, it } from 'vitest' import { PREAPPROVAL_CONTEXT_KEY } from '../../src/disclose' import { diff --git a/registry/test/e2e/transfer-offer.test.ts b/registry/test/e2e/transfer-offer.test.ts index 5cd3744..52addf4 100644 --- a/registry/test/e2e/transfer-offer.test.ts +++ b/registry/test/e2e/transfer-offer.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import request from 'supertest' import { describe, expect, it } from 'vitest' import { createServer } from '../../src/server' diff --git a/registry/test/errors.test.ts b/registry/test/errors.test.ts index d694bd4..0739b45 100644 --- a/registry/test/errors.test.ts +++ b/registry/test/errors.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import request from 'supertest' import { describe, expect, it } from 'vitest' import { type LedgerClient, LedgerRequestError } from '../src/ledger' diff --git a/registry/test/health.test.ts b/registry/test/health.test.ts index b3b0a8f..148c7ee 100644 --- a/registry/test/health.test.ts +++ b/registry/test/health.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import request from 'supertest' import { describe, expect, it } from 'vitest' import { createServer } from '../src/server' diff --git a/registry/test/helpers/fixtures.ts b/registry/test/helpers/fixtures.ts index 38a725f..bd26d2d 100644 --- a/registry/test/helpers/fixtures.ts +++ b/registry/test/helpers/fixtures.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + // Shared test fixtures for the registry suites. The config is a full Config so // suites cannot drift from the real shape; the entry builders and ledger stubs // live here rather than in any one suite because changing either affects every diff --git a/registry/test/helpers/schema.ts b/registry/test/helpers/schema.ts index 51b5441..61ee435 100644 --- a/registry/test/helpers/schema.ts +++ b/registry/test/helpers/schema.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { readFileSync } from 'node:fs' import path from 'node:path' import Ajv, { type ValidateFunction } from 'ajv' diff --git a/registry/test/ledger.test.ts b/registry/test/ledger.test.ts index 597159a..a13a7ae 100644 --- a/registry/test/ledger.test.ts +++ b/registry/test/ledger.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { describe, expect, it } from 'vitest' import { HttpLedgerClient, LedgerRequestError } from '../src/ledger' import { recordingLogger } from './helpers/fixtures' diff --git a/registry/test/metadata.test.ts b/registry/test/metadata.test.ts index 7c562a7..81bcb60 100644 --- a/registry/test/metadata.test.ts +++ b/registry/test/metadata.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import request from 'supertest' import { describe, expect, it } from 'vitest' import type { LedgerClient } from '../src/ledger' diff --git a/registry/test/openapi.test.ts b/registry/test/openapi.test.ts index 859a9c7..242fb59 100644 --- a/registry/test/openapi.test.ts +++ b/registry/test/openapi.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { readFileSync } from 'node:fs' import path from 'node:path' import express, { type Express } from 'express' diff --git a/registry/test/request-validation.test.ts b/registry/test/request-validation.test.ts index 2418ac8..1974ef4 100644 --- a/registry/test/request-validation.test.ts +++ b/registry/test/request-validation.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import type { Server } from 'node:http' import net from 'node:net' import request from 'supertest' diff --git a/registry/test/startup.test.ts b/registry/test/startup.test.ts index adcbebf..b7a8aff 100644 --- a/registry/test/startup.test.ts +++ b/registry/test/startup.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { describe, expect, it } from 'vitest' import { type LedgerClient, LedgerRequestError } from '../src/ledger' import { checkAdminParty, checkTemplateIds } from '../src/startup' diff --git a/registry/test/transfer.test.ts b/registry/test/transfer.test.ts index 558a513..d8d936e 100644 --- a/registry/test/transfer.test.ts +++ b/registry/test/transfer.test.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import request from 'supertest' import { describe, expect, it } from 'vitest' import { diff --git a/registry/vitest.config.ts b/registry/vitest.config.ts index 604913d..f64cdbd 100644 --- a/registry/vitest.config.ts +++ b/registry/vitest.config.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { configDefaults, defineConfig } from 'vitest/config' // The end-to-end suite needs a participant, so it is excluded here and asked diff --git a/registry/vitest.e2e.config.ts b/registry/vitest.e2e.config.ts index 3005b03..807a404 100644 --- a/registry/vitest.e2e.config.ts +++ b/registry/vitest.e2e.config.ts @@ -1,3 +1,6 @@ +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + import { defineConfig } from 'vitest/config' export default defineConfig({ diff --git a/scripts/build-harness.sh b/scripts/build-harness.sh index 3a0dbee..22efdd1 100755 --- a/scripts/build-harness.sh +++ b/scripts/build-harness.sh @@ -1,4 +1,7 @@ #!/bin/bash +# Copyright (c) 2026 BootNode. All rights reserved. +# SPDX-License-Identifier: BUSL-1.1 + # Build the upstream splice-amulet-test bootstrap DAR that the splice-app-test # integration suite data-depends on. Run AFTER scripts/fetch-dep.sh. # diff --git a/scripts/check-registry-deps.mjs b/scripts/check-registry-deps.mjs index 491cdd1..b66e131 100644 --- a/scripts/check-registry-deps.mjs +++ b/scripts/check-registry-deps.mjs @@ -1,4 +1,7 @@ #!/usr/bin/env node +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + // // check-registry-deps.mjs - the root package.json ships registry/dist as its // bin, so a consumer install resolves the service's imports against the root diff --git a/scripts/consumer-smoke.sh b/scripts/consumer-smoke.sh index 2ad0e04..93f52be 100755 --- a/scripts/consumer-smoke.sh +++ b/scripts/consumer-smoke.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2026 BootNode. All rights reserved. +# SPDX-License-Identifier: BUSL-1.1 + # # consumer-smoke.sh - build a package whose ONLY data-dependency is the built # canton-token-forge DAR. diff --git a/scripts/fetch-dep.sh b/scripts/fetch-dep.sh index aa507bb..89fbaa4 100755 --- a/scripts/fetch-dep.sh +++ b/scripts/fetch-dep.sh @@ -1,4 +1,7 @@ #!/bin/bash +# Copyright (c) 2026 BootNode. All rights reserved. +# SPDX-License-Identifier: BUSL-1.1 + # Vendor the upstream canton-network/splice sources this project builds against, # then derive each DAR's version from the vendored source tree and expose it via # a stable-name symlink so daml.yaml never has to name a version. diff --git a/scripts/registry-install-smoke.sh b/scripts/registry-install-smoke.sh index 34d2f17..af6e41d 100755 --- a/scripts/registry-install-smoke.sh +++ b/scripts/registry-install-smoke.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2026 BootNode. All rights reserved. +# SPDX-License-Identifier: BUSL-1.1 + set -euo pipefail # registry-install-smoke.sh - pack the repository, install the tarball into a diff --git a/scripts/release-notes.sh b/scripts/release-notes.sh index 7bb309b..44f164d 100755 --- a/scripts/release-notes.sh +++ b/scripts/release-notes.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2026 BootNode. All rights reserved. +# SPDX-License-Identifier: BUSL-1.1 + # # release-notes.sh - emit the GitHub release body for a canton-token-forge DAR. # diff --git a/scripts/sandbox.sh b/scripts/sandbox.sh index 0c4a34b..4df9b2b 100755 --- a/scripts/sandbox.sh +++ b/scripts/sandbox.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) 2026 BootNode. All rights reserved. +# SPDX-License-Identifier: BUSL-1.1 + # # sandbox.sh - build the production DAR and run a local Canton sandbox with the # JSON Ledger API enabled, so the registry service and the seed script have a diff --git a/scripts/seed.mjs b/scripts/seed.mjs index d4ab8cf..ae21256 100644 --- a/scripts/seed.mjs +++ b/scripts/seed.mjs @@ -1,4 +1,7 @@ #!/usr/bin/env node +// Copyright (c) 2026 BootNode. All rights reserved. +// SPDX-License-Identifier: BUSL-1.1 + // // seed.mjs - seed a running Canton sandbox with the contracts the registry // service needs: an instrument admin, two demo users, and one InstrumentConfig