Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 12 additions & 36 deletions core/dex_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ import (
"time"

sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/sei-protocol/sei-chain/x/dex/types"
dextypes "github.com/sei-protocol/sei-chain/x/dex/types"
)

func (c *Client) SendRegisterContract(contractAddr string, codeId uint64, needHook bool) (*sdk.TxResponse, error) {
txBuilder := c.encodingConfig.TxConfig.NewTxBuilder()
msg := dextypes.MsgRegisterContract{
Creator: sdk.AccAddress(c.privKey.PubKey().Address()).String(),
Contract: &dextypes.ContractInfo{
Contract: &dextypes.ContractInfoV2{
CodeId: codeId,
ContractAddr: contractAddr,
NeedOrderMatching: true,
Expand Down Expand Up @@ -51,45 +51,20 @@ func (c *Client) RegisterPair(
title string,
contractAddr string,
pairs []*dextypes.Pair,
) (*sdk.TxResponse, error) {
txResp, err := c.SendPairsProposal(title, contractAddr, pairs)
if err != nil {
return nil, err
}

proposalId := GetEventAttributeValue(*txResp, "submit_proposal", "proposal_id")
err = c.Vote(proposalId)
if err != nil {
return nil, err
}

return txResp, nil
}

func (c *Client) SendPairsProposal(
title string,
contractAddr string,
pairs []*dextypes.Pair,
) (*sdk.TxResponse, error) {
txBuilder := c.encodingConfig.TxConfig.NewTxBuilder()
from := sdk.AccAddress(c.privKey.PubKey().Address())
content := dextypes.NewRegisterPairsProposal(
title,
title,

msg := types.NewMsgRegisterPairs(
from.String(),
[]dextypes.BatchContractPair{
{
ContractAddr: contractAddr,
Pairs: pairs,
},
},
)
deposit := sdk.NewCoins(
sdk.NewCoin("usei", govtypes.DefaultMinDepositTokens),
)
msg, err := govtypes.NewMsgSubmitProposal(&content, deposit, from)
if err != nil {
panic(err)
}

_ = txBuilder.SetMsgs(msg)
(txBuilder).SetGasLimit(2000000)
(txBuilder).SetFeeAmount([]sdk.Coin{
Expand Down Expand Up @@ -136,15 +111,16 @@ func (c *Client) SendOrder(order FundedOrder, contractAddr string) (dextypes.Msg
}

func (c *Client) SendCancel(
order Cancel,
order CancelOrder,
contractAddr string,
monikerToOrderIds map[string][]uint64,
) error {
seiCancellation := ToSeiCancelOrderPlacement(order)
orderCancellations := []*dextypes.Cancellation{&seiCancellation}
txBuilder := c.encodingConfig.TxConfig.NewTxBuilder()
msg := dextypes.MsgCancelOrders{
Creator: sdk.AccAddress(c.privKey.PubKey().Address()).String(),
OrderIds: monikerToOrderIds[order.Moniker],
ContractAddr: contractAddr,
Creator: sdk.AccAddress(c.privKey.PubKey().Address()).String(),
Cancellations: orderCancellations,
ContractAddr: contractAddr,
}
_ = txBuilder.SetMsgs(&msg)
addGasFee(&txBuilder, c.txConfig.gasLimit, c.txConfig.gasFee)
Expand Down
19 changes: 11 additions & 8 deletions core/nitro_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,27 @@ import (
func (c *Client) SubmitFraudChallenge(
startSlot uint64,
endSlot uint64,
fraudState string,
fraudStatePubKey string,
merkleProof *types.MerkleProof,
accountStates []*types.Account,
programs []*types.Account,
sysvarAccounts []*types.Account,
gasLimit uint64,
gasWanted sdk.Coin,
) (*sdk.TxResponse, error) {
senderAddr := sdk.AccAddress(c.privKey.PubKey().Address()).String()
txBuilder := c.encodingConfig.TxConfig.NewTxBuilder()
msg := types.MsgSubmitFraudChallenge{
Sender: senderAddr,
StartSlot: startSlot,
EndSlot: endSlot,
FraudState: fraudState,
MerkleProof: merkleProof,
AccountStates: accountStates,
Programs: programs,
Sender: senderAddr,
StartSlot: startSlot,
EndSlot: endSlot,
FraudStatePubKey: fraudStatePubKey,
MerkleProof: merkleProof,
AccountStates: accountStates,
Programs: programs,
SysvarAccounts: sysvarAccounts,
}

_ = txBuilder.SetMsgs(&msg)
(txBuilder).SetGasLimit(gasLimit)
(txBuilder).SetFeeAmount([]sdk.Coin{gasWanted})
Expand Down
14 changes: 4 additions & 10 deletions core/oracle_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,8 @@ func (c *Client) SendOraclePrice(coins sdk.DecCoins) error {
exchangeRatesStrs = append(exchangeRatesStrs, fmt.Sprintf("%s%s", coin.Amount.String(), coin.Denom))
}
exchangeRatesStr := strings.Join(exchangeRatesStrs, ",")
from := sdk.AccAddress(c.privKey.PubKey().Address())
validator := sdk.ValAddress(from)
hash := oracletypes.GetAggregateVoteHash(ORACLE_HASH, exchangeRatesStr, validator)

txBuilder := c.encodingConfig.TxConfig.NewTxBuilder()
prevoteMsg := oracletypes.NewMsgAggregateExchangeRatePrevote(hash, from, validator)
_ = txBuilder.SetMsgs(prevoteMsg)

(txBuilder).SetGasLimit(2000000)
(txBuilder).SetFeeAmount([]sdk.Coin{
sdk.NewCoin("usei", sdk.NewInt(100000)),
Expand Down Expand Up @@ -148,18 +143,17 @@ func (c *Client) SendOraclePrice(coins sdk.DecCoins) error {
func (c *Client) sendOracleVote(exchangeRatesStr string) (*sdk.TxResponse, error) {
voter := sdk.AccAddress(c.privKey.PubKey().Address())
txBuilder := c.encodingConfig.TxConfig.NewTxBuilder()
prevoteMsg := oracletypes.NewMsgAggregateExchangeRateVote(
ORACLE_HASH,
voteMsg := oracletypes.NewMsgAggregateExchangeRateVote(
exchangeRatesStr,
voter,
sdk.ValAddress(voter),
)
_ = txBuilder.SetMsgs(prevoteMsg)
_ = txBuilder.SetMsgs(voteMsg)
(txBuilder).SetGasLimit(2000000)
(txBuilder).SetFeeAmount([]sdk.Coin{
sdk.NewCoin("usei", sdk.NewInt(100000)),
})

resp, err := c.signAndSendTx(&txBuilder)
if err != nil {
return nil, err
Expand Down
8 changes: 4 additions & 4 deletions core/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ func ParseFundedOrder(raw json.RawMessage) FundedOrder {
return order
}

func ParseCancel(raw json.RawMessage) Cancel {
cancel := Cancel{}
if err := json.Unmarshal(raw, &cancel); err != nil {
func ParseCancelOrder(raw json.RawMessage) CancelOrder {
cancelOrder := CancelOrder{}
if err := json.Unmarshal(raw, &cancelOrder); err != nil {
panic(err)
}
return cancel
return cancelOrder
}

func ParseDeposit(raw json.RawMessage) Deposit {
Expand Down
15 changes: 12 additions & 3 deletions core/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,10 @@ type OrderData struct {
Leverage string `json:"leverage"`
}

type Cancel struct {
Account string `json:"account"`
Moniker string `json:"moniker"`
type CancelOrder struct {
Account string `json:"account"`
Moniker string `json:"moniker"`
Order OrderCancellation `json:"order"`
}

type Deposit struct {
Expand Down Expand Up @@ -82,6 +83,14 @@ type OrderPlacement struct {
Leverage string `json:"leverage"`
}

type OrderCancellation struct {
Id string `json:"id"`
PositionDirection string `json:"position_direction"`
Price string `json:"price"`
PriceDenom string `json:"price_denom"`
AssetDenom string `json:"asset_denom"`
}

type OracleUpdate struct {
ExchangeRates sdk.DecCoins `json:"exchange_rates"`
}
Expand Down
22 changes: 22 additions & 0 deletions core/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package client
import (
"encoding/json"
"fmt"
"strconv"
"strings"

sdk "github.com/cosmos/cosmos-sdk/types"
Expand Down Expand Up @@ -67,6 +68,27 @@ func ToSeiOrderPlacement(fundedOrder FundedOrder) dextypes.Order {
}
}

func ToSeiCancelOrderPlacement(cancelOrder CancelOrder) dextypes.Cancellation {
order := cancelOrder.Order
orderId, err := strconv.ParseUint(order.Id, 10, 64)
if err != nil {
panic(err)
}
positionDirection, err := dextypesutils.GetPositionDirectionFromStr(order.PositionDirection)
if err != nil {
panic(err)
}
price := sdk.MustNewDecFromStr(order.Price)

return dextypes.Cancellation{
Id: orderId,
PositionDirection: positionDirection,
Price: price,
PriceDenom: order.PriceDenom,
AssetDenom: order.AssetDenom,
}
}

func ToOrderPlacementExecuteMsg(fundedOrder FundedOrder) []byte {
order := ToSeiOrderPlacement(fundedOrder)
swapMsg := SwapMulticollateralToBaseMsg{
Expand Down
4 changes: 2 additions & 2 deletions examples/client/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ func TestClient(t *testing.T) {
sdk.NewCoin("usei", sdk.NewInt(100000)),
grpcConn,
)

seiSdk.NewClient(
secp256k1.GenPrivKey(),
txConfig,
txConfig,
seiSdk.NewDefaultEncodingConfig(),
)
}
Loading