diff --git a/README.md b/README.md index 29aa320..1e476fb 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,15 @@ git clone https://github.com/hyperweb-io/hyperweb-boilerplate.git yarn ``` +## Repository overview + +* `src/`: Contains source code for each contract, with each sub-directory as a separate contract. + * `simple-state`: A simple contract to demonstrate state transitions. + * `amm-contract`: An automated market maker contract using the Bank module. +* `scripts/`: Holds the build script to create contract bundles. +* `__tests__/`: Includes test cases to validate contract functionality. +* `dist/`: Output folder for bundled contracts ready for deployment. + ## Quickstart ### Bundle Contracts diff --git a/__tests__/contract2.test.ts b/__tests__/ammContract.test.ts similarity index 99% rename from __tests__/contract2.test.ts rename to __tests__/ammContract.test.ts index e1dc957..00ae684 100644 --- a/__tests__/contract2.test.ts +++ b/__tests__/ammContract.test.ts @@ -73,7 +73,7 @@ describe('Contract 2: AMM contract test', () => { it('instantiate contract', async () => { // Read contract code from external file - const contractPath = path.join(__dirname, '../dist/contracts/bundle2.js'); + const contractPath = path.join(__dirname, '../dist/contracts/ammContract.js'); contractCode = fs.readFileSync(contractPath, 'utf8'); const msg = jsd.jsd.MessageComposer.fromPartial.instantiate({ diff --git a/__tests__/first.test.ts b/__tests__/first.test.ts deleted file mode 100644 index 2715f0a..0000000 --- a/__tests__/first.test.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { join } from 'path'; - -it('works', () => { - console.log('hello test world!' + join('a/d/d/', 'b/c')); -}) diff --git a/__tests__/contract1.test.ts b/__tests__/simpleState.test.ts similarity index 99% rename from __tests__/contract1.test.ts rename to __tests__/simpleState.test.ts index ae14b4e..db463e3 100644 --- a/__tests__/contract1.test.ts +++ b/__tests__/simpleState.test.ts @@ -57,7 +57,7 @@ describe('JSD tests', () => { it('instantiate contract', async () => { // Read contract code from external file - const contractPath = path.join(__dirname, '../dist/contracts/bundle1.js'); + const contractPath = path.join(__dirname, '../dist/contracts/simpleState.js'); contractCode = fs.readFileSync(contractPath, 'utf8'); const msg = jsd.jsd.MessageComposer.fromPartial.instantiate({ diff --git a/dist/contracts/bundle2.js b/dist/contracts/ammContract.js similarity index 96% rename from dist/contracts/bundle2.js rename to dist/contracts/ammContract.js index 15490ed..50bcad2 100644 --- a/dist/contracts/bundle2.js +++ b/dist/contracts/ammContract.js @@ -1,4 +1,4 @@ -// src/contract2/sdk.ts +// src/amm-contract/sdk.ts function useStore(key, defaultValue) { return (state) => [ () => state.get(key) ?? defaultValue, @@ -27,7 +27,7 @@ function useMapping(keys, defaultValue) { ]; } -// src/contract2/amm.ts +// src/amm-contract/amm.ts import { getBalance, sendCoins } from "~bank"; var totalSupply = useStore("totalSupply", 0); var balance = useMapping(["balance", "address"], 0); @@ -162,12 +162,12 @@ var Contract = class { } }; -// src/contract2/index.ts -var contract2_default = Contract; +// src/amm-contract/index.ts +var amm_contract_default = Contract; export { Contract, - contract2_default as default, + amm_contract_default as default, useMapping, useStore }; -//# sourceMappingURL=bundle2.js.map +//# sourceMappingURL=ammContract.js.map diff --git a/dist/contracts/bundle2.js.map b/dist/contracts/ammContract.js.map similarity index 98% rename from dist/contracts/bundle2.js.map rename to dist/contracts/ammContract.js.map index 984e4b5..b224ae0 100644 --- a/dist/contracts/bundle2.js.map +++ b/dist/contracts/ammContract.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../src/contract2/sdk.ts", "../../src/contract2/amm.ts", "../../src/contract2/index.ts"], + "sources": ["../../src/amm-contract/sdk.ts", "../../src/amm-contract/amm.ts", "../../src/amm-contract/index.ts"], "sourcesContent": ["import { MappingStore, State, Store } from \"./types\";\n\nexport function useStore(key: string, defaultValue: ValueType): Store {\n return (state: State) => [\n () => state.get(key) ?? defaultValue,\n (value: ValueType) => state.set(key, value)\n ]\n}\n\nexport function useMapping(keys: string[], defaultValue: ValueType): MappingStore {\n return (state: State) => [\n (...args: Params) => {\n // assert: keys.length === args.length + 1\n const interleavedKey = [keys[0]];\n const pathKeys = keys.slice(1);\n for(let i = 0; i < pathKeys.length; i++) {\n interleavedKey.push(pathKeys[i], args[i]);\n }\n return state.get(interleavedKey.join('/')) ?? defaultValue;\n },\n (...args: [...Params, ValueType]) => {\n const interleavedKey = [keys[0]];\n const pathKeys = keys.slice(1);\n const keyArgs = args.slice(0, -1) as Params;\n for(let i = 0; i < pathKeys.length; i++) {\n interleavedKey.push(pathKeys[i], keyArgs[i]);\n }\n state.set(interleavedKey.join('/'), args[args.length - 1]);\n }\n ]\n}\n", "// @ts-ignore, `~bank` is an internal package\nimport { getBalance, sendCoins } from '~bank';\n\nimport { useMapping, useStore } from './sdk';\nimport { MappingStore, Msg, State, Store } from './types'\n\nconst totalSupply: Store = useStore('totalSupply', 0);\nconst balance: MappingStore<[string], number> = useMapping(['balance', 'address'], 0);\nconst reserves: Store<[number, number]> = useStore('reserves', [0, 0]);\n\nexport class Contract {\n msg: Msg;\n address: string;\n totalSupply;\n setTotalSupply;\n balance; \n setBalance;\n reserves;\n setReserves;\n\n constructor(state: State, {msg, address}: {msg: Msg, address: string}) {\n this.msg = msg;\n this.address = address;\n\n [this.totalSupply, this.setTotalSupply] = totalSupply(state);\n [this.balance, this.setBalance] = balance(state);\n [this.reserves, this.setReserves] = reserves(state);\n }\n\n token0: string = \"uusdc\"; // ibc denom for usdc\n token1: string = \"uatom\"; // ibc denom for atom\n\n getTotalSupply(): number {\n return this.totalSupply();\n }\n\n getBalance(address: string): number {\n return this.balance(address);\n }\n\n getReserves(): [number, number] {\n return this.reserves();\n }\n\n #getBankBalance(address: string, token: string): { amount: number, denom: string } {\n return getBalance(address, token);\n }\n\n #mint(to: string, amount: number) {\n const balance = this.balance(to);\n this.setBalance(to, balance + amount);\n this.setTotalSupply(this.totalSupply() + amount);\n }\n\n #burn(from: string, amount: number) {\n const balance = this.balance(from);\n if (balance < amount) {\n throw Error(\"insufficient balance\");\n }\n this.setBalance(from, balance - amount);\n this.setTotalSupply(this.totalSupply() - amount);\n }\n\n #update(amount0: number, amount1: number) {\n const [reserve0, reserve1] = this.reserves();\n this.setReserves([\n reserve0 + amount0,\n reserve1 + amount1,\n ]);\n }\n\n // swap method adjusted for uusdc and uatom scaling\n swap({tokenIn, amountIn}: {tokenIn: string, amountIn: number}) {\n const isToken0 = tokenIn == this.token0;\n const isToken1 = tokenIn == this.token1;\n\n if (!isToken0 && !isToken1) {\n throw Error(\"invalid token\");\n }\n\n const [reserve0, reserve1] = this.reserves();\n let tokenOut, reserveIn, reserveOut;\n\n [tokenIn, tokenOut, reserveIn, reserveOut] =\n isToken0\n ? [this.token0, this.token1, reserve0, reserve1]\n : [this.token1, this.token0, reserve1, reserve0];\n\n // Adjust amountIn to account for scaling (from uusdc/uatom)\n const adjustedAmountIn = amountIn / 1e6; // Convert back to full tokens\n sendCoins(this.msg.sender, this.address, {\n [tokenIn]: amountIn, // Amount in uusdc/uatom remains unchanged\n });\n\n const amountInWithFee = adjustedAmountIn * 997 / 1000;\n const amountOut = (reserveOut * amountInWithFee) / (reserveIn + amountInWithFee);\n\n sendCoins(this.address, this.msg.sender, {\n [tokenOut]: amountOut * 1e6, // Convert output back to uusdc/uatom\n });\n\n this.#update(\n this.#getBankBalance(this.address, this.token0).amount,\n this.#getBankBalance(this.address, this.token1).amount,\n );\n\n return amountOut * 1e6; // Return result in uusdc/uatom\n }\n\n // addLiquidity method adjusted for uusdc and uatom scaling\n addLiquidity({amount0, amount1}: {amount0: number, amount1: number}) {\n sendCoins(this.msg.sender, this.address, {\n [this.token0]: amount0, // uusdc\n [this.token1]: amount1, // uatom\n });\n\n const [reserve0, reserve1] = this.reserves();\n\n if (reserve0 > 0 || reserve1 > 0) {\n if (reserve0 * (amount1 / 1e6) != reserve1 * (amount0 / 1e6)) {\n throw Error(\"invalid liquidity\");\n }\n }\n\n let shares = 0;\n const adjustedAmount0 = amount0 / 1e6; // Convert to full tokens\n const adjustedAmount1 = amount1 / 1e6; // Convert to full tokens\n\n if (this.totalSupply() > 0) {\n shares = Math.sqrt(adjustedAmount0 * adjustedAmount1);\n } else {\n shares = Math.min(\n (adjustedAmount0 * this.totalSupply()) / reserve0,\n (adjustedAmount1 * this.totalSupply()) / reserve1,\n );\n }\n\n this.#mint(this.msg.sender, shares);\n\n this.#update(\n this.#getBankBalance(this.address, this.token0).amount,\n this.#getBankBalance(this.address, this.token1).amount,\n );\n\n return shares;\n }\n\n // removeLiquidity method adjusted for uusdc and uatom scaling\n removeLiquidity({shares}: {shares: number}) {\n const bal0 = this.#getBankBalance(this.address, this.token0).amount;\n const bal1 = this.#getBankBalance(this.address, this.token1).amount;\n const totalSupply = this.totalSupply();\n\n // Adjust output to uusdc/uatom\n const amount0 = (bal0 * shares / totalSupply) * 1e6;\n const amount1 = (bal1 * shares / totalSupply) * 1e6;\n\n this.#burn(this.msg.sender, shares);\n this.#update(bal0 - amount0 / 1e6, bal1 - amount1 / 1e6);\n\n sendCoins(this.address, this.msg.sender, {\n [this.token0]: amount0, // uusdc\n [this.token1]: amount1, // uatom\n });\n\n return [amount0, amount1]; // Return uusdc/uatom\n }\n}\n", "export * from './amm'\nexport * from './sdk'\nexport * from './types'\n\nimport { Contract } from './amm'\n\nexport default Contract; // need to explicitly export Contract to make it the entry point\n"], - "mappings": "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", + "mappings": "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", "names": ["balance", "totalSupply"] } diff --git a/dist/contracts/bundle1.js b/dist/contracts/simpleState.js similarity index 88% rename from dist/contracts/bundle1.js rename to dist/contracts/simpleState.js index 8bdbfcd..c61cea9 100644 --- a/dist/contracts/bundle1.js +++ b/dist/contracts/simpleState.js @@ -1,4 +1,4 @@ -// src/contract1/index.ts +// src/simple-state/index.ts function reset(state) { const newValue = 0; state.set("value", newValue); @@ -25,4 +25,4 @@ export { read, reset }; -//# sourceMappingURL=bundle1.js.map +//# sourceMappingURL=simpleState.js.map diff --git a/dist/contracts/bundle1.js.map b/dist/contracts/simpleState.js.map similarity index 95% rename from dist/contracts/bundle1.js.map rename to dist/contracts/simpleState.js.map index 52f016b..e049e14 100644 --- a/dist/contracts/bundle1.js.map +++ b/dist/contracts/simpleState.js.map @@ -1,6 +1,6 @@ { "version": 3, - "sources": ["../../src/contract1/index.ts"], + "sources": ["../../src/simple-state/index.ts"], "sourcesContent": ["export interface State {\n get(key: string): string;\n set(key: string, value: any): void;\n}\n\nexport function reset(state: State) {\n const newValue = 0;\n state.set('value', newValue);\n return newValue\n}\nexport function inc(state: State, { x }: { x: number }) {\n const oldValue = Number(state.get('value')) || 0;\n const newValue = oldValue + x;\n state.set('value', newValue);\n return newValue\n}\nexport function dec(state: State, { x }: { x: number }) {\n const oldValue = Number(state.get('value')) || 0;\n const newValue = oldValue - x;\n state.set('value', newValue);\n return newValue\n}\n\nexport function read(state: State) {\n return state.get('value');\n}\n"], "mappings": ";AAKO,SAAS,MAAM,OAAc;AAClC,QAAM,WAAW;AACjB,QAAM,IAAI,SAAS,QAAQ;AAC3B,SAAO;AACT;AACO,SAAS,IAAI,OAAc,EAAE,EAAE,GAAkB;AACtD,QAAM,WAAW,OAAO,MAAM,IAAI,OAAO,CAAC,KAAK;AAC/C,QAAM,WAAW,WAAW;AAC5B,QAAM,IAAI,SAAS,QAAQ;AAC3B,SAAO;AACT;AACO,SAAS,IAAI,OAAc,EAAE,EAAE,GAAkB;AACtD,QAAM,WAAW,OAAO,MAAM,IAAI,OAAO,CAAC,KAAK;AAC/C,QAAM,WAAW,WAAW;AAC5B,QAAM,IAAI,SAAS,QAAQ;AAC3B,SAAO;AACT;AAEO,SAAS,KAAK,OAAc;AACjC,SAAO,MAAM,IAAI,OAAO;AAC1B;", "names": [] diff --git a/scripts/build.ts b/scripts/build.ts index 7e0f717..6411a7e 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -9,13 +9,13 @@ interface BuildConfig { const configs: BuildConfig[] = [ { - entryFile: 'src/contract1/index.ts', - outFile: 'dist/contracts/bundle1.js', + entryFile: 'src/simple-state/index.ts', + outFile: 'dist/contracts/simpleState.js', externalPackages: ['otherpackage', '~somepackage'] }, { - entryFile: 'src/contract2/index.ts', - outFile: 'dist/contracts/bundle2.js', + entryFile: 'src/amm-contract/index.ts', + outFile: 'dist/contracts/ammContract.js', externalPackages: ['~bank'], } ]; diff --git a/src/contract2/amm.ts b/src/amm-contract/amm.ts similarity index 100% rename from src/contract2/amm.ts rename to src/amm-contract/amm.ts diff --git a/src/contract2/index.ts b/src/amm-contract/index.ts similarity index 100% rename from src/contract2/index.ts rename to src/amm-contract/index.ts diff --git a/src/contract2/sdk.ts b/src/amm-contract/sdk.ts similarity index 100% rename from src/contract2/sdk.ts rename to src/amm-contract/sdk.ts diff --git a/src/contract2/types.ts b/src/amm-contract/types.ts similarity index 100% rename from src/contract2/types.ts rename to src/amm-contract/types.ts diff --git a/src/contract1/index.ts b/src/simple-state/index.ts similarity index 100% rename from src/contract1/index.ts rename to src/simple-state/index.ts