params

package
v0.0.0-...-0abe6a2 Latest Latest
Warning

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

Go to latest
Published: Sep 19, 2019 License: BSD-3-Clause Imports: 3 Imported by: 3

Documentation

Index

Constants

View Source
const (
	// MaxCodeSize 合约允许的最大字节数
	MaxCodeSize = 24576
	// CallCreateDepth  合约递归调用最大深度
	CallCreateDepth uint64 = 1024
	// StackLimit 栈允许的最大深度
	StackLimit uint64 = 1024

	// CreateDataGas 创建合约时,按字节计费
	CreateDataGas uint64 = 200
	// CallStipend 每次CALL调用之前,给予一定额度的免费Gas
	CallStipend uint64 = 2300
	// CallValueTransferGas  转账操作
	CallValueTransferGas uint64 = 9000
	// CallNewAccountGas  操作目标地址事先不存在
	CallNewAccountGas uint64 = 25000
	// QuadCoeffDiv  计算开辟内存花费时,在计算出的内存大小平方基础上除此值
	QuadCoeffDiv uint64 = 512
	// CopyGas 内存数据复制时,按字计费
	CopyGas uint64 = 3

	// Sha3Gas SHA3操作
	Sha3Gas uint64 = 30
	// Sha3WordGas SHA3操作的数据按字计费
	Sha3WordGas uint64 = 6
	// SstoreSetGas SSTORE 从零值地址到非零值地址存储
	SstoreSetGas uint64 = 20000
	// SstoreResetGas SSTORE 从非零值地址到非零值地址存储
	SstoreResetGas uint64 = 5000
	// SstoreClearGas SSTORE 从非零值地址到零值地址存储
	SstoreClearGas uint64 = 5000
	// SstoreRefundGas SSTORE 删除值时给予的奖励
	SstoreRefundGas uint64 = 15000
	// JumpdestGas JUMPDEST 指令
	JumpdestGas uint64 = 1
	// LogGas LOGN 操作计费
	LogGas uint64 = 375
	// LogDataGas  LOGN生成的数据,每个字节的计费价格
	LogDataGas uint64 = 8
	// LogTopicGas LOGN 生成日志时,使用N*此值计费
	LogTopicGas uint64 = 375
	// CreateGas CREATE 指令
	CreateGas uint64 = 32000
	// SuicideRefundGas  SUICIDE 操作时给予的奖励
	SuicideRefundGas uint64 = 24000
	// MemoryGas 开辟新内存时按字收费
	MemoryGas uint64 = 3

	// EcrecoverGas  ecrecover 指令
	EcrecoverGas uint64 = 3000
	// Sha256BaseGas SHA256 基础计费
	Sha256BaseGas uint64 = 60
	// Sha256PerWordGas SHA256 按字长计费 (总计费等于两者相加)
	Sha256PerWordGas uint64 = 12
	// Ripemd160BaseGas RIPEMD160 基础计费
	Ripemd160BaseGas uint64 = 600
	// Ripemd160PerWordGas RIPEMD160 按字长计费 (总计费等于两者相加)
	Ripemd160PerWordGas uint64 = 120
	// IdentityBaseGas  dataCopy 基础计费
	IdentityBaseGas uint64 = 15
	// IdentityPerWordGas dataCopy 按字长计费(总计费等于两者相加)
	IdentityPerWordGas uint64 = 3
	// ModExpQuadCoeffDiv 大整数取模运算时计算出的费用除此数
	ModExpQuadCoeffDiv uint64 = 20
	// Bn256AddGas Bn256Add 计费
	Bn256AddGas uint64 = 500
	// Bn256ScalarMulGas  Bn256ScalarMul 计费
	Bn256ScalarMulGas uint64 = 40000
	// Bn256PairingBaseGas bn256Pairing 基础计费
	Bn256PairingBaseGas uint64 = 100000
	// Bn256PairingPerPointGas  bn256Pairing 按point计费(总计费等于两者相加)
	Bn256PairingPerPointGas uint64 = 80000
)

Variables

This section is empty.

Functions

This section is empty.

Types

type EVMParam

type EVMParam struct {

	// EVMStateDB 状态数据操作入口
	StateDB state.EVMStateDB

	// CallGasTemp 此属性用于临时存储计算出来的Gas消耗值
	// 在指令执行时,会调用指令的gasCost方法,计算出此指令需要消耗的Gas,并存放在此临时属性中
	// 然后在执行opCall时,从此属性获取消耗的Gas值
	CallGasTemp uint64

	// BlockNumber NUMBER 指令,当前区块高度
	BlockNumber *big.Int
}

EVMParam 解释器中调用Gas计算时所传递的合约中和EVM相关的参数结构 之所以单独封装,是为了将解释器、Gas计算两者解耦 此结构包含的属性中StateDB和CallGasTemp可写,解释器调用Gas计算的步骤如下: 1. 使用EVM构造EVMParam(属性除CallGasTemp外,全部传递引用); 2. 以EVMParam为参数,调用Gas计算; 3. 计算结束后,使用EVMParam中的值回填到EVM中;

type GasParam

type GasParam struct {
	// Gas 此合约对象的可用Gas(合约执行过程中会修改此值)
	Gas uint64

	// Address 上下文中合约自身的地址
	// 注意,当合约通过CallCode调用时,这个地址并不是当前合约代码对应的地址,而是调用者的地址
	Address common.Address
}

GasParam 解释器中调用Gas计算时所传递的合约中和Gas相关的参数结构 之所以单独封装,是为了将解释器、指令集、Gas计算三者解耦 此结构包含的属性均为只读

Jump to

Keyboard shortcuts

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