74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/tendermint/tendermint/rpc/client"
|
|
|
|
"github.com/certusone/terra-oracle/internal/oracle"
|
|
"github.com/certusone/terra-oracle/internal/signer"
|
|
)
|
|
|
|
// examplePriceProvider implements the PriceProvider interface
|
|
// It returns the same price for all denominations.
|
|
type examplePriceProvider struct {
|
|
}
|
|
|
|
func NewExamplePriceProvider() (*examplePriceProvider, error) {
|
|
return &examplePriceProvider{}, nil
|
|
}
|
|
|
|
func (provider *examplePriceProvider) GetPrice(denom string) (types.Dec, error) {
|
|
return types.NewDecWithPrec(int64(10), 2), nil
|
|
}
|
|
|
|
func main() {
|
|
oracle.Init()
|
|
|
|
wsClient := client.NewHTTP(os.Getenv("RPC_HOST"), "/websocket")
|
|
err := wsClient.Start()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
chainID := os.Getenv("CHAIN_ID")
|
|
|
|
valAddressString := os.Getenv("VAL_ADDR")
|
|
valAddress, err := types.ValAddressFromBech32(valAddressString)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
mnemonic := os.Getenv("MNEMONIC")
|
|
hdSigner, err := signer.NewHdSignerFromMnemonic(mnemonic)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
priceProvider, err := NewExamplePriceProvider()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
txFee := types.Coin{
|
|
Denom: "ukrw",
|
|
Amount: types.NewInt(750),
|
|
}
|
|
|
|
oracle := oracle.NewPriceOracle(oracle.PriceOracleConfig{
|
|
Client: wsClient,
|
|
ValAddress: valAddress,
|
|
ChainID: chainID,
|
|
PriceProvider: priceProvider,
|
|
Signer: hdSigner,
|
|
TxFee: txFee,
|
|
})
|
|
|
|
log.Printf("starting voter for:\n\tValidator: %s\n\tFeeder: %s\n\tChain: %s\n", valAddress.String(), hdSigner.Address().String(), chainID)
|
|
|
|
// TODO(hendrik): Allow graceful stop with os.Signal
|
|
log.Fatal(oracle.ProcessingLoop())
|
|
}
|