Ver Fonte

Clean up create price feed scripts and use contract manager

Amin Moghaddam há 2 anos atrás
pai
commit
78e1393b9d

+ 2 - 0
contract_manager/.gitignore

@@ -0,0 +1,2 @@
+node_modules/
+lib/

+ 3 - 2
contract_manager/package.json

@@ -3,9 +3,10 @@
   "version": "1.0.0",
   "description": "Set of tools to manage pyth contracts",
   "private": true,
-  "main": "index.js",
+  "main": "src/index.ts",
   "scripts": {
-    "shell": "ts-node ./src/shell.ts"
+    "shell": "ts-node ./src/shell.ts",
+    "build": "tsc"
   },
   "author": "",
   "license": "Apache-2.0",

+ 8 - 0
contract_manager/src/index.ts

@@ -0,0 +1,8 @@
+export * from "./store";
+export * from "./entities";
+export * from "./chains";
+export * from "./aptos";
+export * from "./sui";
+export * from "./cosmwasm";
+export * from "./evm";
+export * from "./base";

+ 27 - 0
contract_manager/src/sui.ts

@@ -209,6 +209,33 @@ export class SuiContract extends Contract {
     return this.executeTransaction(tx, keypair);
   }
 
+  async executeCreatePriceFeeds(keypair: Ed25519Keypair, vaa: Buffer) {
+    const packageId = await this.getPythPackageId();
+    const wormholePackageId = await this.getWormholePackageId();
+    const tx = new TransactionBlock();
+    let [verifiedVaa] = tx.moveCall({
+      target: `${wormholePackageId}::vaa::parse_and_verify`,
+      arguments: [
+        tx.object(this.wormholeStateId),
+        tx.pure(Array.from(vaa)),
+        tx.object(SUI_CLOCK_OBJECT_ID),
+      ],
+    });
+
+    tx.moveCall({
+      target: `${packageId}::pyth::create_price_feeds`,
+      arguments: [
+        tx.object(this.stateId),
+        tx.makeMoveVec({
+          type: `${wormholePackageId}::vaa::VAA`,
+          objects: [verifiedVaa],
+        }),
+        tx.object(SUI_CLOCK_OBJECT_ID),
+      ],
+    });
+    return this.executeTransaction(tx, keypair);
+  }
+
   /**
    * Utility function to get the decree receipt object for a VAA that can be
    * used to authorize a governance instruction.

+ 2 - 16
contract_manager/src/test.ts

@@ -1,18 +1,4 @@
-import {
-  Vault,
-  Contracts,
-  Vaults,
-  loadHotWallet,
-  WormholeEmitter,
-  SubmittedWormholeMessage,
-} from "./entities";
-import { SuiContract } from "./sui";
-import { CosmWasmContract } from "./cosmwasm";
-import { Ed25519Keypair, RawSigner } from "@mysten/sui.js";
 import { DefaultStore } from "./store";
-import { Chains } from "./chains";
-import { executeProposal } from "xc_admin_common";
-import { EVMContract } from "./evm";
 
 async function test() {
   // Deploy the same cosmwasm code with different config
@@ -26,12 +12,12 @@ async function test() {
   // console.log(await CosmWasmContract.deploy(c.chain, await c.getCodeId(), config, mnemonic));
 
   let s = DefaultStore;
-  Object.values(Contracts).forEach((c) => {
+  Object.values(DefaultStore.contracts).forEach((c) => {
     console.log(c);
     s.save(c);
   });
 
-  Object.values(Chains).forEach((c) => {
+  Object.values(DefaultStore.chains).forEach((c) => {
     console.log(c);
     s.save(c);
   });

Diff do ficheiro suprimidas por serem muito extensas
+ 1550 - 852
package-lock.json


+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "target_chains/aptos/sdk/js",
     "target_chains/cosmwasm/sdk/js",
     "target_chains/cosmwasm/tools",
+    "target_chains/sui/scripts",
     "target_chains/ethereum/contracts",
     "target_chains/ethereum/sdk/js",
     "target_chains/ethereum/sdk/solidity",

+ 41 - 96
target_chains/sui/scripts/pyth/create_all_price_feeds.ts

@@ -1,118 +1,63 @@
-/// We build a programmable txn to create all price feeds.
-import dotenv from "dotenv";
-import axios from "axios";
 import { PriceServiceConnection } from "@pythnetwork/price-service-client";
 import * as _ from "lodash";
-import {
-  RawSigner,
-  SUI_CLOCK_OBJECT_ID,
-  TransactionBlock,
-  JsonRpcProvider,
-  Ed25519Keypair,
-  Connection,
-} from "@mysten/sui.js";
+import { Ed25519Keypair } from "@mysten/sui.js";
 
-dotenv.config({ path: "~/.env" });
+import { DefaultStore, SuiContract } from "@pythnetwork/pyth-contract-manager";
 
-import { REGISTRY, NETWORK } from "../registry";
+import yargs from "yargs";
+import { hideBin } from "yargs/helpers";
 
-// ================== Network dependent settings ==================
-let network = NETWORK.MAINNET; // <= NOTE: Update this when changing network
-const walletPrivateKey = process.env.SUI_MAINNET; // <= NOTE: Update this when changing network
-const price_feed_id_url = "https://xc-mainnet.pyth.network/api/price_feed_ids"; // <= NOTE: Update this when changing network
-const connection = new PriceServiceConnection(
-  "https://xc-mainnet.pyth.network", // <= NOTE: Update this when changing network
-  {
-    priceFeedRequestConfig: {
-      binary: true,
+const parser = yargs(hideBin(process.argv))
+  .scriptName("create_all_price_feeds.ts")
+  .usage("Usage: $0 --contract <contract_id> --private-key <private_key>")
+  .options({
+    contract: {
+      type: "string",
+      demandOption: true,
+      desc: "Contract id to update",
     },
-  }
-);
-// ================================================================
-
-const registry = REGISTRY[network];
-const provider = new JsonRpcProvider(
-  new Connection({ fullnode: registry["RPC_URL"] })
-);
+    "private-key": {
+      type: "string",
+      demandOption: true,
+      desc: "Private key of the transaction signer in hex format without leading 0x",
+    },
+  });
 
 async function main() {
-  if (walletPrivateKey === undefined) {
-    throw new Error("Wallet key unset in environment");
-  }
-  const wallet = new RawSigner(
-    Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
-    provider
+  const argv = await parser.argv;
+  const contract = DefaultStore.contracts[argv.contract] as SuiContract;
+  const walletPrivateKey = argv["private-key"];
+  const endpoint =
+    contract.chain.getId() === "sui_mainnet"
+      ? "https://xc-mainnet.pyth.network"
+      : "https://xc-testnet.pyth.network";
+  const connection = new PriceServiceConnection(endpoint, {
+    priceFeedRequestConfig: {
+      binary: true,
+    },
+  });
+  const keypair = Ed25519Keypair.fromSecretKey(
+    Buffer.from(walletPrivateKey, "hex")
   );
-  console.log("wallet address: ", wallet.getAddress());
+  console.log("wallet address: ", keypair.getPublicKey().toSuiAddress());
 
   // Fetch all price IDs
-  let { data } = await axios.get(price_feed_id_url);
-  const price_feed_ids = data;
+  const price_feed_ids = await connection.getPriceFeedIds();
   console.log("num price feed ids: ", price_feed_ids.length);
 
   // Create price feeds 20 at a time
   for (let chunk of _.chunk(price_feed_ids, 20)) {
-    //@ts-ignore
     const priceFeedVAAs = await connection.getLatestVaas(chunk);
     console.log("price feed VAAs len: ", priceFeedVAAs.length);
     console.log("sample vaa: ", priceFeedVAAs[0]);
-    await create_price_feeds(wallet, registry, priceFeedVAAs);
+    for (let vaa of priceFeedVAAs) {
+      const result = await contract.executeCreatePriceFeeds(
+        keypair,
+        Buffer.from(vaa, "base64")
+      );
+      console.log(result);
+    }
   }
 }
 
 main();
-
-async function create_price_feeds(
-  signer: RawSigner,
-  registry: any,
-  priceFeedVAAs: Array<string>
-) {
-  let PYTH_PACKAGE = registry["PYTH_PACKAGE_ID"];
-  let PYTH_STATE = registry["PYTH_STATE_ID"];
-  let WORM_PACKAGE = registry["WORMHOLE_PACKAGE_ID"];
-  let WORM_STATE = registry["WORMHOLE_STATE_ID"];
-  console.log("PYTH_PACKAGE: ", PYTH_PACKAGE);
-  console.log("PYTH_STATE: ", PYTH_STATE);
-  console.log("WORM_PACKAGE: ", WORM_PACKAGE);
-  console.log("WORM_STATE: ", WORM_STATE);
-  console.log("SUI_CLOCK_OBJECT_ID: ", SUI_CLOCK_OBJECT_ID);
-
-  for (let vaa of priceFeedVAAs) {
-    const tx = new TransactionBlock();
-
-    let [verified_vaa] = tx.moveCall({
-      target: `${WORM_PACKAGE}::vaa::parse_and_verify`,
-      arguments: [
-        tx.object(WORM_STATE),
-        tx.pure([...Buffer.from(vaa, "base64")]),
-        tx.object(SUI_CLOCK_OBJECT_ID),
-      ],
-    });
-
-    tx.moveCall({
-      target: `${PYTH_PACKAGE}::pyth::create_price_feeds`,
-      arguments: [
-        tx.object(PYTH_STATE),
-        tx.makeMoveVec({
-          type: `${WORM_PACKAGE}::vaa::VAA`,
-          objects: [verified_vaa],
-        }),
-        tx.object(SUI_CLOCK_OBJECT_ID),
-      ],
-    });
-
-    tx.setGasBudget(2000000000);
-
-    let result = await signer.signAndExecuteTransactionBlock({
-      transactionBlock: tx,
-      options: {
-        showInput: true,
-        showEffects: true,
-        showEvents: true,
-        showObjectChanges: true,
-        showBalanceChanges: true,
-      },
-    });
-    console.log(result);
-  }
-}

+ 39 - 93
target_chains/sui/scripts/pyth/create_price_feed.ts

@@ -1,99 +1,45 @@
-/// We build a programmable txn to create a price feed.
-import dotenv from "dotenv";
-
-import {
-  RawSigner,
-  SUI_CLOCK_OBJECT_ID,
-  TransactionBlock,
-  JsonRpcProvider,
-  Ed25519Keypair,
-  Connection,
-} from "@mysten/sui.js";
-
-dotenv.config({ path: "~/.env" });
-
-import { REGISTRY, NETWORK } from "../registry";
-
-// ================== Network dependent settings ==================
-let network = NETWORK.TESTNET; // <= NOTE: Update this when changing network
-const walletPrivateKey = process.env.SUI_TESTNET_BASE_64; // <= NOTE: Update this when changing network
-// ================================================================
-
-const registry = REGISTRY[network];
-const provider = new JsonRpcProvider(
-  new Connection({ fullnode: registry["RPC_URL"] })
-);
+import { Ed25519Keypair } from "@mysten/sui.js";
+import yargs from "yargs";
+import { hideBin } from "yargs/helpers";
+import { DefaultStore, SuiContract } from "@pythnetwork/pyth-contract-manager";
+
+const parser = yargs(hideBin(process.argv))
+  .scriptName("create_price_feed.ts")
+  .usage(
+    "Usage: $0 --contract <contract_id> --private-key <private_key> --vaa <vaa>"
+  )
+  .options({
+    contract: {
+      type: "string",
+      demandOption: true,
+      desc: "Contract id to update",
+    },
+    "private-key": {
+      type: "string",
+      demandOption: true,
+      desc: "Private key of the transaction signer in hex format without leading 0x",
+    },
+    vaa: {
+      type: "string",
+      demandOption: true,
+      desc: "The price feed vaa to submit to the contract in base64 format",
+    },
+  });
 
 async function main() {
-  if (walletPrivateKey === undefined) {
-    throw new Error("SUI_TESTNET unset in environment");
-  }
-  const wallet = new RawSigner(
-    Ed25519Keypair.fromSecretKey(
-      network == "MAINNET"
-        ? Buffer.from(walletPrivateKey, "hex")
-        : Buffer.from(walletPrivateKey, "base64").subarray(1)
-    ),
-    provider
+  const argv = await parser.argv;
+  const contract = DefaultStore.contracts[argv.contract] as SuiContract;
+  const walletPrivateKey = argv["private-key"];
+
+  const keypair = Ed25519Keypair.fromSecretKey(
+    Buffer.from(walletPrivateKey, "hex")
+  );
+  console.log("wallet address: ", keypair.getPublicKey().toSuiAddress());
+  const result = await contract.executeCreatePriceFeeds(
+    keypair,
+    Buffer.from(argv.vaa, "base64")
   );
-  console.log(wallet.getAddress());
-  const vaa_bytes =
-    "AQAAAAABAMN885gNTVEako6fczJq22AOFSRWdUsUOxPQVHSnxhj3ecU2gJVDBlAcY6G9FWmGCcGcdZ/5iVXQCm+0loHvfqwAZE/kXQAAAAAAGqJ4OdZBsHdDwMtfaMUfjNMdLAdivsANxvzSVDPvGrW2AAAAAADugxEBUDJXSAADAAEAAQIABQCdWnl7akEQMaEEfYaw/fhuJFW+jn/vFq7yPbIJcj2vlB9hIm05vuoZ0zTxfC/rzifhJkbYRnWSTrsCuc2upocn4wAAAABBxD4gAAAAAAAJ2WD////4AAAAAEIrzm4AAAAAAAn/ewEAAAABAAAAAgAAAABkT+RdAAAAAGRP5F0AAAAAZE/kXAAAAABBxC0/AAAAAAAJi/EAAAAAZE/kXLWIXWbTUV6YNI7DMlk7XRbg/bhT77Ye1dzAvPgOkWCB11ZqO6f3KG7VT0rn6YP0QgrgseDziS4R+cSrEHu617kAAAAAZCplIAAAAAAAEu4I////+AAAAABkvzOKAAAAAAAQZDgBAAAAAQAAAAIAAAAAZE/kXQAAAABkT+RdAAAAAGRP5FwAAAAAZCplIAAAAAAAFIotAAAAAGRP5Fw3+21L/xkSgKfP+Av17aeofBUakdmoW6So+OLPlX5BjbMn2c8OzXk6F1+nCsjS3BCdRGJ1jlVpYsSoewLsTz8VAAAAAC1gXb0AAAAAAAdkLv////gAAAAALZa00gAAAAAABpwgAQAAAAEAAAACAAAAAGRP5F0AAAAAZE/kXQAAAABkT+RcAAAAAC1gXb0AAAAAAAdkLgAAAABkT+RcHNsaXh40VtKXfuDT1wdlI58IpChVuVCP1HnhXG3E0f7s9VN3DZsQll+Ptkdx6T9WkKGC7cMr5KMjbgyqpuBYGgAAAAewLri2AAAAAAEnq0n////4AAAAB7uEHmgAAAAAAV8hnAEAAAABAAAAAgAAAABkT+RdAAAAAGRP5F0AAAAAZE/kXAAAAAewBz2PAAAAAAE4kisAAAAAZE/kXGogZxwOP4yyGc4/RuWuCWpPL9+TbSvU2okl9wCH1R3YMAKUeVmHlykONjihcSwpveI2fQ7KeU93iyW1pHLxkt4AAAACtJQuKQAAAAAAn4lX////+AAAAAK3aIHUAAAAAACmrg4BAAAAAQAAAAIAAAAAZE/kXQAAAABkT+RdAAAAAGRP5FwAAAACtJOhZQAAAAAAnAlPAAAAAGRP5Fw=";
-  create_price_feeds(wallet, registry, vaa_bytes);
+  console.log(result);
 }
 
 main();
-
-async function create_price_feeds(
-  signer: RawSigner,
-  registry: any,
-  vaa_bytes: string
-) {
-  const tx = new TransactionBlock();
-
-  let PYTH_PACKAGE = registry["PYTH_PACKAGE_ID"];
-  let PYTH_STATE = registry["PYTH_STATE_ID"];
-  let WORM_PACKAGE = registry["WORMHOLE_PACKAGE_ID"];
-  let WORM_STATE = registry["WORMHOLE_STATE_ID"];
-  console.log("PYTH_PACKAGE: ", PYTH_PACKAGE);
-  console.log("PYTH_STATE: ", PYTH_STATE);
-  console.log("WORM_PACKAGE: ", WORM_PACKAGE);
-  console.log("WORM_STATE: ", WORM_STATE);
-  console.log("SUI_CLOCK_OBJECT_ID: ", SUI_CLOCK_OBJECT_ID);
-
-  let [verified_vaa] = tx.moveCall({
-    target: `${WORM_PACKAGE}::vaa::parse_and_verify`,
-    arguments: [
-      tx.object(WORM_STATE),
-      tx.pure([...Buffer.from(vaa_bytes, "base64")]),
-      tx.object(SUI_CLOCK_OBJECT_ID),
-    ],
-  });
-
-  tx.moveCall({
-    target: `${PYTH_PACKAGE}::pyth::create_price_feeds`,
-    arguments: [
-      tx.object(PYTH_STATE),
-      tx.makeMoveVec({
-        type: `${WORM_PACKAGE}::vaa::VAA`,
-        objects: [verified_vaa],
-      }), // has type vector<VAA>,
-      tx.object(SUI_CLOCK_OBJECT_ID),
-    ],
-  });
-
-  tx.setGasBudget(2000000000);
-
-  let result = await signer.signAndExecuteTransactionBlock({
-    transactionBlock: tx,
-    options: {
-      showInput: true,
-      showEffects: true,
-      showEvents: true,
-      showObjectChanges: true,
-      showBalanceChanges: true,
-    },
-  });
-  console.log(result);
-  return result;
-}

+ 23 - 9
target_chains/sui/scripts/pyth/get_price_info_object_ids.ts

@@ -1,16 +1,30 @@
 import { Connection, JsonRpcProvider } from "@mysten/sui.js";
+import yargs from "yargs";
+import { hideBin } from "yargs/helpers";
+import {
+  DefaultStore,
+  SuiContract,
+} from "@pythnetwork/pyth-contract-manager/lib";
 
-// ================== Network dependent settings ==================
-const provider = new JsonRpcProvider(
-  new Connection({ fullnode: "https://fullnode.mainnet.sui.io:443" }) // <= NOTE: Update this when changing network
-);
-const objectId =
-  "0x14b4697477d24c30c8eecc31dd1bd49a3115a9fe0db6bd4fd570cf14640b79a0"; // <= NOTE: Update this when changing network AND with new deployment
-// ================================================================
-
+const parser = yargs(hideBin(process.argv))
+  .scriptName("get_price_info_object_ids.ts")
+  .usage("Usage: $0 --contract <contract_id>")
+  .options({
+    contract: {
+      type: "string",
+      demandOption: true,
+      desc: "Contract id",
+    },
+  });
 async function main() {
-  // Table of Sui Pyth PriceIdentifier => Price Info Object IDs
+  const argv = await parser.argv;
+  const contract = DefaultStore.contracts[argv.contract] as SuiContract;
+  const provider = new JsonRpcProvider(
+    new Connection({ fullnode: contract.chain.rpcUrl })
+  );
+  const objectId = await contract.getPriceTableId();
 
+  // Table of Sui Pyth PriceIdentifier => Price Info Object IDs
   let nextCursor;
   let hasNextPage = false;
   let map = new Map<string, string>();

+ 0 - 130
target_chains/sui/scripts/pyth/pyth_create_all_price_feeds.ts

@@ -1,130 +0,0 @@
-/// We build a programmable txn to create all price feeds.
-import dotenv from "dotenv";
-import axios from "axios";
-import { PriceServiceConnection } from "@pythnetwork/price-service-client";
-
-import {
-  RawSigner,
-  SUI_CLOCK_OBJECT_ID,
-  TransactionBlock,
-  JsonRpcProvider,
-  Ed25519Keypair,
-  Connection,
-} from "@mysten/sui.js";
-
-dotenv.config({ path: "~/.env" });
-
-import { REGISTRY, NETWORK } from "../registry";
-
-// Network dependent settings.
-let network = NETWORK.MAINNET; // <= NOTE: Update this when changing network
-const walletPrivateKey = process.env.SUI_MAINNET; // <= NOTE: Update this when changing network
-
-const registry = REGISTRY[network];
-const provider = new JsonRpcProvider(
-  new Connection({ fullnode: registry["RPC_URL"] })
-);
-
-const connection = new PriceServiceConnection(
-  "https://xc-mainnet.pyth.network",
-  {
-    priceFeedRequestConfig: {
-      binary: true,
-    },
-  }
-);
-
-async function main() {
-  if (walletPrivateKey === undefined) {
-    throw new Error("SUI_MAINNET unset in environment");
-  }
-  const wallet = new RawSigner(
-    Ed25519Keypair.fromSecretKey(Buffer.from(walletPrivateKey, "hex")),
-    provider
-  );
-  console.log("wallet address: ", wallet.getAddress());
-
-  // Fetch all price IDs
-  let { data } = await axios.get(
-    "https://xc-mainnet.pyth.network/api/price_feed_ids"
-  );
-  const price_feed_ids = data;
-  console.log("num price feed ids: ", price_feed_ids.length);
-
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(0, 20));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(20, 21));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(20, 40));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(40, 60));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(60, 80));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(80, 100));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(100, 120));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(120, 140));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(140, 160));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(160, 180));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(180, 200));
-  //const priceFeedVAAs = await connection.getLatestVaas(price_feed_ids.slice(200, 220));
-  const priceFeedVAAs = await connection.getLatestVaas(
-    price_feed_ids.slice(220, 240)
-  );
-
-  console.log("price feed VAAs len: ", priceFeedVAAs.length);
-
-  create_price_feeds(wallet, registry, priceFeedVAAs);
-}
-
-main();
-
-async function create_price_feeds(
-  signer: RawSigner,
-  registry: any,
-  priceFeedVAAs: Array<string>
-) {
-  let PYTH_PACKAGE = registry["PYTH_PACKAGE_ID"];
-  let PYTH_STATE = registry["PYTH_STATE_ID"];
-  let WORM_PACKAGE = registry["WORMHOLE_PACKAGE_ID"];
-  let WORM_STATE = registry["WORMHOLE_STATE_ID"];
-  console.log("PYTH_PACKAGE: ", PYTH_PACKAGE);
-  console.log("PYTH_STATE: ", PYTH_STATE);
-  console.log("WORM_PACKAGE: ", WORM_PACKAGE);
-  console.log("WORM_STATE: ", WORM_STATE);
-  console.log("SUI_CLOCK_OBJECT_ID: ", SUI_CLOCK_OBJECT_ID);
-
-  for (let vaa of priceFeedVAAs) {
-    const tx = new TransactionBlock();
-
-    let [verified_vaa] = tx.moveCall({
-      target: `${WORM_PACKAGE}::vaa::parse_and_verify`,
-      arguments: [
-        tx.object(WORM_STATE),
-        tx.pure([...Buffer.from(vaa, "base64")]),
-        tx.object(SUI_CLOCK_OBJECT_ID),
-      ],
-    });
-
-    tx.moveCall({
-      target: `${PYTH_PACKAGE}::pyth::create_price_feeds`,
-      arguments: [
-        tx.object(PYTH_STATE),
-        tx.makeMoveVec({
-          type: `${WORM_PACKAGE}::vaa::VAA`,
-          objects: [verified_vaa],
-        }),
-        tx.object(SUI_CLOCK_OBJECT_ID),
-      ],
-    });
-
-    tx.setGasBudget(1000000000);
-
-    let result = await signer.signAndExecuteTransactionBlock({
-      transactionBlock: tx,
-      options: {
-        showInput: true,
-        showEffects: true,
-        showEvents: true,
-        showObjectChanges: true,
-        showBalanceChanges: true,
-      },
-    });
-    console.log(result);
-  }
-}

+ 0 - 98
target_chains/sui/scripts/pyth/pyth_create_price_feed.ts

@@ -1,98 +0,0 @@
-/// We build a programmable txn to create a price feed.
-import dotenv from "dotenv";
-
-import {
-  RawSigner,
-  SUI_CLOCK_OBJECT_ID,
-  TransactionBlock,
-  JsonRpcProvider,
-  Ed25519Keypair,
-  Connection,
-} from "@mysten/sui.js";
-
-dotenv.config({ path: "~/.env" });
-
-import { REGISTRY, NETWORK } from "../registry";
-
-// Network dependent settings.
-let network = NETWORK.TESTNET; // <= NOTE: Update this when changing network
-const walletPrivateKey = process.env.SUI_TESTNET_BASE_64; // <= NOTE: Update this when changing network
-
-const registry = REGISTRY[network];
-const provider = new JsonRpcProvider(
-  new Connection({ fullnode: registry["RPC_URL"] })
-);
-
-async function main() {
-  if (walletPrivateKey === undefined) {
-    throw new Error("SUI_TESTNET unset in environment");
-  }
-  const wallet = new RawSigner(
-    Ed25519Keypair.fromSecretKey(
-      network == "MAINNET"
-        ? Buffer.from(walletPrivateKey, "hex")
-        : Buffer.from(walletPrivateKey, "base64").subarray(1)
-    ),
-    provider
-  );
-  console.log(wallet.getAddress());
-  const vaa_bytes =
-    "AQAAAAABAMN885gNTVEako6fczJq22AOFSRWdUsUOxPQVHSnxhj3ecU2gJVDBlAcY6G9FWmGCcGcdZ/5iVXQCm+0loHvfqwAZE/kXQAAAAAAGqJ4OdZBsHdDwMtfaMUfjNMdLAdivsANxvzSVDPvGrW2AAAAAADugxEBUDJXSAADAAEAAQIABQCdWnl7akEQMaEEfYaw/fhuJFW+jn/vFq7yPbIJcj2vlB9hIm05vuoZ0zTxfC/rzifhJkbYRnWSTrsCuc2upocn4wAAAABBxD4gAAAAAAAJ2WD////4AAAAAEIrzm4AAAAAAAn/ewEAAAABAAAAAgAAAABkT+RdAAAAAGRP5F0AAAAAZE/kXAAAAABBxC0/AAAAAAAJi/EAAAAAZE/kXLWIXWbTUV6YNI7DMlk7XRbg/bhT77Ye1dzAvPgOkWCB11ZqO6f3KG7VT0rn6YP0QgrgseDziS4R+cSrEHu617kAAAAAZCplIAAAAAAAEu4I////+AAAAABkvzOKAAAAAAAQZDgBAAAAAQAAAAIAAAAAZE/kXQAAAABkT+RdAAAAAGRP5FwAAAAAZCplIAAAAAAAFIotAAAAAGRP5Fw3+21L/xkSgKfP+Av17aeofBUakdmoW6So+OLPlX5BjbMn2c8OzXk6F1+nCsjS3BCdRGJ1jlVpYsSoewLsTz8VAAAAAC1gXb0AAAAAAAdkLv////gAAAAALZa00gAAAAAABpwgAQAAAAEAAAACAAAAAGRP5F0AAAAAZE/kXQAAAABkT+RcAAAAAC1gXb0AAAAAAAdkLgAAAABkT+RcHNsaXh40VtKXfuDT1wdlI58IpChVuVCP1HnhXG3E0f7s9VN3DZsQll+Ptkdx6T9WkKGC7cMr5KMjbgyqpuBYGgAAAAewLri2AAAAAAEnq0n////4AAAAB7uEHmgAAAAAAV8hnAEAAAABAAAAAgAAAABkT+RdAAAAAGRP5F0AAAAAZE/kXAAAAAewBz2PAAAAAAE4kisAAAAAZE/kXGogZxwOP4yyGc4/RuWuCWpPL9+TbSvU2okl9wCH1R3YMAKUeVmHlykONjihcSwpveI2fQ7KeU93iyW1pHLxkt4AAAACtJQuKQAAAAAAn4lX////+AAAAAK3aIHUAAAAAACmrg4BAAAAAQAAAAIAAAAAZE/kXQAAAABkT+RdAAAAAGRP5FwAAAACtJOhZQAAAAAAnAlPAAAAAGRP5Fw=";
-  create_price_feeds(wallet, registry, vaa_bytes);
-}
-
-main();
-
-async function create_price_feeds(
-  signer: RawSigner,
-  registry: any,
-  vaa_bytes: string
-) {
-  const tx = new TransactionBlock();
-
-  let PYTH_PACKAGE = registry["PYTH_PACKAGE_ID"];
-  let PYTH_STATE = registry["PYTH_STATE_ID"];
-  let WORM_PACKAGE = registry["WORMHOLE_PACKAGE_ID"];
-  let WORM_STATE = registry["WORMHOLE_STATE_ID"];
-  console.log("PYTH_PACKAGE: ", PYTH_PACKAGE);
-  console.log("PYTH_STATE: ", PYTH_STATE);
-  console.log("WORM_PACKAGE: ", WORM_PACKAGE);
-  console.log("WORM_STATE: ", WORM_STATE);
-  console.log("SUI_CLOCK_OBJECT_ID: ", SUI_CLOCK_OBJECT_ID);
-
-  let [verified_vaa] = tx.moveCall({
-    target: `${WORM_PACKAGE}::vaa::parse_and_verify`,
-    arguments: [
-      tx.object(WORM_STATE),
-      tx.pure([...Buffer.from(vaa_bytes, "base64")]),
-      tx.object(SUI_CLOCK_OBJECT_ID),
-    ],
-  });
-
-  tx.moveCall({
-    target: `${PYTH_PACKAGE}::pyth::create_price_feeds`,
-    arguments: [
-      tx.object(PYTH_STATE),
-      tx.makeMoveVec({
-        type: `${WORM_PACKAGE}::vaa::VAA`,
-        objects: [verified_vaa],
-      }), // has type vector<VAA>,
-      tx.object(SUI_CLOCK_OBJECT_ID),
-    ],
-  });
-
-  tx.setGasBudget(2000000000);
-
-  let result = await signer.signAndExecuteTransactionBlock({
-    transactionBlock: tx,
-    options: {
-      showInput: true,
-      showEffects: true,
-      showEvents: true,
-      showObjectChanges: true,
-      showBalanceChanges: true,
-    },
-  });
-  console.log(result);
-  return result;
-}

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff