add api stubs for permission node

This commit is contained in:
amalraj.manigmail.com 2018-10-26 12:33:23 +08:00
parent 0605e4db37
commit b24e51de1b
5 changed files with 107 additions and 1 deletions

54
controls/backend/api.go Normal file
View File

@ -0,0 +1,54 @@
package backend
import (
"github.com/ethereum/go-ethereum/rpc"
"github.com/ethereum/go-ethereum/log"
)
type PermissionAPI struct {
}
func NewPermissionAPI() *PermissionAPI {
return &PermissionAPI{}
}
func APIs() []rpc.API {
return []rpc.API{
{
Namespace: "permnode",
Version: "1.0",
Service: NewPermissionAPI(),
Public: true,
},
}
}
func (s *PermissionAPI) AddVoter(addr string) string {
log.Info("AJ-called1")
return "added voter " + addr
}
func (s *PermissionAPI) ProposeNode(enodeId string) string {
log.Info("AJ-called2")
return "proposed node " + enodeId
}
func (s *PermissionAPI) BlacklistNode(enodeId string) string {
log.Info("AJ-called3")
return "blacklisted node " + enodeId
}
func (s *PermissionAPI) RemoveNode(enodeId string) string {
log.Info("AJ-called4")
return "removed node " + enodeId
}
func (s *PermissionAPI) ApproveNode(enodeId string) string {
log.Info("AJ-called5")
return "approved node " + enodeId
}
func (s *PermissionAPI) ValidNodes() []string {
log.Info("AJ-called6")
return []string{"n1", "n2"}
}

View File

@ -32,6 +32,10 @@ const (
NodeDelete
)
func SayHello(n string) string{
return "Hello " + n + "!"
}
// This function first adds the node list from permissioned-nodes.json to
// the permissiones contract deployed as a precompile via genesis.json
func QuorumPermissioning(ctx *cli.Context, stack *node.Node ) error {

View File

@ -52,7 +52,7 @@ import (
"github.com/ethereum/go-ethereum/params"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/rpc"
)
)
type LesServer interface {
Start(srvr *p2p.Server)

View File

@ -32,6 +32,7 @@ var Modules = map[string]string{
"txpool": TxPool_JS,
"raft": Raft_JS,
"istanbul": Istanbul_JS,
"permnode": PermissionsNode_JS,
}
const Chequebook_JS = `
@ -674,6 +675,48 @@ web3._extend({
})
`
const PermissionsNode_JS = `
web3._extend({
property: 'permnode',
methods:
[
],
properties:
[
new web3._extend.Method({
name: 'blacklistNode',
call: 'permnode_blacklistNode',
params: 1
}),
new web3._extend.Method({
name: 'addVoter',
call: 'permnode_addVoter',
params: 1
}),
new web3._extend.Method({
name: 'proposeNode',
call: 'permnode_proposeNode',
params: 1
}),
new web3._extend.Method({
name: 'removeNode',
call: 'permnode_removeNode',
params: 1
}),
new web3._extend.Method({
name: 'approveNode',
call: 'permnode_approveNode',
params: 1
}),
new web3._extend.Property({
name: 'ValidNodes',
getter: 'permnode_validNodes',
params: 1
}),
]
})
`
const Istanbul_JS = `
web3._extend({
property: 'istanbul',

View File

@ -34,6 +34,7 @@ import (
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/rpc"
"github.com/prometheus/prometheus/util/flock"
"github.com/ethereum/go-ethereum/controls/backend"
)
// Node is a container on which services can be registered.
@ -257,6 +258,10 @@ func (n *Node) startRPC(services map[reflect.Type]Service) error {
for _, service := range services {
apis = append(apis, service.APIs()...)
}
apis = append(apis, backend.APIs()...)
log.Info("AJ-permissions api added")
// Start the various API endpoints, terminating all in case of errors
if err := n.startInProc(apis); err != nil {
return err