Skip to content

Commit

Permalink
feat: draft of refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
HinsonSIDAN committed May 15, 2024
1 parent 5af4215 commit aa60752
Show file tree
Hide file tree
Showing 60 changed files with 1,258 additions and 754 deletions.
8 changes: 3 additions & 5 deletions packages/module/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"description": "Rapidly build Web3 apps on the Cardano Blockchain.",
"homepage": "https://meshjs.dev",
"author": "MeshJS",
"version": "1.5.16",
"version": "1.6.0-alpha.4",
"license": "Apache-2.0",
"type": "module",
"repository": {
Expand Down Expand Up @@ -44,8 +44,7 @@
}
},
"browser": {
"@emurgo/cardano-message-signing-nodejs": "@emurgo/cardano-message-signing-browser",
"@emurgo/cardano-serialization-lib-nodejs": "@emurgo/cardano-serialization-lib-browser"
"@emurgo/cardano-message-signing-nodejs": "@emurgo/cardano-message-signing-browser"
},
"exports": {
".": {
Expand All @@ -70,9 +69,8 @@
"dependencies": {
"@emurgo/cardano-message-signing-browser": "1.0.1",
"@emurgo/cardano-message-signing-nodejs": "1.0.1",
"@emurgo/cardano-serialization-lib-browser": "11.5.0",
"@emurgo/cardano-serialization-lib-nodejs": "11.5.0",
"@emurgo/cip14-js": "3.0.1",
"@meshsdk/mesh-csl": "^0.0.5",
"axios": "1.6.3",
"bip39": "3.0.4",
"json-bigint": "^1.0.0",
Expand Down
48 changes: 31 additions & 17 deletions packages/module/src/common/constants.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { csl } from '@mesh/core';
import type { Costmdls } from '@mesh/core';
import type { Budget, Era, Network, Protocol } from './types';
import type { Budget, Era, Network, Protocol } from '../types';

export const DEFAULT_REDEEMER_BUDGET: Budget = {
mem: 7_000_000,
Expand Down Expand Up @@ -46,12 +46,10 @@ export const REDEEMER_TAGS = {
SPEND: csl.RedeemerTag.new_spend(),
};

export const SUPPORTED_CLOCKS: Record<Network, [
epoch: string,
slot: string,
systemStart: string,
epochLength: string,
]> = {
export const SUPPORTED_CLOCKS: Record<
Network,
[epoch: string, slot: string, systemStart: string, epochLength: string]
> = {
testnet: ['74', '1598400', '1595967616', '432000'],
preview: ['183', '15811222', '1682467200', '86400'],
preprod: ['65', '26438400', '1682121600', '432000'],
Expand Down Expand Up @@ -230,7 +228,7 @@ export const SUPPORTED_COST_MODELS: Record<Era, Costmdls> = {
'unMapData-memory-arguments': 32,
'verifyEd25519Signature-cpu-arguments-intercept': 57996947,
'verifyEd25519Signature-cpu-arguments-slope': 18975,
'verifyEd25519Signature-memory-arguments': 10
'verifyEd25519Signature-memory-arguments': 10,
}).forEach((cost, operation) =>
v1CostModel.set(operation, csl.Int.new_i32(cost))
);
Expand Down Expand Up @@ -411,7 +409,7 @@ export const SUPPORTED_COST_MODELS: Record<Era, Costmdls> = {
'verifyEd25519Signature-memory-arguments': 10,
'verifySchnorrSecp256k1Signature-cpu-arguments-intercept': 38887044,
'verifySchnorrSecp256k1Signature-cpu-arguments-slope': 32947,
'verifySchnorrSecp256k1Signature-memory-arguments': 10
'verifySchnorrSecp256k1Signature-memory-arguments': 10,
}).forEach((cost, operation) =>
v2CostModel.set(operation, csl.Int.new_i32(cost))
);
Expand All @@ -424,7 +422,8 @@ export const SUPPORTED_COST_MODELS: Record<Era, Costmdls> = {
};

export const SUPPORTED_LANGUAGE_VIEWS: Record<
Era, Partial<Record<keyof typeof LANGUAGE_VERSIONS, string>>
Era,
Partial<Record<keyof typeof LANGUAGE_VERSIONS, string>>
> = {
ALONZO: {
V1: 'a141005901d59f1a000302590001011a00060bc719026d00011a000249f01903e800011a000249f018201a0025cea81971f70419744d186419744d186419744d186419744d186419744d186419744d18641864186419744d18641a000249f018201a000249f018201a000249f018201a000249f01903e800011a000249f018201a000249f01903e800081a000242201a00067e2318760001011a000249f01903e800081a000249f01a0001b79818f7011a000249f0192710011a0002155e19052e011903e81a000249f01903e8011a000249f018201a000249f018201a000249f0182001011a000249f0011a000249f0041a000194af18f8011a000194af18f8011a0002377c190556011a0002bdea1901f1011a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000242201a00067e23187600010119f04c192bd200011a000249f018201a000242201a00067e2318760001011a000242201a00067e2318760001011a0025cea81971f704001a000141bb041a000249f019138800011a000249f018201a000302590001011a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a000249f018201a00330da70101ff',
Expand All @@ -436,8 +435,10 @@ export const SUPPORTED_LANGUAGE_VIEWS: Record<
};

export const SUPPORTED_HANDLES: Record<number, string> = {
[csl.NetworkInfo.testnet().network_id()]: '8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3',
[csl.NetworkInfo.mainnet().network_id()]: 'f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a',
[csl.NetworkInfo.testnet().network_id()]:
'8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3',
[csl.NetworkInfo.mainnet().network_id()]:
'f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a',
};

export const SUPPORTED_OGMIOS_LINKS: Record<Network, string> = {
Expand Down Expand Up @@ -467,17 +468,30 @@ export const SUPPORTED_TOKENS = {
HOSKY: 'a0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235484f534b59',
YUMMI: '078eafce5cd7edafdf63900edef2c1ea759e77f30ca81d6bbdeec92479756d6d69',
C3: '8e51398904a5d3fc129fbf4f1589701de23c7824d5c90fdb9490e15a434841524c4933',
GIMBAL: '2b0a04a7b60132b1805b296c7fcb3b217ff14413991bf76f72663c3067696d62616c',
SUNDAE: '9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d7753554e444145',
GREENS: '4623ab311b7d982d8d26fcbe1a9439ca56661aafcdcd8d8a0ef31fd6475245454e53',
GIMBAL:
'2b0a04a7b60132b1805b296c7fcb3b217ff14413991bf76f72663c3067696d62616c',
SUNDAE:
'9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d7753554e444145',
GREENS:
'4623ab311b7d982d8d26fcbe1a9439ca56661aafcdcd8d8a0ef31fd6475245454e53',
GENS: 'dda5fdb1002f7389b33e036b6afee82a8189becb6cba852e8b79b4fb0014df1047454e53',
SOCIETY: '25f0fc240e91bd95dcdaebd2ba7713fc5168ac77234a3d79449fc20c534f4349455459',
SOCIETY:
'25f0fc240e91bd95dcdaebd2ba7713fc5168ac77234a3d79449fc20c534f4349455459',
DJED: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd61446a65644d6963726f555344',
SHEN: '8db269c3ec630e06ae29f74bc39edd1f87c819f1056206e879a1cd615368656e4d6963726f555344',
WMT: '1d7f33bd23d85e1a25d87d86fac4f199c3197a2f7afeb662a0f34e1e776f726c646d6f62696c65746f6b656e',
COPI: 'b6a7467ea1deb012808ef4e87b5ff371e85f7142d7b356a40d9b42a0436f726e75636f70696173205b76696120436861696e506f72742e696f5d',
};

export const SUPPORTED_WALLETS = [
'begin', 'eternl', 'flint', 'lace', 'nami', 'nufi', 'gerowallet', 'typhoncip30', 'vespr', 'yoroi'
'begin',
'eternl',
'flint',
'lace',
'nami',
'nufi',
'gerowallet',
'typhoncip30',
'vespr',
'yoroi',
];
2 changes: 1 addition & 1 deletion packages/module/src/common/contracts/evaluator.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Action } from '@mesh/common/types';
import { Action } from '@mesh/types';

export interface IEvaluator {
evaluateTx(tx: string): Promise<Omit<Action, 'data'>[]>;
Expand Down
2 changes: 1 addition & 1 deletion packages/module/src/common/contracts/fetcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import type {
Protocol,
TransactionInfo,
UTxO,
} from '@mesh/common/types';
} from '@mesh/types';

/**
* Fetcher interface defines end points to query blockchain data.
Expand Down
2 changes: 1 addition & 1 deletion packages/module/src/common/contracts/signer.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { DataSignature } from '@mesh/common/types';
import { DataSignature } from '@mesh/types';

export interface ISigner {
signData(address: string, payload: string): SometimesPromise<DataSignature>;
Expand Down
2 changes: 2 additions & 0 deletions packages/module/src/common/data/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './mesh';
export * from './plutus';
43 changes: 43 additions & 0 deletions packages/module/src/common/data/mesh.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { Data } from '@mesh/types';

export const mConStr = <T extends Data[]>(
alternative: number,
fields: T
): Data => ({
alternative,
fields,
});

export const mConStr0 = <T extends Data[]>(fields: T): Data => ({
alternative: 0,
fields,
});

export const mConStr1 = <T extends Data[]>(fields: T): Data => ({
alternative: 1,
fields,
});

export const mConStr2 = <T extends Data[]>(fields: T): Data => ({
alternative: 2,
fields,
});

export const mMaybeStakingHash = (stakeCredential: string): Data => {
if (stakeCredential === '') {
return mConStr1<[]>([]);
}
return mConStr0([mConStr0([mConStr0([stakeCredential])])]);
};

export const mPubKeyAddress = (bytes: string, stakeCredential?: string): Data =>
mConStr0([
{ alternative: 0, fields: [bytes] },
mMaybeStakingHash(stakeCredential || ''),
]);

export const mScriptAddress = (bytes: string, stakeCredential?: string): Data =>
mConStr0([
{ alternative: 1, fields: [bytes] },
mMaybeStakingHash(stakeCredential || ''),
]);
121 changes: 121 additions & 0 deletions packages/module/src/common/data/plutus.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
import { Asset } from '@meshsdk/core';
import {
value,
Value,
dict,
BuiltinByteString,
Integer,
builtinByteString,
integer,
Dict,
parsePlutusValueToAssets,
} from './';

describe('Plutus data type', () => {
describe('Value', () => {
test('Simple ADA Value', () => {
const val: Asset[] = [{ unit: 'lovelace', quantity: '1000000' }];
const datum: Value = value(val);

const nameMap = dict<BuiltinByteString, Integer>([
[builtinByteString(''), integer(1000000)],
]);
const valMap = dict<BuiltinByteString, Dict<BuiltinByteString, Integer>>([
[builtinByteString(''), nameMap],
]);
expect(JSON.stringify(datum)).toBe(JSON.stringify(valMap));
});
test('Simple token Value', () => {
const val: Asset[] = [
{
unit: 'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc8170074657374696e676e657777616c2e616461',
quantity: '345',
},
];
const datum: Value = value(val);

const nameMap = dict<BuiltinByteString, Integer>([
[builtinByteString('74657374696e676e657777616c2e616461'), integer(345)],
]);
const valMap = dict<BuiltinByteString, Dict<BuiltinByteString, Integer>>([
[
builtinByteString(
'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc81700'
),
nameMap,
],
]);
expect(JSON.stringify(datum)).toBe(JSON.stringify(valMap));
});
test('Complex Value', () => {
const val: Asset[] = [
{ unit: 'lovelace', quantity: '1000000' },
{
unit: 'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc8170074657374696e676e657777616c2e616461',
quantity: '345',
},
{
unit: 'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc817001234',
quantity: '567',
},
];
const datum: Value = value(val);

const nameMap = dict<BuiltinByteString, Integer>([
[builtinByteString('1234'), integer(567)],
[builtinByteString('74657374696e676e657777616c2e616461'), integer(345)],
]);
const valMap = dict<BuiltinByteString, Dict<BuiltinByteString, Integer>>([
[
builtinByteString(''),
dict([[builtinByteString(''), integer(1000000)]]),
],
[
builtinByteString(
'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc81700'
),
nameMap,
],
]);
expect(JSON.stringify(datum)).toBe(JSON.stringify(valMap));
});
});
});

describe('Value', () => {
test('Simple ADA Value', () => {
const val: Asset[] = [{ unit: 'lovelace', quantity: '1000000' }];
const plutusValue: Value = value(val);
const assets: Asset[] = parsePlutusValueToAssets(plutusValue);

expect(JSON.stringify(val)).toBe(JSON.stringify(assets));
});
test('Simple token Value', () => {
const val: Asset[] = [
{
unit: 'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc8170074657374696e676e657777616c2e616461',
quantity: '345',
},
];
const plutusValue: Value = value(val);
const assets: Asset[] = parsePlutusValueToAssets(plutusValue);

expect(JSON.stringify(val)).toBe(JSON.stringify(assets));
});
test('Complex Value', () => {
const val: Asset[] = [
{ unit: 'lovelace', quantity: '1000000' },
{
unit: 'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc817001234',
quantity: '567',
},
{
unit: 'baefdc6c5b191be372a794cd8d40d839ec0dbdd3c28957267dc8170074657374696e676e657777616c2e616461',
quantity: '345',
},
];
const plutusValue: Value = value(val);
const assets: Asset[] = parsePlutusValueToAssets(plutusValue);
expect(JSON.stringify(val)).toBe(JSON.stringify(assets));
});
});
Loading

0 comments on commit aa60752

Please sign in to comment.