Best Rod code snippet using cdp.Start
keeper.go
Source:keeper.go
...25 auctionKeeper: auctionKeeper,26 bankKeeper: bankKeeper,27 }28}29// SeizeAndStartCollateralAuction pulls collateral out of a CDP and sells it in an auction for stable coin. Excess collateral goes to the original CDP owner.30// Known as Cat.bite in maker31// result: stable coin is transferred to module account, collateral is transferred from module account to buyer, (and any excess collateral is transferred to original CDP owner)32func (k Keeper) SeizeAndStartCollateralAuction(ctx sdk.Context, owner sdk.AccAddress, collateral types.Collateral) (auction.ID, sdk.Error) {33 // Get CDP34 var localCdp types.CDP35 var found bool36 switch collToken := collateral.Token.(type) {37 case cdp.BaseFT:38 localCdp, found = k.cdpKeeper.GetCDP(ctx, owner, collToken.GetName(), "")39 case cdp.BaseNFT:40 localCdp, found = k.cdpKeeper.GetCDP(ctx, owner, collToken.GetName(), collToken.ID)41 }42 if !found {43 return 0, sdk.ErrInternal("CDP not found")44 }45 // Calculate amount of collateral to sell in this auction46 params := k.GetParams(ctx).GetCollateralParams(localCdp.Collateral.Token.GetName())47 collateralToSell := sdk.MinInt(localCdp.Collateral.Amount, params.AuctionSize)48 // Calculate the corresponding maximum amount of stable coin to raise TODO test maths49 stableToRaise := sdk.NewDecFromInt(collateralToSell).Quo(sdk.NewDecFromInt(localCdp.Collateral.Amount)).Mul(sdk.NewDecFromInt(localCdp.Liquidity.Coin.Amount)).RoundInt()50 // Seize the collateral and debt from the CDP51 err := k.partialSeizeCDP(ctx, owner, collateral, collateralToSell, stableToRaise)52 if err != nil {53 return 0, err54 }55 // Start "forward reverse" auction type56 lot := sdk.NewCoin(localCdp.Collateral.Token.GetName(), collateralToSell)57 maxBid := sdk.NewCoin(k.cdpKeeper.GetStableDenom(), stableToRaise)58 auctionID, err := k.auctionKeeper.StartForwardReverseAuction(ctx, k.cdpKeeper.GetLiquidatorAccountAddress(), lot, maxBid, owner)59 if err != nil {60 panic(err) // TODO how can errors here be handled to be safe with the state update in PartialSeizeCDP?61 }62 return auctionID, nil63}64// StartDebtAuction sells off minted gov coin to raise set amounts of stable coin.65// Known as Vow.flop in maker66// result: minted gov coin moved to highest bidder, stable coin moved to moduleAccount67func (k Keeper) StartDebtAuction(ctx sdk.Context) (auction.ID, sdk.Error) {68 // Ensure amount of seized stable coin is 0 (ie Joy = 0)69 stableCoins := k.bankKeeper.GetCoins(ctx, k.cdpKeeper.GetLiquidatorAccountAddress()).AmountOf(k.cdpKeeper.GetStableDenom())70 if !stableCoins.IsZero() {71 return 0, sdk.ErrInternal("debt auction cannot be started as there is outstanding stable coins")72 }73 // check the seized debt is above a threshold74 params := k.GetParams(ctx)75 seizedDebt := k.GetSeizedDebt(ctx)76 if seizedDebt.Available().LT(params.DebtAuctionSize) {77 return 0, sdk.ErrInternal("not enough seized debt to start an auction")78 }79 // start reverse auction, selling minted gov coin for stable coin80 auctionID, err := k.auctionKeeper.StartReverseAuction(81 ctx,82 k.cdpKeeper.GetLiquidatorAccountAddress(),83 sdk.NewCoin(k.cdpKeeper.GetStableDenom(), params.DebtAuctionSize),84 sdk.NewInt64Coin(k.cdpKeeper.GetGovDenom(), 2^255-1), // TODO is there a way to avoid potentially minting infinite gov coin?85 )86 if err != nil {87 return 0, err88 }89 // Record amount of debt sent for auction. Debt can only be reduced in lock step with reducing stable coin90 seizedDebt.SentToAuction = seizedDebt.SentToAuction.Add(params.DebtAuctionSize)91 k.setSeizedDebt(ctx, seizedDebt)92 return auctionID, nil93}94// With no stability and liquidation fees, surplus auctions can never be run.95// StartSurplusAuction sells off excess stable coin in exchange for gov coin, which is burned96// Known as Vow.flap in maker97// result: stable coin removed from module account (eventually to buyer), gov coin transferred to module account98// func (k Keeper) StartSurplusAuction(ctx sdk.Context) (auction.ID, sdk.Error) {99// // TODO ensure seized debt is 0100// // check there is enough surplus to be sold101// surplus := k.bankKeeper.GetCoins(ctx, k.cdpKeeper.GetLiquidatorAccountAddress()).AmountOf(k.cdpKeeper.GetStableDenom())102// if surplus.LT(SurplusAuctionSize) {103// return 0, sdk.ErrInternal("not enough surplus stable coin to start an auction")104// }105// // start normal auction, selling stable coin106// auctionID, err := k.auctionKeeper.StartForwardAuction(107// ctx,108// k.cdpKeeper.GetLiquidatorAccountAddress(),109// sdk.NewCoin(k.cdpKeeper.GetStableDenom(), SurplusAuctionSize),110// sdk.NewInt64Coin(k.cdpKeeper.GetGovDenom(), 0),111// )112// if err != nil {113// return 0, err114// }115// // Starting the auction will remove coins from the account, so they don't need modified here.116// return auctionID, nil117// }118// PartialSeizeCDP seizes some collateral and debt from an under-collateralized CDP.119func (k Keeper) partialSeizeCDP(ctx sdk.Context, owner sdk.AccAddress, collateral types.Collateral, collateralToSeize sdk.Int, debtToSeize sdk.Int) sdk.Error { // aka Cat.bite120 // Seize debt and collateral in the cdp module. This also validates the inputs.121 err := k.cdpKeeper.PartialSeizeCDP(ctx, owner, collateral, collateralToSeize, debtToSeize)122 if err != nil {123 return err // cdp could be not found, or not under collateralized, or inputs invalid124 }125 // increment the total seized debt (Awe) by cdp.debt126 seizedDebt := k.GetSeizedDebt(ctx)127 seizedDebt.Total = seizedDebt.Total.Add(debtToSeize)128 k.setSeizedDebt(ctx, seizedDebt)129 // add cdp.collateral amount of coins to the moduleAccount (so they can be transferred to the auction later)...
rewards.go
Source:rewards.go
...12 if !found {13 k.SetPreviousCdpMintingAccrualTime(ctx, rewardPeriod.CollateralType, ctx.BlockTime())14 return nil15 }16 timeElapsed := CalculateTimeElapsed(rewardPeriod.Start, rewardPeriod.End, ctx.BlockTime(), previousAccrualTime)17 if timeElapsed.IsZero() {18 return nil19 }20 if rewardPeriod.RewardsPerSecond.Amount.IsZero() {21 k.SetPreviousCdpMintingAccrualTime(ctx, rewardPeriod.CollateralType, ctx.BlockTime())22 return nil23 }24 denoms, _ := k.GetGenesisDenoms(ctx)25 totalPrincipal := k.cdpKeeper.GetTotalPrincipal(ctx, rewardPeriod.CollateralType, denoms.PrincipalDenom).ToDec()26 if totalPrincipal.IsZero() {27 k.SetPreviousCdpMintingAccrualTime(ctx, rewardPeriod.CollateralType, ctx.BlockTime())28 return nil29 }30 newRewards := timeElapsed.Mul(rewardPeriod.RewardsPerSecond.Amount)...
keeper_test.go
Source:keeper_test.go
...6 sdk "github.com/cosmos/cosmos-sdk/types"7 "github.com/cosmos/cosmos-sdk/x/mock"8 "github.com/stretchr/testify/require"9)10func TestKeeper_SeizeAndStartCollateralAuction(t *testing.T) {11 // Setup12 ctx, k := setupTestKeepers()13 _, addrs := mock.GeneratePrivKeyAddressPairs(1)14 cdp.InitGenesis(ctx, k.cdpKeeper, cdp.DefaultGenesisState())15 InitGenesis(ctx, k.liquidatorKeeper, DefaultGenesisState())16 pricefeed.InitGenesis(ctx, k.pricefeedKeeper, pricefeed.GenesisState{Assets: []pricefeed.Asset{{"btc", "a description"}}})17 k.pricefeedKeeper.SetPrice(ctx, addrs[0], "btc", sdk.MustNewDecFromStr("8000.00"), i(999999999))18 k.pricefeedKeeper.SetCurrentPrices(ctx)19 k.bankKeeper.AddCoins(ctx, addrs[0], cs(c("btc", 100)))20 k.cdpKeeper.ModifyCDP(ctx, addrs[0], "btc", i(3), i(16000))21 k.pricefeedKeeper.SetPrice(ctx, addrs[0], "btc", sdk.MustNewDecFromStr("7999.99"), i(999999999))22 k.pricefeedKeeper.SetCurrentPrices(ctx)23 // Run test function24 auctionID, err := k.liquidatorKeeper.SeizeAndStartCollateralAuction(ctx, addrs[0], "btc")25 // Check CDP26 require.NoError(t, err)27 cdp, found := k.cdpKeeper.GetCDP(ctx, addrs[0], "btc")28 require.True(t, found)29 require.Equal(t, cdp.CollateralAmount, i(2)) // original amount - params.CollateralAuctionSize30 require.Equal(t, cdp.Debt, i(10667)) // original debt scaled by amount of collateral removed31 // Check auction exists32 _, found = k.auctionKeeper.GetAuction(ctx, auctionID)33 require.True(t, found)34 // TODO check auction values are correct?35}36func TestKeeper_StartDebtAuction(t *testing.T) {37 // Setup38 ctx, k := setupTestKeepers()39 InitGenesis(ctx, k.liquidatorKeeper, DefaultGenesisState())40 initSDebt := SeizedDebt{i(2000), i(0)}41 k.liquidatorKeeper.setSeizedDebt(ctx, initSDebt)42 // Execute43 auctionID, err := k.liquidatorKeeper.StartDebtAuction(ctx)44 // Check45 require.NoError(t, err)46 require.Equal(t,47 SeizedDebt{48 initSDebt.Total,49 initSDebt.SentToAuction.Add(k.liquidatorKeeper.GetParams(ctx).DebtAuctionSize),50 },51 k.liquidatorKeeper.GetSeizedDebt(ctx),52 )53 _, found := k.auctionKeeper.GetAuction(ctx, auctionID)54 require.True(t, found)55 // TODO check auction values are correct?56}57// func TestKeeper_StartSurplusAuction(t *testing.T) {58// // Setup59// ctx, k := setupTestKeepers()60// initSurplus := i(2000)61// k.liquidatorKeeper.bankKeeper.AddCoins(ctx, k.cdpKeeper.GetLiquidatorAccountAddress(), cs(sdk.NewCoin(k.cdpKeeper.GetStableDenom(), initSurplus)))62// k.liquidatorKeeper.setSeizedDebt(ctx, i(0))63// // Execute64// auctionID, err := k.liquidatorKeeper.StartSurplusAuction(ctx)65// // Check66// require.NoError(t, err)67// require.Equal(t,68// initSurplus.Sub(SurplusAuctionSize),69// k.liquidatorKeeper.bankKeeper.GetCoins(ctx,70// k.cdpKeeper.GetLiquidatorAccountAddress(),71// ).AmountOf(k.cdpKeeper.GetStableDenom()),72// )73// _, found := k.auctionKeeper.GetAuction(ctx, auctionID)74// require.True(t, found)75// }76func TestKeeper_partialSeizeCDP(t *testing.T) {77 // Setup78 ctx, k := setupTestKeepers()...
Start
Using AI Code Generation
1import (2func main() {3 ctx, cancel := chromedp.NewContext(4 context.Background(),5 chromedp.WithLogf(log.Printf),6 defer cancel()7 err := chromedp.Run(ctx,8 chromedp.WaitVisible(`#hplogo`, chromedp.ByID),9 chromedp.OuterHTML(`html`, &res),10 if err != nil {11 log.Fatal(err)12 }13 fmt.Println(res)14}15import (16func main() {17 c, err := chromedp.New()18 if err != nil {19 log.Fatal(err)20 }21 defer c.Shutdown()22 err = c.Run(context.Background(), chromedp.Tasks{23 chromedp.WaitVisible(`#hplogo`, chromedp.ByID),24 chromedp.OuterHTML(`html`, &res),25 })26 if err != nil {27 log.Fatal(err)28 }29 fmt.Println(res)30}31import (32func main() {33 c, err := chromedp.New()34 if err != nil {35 log.Fatal(err)36 }37 defer c.Shutdown()38 err = c.Run(context.Background(), chromedp.Tasks{39 chromedp.WaitVisible(`#hplogo`, chromedp.ByID),40 chromedp.OuterHTML(`html`, &res),41 })42 if err != nil {43 log.Fatal(err)44 }45 fmt.Println(res)46}
Start
Using AI Code Generation
1import (2func main() {3 irisFile, err := os.Open("iris.csv")4 if err != nil {5 log.Fatal(err)6 }7 defer irisFile.Close()8 irisDF := dataframe.ReadCSV(irisFile)9 fmt.Println(irisDF)10}11import (12func main() {13 irisFile, err := os.Open("iris.csv")14 if err != nil {15 log.Fatal(err)16 }
Start
Using AI Code Generation
1import (2func main() {3 irisFile, err := os.Open("iris.csv")4 if err != nil {5 log.Fatal(err)6 }7 defer irisFile.Close()8 irisDF := dataframe.ReadCSV(irisFile)9 r.SetObserved("Iris-setosa")10 r.SetVar(0, "Iris-versicolor")11 r.SetVar(1, "Iris-virginica")12 for i, floatVal := range irisDF.Col("sepal_length").Float() {13 r.Train(regression.DataPoint(floatVal, []float64{14 irisDF.Col("sepal_width").Float()[i],15 irisDF.Col("petal_length").Float()[i],16 irisDF.Col("petal_width").Float()[i],17 }))
Start
Using AI Code Generation
1import "fmt"2import "github.com/kniren/gota/dataframe"3import "github.com/sajari/regression"4import "io/ioutil"5import "log"6import "os"7import "path/filepath"8import "strings"9import "github.com/sajari/regression"10func main() {11f, err := os.Open("Advertising.csv")12if err != nil {13log.Fatal(err)14}15defer f.Close()16AdvertisingDF := dataframe.ReadCSV(f)17r.SetObserved("Sales")18r.SetVar(0, "TV")19r.SetVar(1, "Radio")20for i, floatVal := range AdvertisingDF.Col("TV").Float() {21r.Train(regression.DataPoint(floatVal, []float64{22AdvertisingDF.Col("Radio").Float()[i],23AdvertisingDF.Col("Sales").Float()[i],24}))25}26r.Run()27fmt.Printf("\nPredicted sales for TV = %0.2f, Radio = %0.2f: %0.2f\n\n",28tv, radio, r.Predict([]float64{tv, radio}))29}30import "fmt"31import "github.com/kniren/gota/dataframe"32import "github.com/sajari/regression"33import "io/ioutil"34import "log"35import "os"36import "path/filepath"37import "strings"38func main() {39f, err := os.Open("Advertising.csv")40if err != nil {41log.Fatal(err)42}43defer f.Close()44AdvertisingDF := dataframe.ReadCSV(f)45r.SetObserved("Sales")46r.SetVar(0, "TV")47r.SetVar(1, "Radio")48for i, floatVal := range AdvertisingDF.Col("TV").Float() {49r.Train(regression.DataPoint(floatVal, []float64{50AdvertisingDF.Col("Radio").Float()[i],51AdvertisingDF.Col("Sales").Float()[i],52}))53}54r.Run()
Start
Using AI Code Generation
1import (2func main() {3 if err != nil {4 log.Fatal(err)5 }6 defer c.Close()7 err = c.Run(chromedp.Tasks{8 chromedp.WaitVisible(`body`, chromedp.ByQuery),9 chromedp.OuterHTML(`body`, &res, chromedp.ByQuery),10 })11 if err != nil {12 log.Fatal(err)13 }14 log.Printf("res: %s", res)15}
Start
Using AI Code Generation
1import (2func main() {3 if err != nil {4 panic(err)5 }6 defer conn.Close()7 tab, err := conn.NewTab()8 if err != nil {9 panic(err)10 }11 defer tab.Close()12 if err != nil {13 panic(err)14 }15 tab.WaitLoad()16 title, err := tab.Title()17 if err != nil {18 panic(err)19 }20 fmt.Println("Page title:", title)21}22import (23func main() {24 if err != nil {25 panic(err)26 }27 defer conn.Close()28 tab, err := cdp.New(conn)29 if err != nil {30 panic(err)31 }32 defer tab.Close()33 if err != nil {34 panic(err)35 }36 tab.WaitLoad()37 title, err := tab.Title()38 if err != nil {39 panic(err)40 }41 fmt.Println("Page title:", title)42}43import (44func main() {45 if err != nil {46 panic(err)47 }48 defer conn.Close()49 tab, err := conn.NewTab()50 if err != nil {51 panic(err)52 }
Start
Using AI Code Generation
1func main() {2 c := cdp.New()3 c.Start()4}5func main() {6 c := cdp.New()7 c.Start()8}9func main() {10 c := cdp.New()11 c.Start()12}13func main() {14 c := cdp.New()15 c.Start()16}17func main() {18 c := cdp.New()19 c.Start()20}21func main() {22 c := cdp.New()23 c.Start()24}25func main() {26 c := cdp.New()27 c.Start()28}29func main() {30 c := cdp.New()31 c.Start()32}33func main() {34 c := cdp.New()35 c.Start()36}37func main() {38 c := cdp.New()39 c.Start()40}41func main() {42 c := cdp.New()43 c.Start()44}45func main() {46 c := cdp.New()47 c.Start()48}49func main() {50 c := cdp.New()51 c.Start()52}53func main() {54 c := cdp.New()55 c.Start()56}
Start
Using AI Code Generation
1import (2func main() {3 a := cdp.Start()4 fmt.Println(a)5}6import (7func main() {8 a := cdp.Start()9 fmt.Println(a)10}11func Start() int {12}
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!