soudegesu / blog

soudegesu's blog post
https://www.soudegesu.com/
1 stars 0 forks source link

Ethereumの練習 #52

Closed soudegesu closed 6 years ago

soudegesu commented 6 years ago

開発者向けコミュニティに入るために頑張る https://qiita.com/amachino/items/605ff76209d7193dc92c

soudegesu commented 6 years ago

入るためには Ropsten の 1Ethが必要らしいので取りに行く

soudegesu commented 6 years ago

Metamask がいろんなサイトで紹介されているけど、パクられたらやなので、普段使いじゃない FireFoxにpluginをインストールする

soudegesu commented 6 years ago

パスワードと12単語をコピって保存しておく

soudegesu commented 6 years ago

Ropsten Testネットで Buy する

soudegesu commented 6 years ago

「request 1 ether from faucet」 を押して拝借する

soudegesu commented 6 years ago

getできたので 開発者コミュに入れた

soudegesu commented 6 years ago

教材は何がよいだろうか http://block-chain.jp/tech/ethereum-learning-for-engineer/ https://book.ethereum-jp.net/first_use/installing_geth.html

soudegesu commented 6 years ago

やっぱudemyか

soudegesu commented 6 years ago

Gethをインストールする

soudegesu commented 6 years ago
brew tap ethereum/ethereum
brew install ethereum
soudegesu commented 6 years ago

プライベートネットを作成する

mkdir ~/workspace/eth_private_net
soudegesu commented 6 years ago

jsonファイルを作成する.

{
  "config": {
    "chainId": 15
  },
  "nonce": "0x0000000000000042",
  "timestamp": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "",
  "gasLimit": "0x8000000",
  "difficulty": "0x4000",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {}
}

ブロックチェーン情報の初期化

geth --datadir ~/workspace/eth_private_net init ~/workspace/eth_private_net/myGenesis.json
soudegesu commented 6 years ago

こんなのが出た

INFO [02-26|16:35:29] Maximum peer count                       ETH=25 LES=0 total=25
INFO [02-26|16:35:29] Allocated cache and file handles         database=/Users/takaaki-suzuki/workspace/eth_private_net/geth/chaindata cache=16 handles=16
INFO [02-26|16:35:29] Writing custom genesis block
INFO [02-26|16:35:29] Persisted trie from memory database      nodes=0 size=0.00B time=13.347µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-26|16:35:29] Successfully wrote genesis state         database=chaindata                                                      hash=7b2e8b…7e0432
INFO [02-26|16:35:29] Allocated cache and file handles         database=/Users/takaaki-suzuki/workspace/eth_private_net/geth/lightchaindata cache=16 handles=16
INFO [02-26|16:35:29] Writing custom genesis block
INFO [02-26|16:35:29] Persisted trie from memory database      nodes=0 size=0.00B time=2.303µs  gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [02-26|16:35:29] Successfully wrote genesis state         database=lightchaindata                                                      hash=7b2e8b…7e0432
soudegesu commented 6 years ago

通常の通貨のトランザクションは

soudegesu commented 6 years ago

hold on your hat 驚かないでね。(乞うご期待的な意味)

soudegesu commented 6 years ago

UTXO という仕組みがある http://gaiax-blockchain.com/utxo

soudegesu commented 6 years ago

Ethereum はUTXOを使っていないのか

soudegesu commented 6 years ago

EthereumProof of Stake を採用しているらしい https://coinotaku.com/?p=1302

soudegesu commented 6 years ago

大きく2つあるらしい

soudegesu commented 6 years ago

Ethereum は今はProof of work を採用しているが将来的には Proof of Stake に以降する。 でも予定は未定。 段階的アプデートが提唱されていて、以下のようなプロジェクトが存在する。

soudegesu commented 6 years ago
Proof of WorkからProof of Stakeに移行する際にマイナーがProof of Workを採用しているブロックチェーンに残り続けないように、ディフィカルティボムという仕組みが予め定められていました。このデフィカルティボムは、Proof of Workのままではマイナーの採算が合わなくなるように、マイニングの難易度を徐々に上げていくというものです。
soudegesu commented 6 years ago

Ethereum 上でのPoSの実装が Casper で 不正なトランザクションを 承認した場合に与える罰としての仕組みとして Slasher も提案されている

soudegesu commented 6 years ago

マイニング承認システム と トランザクションアルゴリズム を注目すると良い

soudegesu commented 6 years ago

3layer model

soudegesu commented 6 years ago

INFURA っていうサービスがあるのか。知らなかった。

soudegesu commented 6 years ago

pseudonymity: 偽名

soudegesu commented 6 years ago

Bitcoinは1MB/blockなため4トランザクション/s, 4million gasのためEthは 20トランザクション/s

soudegesu commented 6 years ago

Visaカードは40000トランザクション/sでさばいているからそれに比べるとしょぼい

soudegesu commented 6 years ago

Ethのマークル木 https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/

soudegesu commented 6 years ago

ganache はエミュレータらしい

soudegesu commented 6 years ago

以下を実行する

puppeth

こんなの出てきた

+-----------------------------------------------------------+
| Welcome to puppeth, your Ethereum private network manager |
|                                                           |
| This tool lets you create a new Ethereum network down to  |
| the genesis block, bootnodes, miners and ethstats servers |
| without the hassle that it would normally entail.         |
|                                                           |
| Puppeth uses SSH to dial in to remote servers, and builds |
| its network components out of Docker containers using the |
| docker-compose toolset.                                   |
+-----------------------------------------------------------+
soudegesu commented 6 years ago

NetworkNameを決める

ChainSkills
soudegesu commented 6 years ago

GenesisBlockを作成する 2 を入力

soudegesu commented 6 years ago
Which consensus engine to use? (default = clique)
 1. Ethash - proof-of-work
 2. Clique - proof-of-authority

PoWのどのアルゴリズムを採用するか選ぶ。今回は 1

soudegesu commented 6 years ago

アカウントは何も押さずにEnter

Which accounts should be pre-funded? (advisable at least one)
> 0x
soudegesu commented 6 years ago

使うNetworkIDは

1がMainnet
2がMorden test net(obsolete)
3がRopsten test net
4がRinkeby test net
42がKovan test net 
soudegesu commented 6 years ago
Specify your chain/network ID if you want an explicit one (default = random)

今回は 4224 とする

soudegesu commented 6 years ago
What would you like to do? (default = stats)
 1. Show network stats
 2. Manage existing genesis
 3. Track new remote server
 4. Deploy network components
> 2
soudegesu commented 6 years ago
 1. Modify existing fork rules
 2. Export genesis configuration
 3. Remove genesis configuration
> 2
soudegesu commented 6 years ago
Which file to save the genesis into? (default = ChainSkills.json)
>
INFO [03-03|06:09:57] Exported existing genesis block
soudegesu commented 6 years ago

ここまで来ると1周するので Cntl + C でExitする

soudegesu commented 6 years ago

ChainSkills.json が出来ている

soudegesu commented 6 years ago

config ブロックがChainのパラメータ

config: {
    "chainId": 4224, //さっき指定したNetworkのID
    "homesteadBlock": 1,
    "eip150Block": 2,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 3,
    "eip158Block": 3,
    "byzantiumBlock": 4, //ビザンティウムにおける4block目から開始
    "ethash": {}
},
 "nonce": "0x0",
 "timestamp": "0x5a99bb29", // difficultyが設定されたtimestamp。これとの差が大きければdifficultyが下がる。また、blockのオーダーにも使用される。
 "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", //付加情報(ラベルとか)。今回は使わない
 "gasLimit": "0x47b760", // gasのトランザクション最大数。各ブロックの処理要求の制限に利用。
 "difficulty": "0x80000", // 値が低い方がいいらしい
 "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "coinbase": "0x0000000000000000000000000000000000000000", // マイニング成功後に取得できるアドレス(新block追加時にマイナーの新しいアドレスに置き換わる)
 "alloc": { // preallocate されたwalletのアドレス
    "0000000000000000000000000000000000000000": {
      "balance": "0x1"
    },
   "number", "0x0",
   "gasUsed": "0x0" //このブロックで使用されたgas
  "parent": "0x0000000000000000000000000000000000000000000000000000000000000000" //親のhash(今はないから0)
soudegesu commented 6 years ago

初期化をする

geth --datadir ./private init ./ChainSkills.json 
soudegesu commented 6 years ago
INFO [03-04|06:55:40] Maximum peer count                       ETH=25 LES=0 total=25
INFO [03-04|06:55:40] Allocated cache and file handles         database=/xxxx/private/truffle-test/private/geth/chaindata cache=16 handles=16
INFO [03-04|06:55:40] Writing custom genesis block
INFO [03-04|06:55:40] Persisted trie from memory database      nodes=354 size=65.02kB time=2.714835ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [03-04|06:55:40] Successfully wrote genesis state         database=chaindata         hash=5ef01e…4055b0
INFO [03-04|06:55:40] Allocated cache and file handles         database=/xxxx/private/truffle-test/private/geth/lightchaindata cache=16 handles=16
INFO [03-04|06:55:40] Writing custom genesis block
INFO [03-04|06:55:40] Persisted trie from memory database      nodes=354 size=65.02kB time=2.125845ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [03-04|06:55:40] Successfully wrote genesis state         database=lightchaindata              hash=5ef01e…4055b0
soudegesu commented 6 years ago

なんかファイルが更新された。 ここでは初期化されただけっぽい

soudegesu commented 6 years ago
geth --datadir . account new   
soudegesu commented 6 years ago

パスワード作成を要求されるので適当に打ち込む

soudegesu commented 6 years ago

addressが出てきた

Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase:
Address: {2f048cd640f7de2fbde6eb611884c0c1f57b28f0}
soudegesu commented 6 years ago

↑のコマンドを実行するたびにアカウントが作成できる