Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
bitcoinking
6 лет назад

GraphGrail Ai представляет свой смарт-контракт

Теперь исходный код инфраструктуры смарт-контрактов доступен на GitHub. Смарт-контракты были созданы, чтобы обеспечить оценку разметки данных на основе технологии блокчейн. При разработке инструментария программисты столкнулись с рядом трудностей, связанных со сложностью взаимоотношений пользователей платформы и наличием некоторых ограничений.   

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

Ниже кратко описано, как работает механизм разметки данных. Взаимодействие с ботом для разметки данных состоит из следующих шагов: 

1. Размещение заказа на разметку данных (заказчик входит на сайт под своим логином и выкладывает задание). 

2. Распределение заданий между пользователями платформы (определяются исполнители, каждый из которых получит какую-то долю задания, например, двадцать или сто текстов для разметки). 

3. Составление смарт-контракта Ethereum между заказчиком и исполнителями для прозрачности разметки данных. 

4. Проверка соблюдения условий смарт-контракта, оценка выполнения работы (в случае, если она выполнена), закрытие смарт-контракта и выплата токенов исполнителям. 

5. Передача результатов работы заказчику. Далее мы подробно расскажем, как наш трехсторонний контракт обрабатывает данные.     

Номинально принято считать, что клиент честен, если не доказано обратное. Однако любой контракт GraphGrail Ai заключается между тремя сторонами – клиентом, заказчиком и платформой. Смарт-контракт защищает исполнителя и обеспечивает достойную оплату качественно выполненного задания. Стоимость выполненной работы можно менять только в большую сторону. Клиент обязан оценить качество работы исполнителя, и смарт-контракт определяет время, в течение которого он может принять решение. Максимальный срок – два дня. Если за это время клиент не высказал замечаний, исполнитель получает деньги. Если работа клиента не устраивает, он получает свои средства обратно за вычетом комиссии платформы.   

В будущем GraphGrail Ai планирует ввести параметр «уровня доверия», чтобы и заказчик, и исполнитель могли сотрудничать только с «проверенными» пользователями платформы, уже подписавшими и успешно выполнившими хотя бы один контракт. Если исполнитель не справляется с работой или делает ее некачественно, его рейтинг ухудшается; впрочем, каждую такую ситуацию следует анализировать отдельно. Смарт-контракт позволяет клиентам платить за выполнение заданий исполнителям, потому что номера платежных кошельков заменить невозможно.  

Смарт-контракт также содержит функцию под названием Force finalize. Она отмечает как одобренные все задания, ждущие решения клиента, перечисляет исполнителю нужную сумму денег, а излишек средств возвращает клиенту. Функция Force finalize не может сработать автоматически, ее нужно вызывать.   

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

Смарт-контракт не может гарантировать, что клиент выложит новые задания, изначально не записанные в условиях. Однако невозможно и доказать, что была выполнена дополнительная работа, если плата за нее не включена в контракт. Команда GraphGrail Ai тщательно протестировала функционал смарт-контрактов и гарантирует, что он защищен от взлома.   

Из всего вышесказанного можно заключить, что наш подход к разработке смарт-контрактов будет выгоден для всех сторон. Прозрачность контракта и трехстороннее соглашение обеспечат честность всех сторон и прибыль платформы.   После внедрения функционала смарт-контрактов на платформе GraphGrail Ai исполнители смогут спокойно размечать данные, создавать программы на основе искусственного интеллекта и разрабатывать новые компоненты платформы, зная, что их труд будет вознагражден сообразно количеству и качеству проделанной работы, а также их рейтингу на платформе. Предприниматели, в свою очередь, смогут заказывать решения для своих компаний или использовать уже готовые, а также монетизировать доступ к своим нейронным сетям.   



Основной смарт-контракт платформы GraphGrail Ai (трехсторонний): https://github.com/GraphGrail/smart-contracts/blob/master/truffle/contracts/GGProject.sol   

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

Отладочная версия контракта: https://github.com/GraphGrail/smart-contracts/blob/master/truffle/contracts/GGProjectDebug.sol   

Скомпилированный контракт: https://github.com/GraphGrail/smart-contracts/blob/master/truffle/build/contracts/GGProject.json    

local-dev-net  – локальное тестирование кода   

Приведенные файлы содержат исходный код смарт-контракта GraphGrail Ai на разметку данных и набор тестов. 

Функционал смарт-контрактов написан на Solidity v. 0.4.17. Всплывающие подсказки на JavaScript и набор тестов реализованы с помощью Truffle v. 4.1.3. 

Для тестирования и использования функционала требуется geth версии 1.8.2 или выше. Код также совместим с последней версией Parity.   

В репозитории доступен исходный код контракта, инструменты для сборки и запуска проекта, тесты на Truffle, данные и скрипты для тестирования с помощью geth и код на JavaScript для взаимодействия со смарт-контрактом.    

В папке truffle расположена среда разработки Truffle. Код трехстороннего смарт-контракта доступен по адресу truffle/contracts/GGProject.sol, в папке truffle/migrations лежит код для запуска смарт-контракта, в папке truffle/test – тесты.    

В папке local-dev-net расположены скрипты и тестовые данные, необходимые для запуска geth в режиме разработки.  

В папке ethereum-bridge содержится JavaScript-код клиента и сервера для взаимодействия с функционалом трехсторонних контрактов и системой токенов платформы GraphGrail Ai: frontend-библиотека доступна по адресу ethereum-bridge/client, а в папке ethereum-bridge/server содержится реализация сервера Node.js с поддержкой REST API. Общая для клиента, сервера и тестов часть кода расположена в папке ethereum-bridge/shared.   

Начало работы   

Перед тем как запускать или тестировать программу, нужно настроить зависимости: 

cd <project-root> 

./install-deps.sh   

Frontend собирается с помощью webpack. Чтобы запустить сервер в режиме разработки, вызовите команду npm start в папке ethereum-bridge/clientfolder. Чтобы запустить пользовательскую версию проекта, вызовите npm run build в той же папке и ищите результаты работы по адресу ethereum-bridge/client/build.   

Тестирование с помощью TestRPC   

К трехстороннему смарт-контракту GraphGrail Ai прилагается инструментарий для тестирования. Чтобы запустить его с помощью виртуального блокчейна TestRPC, просто вызовите npm test: 

cd ./truffle 

npm test   

Тестирование с помощью geth   

Чтобы запустить тестирование с помощью настоящего узла системы Ethereum, сначала запустите geth в режиме разработчика: 

cd ./local-dev-net 

./run-geth.sh  

Эта команда создаст локальную тестовую систему Ethereum и сгенерирует пользователей и состояние их счета, заданное в архиве: ./local-dev-net/blockchain.tar.gz. После успешного запуска geth, вызовите run npm test-local: 

cd ./truffle 

npm run test-local     


Примите участие в нашем TGE!  

0
0.000 GOLOS
На Golos с February 2017
Комментарии (1)
Сортировать по:
Сначала старые