Commit fd703948 authored by pengjun's avatar pengjun

#627 删除清算罚金;增加借贷超时时间和超时清算

parent c9fbaf73
...@@ -139,4 +139,17 @@ func (c *Collateralize) deleteCollateralizeRecordStatus(collateralizelog *pty.Re ...@@ -139,4 +139,17 @@ func (c *Collateralize) deleteCollateralizeRecordStatus(collateralizelog *pty.Re
kv := &types.KeyValue{Key: key, Value: nil} kv := &types.KeyValue{Key: key, Value: nil}
kvs = append(kvs, kv) kvs = append(kvs, kv)
return kvs return kvs
}
// CheckReceiptExecOk return true to check if receipt ty is ok
func (c *Collateralize) CheckReceiptExecOk() bool {
return true
}
// ExecutorOrder 设置localdb的EnableRead
func (c *Collateralize) ExecutorOrder() int64 {
if types.IsFork(c.GetHeight(), "ForkLocalDBAccess") {
return drivers.ExecLocalSameTime
}
return c.DriverBase.ExecutorOrder()
} }
\ No newline at end of file
...@@ -23,13 +23,12 @@ const ( ...@@ -23,13 +23,12 @@ const (
) )
const ( const (
decimal = types.Coin // 1e8 decimal = types.Coin // 1e8
MaxDebtCeiling = 10000 // 最大借贷限额 MaxDebtCeiling = 10000 // 最大借贷限额
MinLiquidationRatio = 0.3 // 最小质押比 MinLiquidationRatio = 0.3 // 最小质押比
MaxStabilityFee = 1000 // 最大稳定费 MaxStabilityFee = 1000 // 最大稳定费
MaxLiquidationPenalty = 1000 // 最大清算罚金 PriceWarningRate = 1.3 // 价格提前预警率
MinCreatorAccount = 1000000 // 借贷创建者账户最小ccny余额 ExpireWarningTime = 3600 * 24 * 10 // 提前10天超时预警
PriceWarningRate = 1.3
) )
// CollateralizeDB def // CollateralizeDB def
...@@ -193,6 +192,18 @@ func getLatestLiquidationPrice(coll *pty.Collateralize) float32 { ...@@ -193,6 +192,18 @@ func getLatestLiquidationPrice(coll *pty.Collateralize) float32 {
return latest return latest
} }
func getLatestExpireTime(coll *pty.Collateralize) int64 {
var latest int64 = 0x7fffffffffffffff
for _, collRecord := range coll.BorrowRecords {
if collRecord.ExpireTime < latest {
latest = collRecord.ExpireTime
}
}
return latest
}
// CollateralizeCreate 创建借贷,持有一定数量ccny的用户可创建借贷,提供给其他用户借贷 // CollateralizeCreate 创建借贷,持有一定数量ccny的用户可创建借贷,提供给其他用户借贷
func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*types.Receipt, error) { func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
...@@ -204,9 +215,7 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -204,9 +215,7 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
// 参数校验 // 参数校验
if create.DebtCeiling > MaxDebtCeiling || create.DebtCeiling < 0 || if create.DebtCeiling > MaxDebtCeiling || create.DebtCeiling < 0 ||
create.LiquidationRatio < MinLiquidationRatio || create.LiquidationRatio >= 1 || create.LiquidationRatio < MinLiquidationRatio || create.LiquidationRatio >= 1 ||
create.StabilityFee > MaxStabilityFee || create.StabilityFee < 0 || create.StabilityFee > MaxStabilityFee || create.StabilityFee < 0 {
create.LiquidationPenalty > MaxLiquidationPenalty || create.LiquidationPenalty < 0 ||
create.TotalBalance < MinCreatorAccount {
return nil, pty.ErrRiskParam return nil, pty.ErrRiskParam
} }
...@@ -237,7 +246,6 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -237,7 +246,6 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
coll.LiquidationRatio = create.LiquidationRatio coll.LiquidationRatio = create.LiquidationRatio
coll.TotalBalance = create.TotalBalance coll.TotalBalance = create.TotalBalance
coll.DebtCeiling = create.DebtCeiling coll.DebtCeiling = create.DebtCeiling
coll.LiquidationPenalty = create.LiquidationPenalty
coll.StabilityFee = create.StabilityFee coll.StabilityFee = create.StabilityFee
coll.Balance = create.TotalBalance coll.Balance = create.TotalBalance
coll.CreateAddr = action.fromaddr coll.CreateAddr = action.fromaddr
...@@ -433,6 +441,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -433,6 +441,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
borrowRecord.DebtValue = borrow.Value borrowRecord.DebtValue = borrow.Value
borrowRecord.LiquidationPrice = coll.LiquidationRatio * lastPrice * pty.CollateralizePreLiquidationRatio borrowRecord.LiquidationPrice = coll.LiquidationRatio * lastPrice * pty.CollateralizePreLiquidationRatio
borrowRecord.Status = pty.CollateralizeUserStatusCreate borrowRecord.Status = pty.CollateralizeUserStatusCreate
borrowRecord.ExpireTime = action.blocktime + coll.Period
// 记录当前借贷的最高自动清算价格 // 记录当前借贷的最高自动清算价格
if coll.LatestLiquidationPrice < borrowRecord.LiquidationPrice { if coll.LatestLiquidationPrice < borrowRecord.LiquidationPrice {
...@@ -478,9 +487,12 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types. ...@@ -478,9 +487,12 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
// 查找借出记录 // 查找借出记录
var borrowRecord *pty.BorrowRecord var borrowRecord *pty.BorrowRecord
for _, record := range coll.BorrowRecords { var index int
for i, record := range coll.BorrowRecords {
if record.AccountAddr == action.fromaddr { if record.AccountAddr == action.fromaddr {
borrowRecord = record borrowRecord = record
index = i
break
} }
} }
...@@ -527,7 +539,10 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types. ...@@ -527,7 +539,10 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
// 保存 // 保存
coll.Balance += repay.Value coll.Balance += repay.Value
coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...)
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize) coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize)
coll.LatestExpireTime = getLatestExpireTime(&coll.Collateralize)
coll.Save(action.db) coll.Save(action.db)
kv = append(kv, coll.GetKVSet()...) kv = append(kv, coll.GetKVSet()...)
...@@ -612,6 +627,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty ...@@ -612,6 +627,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
// 记录当前借贷的最高自动清算价格 // 记录当前借贷的最高自动清算价格
coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize) coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize)
coll.LatestExpireTime = getLatestExpireTime(&coll.Collateralize)
coll.Save(action.db) coll.Save(action.db)
kv = append(kv, coll.GetKVSet()...) kv = append(kv, coll.GetKVSet()...)
...@@ -691,43 +707,105 @@ func (action *Action) systemLiquidation(coll *pty.Collateralize, price float32) ...@@ -691,43 +707,105 @@ func (action *Action) systemLiquidation(coll *pty.Collateralize, price float32)
var kv []*types.KeyValue var kv []*types.KeyValue
collDB := &CollateralizeDB{*coll} collDB := &CollateralizeDB{*coll}
for _, borrowRecord := range coll.BorrowRecords { for index, borrowRecord := range coll.BorrowRecords {
var preStatus int32 var preStatus int32
if borrowRecord.LiquidationPrice * PriceWarningRate >= price {
if borrowRecord.LiquidationPrice >= price { if borrowRecord.LiquidationPrice * PriceWarningRate < price {
getGuarantorAddr, err := getGuarantorAddr(action.db) continue
}
if borrowRecord.LiquidationPrice >= price {
getGuarantorAddr, err := getGuarantorAddr(action.db)
if err != nil {
if err != nil { if err != nil {
if err != nil { clog.Error("systemLiquidation", "getGuarantorAddr", err)
clog.Error("systemLiquidation", "getGuarantorAddr", err) continue
continue
}
} }
}
// 抵押物转移
receipt, err := action.coinsAccount.ExecTransferFrozen(action.fromaddr, getGuarantorAddr, action.execaddr, borrowRecord.CollateralValue)
if err != nil {
clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue, "err", err)
continue
}
logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...)
// 抵押物转移 // 借贷记录清算
receipt, err := action.coinsAccount.ExecTransferFrozen(action.fromaddr, getGuarantorAddr, action.execaddr, borrowRecord.CollateralValue) borrowRecord.LiquidateTime = action.blocktime
preStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusSystemLiquidate
coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...)
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
} else {
preStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusWarning
}
log := action.GetFeedReceiptLog(coll, borrowRecord, preStatus)
logs = append(logs, log)
}
// 保存
coll.LatestLiquidationPrice = getLatestLiquidationPrice(coll)
coll.LatestExpireTime = getLatestExpireTime(coll)
collDB.Save(action.db)
kv = append(kv, collDB.GetKVSet()...)
receipt := &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}
return receipt, nil
}
// 超时清算
func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt, error) {
var logs []*types.ReceiptLog
var kv []*types.KeyValue
collDB := &CollateralizeDB{*coll}
for index, borrowRecord := range coll.BorrowRecords {
var preStatus int32
if borrowRecord.ExpireTime - ExpireWarningTime > action.blocktime {
continue
}
if borrowRecord.ExpireTime >= action.blocktime {
getGuarantorAddr, err := getGuarantorAddr(action.db)
if err != nil {
if err != nil { if err != nil {
clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue, "err", err) clog.Error("systemLiquidation", "getGuarantorAddr", err)
continue continue
} }
logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...)
// 借贷记录清算
borrowRecord.LiquidateTime = action.blocktime
preStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusSystemLiquidate
} else {
preStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusWarning
} }
log := action.GetFeedReceiptLog(coll, borrowRecord, preStatus) // 抵押物转移
logs = append(logs, log) receipt, err := action.coinsAccount.ExecTransferFrozen(action.fromaddr, getGuarantorAddr, action.execaddr, borrowRecord.CollateralValue)
if err != nil {
clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue, "err", err)
continue
}
logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...)
// 借贷记录清算
borrowRecord.LiquidateTime = action.blocktime
preStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusSystemLiquidate
coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...)
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
} else {
preStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusWarning
} }
log := action.GetFeedReceiptLog(coll, borrowRecord, preStatus)
logs = append(logs, log)
} }
// 保存 // 保存
coll.LatestLiquidationPrice = getLatestLiquidationPrice(coll) coll.LatestLiquidationPrice = getLatestLiquidationPrice(coll)
coll.LatestExpireTime = getLatestExpireTime(coll)
collDB.Save(action.db) collDB.Save(action.db)
kv = append(kv, collDB.GetKVSet()...) kv = append(kv, collDB.GetKVSet()...)
...@@ -760,6 +838,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec ...@@ -760,6 +838,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
// 是否后台管理用户
if !isRightPriceFeed(action.fromaddr, action.db) { if !isRightPriceFeed(action.fromaddr, action.db) {
clog.Error("CollateralizePriceFeed", "addr", action.fromaddr, "error", "Address has no permission to feed price") clog.Error("CollateralizePriceFeed", "addr", action.fromaddr, "error", "Address has no permission to feed price")
return nil, pty.ErrPriceFeedPermissionDeny return nil, pty.ErrPriceFeedPermissionDeny
...@@ -784,7 +863,8 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec ...@@ -784,7 +863,8 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
continue continue
} }
if coll.LatestLiquidationPrice >= price { // 系统清算判断
if coll.LatestLiquidationPrice * PriceWarningRate >= price {
receipt, err := action.systemLiquidation(coll, price) receipt, err := action.systemLiquidation(coll, price)
if err != nil { if err != nil {
clog.Error("CollateralizePriceFeed", "Collateralize ID", coll.CollateralizeId, "system liquidation error", err) clog.Error("CollateralizePriceFeed", "Collateralize ID", coll.CollateralizeId, "system liquidation error", err)
...@@ -793,6 +873,17 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec ...@@ -793,6 +873,17 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
logs = append(logs, receipt.Logs...) logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
} }
// 超时清算判断
if coll.LatestExpireTime - ExpireWarningTime <= action.blocktime {
receipt, err := action.expireLiquidation(coll)
if err != nil {
clog.Error("CollateralizePriceFeed", "Collateralize ID", coll.CollateralizeId, "expire liquidation error", err)
continue
}
logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...)
}
} }
var priceRecord pty.AssetPriceRecord var priceRecord pty.AssetPriceRecord
......
...@@ -21,7 +21,6 @@ func (c *Collateralize) Query_CollateralizeInfoByID(req *pty.ReqCollateralizeInf ...@@ -21,7 +21,6 @@ func (c *Collateralize) Query_CollateralizeInfoByID(req *pty.ReqCollateralizeInf
TotalBalance: coll.TotalBalance, TotalBalance: coll.TotalBalance,
DebtCeiling: coll.DebtCeiling, DebtCeiling: coll.DebtCeiling,
LiquidationRatio: coll.LiquidationRatio, LiquidationRatio: coll.LiquidationRatio,
LiquidationPenalty: coll.LiquidationPenalty,
StabilityFee: coll.StabilityFee, StabilityFee: coll.StabilityFee,
CreateAddr: coll.CreateAddr, CreateAddr: coll.CreateAddr,
Balance: coll.Balance, Balance: coll.Balance,
...@@ -42,7 +41,6 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn ...@@ -42,7 +41,6 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn
TotalBalance: coll.TotalBalance, TotalBalance: coll.TotalBalance,
DebtCeiling: coll.DebtCeiling, DebtCeiling: coll.DebtCeiling,
LiquidationRatio: coll.LiquidationRatio, LiquidationRatio: coll.LiquidationRatio,
LiquidationPenalty: coll.LiquidationPenalty,
StabilityFee: coll.StabilityFee, StabilityFee: coll.StabilityFee,
CreateAddr: coll.CreateAddr, CreateAddr: coll.CreateAddr,
Balance: coll.Balance, Balance: coll.Balance,
...@@ -89,6 +87,7 @@ func (c *Collateralize) Query_CollateralizeBorrowInfoByAddr(req *pty.ReqCollater ...@@ -89,6 +87,7 @@ func (c *Collateralize) Query_CollateralizeBorrowInfoByAddr(req *pty.ReqCollater
return nil, err return nil, err
} }
ret := &pty.RepCollateralizeBorrowInfos{}
for _, record := range records { for _, record := range records {
if record.CollateralizeId == req.CollateralizeId { if record.CollateralizeId == req.CollateralizeId {
coll, err := queryCollateralizeByID(c.GetStateDB(), record.CollateralizeId) coll, err := queryCollateralizeByID(c.GetStateDB(), record.CollateralizeId)
...@@ -99,9 +98,13 @@ func (c *Collateralize) Query_CollateralizeBorrowInfoByAddr(req *pty.ReqCollater ...@@ -99,9 +98,13 @@ func (c *Collateralize) Query_CollateralizeBorrowInfoByAddr(req *pty.ReqCollater
for _, borrowRecord := range coll.BorrowRecords { for _, borrowRecord := range coll.BorrowRecords {
if borrowRecord.AccountAddr == req.Addr { if borrowRecord.AccountAddr == req.Addr {
ret := &pty.RepCollateralizeBorrowInfo{} ret.Record = append(ret.Record, borrowRecord)
ret.Record = borrowRecord }
return ret, nil }
for _, borrowRecord := range coll.InvalidRecords {
if borrowRecord.AccountAddr == req.Addr {
ret.Record = append(ret.Record, borrowRecord)
} }
} }
} }
...@@ -130,6 +133,12 @@ func (c *Collateralize) Query_CollateralizeBorrowInfoByStatus(req *pty.ReqCollat ...@@ -130,6 +133,12 @@ func (c *Collateralize) Query_CollateralizeBorrowInfoByStatus(req *pty.ReqCollat
ret.Record = append(ret.Record, borrowRecord) ret.Record = append(ret.Record, borrowRecord)
} }
} }
for _, borrowRecord := range coll.InvalidRecords {
if borrowRecord.Status == req.Status {
ret.Record = append(ret.Record, borrowRecord)
}
}
} }
return ret, nil return ret, nil
......
...@@ -4,18 +4,20 @@ package types; ...@@ -4,18 +4,20 @@ package types;
// 借贷信息 // 借贷信息
message Collateralize { message Collateralize {
string collateralizeId = 1; //借贷ID,一期借贷对应一个ID string collateralizeId = 1; //借贷ID,一期借贷对应一个ID
int64 totalBalance = 2; //当期可借贷的总金额(ccny) int64 totalBalance = 2; //当期可借贷的总金额(ccny)
int64 debtCeiling = 3; //单用户可借出的限额(ccny) int64 debtCeiling = 3; //单用户可借出的限额(ccny)
float liquidationRatio = 4; //清算比例 float liquidationRatio = 4; //清算比例
int64 stabilityFee = 5; //稳定费 int64 stabilityFee = 5; //稳定费
int64 liquidationPenalty = 6; //清算罚金 string createAddr = 6; //创建人地址
string createAddr = 7; //创建人地址 int64 balance = 7; //剩余可借贷金额(ccny)
int64 balance = 8; //剩余可借贷金额(ccny) repeated BorrowRecord borrowRecords = 8; //借贷记录
repeated BorrowRecord borrowRecords = 9; //借贷记录 repeated BorrowRecord InvalidRecords = 9; //失效的借贷记录
int32 status = 10;//当期借贷的状态,是否关闭 int32 status = 10;//当期借贷的状态,是否关闭
int32 collType = 11;//质押资产类型(1,bty,2,btc,3,eth...) int32 collType = 11;//质押资产类型(1,bty,2,btc,3,eth...)
float latestLiquidationPrice = 12;//最大清算价格 float latestLiquidationPrice = 12;//最高清算价格
int64 period = 13;//借贷最大期限
int64 latestExpireTime = 14;//最近超期时间
} }
// 借出记录 // 借出记录
...@@ -28,6 +30,7 @@ message BorrowRecord { ...@@ -28,6 +30,7 @@ message BorrowRecord {
float liquidationPrice = 6; //抵押物清算价格 float liquidationPrice = 6; //抵押物清算价格
int32 status = 7; //抵押状态,是否被清算 int32 status = 7; //抵押状态,是否被清算
int64 liquidateTime = 8; //清算时间 int64 liquidateTime = 8; //清算时间
int64 expireTime = 9; //超时清算时间
} }
// 资产价格记录 // 资产价格记录
...@@ -57,8 +60,7 @@ message CollateralizeCreate { ...@@ -57,8 +60,7 @@ message CollateralizeCreate {
int64 debtCeiling = 1; //单用户可借出的限额(ccny) int64 debtCeiling = 1; //单用户可借出的限额(ccny)
float liquidationRatio = 2; //清算比例 float liquidationRatio = 2; //清算比例
int64 stabilityFee = 3; //稳定费 int64 stabilityFee = 3; //稳定费
int64 liquidationPenalty = 4; //清算罚金 int64 totalBalance = 4; //可借贷总金额
int64 totalBalance = 5; //可借贷总金额
} }
// 质押借出 // 质押借出
...@@ -162,11 +164,6 @@ message ReqCollateralizeBorrowInfoByAddr { ...@@ -162,11 +164,6 @@ message ReqCollateralizeBorrowInfoByAddr {
string addr = 2; string addr = 2;
} }
// 返回借贷记录
message RepCollateralizeBorrowInfo {
BorrowRecord record = 1;
}
// 根据状态和借贷ID混合查询具体借贷记录 // 根据状态和借贷ID混合查询具体借贷记录
message ReqCollateralizeBorrowInfoByStatus { message ReqCollateralizeBorrowInfoByStatus {
string collateralizeId = 1; string collateralizeId = 1;
......
...@@ -137,7 +137,6 @@ func CreateRawCollateralizeCreateTx(parm *CollateralizeCreateTx) (*types.Transac ...@@ -137,7 +137,6 @@ func CreateRawCollateralizeCreateTx(parm *CollateralizeCreateTx) (*types.Transac
DebtCeiling: parm.DebtCeiling, DebtCeiling: parm.DebtCeiling,
LiquidationRatio: parm.LiquidationRatio, LiquidationRatio: parm.LiquidationRatio,
StabilityFee: parm.StabilityFee, StabilityFee: parm.StabilityFee,
LiquidationPenalty: parm.LiquidationPenalty,
TotalBalance: parm.TotalBalance, TotalBalance: parm.TotalBalance,
} }
create := &CollateralizeAction{ create := &CollateralizeAction{
......
...@@ -27,13 +27,15 @@ type Collateralize struct { ...@@ -27,13 +27,15 @@ type Collateralize struct {
DebtCeiling int64 `protobuf:"varint,3,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"` DebtCeiling int64 `protobuf:"varint,3,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"`
LiquidationRatio float32 `protobuf:"fixed32,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"` LiquidationRatio float32 `protobuf:"fixed32,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFee int64 `protobuf:"varint,5,opt,name=stabilityFee,proto3" json:"stabilityFee,omitempty"` StabilityFee int64 `protobuf:"varint,5,opt,name=stabilityFee,proto3" json:"stabilityFee,omitempty"`
LiquidationPenalty int64 `protobuf:"varint,6,opt,name=liquidationPenalty,proto3" json:"liquidationPenalty,omitempty"` CreateAddr string `protobuf:"bytes,6,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
CreateAddr string `protobuf:"bytes,7,opt,name=createAddr,proto3" json:"createAddr,omitempty"` Balance int64 `protobuf:"varint,7,opt,name=balance,proto3" json:"balance,omitempty"`
Balance int64 `protobuf:"varint,8,opt,name=balance,proto3" json:"balance,omitempty"` BorrowRecords []*BorrowRecord `protobuf:"bytes,8,rep,name=borrowRecords,proto3" json:"borrowRecords,omitempty"`
BorrowRecords []*BorrowRecord `protobuf:"bytes,9,rep,name=borrowRecords,proto3" json:"borrowRecords,omitempty"` InvalidRecords []*BorrowRecord `protobuf:"bytes,9,rep,name=InvalidRecords,proto3" json:"InvalidRecords,omitempty"`
Status int32 `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"`
CollType int32 `protobuf:"varint,11,opt,name=collType,proto3" json:"collType,omitempty"` CollType int32 `protobuf:"varint,11,opt,name=collType,proto3" json:"collType,omitempty"`
LatestLiquidationPrice float32 `protobuf:"fixed32,12,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"` LatestLiquidationPrice float32 `protobuf:"fixed32,12,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"`
Period int64 `protobuf:"varint,13,opt,name=period,proto3" json:"period,omitempty"`
LatestExpireTime int64 `protobuf:"varint,14,opt,name=latestExpireTime,proto3" json:"latestExpireTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -99,13 +101,6 @@ func (m *Collateralize) GetStabilityFee() int64 { ...@@ -99,13 +101,6 @@ func (m *Collateralize) GetStabilityFee() int64 {
return 0 return 0
} }
func (m *Collateralize) GetLiquidationPenalty() int64 {
if m != nil {
return m.LiquidationPenalty
}
return 0
}
func (m *Collateralize) GetCreateAddr() string { func (m *Collateralize) GetCreateAddr() string {
if m != nil { if m != nil {
return m.CreateAddr return m.CreateAddr
...@@ -127,6 +122,13 @@ func (m *Collateralize) GetBorrowRecords() []*BorrowRecord { ...@@ -127,6 +122,13 @@ func (m *Collateralize) GetBorrowRecords() []*BorrowRecord {
return nil return nil
} }
func (m *Collateralize) GetInvalidRecords() []*BorrowRecord {
if m != nil {
return m.InvalidRecords
}
return nil
}
func (m *Collateralize) GetStatus() int32 { func (m *Collateralize) GetStatus() int32 {
if m != nil { if m != nil {
return m.Status return m.Status
...@@ -148,6 +150,20 @@ func (m *Collateralize) GetLatestLiquidationPrice() float32 { ...@@ -148,6 +150,20 @@ func (m *Collateralize) GetLatestLiquidationPrice() float32 {
return 0 return 0
} }
func (m *Collateralize) GetPeriod() int64 {
if m != nil {
return m.Period
}
return 0
}
func (m *Collateralize) GetLatestExpireTime() int64 {
if m != nil {
return m.LatestExpireTime
}
return 0
}
// 借出记录 // 借出记录
type BorrowRecord struct { type BorrowRecord struct {
AccountAddr string `protobuf:"bytes,1,opt,name=accountAddr,proto3" json:"accountAddr,omitempty"` AccountAddr string `protobuf:"bytes,1,opt,name=accountAddr,proto3" json:"accountAddr,omitempty"`
...@@ -158,6 +174,7 @@ type BorrowRecord struct { ...@@ -158,6 +174,7 @@ type BorrowRecord struct {
LiquidationPrice float32 `protobuf:"fixed32,6,opt,name=liquidationPrice,proto3" json:"liquidationPrice,omitempty"` LiquidationPrice float32 `protobuf:"fixed32,6,opt,name=liquidationPrice,proto3" json:"liquidationPrice,omitempty"`
Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,7,opt,name=status,proto3" json:"status,omitempty"`
LiquidateTime int64 `protobuf:"varint,8,opt,name=liquidateTime,proto3" json:"liquidateTime,omitempty"` LiquidateTime int64 `protobuf:"varint,8,opt,name=liquidateTime,proto3" json:"liquidateTime,omitempty"`
ExpireTime int64 `protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -244,6 +261,13 @@ func (m *BorrowRecord) GetLiquidateTime() int64 { ...@@ -244,6 +261,13 @@ func (m *BorrowRecord) GetLiquidateTime() int64 {
return 0 return 0
} }
func (m *BorrowRecord) GetExpireTime() int64 {
if m != nil {
return m.ExpireTime
}
return 0
}
// 资产价格记录 // 资产价格记录
type AssetPriceRecord struct { type AssetPriceRecord struct {
RecordTime int64 `protobuf:"varint,1,opt,name=recordTime,proto3" json:"recordTime,omitempty"` RecordTime int64 `protobuf:"varint,1,opt,name=recordTime,proto3" json:"recordTime,omitempty"`
...@@ -470,8 +494,7 @@ type CollateralizeCreate struct { ...@@ -470,8 +494,7 @@ type CollateralizeCreate struct {
DebtCeiling int64 `protobuf:"varint,1,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"` DebtCeiling int64 `protobuf:"varint,1,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"`
LiquidationRatio float32 `protobuf:"fixed32,2,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"` LiquidationRatio float32 `protobuf:"fixed32,2,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFee int64 `protobuf:"varint,3,opt,name=stabilityFee,proto3" json:"stabilityFee,omitempty"` StabilityFee int64 `protobuf:"varint,3,opt,name=stabilityFee,proto3" json:"stabilityFee,omitempty"`
LiquidationPenalty int64 `protobuf:"varint,4,opt,name=liquidationPenalty,proto3" json:"liquidationPenalty,omitempty"` TotalBalance int64 `protobuf:"varint,4,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
TotalBalance int64 `protobuf:"varint,5,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
...@@ -523,13 +546,6 @@ func (m *CollateralizeCreate) GetStabilityFee() int64 { ...@@ -523,13 +546,6 @@ func (m *CollateralizeCreate) GetStabilityFee() int64 {
return 0 return 0
} }
func (m *CollateralizeCreate) GetLiquidationPenalty() int64 {
if m != nil {
return m.LiquidationPenalty
}
return 0
}
func (m *CollateralizeCreate) GetTotalBalance() int64 { func (m *CollateralizeCreate) GetTotalBalance() int64 {
if m != nil { if m != nil {
return m.TotalBalance return m.TotalBalance
...@@ -1345,47 +1361,7 @@ func (m *ReqCollateralizeBorrowInfoByAddr) GetAddr() string { ...@@ -1345,47 +1361,7 @@ func (m *ReqCollateralizeBorrowInfoByAddr) GetAddr() string {
return "" return ""
} }
// 返回借贷记录 // 根据状态和借贷ID混合查询具体借贷记录
type RepCollateralizeBorrowInfo struct {
Record *BorrowRecord `protobuf:"bytes,1,opt,name=record,proto3" json:"record,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RepCollateralizeBorrowInfo) Reset() { *m = RepCollateralizeBorrowInfo{} }
func (m *RepCollateralizeBorrowInfo) String() string { return proto.CompactTextString(m) }
func (*RepCollateralizeBorrowInfo) ProtoMessage() {}
func (*RepCollateralizeBorrowInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_a988fb4a61381972, []int{21}
}
func (m *RepCollateralizeBorrowInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RepCollateralizeBorrowInfo.Unmarshal(m, b)
}
func (m *RepCollateralizeBorrowInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RepCollateralizeBorrowInfo.Marshal(b, m, deterministic)
}
func (m *RepCollateralizeBorrowInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_RepCollateralizeBorrowInfo.Merge(m, src)
}
func (m *RepCollateralizeBorrowInfo) XXX_Size() int {
return xxx_messageInfo_RepCollateralizeBorrowInfo.Size(m)
}
func (m *RepCollateralizeBorrowInfo) XXX_DiscardUnknown() {
xxx_messageInfo_RepCollateralizeBorrowInfo.DiscardUnknown(m)
}
var xxx_messageInfo_RepCollateralizeBorrowInfo proto.InternalMessageInfo
func (m *RepCollateralizeBorrowInfo) GetRecord() *BorrowRecord {
if m != nil {
return m.Record
}
return nil
}
// 根据地址和借贷ID混合查询具体借贷记录
type ReqCollateralizeBorrowInfoByStatus struct { type ReqCollateralizeBorrowInfoByStatus struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"` CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
...@@ -1398,7 +1374,7 @@ func (m *ReqCollateralizeBorrowInfoByStatus) Reset() { *m = ReqCollatera ...@@ -1398,7 +1374,7 @@ func (m *ReqCollateralizeBorrowInfoByStatus) Reset() { *m = ReqCollatera
func (m *ReqCollateralizeBorrowInfoByStatus) String() string { return proto.CompactTextString(m) } func (m *ReqCollateralizeBorrowInfoByStatus) String() string { return proto.CompactTextString(m) }
func (*ReqCollateralizeBorrowInfoByStatus) ProtoMessage() {} func (*ReqCollateralizeBorrowInfoByStatus) ProtoMessage() {}
func (*ReqCollateralizeBorrowInfoByStatus) Descriptor() ([]byte, []int) { func (*ReqCollateralizeBorrowInfoByStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_a988fb4a61381972, []int{22} return fileDescriptor_a988fb4a61381972, []int{21}
} }
func (m *ReqCollateralizeBorrowInfoByStatus) XXX_Unmarshal(b []byte) error { func (m *ReqCollateralizeBorrowInfoByStatus) XXX_Unmarshal(b []byte) error {
...@@ -1445,7 +1421,7 @@ func (m *RepCollateralizeBorrowInfos) Reset() { *m = RepCollateralizeBor ...@@ -1445,7 +1421,7 @@ func (m *RepCollateralizeBorrowInfos) Reset() { *m = RepCollateralizeBor
func (m *RepCollateralizeBorrowInfos) String() string { return proto.CompactTextString(m) } func (m *RepCollateralizeBorrowInfos) String() string { return proto.CompactTextString(m) }
func (*RepCollateralizeBorrowInfos) ProtoMessage() {} func (*RepCollateralizeBorrowInfos) ProtoMessage() {}
func (*RepCollateralizeBorrowInfos) Descriptor() ([]byte, []int) { func (*RepCollateralizeBorrowInfos) Descriptor() ([]byte, []int) {
return fileDescriptor_a988fb4a61381972, []int{23} return fileDescriptor_a988fb4a61381972, []int{22}
} }
func (m *RepCollateralizeBorrowInfos) XXX_Unmarshal(b []byte) error { func (m *RepCollateralizeBorrowInfos) XXX_Unmarshal(b []byte) error {
...@@ -1495,7 +1471,6 @@ func init() { ...@@ -1495,7 +1471,6 @@ func init() {
proto.RegisterType((*ReqCollateralizeByAddr)(nil), "types.ReqCollateralizeByAddr") proto.RegisterType((*ReqCollateralizeByAddr)(nil), "types.ReqCollateralizeByAddr")
proto.RegisterType((*RepCollateralizeIDs)(nil), "types.RepCollateralizeIDs") proto.RegisterType((*RepCollateralizeIDs)(nil), "types.RepCollateralizeIDs")
proto.RegisterType((*ReqCollateralizeBorrowInfoByAddr)(nil), "types.ReqCollateralizeBorrowInfoByAddr") proto.RegisterType((*ReqCollateralizeBorrowInfoByAddr)(nil), "types.ReqCollateralizeBorrowInfoByAddr")
proto.RegisterType((*RepCollateralizeBorrowInfo)(nil), "types.RepCollateralizeBorrowInfo")
proto.RegisterType((*ReqCollateralizeBorrowInfoByStatus)(nil), "types.ReqCollateralizeBorrowInfoByStatus") proto.RegisterType((*ReqCollateralizeBorrowInfoByStatus)(nil), "types.ReqCollateralizeBorrowInfoByStatus")
proto.RegisterType((*RepCollateralizeBorrowInfos)(nil), "types.RepCollateralizeBorrowInfos") proto.RegisterType((*RepCollateralizeBorrowInfos)(nil), "types.RepCollateralizeBorrowInfos")
} }
...@@ -1503,67 +1478,70 @@ func init() { ...@@ -1503,67 +1478,70 @@ func init() {
func init() { proto.RegisterFile("collateralize.proto", fileDescriptor_a988fb4a61381972) } func init() { proto.RegisterFile("collateralize.proto", fileDescriptor_a988fb4a61381972) }
var fileDescriptor_a988fb4a61381972 = []byte{ var fileDescriptor_a988fb4a61381972 = []byte{
// 990 bytes of a gzipped FileDescriptorProto // 1037 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0xcd, 0x6e, 0xe4, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xdd, 0x6e, 0xe3, 0x44,
0x10, 0x5e, 0xdb, 0xf3, 0xb3, 0x53, 0x93, 0x40, 0xe8, 0x84, 0xc8, 0x84, 0x68, 0x35, 0x6a, 0x21, 0x14, 0x5e, 0xdb, 0xf9, 0x69, 0x4e, 0xb6, 0xa5, 0x4c, 0x4b, 0x65, 0x4a, 0xb5, 0x8a, 0x46, 0x48,
0x31, 0x02, 0x34, 0x12, 0xc3, 0x0a, 0xc1, 0x05, 0x91, 0xcc, 0x6a, 0xb5, 0x83, 0xf6, 0x80, 0xbc, 0x44, 0x80, 0x22, 0x11, 0x56, 0x08, 0x84, 0x84, 0x68, 0xb3, 0xac, 0x36, 0x68, 0x2f, 0x90, 0xb7,
0x01, 0x71, 0x41, 0xc2, 0x63, 0x77, 0xc0, 0x92, 0xd7, 0xf6, 0xb6, 0x7b, 0x16, 0xcc, 0x23, 0x21, 0x20, 0x6e, 0x90, 0x70, 0xec, 0x29, 0x58, 0xf2, 0xda, 0xde, 0xf1, 0xa4, 0xac, 0x79, 0x25, 0xb8,
0xae, 0x3c, 0x0d, 0x17, 0x4e, 0x3c, 0x00, 0x4f, 0x80, 0xba, 0xba, 0x1d, 0xbb, 0xdb, 0x9e, 0x30, 0xe1, 0x82, 0x97, 0xe0, 0x41, 0x78, 0x00, 0x9e, 0x00, 0xcd, 0x99, 0x49, 0xec, 0x19, 0x3b, 0x55,
0x4b, 0x8e, 0x7b, 0x89, 0xa6, 0xeb, 0xa7, 0xab, 0xea, 0xab, 0xaf, 0xab, 0x1c, 0x38, 0x8e, 0xf2, 0x96, 0xbd, 0xe1, 0x26, 0xf2, 0x9c, 0x9f, 0x39, 0xe7, 0x7c, 0xe7, 0x9b, 0x33, 0x13, 0x38, 0x89,
0x34, 0x0d, 0x05, 0xe3, 0x61, 0x9a, 0xfc, 0xca, 0x16, 0x05, 0xcf, 0x45, 0x4e, 0x86, 0xa2, 0x2a, 0xf2, 0x34, 0x0d, 0x05, 0xe3, 0x61, 0x9a, 0xfc, 0xca, 0x66, 0x05, 0xcf, 0x45, 0x4e, 0xfa, 0xa2,
0x58, 0x49, 0xff, 0xf2, 0xe0, 0x70, 0xd5, 0x56, 0x93, 0x39, 0xbc, 0x69, 0xd8, 0xaf, 0x63, 0xdf, 0x2a, 0x58, 0x49, 0xff, 0xe8, 0xc1, 0xe1, 0xa2, 0xa9, 0x26, 0x53, 0x78, 0xc3, 0xb0, 0x5f, 0xc6,
0x99, 0x39, 0xf3, 0x49, 0x60, 0x8b, 0x09, 0x85, 0x03, 0x91, 0x8b, 0x30, 0xbd, 0x0c, 0xd3, 0x30, 0xbe, 0x33, 0x71, 0xa6, 0xa3, 0xc0, 0x16, 0x13, 0x0a, 0xf7, 0x45, 0x2e, 0xc2, 0xf4, 0x2a, 0x4c,
0x8b, 0x98, 0xef, 0xce, 0x9c, 0xb9, 0x17, 0x18, 0x32, 0x32, 0x83, 0x69, 0xcc, 0x36, 0x62, 0xc5, 0xc3, 0x2c, 0x62, 0xbe, 0x3b, 0x71, 0xa6, 0x5e, 0x60, 0xc8, 0xc8, 0x04, 0xc6, 0x31, 0x5b, 0x89,
0x92, 0x34, 0xc9, 0x7e, 0xf4, 0x3d, 0x34, 0x69, 0x8b, 0xc8, 0x07, 0x70, 0x94, 0x26, 0x2f, 0xb6, 0x05, 0x4b, 0xd2, 0x24, 0xfb, 0xc9, 0xf7, 0xd0, 0xa4, 0x29, 0x22, 0xef, 0xc3, 0x71, 0x9a, 0xbc,
0x49, 0x1c, 0x8a, 0x24, 0xcf, 0x02, 0xf9, 0xd7, 0x1f, 0xcc, 0x9c, 0xb9, 0x1b, 0x74, 0xe4, 0x32, 0x58, 0x27, 0x71, 0x28, 0x92, 0x3c, 0x0b, 0xe4, 0xaf, 0xdf, 0x9b, 0x38, 0x53, 0x37, 0x68, 0xc9,
0x62, 0x29, 0xc2, 0x4d, 0x92, 0x26, 0xa2, 0x7a, 0xcc, 0x98, 0x3f, 0x54, 0x11, 0xdb, 0x32, 0xb2, 0x65, 0xc4, 0x52, 0x84, 0xab, 0x24, 0x4d, 0x44, 0xf5, 0x98, 0x31, 0xbf, 0xaf, 0x22, 0x36, 0x65,
0x00, 0xd2, 0xf2, 0xfb, 0x9a, 0x65, 0x61, 0x2a, 0x2a, 0x7f, 0x84, 0x96, 0x3d, 0x1a, 0xf2, 0x00, 0xe4, 0x01, 0x40, 0xc4, 0x59, 0x28, 0xd8, 0x65, 0x1c, 0x73, 0x7f, 0x80, 0xa9, 0x37, 0x24, 0xc4,
0x20, 0xe2, 0x2c, 0x14, 0xec, 0x22, 0x8e, 0xb9, 0x3f, 0xc6, 0x52, 0x5b, 0x12, 0xe2, 0xc3, 0x78, 0x87, 0xe1, 0x4a, 0x27, 0x3c, 0x44, 0xf7, 0xcd, 0x92, 0x7c, 0x06, 0x87, 0xab, 0x9c, 0xf3, 0xfc,
0xa3, 0x0b, 0xbc, 0x8f, 0x97, 0xd4, 0x47, 0xf2, 0x39, 0x1c, 0x6e, 0x72, 0xce, 0xf3, 0x9f, 0x03, 0x97, 0x80, 0x45, 0x39, 0x8f, 0x4b, 0xff, 0x60, 0xe2, 0x4d, 0xc7, 0xf3, 0x93, 0x19, 0x42, 0x35,
0x16, 0xe5, 0x3c, 0x2e, 0xfd, 0xc9, 0xcc, 0x9b, 0x4f, 0x97, 0xc7, 0x0b, 0x84, 0x76, 0x71, 0xd9, 0xbb, 0x6a, 0xe8, 0x02, 0xd3, 0x92, 0x7c, 0x0e, 0x47, 0xcb, 0xec, 0x36, 0x4c, 0x93, 0x78, 0xe3,
0xd2, 0x05, 0xa6, 0x25, 0x39, 0x85, 0x51, 0x29, 0x42, 0xb1, 0x2d, 0x7d, 0x98, 0x39, 0xf3, 0x61, 0x3b, 0xda, 0xed, 0x6b, 0x99, 0x92, 0x33, 0x18, 0x94, 0x22, 0x14, 0xeb, 0xd2, 0x87, 0x89, 0x33,
0xa0, 0x4f, 0xe4, 0x0c, 0xee, 0x4b, 0x94, 0xaf, 0xaa, 0x82, 0xf9, 0x53, 0xd4, 0xdc, 0x9c, 0xc9, 0xed, 0x07, 0x7a, 0x45, 0xce, 0xe1, 0x40, 0x42, 0x7e, 0x5d, 0x15, 0xcc, 0x1f, 0xa3, 0x66, 0xbb,
0xa7, 0x70, 0x2a, 0xe1, 0x2f, 0xc5, 0xd3, 0x56, 0x11, 0x3c, 0x89, 0x98, 0x7f, 0x80, 0x70, 0xed, 0x26, 0x9f, 0xc0, 0x99, 0xec, 0x45, 0x29, 0x9e, 0xd6, 0x18, 0x7d, 0xc3, 0x93, 0x88, 0xf9, 0xf7,
0xd0, 0xd2, 0xdf, 0x5c, 0x38, 0x68, 0xe7, 0x22, 0x7b, 0x12, 0x46, 0x51, 0xbe, 0xcd, 0x04, 0x96, 0x11, 0xbb, 0x1d, 0x5a, 0x19, 0xab, 0x60, 0x3c, 0xc9, 0x63, 0xff, 0x10, 0x8b, 0xd7, 0x2b, 0xec,
0xac, 0xba, 0xdb, 0x16, 0x91, 0x73, 0x98, 0x94, 0x22, 0xe4, 0xe2, 0x2a, 0x79, 0x5e, 0xb7, 0xb5, 0x02, 0x7a, 0x7c, 0xf5, 0xb2, 0x48, 0x38, 0xbb, 0x4e, 0x9e, 0x33, 0xff, 0x08, 0x2d, 0x5a, 0x72,
0x11, 0x98, 0x0c, 0xf9, 0x36, 0x4c, 0xb7, 0x4c, 0xf7, 0xd5, 0x16, 0x9b, 0x96, 0x2a, 0x57, 0xd5, 0xfa, 0x97, 0x0b, 0xf7, 0x9b, 0x05, 0xc9, 0x26, 0x87, 0x51, 0x94, 0xaf, 0x33, 0x81, 0x98, 0x2b,
0x5a, 0x5b, 0x2c, 0x23, 0x4a, 0x52, 0xa8, 0xdb, 0x54, 0x5b, 0x1b, 0x81, 0xc5, 0x11, 0x75, 0xd1, 0xba, 0x34, 0x45, 0xe4, 0x02, 0x46, 0xa5, 0x08, 0xb9, 0xc0, 0x7d, 0x15, 0x4f, 0x6a, 0x81, 0x49,
0xa8, 0xc3, 0x11, 0x75, 0x53, 0x03, 0xed, 0xd8, 0x80, 0xf6, 0x3d, 0x38, 0xac, 0x6d, 0x19, 0xd6, 0xb9, 0xef, 0xc2, 0x74, 0xcd, 0x34, 0x51, 0x6c, 0xb1, 0x69, 0xa9, 0xea, 0x55, 0x5c, 0xb1, 0xc5,
0xa5, 0xba, 0x69, 0x0a, 0xe9, 0xef, 0x0e, 0x1c, 0x5d, 0x94, 0x25, 0x13, 0x78, 0x99, 0x06, 0xec, 0x32, 0xa2, 0x64, 0x99, 0xda, 0x4d, 0xf1, 0xa4, 0x16, 0x58, 0xa4, 0x53, 0x1b, 0x0d, 0x5a, 0xa4,
0x01, 0x00, 0xc7, 0x5f, 0xe8, 0xe7, 0xa0, 0x5f, 0x4b, 0x22, 0xbb, 0xb6, 0x11, 0x95, 0x4a, 0xcb, 0xdb, 0x42, 0xa6, 0xdb, 0x33, 0x34, 0xda, 0xf3, 0x2e, 0x1c, 0x6e, 0x6c, 0x15, 0x5e, 0x07, 0x18,
0xc5, 0xb4, 0x6e, 0xce, 0x4a, 0x17, 0x29, 0x9d, 0x57, 0xeb, 0xa2, 0x1b, 0x1d, 0x13, 0x3f, 0xb5, 0xc5, 0x14, 0x4a, 0x3a, 0xb2, 0x1a, 0xd2, 0x11, 0x9a, 0x34, 0x24, 0xf4, 0x77, 0x07, 0x8e, 0x2f,
0x71, 0xb9, 0x39, 0xcb, 0x74, 0x0b, 0xae, 0x13, 0xc0, 0xb0, 0x0a, 0x14, 0x53, 0x48, 0xff, 0x76, 0xcb, 0x92, 0x09, 0x0c, 0xa6, 0x01, 0x7d, 0x00, 0xc0, 0xf1, 0x0b, 0x9d, 0x1c, 0xe5, 0x54, 0x4b,
0xe1, 0xd8, 0x78, 0xbe, 0x17, 0x91, 0x44, 0x82, 0x3c, 0x84, 0x91, 0xa2, 0x30, 0x66, 0x3b, 0x5d, 0x24, 0x33, 0x56, 0xa2, 0x52, 0x69, 0xbb, 0x98, 0xf6, 0x76, 0xad, 0x74, 0x91, 0xd2, 0x79, 0x1b,
0x9e, 0x69, 0x4e, 0x1a, 0xb6, 0x2b, 0xb4, 0x78, 0x72, 0x2f, 0xd0, 0xb6, 0xd2, 0x4b, 0xd1, 0x14, 0x5d, 0xb4, 0xd5, 0x31, 0xf1, 0x73, 0x13, 0xb7, 0xed, 0x5a, 0x96, 0x53, 0x70, 0x9d, 0x00, 0x86,
0xab, 0xd8, 0xe1, 0xa5, 0xa8, 0x24, 0xbd, 0x94, 0x2d, 0xf9, 0x18, 0x86, 0x9c, 0x15, 0x61, 0x85, 0x55, 0xa0, 0x99, 0x42, 0xfa, 0xb7, 0x0b, 0x27, 0xc6, 0xbc, 0xb8, 0x8c, 0x24, 0x52, 0xe4, 0x21,
0xe5, 0x4d, 0x97, 0xef, 0xf4, 0x39, 0x05, 0xd2, 0xe0, 0xc9, 0xbd, 0x40, 0x59, 0xca, 0x40, 0x61, 0x0c, 0xd4, 0x19, 0xc3, 0x6c, 0xc7, 0xf3, 0x73, 0x4d, 0x7c, 0xc3, 0x76, 0x81, 0x16, 0x4f, 0xee,
0x51, 0xb0, 0x2c, 0xc6, 0xb2, 0x77, 0x04, 0xba, 0x40, 0x0b, 0x19, 0x48, 0xd9, 0x92, 0x05, 0x0c, 0x05, 0xda, 0x56, 0x7a, 0xa9, 0x73, 0x84, 0x55, 0xec, 0xf0, 0x52, 0x54, 0x93, 0x5e, 0xca, 0x96,
0xae, 0x19, 0x8b, 0x11, 0x89, 0xe9, 0xd2, 0xef, 0xf3, 0x79, 0xcc, 0x98, 0xf4, 0x40, 0x3b, 0x99, 0x7c, 0x04, 0x7d, 0xce, 0x8a, 0xb0, 0xc2, 0xf2, 0xc6, 0xf3, 0xb7, 0xbb, 0x9c, 0x02, 0x69, 0xf0,
0x58, 0x94, 0xe6, 0xa5, 0xa2, 0xca, 0x8e, 0xc4, 0x56, 0xd2, 0x40, 0x26, 0x86, 0x96, 0xe4, 0x0d, 0xe4, 0x5e, 0xa0, 0x2c, 0x65, 0xa0, 0xb0, 0x28, 0x58, 0x16, 0x63, 0xd9, 0x3b, 0x02, 0x5d, 0xa2,
0x70, 0x45, 0xa5, 0xdf, 0xa4, 0x2b, 0xaa, 0xcb, 0x31, 0x0c, 0x5f, 0x4a, 0x06, 0xd2, 0x3f, 0x1d, 0x85, 0x0c, 0xa4, 0x6c, 0xc9, 0x0c, 0x7a, 0x37, 0x8c, 0xc5, 0x88, 0xc4, 0x78, 0xee, 0x77, 0xf9,
0x0b, 0x68, 0x05, 0x9e, 0x3d, 0xdf, 0x9c, 0xfd, 0xe6, 0x9b, 0xbb, 0xe7, 0x7c, 0xf3, 0xf6, 0x9e, 0x3c, 0x66, 0x4c, 0x7a, 0xa0, 0x9d, 0x4c, 0x2c, 0x4a, 0xf3, 0x52, 0x51, 0x69, 0x47, 0x62, 0x0b,
0x6f, 0x83, 0x9d, 0xf3, 0xcd, 0x9e, 0xd2, 0xc3, 0xee, 0x94, 0xa6, 0xdf, 0x58, 0xc5, 0xa9, 0x1e, 0x69, 0x20, 0x13, 0x43, 0x4b, 0x72, 0x04, 0xae, 0xa8, 0xf4, 0xb9, 0x77, 0x45, 0x75, 0x35, 0x84,
0xbf, 0xc2, 0x2a, 0x38, 0xd1, 0x38, 0xe9, 0x61, 0xa1, 0x41, 0xbb, 0x02, 0xd2, 0x65, 0xc1, 0x9d, 0xfe, 0xad, 0x64, 0x28, 0xfd, 0xcd, 0xb1, 0x80, 0x56, 0xe0, 0xd9, 0x03, 0xd5, 0xd9, 0x6f, 0xa0,
0x6f, 0x4d, 0x6c, 0xca, 0x2b, 0x76, 0xec, 0x7f, 0x6d, 0xcf, 0xfc, 0x72, 0x7b, 0xe7, 0x17, 0xfd, 0xba, 0x7b, 0x0e, 0x54, 0xaf, 0x63, 0xa0, 0xda, 0x63, 0xbe, 0xd7, 0x1e, 0xf3, 0xf4, 0x5b, 0x2b,
0x1e, 0xde, 0xea, 0xd0, 0xcb, 0x98, 0xd1, 0x8e, 0x35, 0xa3, 0x4f, 0x60, 0x58, 0xe8, 0x31, 0xe0, 0x59, 0xd5, 0xb3, 0x57, 0xb8, 0x4b, 0x4e, 0x75, 0xdd, 0x7a, 0x38, 0x68, 0x10, 0xae, 0x81, 0xb4,
0xcd, 0xdd, 0x40, 0x1d, 0xe4, 0x48, 0x7a, 0x99, 0xa7, 0xdb, 0xe7, 0xb2, 0xa1, 0xde, 0xdc, 0x0b, 0xbb, 0xfa, 0xda, 0xbb, 0x26, 0x36, 0x85, 0x55, 0xb7, 0xf7, 0xdf, 0xb6, 0x63, 0x5e, 0xb9, 0x9d,
0xf4, 0x89, 0x7e, 0x61, 0xe1, 0x83, 0x64, 0xdc, 0xbf, 0x10, 0xfa, 0x8f, 0x03, 0x27, 0x01, 0x8b, 0xf3, 0x8a, 0xfe, 0x00, 0x6f, 0xb6, 0xe8, 0x62, 0xcc, 0x75, 0xc7, 0x9a, 0xeb, 0xa7, 0xd0, 0x2f,
0x58, 0x52, 0x88, 0xff, 0xbb, 0xc3, 0xcd, 0xed, 0xe7, 0x76, 0xb6, 0x9f, 0xb5, 0x2b, 0xbc, 0xee, 0xf4, 0xb1, 0xf6, 0xa6, 0x6e, 0xa0, 0x16, 0x72, 0x04, 0xdd, 0xe6, 0xe9, 0xfa, 0xb9, 0x6c, 0x90,
0xae, 0x68, 0xe6, 0xed, 0xc0, 0x98, 0xb7, 0xe7, 0x30, 0x29, 0x38, 0x7b, 0xa6, 0x54, 0x43, 0x54, 0x27, 0xa7, 0xb6, 0x5a, 0xd1, 0x2f, 0x2c, 0x7c, 0x90, 0x5c, 0xfb, 0x17, 0x42, 0xff, 0x71, 0xe0,
0x35, 0x02, 0x09, 0x54, 0x92, 0xc5, 0xec, 0x17, 0xbd, 0x98, 0xd5, 0x41, 0x72, 0x55, 0x8d, 0xd5, 0x34, 0x60, 0x11, 0x4b, 0x0a, 0xf1, 0x5f, 0x1f, 0x01, 0xe6, 0x75, 0xeb, 0xb6, 0xae, 0x5b, 0xeb,
0x67, 0xed, 0x09, 0x6e, 0xc8, 0x3a, 0xed, 0xd7, 0x33, 0x7a, 0xff, 0x92, 0x09, 0x0c, 0xc2, 0xa6, 0x6e, 0xf0, 0xda, 0x77, 0x43, 0x3d, 0x5f, 0x7b, 0xc6, 0x7c, 0xbd, 0x80, 0x51, 0xc1, 0xd9, 0x33,
0x58, 0xfc, 0xdd, 0xa4, 0xe3, 0xb5, 0xd2, 0xa1, 0x4f, 0xe1, 0xa4, 0x27, 0x54, 0x49, 0x1e, 0xc2, 0xa5, 0xea, 0xa3, 0xaa, 0x16, 0x48, 0xa0, 0x92, 0x2c, 0x66, 0x2f, 0xf1, 0xac, 0x79, 0x81, 0x5a,
0x98, 0xeb, 0x95, 0xef, 0xe0, 0xca, 0x3f, 0xeb, 0x9f, 0x79, 0xb8, 0xf9, 0x6b, 0x53, 0xfa, 0xa5, 0x48, 0xae, 0xaa, 0x31, 0xf9, 0xac, 0x39, 0xb1, 0x0d, 0x59, 0xab, 0xfd, 0x7a, 0xe6, 0xee, 0x5f,
0x6c, 0xd6, 0x0b, 0xc3, 0x64, 0x9d, 0x5d, 0xe7, 0xaf, 0xd0, 0xef, 0x3f, 0x5c, 0x78, 0x37, 0x60, 0x32, 0x81, 0x5e, 0x58, 0x17, 0x8b, 0xdf, 0x75, 0x3a, 0x5e, 0x23, 0x1d, 0xfa, 0x14, 0x4e, 0x3b,
0x85, 0xc9, 0x99, 0x2d, 0xe7, 0x2c, 0x13, 0x78, 0x53, 0xd3, 0x0a, 0xc7, 0x68, 0xc5, 0x6b, 0xfe, 0x42, 0x95, 0xe4, 0x21, 0x0c, 0xb9, 0x7e, 0x27, 0x38, 0xf8, 0x4e, 0x38, 0xef, 0x9e, 0x61, 0xf8,
0xa1, 0x46, 0x57, 0xf0, 0x76, 0x1f, 0xf2, 0xa5, 0x2c, 0xc9, 0xc2, 0x58, 0x75, 0x74, 0x12, 0x74, 0x5c, 0xd8, 0x98, 0xd2, 0x2f, 0x65, 0xb3, 0x5e, 0x18, 0x26, 0xcb, 0xec, 0x26, 0x7f, 0x85, 0x7e,
0xe4, 0xf4, 0x3b, 0x38, 0xbf, 0x05, 0xfb, 0x92, 0x7c, 0x26, 0x29, 0x74, 0x9d, 0xd7, 0x94, 0xa0, 0xff, 0xe9, 0xc2, 0x3b, 0x01, 0x2b, 0x4c, 0xce, 0xac, 0x39, 0x67, 0x99, 0xc0, 0x9d, 0xea, 0x56,
0x9a, 0x12, 0xb7, 0xf8, 0x04, 0xca, 0x81, 0x2e, 0xc1, 0xb7, 0xd3, 0xbb, 0xac, 0xf4, 0x3b, 0xd9, 0x38, 0x46, 0x2b, 0xfe, 0x9f, 0x2f, 0xbd, 0x19, 0x90, 0xe6, 0x65, 0xcd, 0xb2, 0x30, 0x15, 0x95,
0xd1, 0x52, 0xfa, 0x11, 0x9c, 0x76, 0x7d, 0x10, 0x86, 0x9a, 0xde, 0x4e, 0x43, 0x6f, 0xfa, 0x3e, 0xe6, 0x43, 0x87, 0xc6, 0xa2, 0xea, 0xf0, 0xae, 0x97, 0xe1, 0x81, 0xf1, 0x32, 0xa4, 0x0b, 0x78,
0x1c, 0xdb, 0x79, 0xac, 0x1f, 0x95, 0xe4, 0x08, 0xbc, 0xf5, 0xa3, 0xba, 0x62, 0xf9, 0x93, 0xfe, 0xab, 0x0b, 0xf9, 0x52, 0x96, 0x64, 0x61, 0xac, 0x3a, 0x3a, 0x0a, 0x5a, 0x72, 0xfa, 0x3d, 0x5c,
0x00, 0xb3, 0xce, 0xb5, 0xb8, 0x0b, 0x64, 0xbe, 0x3a, 0xc0, 0x9d, 0x5e, 0x1a, 0x5d, 0xc3, 0x99, 0xdc, 0x81, 0x7d, 0x49, 0x3e, 0x95, 0x14, 0xba, 0xc9, 0x37, 0x94, 0xa0, 0x9a, 0x12, 0x77, 0xf8,
0x9d, 0x4a, 0x13, 0x81, 0x7c, 0x08, 0x23, 0xf5, 0x5c, 0xf4, 0x77, 0x4b, 0xef, 0xb7, 0xb4, 0x36, 0x04, 0xca, 0x81, 0xce, 0xc1, 0xb7, 0xd3, 0xbb, 0xaa, 0xf4, 0x39, 0xd9, 0xd1, 0x52, 0xfa, 0x21,
0xa1, 0xd7, 0x40, 0x6f, 0x4b, 0x56, 0x23, 0xb8, 0x7f, 0xba, 0x0d, 0xd6, 0xae, 0x81, 0xf5, 0x57, 0x9c, 0xb5, 0x7d, 0x10, 0x86, 0x0d, 0xbd, 0x9d, 0x9a, 0xde, 0xf4, 0x3d, 0x38, 0xb1, 0xf3, 0x58,
0xdd, 0x57, 0xd7, 0xc4, 0x29, 0x8d, 0x9c, 0xbd, 0xff, 0xc8, 0x79, 0x33, 0xc2, 0xff, 0xbe, 0x3e, 0x3e, 0x2a, 0xc9, 0x31, 0x78, 0xcb, 0x47, 0x9b, 0x8a, 0xe5, 0x27, 0xfd, 0x11, 0x26, 0xad, 0x6d,
0xf9, 0x37, 0x00, 0x00, 0xff, 0xff, 0x40, 0x4f, 0xe4, 0x50, 0x94, 0x0d, 0x00, 0x00, 0xf1, 0x2e, 0x90, 0xf9, 0xea, 0x00, 0xaf, 0x75, 0xd2, 0xe8, 0x0d, 0xd0, 0xbb, 0x22, 0xe8, 0xb2,
0xf7, 0x8f, 0x51, 0x03, 0xe4, 0x1a, 0x00, 0x7d, 0xdd, 0x3e, 0x2a, 0x75, 0x9c, 0x92, 0x7c, 0x00,
0x03, 0x75, 0x2e, 0x75, 0xbb, 0x3a, 0x5f, 0xfa, 0xda, 0x64, 0x35, 0xc0, 0xff, 0x5c, 0x1f, 0xff,
0x1b, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xc2, 0xae, 0xcc, 0x8a, 0x0d, 0x00, 0x00,
} }
...@@ -9,7 +9,6 @@ type CollateralizeCreateTx struct { ...@@ -9,7 +9,6 @@ type CollateralizeCreateTx struct {
DebtCeiling int64 `json:"debtCeiling"` DebtCeiling int64 `json:"debtCeiling"`
LiquidationRatio float32 `json:"liquidationRatio"` LiquidationRatio float32 `json:"liquidationRatio"`
StabilityFee int64 `json:"stabilityFee"` StabilityFee int64 `json:"stabilityFee"`
LiquidationPenalty int64 `json:"liquidationPenalty"`
TotalBalance int64 `json:"totalBalance"` TotalBalance int64 `json:"totalBalance"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
...@@ -37,7 +36,7 @@ type CollateralizeAppendTx struct { ...@@ -37,7 +36,7 @@ type CollateralizeAppendTx struct {
// CollateralizeFeedTx for construction // CollateralizeFeedTx for construction
type CollateralizeFeedTx struct { type CollateralizeFeedTx struct {
Price []int64 `json:"price"` Price []float32 `json:"price"`
Volume []int64 `json:"volume"` Volume []int64 `json:"volume"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
......
...@@ -45,5 +45,6 @@ const ( ...@@ -45,5 +45,6 @@ const (
CollateralizeUserStatusCreate = 1 + iota CollateralizeUserStatusCreate = 1 + iota
CollateralizeUserStatusWarning CollateralizeUserStatusWarning
CollateralizeUserStatusSystemLiquidate CollateralizeUserStatusSystemLiquidate
CollateralizeUserStatusExpire
CollateralizeUserStatusClose CollateralizeUserStatusClose
) )
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment