반응형
Solidity 02
- solidity 버전 표시
pragma solidity ^0.4.25; // 정확히 이 버전만 지원
pragma solidity >=0.4.0 <0.6.0; // 지원 범위
- 파일 import
import "filename";
import "filename" as symbolName ;
import "github.com/ethereum/dapp-bin/library/iterable_mapping.sol" as it_mapping;
github에 있는 소스도 사용할 수 있다.
- 주석은 c 형식 사용. /**/ // 등
- public 함수나 변수는 외부에 노출
- 반대는 internal로 표시한다. 내부에서만 호출 가능.
- 파리미터에 memory는 라이프사이클이 함수내.
- 파리미터에 storage로 주면 참조 형식으로 값이 변할 수 있다.
- 함수에 view를 주면 storage 변수에 읽기 접근만 가능하다. 이벤트 발생 안된다.
- 함수에 pure를 주면 storage 변수에 접근이 안된다.
- view, pure를 귀찮게 왜 쓰나? gas 비용 절감과 보안측면 이다.
구버전
pragma solidity ^0.4.25 ;
contract HelloWorld {
string public greeting ;
function HelloWorld(string _g) public {
greeting = _g ;
}
function setGreeting(string _g) public {
greeting = _g ;
}
function say() public constant returns (string) {
return greeting ;
}
}
위는 0.4대 버전, 아래는 0.5대 버전이다. 문법이 약간 달라졌다.
- constructor가 클래스명에서 명시적으로 constructor로 변경.
- 파라미터, 리턴 변수앞에 저장소 지정을 명시적으로. (엄격해짐)
- constant가 없어짐. view로 대체.
- public/internal 의 위치가 타입 뒤에 가는 것이 특징. (cpp, java와 다르다.)
- 함수 리턴 타입을 지정하는 부분이 마지막에 들어간다.
신버전
pragma solidity >0.5.0;
contract HelloWorld {
string public greeting ;
constructor(string memory g) public {
greeting = g;
}
function setGreeting(string memory g) public {
greeting = g;
}
function say() public view returns (string memory) {
return greeting ;
}
}
- deploy시 remix에서 펼쳐서 이름을 입력해줘야 인코딩에러가 안난다.
- setGreeting시도에 펼쳐서 값을 넣어줘야 작동되었다.
Author: crazyj7@gmail.com
'BlockChain' 카테고리의 다른 글
Solidity#3 변수와 타입 (0) | 2019.12.06 |
---|---|
Solidity 0.4 vs 0.5 (0) | 2019.12.06 |
Windows Ethereum python module install error (0) | 2019.12.04 |
[ether02] 코인만들기 (0) | 2019.11.10 |
[ether01] solidity 맛보기 (0) | 2019.11.10 |