Support for namereg

This commit is contained in:
obscuren 2014-05-29 11:49:41 +02:00
parent a2d01d6af8
commit e7097641e3

View File

@ -2,8 +2,10 @@ package ethpub
import ( import (
"encoding/hex" "encoding/hex"
"fmt"
"github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethutil" "github.com/ethereum/eth-go/ethutil"
"math/big"
"strings" "strings"
) )
@ -95,14 +97,30 @@ func (lib *PEthereum) Create(key, valueStr, gasStr, gasPriceStr, script string)
return lib.createTx(key, "", valueStr, gasStr, gasPriceStr, script) return lib.createTx(key, "", valueStr, gasStr, gasPriceStr, script)
} }
var namereg = ethutil.FromHex("bb5f186604d057c1c5240ca2ae0f6430138ac010")
func GetAddressFromNameReg(stateManager *ethchain.StateManager, name string) []byte {
recp := new(big.Int).SetBytes([]byte(name))
object := stateManager.CurrentState().GetStateObject(namereg)
reg := object.GetStorage(recp)
return reg.Bytes()
}
func (lib *PEthereum) createTx(key, recipient, valueStr, gasStr, gasPriceStr, scriptStr string) (*PReceipt, error) { func (lib *PEthereum) createTx(key, recipient, valueStr, gasStr, gasPriceStr, scriptStr string) (*PReceipt, error) {
var hash []byte var hash []byte
var contractCreation bool var contractCreation bool
if len(recipient) == 0 { if len(recipient) == 0 {
contractCreation = true contractCreation = true
} else {
// Check if an address is stored by this address
addr := GetAddressFromNameReg(lib.stateManager, recipient)
if len(addr) > 0 {
hash = addr
} else { } else {
hash = ethutil.FromHex(recipient) hash = ethutil.FromHex(recipient)
} }
}
var keyPair *ethutil.KeyPair var keyPair *ethutil.KeyPair
var err error var err error