mirror of https://github.com/poanetwork/quorum.git
Merge branch 'develop' into feature/rpc
This commit is contained in:
commit
87a5e94525
|
@ -350,7 +350,7 @@ func (sm *StateManager) notifyChanges() {
|
|||
|
||||
for stateObjectAddr, mappedObjects := range sm.manifest.storageChanges {
|
||||
for addr, value := range mappedObjects {
|
||||
sm.Ethereum.Reactor().Post("storage:"+stateObjectAddr+":"+addr, value.String())
|
||||
sm.Ethereum.Reactor().Post("storage:"+stateObjectAddr+":"+addr, &StorageState{[]byte(stateObjectAddr), []byte(addr), value})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -186,3 +186,9 @@ type CachedStateObject struct {
|
|||
Nonce uint64
|
||||
Object *StateObject
|
||||
}
|
||||
|
||||
type StorageState struct {
|
||||
StateAddress []byte
|
||||
Address []byte
|
||||
Value *big.Int
|
||||
}
|
||||
|
|
|
@ -54,6 +54,27 @@ func (lib *PEthereum) GetStateObject(address string) *PStateObject {
|
|||
return NewPStateObject(nil)
|
||||
}
|
||||
|
||||
func (lib *PEthereum) GetStorage(address, storageAddress string) string {
|
||||
return lib.GetStateObject(address).GetStorage(storageAddress)
|
||||
}
|
||||
|
||||
func (lib *PEthereum) GetTxCount(address string) int {
|
||||
return lib.GetStateObject(address).Nonce()
|
||||
}
|
||||
|
||||
func (lib *PEthereum) IsContract(address string) bool {
|
||||
return lib.GetStateObject(address).IsContract()
|
||||
}
|
||||
|
||||
func (lib *PEthereum) SecretToAddress(key string) string {
|
||||
pair, err := ethchain.NewKeyPairFromSec(ethutil.FromHex(key))
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
return ethutil.Hex(pair.Address())
|
||||
}
|
||||
|
||||
func (lib *PEthereum) Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr string) (*PReceipt, error) {
|
||||
return lib.createTx(key, recipient, valueStr, gasStr, gasPriceStr, dataStr, "")
|
||||
}
|
||||
|
|
|
@ -59,16 +59,6 @@ func NewPReciept(contractCreation bool, creationAddress, hash, address []byte) *
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
type PKeyRing struct {
|
||||
Keys []interface{}
|
||||
}
|
||||
|
||||
func NewPKeyRing(keys []interface{}) *PKeyRing {
|
||||
return &PKeyRing{Keys: keys}
|
||||
}
|
||||
*/
|
||||
|
||||
type PStateObject struct {
|
||||
object *ethchain.StateObject
|
||||
}
|
||||
|
@ -105,3 +95,29 @@ func (c *PStateObject) Address() string {
|
|||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (c *PStateObject) Nonce() int {
|
||||
if c.object != nil {
|
||||
return int(c.object.Nonce)
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
func (c *PStateObject) IsContract() bool {
|
||||
if c.object != nil {
|
||||
return len(c.object.Script()) > 0
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
type PStorageState struct {
|
||||
StateAddress string
|
||||
Address string
|
||||
Value string
|
||||
}
|
||||
|
||||
func NewPStorageState(storageObject *ethchain.StorageState) *PStorageState {
|
||||
return &PStorageState{ethutil.Hex(storageObject.StateAddress), ethutil.Hex(storageObject.Address), storageObject.Value.String()}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue