닭발개발

Solidity 본문

알아두면 쓸모있는 것들/[ 블록체인 ]

Solidity

D269 2023. 3. 23. 16:05
728x90

solidity 언어 문법

 

  1. 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
반응형