Что такое ethereum rinkeby

Содержание
  1. Ethereum Developer APIs
  2. Access Blockchain Data
  3. Building DAPPs
  4. Verify Contracts
  5. Community Driven
  6. Introduction
  7. API PRO Subscription New
  8. Get Historical Ether Balance for a single Address By BlockNo
  9. Get Daily Average Block Size
  10. Get Daily Block Count and Rewards
  11. Get Daily Block Rewards
  12. Get Daily Average Block Time for A Block to be Included in the Ethereum Blockchain
  13. Get Daily Uncle Block Count and Rewards
  14. Get Historical ERC20-Token TotalSupply by ContractAddress & BlockNo
  15. Get Historical ERC20-Token Account Balance for TokenContractAddress by BlockNo
  16. Get Token Info by ContractAddress
  17. Get Daily Average Gas Limit
  18. Get Ethereum Daily Total Gas Used
  19. Get Daily Average Gas Price
  20. Get Daily Network Transaction Fee
  21. Get Daily New Address Count
  22. Get Daily Network Utilization
  23. Get Daily Average Network Hash Rate
  24. Get Daily Transaction Count
  25. Get Daily Average Network Difficulty
  26. Get ETHER Historical Daily Market Cap
  27. Get ETHER Historical Price
  28. Account APIs
  29. Get Ether Balance for a single Address
  30. Get Ether Balance for multiple Addresses in a single call
  31. Get a list of ‘Normal’ Transactions By Address
  32. Get a list of ‘Internal’ Transactions by Address
  33. Get «Internal Transactions» by Transaction Hash
  34. Get «Internal Transactions» by Block Range
  35. Get a list of «ERC20 — Token Transfer Events» by Address
  36. Get a list of «ERC721 — Token Transfer Events» by Address
  37. Get list of Blocks Mined by Address
  38. Contract APIs
  39. Get Contract ABI for Verified Contract Source Codes
  40. Get Contract Source Code for Verified Contract Source Codes
  41. Verify Source Code (beta)
  42. Verify Proxy Contract (beta)
  43. Transaction APIs
  44. Check Contract Execution Status (if there was an error during contract execution)
  45. Check Transaction Receipt Status (Only applicable for Post Byzantium fork transactions)
  46. Blocks APIs
  47. Get Block And Uncle Rewards by BlockNo
  48. Get Estimated Block Countdown Time by BlockNo
  49. Get Block Number by Timestamp
  50. Logs APIs
  51. Get Event Logs from block number 379224 to ‘latest’ Block, where log address = 0x33990122638b9132ca29c723bdf037f1a891a70c and topic[0] = 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545
  52. Get Event Logs from block number 379224 to block 400000 , where log address = 0x33990122638b9132ca29c723bdf037f1a891a70c, topic[0] = 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 ‘AND’ topic[1] = 0x72657075746174696f6e00000000000000000000000000000000000000000000
  53. Geth/Parity Proxy APIs
  54. Создаём собственный блокчейн на Ethereum
  55. Как создать приватный блокчейн Ethereum с нуля?
  56. Установка Geth
  57. Создание аккаунта майнера
  58. Создание первичного блока (genesis block)
  59. Начинаем майнинг
  60. Подключаем консоль Geth
  61. Просмотр всех аккаунтов
  62. Просмотр баланса аккаунта
  63. Подключение кошелька MetaMask Ethereum
  64. Передача Эфира
  65. Просмотр баланса аккаунта в MetaMask
  66. Редактор Remix для Solidity
  67. Создание смарт-контракта
  68. Внедрение смарт-контракта
  69. Вызов смарт-контракта
  70. Ethereum Block Explorer

Ethereum Developer APIs

Access Blockchain Data

Building DAPPs

Verify Contracts

Community Driven

Introduction

The Etherscan Ethereum Developer APIs are provided as a community service and without warranty, so please use what you need and no more. We support both GET/POST requests and there is a rate limit of 5 calls per sec/IP.

1. To use the API service please create a FREE Api-Key Token from within the ClientPortal->MyApiKey area which you can then use with all your api requests.

2. Kindly refer API Key Rate Limit & Errors for expected returns. Please contact us if you would like to upgrade your API Plan.

3. Source attribution via a link back or mention that your app is «Powered by Etherscan.io APIs» is required except for personal/private usage.

API PRO Subscription New

Get Historical Ether Balance for a single Address By BlockNo

Get Daily Average Block Size

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Block Count and Rewards

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Block Rewards

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Average Block Time for A Block to be Included in the Ethereum Blockchain

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Uncle Block Count and Rewards

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Historical ERC20-Token TotalSupply by ContractAddress & BlockNo

Get Historical ERC20-Token Account Balance for TokenContractAddress by BlockNo

Get Token Info by ContractAddress

Sample return of token info API:

Get Daily Average Gas Limit

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Ethereum Daily Total Gas Used

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Average Gas Price

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Network Transaction Fee

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily New Address Count

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Network Utilization

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Average Network Hash Rate

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Transaction Count

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get Daily Average Network Difficulty

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get ETHER Historical Daily Market Cap

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Get ETHER Historical Price

[Parameters] startdate and enddate format ‘yyyy-MM-dd’

Account APIs

Get Ether Balance for a single Address

Get Ether Balance for multiple Addresses in a single call

Separate addresses by comma, up to a maxium of 20 accounts in a single batch

Get a list of ‘Normal’ Transactions By Address

[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

(Returned ‘isError’ values: 0=No Error, 1=Got Error)

(Returns a maximum of 10000 records only)

or

(To get paginated results use page=

Get a list of ‘Internal’ Transactions by Address

[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

(Returned ‘isError’ values: 0=No Error, 1=Got Error)

(Returns a maximum of 10000 records only)

or

(To get paginated results use page=

Get «Internal Transactions» by Transaction Hash

(Returned ‘isError’ values: 0=Ok, 1=Rejected/Cancelled)

(Returns a maximum of 10000 records only)

Get «Internal Transactions» by Block Range

(Returns a maximum of 10000 records only)

Get a list of «ERC20 — Token Transfer Events» by Address

[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

(Returns a maximum of 10000 records only)

Читайте также:  Нужен ли crossfire для майнинга

or

(To get paginated results use page=

or

(To get transfer events for a specific token contract, include the contractaddress parameter)

Get a list of «ERC721 — Token Transfer Events» by Address

[Optional Parameters] startblock: starting blockNo to retrieve results, endblock: ending blockNo to retrieve results

(Returns a maximum of 10000 records only)

or

(To get paginated results use page=

or

(To get transfer events for a specific token contract, include the contractaddress parameter)

Get list of Blocks Mined by Address

or

(To get paginated results use page=

** type = blocks (full blocks only) or uncles (uncle blocks only)

Contract APIs

Get Contract ABI for Verified Contract Source Codes

A simple sample for retrieving the contractABI using Web3.js and Jquery to interact with a contract

Get Contract Source Code for Verified Contract Source Codes

Verify Source Code (beta)

See Demo Source Verification Submission Code at Source Code Verification Sample

Source Code Submission Gist (returns a guid as part of the result upon success):

Check Source code verification submission status:

Verify Proxy Contract (beta)

Verifying Proxy Contract cURL example:

Example of expected output:

Checking Proxy Contract verification submission status, cURL example:

Example of expected output:

Transaction APIs

Check Contract Execution Status (if there was an error during contract execution)

Note: isError»:»0″ = Pass , isError»:»1″ = Error during Contract Execution

Check Transaction Receipt Status (Only applicable for Post Byzantium fork transactions)

Note: status: 0 = Fail, 1 = Pass. Will return null/empty value for pre-byzantium fork

Blocks APIs

Get Block And Uncle Rewards by BlockNo

Get Estimated Block Countdown Time by BlockNo

Get Block Number by Timestamp

[Parameters] timestamp format: Unix timestamp (supports Unix timestamps in seconds), closest value: ‘before’ or ‘after’

Logs APIs

The Event Log API was designed to provide an alternative to the native eth_getLogs. Below are the list of supported filter parameters:

  • fromBlock, toBlock, address
  • topic0, topic1, topic2, topic3 (32 Bytes per topic)
  • topic0_1_opr (and|or between topic0 & topic1), topic1_2_opr (and|or between topic1 & topic2), topic2_3_opr (and|or between topic2 & topic3), topic0_2_opr (and|or between topic0 & topic2), topic0_3_opr (and|or between topic0 & topic3), topic1_3_opr (and|or between topic1 & topic3)

— FromBlock & ToBlock accepts the blocknumber (integer, NOT hex) or ‘latest’ (earliest & pending is NOT supported yet)
— Topic Operator (opr) choices are either ‘and‘ or ‘or‘ and are restricted to the above choices only
— FromBlock & ToBlock parameters are required
— An address and/or topic(X) parameters are required, when multiple topic(X) parameters are used the topicX_X_opr (and|or operator) is also required
— For performance & security considerations, only the first 1000 results are return. So please narrow down the filter parameters

Here are some examples of how this filter maybe used:

Get Event Logs from block number 379224 to ‘latest’ Block, where log address = 0x33990122638b9132ca29c723bdf037f1a891a70c and topic[0] = 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545

Get Event Logs from block number 379224 to block 400000 , where log address = 0x33990122638b9132ca29c723bdf037f1a891a70c, topic[0] = 0xf63780e752c6a54a94fc52715dbc5518a3b4c3c2833d301a204226548a2a8545 ‘AND’ topic[1] = 0x72657075746174696f6e00000000000000000000000000000000000000000000

Geth/Parity Proxy APIs

The following are the limited list of supported Proxied APIs for Geth available through Etherscan. For the list of the parameters and descriptions please see https://github.com/ethereum/wiki/wiki/JSON-RPC. Parameters provided should be named like in the examples below. For compatibility with Parity, please prefix all hex strings with «0x»

eth_blockNumber

Returns the number of most recent block

eth_getBlockByNumber

Returns information about a block by block number

eth_getUncleByBlockNumberAndIndex

Returns information about a uncle by block number

eth_getBlockTransactionCountByNumber

Returns the number of transactions in a block from a block matching the given block number

eth_getTransactionByHash

Returns the information about a transaction requested by transaction hash

eth_getTransactionByBlockNumberAndIndex

Returns information about a transaction by block number and transaction index position

eth_getTransactionCount

Returns the number of transactions sent from an address

eth_sendRawTransaction

Creates new message call transaction or a contract creation for signed transactions

(Replace the hex value with your raw hex encoded transaction that you want to send.
Send as a POST request, if your hex code is particularly long)

eth_getTransactionReceipt

Returns the receipt of a transaction by transaction hash

eth_call

Executes a new message call immediately without creating a transaction on the block chain

(The gas parameter to eth_call is capped at 2x the current block gas limit)

eth_getCode

Returns code at a given address

eth_getStorageAt (**experimental)

Returns the value from a storage position at a given address

eth_gasPrice

Returns the current price per gas in wei

eth_estimateGas

Makes a call or transaction, which won’t be added to the blockchain and returns the used gas, which can be used for estimating the used gas

(The gas parameter to eth_estimateGas is capped at 2x the current block gas limit)

Источник

Создаём собственный блокчейн на Ethereum

Как создать приватный блокчейн Ethereum с нуля?

Ethereum — децентрализованная платформа, на которой работают смарт-контракты: приложения, исполняемые строго запрограммированным образом, без возможности даунтайма, цензуры, фрода или вмешательства третьих лиц. В этой статье я проведу вас через все шаги, необходимые для создания полностью функционального приватного блокчейна Ethereum внутри вашей локальной сети.

Инструкция включает в себя следующее:

  • Создание приватного блокчейна Ethereum с помощью geth.
  • Создание кошелька MetaMask для работы с приватным блокчейном.
  • Перевод средств между несколькими аккаунтами.
  • Создание, развёртывание и вызов смарт-контракта в приватном блокчейне с помощью remix.
  • Создание обозревателя блоков Ethereum поверх приватного блокчейна.

Установка Geth

Go Ethereum (или geth) это одна из трёх изначальных реализаций протокола Ethereum (наряду с C++ и Python). Она написана на Go, полностью открыта и лицензирована под GNU LGPL v3. Go Ethereum можно скачать или как отдельный клиент, работающий практически в любой ОС, или как библиотеку для встраивания в проекты Go, Android или iOS.

Для установки geth под Mac OS X мы использовали homebrew. Homebrew устанавливает всё необходимое, о чём не позаботилась Apple. Эта статья предполагает, что homebrew у вас уже установлен. Если нет, следуйте этой инструкции. После установки homebrew следующие команды установят geth.

Читайте также:  Областное агентство по привлечению инвестиций

brew tap ethereum/ethereum
brew install ethereum

Установить geth на Ubuntu довольно просто, достаточно запустить следующие команды apt-get.

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

Для Windows соответствующий инсталлятор лежит здесь. В случае каких-либо сложностей обращайтесь к инструкции.

Создание аккаунта майнера

Сначала нужно создать аккаунт для майнинга Ethereum. Так мы сгенерируем пару приватного и публичного ключей с паролем для защиты. Не потеряйте свой пароль, иначе никогда не сможете восстановить ключи. По умолчанию, ключи хранятся внутри: /keystore. Всё, что сохраняет geth, хранится внутри datadir (кроме PoW Ethash DAG). Расположение директории по умолчанию зависит от ОС. Всегда лучше изменить стандартные настройки и задать свой собственный путь для приватного блокчейна.

/.ethereum

  • Windows: %APPDATA%\Ethereum
  • Ethash DAG хранится в

    /.ethash (Mac/Linux) или %APPDATA%\Ethash (Windows), так что его могут использовать все клиенты.

    Следующая команда показывает, как создать аккаунт с произвольным путём для директории данных. Эта команда выдаст ваш адрес Ethereum.

    geth account new —datadir

    geth account new —datadir /path/to/data/dir

    Создание первичного блока (genesis block)

    Блокчейны Ethereum отличаются друг от друга первичными блоками. Каждый блокчейн начинается с такого блока, а всё остальное строится поверх него, где каждый следующий блок ссылается на предыдущий. В публичном блокчейне Ethereum первичный блок был создан 20 июля 2015 года. Для нашей собственной цепочки нужно создать собственный первичный блок. Инициализация приватного блокчейна с заданным первичным блоком осуществляется следующей командой:

    geth -datadir /path/to/data/dir init /path/to/genesis.json

    • datadir: директория для баз данных и хранилища ключей.
    • init: начальная загрузка и инициализация нового первичного блока — с соответствующим файлом json.

    Ниже показан наш первичный блок, который используется в приватном блокчейне — нужно сохранить его под именем genesis.json и указать в приведённой выше команде.

    • chainid: обеспечивает способ совершения транзакций в Ethereum без использования ETC (Ethereum Classic) или тестовой сети Morden. EIP 155 предусматривает следующие значения chainid для разных сетей: основная сеть Ethereum (1), основная сеть Morden / Expanse (2), Ropsten (3), Rinkeby (4), основная сеть Rootstock(30), тестовая сеть Rootstock (31), Kovan (42), основная сеть Ethereum Classic (61), тестовая сеть Ethereum Classic (62), приватные цепочки geth (1337 по умолчанию). В нашем примере мы указали идентификатор 15, который не используется ни одной из существующих цепей.
    • homesteadBlock: значение 0 указывает на использование релиза Ethereum Homestead. Это второй из основных релизов Ethereum — а недавно, 16 октября 2017 года, Ethereum форкнулся на релиз Byzantium.
    • eip155Block: значение 0 указывает, что этот блок поддерживает EIP (Ethereum improvement proposal, предложение об улучшении Ethereum) номер 155. Предложения EIP описывают стандарты для платформы Ethereum, в том числе ключевые спецификации протокола, клиентские API и стандарты контрактов.
    • eip158Block: значение 0 указывает, что этот блок поддерживает EIP 158.
    • difficulty: значение соответствует уровню сложности, которое применяется для поиска случайного значения nonce к этому блоку. В этой статье подробно объясняется, как рассчитывается уровень сложности в Ethereum.
    • gasLimit: газ — это внутренняя единица оплаты для проведения транзакции или контракта в Ethereum. Каждая инструкция, которая отправляется в виртуальную машину Ethereum Virtual Machine (EVM) для обработки транзакции или смарт-контракта стоит определённое количество газа. Если транзакция не получает нужного количества газа, то она не пройдёт. При совершении каждой транзакции в Ethereum вы указываете лимит газа — максимальное количество, которое могут использовать все сопутствующие операции для этой транзакции. Параметр gasLimit в блоке определяет общий лимит всех транзакций в блоке.
    • alloc: параметр для предварительного распределения Эфира из первичного блока на один или несколько аккаунтов. В вышеприведённом примере первичного блока весь Эфир поступает на аккаунт, созданный с самого начала.

    Начинаем майнинг

    Всё готово! Теперь можно начать майнинг через geth с помощью следующей команды. Здесь параметр networkid выделяет эту сеть Ethereum среди других. Все майнеры, желающие подключиться к этой сети, должны использовать тот же идентификатор networkid с тем же первичным блоком.

    geth —mine —rpc —networkid —datadir

    geth —mine —rpc —networkid 1999 —datadir /path/to/data/dir

    • networkid: сетевой идентификатор этой сети Ethereum. Выбираете любое значение. Например, Olympic (0), Frontier (1), Morden (2), Ropsten (3).
    • mine: включает майнинг.
    • rpc: включает сервер HTTP-RPC. Приложения кошельков могут подключаться по http к этому узлу майнинга.
    • rpcaddr: указывает интерфейс для прослушивания на сервере HTTP-RPC (по умолчанию: “localhost”)
    • rpcport: указывает порт для прослушивания на сервере HTTP-RPC (по умолчанию: 8545)
    • rpcapi: указывает API, доступные по интерфейсу HTTP-RPC (по умолчанию: “eth,net,web3”)
    • rpccorsdomain: активирует CORS, указывая разделённый запятыми список сторонних доменов, с которых можно принимать запросы (cross-origin). Полезная опция при использовании для размещения смарт-контрактов браузерных редакторов Solidity (Remix) или браузерных кошельков. Например, такой параметр позволит принимать CORS с любого домена.

    —rpccorsdomain «*»

  • nodiscover: отключает механизм поиска пиров. Ваш узел не смогут найти никакие другие узлы в сети. Если намерены использовать блокчейн в локальной сети совместно с другими, не применяйте этот параметр.
  • console: этой командой мы можем запустить узел майнинга с интерактивным окружением JavaScript. В следующем разделе подробнее рассмотрим эту тему.

    geth —mine —rpc —networkid 1999 —datadir /path/to/data/dir console

    Подключаем консоль Geth

    Можно или начать майнинг как console , или запустить console отдельно — и подключить её к узлу майнинга командой attach. Сейчас покажу, как это делается, и проверьте, что вы указали параметры в том же порядке.

    geth —datadir /path/to/data/dir attach ipc:/path/to/data/dir /geth.ipc

    Консоль подключается к узлу майнинга по IPC. IPC (межпрорцессное взаимодействие) работает на локальном компьютере. В этом случае geth создаёт конвейер Geth (который представлен файлом

    /geth.ipc) в файловой системе локального компьютера — а консоль подключается к этому узлу по IPC.

    Просмотр всех аккаунтов

    Как только вы подключились к консоли geth, можно попробовать запустить следующую команду для отображения всех доступных аккаунтов.
    > eth.accounts
    [«0x7a69b359e86893efa3d9732e4c65ced51567edd0»]

    Просмотр баланса аккаунта

    Следующая команда позволяет просмотреть баланс заданного аккаунта из консоли geth.

    Подключение кошелька MetaMask Ethereum

    MetaMask — это кошелёк Ethereum, работающий как расширение Chrome. Он внедряет Ethereum Web3 API в каждый контекст JavaScript на сайте, так что все эти приложения способны получать информацию из блокчейна. MetaMask также позволяет создавать собственные идентификаторы (identities) и управлять ими, так что когда приложение хочет совершить транзакцию и записать данные в блокчейн, у пользователя есть безопасный интерфейс для просмотра транзакции, прежде чем одобрить или отклонить её.

    Для подключения MetaMask к приватному блокчейну Ethereum нужно выбрать правильные имя хоста и порт. Web3 API — это программные интерфейсы JavaScript для Ethereum, реализованные в web3.js. Чтобы JavaScript-приложение обменивалось данными с узлом Ethereum, MetaMask использует библиотеку web3.js с удобным интерфейсом для методов rpc. Она обменивается с локальным узлом вызовами rpc. Библиотека web3.js работает с любым узлом Ethereum, у которого есть слой rpc. Вы могли заметить выше, что при запуске узла майнинга можно передать параметр rpcapi и указать, какие интерфейсы мы хотим использовать на этом узле. По умолчанию, если ничего не указать, будут использоваться интерфейсы eth,net,web3 .

    Передача Эфира

    MetaMask создаст аккаунт Ethereum — секретный ключ и адрес Ethereum. Дальше разберёмся, как передавать Эфир с первого аккаунта, созданного в самом начале, на аккаунт MetaMask из консоли geth. Для передачи средств аккаунта нужно использовать для подписи секретный ключ этого аккаунта. Чтобы его использовать, нужно его сначала разблокировать, как показано ниже.

    personal — это управляющие программные интерфейсы в geth. Кроме personal, geth также предоставляет следующие управляющие API: admin, debug, miner и txpool. Как только мы разблокировали аккаунт, мы можем определить в консоли три переменные: для sender, receiver и amount, то есть получателя, отправителя и количества передаваемых средств. Значение sender — это адрес Ethereum, который мы создали в начале этой статьи, а значение receiver — адрес Ethereum, созданный в MetaMask.

    > var sender = «0x7a69b359e86893efa3d9732e4c65ced51567edd0»;
    > var receiver = «0xA9f28458eE1170F285440990c196c1592D3a73f5»
    > var amount = web3.toWei(1, «ether»)

    Следующая команда осуществит передачу средств — она ссылается на переменные, которые мы определили выше.

    Просмотр баланса аккаунта в MetaMask

    Когда мы завершили передачу средств, следуя вышеуказанным шагам, можно просмотреть баланс аккаунта двумя способами. Первый способ — напрямую из плагина MetaMask, как показано ниже.

    Другой способ — через консоль geth, с помощью следующей команды.

    Редактор Remix для Solidity

    Solidity — самый популярный язык программирования для написания смарт-контрактов Ethereum. Remix — это IDE для Solidity со встроенным отладчиком и средой тестирования. Онлайновый редактор remix можно найти здесь. Remix подключается к любой сети Ethereum. Для подключения к нашему локальному блокчейну убедитесь, что вы запустили узел майнинга следующей командой, как показано ниже. О параметре —rpccorsdomain «*» мы уже говорили. Вместо звёздочки (максимальная открытость) в качестве значения этого параметра можно указать “https://remix.ethereum.org”.

    geth —mine —rpc —rpccorsdomain «*» —networkid —datadir

    Для подключения remix к нашей закрытой сети нужно изменить Environment на Web3 Provider, это делается на вкладке Run. При этом изменении remix попросит указать Web3 Provider Endpoint — установите значение http://localhost:8545 . Пока вы явно не изменили порт, по умолчанию узел для майнинга стартует на порту 8545.

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

    Теперь всё готово для написания самого первого смарт-контракта, который мы запустим в сети Ethereum. Скопируйте следующий код и вставьте его в онлайновый редактор remix. Это очень простой смарт-контракт — я даже не хочу объяснять его построчно. В следующей статье подробно рассмотрим язык программирования Solidity.

    Если вы не меняли настройки по умолчанию в remix, то они установлены на автоматическую компиляцию. Если нет, то надо скомпилировать код.

    После компиляции при нажатии кнопки Details вы увидите расчётное количество газа, необходимое для создания этого смарт-контракта.

    Внедрение смарт-контракта

    Теперь можем внедрить смарт-контракт в наш приватный блокчейн. На вкладке Run убедитесь, что у вас выбран правильный аккаунт Ethereum и правильный лимит газа. Значения gas price и value можно указать нулевыми.

    Здесь транзакция Ethereum, подписанная с выбранного выше аккаунта для создания смарт-контракта в блокчейне. Для подписи сначала нужно разблокировать аккаунт через консоль geth.

    Теперь можете нажать кнопку Create, чтобы создать смарт-контракт. У нас в нём конструктор, принимающий строковый параметр, вот почему remix показывает поле ввода вместе с кнопкой Create. Сюда можно ввести какое-нибудь значение (в кавычках, например, “Hi”) — или просто оставить пустым. В консоли geth при создании смарт-контракта появится следующее сообщение. Также обратите внимание, что если не установлен корректный gas limit, то такая команда приведёт к ошибке.

    INFO [10-19|07:31:08] Submitted contract creation fullhash=0xf5511bb9d088672ac0d3896b8590b9a3e25484300f02deecdd739c3a549ed33a contract=0x42b7E903Fb42e191a7D623cbb4b7b4330D329d78

    Вызов смарт-контракта

    После создания смарт-контракта интерфейс remix немного изменится — как показано ниже, на вкладке Run.

    Здесь можно установить некое значение для метода setGreeting — и нажать на него для вызова смарт-контракта. Опять же следует убедиться, что аккаунт разблокирован, потому что при вызове смарт-контракта мы использует транзакции Ethereum и требуется подпись инициатора. Проделав операцию с setGreeting, можно вызвать и другие методы.

    Ethereum Block Explorer

    Возможно, вы знакомы с сервисом etherscan для сканирования публичного блокчейна Ethereum. Но его нельзя направить на наш локальный блокчейн. Хотя Ethereum Block Explorer даже близко не сравнится по функциональности с etherscan, он вполне подходит для изучения того, что происходит в нашем локальном блокчейне.

    Для установки программы сначала возьмём исходники со следующего репозитория.

    git clone https://github.com/carsenk/explorer

    Затем запустим команду установки из директории Ethereum Block Explorer.

    По окончании установки запустите Ethereum Block Explorer следующей командой — и получите доступ к веб-консоли через http://localhost:8000 .

    Перед подключением Ethereum Block Explorer к локальному блокчейну убедитесь, что запустили узел майнинга следующей командой с параметром —rpccorsdomain «*» — его значение мы обсуждали ранее.

    geth —mine —rpc —rpccorsdomain «*» —networkid —datadir

    Обновление: Обсуждение этой статьи на Hacker News см. здесь. Не стесняйтесь присоединяться.

    Источник

    Читайте также:  Что такое модель ramp
  • Оцените статью