Установка Go Ethereum
Ваш первый шаг - установить Go Ethereum (geth). Go Ethereum является одной из исходных реализаций (вместе с C ++ и Python) протокола Ethereum, написанного на Go. Для установки geth пользователи Mac OS X Вы должны использовать Homebrew, дополнительный менеджер пакетов для MacOS. Homebrew устанавливает необходимый Вам материал, который Вы не можете найти в Apple Store.
После установки выполните следующие команды: brew tap ethereum/ethereum
brew install ethereum
Чтобы установить Go Ethereum на Ubuntu, Вам нужно всего лишь использовать apt-get. Для этого выполните следующие команды: sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:thereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
Если Вы - пользователь Windows, Вам не нужно над этим долго думать.
Все, что Вам нужно, это загрузить соответствующую установку geth и запустить её. Теперь Вы можете создать новый каталог и написать JSON файл для создания genesis-блока: cd
mkdir eth-new
cd eth-new
nano genesis.json
Чтобы создать genesis-блок, вставьте следующий код в только что созданный JSON-файл: {
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x4000",
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "Custem Ethereum Genesis Block",
"gasLimit": "0xffffffff"
}
Нажмите Ctrl + X, Y, Enter, чтобы сохранить Ваш новый genesis-блок.
Создайте свой блокчейн
Выполните следующие команды, чтобы создать блокчейн (для отключения функции maxexers установлено значение 0): mkdir eth-data
geth --datadir eth-new genesis.json init eth-new/genesis.json --networkid 123 --nodiscover --maxpeers 0 console
Чтобы ввести новую учетную запись и пароль в консоли geth, выполните следующие действия (не забудьте указать данные для входа в скобки).
О, еще одна вещь: Вам нужно будет указать свой новый пароль дважды: personal.newAccount()
Результатом после всего этого должна быть строка букв и цифр, то есть - адрес Вашей учетной записи. Чтобы остаться в безопасности, сохраните адрес, указанный где-то еще, и выйдите (введите «exit» и нажмите Enter).
Отправьте несколько ETH в вашу недавно созданную учетную запись
Откройте файл genesis-блока еще раз и введите следующее: nano genesis.json
Скопируйте ранее сохраненный адрес учетной записи и вставьте его в скобки «alloc». Затем, следуйте дальше и задайте себе баланс ETH. Количество, указанное рядом с «балансом» ниже, равно 10 ETH. После того, как Вы закончите с внесением изменений, сохраните файл с помощью Ctrl + X, Y, Enter.
Удалите старый блокчейн и создайте новый. Используйте эти команды, чтобы избавиться от старых данных блокчейна и перезапустите geth: cd eth-data
rm -rf chaindata dapp history nodekey
cd ..
geth --datadir eth-new genesis.json --networkid 123 --nodiscover --maxpeers 0 console
В консоли geth введите следующее: > primary = eth.accounts[0]
> web3.fromWei(eth.getBalance(primary), "ether")
В результате Вы получаете новый адрес и баланс 10 ETH.
Начало для майнинга
Чтобы получить полноценный блокчейн, Вам нужно развить майнеров. Чтобы справиться с этими проблемами, закройте консоль geth (введите «exit» + нажмите Enter). Для запуска разработки выполните следующую команду: geth --mine --datadir eth-data --networkid 123 --nodiscover --> maxpeers 0 console 2>>geth.log
Поздравляем! Вы только что создали свой собственный miner capable, чтобы взимать плату за ETH. Если Вы хотите проверить баланс Вашей криптовалюты, выполните следующую команду: > primary = eth.accounts[0]
> balance = web3.fromWei(eth.getBalance(primary), "ether")
Установите Solidity Complier
Подобно другим криптовалютам, Ethereum использует преимущество смарт-контрактов, написанных в Solidity. Итак, чтобы использовать этот контрактный язык программирования, Вам необходимо установить Solidity Compiler. Для этого введите следующие строки в новом терминале: bash
sudo add-apt-repository ppa:ethereum/ethereum
После получения сообщения: «Нажмите «Ввод» для продолжения» нажмите «Ввод» и введите следующее:
sudo apt-get update
sudo apt-get install solc -y
which solc
Это обеспечит путь к Solc, который Вам нужно запомнить. Теперь вернитесь в окно терминала, показывающее консоль geth. Выполните следующие команды, изменив на полученное вами значение пути: admin.setSolc("")
eth.getCompilers()
Если Вы получаете ["Solidity"] в качестве ответа на вторую команду, это означает, что Вы получили себе Solidity Compiler и можете писать в Solidity.
Разница между контрактами « Mortal» и «Greeter»
Ниже приведен код для простого контракта с добавленными комментариями. Он содержит два типа контрактов: «Mortal» контракт может быть «убит» человеком, который его написал, и его необходимо объявить таковым, поскольку контракты бессмертны по умолчанию; «Greeting» контракт, это не что иное, как приветствие
Hello World!. contract mortal {
/* Define var owner of the type address*/
address owner;
/* this function sets the owner of the contract */
function mortal() { owner = msg.sender; }
/* Function to recover fees */
function kill() { if (msg.sender == owner) selfdestruct(owner); }
}
contract greeter is mortal {
/* define variable greeting type*/
string greeting;
/* this runs when the contract is executed */
function greeter(string _greeting) public {
greeting = _greeting;
}
/* main*/
function greet() constant returns (string) {
return greeting;
}
}
Разблокируйте свою учетную запись
Когда Вы запускаете новый контракт, он берет плату за ETH. Поэтому Вам нужно сначала разблокировать свою учетную запись. Для этого введите следующее: primary = eth.accounts[0]
personal.unlockAccount(primary)
Не забывайте пароль! Если у Вас загорается "true", это значит, что Вы успешно разблокировали свою учетную запись.
Создание смарт-контракта
В консоли geth скопируйте и вставьте весь исходный код Вашего контракта из предыдущей версии в строку без комментариев: var greeterSource = 'contract mortal { address owner; function mortal() { owner = msg.sender; } function kill() { if (msg.sender == owner) suicide(owner); } } contract greeter is mortal { string greeting; function greeter(string _greeting) public { greeting = _greeting; } function greet() constant returns (string) { return greeting; } }'
Получите "undefined" как ответ. В консоли geth введите следующее: > var greeterCompiled = web3.eth.compile.solidity(greeterSource)
Ответ такой же: «undefined».
Подготовьте Ваш смарт-контракт для размещения
Если Вы прочитали всё выше сказанное, значит Вы получили свой «Mortal» и «Greeter» контракты. Теперь Вам нужно работать со своим смарт-контрактом, придумать приветственное сообщение и создать экземпляр объектов вашей учетной записи. Приготовьтесь потратить еще несколько ETH для этого. Запустите следующие команды:
var _greeting = "Hello World!"
var greeterContract = web3.eth.contract(greeterCompiled.greeter.info.abiDefinition);
var greeter = greeterContract.new(_greeting, {from: eth.accounts[0], data: greeterCompiled.greeter.code, gas: 1000000}, function(e, contract){
if(!e) {
if(!contract.address) {
console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");
} else {
console.log("Contract mined! Address: " + contract.address);
console.log(contract);
}
}
})
Появится сообщение «Отправить транзакцию контракта». Через несколько секунд Вы получите сообщение: «Контракт получен!»
Проверьте Ваш смарт-контракт
Запустив следующие команды, Вы можете вернуть Ваш длинный адрес, а затем - Ваше приветственное сообщение. eth.getCode(greeter.address)
greeter.greet()
Вот так! Теперь у Вас есть собственный блокчейн!