state: drop NativeContract, fix #3430
This unifies getnativecontracts RPC API with regular contracts. Signed-off-by: Roman Khimov <roman@nspcc.ru>
This commit is contained in:
parent
13020ccd02
commit
b1bb12df48
6 changed files with 14 additions and 18 deletions
|
@ -99,7 +99,7 @@ func (*FakeChain) IsExtensibleAllowed(uint160 util.Uint160) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetNatives implements the blockchainer.Blockchainer interface.
|
// GetNatives implements the blockchainer.Blockchainer interface.
|
||||||
func (*FakeChain) GetNatives() []state.NativeContract {
|
func (*FakeChain) GetNatives() []state.Contract {
|
||||||
panic("TODO")
|
panic("TODO")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2292,18 +2292,19 @@ func (bc *Blockchain) GetNativeContractScriptHash(name string) (util.Uint160, er
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetNatives returns list of native contracts.
|
// GetNatives returns list of native contracts.
|
||||||
func (bc *Blockchain) GetNatives() []state.NativeContract {
|
func (bc *Blockchain) GetNatives() []state.Contract {
|
||||||
res := make([]state.NativeContract, 0, len(bc.contracts.Contracts))
|
res := make([]state.Contract, 0, len(bc.contracts.Contracts))
|
||||||
current := bc.getCurrentHF()
|
current := bc.getCurrentHF()
|
||||||
for _, c := range bc.contracts.Contracts {
|
for _, c := range bc.contracts.Contracts {
|
||||||
activeIn := c.ActiveIn()
|
activeIn := c.ActiveIn()
|
||||||
if !(activeIn == nil || activeIn.Cmp(current) <= 0) {
|
if !(activeIn == nil || activeIn.Cmp(current) <= 0) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
md := c.Metadata().HFSpecificContractMD(¤t)
|
|
||||||
res = append(res, state.NativeContract{
|
st := bc.GetContractState(c.Metadata().Hash)
|
||||||
ContractBase: md.ContractBase,
|
if st != nil { // Should never happen, but better safe than sorry.
|
||||||
})
|
res = append(res, *st)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,6 @@ type ContractBase struct {
|
||||||
Manifest manifest.Manifest `json:"manifest"`
|
Manifest manifest.Manifest `json:"manifest"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NativeContract holds information about the native contract.
|
|
||||||
type NativeContract struct {
|
|
||||||
ContractBase
|
|
||||||
}
|
|
||||||
|
|
||||||
// ToStackItem converts state.Contract to stackitem.Item.
|
// ToStackItem converts state.Contract to stackitem.Item.
|
||||||
func (c *Contract) ToStackItem() (stackitem.Item, error) {
|
func (c *Contract) ToStackItem() (stackitem.Item, error) {
|
||||||
// Do not skip the NEF size check, it won't affect native Management related
|
// Do not skip the NEF size check, it won't affect native Management related
|
||||||
|
|
|
@ -265,8 +265,8 @@ func (c *Client) getContractState(param any) (*state.Contract, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetNativeContracts queries information about native contracts.
|
// GetNativeContracts queries information about native contracts.
|
||||||
func (c *Client) GetNativeContracts() ([]state.NativeContract, error) {
|
func (c *Client) GetNativeContracts() ([]state.Contract, error) {
|
||||||
var resp []state.NativeContract
|
var resp []state.Contract
|
||||||
if err := c.performRequest("getnativecontracts", nil, &resp); err != nil {
|
if err := c.performRequest("getnativecontracts", nil, &resp); err != nil {
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ type (
|
||||||
GetNEP11Contracts() []util.Uint160
|
GetNEP11Contracts() []util.Uint160
|
||||||
GetNEP17Contracts() []util.Uint160
|
GetNEP17Contracts() []util.Uint160
|
||||||
GetNativeContractScriptHash(string) (util.Uint160, error)
|
GetNativeContractScriptHash(string) (util.Uint160, error)
|
||||||
GetNatives() []state.NativeContract
|
GetNatives() []state.Contract
|
||||||
GetNextBlockValidators() ([]*keys.PublicKey, error)
|
GetNextBlockValidators() ([]*keys.PublicKey, error)
|
||||||
GetNotaryContractScriptHash() util.Uint160
|
GetNotaryContractScriptHash() util.Uint160
|
||||||
GetStateModule() core.StateRoot
|
GetStateModule() core.StateRoot
|
||||||
|
|
|
@ -1192,13 +1192,13 @@ var rpcTestCases = map[string][]rpcTestCase{
|
||||||
{
|
{
|
||||||
params: "[]",
|
params: "[]",
|
||||||
result: func(e *executor) any {
|
result: func(e *executor) any {
|
||||||
return new([]state.NativeContract)
|
return new([]state.Contract)
|
||||||
},
|
},
|
||||||
check: func(t *testing.T, e *executor, res any) {
|
check: func(t *testing.T, e *executor, res any) {
|
||||||
lst := res.(*[]state.NativeContract)
|
lst := res.(*[]state.Contract)
|
||||||
for i := range *lst {
|
for i := range *lst {
|
||||||
cs := e.chain.GetContractState((*lst)[i].Hash)
|
cs := e.chain.GetContractState((*lst)[i].Hash)
|
||||||
require.NotNil(t, cs)
|
require.Equal(t, *cs, (*lst)[i])
|
||||||
require.True(t, cs.ID <= 0)
|
require.True(t, cs.ID <= 0)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue