@@ -142,6 +142,10 @@ func (k msgServer) OpenLong(ctx sdk.Context, msg *types.MsgOpen) (*types.MTP, er
142
142
var externalAsset string
143
143
nativeAsset := types .GetSettlementAsset ()
144
144
145
+ if ! k .IsRowanCollateralEnabled (ctx ) && types .StringCompare (msg .CollateralAsset , nativeAsset ) {
146
+ return nil , sdkerrors .Wrap (types .ErrRowanAsCollateralNotAllowed , nativeAsset )
147
+ }
148
+
145
149
if types .StringCompare (msg .CollateralAsset , nativeAsset ) {
146
150
externalAsset = msg .BorrowAsset
147
151
} else {
@@ -340,6 +344,23 @@ func (k msgServer) UpdatePools(goCtx context.Context, msg *types.MsgUpdatePools)
340
344
return & types.MsgUpdatePoolsResponse {}, nil
341
345
}
342
346
347
+ func (k msgServer ) UpdateRowanCollateral (goCtx context.Context , msg * types.MsgUpdateRowanCollateral ) (* types.MsgUpdateRowanCollateralResponse , error ) {
348
+ ctx := sdk .UnwrapSDKContext (goCtx )
349
+ signer , err := sdk .AccAddressFromBech32 (msg .Signer )
350
+ if err != nil {
351
+ return nil , err
352
+ }
353
+ if ! k .AdminKeeper ().IsAdminAccount (ctx , admintypes .AdminType_MARGIN , signer ) {
354
+ return nil , sdkerrors .Wrap (admintypes .ErrPermissionDenied , fmt .Sprintf ("signer not authorised: %s" , msg .Signer ))
355
+ }
356
+
357
+ params := k .GetParams (ctx )
358
+ params .RowanCollateralEnabled = msg .RowanCollateralEnabled
359
+ k .SetParams (ctx , & params )
360
+
361
+ return & types.MsgUpdateRowanCollateralResponse {}, nil
362
+ }
363
+
343
364
func (k msgServer ) Whitelist (goCtx context.Context , msg * types.MsgWhitelist ) (* types.MsgWhitelistResponse , error ) {
344
365
ctx := sdk .UnwrapSDKContext (goCtx )
345
366
signer , err := sdk .AccAddressFromBech32 (msg .Signer )
0 commit comments