alphabet

package
v0.0.0-...-4f3c08f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2023 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Overview

Alphabet contract is a contract deployed in FrostFS sidechain.

Alphabet contract is designed to support GAS production and vote for new validators in the sidechain. NEO token is required to produce GAS and vote for a new committee. It can be distributed among alphabet nodes of the Inner Ring. However, some of them may be malicious, and some NEO can be lost. It will destabilize the economic of the sidechain. To avoid it, all 100,000,000 NEO are distributed among all alphabet contracts.

To identify alphabet contracts, they are named with letters of the Glagolitic alphabet. Names are set at contract deploy. Alphabet nodes of the Inner Ring communicate with one of the alphabetical contracts to emit GAS. To vote for a new list of side chain committee, alphabet nodes of the Inner Ring create multisignature transactions for each alphabet contract.

Contract notifications

Alphabet contract does not produce notifications to process.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Emit

func Emit()

Emit method produces sidechain GAS and distributes it among Inner Ring nodes and proxy contract. It can be invoked only by an Alphabet node of the Inner Ring.

To produce GAS, an alphabet contract transfers all available NEO from the contract account to itself. If notary is enabled, 50% of the GAS in the contract account are transferred to proxy contract. 43.75% of the GAS are equally distributed among all Inner Ring nodes. Remaining 6.25% of the GAS stay in the contract.

If notary is disabled, 87.5% of the GAS are equally distributed among all Inner Ring nodes. Remaining 12.5% of the GAS stay in the contract.

func Gas

func Gas() int

GAS returns the amount of the sidechain GAS stored in the contract account.

func Name

func Name() string

Name returns the Glagolitic name of the contract.

func Neo

func Neo() int

NEO returns the amount of sidechain NEO stored in the contract account.

func OnNEP17Payment

func OnNEP17Payment(from interop.Hash160, amount int, data interface{})

OnNEP17Payment is a callback for NEP-17 compatible native GAS and NEO contracts.

func Update

func Update(script []byte, manifest []byte, data interface{})

Update method updates contract source code and manifest. It can be invoked only by committee.

func Version

func Version() int

Version returns the version of the contract.

func Vote

func Vote(epoch int, candidates []interop.PublicKey)

Vote method votes for the sidechain committee. It requires multisignature from Alphabet nodes of the Inner Ring.

This method is used when governance changes the list of Alphabet nodes of the Inner Ring. Alphabet nodes share keys with sidechain validators, therefore it is required to change them as well. To do that, NEO holders (which are alphabet contracts) should vote for a new committee.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL