
개발환경 Blockchain client : Ganache Wallet : Metamask Smart Contract : Remix 이번시간에도 마찬가지로 Ganache를 실행하고 두개의(1번 Account, 2번 Account) Account를 Metamask에 등록하고 Smartcontract를 통해 ERC20 토큰을 발행한다. 그리고 2번 Account로 토큰을 구매해본다. Account 등록 아래 그림처럼 두개의 public key가 있는 두개의 Account를 Metamask에 등록한다. Smartcontract 배포 ERC20 기반의 토큰 발행 contract는 다음과 같다. pragma solidity ^0.4.4; /*erc20 interface*/ contract Token { funct..

개발환경 Blockchain client : Ganache Wallet : Metamask Smart Contract : Remix Block Chain 실행 Ganache를 이용해 블록체인 네트워크를 구성한다. Ganache는 설치가 매우 간편하고 실행도 매우 간편하다. 아래 그림처럼 Ganache를 quickstart로 실행한다. 참고로 사용해보니 ganache 테스트 네트워크를 구성하긴 정말 편한데 잘 죽음... MetaMask에 Account 등록 Ganache에 있는 Account를 Metamask에 등록시켜야한다. 먼저 아래 그림 빨간줄 위에 키 모양을 눌러 맨 위에 Account의 Priavtekey를 얻는다. Privatekey는 아래처럼 나오는데 저걸 복사한다. 메타마스크를 실행하여 계정..
솔리티디 버전 pragma solidity ^0.4.21 솔리디티는 컴파일 버전별로 컴파일을 할 수 있다. 즉, 컴파일러 버전을 지정할 수 있다. 스마트 컨트랙트 기본 구조 스마트 컨트랙트의 기본 구조는 아래와 같다. // 1. 컨트랙트 선언 contract Sample { // 2. 상태 변수 선언 uint256 data; address owner; // 3. 이벤트 정의 event logData(uint256 dataToLog); // 4. 함수 변경자 정의 modifier onlyOwner() { if(msg.sender != owner) throw; _; } // 5. 생성자 function Sample(uint256 initData, address initOwner) { data = initDa..

EVM 실행 구조 Program Counter 프로그램 카운터는 다음 차례에 실행할 EVM 명령어의 위치를 가리킵니다. Program 프로그램 영역에는 EVM이 실행할 스마트 컨트랙트의 EVM 명령어 목록을 보관합니다. Stack 연산에 필요한 데이타를 저장하는 공간으로 32바이트 크기의 값들이 저장되며, 최대 2014개가 저장될수 있습니다. Storage 블록체인에 영구적으로 기록하기 위한 저장공간으로 스토리지의 구조는 키/값을 매핑하기위한 구조이며, 키/값은 모두 256비트 크기를 사용합니다. 이더리움의 모든 어카운트는 별도의 스토리지를 가지고 있으며, 다른 어카운트의 스토리지에 있는 데이타를 읽어오거다 값을 쓸수 없습니다. Memory 함수를 호출하거나 메모리 연산을 수행할때 임시로 사용되는 공간입..

시작 전 Web3 version 저는 Web3 1.2.4v을 사용했습니다. Contract 를 배포하는 과정과 사용하는 과정은 다음과 같습니다. Contract 배포 순서 Contract 작성 -> 컴파일 -> Contract 객체 생성(ABI포함) -> Contract 인스턴스를 이용해 deploy 생성 후 send Contract 사용 순서 Contract 객체 생성(ABI, 배포된 Contract Address) -> Method 호출 SmartContract 작성 먼저 SmartContract를 Solidity라는 언어로 작성 해줍니다. 저는 편의를 위해 Remix에서 작성했습니다. Remix는 https://remix.ethereum.org 에서 사용이 가능합니다. 먼저 아래의 그림처럼 간단하게..

node 실행 옵션 난 총 3개의 노드를 구성했고 3개의 노드를 static_nodes로 연결하였다. 그리고 각각의 노드의 실행 옵션은 다음과 같다. 첫번째 노드 실행 nohup geth --networkid 201951281022 --nodiscover --datadir . --maxpeers 3 --rpc --rpcaddr "0.0.0.0" --rpcport 3016 --rpccorsdomain "*" --rpcapi "admin,db,eth,miner,net,shh,txpool,personal,web3" --port 30000 --allow-insecure-unlock 2>> ./geth.log & 두번째 노드 실행 nohup geth --networkid 201951281022 --nodiscov..

Private Block chain 만들기(Geth 백그라운드 실행) 이번 포스트에서는 Geth를 백그라운드로 실행시키고 실행 옵션에 rpc options를 추가시켜 web3로 간단하게 이용가능하도록 Geth 실행에 관련한 내용을 적는다. Geth Background로 실행 기본적인 백그라운드 실행 명령은 다음과 같다. nohup geth --networkid 201951281022 --nodiscover --maxpeers 0 --datadir . --mine --minerthreads 1 --rpc 2>> ./geth.log & 만약 위 명령을 실행 중 ps가 자동으로 종료되면 geth.log를 확인해 봐야할 것이다. 그러나 대부분 --mine , minerthreads 때문일 것이다. 그 이유는 최..
목록 Ethereum 환경설정 [1탄]-#1.Ethereum Client의 종류와 Geth 설치 Ethereum 환경설정 [2탄]-#2.Geth 초기 설정 Ethereum 환경설정 [3탄]-#3.Geth 실행 옵션 Geth 실행 옵션 --mine채굴 활성화--rpcHTTP-RPC 서버를 활성화하고, 별도의 콘솔을 연결할 때 필요한 옵션--nodiscover생성자의 노드를 다른 노드에서 검색할 수 없게 하는 옵션--maxpeers피어를 연결할 최대 허용치--datadir Chaindata와 Keystore 등 데이터를 저장할 위치 --console 노드에 명령어를 전달할 수 있는 자바스크립트 콘솔 --rpcaddr HTTP RPC Server 호스트 (Default : localhost) --rpcport..

목록 Ethereum 환경설정 [1탄]-#1.Ethereum Client의 종류와 Geth 설치 Ethereum 환경설정 [2탄]-#2.Geth 초기 설정 Ethereum 환경설정 [3탄]-#3.Geth 실행 옵션 Make Datadir 하나의 node로 동작할 디렉터리를하나 만들어 줍니다. 하나의 이더리움 네트워크에서 여러개의 노드를 실행하고 싶으면 여러 디렉터리를 만들어 연결시켜주면 됩니다. %mkdir ~/[Datadir 이름] 저는 밑의 그림처럼 경로를 만들었습니다. 이제 노드로써 ethereum network에 참여하기위한 준비를 합니다. Genesis Block 생성 private network로 구성할꺼라 genesis block을 설정해줘야 합니다. 이 genesis 설정에 따라 priva..