Социальный
Назначение смарт-контракта golos.social
Смарт-контракт golos.social
предоставляет пользователям следующие возможности:
создание и редактирование профилей (метаданных) пользователей;
определение репутации каждого пользователя на основании результатов голосования за его посты или оставленные им комментарии;
заведение пин-списка, позволяющего его владельцу получать информацию о публикациях интересующих его пользователей;
заведение «черного» списка, позволяющего блокировать общение владельца данного списка с нежелательными по его мнению пользователями.
Терминология, используемая в описании смарт-контракта golos.social
Профиль пользователя — метаданные пользователя, хранящиеся в базе данных клиентского приложения в виде структуры, характеризующей пользователя. Профиль пользователя создается и редактируется самим пользователем. Смарт-контракт golos.social
не отвечает за сохранность метаданных пользователя, а только контролирует наличие права пользователя на изменение или удаление метаданных.
Репутация пользователя — целочисленное значение, которое может быть как положительным, так и отрицательным. Репутация пользователя показывает отношение других пользователей к публикациям и комментариям данного пользователя. Значение репутации пользователя увеличивается или уменьшается на единицу за каждый отданный ему голос «upvote» или «downvote» соответственно.
Пин-список пользователя — элемент базы данных, содержащий перечень имен аккаунтов, интересующих данного пользователя. Пин-список пользователя создается и редактируется самим пользователем. Пин-список пользователя может использоваться в клиентском приложении для создания подписок, в том числе информировать данного пользователя (подписчика) о появлении нового поста, имя автора которого содержится в его пин-списке.
«Черный» список пользователя — элемент базы данных, содержащий перечень имен аккаунтов, которых данный пользователь характеризует как нежелательных. «Черный» список пользователя создается и редактируется самим пользователем. Использование «черного» списка позволяет пользователю блокировать комментарии и голоса аккаунтов, имена которых содержатся в данном списке. Смарт-контракт golos.publication
проверяет наличие имени аккаунта в данном списке при выполнении операций createmsg
, upvote
и downvote
.
Операция-действие (англ. action) — отправка транзакции в смарт-контракт, вызванная внешним обращением объекта к данному смарт-контракту. В качестве объекта может выступать пользователь, другой смарт-контракт, а также отдельный программный компонент.
Операции-действия, поддерживаемые смарт-контрактом golos.social
Смарт-контракт golos.social
поддерживает следующие операции-действия пользователей: pin
, unpin
, block
, unblock
, changereput
, updatemeta
и deletemeta
.
Объявление accountmeta
Объявление accountmeta
используется для описания профиля пользователя и представляет собой структуру следующего вида:
Объявление accountmeta
задается в качестве параметра в операциях-действиях updatemeta
и deletemeta
.
Таблица pinblock
Таблица pinblock
является элементом базы данных и содержит информацию о взаимоотношении одного пользователя к другому. Данные из таблицы используются для создания пин-списка и списка заблокированных пользователей.
Таблица pinblock
содержит следующие поля:
(name) _SCOPE_
— имя аккаунта (первое имя из пары), который вносит имя интересующего его аккаунта в один из списков — пин-список или список заблокированных аккаунтов;
(name) account
— имя аккаунта, которое было добавлено в один из списков — пин-список или список заблокированных аккаунтов;
(bool) pinning
— true
означает, что имя аккаунта добавлено в пин-список;
(bool) blocking
— true
означает, что имя аккаунта добавлено в список заблокированных аккаунтов.
Примечание:
Наличие true
одновременно в полях pinning
и blocking
недопустимо.
Имя аккаунта удаляется из пин-списка и списка заблокированных аккаунтов, если поля pinning
и blocking
содержат значение false
.
Таблица reputation
Таблица reputation
является элементом базы данных и используется для хранения репутации аккаунтов.
Таблица reputation
содержит следующие поля:
(name) _SCOPE_
) — имя аккаунта, которому принадлежит репутация;
(int64) reputation
— значение репутации аккаунта с именем в поле _SCOPE_
.
Примечание:
Имя аккаунта с нулевой репутацией содержится в таблице reputation
, если ранее значение его репутации было отличным от нуля.
Операция-действие pin
Операция-действие pin
используется для добавления аккаунтом в его пин-список имени другого аккаунта.
Операция-действие pin
имеет следующий вид:
Параметры:
pinner
— имя аккаунта, который добавляет в свой пин-список имя аккаунта, заданного в поле pinning
;
pinning
— имя аккаунта, которое добавляется в пин-список.
Правами на запуск операции-действия pin
обладает аккаунт pinner
.
На операцию-действие pin
введены следующие ограничения:
добавление своего имени аккаунта в пин-список недопустимо, то есть поле
pinning
не должно содержать значение поляpinner
;добавление в пин-список уже имеющегося в нем имени аккаунта недопустимо;
добавление имени аккаунта в пин-список, при наличии его в списке заблокированных аккаунтом
pinner
, недопустимо.
Операция-действие unpin
Операция-действие unpin
используется для удаления аккаунтом из его пин-списка имени другого аккаунта.
Операция unpin
имеет следующий вид:
Параметры:
pinner
— имя аккаунта, который удаляет из своего пин-список имя аккаунта, заданного в поле pinning
;
pinning
— имя аккаунта, который удаляется из пин-списка.
Правами на запуск операции-действия pin
обладает аккаунт pinner
.
На операцию-действие unpin
введены следующие ограничения:
удаление своего имени аккаунта из пин-список недопустимо, то есть поле
pinning
не должно содержать значение поляpinner
;удаление из пин-списка не имеющегося в нем имени аккаунта недопустимо.
Операция-действие block
Операция-действие block
используется для добавления аккаунтом в его «черный» список имени другого аккаунта.
Операция-действие block
имеет следующий вид:
Параметры:
blocker
— имя аккаунта, который добавляет в свой «черный» список имя аккаунта, заданного в поле blocking
;
blocking
— имя аккаунта, которое добавляется в «черный» список.
Правами на запуск операции-действия block
обладает аккаунт blocker
.
На экшен-операцию block
введены следующие ограничения:
блокирование своего имени аккаунта недопустимо, то есть поле
blocking
не должно содержать значение поляblocker
;добавление в «черный» список уже имеющегося в нем имени аккаунта недопустимо.
Операция-действие unblock
Операция-действие unblock
используется для удаления аккаунтом из своего «черного» списка имени другого аккаунта.
Операция-действие unblock
имеет следующий вид:
Параметры:
blocker
— имя аккаунта, который удаляет из своего «черного» списка имя аккаунта, заданного в поле blocking
;
blocking
— имя аккаунта, который удаляется из «черного» списка.
Правами на запуск операции-действия unblock
обладает аккаунт blocker
.
На экшен-операцию unblock
введены следующие ограничения:
удаление своего имени аккаунта из «черного» списка недопустимо, то есть поле
blocking
не должно содержать значение поляblocker
;удаление из «черного» списка не имеющегося в нем имени аккаунта недопустимо.
Операция-действие changereput
Операция-действие changereput
обновляет репутацию аккаунта автора сообщения в соответствии со значением голоса другого аккаунта, проголосовавшего за или против данного сообщения.
Операция-действие changereput
имеет следующий вид:
Параметры:
voter
— имя проголосовавшего аккаунта. Данное имя содержится в changereput
для того, чтобы проверить действия данного аккаунта на соответствие нормативной этики по отношению к аккаунту author
;
author
— имя аккаунта, у которого обновляется репутация;
rshares
— значение голоса, в соответствии с которым уменьшается или увеличивается репутация аккаунта. Голос вида «downvote» уменьшает репутацию аккаунта на единицу, а голос вида «upvote» увеличивает ее на такое же значение.
Правами на запуск операции-действия changereput
обладает только смарт-контракт golos.publication
. Операция-действие changereput
вызывается из операции downvote
или upvote
смарт-контракта golos.publication
.
Вызов операции-действия changereput
из клиентского приложения не допускается.
Операция-действие updatemeta
Операция-действие updatemeta
используется для заполнения, изменения или удаления значений полей профиля аккаунта.
Операция-действие updatemeta
имеет следующий вид:
Параметры:
account
— имя аккаунта, профиль которого редактируется;
meta
— значение в виде структуры объявления accountmeta
.
Правами на запуск операции-действия updatemeta
обладает аккаунт, указанный в поле account
.
Операция-действие updatemeta
не выполняет каких-либо действий с базой данных, а только проверяет права пользователя, изменяющего свой профиль.
Изменение метаданных пользователей в базе данных реализуется в клиентском приложении.
Правами запуска операции-действия updatemeta
обладает аккаунт, редактирующий свой профиль.
Операция-действие deletemeta
Операция-действие deletemeta
используется для удаления профиля аккаунта. Операция-действие delelemeta
имеет следующий вид:
Параметры:
account
— имя аккаунта, профиль которого удаляется.
Операция-действие deletemeta
не выполняет каких-либо действий с базой данных, а только проверяет права пользователя, удаляющего свой профиль.
Удаление метаданных пользователя из базы данных реализуется в клиентском приложении.
Правами на запуск операции-действия deletemeta
обладает аккаунт, удаляющий свой профиль.
Last updated