added DumpStorage RPC command

This commit is contained in:
Jae Kwon
2015-03-31 14:08:21 -07:00
committed by Ethan Buchman
parent d2d1214e20
commit 6f0199aadf
3 changed files with 31 additions and 8 deletions

View File

@ -1,24 +1,19 @@
package core
import (
"fmt"
"github.com/tendermint/tendermint2/account"
)
//-----------------------------------------------------------------------------
func GenPrivAccount() (*ResponseGenPrivAccount, error) {
return &ResponseGenPrivAccount{account.GenPrivAccount()}, nil
}
//-----------------------------------------------------------------------------
func GetAccount(address []byte) (*ResponseGetAccount, error) {
func GetAccount(addr []byte) (*ResponseGetAccount, error) {
cache := mempoolReactor.Mempool.GetCache()
return &ResponseGetAccount{cache.GetAccount(address)}, nil
return &ResponseGetAccount{cache.GetAccount(addr)}, nil
}
//-----------------------------------------------------------------------------
func ListAccounts() (*ResponseListAccounts, error) {
var blockHeight uint
var accounts []*account.Account
@ -30,3 +25,20 @@ func ListAccounts() (*ResponseListAccounts, error) {
})
return &ResponseListAccounts{blockHeight, accounts}, nil
}
func DumpStorage(addr []byte) (*ResponseDumpStorage, error) {
state := consensusState.GetState()
account := state.GetAccount(addr)
if account == nil {
return nil, fmt.Errorf("Unknown address: %X", addr)
}
storageRoot := account.StorageRoot
storage := state.LoadStorage(storageRoot)
storageItems := []StorageItem{}
storage.Iterate(func(key interface{}, value interface{}) bool {
storageItems = append(storageItems, StorageItem{
key.([]byte), value.([]byte)})
return false
})
return &ResponseDumpStorage{storageRoot, storageItems}, nil
}

View File

@ -19,6 +19,16 @@ type ResponseListAccounts struct {
Accounts []*account.Account
}
type StorageItem struct {
Key []byte
Value []byte
}
type ResponseDumpStorage struct {
StorageRoot []byte
StorageItems []StorageItem
}
type ResponseBlockchainInfo struct {
LastHeight uint
BlockMetas []*types.BlockMeta