Skip to content

Ethereum

andyceo edited this page Dec 18, 2020 · 7 revisions

Подключиться к ноде внутри Docker-контейнера (Ethereum Javascript Console])

sudo docker container exec -ti <CONTAINER_ID> geth attach

JavaScript Console

Можно ознакомиться с полной справкой по JavaScript-консоли Ethereum

  • Узнать текущий статус синхронизации (текущую высоту ноды, блокчейна и т.п.):

      eth.syncing
    

    Если синхронизация завершена, возвращает false, если нет - объект.

  • Узнать только адреса пиров (основная команда admin.peers):

      for (var i = 0; i < admin.peers.length; ++i) { console.log(admin.peers[i].network.remoteAddress); }
    
  • Список всех аккаунтов (кошельков):

      eth.accounts
    
  • Создать кошелек (аккаунт):

      > personal.NewAccount()
      ... you will be prompted for a password ...
    

    или

      > personal.newAccount("passphrase")
    
  • Узнать основной кошелек и баланс на нем:

      primary = eth.accounts[0];
      balance = web3.fromWei(eth.getBalance(primary), "ether");
    

    или одной строкой:

      web3.fromWei(eth.getBalance(eth.accounts[0]), "ether");
    
  • Разблокировать кошелек

      personal.unlockAccount(address, "password");
    
  • Цена на газ, в Wei

      eth.gasPrice;
    
  • Посмотреть зависшие транзакции:

      eth.pendingTransactions;
    
  • Посмотреть номер текущего блока:

      eth.blockNumber;
    
  • Переслать эфиры с одного кошелька на другой

      sender = eth.accounts[0];
      receiver = eth.accounts[1];
      amount = web3.toWei(0.1, "ether");
      gasprice = web3.eth.gasPrice;
      transaction = {from: sender, to: receiver, value: amount, gasPrice: gasprice}
      eth.sendTransaction(transaction);
    

    или, одной строкой с основного кошелька на кошелек 0x11..11 сумму в 0.1 эфира, с рассчитанной по умолчанию ценой газа:

      eth.sendTransaction({from:eth.accounts[0], to:"0x11..11", value: web3.toWei(0.1, "ether"), gasPrice:web3.eth.gasPrice});
    

    а лучше, двумя строками:

      transaction = {from:eth.accounts[0], to:"0x11..11", value:web3.toWei(0.1, "ether"), gasPrice:eth.gasPrice}
      # !here you can adjust transaction before sending it, for example, set lower gasPrice,
      # or set nonce=<see etherscan for from account> for replacing existing transaction with same nonce!
      eth.sendTransaction(transaction)
    

    чтобы изменить еще не прошедшую транзакцию, достаточно в объекте transaction задать тот же nonce, что у застрявшей транзакции (с помощью eth.pendingTransactions), и снова отправить ее (с помощью eth.sendTransaction(transaction))

Быстрая синхронизация с блокчейном

Если начинаете с самого начала, то:

geth --syncmode "fast" --cache=1024 --jitvm

Если у вас уже есть немного блокчейна:

geth --cache=1024 --jitvm

Если у вас есть немного блокчейна, и вы хотите с самого начала быструю синхронизацию, то:

geth removedb
geth --syncmode "fast" --cache=1024 --jitvm

или

geth --syncmode "light" --cache=1024 --jitvm

для сверхбыстрой синхронизации в режиме light.

Размер кеша зависит от количества вашего RAM, если много, то пробуйте более большие значения, например --cache=2048.

Ссылки:

Запуск майнинга

Эту команду можно использовать под ssh:

nohup geth --etherbase 0 --mine 2>> geth.log &

Также можно указать существующий аккаунт, на который будут начисляться эфиры:

nohup geth --etherbase "0xd987b8520bf72af9521d96e7b20089daf5d994d6" --mine 2>> geth.log &

(see http://ethdocs.org/en/latest/mining.html)

Смотреть лог можно командой:

tail -f geth.log

Майнинг на GPU:

https://github.com/ethereum/homestead-guide/blob/master/source/mining.rst

Описание команд geth

  • removedb: удаляет локальную базу блокчейна (папки .ethereum/geth/chaindata, .ethereum/geth/lightchaindata)

Разное

Когда нода запускается, она создает файл ~/.ethereum/

Чтобы запустить в geth-докер-контейнере оболочку sh вместо самого geth, что по умолчанию, нужно подменить entrypoint (cmd менять не надо, когда меняешь entrypoint, он обнуляется):

  eth:
    image: ethereum/client-go:v1.7.3
    entrypoint:
      - "/bin/sh"
      - "-c"
      - "sleep 100000"
    #command: --cache=1024 --syncmode "full" --verbosity 5 --rpc --nousb

Это нужно для того, чтобы иметь возможность залезть внутрь контейнера с установленным geth и выполнить там команды geth removedb и другие.

Ссылки

Sidebar is under construction

Clone this wiki locally