문제 설명

사람 뿐만 아니라, 스마트 계약도 내부적으로 이더리움 계정1를 가집니다. 스마트 계약은 계약 계정를 통해 이더를 거래합니다.
예를 들어, 계약을 통해 A가 B에게 10 이더를 보내는 계약을 호출할 때, 이더는 사실 다음과 같이 이동합니다.

  1. A가 A 계정에서 계약 계정으로 10 이더를 송금
  2. 계약이 계약 계정에서 B 계정으로 10이더를 송금

Payable 키워드

payable 키워드는 계약 계정에 외부에서 이더를 송금 받을 수 있도록 합니다. 즉, 계약이 A에게 송금을 받으려면 A가 호출하는 함수에 payable 키워드가 있어야합니다.
payable 함수는 다음과 같이 사용합니다.

function 함수이름() payable public {
    //함수 내용
}

직접 해보기

A 계정에서 계약 계정으로 10 이더를 송금 하려고 합니다.

  • 함수에 payable 키워드를 선언하세요.
    • [실행]을 누르면 sending() 함수가 자동 호출됩니다. 출력으로 함수 호출 전후 A의 계좌와 계약 계정의 잔고를 확인 할 수 있습니다.
    • 키워드를 선언하지 않으면, 계약에게 이더를 보낼 방법을 찾지 못해, No events were emitted 라는 경고 메세지가 보입니다.

  1. 이를 계약 계정(Contract Accounts, CA)라고 합니다. 

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