Cover photo

空投科学家 - ETH 跨链

奥德赛第一周的任务是将ETH资产从其他链转移到 Arbitrum one 上面。因为hop 有官方的SDK,我们这次就用hop。因为官方文档都用的javascript,本着不再造轮子的想法,本文使用javascript。这里是github链接,自取。

  1. 从交易所提USDC到polygon

    1. 成本:1u

    2. 教程可以看这里

  2. 把USDC交易成ETH

    1. 1inch 是流动性聚集器,比较便宜

    2. 成本+滑点:2u

  3. 通过HOP,从polygon转ETH到arbitrum

1inch 交易

1inch是一个dex聚合器。简单来说,它把很多去中心化交易所的流动性聚集起来了,提供给交易者最优的交易路径。

我们先体验一下这个产品的使用流程。打开1inch网站,发现交易有3步:

  1. 连接钱包

  2. 批准使用代币

  3. 发送交易

因此写代码也是这3步。

  • 首先是一些固定的信息。

    • swapParams 是配置交易参数。这里讲的很详细了,我就不再赘述。强调一点,amount的值是由代币最小单位决定的。

      • 1.00 DAI set as 1000000000000000000

      • 51.03 USDC set as 51030000

    • 因为我们从交易所取的是USDC,而Arbitrum跨链需要ETH。所以我们要做的交易就是把USDC换成WETH。也就是,fromTokenAddress = USDC,toTokenAddress = WETH。

      • 只有以太坊上,才有真正的ETH,其他的都是WETH或者其他质押铸造出来的ETH。

    • walletAddress是我们polygon发出交易的地址,也就是我们的钱包地址。

初始化固定信息
初始化固定信息
  • 通过调用1inch的API,我们可以知道我们要交易的代币是否允许使用。 如果没有代币没有批准使用的话,我们就先批准使用。

批准交易
批准交易
  • 成功获得批准后,就可以交易了。

交易
交易

其中,代码调用了 buildTxForSwapsignAndSendTransaction 两个函数,都是官方提供的,作用就是调用1inch的api,私钥签名,发送交易信息。


如果代币需要批准,会有一个批准交易哈希,去polygonscan上就可以看到具体的内容。下图可以看到,批准USDC的交易成功了。

post image

而交易成功后也会返还一个哈希值。可以去看看交易哈希,看到status = success,就说明成功了。这个时候去看看钱包的余额,算算价格,应该就没啥大问题了。

HOP 跨链

我们在1inch上把USDC换成WETH后,下一步就是通过跨链协议把WETH从Polygon转到Arbitrum。核心思路也是3步

  1. 连接钱包

  2. 批准使用代币

  3. 发送交易

其他的和上面的都差不多。整个项目的代码在这儿。我就不细讲了。值得注意的是,如果直接用官方doc给的代码,会出现 Transaction underpriced 的错误。原因是我们的gas price给低了,因此需要人为的设置GAS price。

跨链交易
跨链交易

我也遇到了下面这个错误。意思就是Arbitrum上的代币不够了。hop现在每4个小时加一次流动性,所以等等就好了。

post image

有时候交易会被拒绝,重新试一次就好了。

我的eth 过了一个小时还没收到。。还在pending中。大家交易成功后,可以去这个网站查看hop的跨链信息。

一切顺利的话,大家就可以在galaxy领取第一周的OTA了。我的OTA已经available了😊,你们的呢?


项目代码

https://github.com/June911/SwapAndCrossChain

参考链接

https://docs.1inch.io/docs/aggregation-protocol/guide/quick-start

https://docs.hop.exchange/


如果不会javascript,可以学习一下,我也是1个月前学的。推荐下面两个链接,加油!

https://www.jiyik.com/w/javascript/javascript-intro

https://www.w3schools.com/js/default.asp

下面是一些个人链接,欢迎大家关注。

https://twitter.com/june023_eth

https://github.com/June911