Documentation ¶
Overview ¶
Package deploy provides NeoFS Sidechain deployment functionality.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Deploy ¶
Deploy initializes Neo network represented by given Prm.Blockchain as NeoFS Sidechain and makes it full-featured for NeoFS storage system operation.
Deploy aborts only by context or when a fatal error occurs. Deployment progress is logged in detail. It is expected that some situations can be changed/fixed on the chain from the outside, so Deploy adapts flexibly and does not stop at the moment.
Deployment process is detailed in NeoFS docs. Summary of stages:
- NNS contract deployment
- launch of a notary service for the committee
- initial GAS distribution between committee members
- Alphabet initialization (incl. registration as candidates to validators)
- deployment/update of the NeoFS system contracts
- distribution of all available NEO between the Alphabet contracts
See project documentation for details.
Types ¶
type AlphabetContractPrm ¶ added in v0.39.0
type AlphabetContractPrm struct {
Common CommonDeployPrm
}
AlphabetContractPrm groups deployment parameters of the NeoFS Alphabet contract.
type AuditContractPrm ¶ added in v0.39.0
type AuditContractPrm struct {
Common CommonDeployPrm
}
AuditContractPrm groups deployment parameters of the NeoFS Audit contract.
type BalanceContractPrm ¶ added in v0.39.0
type BalanceContractPrm struct {
Common CommonDeployPrm
}
BalanceContractPrm groups deployment parameters of the NeoFS Balance contract.
type Blockchain ¶
type Blockchain interface { // RPCActor groups functions needed to compose and send transactions (incl. // Notary service requests) to the blockchain. notary.RPCActor // GetCommittee returns list of public keys owned by Neo blockchain committee // members. Resulting list is non-empty, unique and unsorted. GetCommittee() (keys.PublicKeys, error) // GetContractStateByID returns network state of the smart contract by its ID. // GetContractStateByID returns error with 'Unknown contract' substring if // requested contract is missing. GetContractStateByID(id int32) (*state.Contract, error) // GetContractStateByHash is similar to GetContractStateByID but accepts address. // GetContractStateByHash may return non-nil state.Contract along with an error. GetContractStateByHash(util.Uint160) (*state.Contract, error) // SubscribeToNewBlocks opens stream of the new blocks persisted in the // blockchain and returns channel to read them. The channel is closed only when // connection to the blockchain is lost and there will be no more events. Caller // subscribes once, regularly reads events from the channel and is resistant to // event replay. SubscribeToNewBlocks() (<-chan *block.Block, error) // SubscribeToNotaryRequests opens stream of the notary request events from the // blockchain and returns channel to read them. The channel is closed only when // connection to the blockchain is lost and there will be no more events. Caller // subscribes once, regularly reads events from the channel and is resistant to // event replay. SubscribeToNotaryRequests() (<-chan *result.NotaryRequestEvent, error) }
Blockchain groups services provided by particular Neo blockchain network representing NeoFS Sidechain that are required for its deployment.
type CommonDeployPrm ¶
CommonDeployPrm groups common deployment parameters of the smart contract.
type ContainerContractPrm ¶ added in v0.39.0
type ContainerContractPrm struct {
Common CommonDeployPrm
}
ContainerContractPrm groups deployment parameters of the Container contract.
type NNSPrm ¶
type NNSPrm struct { Common CommonDeployPrm SystemEmail string }
NNSPrm groups deployment parameters of the NeoFS NNS contract.
type NeoFSIDContractPrm ¶ added in v0.39.0
type NeoFSIDContractPrm struct {
Common CommonDeployPrm
}
NeoFSIDContractPrm groups deployment parameters of the NeoFS ID contract.
type NetmapContractPrm ¶ added in v0.39.0
type NetmapContractPrm struct { Common CommonDeployPrm Config netmap.NetworkConfiguration }
NetmapContractPrm groups deployment parameters of the Netmap contract.
type Prm ¶
type Prm struct { // Writes progress into the log. Logger *zap.Logger // Particular Neo blockchain instance to be used as NeoFS Sidechain. Blockchain Blockchain // Local process account used for transaction signing (must be unlocked). LocalAccount *wallet.Account // Validator multi-sig account to spread initial GAS to network // participants (must be unlocked). ValidatorMultiSigAccount *wallet.Account NNS NNSPrm AlphabetContract AlphabetContractPrm AuditContract AuditContractPrm BalanceContract BalanceContractPrm ContainerContract ContainerContractPrm NeoFSIDContract NeoFSIDContractPrm NetmapContract NetmapContractPrm ProxyContract ProxyContractPrm ReputationContract ReputationContractPrm }
Prm groups all parameters of the NeoFS Sidechain deployment procedure.
type ProxyContractPrm ¶ added in v0.39.0
type ProxyContractPrm struct {
Common CommonDeployPrm
}
ProxyContractPrm groups deployment parameters of the NeoFS Proxy contract.
type ReputationContractPrm ¶ added in v0.39.0
type ReputationContractPrm struct {
Common CommonDeployPrm
}
ReputationContractPrm groups deployment parameters of the NeoFS Reputation contract.