일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nodejs
- Solidity
- ethereum
- 앵커링
- 프레임워크
- 제어자
- Klaytn
- 접근제어자
- Geth
- 웹
- Klaytn API Service
- web3
- 블록체인 구조와 이론
- blockchain
- vue.js
- javascript
- vue
- frontend
- geth구현
- 블록체인
- 솔리디티
- 서비스체인
- SCN
- 이더리움
- kas
- web3.js
- 프론트엔드
- Web
- 클레이튼
- API
- Today
- Total
BloCCat
Geth?(2) 본문
EOA(외부 소유 계정)
1. 계정 생성
> personal.newAccount("pass0")
> personal.newAccount("pass0")
INFO [07-01|14:17:27.734] Your new key was generated address=0x473ff478059866035d494554a4A02AAa61E8c3d0
WARN [07-01|14:17:27.737] Please backup your key file! path=c:\\testnet\\keystore\\UTC--2021-07-01T05-17-26.178533300Z--473ff478059866035d494554a4a02aaa61e8c3d0
WARN [07-01|14:17:27.741] Please remember your password!
"0x473ff478059866035d494554a4a02aaa61e8c3d0"<= EOA
2.계정 확인
> eth.accounts
순서대로 accounts[0], accounts[1]
채굴(Mining)
1.코인베이스 계정 조회 및 마이너(채굴자) 설정
coinbase : 기본적으로 accounts[0]으로 설정
> eth.coinbase
> miner.setEtherbase(eth.accounts[0])
eth.account[0] = eth.coinbase = "0x473ff478059866035d494554a4a02aaa61e8c3d0"
2. 코인베이스 계정 잔고 확인
> eth.getBalance("0x473ff478059866035d494554a4a02aaa61e8c3d0")
0
> eth.getBalance(eth.coinbase)
0
> eth.getBalance(eth.accounts[0])
0
-> 다 같은 명령어.
3. 블록 길이 확인
블록 길이 = 제네시스 블록 이후 생성된 블록의 개수
> eth.blockNumber
0
> miner.start(1) ⇐ 마이닝 시작 / 1은 스레드 개수( 스레드 개수가 많을 수록 블록을 빨리 만듬)
Successfully sealed new block number=1 : 첫번째 블록 생성
> miner.stop() ⇐ 마이닝 중지
> eth.blockNumber
57
=> 마이닝 후 블록 길이가 57이 됨 = 57개의 블록 생성
4. 채굴 후 잔고 확인
1) 채굴 후 채굴자는 블록채굴(생성)에 대한 보상으로 블록 생성한 블록 하나당 5이더를 받는다
채굴보상 = 블록길이 * 5
채굴자 = eth.coinbase = eth.accounts[0]
> eth.getBalance(eth.coinbase)
285000000000000000000 (1ether = 1000000000000000000 wei)
> web3.fromWei(eth.getBalance(eth.coinbase), "ether")
285
2) 채굴자가 아닌 eth.accounts[1] = pass1 은 보상없음.
> web3.fromWei(eth.getBalance(eth.accounts[1]), "ether")
0
5. 이더 송금
1) 첫번째 계정에서 두번째 계정으로 10 이더 송금
accounts[0] -> (10ether) -> accounts[1]
> eth.sendTransaction({ from: eth.accounts[0], to: eth.accounts[1], value: web3.toWei(10, "ether") })
2) 계정이 잠겨있어서 송금 불가 -> 계정을 잠금을 해제해줘야 함
> personal.unlockAccount(eth.accounts[0], "pass0", 0)
계정잠금 해제 방법
> personal.unlockAccount(eth.accounts[0])
> personal.unlockAccount(eth.accounts[0], "pass0")
> personal.unlockAccount(eth.accounts[0], "pass0", 0) 잠금할 계좌, 패스워드, 잠금 시간(0이면 영구)
3) 계류중인 트랜잭션 확인 (미결재된 서류라고 생각하면 될듯)
> eth.pendingTransactions
4) 트랜잭션이 계류중일 때, 마이닝(채굴)을 시작하면 트랜잭션이 처리된다 (서류 결재 완료)
- 채굴 종료후 계류된 트랜잭션은 없고 두번째 계좌(eth.accounts[1])에 10이더가 송금된 것을 확인
- 첫번째 계좌의 돈이 늘어난 이유는 채굴을 새로 해서 보상을 받았기 때문.
6. 채굴자가 아닌 일반 계좌(두번째, 세번째 계좌) 끼리 거래할 경우
위와 같은 방법으로 두번째 계좌를 unlock하고 두번째 계좌에서 세번째 계좌로 5ether송금
1) 세번째 계좌는 두번째 계좌로부터 5ether를 송금 받았으므로 5eher가 있음
2) 두번째 계좌는 원래 10ether가 있었으나 5ether를 세번째 계좌로 주고 그에 따른 수수료(0.000021ether)를 첫번째 계좌에게 자동 송금
3) 첫번째 계좌는 두번째 계좌로부터 수수료를 받아 0.000021ether가 추가됨
수수료 = gas / gasPrice (ether)
7.Recieipt(수수료) 확인
> eth.getTransactionReceipt(eth.getBlock(63).transactions[0])
확인할 블록은 트랜잭션이 담긴 블록.