params

package
v0.0.9 Latest Latest
Warning

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

Go to latest
Published: May 6, 2019 License: GPL-3.0 Imports: 2 Imported by: 19

Documentation

Index

Constants

View Source
const (
	// GenesisGasLimit Gas limit of the Genesis block.
	GenesisGasLimit uint64 = 100000000
	// MinGasLimit Minimum the gas limit may ever be.
	MinGasLimit uint64 = 5000
	// GasLimitBoundDivisor The bound divisor of the gas limit, used in update calculations.
	GasLimitBoundDivisor uint64 = 1024
	// MaximumExtraDataSize Maximum size extra data may be after Genesis.
	MaximumExtraDataSize uint64 = 32 + 65
	// ActionGas Per action not creating a contract. NOTE: Not payable on data of calls between transactions.
	ActionGas uint64 = 21000
	// ActionGasContractCreation Per action that creates a contract. NOTE: Not payable on data of calls between transactions.
	ActionGasContractCreation uint64 = 53000
	// TxDataNonZeroGas Per byte of data attached to a transaction that is not equal to zero. NOTE:Not payable on data of calls between transactions.
	TxDataNonZeroGas uint64 = 68
	// TxDataZeroGas Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions.
	TxDataZeroGas uint64 = 4

	CallValueTransferGas uint64 = 9000  // Paid for CALL when the value transfer is non-zero.
	QuadCoeffDiv         uint64 = 512   // Divisor for the quadratic particle of the memory cost equation.
	SstoreSetGas         uint64 = 20000 // Once per SLOAD operation.
	LogDataGas           uint64 = 8     // Per byte in a LOG* operation's data.
	CallStipend          uint64 = 2300  // Free gas given at beginning of call.

	Sha3Gas         uint64 = 30    // Once per SHA3 operation.
	Sha3WordGas     uint64 = 6     // Once per word of the SHA3 operation's data.
	SstoreResetGas  uint64 = 5000  // Once per SSTORE operation if the zeroness changes from zero.
	JumpdestGas     uint64 = 1     // Refunded gas, once per SSTORE operation if the zeroness changes to zero.
	EpochDuration   uint64 = 30000 // Duration between proof-of-work epochs.
	CreateDataGas   uint64 = 200   //
	CallCreateDepth uint64 = 1024  // Maximum depth of call/create stack.
	LogGas          uint64 = 375   // Per LOG* operation.
	CopyGas         uint64 = 3     //
	StackLimit      uint64 = 1024  // Maximum size of VM stack allowed.
	LogTopicGas     uint64 = 375   // Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas.
	CreateGas       uint64 = 32000 // Once per CREATE operation & contract-creation transaction.
	MemoryGas       uint64 = 3     // Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL.

	MaxCodeSize = 24576 // Maximum bytecode to permit for a contract

	EcrecoverGas            uint64 = 3000   // Elliptic curve sender recovery gas price
	Sha256BaseGas           uint64 = 60     // Base price for a SHA256 operation
	Sha256PerWordGas        uint64 = 12     // Per-word price for a SHA256 operation
	Ripemd160BaseGas        uint64 = 600    // Base price for a RIPEMD160 operation
	Ripemd160PerWordGas     uint64 = 120    // Per-word price for a RIPEMD160 operation
	IdentityBaseGas         uint64 = 15     // Base price for a data copy operation
	IdentityPerWordGas      uint64 = 3      // Per-work price for a data copy operation
	ModExpQuadCoeffDiv      uint64 = 20     // Divisor for the quadratic particle of the big int modular exponentiation
	Bn256AddGas             uint64 = 500    // Gas needed for an elliptic curve addition
	Bn256ScalarMulGas       uint64 = 40000  // Gas needed for an elliptic curve scalar multiplication
	Bn256PairingBaseGas     uint64 = 100000 // Base price for an elliptic curve pairing check
	Bn256PairingPerPointGas uint64 = 80000  // Per-point price for an elliptic curve pairing check
)
View Source
const (
	AssetFeeType    = uint64(0)
	ContractFeeType = uint64(1)
	CoinbaseFeeType = uint64(2)
)

type for fee

View Source
const (
	//ClientIdentifier Client identifier to advertise over the network
	ClientIdentifier = "ft"
)
View Source
const (
	Fractal = 1e18
)
View Source
const (
	// NextForkID is the id of next fork
	NextForkID uint64 = 0
)

Variables

View Source
var (
	DifficultyBoundDivisor = big.NewInt(2048)   // The bound divisor of the difficulty, used in the update calculations.
	GenesisDifficulty      = big.NewInt(131072) // Difficulty of the Genesis block.
	MinimumDifficulty      = big.NewInt(131072) // The minimum that the difficulty may ever be.
	DurationLimit          = big.NewInt(13)     // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not.
)
View Source
var (
	MaxSignDepth  = uint64(10)
	MaxSignLength = uint64(50)
)
View Source
var DefaultChainconfig = &ChainConfig{
	BootNodes: []string{},
	ChainID:   big.NewInt(1),
	ChainName: "fractal",
	ChainURL:  "https://fractalproject.com",
	AccountNameCfg: &NameConfig{
		Level:     0,
		Length:    16,
		SubLength: 8,
	},
	AssetNameCfg: &NameConfig{
		Level:     1,
		Length:    16,
		SubLength: 8,
	},
	ChargeCfg: &ChargeConfig{
		AssetRatio:    80,
		ContractRatio: 80,
	},
	ForkedCfg: &FrokedConfig{
		ForkBlockNum:   10000,
		Forkpercentage: 80,
	},
	DposCfg: &DposConfig{
		MaxURLLen:             512,
		UnitStake:             big.NewInt(1000),
		CandidateMinQuantity:  big.NewInt(10),
		VoterMinQuantity:      big.NewInt(1),
		ActivatedMinQuantity:  big.NewInt(100),
		BlockInterval:         3000,
		BlockFrequency:        6,
		CandidateScheduleSize: 3,
		BackupScheduleSize:    0,
		EpchoInterval:         540000,
		FreezeEpchoSize:       3,
		ExtraBlockReward:      big.NewInt(1),
		BlockReward:           big.NewInt(5),
	},
	SnapshotInterval: 180000,
	SysName:          "fractal.admin",
	AccountName:      "fractal.account",
	AssetName:        "fractal.asset",
	DposName:         "fractal.dpos",
	FeeName:          "fractal.fee",
	SysToken:         "ftoken",
}
View Source
var (
	// GasTable contain the gas re-prices
	GasTableInstanse = GasTable{
		ExtcodeSize: 700,
		ExtcodeCopy: 700,
		Balance:     400,
		SLoad:       200,
		Calls:       700,
		Suicide:     5000,
		ExpByte:     50,

		CreateBySuicide: 25000,
		SetOwner:        200,
		WithdrawFee:     700,
		GetAccountTime:  200,
		GetSnapshotTime: 200,
		GetAssetAmount:  200,
		SnapBalance:     200,
		IssueAsset:      200,
		DestroyAsset:    200,
		AddAsset:        200,
		GetAccountID:    200,
		GetDelegate:     200,
		CryptoCalc:      20000,
		CryptoByte:      1000,
		DeductGas:       200,
	}
)

Variables containing gas prices for different phases.

Functions

This section is empty.

Types

type ChainConfig

type ChainConfig struct {
	BootNodes        []string      `json:"bootnodes,omitempty"` // enode URLs of the P2P bootstrap nodes
	ChainID          *big.Int      `json:"chainId,omitempty"`   // chainId identifies the current chain and is used for replay protection
	ChainName        string        `json:"chainName,omitempty"` // chain name
	ChainURL         string        `json:"chainUrl,omitempty"`  // chain url
	AccountNameCfg   *NameConfig   `json:"accountParams,omitempty"`
	AssetNameCfg     *NameConfig   `json:"assetParams,omitempty"`
	ChargeCfg        *ChargeConfig `json:"chargeParams,omitempty"`
	ForkedCfg        *FrokedConfig `json:"upgradeParams,omitempty"`
	DposCfg          *DposConfig   `json:"dposParams,omitempty"`
	SysName          string        `json:"systemName,omitempty"`  // system name
	AccountName      string        `json:"accountName,omitempty"` // account name
	AssetName        string        `json:"assetName,omitempty"`   // asset name
	DposName         string        `json:"dposName,omitempty"`    // system name
	SnapshotInterval uint64        `json:"snapshotInterval,omitempty"`
	FeeName          string        `json:"feeName,omitempty"`     //fee name
	SysToken         string        `json:"systemToken,omitempty"` // system token
	SysTokenID       uint64        `json:"sysTokenID,omitempty"`
	SysTokenDecimals uint64        `json:"sysTokenDecimal,omitempty"`
	ReferenceTime    uint64        `json:"referenceTime,omitempty"`
}

ChainConfig is the core config which determines the blockchain settings.

func (*ChainConfig) Copy added in v0.0.7

func (cfg *ChainConfig) Copy() *ChainConfig

type ChargeConfig added in v0.0.7

type ChargeConfig struct {
	AssetRatio    uint64 `json:"assetRatio,omitempty"`
	ContractRatio uint64 `json:"contractRatio,omitempty"`
}

type DposConfig added in v0.0.7

type DposConfig struct {
	MaxURLLen             uint64   `json:"maxURLLen,omitempty"`            // url length
	UnitStake             *big.Int `json:"unitStake,omitempty"`            // state unit
	CandidateMinQuantity  *big.Int `json:"candidateMinQuantity,omitempty"` // min quantity
	VoterMinQuantity      *big.Int `json:"voterMinQuantity,omitempty"`     // min quantity
	ActivatedMinQuantity  *big.Int `json:"activatedMinQuantity,omitempty"` // min active quantity
	BlockInterval         uint64   `json:"blockInterval,omitempty"`
	BlockFrequency        uint64   `json:"blockFrequency,omitempty"`
	CandidateScheduleSize uint64   `json:"candidateScheduleSize,omitempty"`
	BackupScheduleSize    uint64   `json:"backupScheduleSize,omitempty"`
	EpchoInterval         uint64   `json:"epchoInterval,omitempty"`
	FreezeEpchoSize       uint64   `json:"freezeEpchoSize,omitempty"`
	ExtraBlockReward      *big.Int `json:"extraBlockReward,omitempty"`
	BlockReward           *big.Int `json:"blockReward,omitempty"`
}

type FrokedConfig added in v0.0.7

type FrokedConfig struct {
	ForkBlockNum   uint64 `json:"blockCnt,omitempty"`
	Forkpercentage uint64 `json:"upgradeRatio,omitempty"`
}

type GasTable

type GasTable struct {
	ExtcodeSize uint64
	ExtcodeCopy uint64
	Balance     uint64
	SLoad       uint64
	Calls       uint64
	Suicide     uint64

	ExpByte uint64

	// CreateBySuicide occurs when the
	// refunded account is one that does
	// not exist. This logic is similar
	// to call. May be left nil. Nil means
	// not charged.
	CreateBySuicide uint64
	SetOwner        uint64
	GetAccountTime  uint64
	GetSnapshotTime uint64
	GetAssetAmount  uint64
	SnapBalance     uint64
	IssueAsset      uint64
	DestroyAsset    uint64
	AddAsset        uint64
	GetAccountID    uint64
	GetDelegate     uint64
	CryptoCalc      uint64
	CryptoByte      uint64
	DeductGas       uint64
	WithdrawFee     uint64
}

GasTable organizes gas prices for different phases.

type NameConfig added in v0.0.7

type NameConfig struct {
	Level     uint64 `json:"level,omitempty"`
	Length    uint64 `json:"length,omitempty"`
	SubLength uint64 `json:"subLength,omitempty"`
}

Jump to

Keyboard shortcuts

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