aboutsummaryrefslogtreecommitdiffstats
path: root/params
diff options
context:
space:
mode:
Diffstat (limited to 'params')
-rw-r--r--params/gas_table.go65
-rw-r--r--params/protocol_params.go1
-rw-r--r--params/util.go6
3 files changed, 70 insertions, 2 deletions
diff --git a/params/gas_table.go b/params/gas_table.go
new file mode 100644
index 000000000..98f00a7ee
--- /dev/null
+++ b/params/gas_table.go
@@ -0,0 +1,65 @@
+// Copyright 2016 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package params
+
+import "math/big"
+
+type GasTable struct {
+ ExtcodeSize *big.Int
+ ExtcodeCopy *big.Int
+ Balance *big.Int
+ SLoad *big.Int
+ Calls *big.Int
+ Suicide *big.Int
+
+ // 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 *big.Int
+}
+
+var (
+ // GasTableHomestead contain the gas prices for
+ // the homestead phase.
+ GasTableHomestead = GasTable{
+ ExtcodeSize: big.NewInt(20),
+ ExtcodeCopy: big.NewInt(20),
+ Balance: big.NewInt(20),
+ SLoad: big.NewInt(50),
+ Calls: big.NewInt(40),
+ Suicide: big.NewInt(0),
+
+ // explicitly set to nil to indicate
+ // this rule does not apply to homestead.
+ CreateBySuicide: nil,
+ }
+
+ // GasTableHomestead contain the gas re-prices for
+ // the homestead phase.
+ GasTableHomesteadGasRepriceFork = GasTable{
+ ExtcodeSize: big.NewInt(700),
+ ExtcodeCopy: big.NewInt(700),
+ Balance: big.NewInt(400),
+ SLoad: big.NewInt(200),
+ Calls: big.NewInt(700),
+ Suicide: big.NewInt(5000),
+
+ CreateBySuicide: big.NewInt(25000),
+ }
+)
diff --git a/params/protocol_params.go b/params/protocol_params.go
index 2dfc251b6..5079eb111 100644
--- a/params/protocol_params.go
+++ b/params/protocol_params.go
@@ -71,4 +71,5 @@ var (
SuicideRefundGas = big.NewInt(24000) // Refunded following a suicide operation.
MemoryGas = big.NewInt(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.
TxDataNonZeroGas = big.NewInt(68) // Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions.
+
)
diff --git a/params/util.go b/params/util.go
index 9d1fa54e6..863fbe68b 100644
--- a/params/util.go
+++ b/params/util.go
@@ -19,6 +19,8 @@ package params
import "math/big"
var (
- TestNetHomesteadBlock = big.NewInt(494000) // Testnet homestead block
- MainNetHomesteadBlock = big.NewInt(1150000) // Mainnet homestead block
+ TestNetHomesteadBlock = big.NewInt(494000) // Testnet homestead block
+ MainNetHomesteadBlock = big.NewInt(1150000) // Mainnet homestead block
+ TestNetHomesteadGasRepriceBlock = big.NewInt(1783000) // Test net gas reprice block
+ MainNetHomesteadGasRepriceBlock = big.NewInt(2457000) // Main net gas reprice block
)