diff --git a/cmd/evm/main.go b/cmd/evm/main.go index f819386fe0..432cbd0014 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -128,6 +128,7 @@ func (self *VMEnv) Difficulty() *big.Int { return ethutil.Big1 } func (self *VMEnv) BlockHash() []byte { return make([]byte, 32) } func (self *VMEnv) Value() *big.Int { return self.value } func (self *VMEnv) GasLimit() *big.Int { return big.NewInt(1000000000) } +func (self *VMEnv) VmType() vm.Type { return vm.StdVmTy } func (self *VMEnv) Depth() int { return 0 } func (self *VMEnv) SetDepth(i int) { self.depth = i } func (self *VMEnv) GetHash(n uint64) []byte { diff --git a/cmd/mist/assets/examples/coin.html b/cmd/mist/assets/examples/coin.html index 9d1a831711..149c51a470 100644 --- a/cmd/mist/assets/examples/coin.html +++ b/cmd/mist/assets/examples/coin.html @@ -62,7 +62,7 @@ ], }]; - var address = "";//web3.db.get("jevcoin", "address"); + var address = web3.db.get("jevcoin", "address"); if( address.length == 0 ) { var code = "0x60056011565b60b88060356000396000f35b64e8d4a51000600033600160a060020a0316600052602052604060002081905550560060e060020a6000350480637bb98a68146028578063d0679d34146034578063e3d670d714604657005b602e60b3565b60006000f35b60406004356024356059565b60006000f35b604f6004356091565b8060005260206000f35b8060005281600160a060020a03167fb52dda022b6c1a1f40905a85f257f689aa5d69d850e49cf939d688fbe5af594660206000a25050565b6000600082600160a060020a03166000526020526040600020549050919050565b5b60008156"; address = web3.eth.transact({ @@ -77,7 +77,7 @@ contract.Changed({to: "0xaa"}).changed(function(e) { console.log("e: " + JSON.stringify(e)); }); - contract.transact({gas: "10000", gasprice: eth.gasPrice}).send( "0xaa", 10000 ); + contract.send( "0xaa", 10000 ); function reflesh() { document.querySelector("#balance").innerHTML = contract.balance(eth.coinbase); diff --git a/core/block_processor.go b/core/block_processor.go index d59d7fecaa..a69ff1824f 100644 --- a/core/block_processor.go +++ b/core/block_processor.go @@ -7,6 +7,7 @@ import ( "sync" "time" + "github.com/ethereum/c-ethash/go-ethash" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethutil" @@ -14,7 +15,7 @@ import ( "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/pow" - "github.com/ethereum/go-ethereum/pow/ezp" + _ "github.com/ethereum/go-ethereum/pow/ezp" "github.com/ethereum/go-ethereum/state" "gopkg.in/fatih/set.v0" ) @@ -62,7 +63,7 @@ func NewBlockProcessor(db ethutil.Database, txpool *TxPool, chainManager *ChainM sm := &BlockProcessor{ db: db, mem: make(map[string]*big.Int), - Pow: ezp.New(), + Pow: ðash.Ethash{}, bc: chainManager, eventMux: eventMux, txpool: txpool, diff --git a/eth/protocol_test.go b/eth/protocol_test.go index 224b59abd3..1fe6d8f6b1 100644 --- a/eth/protocol_test.go +++ b/eth/protocol_test.go @@ -80,6 +80,8 @@ func (self *testTxPool) AddTransactions(txs []*types.Transaction) { } } +func (self *testTxPool) GetTransactions() types.Transactions { return nil } + func (self *testChainManager) GetBlockHashesFromHash(hash []byte, amount uint64) (hashes [][]byte) { if self.getBlockHashes != nil { hashes = self.getBlockHashes(hash, amount) diff --git a/miner/miner.go b/miner/miner.go index 8044ef073b..79ba685873 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -205,9 +205,7 @@ func (self *Miner) mine() { block.Header().Extra = self.Extra // Apply uncles - if len(self.uncles) > 0 { - block.SetUncles(self.uncles) - } + block.SetUncles(self.uncles) parent := chainMan.GetBlock(block.ParentHash()) coinbase := state.GetOrNewStateObject(block.Coinbase()) @@ -234,10 +232,10 @@ func (self *Miner) mine() { minerlogger.Infof("Mining on block. Includes %v transactions", len(transactions)) - x, y := getSeed(chainMan, block) - self.pow, err = ethash.New(append(x, y...), block) + x, _ := getSeed(chainMan, block) + self.pow, err = ethash.New(x, block) if err != nil { - fmt.Println("err", err) + fmt.Println("miner gave back err", err) return } diff --git a/pow/block.go b/pow/block.go index 62df2b5ff5..31e194d8d8 100644 --- a/pow/block.go +++ b/pow/block.go @@ -6,4 +6,5 @@ type Block interface { Difficulty() *big.Int HashNoNonce() []byte N() []byte + Number() *big.Int } diff --git a/pow/ezp/pow.go b/pow/ezp/pow.go index 64d3230c9d..e4caa076a8 100644 --- a/pow/ezp/pow.go +++ b/pow/ezp/pow.go @@ -53,7 +53,6 @@ func (pow *EasyPow) Search(block pow.Block, stop <-chan struct{}) []byte { elapsed := time.Now().UnixNano() - start hashes := ((float64(1e9) / float64(elapsed)) * float64(i)) / 1000 pow.HashRate = int64(hashes) - //powlogger.Infoln("Hashing @", pow.HashRate, "khash") t = time.Now() } @@ -83,7 +82,7 @@ func verify(hash []byte, diff *big.Int, nonce []byte) bool { sha.Write(d) verification := new(big.Int).Div(ethutil.BigPow(2, 256), diff) - res := ethutil.U256(ethutil.BigD(sha.Sum(nil))) + res := ethutil.BigD(sha.Sum(nil)) return res.Cmp(verification) <= 0 } diff --git a/rpc/args.go b/rpc/args.go index 34e706b982..84b076d4ad 100644 --- a/rpc/args.go +++ b/rpc/args.go @@ -37,16 +37,6 @@ type NewTxArgs struct { Data string `json:"data"` } -func (a *NewTxArgs) requirements() error { - if a.Gas == "" { - return NewErrorResponse("Transact requires a 'gas' value as argument") - } - if a.GasPrice == "" { - return NewErrorResponse("Transact requires a 'gasprice' value as argument") - } - return nil -} - type PushTxArgs struct { Tx string `json:"tx"` } diff --git a/rpc/packages.go b/rpc/packages.go index a98d99d6c5..047bbda9a0 100644 --- a/rpc/packages.go +++ b/rpc/packages.go @@ -40,6 +40,11 @@ import ( "github.com/ethereum/go-ethereum/xeth" ) +const ( + defaultGasPrice = "10000000000000" + defaultGas = "10000" +) + type EthereumApi struct { xeth *xeth.XEth filterManager *filter.FilterManager @@ -116,10 +121,14 @@ func (p *EthereumApi) GetBlock(args *GetBlockArgs, reply *interface{}) error { } func (p *EthereumApi) Transact(args *NewTxArgs, reply *interface{}) error { - err := args.requirements() - if err != nil { - return err + if len(args.Gas) == 0 { + args.Gas = defaultGas + } + + if len(args.GasPrice) == 0 { + args.GasPrice = defaultGasPrice } + result, _ := p.xeth.Transact( /* TODO specify account */ args.To, args.Value, args.Gas, args.GasPrice, args.Data) *reply = result return nil @@ -387,7 +396,7 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error } return p.FilterChanged(args, reply) case "eth_gasPrice": - *reply = "10000000000000" + *reply = defaultGasPrice return nil case "web3_sha3": args, err := req.ToSha3Args()