Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- IntelliJ
- 상속
- 객체지향프로그래밍
- 성수직장인
- 클린코드
- 독서일지
- Linux
- 직장인
- 개발자
- JAVA개발자
- DesignPattern
- 성수맛집
- 오브젝트
- 독서
- 객체지향
- 성수볼거리
- 코딩
- 깨끗한코드
- 성수
- 직장인점심
- 책읽기
- JavaScript
- 헤드퍼스트디자인패턴
- 주니어개발자
- 성수핫플
- 헤드퍼스트
- Java
- 디자인패턴
- 책너두
- docker
Archives
- Today
- Total
닭발개발
Solidity 본문
728x90
solidity 언어 문법
- solidity compile version 지정
- 솔리디티 소스파일의 확장자는 sol
- 파일 내에서 pragma solidity를 사용해 컴파일러 버전을 지정 가능하다.
pragma solidity 0.4.22; //complie version
contract MyContract {
uint count; // 상태 변수 - 클래스 멤버 변수
constructor() public { // 생성자
// ...
}
// 함수이름 매개변수 함수타입(public view) 리턴타입(returns(uint))
function numOfStudents(address _teacher) public view returns(uint) {
// ...
}
}
접근 제어자 존재
상태변수 | 내용 |
external | - 상태 변수에서 사용 못함. - 1. 외부 컨트랙트만 호출 가능 - 2. 상태변수는 external 사용 불가 |
internal | - 1. 컨트랙 내부 호출 가능. - 2. 상속받은 컨트랙도 호출 가능. - 3. 상태변수는 디폴트로 internal 선언 |
public | - 1. 컨트랙 내부 호출가능, - 2. 상속받은 컨트랙도 호출 가능. - 3. 외부 컨트랙도 호출 가능. - 가시성 명시 (명시하지 않으면 public으로 인식하지만 complie할때 경고나기때문에 public 으로 쓰기) |
private | - 컨트랙 내부만 호출가능 |
함수 타입 제어자
함수 타입 제어자 | 설명 |
view | 데이터 read-only |
pure | 1. 데이터 읽지 않음 2. 인자 값만 활용해서 반환 값 정함. 3. 가스 비용 없음 |
constant | 0.4.17 버전 이전에는 view/pure 대신 쓰임 |
payable | 1. 함수가 에더(eth)받을 수 있게 함. 2. 가스 비용 있음. |
example code)
function getNumbOfStudent() public view returns () {
// 값을 읽기만 하고 수정할 수 없음.
}
// pure를 붙이면,
// 블록체인값을 리턴하는게 아니라 단순한 메서드 기능 ex) 계산
function safeMul(uint a, uint b) pure internal returns (uint) {
uint c = a * b;
assert(a == 0 || c / a == b);
return c;
}
// 지금은 constant 거의 안씀. 원래 --> view 처럼 쓰이는 것.
function getNumberOfStudents() public constant returns (uint) {
return numOfStudent;
}
// payable
- 돈을 보내고 돈을 받으려면, 함수에 payable이 붙어야 한다.
-
function buy() public payable {
}
값 타입
🎈boolean 형
- 리턴값 : true/false
- 구문 : bool x
🎈정수 형 : 사용할 숫자 범위를 미리 파악하고 정수형을 선언 해놓으면 코드 최적화에 도움이 된다.
타입 | 설명 | 비고 | |
int | int32 x = 1233;양수 음수 저장 가능. | 8bit ~ 256bit | int == int256 |
uint | 양수만 받을 수 있고 저장할 수 있는 값이 더 크다.uint256 x = 25675343; | 8bit ~ 256bit | uint == uint256 |
🎈주소 형
타입 | 설명 | 비고 |
address | 20 byte 이더리움 계정 주소 (40글자)이더리움 계정 주소 형 | 두개의 멤버 소유 : balance, tranfer |
ex)
address x = 0x123;
function send() public {
if (x.balance < 10) {
x.transfer(10);
}
}
🎈고정된 크기의 byte 배열
타입 | 값 | 설명 |
bytes | 1byte ~ 32byte | 아래와 같이 써도 무관.동일byte == bytes1byte에 값을 저장할때는 헥스타입으로 넣어야 한다. |
ex)
bytes32 x = "hello world";
728x90
반응형
'알아두면 쓸모있는 것들 > [ 블록체인 ]' 카테고리의 다른 글
[NFT] NFT란? 코인개념 정리 (0) | 2023.06.20 |
---|---|
[MetaMask] 지갑 보호하기 (2) | 2023.06.20 |
nonce에 대하여(about nonce) (2) | 2023.05.10 |
Cryptocurrency (크립토 통화) (5) | 2023.04.10 |