Develop/Blockchain

[블록체인/Inflearn] 리액트로 구현하는 이더리움 Dapp

안다희 2019. 4. 14. 10:15
728x90

리액트 - 프론트엔드

솔리디티 - 스마트컨트랙트 서버 로직

 

스마트 컨트랙트는 이더리움에 배포된다.

데이터도 이더리움에 저장된다.

 

* Dapp만의 특징?

- Decentralized Application 분산공유

- 자체적인 화폐 기능을 가지고 있다.

- 이더에 대한 소득세 x

 

2번째 강의 - 개발환경구성

프론트엔드 - 자바스크립트 기반

 

톰캣의 역할 : 가나쉬

stack exchange - ethereum 여기서 질문 많이

 

node.js 설치 후 

powershell에서 (꼭 관리자로 실행)

npm --version

npm install truffle

npm install -g --production windows-build-tools@3.1.0

python도 같이 설치됨

 

npm install -g node-gyp@3.8.0

 

글로벌하게 설치된 모듈 확인하기

npm list -g --depth 0

 

디렉토리 아무거나 만들어서

tuffle unbox react 이거 성공하면 잘된거임

 

========install truffle 오류나면============

npm uninstall truffle

npm init --yes

npm install --global --production npm-windows-upgrade

npm-windows-upgrade

이렇게 하고 다시 위 과정 따라하니까 잘됐음

===================================

 

https://truffleframework.com/ganache

 

Truffle Suite | Ganache

The Truffle suite of tools make dapp development easier and more consistent.

www.truffleframework.com

여기 가나쉬 다운받으슈 

 

<소스파일 작성도구>

- Yakindu

https://github.com/Yakindu/solidity-ide all-in-one

 

Yakindu/solidity-ide

Solidity plugin for Eclipse. Contribute to Yakindu/solidity-ide development by creating an account on GitHub.

github.com

https://www.itemis.com/en/yakindu/state-machine/download-options/?utm_campaign=YAKINDU%20Statechart%20Tools&utm_medium=email&_hsenc=p2ANqtz-8HbM6AUHQIb7IcVj6z2DKWEzqiM7EgtZXZTWxV2f983kUwVUt1HECYCGZ3fGVrdLE4F72zsYOG42fcTHUUmGkp5rQkDg&_hsmi=24598355&utm_content=24598355&utm_source=hs_automation&hsCtaTracking=ed6f6079-c3b9-4240-9e15-125d551eec93%7C165b6ffc-1673-4bd5-bd59-a9c16c79e7b4#standard-edition

 

YAKINDU Statechart Tools Download

YAKINDU Statechart Tools is a powerful tool for developing state machines. Download the Standard or Professional Edition now!

www.itemis.com

이메일로 다운로드 링크가 간다

 

이클립스 아이콘!

솔리디티용으로 바꿔놓은거 Help - 맨아래 보면 About 뭐시기 있음

 

- Atom

다운로드 받으면 됨

settings에 들어가서

install packages - linter-solidity

콘솔로 truffle 관련 해도됨

powershell 대신

 

- webstorm

- 등등

 

- IntelliJ

- Remix

 

결국은 truffle을 많이 쓴다

 

<컴파일>

변수 default는 private!?

public 은 읽기 전용 (쓰기 권한을 주지 않는 한)

 

프로젝트 디렉토리 만들기

파웨셸은 여러모로  좋다

 

폴더만들고

truffle init

dir

프로젝트 소스 폴더들이 자동으로 생성됨

정해진 소스폴더 구조대로 컴파일 배포 이런걸 자동화시켜주느 ㄴ프레임워크다.

contract dir 안에 sol 파일 넣어주면 됨

 

webstorm 깔아서 다시 하기 8분 30초

webstorm settings - plugin 에 solidity 검색해서 깔았다

 

pragma solidity ^0.5.0; //버전 업데이트 된 점

contract HelloWorld {

    string public greeting;

    constructor(string memory _greeting) public{ //memory를 써줘야하는점
        greeting = _greeting;
    }

    function setGreeting(string memory _greeting ) public{
        greeting = _greeting;
    }

    function say() public view returns(string memory) { // constant가 아니라 view인 점
        return greeting;
    }
}

조금 다를 수 있음 위에거가 맞는거임 질문에 truffle?이 업데이트돼서 그런겨

 

파워셀에서 해당 폴더로 간 다음

truffle compile

그러면 build에 json 파일 생김 같은 이름

 

abi, bin : 컴파일의 결과물

bytecode 이것도 확인~

 

truffle 쓰면 abi와 bin을 개발자가 손대지 않는다

향후에는 전혀 신경쓰지 않아도 된다.

 

abi : application binary interface - 애플리케이션에서 스컨의 메소드 호추하기위해 컨트랙트의 자세한 정보 있어야겠지 그런 역할

bytecode : 이더리움에 배포가 된다

 

배포를 위해서는 배포 스크립트, 배포 타켓(로컬 or 테스트넷 or 메인넷) 해줘야해 다음시간에!

 

 

 

 

<<배포(1)>>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://solidity.readthedocs.io/en/v0.5.0/050-breaking-changes.html 

 

Solidity v0.5.0 Breaking Changes — Solidity 0.5.0 documentation

Solidity v0.5.0 Breaking Changes This section highlights the main breaking changes introduced in Solidity version 0.5.0, along with the reasoning behind the changes and how to update affected code. For the full list check the release changelog. Note Contra

solidity.readthedocs.io

새로운 동전 던지기 소스코드

출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]