소스 검색

fix: l0 & zk float

wren 1 년 전
부모
커밋
dc9fac4e02

+ 55 - 29
js-runtime/src/script/layerzero/stargate/crossStargate.js

@@ -5,39 +5,65 @@ import RouterEthAbi from './contract/routerEth.js'
 import mathUtil from "../../utils/mathUtil.js";
 
 const router = express.Router();
-const ethChainId = 101;
-const wrapperEth = "0x72E2F4830b9E45d52F80aC08CB2bEC0FeF72eD9c";
-const routerAddress = "0x8731d54E9D02c286767d56ac03e8037C07e01e98";
-const routerEthAddress = "0x150f94B44927F078737562f0fcF3C95c01Cc2376";
-const network = "https://eth-mainnet.g.alchemy.com/v2/I0grWRjLbj_Rf1WP3QMJ-z3mKp71Hb4L";
+// const ethChainId = 101;
+// const wrapperEth = "0x72E2F4830b9E45d52F80aC08CB2bEC0FeF72eD9c";
+// const routerAddress = "0x8731d54E9D02c286767d56ac03e8037C07e01e98";
+// const routerEthAddress = "0x150f94B44927F078737562f0fcF3C95c01Cc2376";
+// const network = "https://eth-mainnet.g.alchemy.com/v2/I0grWRjLbj_Rf1WP3QMJ-z3mKp71Hb4L";
 
-const arbChainId = 110;
-const wrapperArbEthAddress = "0x82cbecf39bee528b5476fe6d1550af59a9db6fc0";
-const routerArbAddress = "0x53bf833a5d6c4dda888f69c22c88c9f356a41614";
-const routerArbEthAddress = "0xbf22f0f184bCcbeA268dF387a49fF5238dD23E40";
-const arbNetwork = "https://arb-mainnet.g.alchemy.com/v2/8hbABA2L3eaR7VWGY8yk-5p16Aeurf2Z";
+
+const networks = {
+    eth: {
+        chain_id: 101,
+        wrapper_eth: "0x72E2F4830b9E45d52F80aC08CB2bEC0FeF72eD9c",
+        router_address: "0x8731d54E9D02c286767d56ac03e8037C07e01e98",
+        router_eth_address: "0x150f94B44927F078737562f0fcF3C95c01Cc2376",
+        network: "https://eth-mainnet.g.alchemy.com/v2/I0grWRjLbj_Rf1WP3QMJ-z3mKp71Hb4L"
+    },
+    arb: {
+        chain_id: 110,
+        wrapper_eth: "0x82cbecf39bee528b5476fe6d1550af59a9db6fc0",
+        router_address: "0x53bf833a5d6c4dda888f69c22c88c9f356a41614",
+        router_eth_address: "0xbf22f0f184bCcbeA268dF387a49fF5238dD23E40",
+        network: "https://arb-mainnet.g.alchemy.com/v2/8hbABA2L3eaR7VWGY8yk-5p16Aeurf2Z"
+    },
+    opt: {
+        chain_id: 111,
+        wrapper_eth: "0xb69c8cbcd90a39d8d3d3ccf0a3e968511c3856a0",
+        router_address: "0xB0D502E938ed5f4df2E681fE6E419ff29631d62b",
+        router_eth_address: "0xB49c4e680174E331CB0A7fF3Ab58afC9738d5F8b",
+        network: "https://opt-mainnet.g.alchemy.com/v2/-JQnqchpVew7O9KBdK_lkbXl_iHtfrwS"
+    }
+}
+
+// const arbChainId = 110;
+// const wrapperArbEthAddress = "0x82cbecf39bee528b5476fe6d1550af59a9db6fc0";
+// const routerArbAddress = "0x53bf833a5d6c4dda888f69c22c88c9f356a41614";
+// const routerArbEthAddress = "0xbf22f0f184bCcbeA268dF387a49fF5238dD23E40";
+// const arbNetwork = "https://arb-mainnet.g.alchemy.com/v2/8hbABA2L3eaR7VWGY8yk-5p16Aeurf2Z";
 
 
 router.post("/", async (req, res) => {
     let {wallet, params} = CommonUtil.getParamsAndWallet(req);
-    let distChainId;
-    let wrap_addr;
-    let rt_addr;
-    let rt_eth_addr;
-    let net_work;
-    if (params.distChain === "eth") {
-        distChainId = ethChainId;
-        wrap_addr = wrapperEth;
-        rt_addr = routerAddress;
-        rt_eth_addr = routerEthAddress;
-        net_work = network;
-    } else if (params.distChain === "arb") {
-        distChainId = arbChainId;
-        wrap_addr = wrapperArbEthAddress;
-        rt_addr = routerArbAddress;
-        rt_eth_addr = routerArbEthAddress;
-        net_work = arbNetwork;
-    }
+    let dist_chain_id = networks[params.dist_chain].chain_id;
+    let source_chain_id = networks[params.source_chain].chain_id;
+    let wrap_addr = networks[params.source_chain].wrapper_eth;
+    let rt_addr = networks[params.source_chain].router_address;
+    let rt_eth_addr = networks[params.source_chain].router_eth_address;
+    let net_work = networks[params.source_chain].network;
+    // if (params.distChain === "eth") {
+    //     distChainId = ethChainId;
+    //     wrap_addr = wrapperEth;
+    //     rt_addr = routerAddress;
+    //     rt_eth_addr = routerEthAddress;
+    //     net_work = network;
+    // } else if (params.distChain === "arb") {
+    //     distChainId = arbChainId;
+    //     wrap_addr = wrapperArbEthAddress;
+    //     rt_addr = routerArbAddress;
+    //     rt_eth_addr = routerArbEthAddress;
+    //     net_work = arbNetwork;
+    // }
     const provider = ethers.getDefaultProvider(net_work);
     const signer = new ethers.Wallet(wallet.privateKey, provider);
     // const router = new Contract(rt_addr, RouterAbi, signer);
@@ -47,7 +73,7 @@ router.post("/", async (req, res) => {
     let crossGas = utils.parseEther(params.crossGas);
     const amountOut = amountNumber.mul(995).div(1000);
     let tx = await routerEth.swapETH(
-        distChainId,
+        dist_chain_id,
         wallet.address,
         wallet.address,
         amountNumber,

+ 2 - 1
src/main/java/com/ichaoj/ams/script/layerzero/cross/LayerZeroCrossScript.java

@@ -16,7 +16,8 @@ import com.ichaoj.ams.script.annotation.ScriptType;
                 @ScriptParam(name = "amountMax", note = "最大金额"),
                 @ScriptParam(name = "accuracy", note = "精度"),
                 @ScriptParam(name = "crossGas", note = "跨链Gas"),
-                @ScriptParam(name = "distChain", note = "目标链"),
+                @ScriptParam(name = "dist_chain", note = "目标链"),
+                @ScriptParam(name = "source_chain", note = "源链")
         }
 )
 public class LayerZeroCrossScript extends JsScript {

+ 5 - 4
src/test/java/com/ichaoj/ams/layerzero/LayerZeroTest.java

@@ -16,11 +16,12 @@ public class LayerZeroTest {
     void cross() {
         JsScript script = new LayerZeroCrossScript();
         HashMap<String, AirdropParam> params = new HashMap<>();
-        params.put("minAmount", new AirdropParam("minAmount", null, "0.002"));
-        params.put("maxAmount", new AirdropParam("maxAmount", null, "0.004"));
+        params.put("minAmount", new AirdropParam("minAmount", null, "0.0101"));
+        params.put("maxAmount", new AirdropParam("maxAmount", null, "0.0102"));
         params.put("accuracy", new AirdropParam("accuracy", null, "5"));
-        params.put("distChain", new AirdropParam("distChain", null, "arb"));
-        params.put("crossGas", new AirdropParam("crossGas", null, "0.001"));
+        params.put("source_chain", new AirdropParam("source_chain", null, "eth"));
+        params.put("dist_chain", new AirdropParam("dist_chain", null, "arb"));
+        params.put("crossGas", new AirdropParam("crossGas", null, "0.0008"));
         AirdropWallet airdropWallet = new AirdropWallet();
         airdropWallet.setAddress("0x368715F09C1AB5E0B55bF5bA19cD887189A28DBE");
         airdropWallet.setPrivateKey("f9eac039449802f20cf0a38bc0b6f4064508fa61897d9c4fcb6cb66bd1311674");

+ 23 - 12
src/test/java/com/ichaoj/ams/script/zksync2/cross/ZkSyncCrossScriptTest.java

@@ -5,24 +5,35 @@ import com.ichaoj.ams.script.model.SResult;
 import com.ichaoj.ams.script.model.AirdropParam;
 import com.ichaoj.ams.script.model.AirdropWallet;
 import org.junit.jupiter.api.Test;
+import org.web3j.crypto.Credentials;
 
 import java.util.HashMap;
 
 class ZkSyncCrossScriptTest {
     @Test
     void cross() {
-        JavaScript script = new ZkSyncCrossScript();
 
-        HashMap<String, AirdropParam> params = new HashMap<>();
-        params.put("minAmount", new AirdropParam("minAmount", null, "0.002"));
-        params.put("maxAmount", new AirdropParam("maxAmount", null, "0.004"));
-        params.put("accuracy", new AirdropParam("accuracy", null, "5"));
-        params.put("l2Gas", new AirdropParam("l2Gas", null, "0.001"));
-        params.put("l2GasLimit", new AirdropParam("l2GasLimit", null, "901876"));
-        AirdropWallet airdropWallet = new AirdropWallet();
-        airdropWallet.setAddress("0x368715F09C1AB5E0B55bF5bA19cD887189A28DBE");
-        airdropWallet.setPrivateKey("f9eac039449802f20cf0a38bc0b6f4064508fa61897d9c4fcb6cb66bd1311674");
-        SResult sResult = script.run(params, airdropWallet);
-        System.out.println(sResult);
+        Credentials credentials = Credentials.create("224fad34f5d77e4bbb3f93dba849080beab864c10758239301fe8fc172");
+        StringBuilder privateKey = new StringBuilder(credentials.getEcKeyPair().getPrivateKey().toString(16));
+        if (privateKey.length() < 64) {
+            int prvLength = 64 - privateKey.length();
+            for (int i = 0; i < prvLength; i++) {
+                privateKey.insert(0, "0");
+            }
+        }
+        System.out.println(privateKey);
+//        JavaScript script = new ZkSyncCrossScript();
+//
+//        HashMap<String, AirdropParam> params = new HashMap<>();
+//        params.put("minAmount", new AirdropParam("minAmount", null, "0.002"));
+//        params.put("maxAmount", new AirdropParam("maxAmount", null, "0.004"));
+//        params.put("accuracy", new AirdropParam("accuracy", null, "5"));
+//        params.put("l2Gas", new AirdropParam("l2Gas", null, "0.001"));
+//        params.put("l2GasLimit", new AirdropParam("l2GasLimit", null, "901876"));
+//        AirdropWallet airdropWallet = new AirdropWallet();
+//        airdropWallet.setAddress("0x368715F09C1AB5E0B55bF5bA19cD887189A28DBE");
+//        airdropWallet.setPrivateKey("f9eac039449802f20cf0a38bc0b6f4064508fa61897d9c4fcb6cb66bd1311674");
+//        SResult sResult = script.run(params, airdropWallet);
+//        System.out.println(sResult);
     }
 }

+ 4 - 3
src/test/java/com/ichaoj/ams/script/zksync2/swap/ZksyncMuteSwapEthForUsdcScriptTest.java

@@ -11,6 +11,7 @@ import com.ichaoj.ams.script.model.SResult;
 import com.ichaoj.ams.script.model.AirdropParam;
 import com.ichaoj.ams.script.model.AirdropWallet;
 import com.ichaoj.ams.script.zksync2.swap.mute.MuteSwapEthForUsdcScript;
+import com.ichaoj.ams.script.zksync2.swap.mute.MuteSwapUsdcForEthScript;
 import com.ichaoj.ams.script.zksync2.swap.sync.ZksyncSwapEthForUsdcScript;
 import com.ichaoj.ams.script.zksync2.swap.sync.ZksyncSwapUsdcForEthScript;
 import com.ichaoj.ams.script.zksync2.tiktokfi.TiktokFiMint;
@@ -50,11 +51,11 @@ class ZksyncMuteSwapEthForUsdcScriptTest {
 
     @Test
     void swapUsdc() {
-        JsScript script = new MuteSwapEthForUsdcScript();
+        JsScript script = new MuteSwapUsdcForEthScript();
 
         HashMap<String, AirdropParam> params = new HashMap<>();
-        params.put("amountMin", new AirdropParam("amountMin", null, "0.001"));
-        params.put("amountMax", new AirdropParam("amountMax", null, "0.002"));
+        params.put("amountMin", new AirdropParam("amountMin", null, "0.2"));
+        params.put("amountMax", new AirdropParam("amountMax", null, "0.5"));
         params.put("accuracy", new AirdropParam("amountMax", null, "5"));
         AirdropWallet airdropWallet = new AirdropWallet();
         airdropWallet.setAddress("0x368715F09C1AB5E0B55bF5bA19cD887189A28DBE");