Skip to content
tjdrn0809 edited this page Sep 2, 2021 · 18 revisions

** 솔리디티 개발 환경 구축!! **

구글 검색창에 node.js 검색후 LTS 또는 current 다운로드 ~ 다운로드 하면 npm을 사용 할 수 있는것이다.

또 구글창에 truffle eth 를 검색 해보면 설치 명령어인 npm install -g truffle 이란 명령어를 알 수 있다.

이제 프로젝트를를 만들어주고 truffle init 을 해주면 필요한것들을 다운받아준다. (다운받아져야할 것들 truffle compile/migrate/test)

이제 이 프로젝트를 편집기 사용하여 구조확인 (ATOM, visual studio code .. 등등 )

시작하기전!! 솔리디티 사용하기위해서 플러그인에서 intellij-solidity 다운로드하면 좋다. (구문 강조 기능, 컴파일 전 오류를 감지 기능 등을 제공합니다.)

contract에 솔리디티언어로 된 파일을 만들어 준다. ( Demo )

솔리디티문장이 잘 돌아가는지 확인하기위해서 네트워크가 필요하다. (port 번호 항상 확인) ( ganache - 개발용 네트워크 ) : 구글창에 ganache eth 하면 다운받을수있다. 혹시나 윈도우 사용시 명령어 (설치 npm install -g ganache-cli ) , (실행 ganache-cli -u 0 )

이제 배포를 해서 잘 돌아가는지 확인을 해야하는데 배포를 하려면 migrations에 자바스크립트 파일을 만들어 줘야한다!!(2_deploy_hello 이런식 꼭 이 형식을 맞추지는 않아도 되는거 같다. )

migrations에 만든 js파일에는 기존 migrations에 있던 내용을 복붙해와서 contract 안에 만들어준 Demo를 가져와주면 된다.(스크립트 짜는 내용은 https://www.trufflesuite.com/docs/truffle/getting-started/running-migrations 가시면 상세하게 잘 나와있습니다 ) 드러갈땐 구글창에 truffle eth 치면 나온다.

이제 배포가 잘 됐는지 터미널을 이용해서 truffle migrate 를 해주면 잘 돌아가는지 알수있다.!! (한번에 되면 너무 좋지만 혹시 에러가 떴을 경우 구글링을 통해 해결해보기..) 가장 많이 나오는 오류가 ( 1. networks 안에 꼬리표 확인 / 2. contract 이름 확인 )

  1. network 확인 const Demo = artifacts.require("./Demo");

module.exports = function (deployer) { deployer.deploy(Demo); };

  1. 가져올 contract 가 맞는지 확인 const Demo = artifacts.require("./Demo");

module.exports = function (deployer) { deployer.deploy(Demo); };

SmartContract 생성 및 배포 함수 테스트!

목차 {1.생성, 2.배포, 3.테스트}

truffle 이용한 solidty개발 시작

캡처

필요한것 : node.js / npm npm install -g truffle / granche-cli -> https://truffleframework.com/ganache

  1. 생성 openzeppelin-solidity 라이브러리 만들기 openzeppelin라이브러리는 기본적이고 많이 사용되는 smartcontract코드를 모아놓은 라이브러리입니다.

(1) 스마트 컨트랙트 만들 폴더를 생산 터미널에서 mkdir 폴더이름 -> ex) mkdir smartcontract 폴더로 이동 -> cd smartcontract

(2) 트러플 초기화 truffle init -> 커트랙트 개발에 필요한 truffle 초기화 및 sol소스 코드작성 (3) npm init (4) npm install -E openzeppelin-solidity openzeppelin-solidity 라이브러리가 설치완료

KakaoTalk_20210902_103104917

smartcontract폴더안에 (contracts / migrations / node_modules / test / truffle-config.js) 생성됨

  • contracts : 실제 우리가 solidity언어로 스마트컨트랙트를 작성하는 공간
  • mgrations : contracts 폴더에서 작업한 코드를 블록체인에 deploy하기 위한 코드
  • node_modules : 스마트컨트랙트 개발에 필요한 라이브러리
  • test : 테스트를 위한 폴더
  • truffle-config.js 통신을 위한 설정부분

(5) 통신을위해서 truffle-config.js 소스코드 수정

  development: { host: "127.0.0.1", // Localhost (default: none) port: 7545,  network_id: "*",  },

KakaoTalk_20210902_103105248

KakaoTalk_20210902_103105355

(6)가네쉬 연결 granche-cli -> https://truffleframework.com/ganache 가네쉬를 켜주고 포트번호를 확인후 맞춰준다 가네쉬 포트번호는 127.0.0.1 7545 이다. truffle-config.js 소스코에서 맞춤

(7)스마트컨트랙트 작성 KakaoTalk_20210902_103105027

 Demo.sol 파일에 작성 
 contract Demo {  // contract 이름을 Demo로 지정 - 파일명과 같게해주자

string public constant name = "DEMO token"; // 토큰의 이름은 TEST token string public constant symbol = "DEMO"; // DEMO라는 이름을 사용 uint public constant decimals = 18; // 소수점 18자리까지 사용하겠음 uint public constant INITIAL_SUPPLY = 1000 * 10 ** decimals; // 초기 발행량은 1000.000000000000000000 (소수점 18자리까지사용) string constant test = "You can not see this"; // public 표시가 없는 경우 해당 문구 볼 수 없음. }

  • 변수 선언시 public를 하지 않으면 외부에서 해당 변수를 찾을 수 없음
  • constant : 변하지 않는 변수 선언
  • public : 누구나 확인 할 수 있는 변수 선언
  • string : 문자열
  • uint : unsigned integer (부호(+,-) 없는 정수- 양수 범위를 2배로 늘리게 됨, 즉 이진수와 같은 십진수가 됨)

2.배포 (코드작성) migrations 폴더에 2_deploy_demo.js 파일을 생성

KakaoTalk_20210902_103105136

const DemoToken = artifacts.require("./Demo"); module.exports = function(deployer){ deployer.deploy(DemoToken); };

배포하기 truffle migrate 명령어 실행 KakaoTalk_20210902_103105489

배포완료 (build 폴더안에 json파일이 생성된걸 확인할 수 있음) KakaoTalk_20210902_103107943

이 코드파일에서 "abi": 라고 되어 있는 부분이 있음 ABI는 애플리케이션 바이너리 인터페이스(Application Binary Interface)라고 부름 모든 외부, 공개 함수의 선언 및 파라미터, 반환유형으로 구성된 인터페이스 ABI에서 계약을 정의하고, 계약함수를 호출하고자 하는 호출자는 ABI를 사용할 수 있음

KakaoTalk_20210902_103108124

"deployedBytecode" 부분 - 계약을 배포하기 위해서 이 바이트코드가 필요 계약의 배포를 위해서 바이트코드가 필요, 계약의 함수를 호출하기 위해서 ABI가 필요 계약을 배포하는 것 자체가 블록체인에서는 거래이기 때문에 계약을 배포했다는 건 거래가 생성된것 즉 바이트코드와 ABI는 계약을 배포하기 위해서 가장중요한 2가지요소

  1. 함수테스트 (remix.ethereum.org) KakaoTalk_20210902_104349522

sol파일을 만들어 소스코드를 입력하고 컴파일을 하여 에러가있는지 확인하고 컴파일을 완료한다.

KakaoTalk_20210902_104349637

ENVIRONMENT 왼쪽위에서 설정 > Web3 Provider 누르면 포트번호를 입력 가네쉬와 맞춰준다.

KakaoTalk_20210902_104349760

Deploy를 눌러 트랜잭션을 생성 52번째 블록과 0x13d0a4337alc90e3d818ea93e0963fb0fc6aba2e15ce9503 트랜잭션을 확인 KakaoTalk_20210902_104349882

가네쉬에서 52번째 블록과 같은 트랜잭션을 확인할수있다.