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 (
//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: 1, 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), CadidateMinQuantity: big.NewInt(10), VoterMinQuantity: big.NewInt(1), ActivatedMinQuantity: big.NewInt(100), BlockInterval: 3000, BlockFrequency: 6, CadidateScheduleSize: 3, DelayEcho: 2, ExtraBlockReward: big.NewInt(1), BlockReward: big.NewInt(5), }, SysName: "fractal.admin", AccountName: "fractal.account", DposName: "fractal.dpos", 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, GetAccountTime: 200, GetSnapshotTime: 200, GetAssetAmount: 200, SnapBalance: 200, IssueAsset: 200, DestroyAsset: 200, AddAsset: 200, GetAccountID: 200, GetDelegate: 200, CryptoCalc: 20000, CryptoByte: 1000, } )
Variables containing gas prices for different phases.
Functions ¶
func CalcGasLimit ¶
CalcGasLimit computes the gas limit of the next block after parent. This is miner strategy, not consensus protocol.
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"` // system name DposName string `json:"dposName,omitempty"` // system name SysToken string `json:"systemToken,omitempty"` // system token SysTokenID uint64 `json:"sysTokenID,omitempty"` SysTokenDecimals uint64 `json:"sysTokenDecimal,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 DposConfig ¶ added in v0.0.7
type DposConfig struct { MaxURLLen uint64 `json:"maxURLLen,omitempty"` // url length UnitStake *big.Int `json:"unitStake,omitempty"` // state unit CadidateMinQuantity *big.Int `json:"cadidateMinQuantity,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"` CadidateScheduleSize uint64 `json:"cadidateScheduleSize,omitempty"` DelayEcho uint64 `json:"delayEcho,omitempty"` ExtraBlockReward *big.Int `json:"extraBlockReward,omitempty"` BlockReward *big.Int `json:"blockReward,omitempty"` }
type FrokedConfig ¶ added in v0.0.7
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 }
GasTable organizes gas prices for different phases.
type NameConfig ¶ added in v0.0.7
Click to show internal directories.
Click to hide internal directories.