Как создать собственный Блокчейн

Согласно опросу, проведенному Juniper Research, 6 из 10 крупных владельцев бизнеса либо думают, либо развивают свои собственные технологии блочной...

#1. Blockchain против Database
#2. Давайте создадим Blockchain
#3. Установка Go Ethereum
#4. Создайте свой blockchain
#5. Отправьте несколько ETH в вашу недавно созданную учетную запись
#6. Начало для майнинга
#7. Установите Solidity Complier
#8. Разница между контрактами « Mortal» и «Greeter»
#9. Разблокируйте свою учетную запись
#10. Создание Smart-контракта
#11. Подготовьте Ваш Smart-контракт для размещения
#12. Проверьте Ваш смарт-контракт

Согласно опросу, проведенному Juniper Research, 6 из 10 крупных владельцев бизнеса либо думают, либо развивают свои собственные технологии блочной цепи, как например – в здравохранении. Среди этих компаний 66% действительно считают, что технология blockchain будет интегрирована в их компании к началу 2019 года.

Что касается причин выбора blockchain, широко распространено мнение, что многие компании любят использовать совершенно новые технологии для увеличения прибыли. Фактически, компании часто полагаются на новые решения, чтобы полностью пересмотреть процессы устаревания в соответствии с новым цифровым миром.

Дело в том, что системные изменения более эффективны, чем технологические. Таким образом, использование преимущества blockchain предлагает надежный способ интеграции вашей компании в эпоху XXI века!

Blockchain против Database

Хороший вопрос, не так ли? На самом деле существует по меньшей мере пять твердых причин децентрализовать вещи, а не хранить их в централизованном сервере или базе данных. Вот они:

1. Неизменность. Когда у вас есть все ваши важные данные, развернутые на цепочке, Ваши записи не заблокируются. Что касается хранения данных в базе данных, каждый может легко изменить файлы перед отправкой их другому человеку.

2. Избыточность. Вам не нужно сходить с ума, потеряв важные файлы. Действительно, Вы можете получить один и тот же набор данных из любой точки вашей сети. Таким образом, больше нет потерь данных и повреждения файлов для Вас.

3. Безопасность. Централизованная база данных создает хорошую цель для хакеров. Blockchain - это совсем другое «животное». Чем больше пользователей у Вас есть в сети, тем более точные копии бесценных данных вы получаете. Такой подход позволяет предотвратить жизненно важную информацию от серьезного искажения или даже постоянной потери.

4. Экономичность. Компании, использующие децентрализованные сети узлов для хранения своих бухгалтерских книг, могут сэкономить на безопасности, размещении и обслуживании. Каждый узел в сети является своего рода автономной системой хранения файлов на долгие годы.

5. Прозрачность. Используя blockchain, вы получаете более высокий уровень доверия и способность вести бизнес открытым способом.

Давайте создадим Blockchain

Прежде чем мы начнем, вы также должны знать, что существует два типа blockchain: частный blockchain и публичный blockchain.

Итак, как насчет того, чтобы попробовать и создать свой собственный blockchain? Все, что вам нужно, это следовать руководству ниже.

Обратите внимание, что мы использовали Ubuntu, но также для пользователей будут удобны гайды других дистрибьюторов Linux, MacOS (с менеджером Homebrew) и Windows 10 (используя терминалы и последние стабильные двоичные файлы).

Установка 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-блок.

Создайте свой blockchain

Выполните следующие команды, чтобы создать blockchain (для отключения функции 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.

Удалите старый blockchain и создайте новый. Используйте эти команды, чтобы избавиться от старых данных Blockchain и перезапустите 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.

Начало для майнинга

Чтобы получить полноценный blockchain, Вам нужно развить майнеров. Чтобы справиться с этими проблемами, закройте консоль 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", это значит, что Вы успешно разблокировали свою учетную запись.

Создание Smart-контракта

В консоли 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».

Подготовьте Ваш Smart-контракт для размещения

Если Вы прочитали всё выше сказанное, значит Вы получили свой «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()

Вот так! Теперь у Вас есть собственный blockchain!

Оцените (1 голосов - 5 из 5)
Спасибо!
1
(Ужасно)
2
(Плохо)
3
(Средне)
4
(Хорошо)
5
(Класс!)


Спасибо!
Ok