티스토리 뷰

블록체인 개발/Solidity

send, transfer, call

투자유v 2022. 1. 2. 00:36
728x90
  • send: 2300 gas 소모, 성공 시 true, 실패 시 false 리턴
  • transfer: 2300 gas 소모, 실패 시 에러 리턴
  • call: gas양 지정 가능, 지정하지 않으면 자동으로 들어감. 성공 시 true, 실패 시 false 리턴. 재진입 공격에 취약. 하지만 가스비가 상승한 이후로 gas가 동적을 설정되는 call 함수 사용을 권장
event spendLog(uint256 _value);

function sendNow(address payable _to) public payable {
   bool sent = _to.send(msg.value);
   require(sent, 'Failed');
   emit spendLog(msg.value);
}

function transfetNow(address payable _to) public payable {
   _to.transfer(msg.value);
   emit spendLog(msg.value);
}

// v0.7 ~
function callNow(address payable _to) public payable {
   (bool sent, ) = _to.call{value: msg.value, gas: 10000 }("");  // gas 생략 가능
   require(sent, 'Failed');
   emit spendLog(msg.value);
}

// ~ v0.7
function callNow2(address payable _to) public payable {
   (bool sent, ) = _to.call.gas(10000).value(msg.value)("");
   require(sent, "Failed");
   emit spendLog(msg.value);
}

'블록체인 개발 > Solidity' 카테고리의 다른 글

call  (0) 2022.01.02
fallback, receive  (0) 2022.01.02
에러 핸들링(require, revert, assert)  (0) 2022.01.01
문자열 비교  (0) 2022.01.01
Array  (0) 2022.01.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함