BIOS

Назначение смарт-контракта cyber.bios

Системный смарт-контракт cyber.bios используется в качестве связующего звена между операциями, часть которых выполняется непосредственно в смарт-контрактах, а часть — в ядре ноды.

В состав смарт-контракта cyber.bios входят операции-действия newaccount, setprods, setparams, reqauth, setabi, setcode, onblock, checkwin, bidname, bidrefund, canceldelay, updateauth, deleteauth, linkauth, unlinkauth.

newaccount

Операция-действие newaccount используется для создания новых аккаунтов в сети cyberway.

void bios::newaccount(
    name creator,
    name name,
    authority owner,
    authority active
)

Параметры:

  • creator — создатель нового аккаунта.

  • name — имя аккаунта, которое создается в системе.

  • owner — структура вида authority, содержащая owner public key для нового аккаунта.

  • active — структура вида authority, содержащая active public key для нового аккаунта.

Созданному аккаунту будут переданы параметры owner и active.

Ограничения:

  • количество символов в создаваемом (не полученном на аукционе) имени, не должно превышать 12. Также оно не должно содержать символ «точка».

  • расширение имени (выкупленном на аукционе или созданном через системный аккаунт) допускается добавлением символов справа после символа «точка» (например, владелец имени cyber может создать имя cyber.name).

Транзакция, содержащая newaccount, должна быть подписана создателем нового аккаунта.

setprods

Операция-действие setprods вызывается системой и используется для составления расписания валидаторов. Расписание содержит список валидаторов в соответствии с их очередностью в производстве блоков.

[[eosio::action]] void setprods(eosio::producer_key schedule )

Параметр schedule — список ключей валидаторов.

Для выполнения транзакции, содержащей операцию setprods, требуется подпись аккаунта cyber, на котором развернут смарт-контракт cyber.bios.

setparams

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

[[eosio::action]] void setparams(eosio::blockchain_parameters params)

Параметр params — структура, содержащая настраиваемые параметры системы.

Для выполнения транзакции, содержащей операцию setparams, требуется подпись аккаунта cyber, на котором развернут смарт-контракт cyber.bios.

reqauth

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

[[eosio::action]] void reqauth(name from)

Параметр from — имя аккаунта, подписавшего транзакцию, чья подпись проверяется.

Для выполнения транзакции, содержащей операцию reqauth, требуется подпись аккаунта from.

setabi

Операция-действие setabi используется для загрузки ABI-описания на аккаунт.

[[eosio::action]] void setabi( 
    name account,
    std::vector<char> abi
)

Параметры:

  • account — имя аккаунта, на который загружается ABI-описание.

  • abi — массив байтов, содержащий ABI-описание.

setcode

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

[[eosio::action]] void setcode( 
    name account,
    uint8_t vmtype,
    uint8_t vmversion,
    std::vector<char> code
)

Параметры:

  • account — имя аккаунта, на который загружается код смарт-контракта.

  • vmtype — тип контракта (тип виртуальной машины). В настоящем релизе параметр принимает значение «0».

  • vmversion — версия контракта (версия виртуальной машины). В настоящем релизе параметр принимает значение «0».

  • code — массив байтов, содержащий код смарт-контракта.

onblock

Операция-действие onblock является недоступной для пользователя и вызывается системой после создания каждого нового блока. Внутри onblock реализован вызов кода смарт-контракта cyber.govern.

void bios::onblock(block_header header)

Параметр header — заголовок блока.

checkwin

Операция-действие checkwin контролирует появление победителя на аукционе имён. Операция не имеет параметров и вызывается неявно.

void bios::checkwin()

bidname

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

void bios::bidname( 
    name bidder,
    name newname,
    asset bid
)

Параметры:

  • bidder — участник аукциона, претендент на получение имени.

  • newname — имя, на получение которого делается ставка.

  • bid — ставка на получаемое имя. Ставки принимаются только в системных токенах (CYBER).

Если ставка bid оказывается самой высокой на получение имени newname и по истечении 24 часов она не будет перебита, участник аукциона bidder будет объявлен победителем и, соответственно, владельцем данного имени. В этом случае ставка bid не возвращается обратно участнику bidder. В случае неуспеха, то есть, если ставка bid в течение 24 часов перебивается, она будет возвращена обратно участнику bidder (в настоящем релизе автоматического возврата ставки не происходит, для ее возврата требуется вызов bidrefund).

bidrefund

Операция-действие bidrefund используется для возврата невыигрышной (не ставшей самой высокой) ставки участнику аукциона.

void bios::bidrefund(name bidder)

Параметр bidder — участник аукциона, которому возвращается ставка.

Если участник аукциона не становится победителем, поставленная им ставка будет ему возвращена. Для возврата ставки участник аукциона должен создать транзакцию с операцией bidrefund. Если участником аукциона было поставлено несколько ставок на разные имена и все эти ставки (или часть из них) были невыигрышными, то для возврата всех невыигрышных ставок достаточно однократного вызова bidrefund.

canceldelay

Операция-действие canceldelay отменяет отложенную транзакцию.

void canceldelay(
    permission_level canceling_auth,
    checksum256 trx_id
)

Параметры:

  • canceling_auth — значение,содержащее аккаунт создателя транзакции и его разрешение (имя разрешения принимает значение active).

  • trx_id — идентификатор отложенной транзакции.

Для выполнения транзакции, содержащей операцию canceldelay, требуется подпись создателя транзакции canceling_auth.

updateauth

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

void updateauth( 
    name  account,
    name  permission,
    name  parent,
    authority auth
)

Параметры:

  • account — имя аккаунта, у которого изменяется авторизация.

  • permission — имя разрешения (например: owner, active, posting и др.), которое обновляется.

  • parent — имя родительского разрешения (например: owner является родительским разрешением для active; active является родительским разрешением для posting. Дочерние разрешения не могут превосходить в правах родительские разрешения). В большинстве случаев этот параметр принимает значение active.

  • auth — структура вида authority, новые значения полей которой задаются в соответствии с permission.

Для выполнения транзакции, содержащей операцию updateauth, требуется подпись аккаунта с именем account.

deleteauth

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

void deleteauth(
    name account,
    name permission
)

Параметры:

  • account — имя аккаунта, авторизация у которого удаляется.

  • permission — имя разрешения, которое удаляется.

Транзакция, содержащая операцию deleteauth, должна быть подписана аккаунтом с именем account.

linkauth

Операция-действие linkauth разрешает permission выполнять какое-то действие в определенном контракте.

void linkauth( 
    name account,
    name code,
    name type,
    name requirement
)

Параметры:

  • account — имя аккаунта, у которого изменяется permission.

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

  • type — тип разрешения. В смарт-контракте разрешается выполнять все операции, если параметр является пустым, или только одну операцию, заданную в параметре. В последнем случае значение параметра совпадает с именем операции-действия.

  • requirement — имя permission, которому разрешается выполнять операцию. Этот параметр не может быть пустым.

Пара параметров account и requirement задают permission_level — аккаунт и имя его разрешения. Пара параметров code и type задают аккаунт контракта и операцию-действие.

Важное: Любому набора параметров account, code и type должно соответствовать только одно значение requirement. Это означает, что аккаунт не может иметь два и более разных разрешений, связанных с теми же аккаунтом контракта и операцией-действием.

Если в операцию-действие повторно передаются все те же значения account, code и type, но с другим requirement, предыдущее его значение будет заменено на последнее переданное.

Транзакция, содержащая операцию linkauth, должна быть подписана аккаунтом с именем account.

unlinkauth

Операция-действие unlinkauth удаляет имя разрешения permission предоставленное операцией-действием linkauth в определенном контракте.

void unlinkauth(
    name account,
    name code,
    name type
)

Параметры:

  • account — имя аккаунта, у которого удаляется разрешение permission.

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

  • type — тип разрешения.

Транзакция, содержащая операцию unlinkauth, должна быть подписана аккаунтом с именем account.

Last updated