Skip to content

Commit 29f613e

Browse files
committed
Merge pull request ethereum#28 from ethersphere/feature/keys
Feature/keys
2 parents 550407b + ff5703f commit 29f613e

35 files changed

+2440
-1994
lines changed

ethchain/block.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package ethchain
33
import (
44
"bytes"
55
"fmt"
6+
"github.com/ethereum/eth-go/ethcrypto"
7+
"github.com/ethereum/eth-go/ethtrie"
68
"github.com/ethereum/eth-go/ethutil"
79
"math/big"
810
"strconv"
@@ -102,18 +104,18 @@ func CreateBlock(root interface{},
102104
}
103105
block.SetUncles([]*Block{})
104106

105-
block.state = NewState(ethutil.NewTrie(ethutil.Config.Db, root))
107+
block.state = NewState(ethtrie.NewTrie(ethutil.Config.Db, root))
106108

107109
return block
108110
}
109111

110112
// Returns a hash of the block
111113
func (block *Block) Hash() []byte {
112-
return ethutil.Sha3Bin(block.Value().Encode())
114+
return ethcrypto.Sha3Bin(block.Value().Encode())
113115
}
114116

115117
func (block *Block) HashNoNonce() []byte {
116-
return ethutil.Sha3Bin(ethutil.Encode([]interface{}{block.PrevHash,
118+
return ethcrypto.Sha3Bin(ethutil.Encode([]interface{}{block.PrevHash,
117119
block.UncleSha, block.Coinbase, block.state.trie.Root,
118120
block.TxSha, block.Difficulty, block.Number, block.MinGasPrice,
119121
block.GasLimit, block.GasUsed, block.Time, block.Extra}))
@@ -239,7 +241,7 @@ func (block *Block) SetUncles(uncles []*Block) {
239241
block.Uncles = uncles
240242

241243
// Sha of the concatenated uncles
242-
block.UncleSha = ethutil.Sha3Bin(ethutil.Encode(block.rlpUncles()))
244+
block.UncleSha = ethcrypto.Sha3Bin(ethutil.Encode(block.rlpUncles()))
243245
}
244246

245247
func (self *Block) SetReceipts(receipts []*Receipt, txs []*Transaction) {
@@ -250,7 +252,7 @@ func (self *Block) SetReceipts(receipts []*Receipt, txs []*Transaction) {
250252
func (block *Block) setTransactions(txs []*Transaction) {
251253
block.transactions = txs
252254

253-
trie := ethutil.NewTrie(ethutil.Config.Db, "")
255+
trie := ethtrie.NewTrie(ethutil.Config.Db, "")
254256
for i, tx := range txs {
255257
trie.Update(strconv.Itoa(i), string(tx.RlpEncode()))
256258
}
@@ -287,7 +289,7 @@ func (block *Block) RlpValueDecode(decoder *ethutil.Value) {
287289
block.PrevHash = header.Get(0).Bytes()
288290
block.UncleSha = header.Get(1).Bytes()
289291
block.Coinbase = header.Get(2).Bytes()
290-
block.state = NewState(ethutil.NewTrie(ethutil.Config.Db, header.Get(3).Val))
292+
block.state = NewState(ethtrie.NewTrie(ethutil.Config.Db, header.Get(3).Val))
291293
block.TxSha = header.Get(4).Bytes()
292294
block.Difficulty = header.Get(5).BigInt()
293295
block.Number = header.Get(6).BigInt()
@@ -329,7 +331,7 @@ func NewUncleBlockFromValue(header *ethutil.Value) *Block {
329331
block.PrevHash = header.Get(0).Bytes()
330332
block.UncleSha = header.Get(1).Bytes()
331333
block.Coinbase = header.Get(2).Bytes()
332-
block.state = NewState(ethutil.NewTrie(ethutil.Config.Db, header.Get(3).Val))
334+
block.state = NewState(ethtrie.NewTrie(ethutil.Config.Db, header.Get(3).Val))
333335
block.TxSha = header.Get(4).Bytes()
334336
block.Difficulty = header.Get(5).BigInt()
335337
block.Number = header.Get(6).BigInt()

ethchain/block_chain.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ func AddTestNetFunds(block *Block) {
278278
"e6716f9544a56c530d868e4bfbacb172315bdead",
279279
"1a26338f0d905e295fccb71fa9ea849ffa12aaf4",
280280
} {
281-
codedAddr := ethutil.FromHex(addr)
281+
codedAddr := ethutil.Hex2Bytes(addr)
282282
account := block.state.GetAccount(codedAddr)
283283
account.Amount = ethutil.Big("1606938044258990275541962092341162602522202993782792835301376") //ethutil.BigPow(2, 200)
284284
block.state.UpdateStateObject(account)

ethchain/dagger.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package ethchain
22

33
import (
4+
"github.com/ethereum/eth-go/ethcrypto"
45
"github.com/ethereum/eth-go/ethlog"
56
"github.com/ethereum/eth-go/ethutil"
67
"github.com/obscuren/sha3"
@@ -41,7 +42,7 @@ func (pow *EasyPow) Search(block *Block, reactChan chan ethutil.React) []byte {
4142
powlogger.Infoln("Hashing @", int64(hashes), "khash")
4243
}
4344

44-
sha := ethutil.Sha3Bin(big.NewInt(r.Int63()).Bytes())
45+
sha := ethcrypto.Sha3Bin(big.NewInt(r.Int63()).Bytes())
4546
if pow.Verify(hash, diff, sha) {
4647
return sha
4748
}

ethchain/genesis.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package ethchain
22

33
import (
4+
"github.com/ethereum/eth-go/ethcrypto"
45
"github.com/ethereum/eth-go/ethutil"
56
"math/big"
67
)
@@ -11,13 +12,13 @@ import (
1112

1213
var ZeroHash256 = make([]byte, 32)
1314
var ZeroHash160 = make([]byte, 20)
14-
var EmptyShaList = ethutil.Sha3Bin(ethutil.Encode([]interface{}{}))
15+
var EmptyShaList = ethcrypto.Sha3Bin(ethutil.Encode([]interface{}{}))
1516

1617
var GenesisHeader = []interface{}{
1718
// Previous hash (none)
1819
ZeroHash256,
1920
// Sha of uncles
20-
ethutil.Sha3Bin(ethutil.Encode([]interface{}{})),
21+
ethcrypto.Sha3Bin(ethutil.Encode([]interface{}{})),
2122
// Coinbase
2223
ZeroHash160,
2324
// Root state
@@ -39,7 +40,7 @@ var GenesisHeader = []interface{}{
3940
// Extra
4041
nil,
4142
// Nonce
42-
ethutil.Sha3Bin(big.NewInt(42).Bytes()),
43+
ethcrypto.Sha3Bin(big.NewInt(42).Bytes()),
4344
}
4445

4546
var Genesis = []interface{}{GenesisHeader, []interface{}{}, []interface{}{}}

ethchain/state.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package ethchain
22

33
import (
4+
"github.com/ethereum/eth-go/ethcrypto"
5+
"github.com/ethereum/eth-go/ethtrie"
46
"github.com/ethereum/eth-go/ethutil"
57
"math/big"
68
)
@@ -12,15 +14,15 @@ import (
1214
// * Accounts
1315
type State struct {
1416
// The trie for this structure
15-
trie *ethutil.Trie
17+
trie *ethtrie.Trie
1618

1719
stateObjects map[string]*StateObject
1820

1921
manifest *Manifest
2022
}
2123

2224
// Create a new state from a given trie
23-
func NewState(trie *ethutil.Trie) *State {
25+
func NewState(trie *ethtrie.Trie) *State {
2426
return &State{trie: trie, stateObjects: make(map[string]*StateObject), manifest: NewManifest()}
2527
}
2628

@@ -73,7 +75,7 @@ func (s *State) Purge() int {
7375
return s.trie.NewIterator().Purge()
7476
}
7577

76-
func (s *State) EachStorage(cb ethutil.EachCallback) {
78+
func (s *State) EachStorage(cb ethtrie.EachCallback) {
7779
it := s.trie.NewIterator()
7880
it.Each(cb)
7981
}
@@ -91,7 +93,7 @@ func (self *State) UpdateStateObject(stateObject *StateObject) {
9193
self.stateObjects[string(addr)] = stateObject
9294
}
9395

94-
ethutil.Config.Db.Put(ethutil.Sha3Bin(stateObject.Script()), stateObject.Script())
96+
ethutil.Config.Db.Put(ethcrypto.Sha3Bin(stateObject.Script()), stateObject.Script())
9597

9698
self.trie.Update(string(addr), string(stateObject.RlpEncode()))
9799

ethchain/state_manager.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"container/list"
66
"fmt"
7+
"github.com/ethereum/eth-go/ethcrypto"
78
"github.com/ethereum/eth-go/ethlog"
89
"github.com/ethereum/eth-go/ethutil"
910
"github.com/ethereum/eth-go/ethwire"
@@ -39,6 +40,7 @@ type EthManager interface {
3940
IsMining() bool
4041
IsListening() bool
4142
Peers() *list.List
43+
KeyManager() *ethcrypto.KeyManager
4244
}
4345

4446
type StateManager struct {
@@ -299,7 +301,7 @@ func (sm *StateManager) ValidateBlock(block *Block) error {
299301

300302
// Verify the nonce of the block. Return an error if it's not valid
301303
if !sm.Pow.Verify(block.HashNoNonce(), block.Difficulty, block.Nonce) {
302-
return ValidationError("Block's nonce is invalid (= %v)", ethutil.Hex(block.Nonce))
304+
return ValidationError("Block's nonce is invalid (= %v)", ethutil.Bytes2Hex(block.Nonce))
303305
}
304306

305307
return nil

ethchain/state_object.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package ethchain
22

33
import (
44
"fmt"
5+
"github.com/ethereum/eth-go/ethcrypto"
6+
"github.com/ethereum/eth-go/ethtrie"
57
"github.com/ethereum/eth-go/ethutil"
68
"math/big"
79
"strings"
@@ -39,7 +41,7 @@ func MakeContract(tx *Transaction, state *State) *StateObject {
3941

4042
contract := state.NewStateObject(addr)
4143
contract.initScript = tx.Data
42-
contract.state = NewState(ethutil.NewTrie(ethutil.Config.Db, ""))
44+
contract.state = NewState(ethtrie.NewTrie(ethutil.Config.Db, ""))
4345

4446
return contract
4547
}
@@ -49,14 +51,14 @@ func MakeContract(tx *Transaction, state *State) *StateObject {
4951

5052
func NewStateObject(addr []byte) *StateObject {
5153
object := &StateObject{address: addr, Amount: new(big.Int), gasPool: new(big.Int)}
52-
object.state = NewState(ethutil.NewTrie(ethutil.Config.Db, ""))
54+
object.state = NewState(ethtrie.NewTrie(ethutil.Config.Db, ""))
5355

5456
return object
5557
}
5658

5759
func NewContract(address []byte, Amount *big.Int, root []byte) *StateObject {
5860
contract := &StateObject{address: address, Amount: Amount, Nonce: 0}
59-
contract.state = NewState(ethutil.NewTrie(ethutil.Config.Db, string(root)))
61+
contract.state = NewState(ethtrie.NewTrie(ethutil.Config.Db, string(root)))
6062

6163
return contract
6264
}
@@ -249,15 +251,16 @@ func (c *StateObject) RlpEncode() []byte {
249251
root = ""
250252
}
251253

252-
return ethutil.Encode([]interface{}{c.Nonce, c.Amount, root, ethutil.Sha3Bin(c.script)})
254+
return ethutil.Encode([]interface{}{c.Nonce, c.Amount, root, ethcrypto.Sha3Bin(c.script)})
253255
}
254256

255257
func (c *StateObject) RlpDecode(data []byte) {
256258
decoder := ethutil.NewValueFromBytes(data)
257259

258260
c.Nonce = decoder.Get(0).Uint()
259261
c.Amount = decoder.Get(1).BigInt()
260-
c.state = NewState(ethutil.NewTrie(ethutil.Config.Db, decoder.Get(2).Interface()))
262+
c.state = NewState(ethtrie.NewTrie(ethutil.Config.Db, decoder.Get(2).Interface()))
263+
c.state = NewState(ethtrie.NewTrie(ethutil.Config.Db, decoder.Get(2).Interface()))
261264

262265
c.ScriptHash = decoder.Get(3).Bytes()
263266

ethchain/state_transition.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ethchain
33
import (
44
"bytes"
55
"fmt"
6+
"github.com/ethereum/eth-go/ethtrie"
67
"github.com/ethereum/eth-go/ethutil"
78
"math/big"
89
)
@@ -268,7 +269,7 @@ func Call(vm *Vm, closure *Closure, data []byte) (ret []byte, err error, deepErr
268269
var (
269270
context = closure.object
270271
trie = context.state.trie
271-
trie2 = ethutil.NewTrie(ethutil.Config.Db, "")
272+
trie2 = ethtrie.NewTrie(ethutil.Config.Db, "")
272273
)
273274

274275
trie.NewIterator().Each(func(key string, v *ethutil.Value) {

ethchain/transaction.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package ethchain
33
import (
44
"bytes"
55
"fmt"
6+
"github.com/ethereum/eth-go/ethcrypto"
67
"github.com/ethereum/eth-go/ethutil"
78
"github.com/obscuren/secp256k1-go"
89
"math/big"
@@ -62,7 +63,7 @@ func (self *Transaction) TotalValue() *big.Int {
6263
func (tx *Transaction) Hash() []byte {
6364
data := []interface{}{tx.Nonce, tx.GasPrice, tx.Gas, tx.Recipient, tx.Value, tx.Data}
6465

65-
return ethutil.Sha3Bin(ethutil.NewValue(data).Encode())
66+
return ethcrypto.Sha3Bin(ethutil.NewValue(data).Encode())
6667
}
6768

6869
func (tx *Transaction) CreatesContract() bool {
@@ -75,7 +76,7 @@ func (tx *Transaction) IsContract() bool {
7576
}
7677

7778
func (tx *Transaction) CreationAddress() []byte {
78-
return ethutil.Sha3Bin(ethutil.NewValue([]interface{}{tx.Sender(), tx.Nonce}).Encode())[12:]
79+
return ethcrypto.Sha3Bin(ethutil.NewValue([]interface{}{tx.Sender(), tx.Nonce}).Encode())[12:]
7980
}
8081

8182
func (tx *Transaction) Signature(key []byte) []byte {
@@ -111,7 +112,7 @@ func (tx *Transaction) Sender() []byte {
111112
return nil
112113
}
113114

114-
return ethutil.Sha3Bin(pubkey[1:])[12:]
115+
return ethcrypto.Sha3Bin(pubkey[1:])[12:]
115116
}
116117

117118
func (tx *Transaction) Sign(privk []byte) error {

ethchain/vm.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package ethchain
22

33
import (
44
"fmt"
5+
"github.com/ethereum/eth-go/ethcrypto"
56
"github.com/ethereum/eth-go/ethlog"
67
"github.com/ethereum/eth-go/ethutil"
78
"math"
@@ -421,7 +422,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
421422
case SHA3:
422423
require(2)
423424
size, offset := stack.Popn()
424-
data := ethutil.Sha3Bin(mem.Get(offset.Int64(), size.Int64()))
425+
data := ethcrypto.Sha3Bin(mem.Get(offset.Int64(), size.Int64()))
425426

426427
stack.Push(ethutil.BigD(data))
427428
// 0x30 range
@@ -617,7 +618,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
617618
snapshot := vm.state.Copy()
618619

619620
// Generate a new address
620-
addr := ethutil.CreateAddress(closure.caller.Address(), closure.caller.N())
621+
addr := ethcrypto.CreateAddress(closure.caller.Address(), closure.caller.N())
621622

622623
vm.Printf(" (*) %x", addr).Endl()
623624

0 commit comments

Comments
 (0)