@easy1staking/cip113-sdk-ts 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/blueprints/standard/v0.3.0/plutus.json +596 -0
- package/blueprints/substandards/dummy/v0.1.0/plutus.json +58 -0
- package/blueprints/substandards/freeze-and-seize/v0.1.0/plutus.json +380 -0
- package/dist/core/evo-utils.d.ts +160 -0
- package/dist/core/evo-utils.d.ts.map +1 -0
- package/dist/core/evo-utils.js +401 -0
- package/dist/core/evo-utils.js.map +1 -0
- package/dist/core/registry.d.ts +31 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +72 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/dist/provider/address-utils.d.ts +15 -0
- package/dist/provider/address-utils.d.ts.map +1 -0
- package/dist/provider/address-utils.js +29 -0
- package/dist/provider/address-utils.js.map +1 -0
- package/dist/provider/tx-utils.d.ts +15 -0
- package/dist/provider/tx-utils.d.ts.map +1 -0
- package/dist/provider/tx-utils.js +18 -0
- package/dist/provider/tx-utils.js.map +1 -0
- package/dist/standard/blueprint.d.ts +31 -0
- package/dist/standard/blueprint.d.ts.map +1 -0
- package/dist/standard/blueprint.js +49 -0
- package/dist/standard/blueprint.js.map +1 -0
- package/dist/standard/params.d.ts +6 -0
- package/dist/standard/params.d.ts.map +1 -0
- package/dist/standard/params.js +5 -0
- package/dist/standard/params.js.map +1 -0
- package/dist/standard/scripts.d.ts +51 -0
- package/dist/standard/scripts.d.ts.map +1 -0
- package/dist/standard/scripts.js +110 -0
- package/dist/standard/scripts.js.map +1 -0
- package/dist/substandards/dummy/index.d.ts +16 -0
- package/dist/substandards/dummy/index.d.ts.map +1 -0
- package/dist/substandards/dummy/index.js +158 -0
- package/dist/substandards/dummy/index.js.map +1 -0
- package/dist/substandards/freeze-and-seize/index.d.ts +17 -0
- package/dist/substandards/freeze-and-seize/index.d.ts.map +1 -0
- package/dist/substandards/freeze-and-seize/index.js +769 -0
- package/dist/substandards/freeze-and-seize/index.js.map +1 -0
- package/dist/substandards/freeze-and-seize/scripts.d.ts +25 -0
- package/dist/substandards/freeze-and-seize/scripts.d.ts.map +1 -0
- package/dist/substandards/freeze-and-seize/scripts.js +54 -0
- package/dist/substandards/freeze-and-seize/scripts.js.map +1 -0
- package/dist/substandards/freeze-and-seize/types.d.ts +18 -0
- package/dist/substandards/freeze-and-seize/types.d.ts.map +1 -0
- package/dist/substandards/freeze-and-seize/types.js +8 -0
- package/dist/substandards/freeze-and-seize/types.js.map +1 -0
- package/dist/substandards/interface.d.ts +166 -0
- package/dist/substandards/interface.d.ts.map +1 -0
- package/dist/substandards/interface.js +10 -0
- package/dist/substandards/interface.js.map +1 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Evolution SDK utility functions.
|
|
3
|
+
*
|
|
4
|
+
* These are used across the SDK to build scripts, addresses, datums, and
|
|
5
|
+
* perform common conversions. All use Evolution SDK types directly.
|
|
6
|
+
*/
|
|
7
|
+
import { Data, Bytes, ScriptHash as EvoScriptHash, Script, UPLC, Address as EvoAddress, AddressEras, BaseAddress, EnterpriseAddress, RewardAccount, Assets, Credential, InlineDatum, KeyHash, TransactionHash, Transaction, } from "@evolution-sdk/evolution";
|
|
8
|
+
const PlutusV3 = Script.Script.members[3];
|
|
9
|
+
import * as Label from "@evolution-sdk/evolution/assets/Label";
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Script building
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
/**
|
|
14
|
+
* Build a PlutusV3 script object from compiled code hex.
|
|
15
|
+
*
|
|
16
|
+
* Handles CBOR encoding levels: if "double" (from applyParamsToScript),
|
|
17
|
+
* strips outer CBOR header to get single-CBOR for PlutusV3.
|
|
18
|
+
*/
|
|
19
|
+
export function buildEvoScript(compiledCode) {
|
|
20
|
+
const level = UPLC.getCborEncodingLevel(compiledCode);
|
|
21
|
+
if (level === "double") {
|
|
22
|
+
const raw = Bytes.fromHex(compiledCode);
|
|
23
|
+
const additionalInfo = raw[0] & 0x1f;
|
|
24
|
+
const headerLen = additionalInfo < 24 ? 1 : additionalInfo === 24 ? 2 : additionalInfo === 25 ? 3 : 5;
|
|
25
|
+
const innerBytes = raw.slice(headerLen);
|
|
26
|
+
return new PlutusV3({ bytes: innerBytes });
|
|
27
|
+
}
|
|
28
|
+
return new PlutusV3({ bytes: Bytes.fromHex(compiledCode) });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parameterize a script and compute its hash.
|
|
32
|
+
* Returns a PlutusScript with compiledCode and hash.
|
|
33
|
+
*/
|
|
34
|
+
export function parameterizeScript(compiledCode, params) {
|
|
35
|
+
const parameterized = UPLC.applyParamsToScript(compiledCode, params);
|
|
36
|
+
const script = buildEvoScript(parameterized);
|
|
37
|
+
const hash = EvoScriptHash.toHex(EvoScriptHash.fromScript(script));
|
|
38
|
+
return { type: "PlutusV3", compiledCode: parameterized, hash };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Compute script hash from compiled code.
|
|
42
|
+
*/
|
|
43
|
+
export function computeScriptHash(compiledCode) {
|
|
44
|
+
const script = buildEvoScript(compiledCode);
|
|
45
|
+
return EvoScriptHash.toHex(EvoScriptHash.fromScript(script));
|
|
46
|
+
}
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Address building
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* Build an enterprise (script-only) address from a script hash.
|
|
52
|
+
*/
|
|
53
|
+
export function scriptAddress(networkId, scriptHash) {
|
|
54
|
+
const cred = new EvoScriptHash.ScriptHash({ hash: Bytes.fromHex(scriptHash) });
|
|
55
|
+
const addr = new EnterpriseAddress.EnterpriseAddress({ networkId, paymentCredential: cred });
|
|
56
|
+
return AddressEras.toBech32(addr);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Build a reward (staking) address from a script hash.
|
|
60
|
+
*/
|
|
61
|
+
export function rewardAddress(networkId, scriptHash) {
|
|
62
|
+
const cred = new EvoScriptHash.ScriptHash({ hash: Bytes.fromHex(scriptHash) });
|
|
63
|
+
const addr = new RewardAccount.RewardAccount({ networkId, stakeCredential: cred });
|
|
64
|
+
return AddressEras.toBech32(addr);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Build a base address with script payment credential and user's staking credential.
|
|
68
|
+
*/
|
|
69
|
+
export function baseAddress(networkId, scriptHash, userAddress) {
|
|
70
|
+
const stakingHash = stakingCredentialHash(userAddress);
|
|
71
|
+
const addr = new BaseAddress.BaseAddress({
|
|
72
|
+
networkId,
|
|
73
|
+
paymentCredential: new EvoScriptHash.ScriptHash({ hash: Bytes.fromHex(scriptHash) }),
|
|
74
|
+
stakeCredential: new KeyHash.KeyHash({ hash: Bytes.fromHex(stakingHash) }),
|
|
75
|
+
});
|
|
76
|
+
return AddressEras.toBech32(addr);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Extract the staking credential hash from a bech32 address.
|
|
80
|
+
*/
|
|
81
|
+
export function stakingCredentialHash(address) {
|
|
82
|
+
const evoAddr = EvoAddress.fromBech32(address);
|
|
83
|
+
const ba = BaseAddress.fromHex(EvoAddress.toHex(evoAddr));
|
|
84
|
+
return Bytes.toHex(ba.stakeCredential.hash);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Extract the payment credential hash from a bech32 address.
|
|
88
|
+
*/
|
|
89
|
+
export function paymentCredentialHash(address) {
|
|
90
|
+
const evoAddr = EvoAddress.fromBech32(address);
|
|
91
|
+
const ba = BaseAddress.fromHex(EvoAddress.toHex(evoAddr));
|
|
92
|
+
return Bytes.toHex(ba.paymentCredential.hash);
|
|
93
|
+
}
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
// Data construction helpers (Cardano-specific)
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
/** OutputReference: Constr(0, [txHash, outputIndex]) */
|
|
98
|
+
export function outputReference(ref) {
|
|
99
|
+
return Data.constr(0n, [
|
|
100
|
+
Data.bytearray(ref.txHash),
|
|
101
|
+
Data.int(BigInt(ref.outputIndex)),
|
|
102
|
+
]);
|
|
103
|
+
}
|
|
104
|
+
/** Script credential: Constr(1, [scriptHash]) */
|
|
105
|
+
export function scriptCredential(hash) {
|
|
106
|
+
return Data.constr(1n, [Data.bytearray(hash)]);
|
|
107
|
+
}
|
|
108
|
+
/** Verification key credential: Constr(0, [keyHash]) */
|
|
109
|
+
export function keyCredential(hash) {
|
|
110
|
+
return Data.constr(0n, [Data.bytearray(hash)]);
|
|
111
|
+
}
|
|
112
|
+
/** Void / unit: Constr(0, []) */
|
|
113
|
+
export function voidData() {
|
|
114
|
+
return Data.constr(0n, []);
|
|
115
|
+
}
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
// Datum parsing (from on-chain Evolution SDK UTxO datums)
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
/**
|
|
120
|
+
* Extract a bytes field from a Constr datum at a given index.
|
|
121
|
+
* Works with Evolution SDK's Data.Constr format.
|
|
122
|
+
*/
|
|
123
|
+
export function extractConstrBytesField(datum, fieldIndex) {
|
|
124
|
+
if (!datum || typeof datum !== "object")
|
|
125
|
+
return undefined;
|
|
126
|
+
// Evolution SDK Constr: check with Data.isConstr
|
|
127
|
+
if (Data.isConstr(datum)) {
|
|
128
|
+
const constr = datum;
|
|
129
|
+
const field = constr.fields[fieldIndex];
|
|
130
|
+
if (field == null)
|
|
131
|
+
return undefined;
|
|
132
|
+
if (Data.isBytes(field)) {
|
|
133
|
+
return Bytes.toHex(field);
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Extract a credential (type + hash) from a constr datum field.
|
|
141
|
+
* Credential is Constr(0|1, [bytes]) — 0 = key, 1 = script.
|
|
142
|
+
*/
|
|
143
|
+
export function extractCredentialField(datum, fieldIndex) {
|
|
144
|
+
if (!datum || typeof datum !== "object")
|
|
145
|
+
return undefined;
|
|
146
|
+
if (Data.isConstr(datum)) {
|
|
147
|
+
const constr = datum;
|
|
148
|
+
const field = constr.fields[fieldIndex];
|
|
149
|
+
if (!field || !Data.isConstr(field))
|
|
150
|
+
return undefined;
|
|
151
|
+
const credConstr = field;
|
|
152
|
+
const type = credConstr.index === 0n ? "key" : "script";
|
|
153
|
+
const inner = credConstr.fields[0];
|
|
154
|
+
if (!inner)
|
|
155
|
+
return { type, hash: "" };
|
|
156
|
+
if (Data.isBytes(inner)) {
|
|
157
|
+
return { type, hash: Bytes.toHex(inner) };
|
|
158
|
+
}
|
|
159
|
+
return { type, hash: "" };
|
|
160
|
+
}
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
/** Build a RegistryNode datum */
|
|
164
|
+
export function registryNodeDatum(node) {
|
|
165
|
+
const credToData = (cred) => cred.type === "script"
|
|
166
|
+
? scriptCredential(cred.hash)
|
|
167
|
+
: keyCredential(cred.hash);
|
|
168
|
+
return Data.constr(0n, [
|
|
169
|
+
Data.bytearray(node.key),
|
|
170
|
+
Data.bytearray(node.next),
|
|
171
|
+
credToData(node.transferLogicScript),
|
|
172
|
+
credToData(node.thirdPartyTransferLogicScript),
|
|
173
|
+
Data.bytearray(node.globalStateCs),
|
|
174
|
+
]);
|
|
175
|
+
}
|
|
176
|
+
/** Build a BlacklistNode datum */
|
|
177
|
+
export function blacklistNodeDatum(key, next) {
|
|
178
|
+
return Data.constr(0n, [Data.bytearray(key), Data.bytearray(next)]);
|
|
179
|
+
}
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
// Redeemer builders (CIP-113 validators)
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
/**
|
|
184
|
+
* SmartTokenMintingAction redeemer for first mint (OutputIndex).
|
|
185
|
+
*/
|
|
186
|
+
export function issuanceRedeemerFirstMint(mintingLogicHash, registryOutputIndex) {
|
|
187
|
+
return Data.constr(0n, [
|
|
188
|
+
scriptCredential(mintingLogicHash),
|
|
189
|
+
Data.constr(1n, [Data.int(BigInt(registryOutputIndex))]),
|
|
190
|
+
]);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* SmartTokenMintingAction redeemer for subsequent mint/burn (RefInput).
|
|
194
|
+
*/
|
|
195
|
+
export function issuanceRedeemerRefInput(mintingLogicHash, registryRefInputIndex) {
|
|
196
|
+
return Data.constr(0n, [
|
|
197
|
+
scriptCredential(mintingLogicHash),
|
|
198
|
+
Data.constr(0n, [Data.int(BigInt(registryRefInputIndex))]),
|
|
199
|
+
]);
|
|
200
|
+
}
|
|
201
|
+
/** Build a TransferAct redeemer for PLGlobal. */
|
|
202
|
+
export function transferActRedeemer(proofs) {
|
|
203
|
+
return Data.constr(0n, [
|
|
204
|
+
Data.list(proofs.map((p) => p.type === "exists"
|
|
205
|
+
? Data.constr(0n, [Data.int(BigInt(p.nodeIdx))])
|
|
206
|
+
: Data.constr(1n, [Data.int(BigInt(p.nodeIdx))]))),
|
|
207
|
+
]);
|
|
208
|
+
}
|
|
209
|
+
/** Build a ThirdPartyAct redeemer for PLGlobal. */
|
|
210
|
+
export function thirdPartyActRedeemer(registryNodeIdx, outputsStartIdx) {
|
|
211
|
+
return Data.constr(1n, [
|
|
212
|
+
Data.int(BigInt(registryNodeIdx)),
|
|
213
|
+
Data.int(BigInt(outputsStartIdx)),
|
|
214
|
+
]);
|
|
215
|
+
}
|
|
216
|
+
/** RegistryInsert redeemer */
|
|
217
|
+
export function registryInsertRedeemer(key, hashedParam) {
|
|
218
|
+
return Data.constr(1n, [Data.bytearray(key), Data.bytearray(hashedParam)]);
|
|
219
|
+
}
|
|
220
|
+
/** Blacklist init (constructor 0) */
|
|
221
|
+
export function blacklistInitRedeemer() {
|
|
222
|
+
return Data.constr(0n, []);
|
|
223
|
+
}
|
|
224
|
+
/** Blacklist add (constructor 1) */
|
|
225
|
+
export function blacklistAddRedeemer(stakingPkh) {
|
|
226
|
+
return Data.constr(1n, [Data.bytearray(stakingPkh)]);
|
|
227
|
+
}
|
|
228
|
+
/** Blacklist remove (constructor 2) */
|
|
229
|
+
export function blacklistRemoveRedeemer(stakingPkh) {
|
|
230
|
+
return Data.constr(2n, [Data.bytearray(stakingPkh)]);
|
|
231
|
+
}
|
|
232
|
+
// ---------------------------------------------------------------------------
|
|
233
|
+
// Asset helpers
|
|
234
|
+
// ---------------------------------------------------------------------------
|
|
235
|
+
/** Build an Assets object with a single native token unit + min lovelace */
|
|
236
|
+
export function singleTokenAssets(policyId, assetName, qty) {
|
|
237
|
+
let assets = Assets.fromLovelace(0n);
|
|
238
|
+
assets = Assets.addByHex(assets, policyId, assetName, qty);
|
|
239
|
+
return Assets.withoutLovelace(assets);
|
|
240
|
+
}
|
|
241
|
+
/** Build mint assets map from unit -> qty entries (Evolution SDK format) */
|
|
242
|
+
export function mintAssetsFromMap(entries) {
|
|
243
|
+
let assets = Assets.fromLovelace(0n);
|
|
244
|
+
for (const [unit, qty] of entries) {
|
|
245
|
+
const policyId = unit.slice(0, 56);
|
|
246
|
+
const assetName = unit.slice(56);
|
|
247
|
+
assets = Assets.addByHex(assets, policyId, assetName, qty);
|
|
248
|
+
}
|
|
249
|
+
return Assets.withoutLovelace(assets);
|
|
250
|
+
}
|
|
251
|
+
/** Build output assets: lovelace + optional token map */
|
|
252
|
+
export function outputAssets(lovelace, tokenMap) {
|
|
253
|
+
let assets = Assets.fromLovelace(lovelace);
|
|
254
|
+
if (tokenMap) {
|
|
255
|
+
for (const [unit, qty] of tokenMap) {
|
|
256
|
+
const policyId = unit.slice(0, 56);
|
|
257
|
+
const assetName = unit.slice(56);
|
|
258
|
+
assets = Assets.addByHex(assets, policyId, assetName, qty);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return assets;
|
|
262
|
+
}
|
|
263
|
+
// ---------------------------------------------------------------------------
|
|
264
|
+
// UTxO datum extraction
|
|
265
|
+
// ---------------------------------------------------------------------------
|
|
266
|
+
/**
|
|
267
|
+
* Get the inline datum from a UTxO. Returns undefined if no inline datum.
|
|
268
|
+
*/
|
|
269
|
+
export function getInlineDatum(utxo) {
|
|
270
|
+
const datumOpt = utxo.datumOption;
|
|
271
|
+
if (datumOpt?._tag === "InlineDatum" && datumOpt.data != null) {
|
|
272
|
+
return datumOpt.data;
|
|
273
|
+
}
|
|
274
|
+
return undefined;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Get the UTxO's value as a check for a specific unit.
|
|
278
|
+
*/
|
|
279
|
+
export function utxoHasUnit(utxo, unit) {
|
|
280
|
+
try {
|
|
281
|
+
const qty = Assets.getByUnit(utxo.assets, unit);
|
|
282
|
+
return qty > 0n;
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
return false;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get the quantity of a specific unit in a UTxO.
|
|
290
|
+
*/
|
|
291
|
+
export function utxoUnitQty(utxo, unit) {
|
|
292
|
+
try {
|
|
293
|
+
return Assets.getByUnit(utxo.assets, unit);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
return 0n;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Get the lovelace amount from a UTxO.
|
|
301
|
+
*/
|
|
302
|
+
export function utxoLovelace(utxo) {
|
|
303
|
+
return Assets.lovelaceOf(utxo.assets);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get the txHash of a UTxO as a hex string.
|
|
307
|
+
*/
|
|
308
|
+
export function utxoTxHash(utxo) {
|
|
309
|
+
return TransactionHash.toHex(utxo.transactionId);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Get the output index of a UTxO as a number.
|
|
313
|
+
*/
|
|
314
|
+
export function utxoOutputIndex(utxo) {
|
|
315
|
+
return Number(utxo.index);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Get the bech32 address of a UTxO.
|
|
319
|
+
*/
|
|
320
|
+
export function utxoAddress(utxo) {
|
|
321
|
+
return EvoAddress.toBech32(utxo.address);
|
|
322
|
+
}
|
|
323
|
+
// ---------------------------------------------------------------------------
|
|
324
|
+
// Constants
|
|
325
|
+
// ---------------------------------------------------------------------------
|
|
326
|
+
/** Max next pointer for linked list sentinel (30 bytes, matches Aiken #"ff"*30) */
|
|
327
|
+
export const MAX_NEXT = "ff".repeat(30);
|
|
328
|
+
/** Convert a UTF-8 string to hex */
|
|
329
|
+
export function stringToHex(str) {
|
|
330
|
+
return Buffer.from(str, "utf-8").toString("hex");
|
|
331
|
+
}
|
|
332
|
+
/** Prefix an asset name hex with a CIP-67 label (e.g., 333 → "000f4141" + assetNameHex). */
|
|
333
|
+
export function labeledAssetName(label, assetNameHex) {
|
|
334
|
+
return Label.toLabel(label) + assetNameHex;
|
|
335
|
+
}
|
|
336
|
+
/** Strip a CIP-67 label prefix from an asset name hex, if present. Returns the stripped (unlabeled) name. */
|
|
337
|
+
export function stripCIP67Label(assetNameHex) {
|
|
338
|
+
// CIP-67 labels are 4 bytes = 8 hex chars
|
|
339
|
+
if (!assetNameHex || assetNameHex.length <= 8)
|
|
340
|
+
return assetNameHex || "";
|
|
341
|
+
try {
|
|
342
|
+
const labelHex = assetNameHex.substring(0, 8);
|
|
343
|
+
// Label.fromLabel will throw/return null if not a valid CIP-67 label
|
|
344
|
+
const label = Label.fromLabel(labelHex);
|
|
345
|
+
if (label !== undefined && label !== null) {
|
|
346
|
+
return assetNameHex.substring(8);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
// Not a valid CIP-67 label prefix — return as-is
|
|
351
|
+
}
|
|
352
|
+
return assetNameHex;
|
|
353
|
+
}
|
|
354
|
+
/** Check if an asset name hex starts with a CIP-67 label prefix. */
|
|
355
|
+
export function hasCIP67Label(assetNameHex) {
|
|
356
|
+
if (!assetNameHex || assetNameHex.length <= 8)
|
|
357
|
+
return false;
|
|
358
|
+
try {
|
|
359
|
+
const labelHex = assetNameHex.substring(0, 8);
|
|
360
|
+
const label = Label.fromLabel(labelHex);
|
|
361
|
+
return label !== undefined && label !== null;
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Build CIP-68 FT metadata datum: Constr(0, [metadata_map, version, extra]).
|
|
369
|
+
*
|
|
370
|
+
* Keys and text values are byte strings (standard CIP-68 convention).
|
|
371
|
+
* Matches real-world CIP-68 FT datums (e.g., FLDT token).
|
|
372
|
+
*/
|
|
373
|
+
export function buildCIP68FTDatum(meta) {
|
|
374
|
+
const entries = [];
|
|
375
|
+
entries.push([Data.bytearray(stringToHex("name")), Data.bytearray(stringToHex(meta.name))]);
|
|
376
|
+
if (meta.description) {
|
|
377
|
+
entries.push([Data.bytearray(stringToHex("description")), Data.bytearray(stringToHex(meta.description))]);
|
|
378
|
+
}
|
|
379
|
+
if (meta.ticker) {
|
|
380
|
+
entries.push([Data.bytearray(stringToHex("ticker")), Data.bytearray(stringToHex(meta.ticker))]);
|
|
381
|
+
}
|
|
382
|
+
if (meta.decimals !== undefined) {
|
|
383
|
+
entries.push([Data.bytearray(stringToHex("decimals")), Data.int(BigInt(meta.decimals))]);
|
|
384
|
+
}
|
|
385
|
+
if (meta.url) {
|
|
386
|
+
entries.push([Data.bytearray(stringToHex("url")), Data.bytearray(stringToHex(meta.url))]);
|
|
387
|
+
}
|
|
388
|
+
if (meta.logo) {
|
|
389
|
+
entries.push([Data.bytearray(stringToHex("logo")), Data.bytearray(stringToHex(meta.logo))]);
|
|
390
|
+
}
|
|
391
|
+
return Data.constr(0n, [
|
|
392
|
+
Data.map(entries),
|
|
393
|
+
Data.int(1n), // version
|
|
394
|
+
Data.int(1n), // extra (matches real-world CIP-68 datums)
|
|
395
|
+
]);
|
|
396
|
+
}
|
|
397
|
+
// ---------------------------------------------------------------------------
|
|
398
|
+
// Re-exports for convenience
|
|
399
|
+
// ---------------------------------------------------------------------------
|
|
400
|
+
export { Data, Bytes, Assets, Credential, InlineDatum, KeyHash, EvoAddress, EvoScriptHash, TransactionHash, Transaction, UPLC, };
|
|
401
|
+
//# sourceMappingURL=evo-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evo-utils.js","sourceRoot":"","sources":["../../src/core/evo-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry node lookup and reference input index computation.
|
|
3
|
+
*
|
|
4
|
+
* Uses Evolution SDK types directly — no adapter abstraction.
|
|
5
|
+
*/
|
|
6
|
+
import type { UTxO as EvoUTxO } from "@evolution-sdk/evolution";
|
|
7
|
+
import type { PolicyId, TxInput } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Sort transaction inputs lexicographically by (txHash, outputIndex).
|
|
10
|
+
* This matches the Cardano ledger's canonical ordering.
|
|
11
|
+
*/
|
|
12
|
+
export declare function sortTxInputs<T extends TxInput>(inputs: T[]): T[];
|
|
13
|
+
/**
|
|
14
|
+
* Find the index of a TxInput in a sorted list of reference inputs.
|
|
15
|
+
*/
|
|
16
|
+
export declare function findRefInputIndex(sortedRefInputs: TxInput[], target: TxInput): number;
|
|
17
|
+
/**
|
|
18
|
+
* Find the registry node UTxO for a given token policy ID.
|
|
19
|
+
* Searches the provided UTxOs for a node whose key matches the policy.
|
|
20
|
+
*/
|
|
21
|
+
export declare function findRegistryNode(utxos: EvoUTxO.UTxO[], tokenPolicyId: PolicyId): EvoUTxO.UTxO | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Find the covering node for a new token insertion.
|
|
24
|
+
* The covering node satisfies: node.key < tokenPolicyId < node.next
|
|
25
|
+
*/
|
|
26
|
+
export declare function findCoveringNode(utxos: EvoUTxO.UTxO[], tokenPolicyId: PolicyId): EvoUTxO.UTxO | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Convert a UTxO to a TxInput for sorting purposes.
|
|
29
|
+
*/
|
|
30
|
+
export declare function utxoToTxInput(utxo: EvoUTxO.UTxO): TxInput;
|
|
31
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAW,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAY9D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAMhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,OAAO,EAAE,EAC1B,MAAM,EAAE,OAAO,GACd,MAAM,CAUR;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EACrB,aAAa,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,GAAG,SAAS,CAM1B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EACrB,aAAa,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,GAAG,SAAS,CAS1B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAKzD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry node lookup and reference input index computation.
|
|
3
|
+
*
|
|
4
|
+
* Uses Evolution SDK types directly — no adapter abstraction.
|
|
5
|
+
*/
|
|
6
|
+
import { extractConstrBytesField, getInlineDatum, utxoTxHash, utxoOutputIndex, } from "./evo-utils.js";
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Transaction input sorting (matches Cardano ledger canonical order)
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
/**
|
|
11
|
+
* Sort transaction inputs lexicographically by (txHash, outputIndex).
|
|
12
|
+
* This matches the Cardano ledger's canonical ordering.
|
|
13
|
+
*/
|
|
14
|
+
export function sortTxInputs(inputs) {
|
|
15
|
+
return [...inputs].sort((a, b) => {
|
|
16
|
+
const hashCmp = a.txHash.localeCompare(b.txHash);
|
|
17
|
+
if (hashCmp !== 0)
|
|
18
|
+
return hashCmp;
|
|
19
|
+
return a.outputIndex - b.outputIndex;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Find the index of a TxInput in a sorted list of reference inputs.
|
|
24
|
+
*/
|
|
25
|
+
export function findRefInputIndex(sortedRefInputs, target) {
|
|
26
|
+
const idx = sortedRefInputs.findIndex((ri) => ri.txHash === target.txHash && ri.outputIndex === target.outputIndex);
|
|
27
|
+
if (idx === -1) {
|
|
28
|
+
throw new Error(`Reference input ${target.txHash}#${target.outputIndex} not found in sorted list`);
|
|
29
|
+
}
|
|
30
|
+
return idx;
|
|
31
|
+
}
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Registry node queries
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
/**
|
|
36
|
+
* Find the registry node UTxO for a given token policy ID.
|
|
37
|
+
* Searches the provided UTxOs for a node whose key matches the policy.
|
|
38
|
+
*/
|
|
39
|
+
export function findRegistryNode(utxos, tokenPolicyId) {
|
|
40
|
+
return utxos.find((utxo) => {
|
|
41
|
+
const datum = getInlineDatum(utxo);
|
|
42
|
+
if (!datum)
|
|
43
|
+
return false;
|
|
44
|
+
return extractConstrBytesField(datum, 0) === tokenPolicyId;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Find the covering node for a new token insertion.
|
|
49
|
+
* The covering node satisfies: node.key < tokenPolicyId < node.next
|
|
50
|
+
*/
|
|
51
|
+
export function findCoveringNode(utxos, tokenPolicyId) {
|
|
52
|
+
return utxos.find((utxo) => {
|
|
53
|
+
const datum = getInlineDatum(utxo);
|
|
54
|
+
if (!datum)
|
|
55
|
+
return false;
|
|
56
|
+
const key = extractConstrBytesField(datum, 0);
|
|
57
|
+
const next = extractConstrBytesField(datum, 1);
|
|
58
|
+
if (key === undefined || next === undefined)
|
|
59
|
+
return false;
|
|
60
|
+
return key < tokenPolicyId && tokenPolicyId < next;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Convert a UTxO to a TxInput for sorting purposes.
|
|
65
|
+
*/
|
|
66
|
+
export function utxoToTxInput(utxo) {
|
|
67
|
+
return {
|
|
68
|
+
txHash: utxoTxHash(utxo),
|
|
69
|
+
outputIndex: utxoOutputIndex(utxo),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,UAAU,EACV,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAoB,MAAW;IACzD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAClC,OAAO,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,eAA0B,EAC1B,MAAe;IAEf,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,CACnC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,CAC7E,CAAC;IACF,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,2BAA2B,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAqB,EACrB,aAAuB;IAEvB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAqB,EACrB,aAAuB;IAEvB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC1D,OAAO,GAAG,GAAG,aAAa,IAAI,aAAa,GAAG,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAkB;IAC9C,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;QACxB,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC;KACnC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CIP-113 Programmable Tokens SDK
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { CIP113 } from '@cip113/sdk';
|
|
7
|
+
* import { dummySubstandard } from '@cip113/sdk/dummy';
|
|
8
|
+
* import { freezeAndSeizeSubstandard } from '@cip113/sdk/freeze-and-seize';
|
|
9
|
+
*
|
|
10
|
+
* // Create Evolution SDK client
|
|
11
|
+
* const evoClient = client(preprod)
|
|
12
|
+
* .withBlockfrost({ projectId: '...' })
|
|
13
|
+
* .withAddress(walletAddress);
|
|
14
|
+
*
|
|
15
|
+
* const protocol = CIP113.init({
|
|
16
|
+
* client: evoClient,
|
|
17
|
+
* standard: { blueprint: standardBlueprint, deployment: deploymentParams },
|
|
18
|
+
* substandards: [dummySubstandard({ blueprint: dummyBlueprint })],
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* const tx = await protocol.register('freeze-and-seize', { ... });
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import type { DeploymentParams, PlutusBlueprint } from "./types.js";
|
|
25
|
+
import type { EvoClient, SubstandardPlugin, RegisterParams, MintParams, BurnParams, TransferParams, FreezeParams, UnfreezeParams, SeizeParams, InitComplianceParams, UnsignedTx } from "./substandards/interface.js";
|
|
26
|
+
import { type ResolvedStandardScripts } from "./standard/scripts.js";
|
|
27
|
+
export interface CIP113Config {
|
|
28
|
+
/** Evolution SDK client (ReadOnlyClient or SigningClient) */
|
|
29
|
+
client: EvoClient;
|
|
30
|
+
/** Standard protocol configuration */
|
|
31
|
+
standard: {
|
|
32
|
+
blueprint: PlutusBlueprint;
|
|
33
|
+
deployment: DeploymentParams;
|
|
34
|
+
};
|
|
35
|
+
/** Substandard plugins to register */
|
|
36
|
+
substandards?: SubstandardPlugin[];
|
|
37
|
+
}
|
|
38
|
+
export interface CIP113Protocol {
|
|
39
|
+
/** The resolved standard scripts (cached, reusable) */
|
|
40
|
+
readonly scripts: ResolvedStandardScripts;
|
|
41
|
+
/** The deployment parameters */
|
|
42
|
+
readonly deployment: DeploymentParams;
|
|
43
|
+
/** The Evolution SDK client */
|
|
44
|
+
readonly client: EvoClient;
|
|
45
|
+
/** Register a new programmable token */
|
|
46
|
+
register(substandardId: string, params: RegisterParams): Promise<UnsignedTx>;
|
|
47
|
+
/** Mint additional tokens */
|
|
48
|
+
mint(params: MintParams): Promise<UnsignedTx>;
|
|
49
|
+
/** Burn tokens */
|
|
50
|
+
burn(params: BurnParams): Promise<UnsignedTx>;
|
|
51
|
+
/** Transfer tokens */
|
|
52
|
+
transfer(params: TransferParams): Promise<UnsignedTx>;
|
|
53
|
+
compliance: {
|
|
54
|
+
/** Initialize compliance infrastructure (e.g., blacklist) */
|
|
55
|
+
init(substandardId: string, params: InitComplianceParams): Promise<UnsignedTx>;
|
|
56
|
+
/** Freeze an address */
|
|
57
|
+
freeze(params: FreezeParams): Promise<UnsignedTx>;
|
|
58
|
+
/** Unfreeze an address */
|
|
59
|
+
unfreeze(params: UnfreezeParams): Promise<UnsignedTx>;
|
|
60
|
+
/** Seize tokens */
|
|
61
|
+
seize(params: SeizeParams): Promise<UnsignedTx>;
|
|
62
|
+
};
|
|
63
|
+
/** Register a new substandard plugin at runtime */
|
|
64
|
+
registerSubstandard(plugin: SubstandardPlugin): void;
|
|
65
|
+
/** Get a registered substandard by ID */
|
|
66
|
+
getSubstandard(id: string): SubstandardPlugin | undefined;
|
|
67
|
+
/** List all registered substandard IDs */
|
|
68
|
+
listSubstandards(): string[];
|
|
69
|
+
}
|
|
70
|
+
export declare const CIP113: {
|
|
71
|
+
/**
|
|
72
|
+
* Initialize a CIP-113 protocol instance.
|
|
73
|
+
*
|
|
74
|
+
* This validates the standard blueprint, parameterizes all standard scripts,
|
|
75
|
+
* and initializes registered substandards.
|
|
76
|
+
*/
|
|
77
|
+
init(config: CIP113Config): CIP113Protocol;
|
|
78
|
+
};
|
|
79
|
+
export type { EvoClient, SubstandardPlugin, SubstandardFactory, SubstandardContext, RegisterParams, MintParams, BurnParams, TransferParams, FreezeParams, UnfreezeParams, SeizeParams, InitComplianceParams, UnsignedTx, CIP68MetadataInput, } from "./substandards/interface.js";
|
|
80
|
+
export type { DeploymentParams, PlutusBlueprint, PlutusScript, TxInput, UTxO, Network, PolicyId, ScriptHash, HexString, Assets, } from "./types.js";
|
|
81
|
+
export { buildEvoScript, computeScriptHash, parameterizeScript, scriptAddress, rewardAddress, baseAddress, stakingCredentialHash, paymentCredentialHash, stringToHex, MAX_NEXT, voidData, outputReference, scriptCredential, keyCredential, labeledAssetName, stripCIP67Label, hasCIP67Label, buildCIP68FTDatum, } from "./core/evo-utils.js";
|
|
82
|
+
export { sortTxInputs, findRefInputIndex } from "./core/registry.js";
|
|
83
|
+
export { addressHexToBech32 } from "./provider/address-utils.js";
|
|
84
|
+
export { assembleSignedTx } from "./provider/tx-utils.js";
|
|
85
|
+
export type { FESDeploymentParams } from "./substandards/freeze-and-seize/types.js";
|
|
86
|
+
export { preview as previewChain, preprod as preprodChain, mainnet as mainnetChain, Address as EvoAddress, Assets as EvoAssets, TransactionHash as EvoTransactionHash, Transaction as EvoTransaction, Data as EvoData, } from "@evolution-sdk/evolution";
|
|
87
|
+
import { Client } from "@evolution-sdk/evolution";
|
|
88
|
+
export declare const evoClient: (chain?: import("@evolution-sdk/evolution").Chain) => Client.ClientAssembly;
|
|
89
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|