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.
Параметры:
creator
— создатель нового аккаунта.name
— имя аккаунта, которое создается в системе.owner
— структура видаauthority
, содержащаяowner public key
для нового аккаунта.active
— структура видаauthority
, содержащаяactive public key
для нового аккаунта.
Созданному аккаунту будут переданы параметры owner
и active
.
Ограничения:
количество символов в создаваемом (не полученном на аукционе) имени, не должно превышать 12. Также оно не должно содержать символ «точка».
расширение имени (выкупленном на аукционе или созданном через системный аккаунт) допускается добавлением символов справа после символа «точка» (например, владелец имени
cyber
может создать имяcyber.name
).
Транзакция, содержащая newaccount
, должна быть подписана создателем нового аккаунта.
setprods
Операция-действие setprods
вызывается системой и используется для составления расписания валидаторов. Расписание содержит список валидаторов в соответствии с их очередностью в производстве блоков.
Параметр schedule
— список ключей валидаторов.
Для выполнения транзакции, содержащей операцию setprods
, требуется подпись аккаунта cyber
, на котором развернут смарт-контракт cyber.bios
.
setparams
Операция-действие setparams
вызывается системой и используется для настройки параметров системы. Операция имеет вид:
Параметр params
— структура, содержащая настраиваемые параметры системы.
Для выполнения транзакции, содержащей операцию setparams
, требуется подпись аккаунта cyber
, на котором развернут смарт-контракт cyber.bios
.
reqauth
Операция-действие reqauth
используется для проверки в транзакции подписи пользователя. Операция имеет вид:
Параметр from
— имя аккаунта, подписавшего транзакцию, чья подпись проверяется.
Для выполнения транзакции, содержащей операцию reqauth
, требуется подпись аккаунта from
.
setabi
Операция-действие setabi
используется для загрузки ABI-описания на аккаунт.
Параметры:
account
— имя аккаунта, на который загружается ABI-описание.abi
— массив байтов, содержащий ABI-описание.
setcode
Операция-действие setcode
используется для загрузки кода смарт-контракта на аккаунт.
Параметры:
account
— имя аккаунта, на который загружается код смарт-контракта.vmtype
— тип контракта (тип виртуальной машины). В настоящем релизе параметр принимает значение «0».vmversion
— версия контракта (версия виртуальной машины). В настоящем релизе параметр принимает значение «0».code
— массив байтов, содержащий код смарт-контракта.
onblock
Операция-действие onblock
является недоступной для пользователя и вызывается системой после создания каждого нового блока. Внутри onblock
реализован вызов кода смарт-контракта cyber.govern
.
Параметр header
— заголовок блока.
checkwin
Операция-действие checkwin
контролирует появление победителя на аукционе имён. Операция не имеет параметров и вызывается неявно.
bidname
Операция-действие bidname
позволяет сделать ставку на получение определенного имени на аукционе имен.
Параметры:
bidder
— участник аукциона, претендент на получение имени.newname
— имя, на получение которого делается ставка.bid
— ставка на получаемое имя. Ставки принимаются только в системных токенах (CYBER).
Если ставка bid
оказывается самой высокой на получение имени newname
и по истечении 24 часов она не будет перебита, участник аукциона bidder
будет объявлен победителем и, соответственно, владельцем данного имени. В этом случае ставка bid
не возвращается обратно участнику bidder
.
В случае неуспеха, то есть, если ставка bid
в течение 24 часов перебивается, она будет возвращена обратно участнику bidder
(в настоящем релизе автоматического возврата ставки не происходит, для ее возврата требуется вызов bidrefund
).
bidrefund
Операция-действие bidrefund
используется для возврата невыигрышной (не ставшей самой высокой) ставки участнику аукциона.
Параметр bidder
— участник аукциона, которому возвращается ставка.
Если участник аукциона не становится победителем, поставленная им ставка будет ему возвращена. Для возврата ставки участник аукциона должен создать транзакцию с операцией bidrefund
. Если участником аукциона было поставлено несколько ставок на разные имена и все эти ставки (или часть из них) были невыигрышными, то для возврата всех невыигрышных ставок достаточно однократного вызова bidrefund
.
canceldelay
Операция-действие canceldelay
отменяет отложенную транзакцию.
Параметры:
canceling_auth
— значение,содержащее аккаунт создателя транзакции и его разрешение (имя разрешения принимает значениеactive
).trx_id
— идентификатор отложенной транзакции.
Для выполнения транзакции, содержащей операцию canceldelay
, требуется подпись создателя транзакции canceling_auth
.
updateauth
Операция-действие updateauth
используется для добавления или изменения авторизации у аккаунта. Операция имеет вид:
Параметры:
account
— имя аккаунта, у которого изменяется авторизация.permission
— имя разрешения (например: owner, active, posting и др.), которое обновляется.parent
— имя родительского разрешения (например:owner
является родительским разрешением дляactive
;active
является родительским разрешением дляposting
. Дочерние разрешения не могут превосходить в правах родительские разрешения). В большинстве случаев этот параметр принимает значениеactive
.auth
— структура видаauthority
, новые значения полей которой задаются в соответствии сpermission
.
Для выполнения транзакции, содержащей операцию updateauth
, требуется подпись аккаунта с именем account
.
deleteauth
Операция-действие deleteauth
используется для удаления авторизации у аккаунта. Операция имеет вид:
Параметры:
account
— имя аккаунта, авторизация у которого удаляется.permission
— имя разрешения, которое удаляется.
Транзакция, содержащая операцию deleteauth
, должна быть подписана аккаунтом с именем account
.
linkauth
Операция-действие linkauth
разрешает permission
выполнять какое-то действие в определенном контракте.
Параметры:
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
в определенном контракте.
Параметры:
account
— имя аккаунта, у которого удаляется разрешениеpermission
.code
— имя аккаунта контракта, в котором разрешалось выполнять какое-то действие.type
— тип разрешения.
Транзакция, содержащая операцию unlinkauth
, должна быть подписана аккаунтом с именем account
.
Last updated