Смарт-контракт Воркер
Назначение смарт-контракта cyber.worker
Cмарт-контракт cyber.worker
предназначен для предоставлении сервиса пользователям в части приема к рассмотрению от них предложений по улучшению функциональных возможностей или иных характеристик блокчейна CyberWay, а также в части реализации данных предложений с привлечением как их авторов, так и сторонних лиц в качестве исполнителей с выплатой им соответствующих вознаграждений.
Используемая терминология
Предложение — поступившая от пользователя заявка на проведение работы с целью улучшения функциональных возможностей или иных характеристик блокчейна CyberWay. Заявка может быть подана в виде отдельного поста с описанием идеи без способа ее реализации или с описанием идеи и уже готовым техническим решением для ее реализации.
Техническое задание (сокр. ТЗ) — публикация, содержащая описание технического решения для реализации Предложения. В зависимости от сложности реализации Предложения ТЗ может быть представлено в виде текста небольшого объема или в виде последовательности операций, выполнение которых не должно вызвать какого-либо непонимания у исполнителя этого ТЗ. В случае внесения изменений в логику работы программного кода CyberWay ТЗ должно быть составлено в соответствии с общепринятыми требованиями к заданию по разработке и сопровождению программных продуктов. В ТЗ должен быть указан срок выполнения работы и размер вознаграждения за ее выполнение.
Отчет — публикация, содержащая описание результатов работы, выполненной в соответствии с ТЗ.
Воркер — пользователь, непосредственно выполняющий работу в соответствии с ТЗ. Под аккаунтом пользователя может выступать как отдельное лицо так и группа лиц.
Параметры, жестко устанавливаемые в cyber.worker
Параметры, прописанные в коде:
Идентификатор поста или комментария
При публикации поста c Предложением или комментария к посту клиентское приложение создает для них уникальный идентификатор с типом comment_id_t
. Идентификатор представляет собой целочисленное беззнаковое 64-битовое значение, в том числе 0.
В клиентском приложении должна быть сформирована собственная таблица, в которую при создании каждого комментария должна добавляться запись для хранения его неконсенсусной информации (прежде всего, текста). При вызове операций-действий для изменения или удаление комментария соответствующая ему запись в таблице должна быть также изменена или удалена.
В зависимости от вида вызываемых операций-действий идентификатор создается в следующих вариантах:
идентификатор в варианте уникального автоинкрементного первичного ключа в таблице (идентификатор записи в клиентском приложении);
идентификатор в варианте уникального первичного ключа, содержащего первые 64 бита хеш-суммы адреса (CPU-permlink) комментария в клиентском приложении.
Операции-действия смарт-контракта cyber.worker
В состав смарт-контракта cyber.worker
входят операции-действия addcomment , editcomment, delcomment, addpropos, editpropos, delpropos, addtspec, edittspec, deltspec, apprtspec, dapprtspec, unapprtspec, startwork, cancelwork, acceptwork, unacceptwork, payout.
Публикация Предложения
addcomment
Операция-действие addcomment
используется для создания поста с текстом Предложения, ТЗ или Отчёта, а также комментария к посту с таким содержанием. На основе данного поста вызовом addpropos
создается Предложение. Операция имеет вид:
Параметры:
comment_id
— идентификатор публикуемого поста или комментария к нему.author
— имя аккаунта, автора поста или комментария.parent_id
— идентификатор родительского поста или комментария, к которому публикуется дочерний комментарий. Данный параметр остается пустым, если публикуется пост.text
— строка с текстом поста или комментария.
Для вызова данной операции требуются права аккаунта author
.
editcomment
Операция-действие editcomment
используется для редактирования (доработки) поста, содержащего Предложение, ТЗ или Отчет, а также комментария к нему. Операция имеет вид:
Параметры:
comment_id
— идентификатор редактируемого поста или комментария к нему.text
— строка с измененным текстом поста или комментария.
Ограничение:
Текст комментария text
не должен быть пустым.
Для вызова данной операции требуются права автора поста, в случае редактирования текста поста, или автора комментария, в случае редактирования текста комментария.
delcomment
Операция-действие delcomment
используется для удаления поста, содержащего Предложение, ТЗ или Отчет, а также комментария к нему. Операция имеет вид:
Параметр comment_id
— идентификатор удаляемого поста или комментария.
Ограничения:
Удаление поста допускается в том случае, если к нему не были созданы Предложение, ТЗ или Отчет и у него отсутствуют комментарии.
Удаление комментария допускается в том случае, если он не содержит дочерних комментариев.
Для вызова операции `delcomment требуется авторизация автора поста, в случае удаления поста, или автора комментария, в случае удаления комментария.
addpropos
Операция-действие addpropos
используется для подачи Предложения на основе текста поста, опубликованного вызовом addcomment
. Операция имеет вид:
Параметры:
proposal_id
— идентификатор поста, который также является идентификатором Предложения.author
— имя аккаунта, публикующего Предложение.type
— тип публикуемого Предложения. В зависимости от детализации описания идеи в данном параметре указывается тип Предложения:TYPE_TASK = 0
— Предложение содержит описание идеи без технического решения ее реализации;TYPE_DONE = 1
— Предложение содержит описание идеи с уже готовым техническим решением для ее реализации.
Для вызова addpropos
необходима авторизация автора поста author
.
Ограничения:
Комментарии второго и более уровней (не родительские) не допускаются.
Публикация второго Предложения в посте недопустима, если данный пост уже содержит Предложение.
editpropos
Операция-действие editpropos
используется для редактирования (доработки) текста Предложения в ранее опубликованном посте. Операция имеет вид:
Параметры:
proposal_id
— идентификатор редактируемого поста с текстом Предложения.type
— тип публикуемого Предложения.
Ограничение: Изменение текста Предложения не допускается, если для него уже создано ТЗ.
Для вызова editpropos
необходима авторизация автора Предложения (поста).
delpropos
Операция-действие delpropos
используется для удаления ранее опубликованного Предложения. Операция имеет вид:
Параметр proposal_id
— идентификатор удаляемого Предложения (поста).
Ограничение: Удалять Предложение разрешается, если для него не создано ТЗ. После создания для него ТЗ удаление Предложения не допускается.
Для вызова delpropos
необходима авторизация автора Предложения (поста).
Публикация Технического Задания
addtspec
Операция-действие addtspec
используется для публикации составленного ТЗ для Предложения. Операция имеет вид:
Параметры:
tspec_id
— идентификатор ТЗ (поста).author
— имя аккаунта, автора ТЗ (поста).proposal_id
— идентификатор Предложения, для которого составлено ТЗ.tspec
— параметры распределения вознаграждения за работу, выполняемую в соответствии с ТЗ:asset specification_cost
— сумма вознаграждения автору ТЗ;asset development_cost
— сумма вознаграждения воркеру;int16_t payments_count
— кол-во платежей, необходимых для выплаты указанных сумм вознаграждений;uint32_t payments_interval
— интервал проводимых выплат (в секундах). Первая выплата осуществляется по окончании интервала.
worker
- имя аккаунта воркера, назначенного на реализацию Предложения в соответствии с ТЗ. Для Предложения с типом, отличного от TYPE_DONE, воркер назначается во время вызоваstartwork
.
Для вызова операции addtspec
требуется авторизация автора ТЗ (поста).
edittspec
Операция-действие edittspec
используется для редактирования (доработки) ранее опубликованного ТЗ, а также для замены воркера. Операция имеет вид:
Параметры:
tspec_id
— идентификатор ТЗ (поста).tspec
— параметры распределения вознаграждения за работу, выполняемую в соответствии с ТЗ.worker
— имя аккаунта воркера, назначаемого на реализацию Предложения.
Ограничение:
Замена воркера возможна в том случае, если Предложение имеет тип, отличный от TYPE_DONE
.
Для вызова операции edittspec
требуется авторизация автора ТЗ (поста).
deltspec
Операция-действие deltspec
используется для удаления ранее опубликованного ТЗ. Операция имеет вид:
Параметр tspec_id
— идентификатор удаляемого ТЗ (поста)..
Ограничение: Не допускается удалять ТЗ, если по нему уже начата выплата вознаграждений.
Для вызова операции deltspec
требуется авторизация автора ТЗ (поста).
Принятие Технического Задания
apprtspec
Операция-действие apprtspec
используется валидаторами для подачи голоса вида «ЗА» при голосовании за принятие ТЗ. Операция имеет вид:
Параметры:
tspec_id
— идентификатор ТЗ (поста).approver
— имя аккаунта валидатора, голосующего за принятие ТЗ.
Операция apprtspec
отменяет отданный валидатором голос вида «ПРОТИВ», если ранее им была вызвана операция dapprtspec
.
dapprtspec
Операция-действие dapprtspec
используется валидатором для подачи голоса вида «ПРОТИВ» при голосовании за принятие ТЗ. Операция имеет вид:
Параметры:
tspec_id
— идентификатор ТЗ (поста).approver
— имя аккаунта валидатора, голосующего против принятия ТЗ.
Операция dapprtspec
отменяет отданный валидатором голос вида «ЗА», если ранее им была вызвана операция apprtspec
.
unapprtspec
Операция-действие unapprtspec
используется валидатором для отмены ранее поданного ими голоса при голосовании за принятие ТЗ. Вызов операции аналогичен подаче голоса вида «ВОЗДЕРЖАЛСЯ». Операция имеет вид:
Параметры:
tspec_id
— идентификатор ТЗ (поста).approver
— имя аккаунта валидатора, голосующего как «ВОЗДЕРЖАЛСЯ».
Выполнение работы. Публикация Отчета
startwork
Операция-действие startwork
используется автором ТЗ для назначения воркера на выполняемую в соответствии с ТЗ работу. Вызов операции означает начало работы. Операция имеет вид:
Параметры:
tspec_id
— идентификатор ТЗ (поста), в соответствии с которым начинает выполняться работа.worker
— имя назначенного воркера.
Для вызова операции startwork
требуется авторизация автора ТЗ.
cancelwork
Операция-действие cancelwork
используется автором ТЗ или воркером для отказа от дальнейшего выполнения работы в соответствии с ТЗ. Вызов операции означает прекращение работы. Операция имеет вид:
Параметры:
tspec_id
— идентификатор ТЗ (поста), в соответствии с которым выполнялась работа.initiator
— имя аккаунта, инициатора отказа выполнения работы. Указывается имя аккаунта либо автора ТЗ, либо воркера.
Для вызова операции cancelwork
требуются права воркера, если инициатором отказа является воркер, или права автора ТЗ в остальных случаях.
acceptwork
Операция-действие acceptwork
используется автором ТЗ для публикации Отчета о результатах выполненной работы. Операция имеет вид:
Параметры:
tspec_id
— идентификатор ТЗ (поста), в соответствии с которым была выполнена работа.result_comment_id
— идентификатор Отчета (поста).
Ограничение: Не допускается публикация Отчета в виде комментария. Текст Отчета должен быть размещен в отдельном посте для предоставления его на голосование валидаторам.
Для вызова операции acceptwork
требуются права автора ТЗ.
unacceptwork
Операция-действие unacceptwork
используется автором ТЗ для удаления ранее опубликованного им Отчета о выполненной воркером работе. Операция имеет вид:
Параметр tspec_id
— идентификатор ТЗ (поста), в соответствии с которым была выполнена работа. Опубликованный Отчет о результатах выполнения данной работы удаляется.
Ограничение:
Операция unacceptwork
не может быть вызвана до завершения голосования валидаторов за принятие результатов работы.
Для вызова операции acceptwork
требуются права автора ТЗ.
Выплата вознаграждения
payout
Операция-действие payout
используется для выплаты вознаграждений за выполненную и принятую валидаторами работу в соответствии с ТЗ. В случае завершения и принятия валидаторами одновременно нескольких работ, выплата производится в соответствии с каждым ТЗ. Операция имеет вид:
Параметр ram_payer
— имя аккаунта, который вызывает операцию payout
.
Операция может быть вызвана либо смарт-контрактом cyberway.worker
из контракта эмиссии, либо пользователем. Каких-либо прав для вызова не требуется.
Аккаунт с именем ram_payer
оплачивает транзакцию, если количество ТЗ, по которым производится выплата, превышает значение параметра max_payed_tspecs_per_action.
Last updated