Социальный

Назначение смарт-контракта golos.social

Смарт-контракт golos.social предоставляет пользователям следующие возможности:

  • создание и редактирование профилей (метаданных) пользователей;

  • заведение пин-списка, позволяющего его владельцу получать информацию о публикациях интересующих его пользователей;

  • заведение «черного» списка, позволяющего блокировать общение владельца данного списка с нежелательными по его мнению пользователями.

Терминология, используемая в описании смарт-контракта golos.social

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

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

«Черный» список пользователя — элемент базы данных, содержащий перечень имен аккаунтов, которых данный пользователь характеризует как нежелательных. «Черный» список пользователя создается и редактируется самим пользователем. Использование «черного» списка позволяет пользователю блокировать комментарии и голоса аккаунтов, имена которых содержатся в данном списке. Смарт-контракт golos.publication проверяет отсутствие имени аккаунта в данном списке при выполнении операции createmssg.

Операция-действие (англ. action) — отправка транзакции в смарт-контракт, вызванная внешним обращением объекта к данному смарт-контракту. В качестве объекта может выступать пользователь, другой смарт-контракт, а также отдельный программный компонент.

Операции-действия, поддерживаемые смарт-контрактом golos.social

Смарт-контракт golos.social поддерживает следующие операции-действия: pin, unpin, block, unblock, updatemeta, deletemeta.

Тип accountmeta

Тип accountmeta используется для описания профиля пользователя и представляет собой структуру следующего вида:

struct accountmeta {
    optional<std::string> type;             //  Тип

    optional<std::string> app;              // Приложение, которому принадлежит профиль аккаунта

    optional<std::string> email;            // Адрес электронной почты пользователя
    optional<std::string> phone;            // Номер телефона пользователя
    optional<std::string> facebook;         // Имя пользователя в соцсети facebook
    optional<std::string> instagram;        // Имя пользователя в соцсети instagram
    optional<std::string> telegram;         // Имя пользователя в соцсети telegram
    optional<std::string> vk;               // Имя пользователя в соцсети vk
    optional<std::string> whatsapp;         // Имя пользователя в соцсети whatsapp
    optional<std::string> wechat;           // Имя пользователя в соцсети wechat
    optional<std::string> website;          // Название личного веб-сайта

    optional<std::string> first_name;       // Имя пользователя
    optional<std::string> last_name;        // Фамилия пользователя
    optional<std::string> name;             // Имя аккаунта
    optional<std::string> birth_date;       // Дата рождения
    optional<std::string> gender;           // Пол
    optional<std::string> location;         // Регион проживания
    optional<std::string> city;             // Город проживания

    optional<std::string> about;            // О пользователе
    optional<std::string> occupation;       // Занятость
    optional<std::string> i_can;            // Возможности пользователя
    optional<std::string> looking_for;      // Целенаправленность пользователя 
    optional<std::string> business_category; // Профессия

    optional<std::string> background_image; // Изображение на заднем фоне
    optional<std::string> cover_image;      // Изображение на обложке
    optional<std::string> profile_image;    // Изображение (аватар) пользователя 
    optional<std::string> user_image;       // Фото пользователя
    optional<std::string> ico_address;      // ico адрес

    optional<std::string> target_date;      // Дата (срок выполнения) достижения плана
    optional<std::string> target_plan;      // Установленный план пользователя 
    optional<std::string> target_point_a;   // Установленная веха А в достижении плана
    optional<std::string> target_point_b;   // Установленная веха В в достижении плана
}

Тип accountmeta используется в качестве параметра в операции-действии updatemeta.

Таблица pinblock

Таблица pinblock является элементом базы данных и содержит информацию о взаимоотношении одного пользователя к другому. Данные из таблицы используются для создания пин-списка и списка заблокированных пользователей.

Таблица pinblock содержит следующие поля:

  • (name) _SERVICE_.scope — имя аккаунта (первое имя из пары), который вносит имя интересующего его аккаунта в один из списков — пин-список или список заблокированных аккаунтов;

  • (name) account — имя аккаунта, которое было добавлено в один из списков — пин-список или список заблокированных аккаунтов;

  • (bool) pinningtrue означает, что имя аккаунта добавлено в пин-список;

  • (bool) blockingtrue означает, что имя аккаунта добавлено в список заблокированных аккаунтов.

Примечание:

  • Наличие true одновременно в полях pinningи blocking недопустимо.

  • Имя аккаунта удаляется из пин-списка и списка заблокированных аккаунтов, если поля pinningи blocking содержат значение false.

pin

Операция-действие pin используется для добавления аккаунтом в его пин-список имени другого аккаунта. Операция-действие pin имеет следующий вид:

void pin(
    name pinner,
    name pinning
);

Параметры:

  • pinner — имя аккаунта, который добавляет в свой пин-список имя аккаунта, заданное в поле pinning;

  • pinning — имя аккаунта, которое добавляется в пин-список.

Правами на запуск операции-действия pin обладает аккаунт pinner.

На операцию-действие pin введены следующие ограничения:

  • добавление своего имени аккаунта в пин-список недопустимо, то есть поле pinning не должно содержать значение поля pinner;

  • добавление в пин-список уже имеющегося в нем имени аккаунта недопустимо;

  • добавление имени аккаунта в пин-список, при наличии его в списке заблокированных аккаунтом pinner, недопустимо.

unpin

Операция-действие unpin используется для удаления аккаунтом из его пин-списка имени другого аккаунта. Операция unpin имеет следующий вид:

void unpin(
    name pinner,
    name pinning
);

Параметры:

  • pinner — имя аккаунта, который удаляет из своего пин-списка имя аккаунта, заданное в поле pinning;

  • pinning — имя аккаунта, который удаляется из пин-списка.

Правами на запуск операции-действия pin обладает аккаунт pinner.

На операцию-действие unpin введены следующие ограничения:

  • удаление своего имени аккаунта из пин-списка недопустимо, то есть поле pinning не должно содержать значение поля pinner;

  • удаление из пин-списка не имеющегося в нем имени аккаунта недопустимо.

block

Операция-действие block используется для добавления аккаунтом в его «черный» список имени другого аккаунта. Операция-действие block имеет следующий вид:

void block(
    name blocker,
    name blocking
);

Параметры:

  • blocker — имя аккаунта, который добавляет в свой «черный» список имя аккаунта, заданное в поле blocking;

  • blocking — имя аккаунта, которое добавляется в «черный» список.

Правами на запуск операции-действия block обладает аккаунт blocker.

На экшен-операцию block введены следующие ограничения:

  • блокирование своего имени аккаунта недопустимо, то есть поле blocking не должно содержать значение поля blocker;

  • добавление в «черный» список уже имеющегося в нем имени аккаунта недопустимо.

unblock

Операция-действие unblock используется для удаления аккаунтом из своего «черного» списка имени другого аккаунта. Операция-действие unblock имеет следующий вид:

void unblock(
    name blocker,
    name blocking
);

Параметры:

  • blocker — имя аккаунта, который удаляет из своего «черного» списка имя аккаунта, заданного в поле blocking;

  • blocking — имя аккаунта, который удаляется из «черного» списка.

Правами на запуск операции-действия unblock обладает аккаунт blocker.

На экшен-операцию unblock введены следующие ограничения:

  • удаление своего имени аккаунта из «черного» списка недопустимо, то есть поле blocking не должно содержать значение поля blocker;

  • удаление из «черного» списка не имеющегося в нем имени аккаунта недопустимо.

updatemeta

Операция-действие updatemeta используется для заполнения, изменения или удаления значений полей профиля аккаунта. Операция-действие updatemeta имеет следующий вид:

void updatemeta(
    name account,
    accountmeta meta
);

Параметры:

  • account — имя аккаунта, профиль которого редактируется;

  • meta — значение в виде структуры объявления accountmeta.

Правами на запуск операции-действия updatemeta обладает аккаунт, указанный в поле account.

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

deletemeta

Операция-действие deletemeta используется для удаления профиля аккаунта. Операция-действие delelemeta имеет следующий вид:

void deletemeta(name account);

Параметр:

  • account — имя аккаунта, профиль которого удаляется.

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

Правами на запуск операции-действия deletemeta обладает аккаунт, удаляющий свой профиль.

Last updated