mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-21 08:51:32 +00:00
list_validators API
This commit is contained in:
64
rpc/accounts.go
Normal file
64
rpc/accounts.go
Normal file
@ -0,0 +1,64 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/tendermint/tendermint/account"
|
||||
"github.com/tendermint/tendermint/binary"
|
||||
"github.com/tendermint/tendermint/block"
|
||||
. "github.com/tendermint/tendermint/common"
|
||||
)
|
||||
|
||||
func GenPrivAccountHandler(w http.ResponseWriter, r *http.Request) {
|
||||
privAccount := account.GenPrivAccount()
|
||||
|
||||
WriteAPIResponse(w, API_OK, struct {
|
||||
PrivAccount *account.PrivAccount
|
||||
}{privAccount})
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
func SignSendTxHandler(w http.ResponseWriter, r *http.Request) {
|
||||
sendTxStr := GetParam(r, "sendTx")
|
||||
privAccountsStr := GetParam(r, "privAccounts")
|
||||
|
||||
var err error
|
||||
sendTx := binary.ReadJSON(&block.SendTx{}, []byte(sendTxStr), &err).(*block.SendTx)
|
||||
if err != nil {
|
||||
WriteAPIResponse(w, API_INVALID_PARAM, Fmt("Invalid sendTx: %v", err))
|
||||
return
|
||||
}
|
||||
privAccounts := binary.ReadJSON([]*account.PrivAccount{}, []byte(privAccountsStr), &err).([]*account.PrivAccount)
|
||||
if err != nil {
|
||||
WriteAPIResponse(w, API_INVALID_PARAM, Fmt("Invalid privAccounts: %v", err))
|
||||
return
|
||||
}
|
||||
|
||||
for i, input := range sendTx.Inputs {
|
||||
input.PubKey = privAccounts[i].PubKey
|
||||
input.Signature = privAccounts[i].Sign(sendTx)
|
||||
}
|
||||
|
||||
WriteAPIResponse(w, API_OK, struct {
|
||||
SendTx *block.SendTx
|
||||
}{sendTx})
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
func ListAccountsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var blockHeight uint
|
||||
var accounts []*account.Account
|
||||
state := consensusState.GetState()
|
||||
blockHeight = state.LastBlockHeight
|
||||
state.GetAccounts().Iterate(func(key interface{}, value interface{}) bool {
|
||||
accounts = append(accounts, value.(*account.Account))
|
||||
return false
|
||||
})
|
||||
|
||||
WriteAPIResponse(w, API_OK, struct {
|
||||
BlockHeight uint
|
||||
Accounts []*account.Account
|
||||
}{blockHeight, accounts})
|
||||
}
|
Reference in New Issue
Block a user