forked from TrueCloudLab/neoneo-go
de45c58551
* added rpc.invoke and parameters marshalling * removed debug output * stringer and marshalling corrections * version
98 lines
3 KiB
Go
98 lines
3 KiB
Go
package rpc
|
|
|
|
import "github.com/CityOfZion/neo-go/pkg/smartcontract"
|
|
|
|
// GetBlock returns a block by its hash or index/height. If verbose is true
|
|
// the response will contain a pretty Block object instead of the raw hex string.
|
|
func (c *Client) GetBlock(indexOrHash interface{}, verbose bool) (*response, error) {
|
|
var (
|
|
params = newParams(indexOrHash)
|
|
resp = &response{}
|
|
)
|
|
if verbose {
|
|
params = newParams(indexOrHash, 1)
|
|
}
|
|
if err := c.performRequest("getblock", params, resp); err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
// GetAccountState will return detailed information about a NEO account.
|
|
func (c *Client) GetAccountState(address string) (*AccountStateResponse, error) {
|
|
var (
|
|
params = newParams(address)
|
|
resp = &AccountStateResponse{}
|
|
)
|
|
if err := c.performRequest("getaccountstate", params, resp); err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
// InvokeScipt returns the result of the given script after running it true the VM.
|
|
// NOTE: This is a test invoke and will not affect the blokchain.
|
|
func (c *Client) InvokeScript(script string) (*InvokeScriptResponse, error) {
|
|
var (
|
|
params = newParams(script)
|
|
resp = &InvokeScriptResponse{}
|
|
)
|
|
if err := c.performRequest("invokescript", params, resp); err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
// InvokeFunction return the results after calling a the smart contract scripthash
|
|
// with the given operation and parameters.
|
|
// NOTE: this is test invoke and will not affect the blockchain.
|
|
func (c *Client) InvokeFunction(script, operation string, params []smartcontract.Parameter) (*InvokeScriptResponse, error) {
|
|
var (
|
|
p = newParams(script, operation, params)
|
|
resp = &InvokeScriptResponse{}
|
|
)
|
|
if err := c.performRequest("invokefunction", p, resp); err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
// InvokeFunction return the results after calling a the smart contract scripthash
|
|
// with the given parameters.
|
|
func (c *Client) Invoke(script string, params []smartcontract.Parameter) (*InvokeScriptResponse, error) {
|
|
var (
|
|
p = newParams(script, params)
|
|
resp = &InvokeScriptResponse{}
|
|
)
|
|
if err := c.performRequest("invoke", p, resp); err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
// GetRawTransaction queries a transaction by hash.
|
|
func (c *Client) GetRawTransaction(hash string, verbose bool) (*response, error) {
|
|
var (
|
|
params = newParams(hash, verbose)
|
|
resp = &response{}
|
|
)
|
|
if err := c.performRequest("getrawtransaction", params, resp); err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|
|
|
|
// SendRawTransaction broadcasts a transaction over the NEO network.
|
|
// The given hex string needs to be signed with a keypair.
|
|
// When the result of the response object is true, the TX has successfully
|
|
// been broadcasted to the network.
|
|
func (c *Client) SendRawTransaction(rawTX string) (*response, error) {
|
|
var (
|
|
params = newParams(rawTX)
|
|
resp = &response{}
|
|
)
|
|
if err := c.performRequest("sendrawtransaction", params, resp); err != nil {
|
|
return nil, err
|
|
}
|
|
return resp, nil
|
|
}
|