일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- blockchain
- Solidity
- web3.js
- Klaytn
- web3
- 웹
- 블록체인
- 이더리움
- 프레임워크
- kas
- Web
- API
- javascript
- 앵커링
- Geth
- ethereum
- vue
- nodejs
- 솔리디티
- 제어자
- SCN
- frontend
- 클레이튼
- 블록체인 구조와 이론
- vue.js
- 프론트엔드
- 서비스체인
- 접근제어자
- Klaytn API Service
- geth구현
Archives
- Today
- Total
BloCCat
payable 제어자 본문
payable
- 가상화폐로 접근하기 위한 키워드, 이더 코인을 전송하는 smart contract를 작성하기 위해서 반드시 사용
* payable을 작성한 함수에서만 이더를 보낼 수 있기 때문에 smart contract 외부에서 해당 함수들 중에 코인을 전송 시키는 함수를 사용하려 한다면, 해당 함수는 반드시 payable 키워드가 함께 작성된 함수이어야 한다.
contract OnlineStore {
function buySomething() external payable {
// 함수 실행에 0.001이더가 보내졌는지 확실히 하기 위해 확인:
require(msg.value == 0.001 ether);
// 보내졌다면, 함수를 호출한 자에게 디지털 아이템을 전달하기 위한 내용 구성:
transferThing(msg.sender);
}
}
address payable
- address 타입의 확장판
- 이더를 전송할 수 있는 함수인 send(), transfer() 함수 내장 (transfer함수는 예외처리를 하지만 send는 안함)
- 멤버변수로 쓰일 경우에는 storage, 매개변수로 쓰일 경우에는 memory와 함께 사용
- address() : address 타입을 address payable로 형변환
- msg.sender : 스마트 컨트랙트 함수를 실행한 사용자의 주소를 사용하는 경우
- 4bytes
payable 활용 패턴 정리
https://solidity-kr.readthedocs.io/ko/latest/common-patterns.html
자주 쓰이는 패턴 — Solidity 0.5.10 documentation
컨트랙트에서의 출금 Effect 이후 기금송금에 있어 가장 권장되는 방법은 출금 패턴을 사용하는 것입니다. Effect의 결과로 Ether를 송금하는 가장 직관적인 방법은 직접 transfer 를 호출하는 것이겠
solidity-kr.readthedocs.io
'Study > Solidity' 카테고리의 다른 글
vscode solidity 버전 에러 해결 (0) | 2021.09.05 |
---|---|
solidity 제어자 정리 (0) | 2021.09.03 |
solidity - 함수 제어자 활용 (0) | 2021.08.30 |
효율적인 Contract 작성법 (2) - 가스 절약 (0) | 2021.08.30 |
효율적인 Contract 작성법 (1) (0) | 2021.08.29 |