문제 설명
복습

A가 계약을 통해 B에게 10 이더를 보내면, 이더는 다음과 같이 이동합니다.

  • A가 계약에게 10 이더를 송금
  • 계약이 B에게 10 이더를 송금

이번 강의에서는 스마트 계약이 B에게 이더를 송금 하는 법을 배워봅시다.

Transfer 함수

transfer 함수를 사용하면 계약이 다른 이에게 이더를 전송합니다. transfer 함수는 다음과 같이 사용합니다.

<받는 사람의 주소>.transfer(<송금할 금액>);

예를 들어, 다음은 계약이 seller에게 10 만큼의 이더를 전송하는 함수, buy를 구현한 예입니다.

function buy() public {
    seller.transfer(10)
}

직접 해보기

msg.sender에서 friend로 이더를 송금하는 transfer() 함수를 작성해보세요.

  • 각 계정은 100 이더를 초기값으로 가집니다.
  • [실행]을 누르면 A가 msg.value에 이더를 넣어 transfer 함수를 호출합니다.
  • [실행]을 누르면 송금 전후의 계좌 잔액을 출력합니다.

Note

[실행] 결과가 이상해요!

  • Q. friend에게 돈을 보내지 않았는데, msg.sender의 돈이 빠져나갔어요.
    A. transfer를 하지 않아도 msg.sender는 계약 주소(CA)에 10 이더를 보냅니다.
    msg.sender의 10 이더는 계약 주소에 있습니다!

  • Q. 왜 transfermsg.sender의 잔고가 10 이더 보다 더 빠져나갔나요?
    A. msg.sender가 함수를 호출 할 때 수수료1를 지불했기 때문입니다!


  1. 수수료는 후속 강의에서 다룹니다. 

실행 결과 실행 중지
실행 결과가 여기에 표시됩니다.