diff options
author | obscuren <geffobscura@gmail.com> | 2014-05-02 19:55:58 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-05-02 19:55:58 +0800 |
commit | ed64434dcc10347ad9846182ece2d71238138de9 (patch) | |
tree | 288190920f552cd559895f60a823a4209144507e /utils | |
parent | f1da6f0564696f4fb5a6c04d1b9e24ed12432d63 (diff) | |
download | go-tangerine-ed64434dcc10347ad9846182ece2d71238138de9.tar go-tangerine-ed64434dcc10347ad9846182ece2d71238138de9.tar.gz go-tangerine-ed64434dcc10347ad9846182ece2d71238138de9.tar.bz2 go-tangerine-ed64434dcc10347ad9846182ece2d71238138de9.tar.lz go-tangerine-ed64434dcc10347ad9846182ece2d71238138de9.tar.xz go-tangerine-ed64434dcc10347ad9846182ece2d71238138de9.tar.zst go-tangerine-ed64434dcc10347ad9846182ece2d71238138de9.zip |
Moved public interface
Diffstat (limited to 'utils')
-rw-r--r-- | utils/ethereum.go | 110 | ||||
-rw-r--r-- | utils/types.go | 91 |
2 files changed, 0 insertions, 201 deletions
diff --git a/utils/ethereum.go b/utils/ethereum.go deleted file mode 100644 index 526795894..000000000 --- a/utils/ethereum.go +++ /dev/null @@ -1,110 +0,0 @@ -package utils - -import ( - "fmt" - "github.com/ethereum/eth-go" - "github.com/ethereum/eth-go/ethchain" - "github.com/ethereum/eth-go/ethutil" -) - -type PEthereum struct { - stateManager *ethchain.StateManager - blockChain *ethchain.BlockChain - txPool *ethchain.TxPool -} - -func NewPEthereum(eth *eth.Ethereum) *PEthereum { - return &PEthereum{ - eth.StateManager(), - eth.BlockChain(), - eth.TxPool(), - } -} - -func (lib *PEthereum) GetBlock(hexHash string) *PBlock { - hash := ethutil.FromHex(hexHash) - - block := lib.blockChain.GetBlock(hash) - - return &PBlock{Number: int(block.BlockInfo().Number), Hash: ethutil.Hex(block.Hash())} -} - -func (lib *PEthereum) GetKey() *PKey { - keyPair, err := ethchain.NewKeyPairFromSec(ethutil.Config.Db.GetKeys()[0].PrivateKey) - if err != nil { - return nil - } - - return NewPKey(keyPair) -} - -func (lib *PEthereum) GetStateObject(address string) *PStateObject { - stateObject := lib.stateManager.ProcState().GetContract(ethutil.FromHex(address)) - if stateObject != nil { - return NewPStateObject(stateObject) - } - - // See GetStorage for explanation on "nil" - return NewPStateObject(nil) -} - -func (lib *PEthereum) Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr string) (string, error) { - return lib.createTx(key, recipient, valueStr, gasStr, gasPriceStr, dataStr, "") -} - -func (lib *PEthereum) Create(key, valueStr, gasStr, gasPriceStr, initStr, bodyStr string) (string, error) { - return lib.createTx(key, "", valueStr, gasStr, gasPriceStr, initStr, bodyStr) -} - -func (lib *PEthereum) createTx(key, recipient, valueStr, gasStr, gasPriceStr, initStr, scriptStr string) (string, error) { - var hash []byte - var contractCreation bool - if len(recipient) == 0 { - contractCreation = true - } else { - hash = ethutil.FromHex(recipient) - } - - keyPair, err := ethchain.NewKeyPairFromSec([]byte(ethutil.FromHex(key))) - if err != nil { - return "", err - } - - value := ethutil.Big(valueStr) - gas := ethutil.Big(gasStr) - gasPrice := ethutil.Big(gasPriceStr) - var tx *ethchain.Transaction - // Compile and assemble the given data - if contractCreation { - initScript, err := Compile(initStr) - if err != nil { - return "", err - } - mainScript, err := Compile(scriptStr) - if err != nil { - return "", err - } - - tx = ethchain.NewContractCreationTx(value, gas, gasPrice, mainScript, initScript) - } else { - // Just in case it was submitted as a 0x prefixed string - if initStr[0:2] == "0x" { - initStr = initStr[2:len(initStr)] - } - fmt.Println("DATA:", initStr) - tx = ethchain.NewTransactionMessage(hash, value, gas, gasPrice, ethutil.FromHex(initStr)) - } - - acc := lib.stateManager.GetAddrState(keyPair.Address()) - tx.Nonce = acc.Nonce - tx.Sign(keyPair.PrivateKey) - lib.txPool.QueueTransaction(tx) - - if contractCreation { - ethutil.Config.Log.Infof("Contract addr %x", tx.Hash()[12:]) - } else { - ethutil.Config.Log.Infof("Tx hash %x", tx.Hash()) - } - - return ethutil.Hex(tx.Hash()), nil -} diff --git a/utils/types.go b/utils/types.go deleted file mode 100644 index 0bbc61627..000000000 --- a/utils/types.go +++ /dev/null @@ -1,91 +0,0 @@ -package utils - -import ( - "encoding/hex" - "github.com/ethereum/eth-go/ethchain" - "github.com/ethereum/eth-go/ethutil" -) - -// Block interface exposed to QML -type PBlock struct { - Number int - Hash string -} - -// Creates a new QML Block from a chain block -func NewPBlock(block *ethchain.Block) *PBlock { - info := block.BlockInfo() - hash := hex.EncodeToString(block.Hash()) - - return &PBlock{Number: int(info.Number), Hash: hash} -} - -type PTx struct { - Value, Hash, Address string - Contract bool -} - -func NewPTx(tx *ethchain.Transaction) *PTx { - hash := hex.EncodeToString(tx.Hash()) - sender := hex.EncodeToString(tx.Recipient) - isContract := len(tx.Data) > 0 - - return &PTx{Hash: hash, Value: ethutil.CurrencyToString(tx.Value), Address: sender, Contract: isContract} -} - -type PKey struct { - Address string - PrivateKey string - PublicKey string -} - -func NewPKey(key *ethchain.KeyPair) *PKey { - return &PKey{ethutil.Hex(key.Address()), ethutil.Hex(key.PrivateKey), ethutil.Hex(key.PublicKey)} -} - -/* -type PKeyRing struct { - Keys []interface{} -} - -func NewPKeyRing(keys []interface{}) *PKeyRing { - return &PKeyRing{Keys: keys} -} -*/ - -type PStateObject struct { - object *ethchain.StateObject -} - -func NewPStateObject(object *ethchain.StateObject) *PStateObject { - return &PStateObject{object: object} -} - -func (c *PStateObject) GetStorage(address string) string { - // Because somehow, even if you return nil to QML it - // still has some magical object so we can't rely on - // undefined or null at the QML side - if c.object != nil { - val := c.object.GetMem(ethutil.Big("0x" + address)) - - return val.BigInt().String() - } - - return "" -} - -func (c *PStateObject) Value() string { - if c.object != nil { - return c.object.Amount.String() - } - - return "" -} - -func (c *PStateObject) Address() string { - if c.object != nil { - return ethutil.Hex(c.object.Address()) - } - - return "" -} |