diff --git a/scripts/coordinator/build.sh b/scripts/coordinator/build.sh index 1556d587..90db4704 100755 --- a/scripts/coordinator/build.sh +++ b/scripts/coordinator/build.sh @@ -26,15 +26,10 @@ cd ../.. echo "Copying coordinator ..." rsync -av --exclude=${DOCKER_DATA_DIR} --exclude=node_modules ./ ./$DOCKER_DATA_DIR/coordinator -# QR_COMMIT=$(git log -1 --format='%H') -# QR_VERSION=$(git describe --tags | sed 's/^v//') - -# LD_FLAGS="-X github.com/hadronlabs-org/neutron-query-relayer-cli/internal/app.Version=$QR_VERSION -X github.com/hadronlabs-org/neutron-query-relayer-cli/internal/app.Commit=$QR_COMMIT" - -BUILDING_ARCH="linux/arm64" +BUILDING_ARCHS="linux/arm64" if [ "$(uname -m)" = "x86_64" ]; then - BUILDING_ARCHS="$BUILDING_ARCH,linux/amd64" + BUILDING_ARCHS="$BUILDING_ARCHS,linux/amd64" fi -# --platform linux/amd64,linux/arm64 -docker build --platform $BUILDING_ARCH -t dropprotocol/coordinator . + +docker buildx build --platform $BUILDING_ARCHS --push -t dropprotocol/coordinator:1.1.2 . rm -rf $DOCKER_DATA_DIR \ No newline at end of file diff --git a/scripts/coordinator/package.json b/scripts/coordinator/package.json index 3858fd28..3a12327a 100644 --- a/scripts/coordinator/package.json +++ b/scripts/coordinator/package.json @@ -6,6 +6,7 @@ "build": "tsc", "start": "node dist/index.js", "dev": "ts-node src/service.ts", + "initia": "ts-node src/try-initia-query.ts", "lint": "eslint 'src/**/*.{js,ts}'", "lint:fix": "eslint 'src/**/*.{js,ts}' --fix", "format": "prettier --write 'src/**/*.{js,ts,json,css,md}'" @@ -39,4 +40,4 @@ "ts-node": "^10.9.2", "typescript": "^5.4.2" } -} \ No newline at end of file +} diff --git a/scripts/coordinator/src/modules/move-liquidity-provider/index.ts b/scripts/coordinator/src/modules/move-liquidity-provider/index.ts index d32a0011..fda0976c 100644 --- a/scripts/coordinator/src/modules/move-liquidity-provider/index.ts +++ b/scripts/coordinator/src/modules/move-liquidity-provider/index.ts @@ -9,16 +9,20 @@ import { import { MoveLiquidityProviderConfig } from './types/config'; import { Context } from '../../types/Context'; import pino from 'pino'; +import { fromHex, toBech32 } from '@cosmjs/encoding'; export class MoveLiquidityProviderModule extends ManagerModule { + lcd: LCDClient; + constructor( private context: Context, private log: pino.Logger, lpModuleAddress: string, lpModuleObject: string, + minAmountToProvide: bigint, ) { super(); - const lcd = new LCDClient(context.config.target.rest, { + this.lcd = new LCDClient(context.config.target.rest, { chainId: context.config.target.chainId, gasPrices: context.config.target.gasPrice.toString(), gasAdjustment: context.config.target.gasAdjustment, @@ -26,12 +30,12 @@ export class MoveLiquidityProviderModule extends ManagerModule { const key = new MnemonicKey({ mnemonic: context.config.coordinator.mnemonic, }); - const wallet = new Wallet(lcd, key); + const wallet = new Wallet(this.lcd, key); this._config = { - lcd, wallet, moduleAddress: lpModuleAddress, moduleObject: lpModuleObject, + minAmountToProvide, }; } @@ -43,6 +47,23 @@ export class MoveLiquidityProviderModule extends ManagerModule { async run(): Promise { this._lastRun = Date.now(); + const bech32Address = toBech32( + 'init', + fromHex(this.config.moduleObject.substring(2)), + ); + + const coin = await this.lcd.bank.balanceByDenom(bech32Address, 'uinit'); + + const amount = BigInt(coin?.amount || '0'); + + if (amount < this.config.minAmountToProvide) { + this.log.info( + `uInit amount is less than min amount to provide: ${amount} < ${this.config.minAmountToProvide}`, + ); + + return; + } + const msg = new MsgExecute( this.config.wallet.key.accAddress, this.config.moduleAddress, @@ -55,7 +76,7 @@ export class MoveLiquidityProviderModule extends ManagerModule { msgs: [msg], memo: 'sample memo', }); - const broadcastResult = await this.config.lcd.tx.broadcast(signedTx); + const broadcastResult = await this.lcd.tx.broadcast(signedTx); this.log.info( `Move LP module tx broadcast result: ${JSON.stringify(broadcastResult)}`, ); diff --git a/scripts/coordinator/src/modules/move-liquidity-provider/types/config.ts b/scripts/coordinator/src/modules/move-liquidity-provider/types/config.ts index d7ef342b..6e4f8fe0 100644 --- a/scripts/coordinator/src/modules/move-liquidity-provider/types/config.ts +++ b/scripts/coordinator/src/modules/move-liquidity-provider/types/config.ts @@ -1,8 +1,8 @@ -import { LCDClient, Wallet } from '@initia/initia.js'; +import { Wallet } from '@initia/initia.js'; export type MoveLiquidityProviderConfig = { - lcd: LCDClient; wallet: Wallet; moduleAddress: string; moduleObject: string; + minAmountToProvide: bigint; }; diff --git a/scripts/coordinator/src/service.ts b/scripts/coordinator/src/service.ts index 736ed9e2..0f919bc4 100644 --- a/scripts/coordinator/src/service.ts +++ b/scripts/coordinator/src/service.ts @@ -237,6 +237,7 @@ class Service { logger.child({ context: 'MoveLiquidityProviderModule' }), process.env.INITIA_LP_MODULE_ADDRESS, process.env.INITIA_LP_MODULE_OBJECT, + BigInt(process.env.INITIA_LP_MIN_AMOUNT_TO_PROVIDE || '20000000'), ), ); } diff --git a/scripts/coordinator/src/try-initia-query.ts b/scripts/coordinator/src/try-initia-query.ts new file mode 100644 index 00000000..0376776b --- /dev/null +++ b/scripts/coordinator/src/try-initia-query.ts @@ -0,0 +1,26 @@ +import { fromHex, toBech32 } from '@cosmjs/encoding'; +import { LCDClient, MnemonicKey, Wallet } from '@initia/initia.js'; + +async function main() { + const lcd = new LCDClient('https://rest-kyrthos.interwoven-1.ntrn.tech:443', { + chainId: 'interwoven-1', + gasPrices: '0.15uinit', + gasAdjustment: '2', + }); + const key = new MnemonicKey({ + mnemonic: + 'object stove check bronze enable audit build craft heavy mobile fantasy robust pond talent box animal drip spell current kidney truck dragon pig illness', + }); + const wallet = new Wallet(lcd, key); + + const lpModuleObject = + '0x2ecfb78e44ae0b898d8ffbae7c5c0ff9a776ca61dd3514353c6339321d08dac4'; + + const bech32Address = toBech32('init', fromHex(lpModuleObject.substring(2))); + console.log(`bech32Address: ${bech32Address}`); + + const coin = await lcd.bank.balanceByDenom(bech32Address, 'uinit'); + console.log(`coin: ${JSON.stringify(coin)}`); +} + +main();