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

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

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

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

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

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

감사합니다.

1개의 좋아요

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가 정상적으로 등록되지 않은 경우에 발생할 수 있을까요?

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

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