Pull to refresh

Comments 16

UFO just landed and posted this here
Прошу прощея за долгий ответ, никак не мог продумать структуру цикла. Сейчас появилась вторая часть, в дальнейшем обязательно будет рассмотрена связка браузера + Ethereum, так же взаимодействие с Ethereum через какой-нибудь сторонний ЯП, скорее всего Python.

За ссылку большое спасибо, почему то ни разу не попадал на них в выдаче гугла.

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

Может быть вы и правы, хотя по мне так это в большей степени зависит от самого человека. Хотя с другой стороны, в мире блокчейна есть люди, которые с вами согласятся — взять тех же Emmercoin. Считаются прямыми конкурентами Ethereum, при этом отказались от Тьюринг полноты. Да и вообще многих смущает факт запуска какого-то левого кода на своей машине, пусть и внутри EVM.
Вот да, на мой взгляд стоило бы посмотреть в сторону языка наподобие Sing#, а то и вовсе какого-нибудь не Тьюринг-полного.

Умные контракты, работающие на Ethereum, могут распоряжаться только валютой этой системы (Ether) или классической валютой тоже (доллар, евро)? Могул ли умные контракты оказывать воздействие на что-то вне блокчейна, в котором работают?

1. Только Ether. Существуют связки, через которые контракт может работать с тем же Bitcoin, но «из коробки» есть только Ether.
2. Не очень понял вопрос, в смысле оказывать влияние?
2 Не очень понял вопрос, в смысле оказывать влияние?

Могут ли контракты сделать так, чтобы что-то произошло вне блокчейна? Например, запустился бы квадрокоптер, доставляющий товар, или человеку пришло бы СМС.

Нет, чисто в техническом плане виртуальная машина Этереума, внутри которой исполняются контракты, полностью изолированна — нет доступа к интернету, жестому диску, какой либо перефирии. Есть только возможность общения с другими контрактами ну или работа с т.н. «оракулами», подробнее здесь
не подскажете, как быть?
Контракт в mist создаётся уже второй час…
image
и отменить то никак.
Сам себе отвечу :)

Оказывается, чтобы контракт начал выполняться — необходимо запустить майнинг ;)

Бумзнать.

Учусь по статье. Вношу корректировки, чтобы работало:



О запуске geth console и Mist на приватном блокчейне и с отдельной конфигурацией:


export DEVNET_DIR=~/eth/dev-net
mkdir -p ${DEVNET_DIR}

alias geth-dev="geth --datadir ${DEVNET_DIR}/.ethereum_private --dev"
alias geth-dev-console="geth-dev --rpc --rpcaddr '0.0.0.0' --rpcapi 'admin,debug,miner,shh,txpool,personal,eth,net,web3' console"

alias mist="/Applications/Mist.app/Contents/MacOS/Mist"
alias mist-dev="mist --rpc http://localhost:8545"

# Create an empty chain:
geth-dev init ${DEVNET_DIR}/genesis.json

Где genesis.json можно взять здесь.


В Mist не обнаружил меню Contracts, зато нашёл Develop — Open Remix IDE.
В ней можно создать новый контракт в sol-файле, потом во вкладке Run задать его стартовые параметры и адрес, и загрузить в блокчейн.


"Закопать" контракт в чейн пока не удаётся, в логе mist получаю [ERROR] ipcProviderBackend - Send request failed TypeError: Cannot read property 'contractAddress' of null. Будет прогресс — продолжу этот комментарий.

На приватном блокчейне Mist показвает "Private net", но останавливается на этапе "Ethereum node needs to sync, please wait… Looking for peers...". Может быть, это нормально.


Запуск контракта в блокчейн на такой среде падает с ошибкой Mist: [ERROR] ipcProviderBackend - Send request failed TypeError: Cannot read property 'contractAddress' of null.


В интернете нет, что делать — непонятно, переключаюсь на testnet.

Коллега hofry подсказывает, что надо запускать со --swarmurl «null».
У меня майнер что то не хочет работать
> miner.start()
null

Замеченные отличия, от поведения описанного в статье:
geth --dev console
WARN [12-16|13:14:02] No etherbase set and no accounts found as default
INFO [12-16|13:14:04] Using developer account address=0x70F951cF84FC37CA1fC43e7565fee776Acf1Cce8

То есть у меня он сам создал какой то адресс, и он в eth.accounts[0]
Когда я сделал personal.newAccount(«123»)
То сгенерился еще один адрес, и он попал в eth.accounts[1]
Перед запуском майнера пробовал miner.setEtherbase(eth.accounts[1])
и miner.setEtherbase(eth.accounts[0])
На поведение не влияет, майнер выдает null

Подскажите, что делать?
Тоже не запускается майнер в приватном блокчейне, путём экспериментов понял что это не нужно. После создания блокчейна автоматически создался кошелёк(без пароля) с огромным балансом. Если создать новый кошелёк и сделать транзакцию, то автоматически создастся новый блок и произойдёт перевод. Единственный момент не понял, как вручную создать новый блок, так как после заливки контракта блок не создаётся и приходится его создавать запуская транзакцию между кошельками.
Sign up to leave a comment.

Articles