Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Register
Sign in
Toggle navigation
Menu
Open sidebar
Tiger Ton
osmosis
Commits
58c5aab1
Commit
58c5aab1
authored
3 years ago
by
Sunny Aggarwal
Browse files
Options
Download
Email Patches
Plain Diff
in progress
parent
36f71e7a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
x/osmolbp/keeper/msg_server.go
+14
-9
x/osmolbp/keeper/msg_server.go
x/osmolbp/keeper/store.go
+2
-2
x/osmolbp/keeper/store.go
x/osmolbp/keys.go
+10
-0
x/osmolbp/keys.go
x/osmolbp/proto/lbp.go
+17
-0
x/osmolbp/proto/lbp.go
with
43 additions
and
11 deletions
+43
-11
x/osmolbp/keeper/msg_server.go
+
14
-
9
View file @
58c5aab1
...
...
@@ -35,7 +35,12 @@ func (k Keeper) createLBP(msg *proto.MsgCreateLBP, now time.Time, store storetyp
return
0
,
err
}
id
,
idBz
:=
k
.
nextPoolID
(
store
)
lbpAddr
:=
osmolbp
.
NewLbpAddress
(
id
)
p
:=
proto
.
LBP
{
Id
:
id
,
Address
:
lbpAddr
.
String
(),
TokenOut
:
msg
.
TokenOut
,
TokenIn
:
msg
.
TokenIn
,
StartTime
:
msg
.
StartTime
,
...
...
@@ -69,33 +74,33 @@ func (k Keeper) deposit(ctx sdk.Context, msg *proto.MsgDeposit, store storetypes
if
err
!=
nil
{
return
err
}
p
,
pool
IdBz
,
err
:=
k
.
get
Pool
(
store
,
msg
.
PoolId
)
lb
p
,
lbp
IdBz
,
err
:=
k
.
get
LBP
(
store
,
msg
.
PoolId
)
if
err
!=
nil
{
return
err
}
if
msg
.
Amount
.
Denom
!=
p
.
TokenIn
{
if
msg
.
Amount
.
Denom
!=
lb
p
.
TokenIn
{
return
errors
.
Wrap
(
errors
.
ErrInvalidCoins
,
"deposit denom must be the same as token in denom"
)
}
err
=
k
.
bank
.
SendCoins
FromAccountToModule
(
ctx
,
sender
,
osmolbp
.
ModuleName
,
sdk
.
NewCoins
(
msg
.
Amount
))
err
=
k
.
bank
.
SendCoins
(
ctx
,
sender
,
lbp
.
GetAddress
()
,
sdk
.
NewCoins
(
msg
.
Amount
))
if
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"user doesn't have enough tokens to stake"
)
}
v
,
found
,
err
:=
k
.
getUserVault
(
store
,
pool
IdBz
,
sender
)
v
,
found
,
err
:=
k
.
getUserVault
(
store
,
lbp
IdBz
,
sender
)
if
err
!=
nil
{
return
err
}
if
!
found
{
v
.
Accumulator
=
p
.
AccumulatorOut
v
.
Accumulator
=
lb
p
.
AccumulatorOut
v
.
Staked
=
sdk
.
ZeroInt
()
}
stakeInPool
(
&
p
,
&
v
,
msg
.
Amount
.
Amount
,
ctx
.
BlockTime
())
stakeInPool
(
&
lb
p
,
&
v
,
msg
.
Amount
.
Amount
,
ctx
.
BlockTime
())
k
.
savePool
(
store
,
pool
IdBz
,
&
p
)
k
.
saveUserVault
(
store
,
pool
IdBz
,
sender
,
&
v
)
k
.
savePool
(
store
,
lbp
IdBz
,
&
lb
p
)
k
.
saveUserVault
(
store
,
lbp
IdBz
,
sender
,
&
v
)
return
nil
}
...
...
@@ -118,7 +123,7 @@ func (k Keeper) withdraw(ctx sdk.Context, msg *proto.MsgWithdraw, store storetyp
if
err
!=
nil
{
return
err
}
p
,
poolIdBz
,
err
:=
k
.
get
Pool
(
store
,
msg
.
PoolId
)
p
,
poolIdBz
,
err
:=
k
.
get
LBP
(
store
,
msg
.
PoolId
)
if
err
!=
nil
{
return
err
}
...
...
This diff is collapsed.
Click to expand it.
x/osmolbp/keeper/store.go
+
2
-
2
View file @
58c5aab1
...
...
@@ -26,7 +26,7 @@ func (k *Keeper) savePool(modulestore storetypes.KVStore, id []byte, p *proto.LB
}
// returns pool, pool bytes id, error
func
(
k
*
Keeper
)
get
Pool
(
modulestore
storetypes
.
KVStore
,
id
uint64
)
(
proto
.
LBP
,
[]
byte
,
error
)
{
func
(
k
*
Keeper
)
get
LBP
(
modulestore
storetypes
.
KVStore
,
id
uint64
)
(
proto
.
LBP
,
[]
byte
,
error
)
{
store
:=
k
.
lbpStore
(
modulestore
)
idBz
:=
make
([]
byte
,
8
)
binary
.
BigEndian
.
PutUint64
(
idBz
,
id
)
...
...
@@ -39,7 +39,7 @@ func (k *Keeper) getPool(modulestore storetypes.KVStore, id uint64) (proto.LBP,
return
p
,
idBz
,
err
}
// returns
pool
, found (bool), error
// returns
user position
, found (bool), error
func
(
k
*
Keeper
)
getUserVault
(
modulestore
storetypes
.
KVStore
,
poolId
[]
byte
,
addr
sdk
.
AccAddress
)
(
proto
.
UserPosition
,
bool
,
error
)
{
store
:=
k
.
userVaultStore
(
modulestore
,
poolId
)
bz
:=
store
.
Get
(
addr
)
...
...
This diff is collapsed.
Click to expand it.
x/osmolbp/keys.go
+
10
-
0
View file @
58c5aab1
package
osmolbp
import
(
sdk
"github.com/cosmos/cosmos-sdk/types"
"github.com/osmosis-labs/osmosis/v043_temp/address"
)
const
(
// ModuleName is the module name constant used in many places
ModuleName
=
"osmolbp"
...
...
@@ -10,3 +15,8 @@ const (
// QuerierRoute is the querier route for authz
QuerierRoute
=
ModuleName
)
func
NewLbpAddress
(
lbpId
uint64
)
sdk
.
AccAddress
{
key
:=
append
([]
byte
(
"lbp"
),
sdk
.
Uint64ToBigEndian
(
lbpId
)
...
)
return
address
.
Module
(
ModuleName
,
key
)
}
This diff is collapsed.
Click to expand it.
x/osmolbp/proto/lbp.go
0 → 100644
+
17
-
0
View file @
58c5aab1
package
proto
import
(
"fmt"
sdk
"github.com/cosmos/cosmos-sdk/types"
)
// GetAddress returns the address of an lbp.
// If the lbp address is not bech32 valid, it panics.
func
(
lbp
LBP
)
GetAddress
()
sdk
.
AccAddress
{
addr
,
err
:=
sdk
.
AccAddressFromBech32
(
lbp
.
Address
)
if
err
!=
nil
{
panic
(
fmt
.
Sprintf
(
"could not bech32 decode address of lbp with id: %d"
,
lbp
.
Id
))
}
return
addr
}
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment