aboutsummaryrefslogtreecommitdiffstats
path: root/core/state
diff options
context:
space:
mode:
authorGustav Simonsson <gustav.simonsson@gmail.com>2015-11-27 22:40:29 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2016-02-18 17:08:11 +0800
commit371871d685d54b916aef28de689d6f0af7822083 (patch)
treee704b02ba2ffd2d1164001885fba15106b0f7d94 /core/state
parentaa36a6ae4f24f07e2c470a21c93ff37ad5861982 (diff)
downloaddexon-371871d685d54b916aef28de689d6f0af7822083.tar
dexon-371871d685d54b916aef28de689d6f0af7822083.tar.gz
dexon-371871d685d54b916aef28de689d6f0af7822083.tar.bz2
dexon-371871d685d54b916aef28de689d6f0af7822083.tar.lz
dexon-371871d685d54b916aef28de689d6f0af7822083.tar.xz
dexon-371871d685d54b916aef28de689d6f0af7822083.tar.zst
dexon-371871d685d54b916aef28de689d6f0af7822083.zip
parmas, crypto, core, core/vm: homestead consensus protocol changes
* change gas cost for contract creating txs * invalidate signature with s value greater than secp256k1 N / 2 * OOG contract creation if not enough gas to store code * new difficulty adjustment algorithm * new DELEGATECALL op code
Diffstat (limited to 'core/state')
-rw-r--r--core/state/state_object.go12
-rw-r--r--core/state/statedb.go17
2 files changed, 29 insertions, 0 deletions
diff --git a/core/state/state_object.go b/core/state/state_object.go
index 47546112f..ebc9f8358 100644
--- a/core/state/state_object.go
+++ b/core/state/state_object.go
@@ -211,6 +211,11 @@ func (c *StateObject) Address() common.Address {
return c.address
}
+// Sets the address of the contract/account
+func (c *StateObject) SetAddress(addr common.Address) {
+ c.address = addr
+}
+
func (self *StateObject) Trie() *trie.SecureTrie {
return self.trie
}
@@ -238,6 +243,13 @@ func (self *StateObject) Nonce() uint64 {
return self.nonce
}
+// Never called, but must be present to allow StateObject to be used
+// as a vm.Account interface that also satisfies the vm.ContractRef
+// interface. Interfaces are awesome.
+func (self *StateObject) Value() *big.Int {
+ return nil
+}
+
func (self *StateObject) EachStorage(cb func(key, value []byte)) {
// When iterating over the storage check the cache first
for h, v := range self.storage {
diff --git a/core/state/statedb.go b/core/state/statedb.go
index 22ffa36a0..e1dde84d1 100644
--- a/core/state/statedb.go
+++ b/core/state/statedb.go
@@ -87,6 +87,18 @@ func (self *StateDB) GetLogs(hash common.Hash) vm.Logs {
return self.logs[hash]
}
+func (self *StateDB) GetAllLogs() *map[common.Hash]vm.Logs {
+ copy := make(map[common.Hash]vm.Logs, len(self.logs))
+ for k, v := range self.logs {
+ copy[k] = v
+ }
+ return &copy
+}
+
+func (self *StateDB) SetAllLogs(logs *map[common.Hash]vm.Logs) {
+ self.logs = *logs
+}
+
func (self *StateDB) Logs() vm.Logs {
var logs vm.Logs
for _, lgs := range self.logs {
@@ -95,6 +107,11 @@ func (self *StateDB) Logs() vm.Logs {
return logs
}
+// TODO: this may not be the most proper thing
+func (self *StateDB) GetDB() ethdb.Database {
+ return self.db
+}
+
func (self *StateDB) AddRefund(gas *big.Int) {
self.refund.Add(self.refund, gas)
}