---
# System prepended metadata

title: Acala/Karura aUSD 跨链转账的 SDK接口设计

---

# Acala/Karura aUSD 跨链转账的 SDK接口设计

Acala 转到 Karura 还好， 用户查看aUSD余额什么的直接走之前的查询余额啥的，额外提供的接口：
1. approve aUSD 给 wormholeBridge合约,  evm call  aUSD.approve
2.  跨链转账到Karura ,  evm call  wormholeBridge.transferToken ， 【接收地址问题】

其实这俩还可以batch_call 成一笔， 调用时，提供一个 amount 就行 （其余参数，合约地址哪些都是确定的，配置即可）。  

Karua 侧会复杂一点， 
1. 要提供 waUSD 的余额查询接口，用户传 substrate 地址， 要先走 evm-accounts 拿到 substrate 地址对应的 evm 地址， 再去 waUSD 合约查询 evm 的余额

2. 提供接口是让用户将 waUSD 转化成 KUSD,  这个走 substrate 的调用, 有个前置判断 honzonBridge.bridgedStableCoinCurrencyId 这个存储不为空，  然后构造 honzonBridge.from_bridged 的函数

3. 提供接口让用户将KUSD转化成 waUSD,  同上，先前值判断， 然后构造 honzonBridge.to_bridged

4. 提供接口让用户 跨链转 waUSD 到 Acala 上， 【接收地址问题】

5. 提供接口batch 下 convert KUSD to waUSD ， 再跨链转 到 Acala 上 【接收地址问题】



## 接收地址问题

这个有点烦，用户自己输evm地址作为接收地址就没有问题, 但我们这个sdk暴露出去的是纯substrate的。 

一是用户不输入地址， 我们默认用户是想自己转给自己（同一个substrate地址）， evm地址得填 substrate 地址 在dest 网络 上绑定的 evm地址。

而是用户想要指定substrate地址， 那evm地址填用户指定 substrate地址在dest 网络 上绑定的 evm地址。

可以做成一个接口， 用optional 参数来自定义地址。 或者是直接独立成两个接口好了， 更清楚一些


另外刚提到要sender 和 receiver 都绑过 evm地址才能使用， 那上面的接口凡是涉及到 evm call 和 查询的， 都检查下 地址是否绑了没有， 没有就返回错误好了