[Blockchain] ERC-20(실습) - 2

공효은·2022년 2월 24일
1

Blockchain

목록 보기
5/10
post-thumbnail

2탄을 추가한 이유는 ERC-20 cotract의 allowance, approve 가 뭔지 잘 모르겠어서 테스트 해보려고 한다!

내 나름대로의 해석이다.
계정이 세개가 등장한다.

🟡 0xA978F20F47509E55508d65b3213c3709FF6D9d46 (토큰 발행자)

🟢 0xBefcbf517438d3d3e244db536CC9ff9c56Cac5C1 (사용자1)

🔵 0x0E260F1e7CBC737c817b4e4d003f23b05AcF51Eb (사용자2)

🟡토큰 발행자는🟢사용자 1이 🔵사용자 2에게 5토큰을 보내는 transferFrom 메소드를 호출하고 싶다. (트랜잭션을 쏘고 싶다.)

ACCOUNT를 🟡토큰 발행자로 했다.

🟢사용자 1이 🔵사용자 2에게 5토큰을 송금하도록 transferFrom을 호출했다.

❌ 결과는 fail

분명 사용자1은 토큰이 17개가 있다. 근데 왜 전송 안됨?
아니 생각해보면 토큰 발행자 맘대로 남의 토큰을 전송하는게 더 웃기지ㅎㅎ

🟢사용자 1이 직접 트랜잭션을 쏘고 (msg.sender) recipient를 🔵사용자2로 해서 transfer을 호출하면 토큰이 전송된다. 하지만 우리는 🟡토큰 발행자가 🟢사용자1에서 🔵사용자2로 토큰을 전송하도록 하고싶다. transferFrom 을 쓰고싶단 말이다!
그런경우 🟡토큰 발행자가 🟢사용자1에게서 5토큰을 가져다가 🔵사용자 2에게 전송해주는것 같다. 그러면 🟢사용자1은 🟡토큰 발행자가 5토큰을 가져갈 수 있도록 허용해 줘야한다.

allowance 메소드를 호출해보았다.
spender가 owner에게서 얼마만큼의 토큰을 인출할 수 있는지 확인하는 메소드 이다.

🟡토큰 발행자는 🟢사용자1 에게서 0토큰을 출금 할 수 있다.

그래서 approve가 필요하다.
approve는 spender가 msg.sender로 부터 value 만큼 출금할 수 있도록 허용한다.

🟢사용자 1이 msg.sender가 되어 approve 메소드를 호출해야한다. 그래서 🟡토큰발행자가 100만큼 사용자 1의 계좌에서 출금 할 수있도록 허용한다. 허용한다음. 다시 allowance를 호출해 보면 100으로 바뀐것을 알 수 있다.

이제🟡토큰 발행자는 🟢사용자1의 계좌에서 100만큼을 출금할 수 있도록 허용되었다.

다시 trasferFrom 을 호출 해보자.

🟡토큰발행자가 msg.sender가 되어 trasferFrom 을 호출한다.

🟢사용자 1에서 🔵사용자 2로 5토큰을 전송하도록 한다.

성공적으로 전송 되었고 🟢사용자1의 토큰은 17에서 5가 줄어 12가 되었다.

나중에 봐도 이해가 되려나~

profile
잼나게 코딩하면서 살고 싶어요 ^O^/

0개의 댓글