안녕하세요. 컨트랙트 내에서 클레이튼을 송금하는 코드에 대해 여쭤보고 싶습니다.
최근 이더리움에서는 이더리움을 송금할 때에
(bool success, ) = to.call{value: value}(new bytes(0));
require(success, 'TransferHelper::safeTransferETH: ETH transfer failed');
와 같은 방식으로 송금을 진행합니다. (transfer와 send는 gas 제한이 걸려있고, 공격자가 악의적으로 공격할 경우 컨트랙트 작동이 멈출 수 있어서 그런 것으로 알고 있습니다.)
하지만, 현재 클레이튼에서 위와 같은 방식으로 배포를 시도하면 아래와 같은 에러 메시지가 뜹니다.
ParserError: Expected ';' but got '{'
(bool success, ) = to.call{value: value}("");
질문)
- 아래와 같이 [address.transfer] 방식으로 작성해도 gas 공격 등에서 안전할까요?
to.transfer(value);
- 그렇지 않다면 클레이튼 컨트랙트 내부에서 클레이튼을 송금할 때에 어떤 코드를 써야 할까요?