solidity study -crypto zombie 레슨 1

솔리디티 시작시 항상 입력해야 하는 것이 있다.
1. 프라그마 솔리디티 버젼;
2. 계약 이름

pragma solidity >=0.5.0<0.6.0; // 솔리디티 버젼
contract HelloWorld{ 
}  // 계약 이름

uint

부호 없는 정수.
값이 음수면 안됨.

좀비 DNA 설정하기.

pragma solidity >=0.5.0 <0.6.0;
contract ZombieFactory {
    uint dnaDigits = 16;
    //start here}

복잡한 데이터 유형.
여러 속성이 있는 복잡한 데이터 형식 만들 수 있다.
마치 자바에서 배운 객체와 같은 느낌인듯.

string : 문자열 유형을 나타냄

pragma solidity >=0.5.0 <0.6.0;
contract ZombieFactory {
    uint dnaDigits = 16;
    uint dnaModulus = 10 ** dnaDigits;
    struct Zombie {
        string name;
        uint dna;
    }
  // start here
}

<함수>

함수 선언하는 방법
함수의 인자는 언더바로 시작하는 것이 관례이다.
ex)

  function eatHamburgers(string//문자열 형태임을 알려줌 memory_name//name 변수가 memory에 저장됨, uint_amount//정수 형태임을 알려줌)public//가시성 {//여기에는 함수 실행 내용 들어감}

string memory_name 에서
궁금한 점. name이라는 변수를 memory라는 곳에 저장된다 이렇게 이해하는게 맞나?
함수에 인수를 전달하는 법

  1. 값으로 전달하기. 인수값의 복사본을 전달 하는 것. 원본이 변경되지 않고 수정됨
  2. 참조에 의해 전달하기. 참조값이 변경되면 원래 변수의 값도 변경됨.

struct 생성

  struct Person {
  uint age;
  string name;
}
Person[] public people;

여기서 질문. Person[] public people; 이코드는 무엇을 의미하는가?
앞서 만든 struct를 생성하기

Person satoshi = Person(172,"Satoshi);
//이 사람을 배열에 추가. 
people.push(satoshi);
//파이썬에서 append와 같은 개념으로 push 명령어 사용. 
//createzombie함수 만들기
내부 코드

zombies.push(Zombie(_name,_dna));

함수는 기본적으로 public으로 선언. 즉 공개됨
private으로 선언하면 비공개 가능
private 키워드는 함수명 뒤에 적고, 주로 언더바 로 시작함

uint[] numbers;
function _addToArray(uint _number) private {
  numbers.push(_number);
}

여기서 uint[] numbers는 어떤 의미?

반환값
자료형을 변수 앞에 사용하는 거 같아
값을 반환 받으려면,

string greeting = 'whats up';
function Hello()public **returns(string)**// 반환값 종류를 포함{return greeting;
  }

함수 제어자
view 함수로 선언

function sayHello() public view returns(string){}

데이터를 변경하지 않고 보기만 한다는 뜻

pure함수로 선언

function _multiply(uint a,uint b)private pure returns(uint){
return a*b;}

반환값이 인자에 따라 달라진다. 다만 앱에서 어떤 데이터도 접근하지 않는다.

함수의 반환값이 랜덤이기를 원한다면;
keccak256을 사용. 스트링변화 시켜 완전히 다ㅣ른 해시값 생성.

형변환

uint a를 uint8 a로 변환하려면

uint8(a)로 나타내면 된다

띄어쓰기가 좀 중요한가봐

이벤트

특정 액션이 발생했을 때 행동을 취한다.

//이벤트 선언
event IntegersAdded(uint x, uint y, uint result);
funciton add(uint_x,uint_y) public{
 uint result =_x+_y;

이벤트를 실행하면 add함수가 실행되면 알린다.

IntegersAdded(_x,_y,result);
return result;

좋은 웹페이지 즐겨찾기