diff --git a/rpc/tendermint/core/accounts.go b/rpc/tendermint/core/accounts.go index b5e67d7d6c0741fe487931dfc31172670ef4c619..86d99f8a5640d342ff1b8371536a87061fef52a3 100644 --- a/rpc/tendermint/core/accounts.go +++ b/rpc/tendermint/core/accounts.go @@ -2,6 +2,7 @@ package core import ( "fmt" + acm "github.com/eris-ltd/eris-db/account" ctypes "github.com/eris-ltd/eris-db/rpc/tendermint/core/types" . "github.com/tendermint/go-common" @@ -13,7 +14,7 @@ func GenPrivAccount() (*ctypes.ResultGenPrivAccount, error) { // If the account is not known, returns nil, nil. func GetAccount(address []byte) (*ctypes.ResultGetAccount, error) { - cache := erisdbApp.GetCheckCache() + cache := erisMint.GetCheckCache() // cache := mempoolReactor.Mempool.GetCache() account := cache.GetAccount(address) if account == nil { @@ -24,7 +25,7 @@ func GetAccount(address []byte) (*ctypes.ResultGetAccount, error) { } func GetStorage(address, key []byte) (*ctypes.ResultGetStorage, error) { - state := erisdbApp.GetState() + state := erisMint.GetState() // state := consensusState.GetState() account := state.GetAccount(address) if account == nil { @@ -43,7 +44,7 @@ func GetStorage(address, key []byte) (*ctypes.ResultGetStorage, error) { func ListAccounts() (*ctypes.ResultListAccounts, error) { var blockHeight int var accounts []*acm.Account - state := erisdbApp.GetState() + state := erisMint.GetState() blockHeight = state.LastBlockHeight state.GetAccounts().Iterate(func(key []byte, value []byte) bool { accounts = append(accounts, acm.DecodeAccount(value)) @@ -53,7 +54,7 @@ func ListAccounts() (*ctypes.ResultListAccounts, error) { } func DumpStorage(address []byte) (*ctypes.ResultDumpStorage, error) { - state := erisdbApp.GetState() + state := erisMint.GetState() account := state.GetAccount(address) if account == nil { return nil, fmt.Errorf("UnknownAddress: %X", address) diff --git a/rpc/tendermint/core/mempool.go b/rpc/tendermint/core/mempool.go index eb71714908bb4985aafa6ac007cbaad4ca24a065..78afb7121b410591928241a2442a839ff4a7c545 100644 --- a/rpc/tendermint/core/mempool.go +++ b/rpc/tendermint/core/mempool.go @@ -2,6 +2,7 @@ package core import ( "fmt" + ctypes "github.com/eris-ltd/eris-db/rpc/tendermint/core/types" txs "github.com/eris-ltd/eris-db/txs" "github.com/tendermint/tendermint/types" @@ -21,7 +22,6 @@ func BroadcastTxAsync(tx types.Tx) (*ctypes.ResultBroadcastTx, error) { // Note: tx must be signed func BroadcastTxSync(tx txs.Tx) (*ctypes.ResultBroadcastTx, error) { - fmt.Println("BROADCAST!", tx) resCh := make(chan *tmsp.Response, 1) err := mempoolReactor.BroadcastTx(txs.EncodeTx(tx), func(res *tmsp.Response) { resCh <- res @@ -30,9 +30,37 @@ func BroadcastTxSync(tx txs.Tx) (*ctypes.ResultBroadcastTx, error) { return nil, fmt.Errorf("Error broadcasting transaction: %v", err) } res := <-resCh - return &ctypes.ResultBroadcastTx{ - Code: res.Code, - Data: res.Data, - Log: res.Log, - }, nil + switch r:= res.Value.(type) { + case *tmsp.Response_AppendTx: + return &ctypes.ResultBroadcastTx{ + Code: r.AppendTx.Code, + Data: r.AppendTx.Data, + Log: r.AppendTx.Log, + }, nil + case *tmsp.Response_CheckTx: + return &ctypes.ResultBroadcastTx{ + Code: r.CheckTx.Code, + Data: r.CheckTx.Data, + Log: r.CheckTx.Log, + }, nil + case *tmsp.Response_Commit: + return &ctypes.ResultBroadcastTx{ + Code: r.Commit.Code, + Data: r.Commit.Data, + Log: r.Commit.Log, + }, nil + case *tmsp.Response_Query: + return &ctypes.ResultBroadcastTx{ + Code: r.Query.Code, + Data: r.Query.Data, + Log: r.Query.Log, + }, nil + default: + return &ctypes.ResultBroadcastTx{ + Code: tmsp.CodeType_OK, + Data: []byte{}, + Log: "", + }, nil + + } } diff --git a/rpc/tendermint/core/names.go b/rpc/tendermint/core/names.go index da9e74fcd50131c4b7ae182adb86aed7b85aa951..2842feda6ae5bb13724e45a482e447cffd85502b 100644 --- a/rpc/tendermint/core/names.go +++ b/rpc/tendermint/core/names.go @@ -9,7 +9,7 @@ import ( ) func GetName(name string) (*ctypes.ResultGetName, error) { - st := erisdbApp.GetState() + st := erisMint.GetState() entry := st.GetNameRegEntry(name) if entry == nil { return nil, fmt.Errorf("Name %s not found", name) @@ -20,7 +20,7 @@ func GetName(name string) (*ctypes.ResultGetName, error) { func ListNames() (*ctypes.ResultListNames, error) { var blockHeight int var names []*txs.NameRegEntry - state := erisdbApp.GetState() + state := erisMint.GetState() blockHeight = state.LastBlockHeight state.GetNames().Iterate(func(key []byte, value []byte) bool { names = append(names, sm.DecodeNameRegEntry(value)) diff --git a/rpc/tendermint/core/pipe.go b/rpc/tendermint/core/pipe.go index 43f2146058da87a1f3a83577518176ec4fd80322..3e62f095f37d3ffee35b94d53167e3e17f600f10 100644 --- a/rpc/tendermint/core/pipe.go +++ b/rpc/tendermint/core/pipe.go @@ -1,8 +1,8 @@ package core import ( + erismint "github.com/eris-ltd/eris-db/manager/eris-mint" stypes "github.com/eris-ltd/eris-db/manager/eris-mint/state/types" - "github.com/eris-ltd/eris-db/tmsp" bc "github.com/tendermint/tendermint/blockchain" "github.com/tendermint/tendermint/consensus" @@ -20,7 +20,7 @@ var mempoolReactor *mempl.MempoolReactor var p2pSwitch *p2p.Switch var privValidator *tmtypes.PrivValidator var genDoc *stypes.GenesisDoc // cache the genesis structure -var erisdbApp *tmsp.ErisDBApp +var erisMint *erismint.ErisMint var config cfg.Config = nil @@ -28,8 +28,8 @@ func SetConfig(c cfg.Config) { config = c } -func SetErisDBApp(edbApp *tmsp.ErisDBApp) { - erisdbApp = edbApp +func SetErisDBApp(edbApp *erismint.ErisMint) { + erisMint = edbApp } func SetBlockStore(bs *bc.BlockStore) { diff --git a/rpc/tendermint/core/txs.go b/rpc/tendermint/core/txs.go index 4bbe01ead4034a44c39961e5f1be689fe1e88394..ab9ed78414fb049a7b9617c11a8933c6aa8ed3ac 100644 --- a/rpc/tendermint/core/txs.go +++ b/rpc/tendermint/core/txs.go @@ -28,7 +28,7 @@ func toVMAccount(acc *acm.Account) *vm.Account { // Run a contract's code on an isolated and unpersisted state // Cannot be used to create new contracts func Call(fromAddress, toAddress, data []byte) (*ctypes.ResultCall, error) { - st := erisdbApp.GetState() + st := erisMint.GetState() cache := state.NewBlockCache(st) outAcc := cache.GetAccount(toAddress) if outAcc == nil { @@ -57,8 +57,8 @@ func Call(fromAddress, toAddress, data []byte) (*ctypes.ResultCall, error) { // Cannot be used to create new contracts func CallCode(fromAddress, code, data []byte) (*ctypes.ResultCall, error) { - st := erisdbApp.GetState() - cache := erisdbApp.GetCheckCache() + st := erisMint.GetState() + cache := erisMint.GetCheckCache() callee := &vm.Account{Address: LeftPadWord256(fromAddress)} caller := &vm.Account{Address: LeftPadWord256(fromAddress)} txCache := state.NewTxCache(cache)