28908aa3cf
Signed-off-by: Elizaveta Chichindaeva <elizaveta@nspcc.ru>
73 lines
2.9 KiB
Markdown
73 lines
2.9 KiB
Markdown
# NeoGo Oracle service
|
|
|
|
NeoGo node can act as an oracle service node for https and neofs protocols. It
|
|
has to have a wallet with a key belonging to one of the network's designated oracle
|
|
nodes (stored in `RoleManagement` native contract).
|
|
|
|
It needs [RPC service](rpc.md) to be enabled and configured properly because
|
|
RPC is used by oracle nodes to exchange signatures of the resulting
|
|
transaction.
|
|
|
|
## Configuration
|
|
|
|
To enable oracle service, add `Oracle` subsection to `ApplicationConfiguration`
|
|
section of your node config.
|
|
|
|
Parameters:
|
|
* `Enabled`: boolean value, enables/disables the service, `true` for service
|
|
to be enabled
|
|
* `AllowPrivateHost`: boolean value, enables/disables private IPs (like
|
|
127.0.0.1 or 192.168.0.1) for https requests, it defaults to false and it's
|
|
false on public networks, but you can enable it for private ones.
|
|
* `AllowedContentTypes`: a list of allowed MIME types. Only `application/json`
|
|
is allowed by default. Can be left empty to allow everything.
|
|
* `Nodes`: a list of oracle node RPC endpoints, it's used for oracle node
|
|
communication. All oracle nodes should be specified there.
|
|
* `NeoFS`: a subsection of its own for NeoFS configuration with two
|
|
parameters:
|
|
- `Timeout`: request timeout, like "5s"
|
|
- `Nodes`: a list of NeoFS nodes (their gRPC interfaces) to get data from,
|
|
one node is enough to operate, but they're used in round-robin fashion,
|
|
so you can spread the load by specifying multiple nodes
|
|
* `MaxTaskTimeout`: maximum time a request can be active (retried to
|
|
process), defaults to 1 hour if not specified.
|
|
* `RefreshInterval`: retry period for requests that aren't yet processed,
|
|
defaults to 3 minutes.
|
|
* `MaxConcurrentRequests`: maximum number of requests processed in parallel,
|
|
defaults to 10.
|
|
* `RequestTimeout`: https request timeout, default is 5 seconds.
|
|
* `ResponseTimeout`: RPC communication timeout for inter-oracle exchange,
|
|
default is 4 seconds.
|
|
* `UnlockWallet`: oracle wallet configuration:
|
|
- `Path`: path to NEP-6 wallet.
|
|
- `Password`: password for the account to be used by oracle node.
|
|
|
|
### Example
|
|
|
|
```
|
|
Oracle:
|
|
Enabled: true
|
|
AllowPrivateHost: false
|
|
MaxTaskTimeout: 432000000s
|
|
Nodes:
|
|
- http://oracle1.example.com:20332
|
|
- http://oracle2.example.com:20332
|
|
- http://oracle3.example.com:20332
|
|
- http://oracle4.example.com:20332
|
|
NeoFS:
|
|
Nodes:
|
|
- st1.storage.fs.neo.org:8080
|
|
- st2.storage.fs.neo.org:8080
|
|
- st3.storage.fs.neo.org:8080
|
|
- st4.storage.fs.neo.org:8080
|
|
UnlockWallet:
|
|
Path: "/path/to/oracle-wallet.json"
|
|
Password: "dontworryaboutthevase"
|
|
```
|
|
|
|
## Operation
|
|
|
|
To run oracle service on your network, you need to:
|
|
* set oracle node keys in `RoleManagement` contract
|
|
* configure and run an appropriate number of oracle nodes with keys specified in
|
|
`RoleManagement` contract
|