Network disconnection
Description
복습
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. 왜
transfer
후msg.sender
의 잔고가 10 이더 보다 더 빠져나갔나요?
A.msg.sender
가 함수를 호출 할 때 수수료1를 지불했기 때문입니다!
-
수수료는 후속 강의에서 다룹니다. ↩
Result
Stop
Result of [Run] or [Submit] will be displayed here