Documentation
¶
Index ¶
- Variables
- type AccountFreeActionsObject
- type AccountMetadataObject
- type AccountObject
- type AccountRAMCorrectionObject
- type ActivatedProtocolFeature
- type BlockState
- type BlockSummary
- type ChainConfig
- type ChainSnapshotHeader
- type CodeObject
- type ContractRow
- type DynamicGlobalPropertyObject
- type ElasticLimitParameters
- type FreeObjectUsage
- type GeneratedTransactionObject
- type GenesisState
- type GlobalPropertyObject
- type Header
- type Index64Object
- type Index128Object
- type Index256Object
- type IndexDoubleObject
- type IndexLongDoubleObject
- type KeyValueObject
- type PermissionLinkObject
- type PermissionObject
- type ProtocolStateObject
- type Reader
- type ResourceLimitsConfigObject
- type ResourceLimitsObject
- type ResourceLimitsStateObject
- type ResourceUsageObject
- type ScheduleInfo
- type Section
- type SectionName
- type TableIDObject
- type TransactionObject
- type UsageAccumulator
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrSectionHandlerNotFound = errors.New("section handler not found")
View Source
var SectionHandlerNotFound = ErrSectionHandlerNotFound
Deprecated: Use ErrSectionHandlerNotFound instead
Functions ¶
This section is empty.
Types ¶
type AccountFreeActionsObject ¶
type AccountFreeActionsObject struct {
Name roxe.AccountName
PermissionObject FreeObjectUsage
PermissionLevel FreeObjectUsage
Wait FreeObjectUsage
PermissionLinkObject FreeObjectUsage
}
type AccountMetadataObject ¶
type AccountMetadataObject struct {
Name roxe.AccountName //< name should not be changed within a chainbase modifier lambda
RecvSequence roxe.Uint64
AuthSequence roxe.Uint64
CodeSequence roxe.Uint64
ABISequence roxe.Uint64
CodeHash roxe.Checksum256
LastCodeUpdate roxe.TimePoint
Flags uint32 // First flag means "privileged".
VMType byte
VMVersion byte
}
type AccountObject ¶
type AccountObject struct {
Name roxe.AccountName
CreationDate roxe.BlockTimestamp
RawABI []byte
}
type AccountRAMCorrectionObject ¶
type AccountRAMCorrectionObject struct {
Name roxe.AccountName
RAMCorrection roxe.Uint64
}
type ActivatedProtocolFeature ¶
type ActivatedProtocolFeature struct {
FeatureDigest roxe.Checksum256
ActivationBlockNum uint32
}
type BlockState ¶
type BlockState struct {
/// from block_header_state_common
BlockNum uint32 `json:"block_num"`
DposProposedIrreversibleBlocknum uint32 `json:"dpos_proposed_irreversible_blocknum"`
DposIrreversibleBlocknum uint32 `json:"dpos_irreversible_blocknum"`
ActiveSchedule *roxe.ProducerAuthoritySchedule `json:"active_schedule"`
BlockrootMerkle *roxe.MerkleRoot `json:"blockroot_merkle"`
ProducerToLastProduced []roxe.PairAccountNameBlockNum `json:"producer_to_last_produced"`
ProducerToLastImpliedIrb []roxe.PairAccountNameBlockNum `json:"producer_to_last_implied_irb"`
BlockSigningKey *roxe.BlockSigningAuthority `json:"block_signing_key"`
ConfirmCount []uint8 `json:"confirm_count"`
// from block_header_state
BlockID roxe.Checksum256 `json:"id"`
Header *roxe.SignedBlockHeader `json:"header"`
PendingSchedule *ScheduleInfo `json:"pending_schedule"`
ActivatedProtocolFeatures *roxe.ProtocolFeatureActivationSet `json:"activated_protocol_features"`
}
type BlockSummary ¶
type BlockSummary struct {
BlockID roxe.Checksum256
}
type ChainConfig ¶
type ChainConfig struct {
MaxBlockNetUsage roxe.Uint64 ///< the maxiumum net usage in instructions for a block
TargetBlockNetUsagePct uint32 ///< the target percent (1% == 100, 100%= 10,000) of maximum net usage; exceeding this triggers congestion handling
MaxTransactionNetUsage uint32 ///< the maximum objectively measured net usage that the chain will allow regardless of account limits
BasePerTransactionNetUsage uint32 ///< the base amount of net usage billed for a transaction to cover incidentals
NetUsageLeeway uint32
ContextFreeDiscountNetUsageNum uint32 ///< the numerator for the discount on net usage of context-free data
ContextFreeDiscountNetUsageDen uint32 ///< the denominator for the discount on net usage of context-free data
MaxBlockCpuUsage uint32 ///< the maxiumum billable cpu usage (in microseconds) for a block
TargetBlockCpuUsagePct uint32 ///< the target percent (1% == 100, 100%= 10,000) of maximum cpu usage; exceeding this triggers congestion handling
MaxTransactionCpuUsage uint32 ///< the maximum billable cpu usage (in microseconds) that the chain will allow regardless of account limits
MinTransactionCpuUsage uint32 ///< the minimum billable cpu usage (in microseconds) that the chain requires
MaxTransactionLifetime uint32 ///< the maximum number of seconds that an input transaction's expiration can be ahead of the time of the block in which it is first included
DeferredTrxExpirationWindow uint32 ///< the number of seconds after the time a deferred transaction can first execute until it expires
MaxTransactionDelay uint32 ///< the maximum number of seconds that can be imposed as a delay requirement by authorization checks
MaxInlineActionSize uint32 ///< maximum allowed size (in bytes) of an inline action
MaxInlineActionDepth uint16 ///< recursion depth limit on sending inline actions
MaxAuthorityDepth uint16 ///< recursion depth limit for checking if an authority is satisfied
}
type ChainSnapshotHeader ¶
type ChainSnapshotHeader struct {
Version uint32
}
type CodeObject ¶
type CodeObject struct {
CodeHash roxe.Checksum256 //< code_hash should not be changed within a chainbase modifier lambda
Code roxe.HexBytes
CodeRefCount roxe.Uint64
FirstBlockUsed uint32
VMType uint8 //< vm_type should not be changed within a chainbase modifier lambda
VMVersion uint8 //< vm_version should not be changed within a chainbase modifier lambda
}
type ContractRow ¶
type DynamicGlobalPropertyObject ¶
type DynamicGlobalPropertyObject struct {
GlobalActionSequence roxe.Uint64
}
type ElasticLimitParameters ¶
type ElasticLimitParameters struct {
Target roxe.Uint64 // the desired usage
Max roxe.Uint64 // the maximum usage
Periods uint32 // the number of aggregation periods that contribute to the average usage
MaxMultiplier uint32 // the multiplier by which virtual space can oversell usage when uncongested
ContractRate roxe.Uint64 // the rate at which a congested resource contracts its limit
ExpandRate roxe.Uint64 // the rate at which an uncongested resource expands its limits
}
type FreeObjectUsage ¶
type FreeObjectUsage struct {
UserSize roxe.Uint64
UserCount roxe.Uint64
UltraSize roxe.Uint64
UltraCount roxe.Uint64
}
type GeneratedTransactionObject ¶
type GeneratedTransactionObject struct {
TrxID roxe.Checksum256 //< trx_id should not be changed within a chainbase modifier lambda
Sender roxe.AccountName //< sender should not be changed within a chainbase modifier lambda
SenderID roxe.Uint128 /// ID given this transaction by the sender (should not be changed within a chainbase modifier lambda)
Payer roxe.AccountName
DelayUntil roxe.TimePoint /// this generated transaction will not be applied until the specified time
Expiration roxe.TimePoint /// this generated transaction will not be applied after time
Published roxe.TimePoint
PackedTrx roxe.HexBytes
}
type GenesisState ¶
type GlobalPropertyObject ¶
type GlobalPropertyObject struct {
ProposedScheduleBlockNum uint32 `roxe:"optional"`
ProposedSchedule *roxe.ProducerAuthoritySchedule
Configuration ChainConfig
ChainID roxe.Checksum256
}
type Header ¶
type Header struct {
Version uint32
}
Header is the top-most header, which determines the file format.
It is not to be confused with the roxe::chain::chain_snapshot_header which talks about the version of the contents of the snapshot file.
type Index64Object ¶
type Index64Object struct {
ContractRow
SecondaryKey roxe.Name
}
type Index128Object ¶
type Index128Object struct {
ContractRow
SecondaryKey roxe.Uint128
}
type Index256Object ¶
type Index256Object struct {
ContractRow
SecondaryKey roxe.Checksum256
}
type IndexDoubleObject ¶
type IndexDoubleObject struct {
ContractRow
SecondaryKey roxe.Float64
}
type IndexLongDoubleObject ¶
type IndexLongDoubleObject struct {
ContractRow
SecondaryKey roxe.Float128
}
type KeyValueObject ¶
type KeyValueObject struct {
ContractRow
Value roxe.HexBytes
}
type PermissionLinkObject ¶
type PermissionLinkObject struct {
/// The account which is defining its permission requirements
Account roxe.AccountName
/// The contract which account requires @ref required_permission to invoke
Code roxe.AccountName
/// The message type which account requires @ref required_permission to invoke
/// May be empty; if so, it sets a default @ref required_permission for all messages to @ref code
MessageType roxe.ActionName
/// The permission level which @ref account requires for the specified message types
/// all of the above fields should not be changed within a chainbase modifier lambda
RequiredPermission roxe.PermissionName
}
type PermissionObject ¶
type PermissionObject struct {
Parent roxe.PermissionName ///< parent permission
Owner roxe.AccountName ///< the account this permission belongs to
Name roxe.PermissionName ///< human-readable name for the permission
LastUpdated roxe.TimePoint ///< the last time this authority was updated
LastUsed roxe.TimePoint ///< when this permission was last used
Auth roxe.Authority ///< authority required to execute this permission
}
type ProtocolStateObject ¶
type ProtocolStateObject struct {
ActivatedProtocolFeatures []*ActivatedProtocolFeature
PreactivatedProtocolFeatures []roxe.Checksum256
WhitelistedIntrinsics []string
NumSupportedKeyTypes uint32
}
type Reader ¶
type Reader struct {
Header *Header
CurrentSection *Section
// contains filtered or unexported fields
}
func NewDefaultReader ¶
func (*Reader) HasSectionHandler ¶
func (*Reader) ProcessCurrentSection ¶
func (*Reader) RegisterSectionHandler ¶
func (r *Reader) RegisterSectionHandler(s SectionName, h sectionHandlerFunc)
type ResourceLimitsConfigObject ¶
type ResourceLimitsConfigObject struct {
CPULimitParameters ElasticLimitParameters
NetLimitParameters ElasticLimitParameters
AccountCPUUsageAverageWindow uint32
AccountNetUsageAverageWindow uint32
}
type ResourceLimitsObject ¶
type ResourceLimitsObject struct {
Owner roxe.AccountName //< should not be changed within a chainbase modifier lambda
NetWeight roxe.Int64
CPUWeight roxe.Int64
RAMBytes roxe.Int64
}
type ResourceLimitsStateObject ¶
type ResourceLimitsStateObject struct {
/**
* Track the average netusage for blocks
*/
AverageBlockNetUsage UsageAccumulator
/**
* Track the average cpu usage for blocks
*/
AverageBlockCPUUsage UsageAccumulator
PendingNetUsage roxe.Uint64
PendingCPUUsage roxe.Uint64
TotalNetWeight roxe.Uint64
TotalCPUWeight roxe.Uint64
TotalRAMBytes roxe.Uint64
/**
* The virtual number of bytes that would be consumed over blocksize_average_window_ms
* if all blocks were at their maximum virtual size. This is virtual because the
* real maximum block is less, this virtual number is only used for rate limiting users.
*
* It's lowest possible value is max_block_size * blocksize_average_window_ms / block_interval
* It's highest possible value is config::maximum_elastic_resource_multiplier (1000) times its lowest possible value
*
* This means that the most an account can consume during idle periods is 1000x the bandwidth
* it is gauranteed under congestion.
*
* Increases when average_block_size < target_block_size, decreases when
* average_block_size > target_block_size, with a cap at 1000x max_block_size
* and a floor at max_block_size;
**/
VirtualNetLimit roxe.Uint64
/**
* Increases when average_bloc
*/
VirtualCPULimit roxe.Uint64
}
type ResourceUsageObject ¶
type ResourceUsageObject struct {
Owner roxe.AccountName //< owner should not be changed within a chainbase modifier lambda
NetUsage UsageAccumulator
CPUUsage UsageAccumulator
RAMUsage roxe.Uint64
}
type ScheduleInfo ¶
type ScheduleInfo struct {
ScheduleLIBNum uint32 `json:"schedule_lib_num"`
ScheduleHash roxe.Checksum256 `json:"schedule_hash"`
Schedule *roxe.ProducerAuthoritySchedule `json:"schedule"`
}
type SectionName ¶
type SectionName string
const ( SectionNameChainSnapshotHeader SectionName = "roxe::chain::chain_snapshot_header" SectionNameBlockState SectionName = "roxe::chain::block_state" SectionNameAccountObject SectionName = "roxe::chain::account_object" SectionNameAccountMetadataObject SectionName = "roxe::chain::account_metadata_object" SectionNameAccountRamCorrectionObject SectionName = "roxe::chain::account_ram_correction_object" SectionNameGlobalPropertyObject SectionName = "roxe::chain::global_property_object" SectionNameProtocolStateObject SectionName = "roxe::chain::protocol_state_object" SectionNameDynamicGlobalPropertyObject SectionName = "roxe::chain::dynamic_global_property_object" SectionNameBlockSummaryObject SectionName = "roxe::chain::block_summary_object" SectionNameTransactionObject SectionName = "roxe::chain::transaction_object" SectionNameGeneratedTransactionObject SectionName = "roxe::chain::generated_transaction_object" SectionNameCodeObject SectionName = "roxe::chain::code_object" SectionNameContractTables SectionName = "contract_tables" SectionNamePermissionObject SectionName = "roxe::chain::permission_object" SectionNamePermissionLinkObject SectionName = "roxe::chain::permission_link_object" SectionNameResourceLimitsObject SectionName = "roxe::chain::resource_limits::resource_limits_object" SectionNameResourceUsageObject SectionName = "roxe::chain::resource_limits::resource_usage_object" SectionNameResourceLimitsStateObject SectionName = "roxe::chain::resource_limits::resource_limits_state_object" SectionNameResourceLimitsConfigObject SectionName = "roxe::chain::resource_limits::resource_limits_config_object" SectionNameGenesisState SectionName = "roxe::chain::genesis_state" // Ultra Specific SectionAccountFreeActionsObject SectionName = "roxe::chain::account_free_actions_object" )
type TableIDObject ¶
type TransactionObject ¶
type TransactionObject struct {
Expiration roxe.TimePointSec
TrxID roxe.Checksum256 //< trx_id shou
}
type UsageAccumulator ¶
type UsageAccumulator struct {
LastOrdinal uint32 ///< The ordinal of the last period which has contributed to the average
ValueEx roxe.Uint64 ///< The current average pre-multiplied by Precision
Consumed roxe.Uint64 ///< The last periods average + the current periods contribution so far
}
Click to show internal directories.
Click to hide internal directories.