본문 바로가기

BlockChain

스마트 컨트렉트, WEB3, 솔리디티

스마트 컨트랙트 : 코드실행 (솔리디티) 스크립트 실행

 

가나쉬 : 알트코인의 데몬을 간단하게 만듬 (이더리움)

            100 이더를 가지고 있는 주소 10개를 준다.

             데몬처럼 P2p기능을 가지고 있다.

 

데몬 : p2p기능을 가지고 있다.

 

이더리움 rpc통신을 할 수 있는 데몬을 통해서 스마트 컨트렉트를 할 거.

스마트 컨트렉트는 솔리디티 언어로 작성할 것임.

 

# Setting

 

node js환경에서 세팅 가능

 

1. npm install -g truffle

2. npm install -d ganache-cli

3. npm install web3

 

web3란?

 

rpc 통신을 쉽게 구현할 수 있게 도와주는 라이브러리.

 

원래 알트코인 rpc통신을 하려면 express, request설치를 하고 request에다 rpc 통신을 했던 내용들을 넣어서 응답을 받는 방식으로 처리했음

이게 server내용인데 만약 client에서 react, next, html 페이지 등에서 rpc통신을 한다면?

 

client -> server -> daemon

daemon -> server -> client

 

위의 두 구조처럼 서버를 거치지 않고도 client에서 바로 데몬으로 요청하게 해주는 것이 web3이다.

그래서 비동기통신 코드를 많이 사용

 

4. ganache-cli --host 0.0.0.0

위 명령어로 터미널에서 가나쉬를 실행한다.

 

# GAS

이더리움 스마트 컨트랙트를 배포하고 실행할때 사용되는 수수료.

hello 라는 슬자ㅡㄹ ox713o494orekdjf39 라는 주소값에 보내겠다. 라고 할때도 수수료를 지불해야 한다.

 

block header {

nonce

merkleroot

priviousHash

}

 

- 가스 가격 (GAS price)

스마트 컨트렉트(트렉젝션)를 발생할때 이것을 작성한 사람이 설정하는 가스가격이다.

 

- 가스 한도 (GAS limit)

최대 수수료의 한도를 정하는 것.

 

가나쉬 데몬의 rpc 통신을 통해서 특정주소에 있는 이더리움의 갯수를 구할 수 있다.

 

0.0.0.0:8545 eth_getBalance

주소로 100eth 나올 수 있게끔 rpc 통신을 할 것.

 

curl 쉘 스크립트 사용.

 

  1. eth_accounts
  2. eth_getBalance [주소값]

 

curl -X POST -d '' http://127.0.0.1:8545

result : 400 Bad Request : 객체로 안보내 주었기 때문.

 

curl -X POST -d

'{

"jsonrpc":"2.0",

"method":"eth_getBalance",

"params":["0x674389218b85bDd9B739b81e2BF35E7a50347342"]

}' http://127.0.0.1:8545

result : {"jsonrpc":"2.0","result":"0x56bc75e2d63100000"}    // 주소를 알려준다.

 

- 단위



# hello.sol

npm uninstall solc

npm install -g solc

solcjs --version // 버전확인

 

solidity 패키지 깔아주면 sol 파일 색상 변경 가능

 

sol 파일 실행시 solcjs --bin --abi [파일명]

'BlockChain' 카테고리의 다른 글

부트스트랩 노드  (1) 2022.03.28
[EVM] 이더리움 가상머신  (0) 2022.03.21
머클 패트리시아 트리  (0) 2022.03.14
openethereum 메인넷 구축  (1) 2021.11.30
스마트 컨트랙트 연산 gas(가스) 소모  (0) 2021.10.26