Syllabus - andyceo/documentation GitHub Wiki
Запись скринкаста: byzanz-record -a -c -d 3600 superstar.webm
Знакомство. Рассказ о формате, в котором будет происходить лекция (letsplay -> letshack). Можно повторять действия, прерывать, задавать вопросы.
google -> geth download, распаковка, запуск.
Наблюдение за нодой через htop
, sudo iotop -a
, netstat -tulpn
-
нет etherbase
-
размер кеша и папка для хранения blockchain
-
генезис-блок
-
конфигурация цепочки: ChainID=1
-
Сетевое взаимодействие: UDP, RLPx и адрес ноды
self=enode://cef254f261fb4566e764add3942eb1f54092ee863a643ecb6dd33c073473c8ab9e69efde2cb59cd00a5dc173de956bc4ccc0beab1228ed013d3701a266dfb5b9@[::]:30303
-
IPC-endpoint
- chainstate
- keystore
- nodekey и его связь с enode-адресом
geth attach [сокет]
Создать аккаунт: personal.newAccount("passphrase")
Список аккаунтов: eth.accounts, eth.coinbase
Разлочим аккаунт: personal.unlockAccount(address, "password")
Узнаем баланс etherbase: balance = web3.fromWei(eth.getBalance(eth.coinbase), "ether")
- Возможность указать разные папки для данных и ключей и ethash:
--datadir
,--ethash.dagdir
- Идентификатор сети:
--networkid
- Возможность указать сокет:
--ipcpath
- Синхронизация:
--syncmode=[full|fast|light]
- Взаимодействие с нодой:
geth attach
- Преднастроенная private-сеть:
--dev
3 ноды: 1 майнит, 1 для rpc, еще 1 для консенсуса
Скачайте genesis.json и поправьте его под свои нужды (идентификатор сети, адреса кошельков и т.п.)
Обращаем внимание на:
- "chainId": 4242
- секция "alloc".
Создадим папки для нод:
for i in {1..3}; do echo "Node $i mkdir"; mkdir -p /tmp/datadir/node$i /tmp/ethash/node$i; done;
Инициализируем все ноды нашим генезисом:
for i in {1..3}; do echo "Node $i init"; /tmp/geth init /tmp/genesis.json --datadir="/tmp/datadir/node$i"; done;
Запустим первую ноду:
/tmp/geth --networkid 4242 --nodiscover --maxpeers 3 --verbosity 6 --datadir="/tmp/datadir/node1" --port=30301
Скачайте static-nodes.json и поправьте его под свои нужды (адреса нод, порты) для каждой из нод (2, 3).
Файл NODE2_DATADIR/static-nodes.json
для ноды 2:
[
"enode://hex(nodekey1)@[::]:30301?discport=0"
]
Файл NODE3_DATADIR/static-nodes.json
для ноды 3:
[
"enode://hex(nodekey1)@[::]:30301?discport=0",
"enode://hex(nodekey2)@[::]:30302?discport=0"
]
Запустим вторую ноду:
/tmp/geth --networkid 4242 --nodiscover --maxpeers 3 --verbosity 6 --datadir="/tmp/datadir/node2" --port=30302
Запустим третью ноду:
/tmp/geth --networkid 4242 --nodiscover --maxpeers 3 --verbosity 6 --mine --minerthreads=1 --datadir="/tmp/datadir/node3" --port=30303
- По шкале от 1 до 10, где 1 - тривиально, а 10 - ничего не понял, насколько сложна тема?
- По шкале от 1 до 10, где 1 - неинтересно, а 10 - мегахайп, насколько интересна тема?
- По степени интерактива - куда идти, больше показывать и рассказывать по готовому плану или ориентироваться на вопросы из зала? -1 - план, 0 - баланс уже найден, +1 - интерактив
- Во сколько вы оцениваете данную информацию, поданную в таком виде и этим лектором? Платят спонсоры. Число рублей.
- Сколько рублей из суммы в пункте 4 вы готовы заплатить, если знаете, что оставшееся вам покроют спонсоры? Число рублей.
- Какие темы еще интересны? (идея - MythBuster для программистов, голосуем за тему, через 2 недели - ее разбор так же как сейчас)
- Email: [email protected]
- Telegram: @andyceo