diff options
author | obscuren <geffobscura@gmail.com> | 2015-01-05 07:18:44 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-01-05 07:18:44 +0800 |
commit | c1dee151445d1d9700e0c623916299370868490c (patch) | |
tree | 411a1738f8284a49fc51c7315a5b211b73412907 /eth/wallet.go | |
parent | 987119cd4adcdbc7ebfd0bbb027a0c9e2a7487e9 (diff) | |
download | go-tangerine-c1dee151445d1d9700e0c623916299370868490c.tar.gz go-tangerine-c1dee151445d1d9700e0c623916299370868490c.tar.zst go-tangerine-c1dee151445d1d9700e0c623916299370868490c.zip |
BlockManager => BlockProcessor
Diffstat (limited to 'eth/wallet.go')
-rw-r--r-- | eth/wallet.go | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/eth/wallet.go b/eth/wallet.go new file mode 100644 index 000000000..9ec834309 --- /dev/null +++ b/eth/wallet.go @@ -0,0 +1,80 @@ +package eth + +/* +import ( + "crypto/ecdsa" + "errors" + "math/big" + + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/types" +) + +type Account struct { + w *Wallet +} + +func (self *Account) Transact(to *Account, value, gas, price *big.Int, data []byte) error { + return self.w.transact(self, to, value, gas, price, data) +} + +func (self *Account) Address() []byte { + return nil +} + +func (self *Account) PrivateKey() *ecdsa.PrivateKey { + return nil +} + +type Wallet struct{} + +func NewWallet() *Wallet { + return &Wallet{} +} + +func (self *Wallet) GetAccount(i int) *Account { +} + +func (self *Wallet) transact(from, to *Account, value, gas, price *big.Int, data []byte) error { + if from.PrivateKey() == nil { + return errors.New("accounts is not owned (no private key available)") + } + + var createsContract bool + if to == nil { + createsContract = true + } + + var msg *types.Transaction + if contractCreation { + msg = types.NewContractCreationTx(value, gas, price, data) + } else { + msg = types.NewTransactionMessage(to.Address(), value, gas, price, data) + } + + state := self.chainManager.TransState() + nonce := state.GetNonce(key.Address()) + + msg.SetNonce(nonce) + msg.SignECDSA(from.PriateKey()) + + // Do some pre processing for our "pre" events and hooks + block := self.chainManager.NewBlock(from.Address()) + coinbase := state.GetOrNewStateObject(from.Address()) + coinbase.SetGasPool(block.GasLimit()) + self.blockManager.ApplyTransactions(coinbase, state, block, types.Transactions{tx}, true) + + err := self.obj.TxPool().Add(tx) + if err != nil { + return nil, err + } + state.SetNonce(key.Address(), nonce+1) + + if contractCreation { + addr := core.AddressFromMessage(tx) + pipelogger.Infof("Contract addr %x\n", addr) + } + + return tx, nil +} +*/ |