понедельник, 17 июня 2019 г.

среда, 24 апреля 2019 г.

OddEven Game (Smart Contract)

Для изучения смарт-контрактов и возможностей написания приложений с их использованием, написал простенькую игру: "Чет-Нечет" (Odd-Even).

Тут: http://oddeven.coolsoftware.ru/web3/

В игре участвуют двое: "банкир" и игрок. За банкира играет сервис на PHP.
Банкир загадывает число, и записывает в смарт-контракт хэш от него. Затем игрок вводит свое число, которое отправляется в смарт-контракт. Потом "банкир" сообщает смарт-контракту загаданное им число (которое должно совпасть с хэшем). В конце определяется победитель: если игрок и банкир  оба загадали четное число, или оба загадали нечетное число (иными словами: игрок угадал, загадал ли банкир четное число или нечетное), то выиграл игрок. Иначе выиграл банкир.

Смарт-контракт опубликован в тестовой сети rinkeby: https://rinkeby.etherscan.io/address/0x7a21ff65b1c509c2236aeaad47e1c938e6dd921c

Для игры игроку нужно установить MetaMask (https://metamask.io/) и завести аккаунт в сети rinkeby. Получить (бесплатно) ETH в этой тестовой сети можно тут: https://www.rinkeby.io/#faucet

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

пятница, 19 апреля 2019 г.

Request ETH (rinkeby)

Получить ETH в тестовой сети rinkeby можно тут: https://www.rinkeby.io/#faucet
Надо указать ссылку на пост с адресом для получения, типа такого: https://twitter.com/vit_cs/status/1119231148654301184
===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

пятница, 12 апреля 2019 г.

Ethereum и PHP

Полезные ссылки:

API client lib for communication with geth (go-ethereum) node
https://github.com/petrhejna/geth-jsonrpc-php-client

PHP interface to Ethereum JSON-RPC API
https://github.com/digitaldonkey/ethereum-php

A php interface for interacting with the Ethereum blockchain and ecosystem
https://github.com/sc0Vu/web3.php

Устанавливаются библиотеки с пом. композера, брать его тут: https://getcomposer.org/

Подключается установленная с пом. композера либа так:

<?php require_once __DIR__ . '/vendor/autoload.php'; ?>

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

вторник, 26 марта 2019 г.

Связь GUI (web) и смарт-контракта.

Видео-туториал тут: https://www.youtube.com/watch?v=hcTPjpPvas8

Парочка замечаний:

1. Устанавливать надо версию web3 0.20.6 (в версии 0.20.7 можем получить ошибку: Access to XMLHttpRequest at 'http://localhost:8545/' from origin 'null' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.)

2. Чтобы установился dist\web3.min.js нужно при установке добавлять ключ --verbose.

Резюмируя: npm install web3@0.20.6 --save --verbose

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

понедельник, 25 марта 2019 г.

Первый Smart Contract

Годное введение здесь: Build Your First Ethereum Smart Contract with Solidity

Пара замечаний:

1. Для подсоединения к запущенной ноде надо использовать:

    geth attach ipc:\\.\pipe\geth.ipc

Если же просто выполнить geth attach, то получим ошибку: Unable to attach to remote geth: no known transport for URL scheme "c" (это верно для версии geth 1.8.23).

2. Mist лучше устанавливать 0.9.3, а не 0.11.1. В последнем при попытке вызвать методы созданного смарт контракта выводится ошибка: Couldn't estimate gas, resorting to default parameters. Transaction is likely cheaper than the estimate. И в дальнейшем состояние "counter" контракта из примера не изменяется (остается всегда 5). В версии Mist 0.9.3 все OK.

Upd. Под Win10 Mist 0.11.1 работает OK. Правда, после установки Mist изругался: "Checksum mismatch in downloaded node. Please install the Geth node version 1.8.23 manually". Пришлось переустанавливать geth. Причем, устанавливать надо 64-битную версию. Иначе при попытке запустить майнер можно получить ошибку: "Fatal Error:Not enough storage is available"

Полезные ссылки:

Go-Ethereum Management APIs: https://github.com/ethereum/go-ethereum/wiki/Management-APIs
Solidity 0.5.3 documentation: https://solidity.readthedocs.io/en/v0.5.3/contracts.html

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru