Skip to main content

Create Lease Keeper Processing for Store/Chain Population

Source code reference location

The CreateLease method within node/x/market/keeper/keeper.go takes in Bid details as an argument and writes the new Lease to the blockchain.

func (k Keeper) CreateLease(ctx sdk.Context, bid types.Bid) {
store := ctx.KVStore(k.skey)

lease := types.Lease{
LeaseID: types.LeaseID(bid.ID()),
State: types.LeaseActive,
Price: bid.Price,
CreatedAt: ctx.BlockHeight(),
}

// create (active) lease in store
key := keys.LeaseKey(lease.ID())
store.Set(key, k.cdc.MustMarshal(&lease))

ctx.Logger().Info("created lease", "lease", lease.ID())
ctx.EventManager().EmitEvent(
types.NewEventLeaseCreated(lease.ID(), lease.Price).
ToSDKEvent(),
)

secondaryKeys := keys.SecondaryKeysForLease(lease.ID())
for _, secondaryKey := range secondaryKeys {
store.Set(secondaryKey, key)
}
}