728x90

truffle migrate시에 

payable 부분에서 오류가 나서 참고를 하려고 했지만

 

팀원한테 물어보니 payable이 truffle버전 5이상부터 된다는 얘기를 해서 (하지만 관련문서를 찾아봐도 잘안나온다 솔리디티 버전에 관한 얘기는 있는데 "address payable not supported in solc 0.4.x or earlier." 나는 solc버전이 0.8이었어서...)

npm uninstall -g truffle 하고

npm i g truffle@5.5.0

로 다시 까니까 됐다.

 

 

 

 

 

 

(packagelock json이 이런거 통일시켜주는 애려나? 근데 그거 있으면 npm i 모듈 깔때 에러 떠서 삭제하고 하는데 흠...)

 

 

728x90
728x90

payable 이더를 받을때나 보낼때 쓰는 키워드

 

 

 

payable을 생성자에 넣을 때

 

 

생성자에 페이어블 넣으면 배포했을 때 생성자함수도 구현돼서 이더를 보낼수 있대

 

저 이더에 5넣고 배포 누르니까 빠져나감

 

 

 

특정계정 권한주기

 

 

modifier로 함수들에 조건 추가

 

 

 

 

강의: 인프런 솔리디티 깨부수기

728x90
728x90

솔리디티 (이더리움 등 블록체인 플랫폼에서 스마트 계약 작성과 구현에 사용되는 계약 지향 프로그래밍 언어)

쓸 때 여기서 바로 할 수 있긴한데

https://remix.ethereum.org/

 

Remix - Ethereum IDE

 

remix.ethereum.org

 

vscode 비주얼 스튜디오에서 작업하고 싶으니까 작업 환경을 설정해보자

 

먼저 당연히 깔려있어야할

 

비주얼스튜디오 설치

Visual Studio Code

Node.js 설치

Node.js

NPM설치

npm   (Node Packaged Manager를 전역에 설치. npm install -g npm)

 

트러플 설치!!

npm install -g truffle

 

 

트러플은 이더리움 프레임워크로 소스코드를 쉽게 compile,deploy 작업을 할 수있게 해줌

 

설치했으면 버전확인하고

 

이제

비주얼 스튜디오에 Solidity 솔리디티 확장자를 설치할거임!

vscode 열고 Ctrl + Shift + X 누르거나 여기 누르면 솔리디티 검색해서 깔면 됨!

 

(파이썬도 깔아줘야한대서 깔긴했는데 왜까는지 모르겠음..내가 본 문서에서는 얘기 없어서)

 

 

암튼 이제 됐고

truffle init

 

하면 

이렇게 생겨남

이제 내가 작업할 솔리디티 파일을 

constracts에 넣으면 됨 

클립토 좀비에서 레슨1의 완성된 코드 하나 가져와서 만듦

코드 복붙해보면 

 

지금은 안뜨는데 아까는 

이렇게 버전이 안맞다고 떴었음

여기 들어가서 Set compiler version을 0.4.19로 맞춰줘.

 

근데 난 이게 안됐음

알고보니까 솔리디티 확장자가 최신버전이더라고 

거기서 버전을 맞춰줘야됐었음

톱니바퀴 눌러서 환경설정 들어가면

 

여기서 버전 설정해주면 빨간줄 사라짐!!

 

환경설정 끝~~

 

 

 

이제 버전 문제 해결됐으면

 

truffle develop

디벨롭하고

run & deploy 누르고 

Activate하기 

 

 

 

 

그럼 이거 켜짐 

연결안되어있으면 connect

그리고 compile 누르면

 

여기서부터는 잘모르겠음..

deploy 누르고 

call해보고 했는데 뭘하려고 하는지 이해못함

 

 

 

728x90
728x90

스마트컨트랙트

 

 

객체지향언어의 class와 비슷하다

 

멤버 필드하나

생성자 하나

단일 클래스 만들어서 샐행하고 사용해보자

 

 

코드자동 컴파일

 

 

 

 

pragma solidity ^0.4.0;
contract SimpleCoin {
    //멤버 필드
    //public int num
    //map 변수 타입
    mapping (address => uint256) public coinBalance ;
    //mapping(string => addresss) public tenDatabase;
   // 생성자

    constructor() public {
        coinBalance
        [msg.sender] = 10000; //멤버필드 초기화
    }

    //메서드
    //해당주소에 얼마만큼 보내겟다
    function transfer(address _to, uint256 _amount) public {
        coinBalance[msg.sender] -= _amount;
        coinBalance[_to] += _amount;
    }
}

 

 


좀비 클립토에 있던 내용

솔리디티는 지수 연산도 지원하지 (즉, "x의 y승", x^y이지):

uint x = 5 ** 2; // 즉, 5^2 = 25

 

 

 

728x90

+ Recent posts