이더리움 스마트 컨트랙트 - NomadJin/Blockchain-Study GitHub Wiki

이더리움 스마트 컨트랙트 프로그래밍(Windows)

1. 계정 생성 + 마이닝

Mist 설치

클라이언트 다운로드 확인

C:\Users\사용자계정\AppData\Roaming\Mist\binaries\Geth\unpacked\geth

geth 클라이언트 실행하기

C:\Users\Administrator\AppData\Roaming\Mist\binaries\Geth\unpacked>
geth --ipcpath test-net/test.ipc --datadir test-data --dev

geth console attach

C:\Users\Administrator\AppData\Roaming\Mist\binaries\Geth\unpacked>
geth attach //./pipe/test-net/test.ipc

Mist 실행

C:\Program Files\Mist>Mist --rpc //./pipe/test-net/test.ipc

계정 생성

Geth console 에서 계정 생성하기
> eth.accounts
[]

> personal.newAccount()
Passphrase : <Enter your password>
Repeat passphrase : <Enter your password>

> eth.accounts

Mining 제어하기

마이닝 시작 : 
miner.start()

마이닝 중지 : 
miner.stop()

트랜잭션

트랜잭션에 포함되는 정보
1. 수신자(recipient)
2. 송신자(sender)를 식발할 수 있는 시그니쳐
3. 송신 금액(value)
4. 데이터 필드(선택사항) : 컨트랙트에 보내는 메시지
5. Startgas : 최대로 소비할 수 있는 가스량
6. Gasprice : 수신자가 지불할 가스당 이더

geth command line option

https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options

geth --identity "testChain" --rpc --rpcport "8080" --rpccorsdomain "*" --datadir "c:/privateChain" --port "30303" --nodiscover --rpcapi "db, eth, net, web3" --networkid 1999 console
--identity : 내 프라이빗 노드의 아이덴티티
--rpc : RPC 인터페이스 가능하게 함
--rpcport "8080" : RPC 포트 지정
--rpccorsdomain "8" : 접속 가능한 RPC 클라이언트 URL 지정. 가능한 *(전체 허용) 보다는 URL을 지정하는게 보안상 좋음
--datadir : 커스텀 디렉토리 지정
--nodiscover : 같은 제네시스 블록과 네트워크 ID에 있는 블록에 연결 방지
--rpcapi "db, eth, net, web3" RPC에 의해서 접근을 허락할 API
--networkid 1999 console : 출력을 콘솔로 함

참고로 마아닝이 가능하도록 실행하려면 --mine 옵션을 설정해야 한다. 이 설정을 이용하려면 미리 사용자 계정을 만들고 이 계정을 마이닝 결과물인 Ether를 받을 Etherbase 로 설정을 한 후에야 유효하다

> personal.newAccount("Jin")
> eth.Accounts
> miner.setEtherBase(personal.listAccounts[0])
> miner.setEtherBase("0xc4a1bde8d5e1da6b1ec4c761481c7e63f45e0696")
> miner.start()
> miner.start(2) // 마이닝 스레드를 2개로 실행하는 것도 가능
> eth.getBalance(eth.accounts[0])