# 서비스 체인 토큰의 브릿지 이용 질문

**URL:** <https://devforum.kaia.io/t/topic/2628>\
**Category:** Kaia\
**Tags:** erc-20, smart-contract, klaytn\
**Created:** [12월 2, 2021, 7:37오전 UTC](https://devforum.kaia.io/t/topic/2628 "2021-12-02T07:37:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![GenieKim](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/geniekim/32/1075_2.png) [@GenieKim](https://devforum.kaia.io/u/GenieKim)\
**Post date:** [12월 2, 2021, 7:37오전 UTC](https://devforum.kaia.io/t/topic/2628/1 "2021-12-02T07:37:58Z")

</div>

아래 튜토리얼 진행 중 질문이 있습니다.

> **[Cross-Chain Value Transfer](https://ko.docs.klaytn.foundation/node/service-chain/getting-started/value-transfer)**

ERC20ServiceChain을 상속받지 않은 일반 ERC20 Token 컨트랙트가 이미 메인체인에 발행되어있을 경우 Bridge 컨트랙트만을 사용해서 사이드체인과 메인체인의 토큰 트랜스퍼를 할 수 있는 방법이 있을까요?

ServiceChainToken.sol 과 ERC20ServiceChain.sol은 아래 repo를 참고하고 있습니다.

> **[klaytn/contracts/sc\_erc20 at dev · klaytn/klaytn](https://github.com/klaytn/klaytn/tree/dev/contracts/sc_erc20)**
>
> dev/contracts/sc\_erc20

---

<div class="post-metadata">

**Author:** ![Ethan](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/ethan/32/18_2.png) [@Ethan](https://devforum.kaia.io/u/Ethan)\
**Post date:** [12월 5, 2021, 11:52오전 UTC](https://devforum.kaia.io/t/topic/2628/2 "2021-12-05T11:52:29Z")

</div>

안녕하세요. Bridge컨트렉트를 보시면 아래와 같이 1 step deposit(onERC20Received)과 2 step deposi(requestERC20Transfer)이 있습니다.

> <https://github.com/klaytn/klaytn/blob/dev/contracts/bridge/BridgeTransferERC20.sol>

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/klaytn/original/2X/e/e2b8c6bfedc2c52b2ccaf76ccded13b994c6228a.png)

즉, 아래 requestValueTransfer 구현체가 없는 ERC20 토큰 컨트렉트도 approve를 하고 내부적으로 trasnferFrom을 사용하는 bridge 컨트레트의 requestERC20Transfer로 토큰전송을 요청 가능합니다.

> <https://github.com/klaytn/klaytn/blob/dev/contracts/sc_erc20/ERC20ServiceChain.sol>

감사합니다.

---

<div class="post-metadata">

**Author:** ![GenieKim](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/geniekim/32/1075_2.png) [@GenieKim](https://devforum.kaia.io/u/GenieKim)\
**Post date:** [12월 6, 2021, 2:57오후 UTC](https://devforum.kaia.io/t/topic/2628/3 "2021-12-06T14:57:46Z")

</div>

transfer.js를 다음과 같이 바꾸면 될까요?

await enInstance.methods.approve( **conf.en.sender** , 100).send({from: **conf.en.sender** , to: conf.en.token, gas: 1000000});  
await enInstanceBridge.methods.requestERC20Transfer(conf.en.token, alice, 100, 0, []).send({from: **conf.en.sender** , to: conf.en.bridge, gas: 1000000});

위와 같이 호출하면  
ERC20: transfer amount exceeds balance 에러가 발생합니다.

혹시 addMinter가 정상적으로 등록되지 않은 경우에 발생할 수 있을까요?

---

<div class="post-metadata">

**Author:** ![Ethan](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/ethan/32/18_2.png) [@Ethan](https://devforum.kaia.io/u/Ethan)\
**Post date:** [12월 8, 2021, 4:24오전 UTC](https://devforum.kaia.io/t/topic/2628/4 "2021-12-08T04:24:18Z")

</div>

approve를 bridge contract로 해주셔야지 bridge contract가 requestERC20Transfer를 할때 내부적으로 transferFrom로 sender의 토큰을 전송할수 있습니다.

해당 에러는 approve 대상주소를 sender 자신으로 해서 그런것 같습니다.
