아래 튜토리얼 진행 중 질문이 있습니다.
ERC20ServiceChain을 상속받지 않은 일반 ERC20 Token 컨트랙트가 이미 메인체인에 발행되어있을 경우 Bridge 컨트랙트만을 사용해서 사이드체인과 메인체인의 토큰 트랜스퍼를 할 수 있는 방법이 있을까요?
ServiceChainToken.sol 과 ERC20ServiceChain.sol은 아래 repo를 참고하고 있습니다.
Ethan
2
안녕하세요. Bridge컨트렉트를 보시면 아래와 같이 1 step deposit(onERC20Received)과 2 step deposi(requestERC20Transfer)이 있습니다.
즉, 아래 requestValueTransfer 구현체가 없는 ERC20 토큰 컨트렉트도 approve를 하고 내부적으로 trasnferFrom을 사용하는 bridge 컨트레트의 requestERC20Transfer로 토큰전송을 요청 가능합니다.
감사합니다.
1 Like
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가 정상적으로 등록되지 않은 경우에 발생할 수 있을까요?
Ethan
4
approve를 bridge contract로 해주셔야지 bridge contract가 requestERC20Transfer를 할때 내부적으로 transferFrom로 sender의 토큰을 전송할수 있습니다.
해당 에러는 approve 대상주소를 sender 자신으로 해서 그런것 같습니다.