'블록체인/geth'에 해당되는 글 2건

  1. 2018.12.21 geth ropsten 연동.
  2. 2018.10.06 go언어 (c, java, javascript와 비교)

private으로 geth를 돌리다가 ropsten과 연동해서 잘 돌아가는 script는 다음과 같다.



ropstenGenesis.json

{
"config": {
"chainId": 3,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 10,
"eip158Block": 10,
"eip160Block": 10
},
"difficulty": "0x100000",
"gasLimit": "0x1000000",
"alloc": {
"49.....<주소>...2ea":
{ "balance": "0" }
},
"coinbase" : "0x49...<주소>...2ea",

"extraData" : "0x3535353535353535353535353535353535353535353535353535353535353535",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}


ropstenInit.sh


./geth removedb
rm -rf /Users/USERNAME/Library/Ethereum/geth/testnet/transactions.rlp
rm -rf /root/.ethash
./geth --identity "myRopsten" --maxpeers 3 --networkid 3 init ./ropstenGenesis.json


ropstenStart.sh

nohup ./geth --testnet --syncmode "fast" --bootnodes "enode://63327...@52.232.243.152:30303,

enode://94c15@192.81.208.223:30303" --rpc --rpcaddr "127.0.0.1" --rpcport "8545"

--rpcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --rpccorsdomain "*" --networkid 3

--port 30303 --maxpeers 3 --metrics --mine --minerthreads 1 --cache=3072

--miner.etherbase="0x49...2ea"&


ropstenAttach.sh

./geth attach ipc:/Users/USERNAME/Library/Ethereum/testnet/geth.ipc


Posted by yongary
,

geth (이더리움 go client)를 분석 수정하려면, go언어 공부가 필요하다.


[go 언어]


  - 설치: https://golang.org/dl/
  - 편집: IntelliJ + go sdk plug-in 추천  

  - 환경변수: GOPATH  -  workspace 위치
                    GOROOT - go실행파일이 설치된 경로    

                    $go env 로 환경변수 확인가능

  - 학습사이트:  REF




[c와 java/javascript 익숙자 기준 go언어의 차이]


변수Type  (다양한 길이별로 지정이 가능하다)

- int int8~int64, uint uint8~uint64 uintptr, float32 float64 complex64 complex128

- rune: int32과 동일하며 유니코드 코드포인트에 사용


문자열 (java의 단점이던 멀티라인 문자열 지원)

- '원어퍼스트로피' 를 사용하면, 멀티라인 스트링이 되고, 그 안에 있는 \n등도 해석하지 않고 그대로 사용.

 

포인터 지원 (c처럼 &, * 를 통한 포인터 지원)


함수 (1st class함수)

-  javascript처럼 함수를 파라미터로 넘길 수 있음

-  javascript처럼 closure방식 함수 사용 가능


패키지 (java 처럼 pkg단위로 모듈관리)

- 디폴트 pkg 위치는 GOROOT/pkg 참조

- pkg는 init() 함수를 가질 수 있고, 임포트시에 _ 를 붙이면 임포트 안하고 init()만 호출한다.


defer / panic / recover

- defer는 java의 finally와 비슷하게 최종적으로 실행이 됨

- panic은 c의 exit같은 개념인데, defer함수들은 다 실행하면서 종료함. (좋아 보임)

- panic상태를 recover()릍 통해 회복도 가능







Posted by yongary
,