티스토리 뷰
반응형
Contract
- 객체 지향 언어의 클래스와 유사
Creating Contracts
- contract가 생성되면 생성자(
constructor
키워드와 선언된 함수)가 한 번 실행됨 - constructor은 선택 사항 -> default constructor
- constructor은 하나만 가능(오버로드가 지원되지 않음)
- constructor가 실행된 후, contract의 최종 코드가 블록체인에 저장됨
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.22 <0.9.0;
contract OwnedToken {
TokenCreator creator;
address owner;
bytes32 name;
// 생성자
constructor(bytes32 _name) {
owner = msg.sender;
creator = TokenCreator(msg.sender);
name = _name;
}
function changeName(bytes32 newName) public {
if (msg.sender == address(creator))
name = newName;
}
function transfer(address newOwner) public {
if (msg.sender != owner) return;
if (creator.isTokenTransferOK(owner, newOwner))
owner = newOwner;
}
}
// constructor가 있지 않음
// default constructor
contract TokenCreator {
function createToken(bytes32 name)
public
returns (OwnedToken tokenAddress)
{새
return new OwnedToken(name);
}
function changeName(OwnedToken tokenAddress, bytes32 name) public {
tokenAddress.changeName(name);
}
function isTokenTransferOK(address currentOwner, address newOwner)
public
pure
returns (bool ok)
{
return keccak256(abi.encodePacked(currentOwner, newOwner))[0] == 0x7f;
}
}
Visibility and Getters
Solidity의 함수 호출 종류
- 내부 호출: 실제 EVM 호출을 생성하지 않음
- 외부 호출: 내부 호출을 실행
Visibility 종류
Fuction | State Variable | |
---|---|---|
external | O | X |
public | O | O |
internal | O | O |
private | O | O |
* external: | ||
* public | ||
* internal: 기본. this를 사용하지 않고 내부적으로 접근이 가능 | ||
* private |
visibility 지정자 위치
- 상태 변수의 타입 뒤
- 매개변수 리스트와 리턴 매개변수 리스트 사이
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.16 <0.9.0;
contract C {
function f(uint a) private pure returns (uint b) { return a + 1; } // 매개변수 리스트와 리턴 매개변수 리스트 사이
function setData(uint a) internal { data = a; } // 매개변수 리스트와 리턴 매개변수 리스트 사이
uint public data; // 상태 변수 타입 뒤
}
```
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 네이버 2022 공채
- 2차 인터뷰
- github
- go 특징
- postman collection
- mysql
- 주생성자
- pm.expect
- hashcode
- git
- postman
- 코틀린
- postman tests
- graphql
- string
- solidity
- squash merge
- downTo
- DGS Framework
- java
- Basic Type
- Squash and merge
- 확장 함수
- Kotlin
- 코딩테스트
- python3
- Kotlin In Action
- Python
- 1차 인터뷰
- pm.test
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함