terra/README.md

1.9 KiB

Terra


A terra client with some protocol partial implementations (anchor, prism, terraswap type routers, ...)

To be able to compile, you need to add the following replace in your go.mod :

replace (
	github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76
	github.com/cosmos/cosmos-sdk => github.com/terra-money/cosmos-sdk v0.44.5-terra.2
	github.com/cosmos/ledger-cosmos-go => github.com/terra-money/ledger-terra-go v0.11.2
	github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
	github.com/tecbot/gorocksdb => github.com/cosmos/gorocksdb v1.2.0
	github.com/tendermint/tendermint => github.com/terra-money/tendermint v0.34.14-terra.2
	google.golang.org/grpc => google.golang.org/grpc v1.33.2
)

Examples


Querying Anchor borrow limit

    ctx := context.Background()
	
    querier := terra.NewQuerier(
		httpClient := &http.Client{
            Timeout: 30 * time.Second,
		}, 
		"https://lcd.terra.dev")
	
    walletAddress, err := cosmos.AccAddressFromBech32("walletAddress")

    anc, err := anchor.NewAnchor(querier)
    if err != nil {
        panic(err)
    }
    borrowLimit, err := anc.Overseer.BorrowLimit(ctx, walletAddress)
    if err != nil {
        panic(err)
    }
	

Depositing UST to Anchor

    ctx := context.Background()
	
    querier := terra.NewQuerier(
		httpClient := &http.Client{
            Timeout: 30 * time.Second,
		}, 
		"https://lcd.terra.dev")
	
    wallet, err := terra.NewWalletFromMnemonic(
        querier,
        "mnemonic",
        0,
        0)
    if err != nil {
        panic(err)
    }

    anc, err := anchor.NewAnchor(querier)
    if err != nil {
        panic(err)
    }
    err = terra.NewTransaction(querier).
        Message(func() (cosmos.Msg, error) {
            return anc.Market.NewDepositUSTMessage(wallet.Address(), decimal.NewFromInt(100))
        }).
        ExecuteAndWaitFor(ctx, wallet)