mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-12-23 03:41:34 +00:00
rpc: implement getnativecontracts
RPC
This commit is contained in:
parent
e1d2a5b5b7
commit
f0d8652bcd
6 changed files with 46 additions and 0 deletions
|
@ -85,6 +85,11 @@ func (*FakeChain) IsExtensibleAllowed(uint160 util.Uint160) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetNatives implements blockchainer.Blockchainer interface.
|
||||||
|
func (*FakeChain) GetNatives() []state.NativeContract {
|
||||||
|
panic("TODO")
|
||||||
|
}
|
||||||
|
|
||||||
// GetNotaryDepositExpiration implements Blockchainer interface.
|
// GetNotaryDepositExpiration implements Blockchainer interface.
|
||||||
func (chain *FakeChain) GetNotaryDepositExpiration(acc util.Uint160) uint32 {
|
func (chain *FakeChain) GetNotaryDepositExpiration(acc util.Uint160) uint32 {
|
||||||
if chain.NotaryDepositExpiration != 0 {
|
if chain.NotaryDepositExpiration != 0 {
|
||||||
|
|
|
@ -1243,6 +1243,19 @@ func (bc *Blockchain) GetNativeContractScriptHash(name string) (util.Uint160, er
|
||||||
return util.Uint160{}, errors.New("Unknown native contract")
|
return util.Uint160{}, errors.New("Unknown native contract")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetNatives returns list of native contracts.
|
||||||
|
func (bc *Blockchain) GetNatives() []state.NativeContract {
|
||||||
|
res := make([]state.NativeContract, len(bc.contracts.Contracts))
|
||||||
|
for i, c := range bc.contracts.Contracts {
|
||||||
|
md := c.Metadata()
|
||||||
|
res[i].ID = md.ContractID
|
||||||
|
res[i].Hash = md.Hash
|
||||||
|
res[i].Manifest = md.Manifest
|
||||||
|
res[i].NEF = md.NEF
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
// GetConfig returns the config stored in the blockchain.
|
// GetConfig returns the config stored in the blockchain.
|
||||||
func (bc *Blockchain) GetConfig() config.ProtocolConfiguration {
|
func (bc *Blockchain) GetConfig() config.ProtocolConfiguration {
|
||||||
return bc.config
|
return bc.config
|
||||||
|
|
|
@ -45,6 +45,7 @@ type Blockchainer interface {
|
||||||
GetAppExecResults(util.Uint256, trigger.Type) ([]state.AppExecResult, error)
|
GetAppExecResults(util.Uint256, trigger.Type) ([]state.AppExecResult, error)
|
||||||
GetNotaryDepositExpiration(acc util.Uint160) uint32
|
GetNotaryDepositExpiration(acc util.Uint160) uint32
|
||||||
GetNativeContractScriptHash(string) (util.Uint160, error)
|
GetNativeContractScriptHash(string) (util.Uint160, error)
|
||||||
|
GetNatives() []state.NativeContract
|
||||||
GetNextBlockValidators() ([]*keys.PublicKey, error)
|
GetNextBlockValidators() ([]*keys.PublicKey, error)
|
||||||
GetNEP17Balances(util.Uint160) *state.NEP17Balances
|
GetNEP17Balances(util.Uint160) *state.NEP17Balances
|
||||||
GetNotaryContractScriptHash() util.Uint160
|
GetNotaryContractScriptHash() util.Uint160
|
||||||
|
|
|
@ -30,6 +30,12 @@ type ContractBase struct {
|
||||||
Manifest manifest.Manifest `json:"manifest"`
|
Manifest manifest.Manifest `json:"manifest"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NativeContract holds information about native contract.
|
||||||
|
type NativeContract struct {
|
||||||
|
ContractBase
|
||||||
|
ActiveBlockIndex uint32 `json:"activeblockindex"`
|
||||||
|
}
|
||||||
|
|
||||||
// DecodeBinary implements Serializable interface.
|
// DecodeBinary implements Serializable interface.
|
||||||
func (c *Contract) DecodeBinary(r *io.BinReader) {
|
func (c *Contract) DecodeBinary(r *io.BinReader) {
|
||||||
si := stackitem.DecodeBinaryStackItem(r)
|
si := stackitem.DecodeBinaryStackItem(r)
|
||||||
|
|
|
@ -103,6 +103,7 @@ var rpcHandlers = map[string]func(*Server, request.Params) (interface{}, *respon
|
||||||
"getcommittee": (*Server).getCommittee,
|
"getcommittee": (*Server).getCommittee,
|
||||||
"getconnectioncount": (*Server).getConnectionCount,
|
"getconnectioncount": (*Server).getConnectionCount,
|
||||||
"getcontractstate": (*Server).getContractState,
|
"getcontractstate": (*Server).getContractState,
|
||||||
|
"getnativecontracts": (*Server).getNativeContracts,
|
||||||
"getnep17balances": (*Server).getNEP17Balances,
|
"getnep17balances": (*Server).getNEP17Balances,
|
||||||
"getnep17transfers": (*Server).getNEP17Transfers,
|
"getnep17transfers": (*Server).getNEP17Transfers,
|
||||||
"getpeers": (*Server).getPeers,
|
"getpeers": (*Server).getPeers,
|
||||||
|
@ -986,6 +987,10 @@ func (s *Server) getContractState(reqParams request.Params) (interface{}, *respo
|
||||||
return cs, nil
|
return cs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Server) getNativeContracts(_ request.Params) (interface{}, *response.Error) {
|
||||||
|
return s.chain.GetNatives(), nil
|
||||||
|
}
|
||||||
|
|
||||||
// getBlockSysFee returns the system fees of the block, based on the specified index.
|
// getBlockSysFee returns the system fees of the block, based on the specified index.
|
||||||
func (s *Server) getBlockSysFee(reqParams request.Params) (interface{}, *response.Error) {
|
func (s *Server) getBlockSysFee(reqParams request.Params) (interface{}, *response.Error) {
|
||||||
param := reqParams.ValueWithType(0, request.NumberT)
|
param := reqParams.ValueWithType(0, request.NumberT)
|
||||||
|
|
|
@ -552,6 +552,22 @@ var rpcTestCases = map[string][]rpcTestCase{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"getnativecontracts": {
|
||||||
|
{
|
||||||
|
params: "[]",
|
||||||
|
result: func(e *executor) interface{} {
|
||||||
|
return new([]state.NativeContract)
|
||||||
|
},
|
||||||
|
check: func(t *testing.T, e *executor, res interface{}) {
|
||||||
|
lst := res.(*[]state.NativeContract)
|
||||||
|
for i := range *lst {
|
||||||
|
cs := e.chain.GetContractState((*lst)[i].Hash)
|
||||||
|
require.NotNil(t, cs)
|
||||||
|
require.True(t, cs.ID <= 0)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"getpeers": {
|
"getpeers": {
|
||||||
{
|
{
|
||||||
params: "[]",
|
params: "[]",
|
||||||
|
|
Loading…
Reference in a new issue