address에서 send, transfer를 호출할 수 없는 이슈

2022. 4. 1. 14:30개발 잡부/블록체인

728x90

개요

solidity 0.5버전 이하에서
address 변수에서 send나 transfer를 호출하려 하면 다음의 에러가 발생한다.

"send" and "transfer" are only available for objects of type "address payable", not "address".

address payable

0.4 버전까지는 address만 있었지만,
0.5버전 이상부터는 address payable이 생겼다.

일반 address에서는 더이상 sendtransfer를 할 수 없다.

아마 잠재적으로 결제나 송금이 될 내용을 알 수 있게 한 것 같다.

// 선언
address payable owner;

// 형변환
address a;
owner = payable(a);

// 생성자에서 초기화
constructor() {
    owner = payable(msg.sender);
}

참고 자료

 

Solidity v0.5.0 Breaking Changes — Solidity 0.5.0 documentation

Solidity v0.5.0 Breaking Changes This section highlights the main breaking changes introduced in Solidity version 0.5.0, along with the reasoning behind the changes and how to update affected code. For the full list check the release changelog. Note Contra

docs.soliditylang.org