deposit.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import 'dotenv/config';
  2. // import axios from "axios";
  3. import { HttpsProxyAgent } from "https-proxy-agent";
  4. import { BuilderConfig } from "@polymarket/builder-signing-sdk";
  5. import { RelayClient } from "@polymarket/builder-relayer-client";
  6. import { createWalletClient, http } from "viem";
  7. import { privateKeyToAccount } from "viem/accounts";
  8. import { polygon } from "viem/chains";
  9. const NODE_HTTP_PROXY = process.env.NODE_HTTP_PROXY;
  10. const proxyAgent = NODE_HTTP_PROXY ? new HttpsProxyAgent(NODE_HTTP_PROXY) : undefined;
  11. // if (NODE_HTTP_PROXY) {
  12. // axios.defaults.proxy = false;
  13. // axios.defaults.httpAgent = proxyAgent;
  14. // axios.defaults.httpsAgent = proxyAgent;
  15. // }
  16. const getRequiredEnv = (key) => {
  17. const value = process.env[key];
  18. if (!value) {
  19. throw new Error(`${key} is required`);
  20. }
  21. return value;
  22. }
  23. const normalizePrivateKey = (privateKey) => {
  24. return privateKey.startsWith("0x") ? privateKey : `0x${privateKey}`;
  25. }
  26. const relayerUrl = process.env.POLYMARKET_RELAYER_URL || "https://relayer-v2.polymarket.com";
  27. const account = privateKeyToAccount(normalizePrivateKey(getRequiredEnv("POLYMARKET_PRIVATE_KEY")));
  28. const signer = createWalletClient({ account, chain: polygon, transport: http() });
  29. const builderConfig = new BuilderConfig({
  30. localBuilderCreds: {
  31. key: getRequiredEnv("POLYMARKET_BUILDER_API_KEY"),
  32. secret: getRequiredEnv("POLYMARKET_BUILDER_SECRET"),
  33. passphrase: getRequiredEnv("POLYMARKET_BUILDER_PASS_PHRASE"),
  34. },
  35. });
  36. const relayer = new RelayClient(relayerUrl, 137, signer, builderConfig);
  37. if (proxyAgent) {
  38. relayer.httpClient.instance.defaults.proxy = false;
  39. relayer.httpClient.instance.defaults.httpAgent = proxyAgent;
  40. relayer.httpClient.instance.defaults.httpsAgent = proxyAgent;
  41. }
  42. const result = {
  43. address: await relayer.deriveDepositWalletAddress(),
  44. owner: account.address,
  45. relayerUrl,
  46. };
  47. const response = await relayer.deployDepositWallet();
  48. const confirmed = await response.wait();
  49. console.log(confirmed);
  50. console.log(JSON.stringify(result, null, 2));
  51. console.log(`POLYMARKET_DEPOSIT_WALLET_ADDRESS=${result.address}`);