Commit 491ce6b8 authored by pengjun's avatar pengjun

#627 update collateralize

parent ebffcd28
......@@ -55,7 +55,7 @@ func CollateralizeCreate(cmd *cobra.Command, args []string) {
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeCreate",
Payload: []byte(fmt.Sprintf("{\"balance\":%d}", balance)),
Payload: []byte(fmt.Sprintf("{\"totalBalance\":%d}", balance)),
}
var res string
......@@ -89,7 +89,7 @@ func CollateralizeBorrow(cmd *cobra.Command, args []string) {
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeBorrow",
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":%s,\"value\":%d}", collateralizeID, value)),
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\",\"value\":%d}", collateralizeID, value)),
}
var res string
......@@ -111,6 +111,8 @@ func CollateralizeAppendRawTxCmd() *cobra.Command {
func addCollateralizeAppendFlags(cmd *cobra.Command) {
cmd.Flags().StringP("collateralizeID", "g", "", "collateralize ID")
cmd.MarkFlagRequired("collateralizeID")
cmd.Flags().StringP("recordID", "r", "", "recordID")
cmd.MarkFlagRequired("recordID")
cmd.Flags().Uint64P("value", "v", 0, "value")
cmd.MarkFlagRequired("value")
}
......@@ -118,12 +120,13 @@ func addCollateralizeAppendFlags(cmd *cobra.Command) {
func CollateralizeAppend(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
collateralizeID, _ := cmd.Flags().GetString("collateralizeID")
recordID, _ := cmd.Flags().GetString("recordID")
value, _ := cmd.Flags().GetUint64("value")
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeAppend",
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":%s,\"value\":%d}", collateralizeID, value)),
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\", \"recordID\":\"%s\", \"value\":%d}", collateralizeID, recordID, value)),
}
var res string
......@@ -145,19 +148,19 @@ func CollateralizeRepayRawTxCmd() *cobra.Command {
func addCollateralizeRepayFlags(cmd *cobra.Command) {
cmd.Flags().StringP("collateralizeID", "g", "", "collateralize ID")
cmd.MarkFlagRequired("collateralizeID")
cmd.Flags().Uint64P("value", "v", 0, "value")
cmd.MarkFlagRequired("value")
cmd.Flags().StringP("recordID", "r", "", "recordID")
cmd.MarkFlagRequired("recordID")
}
func CollateralizeRepay(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
collateralizeID, _ := cmd.Flags().GetString("collateralizeID")
value, _ := cmd.Flags().GetUint64("value")
recordID, _ := cmd.Flags().GetString("recordID")
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeRepay",
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":%s,\"value\":%d}", collateralizeID, value)),
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\",\"recordID\":\"%s\"}", collateralizeID, recordID)),
}
var res string
......@@ -191,7 +194,7 @@ func CollateralizePriceFeed(cmd *cobra.Command, args []string) {
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizePriceFeed",
Payload: []byte(fmt.Sprintf("{[\"price\":%s],[\"volume\":%d]}", price, volume)),
Payload: []byte(fmt.Sprintf("{\"price\":[ %f ], \"volume\":[ %d ]}", price, volume)),
}
var res string
......@@ -222,7 +225,7 @@ func CollateralizeClose(cmd *cobra.Command, args []string) {
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeClose",
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":%s}", collateralizeID)),
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\"}", collateralizeID)),
}
var res string
......@@ -258,7 +261,7 @@ func CollateralizeManage(cmd *cobra.Command, args []string) {
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeManage",
Payload: []byte(fmt.Sprintf("{\"debtCeiling\":%d, \"liquidationRatio\":%f, \"stabilityFeeRatio\":%f, \"period\":%s}",
Payload: []byte(fmt.Sprintf("{\"debtCeiling\":%d, \"liquidationRatio\":%f, \"stabilityFeeRatio\":%f, \"period\":%d}",
debtCeiling, liquidationRatio, stabilityFeeRatio, period)),
}
......@@ -308,11 +311,15 @@ func CollateralizeQuery(cmd *cobra.Command, args []string) {
// req.Index = index
//}
status, err := strconv.ParseInt(statusStr, 10, 32)
if err != nil {
fmt.Println(err)
cmd.Help()
return
var status int64
var err error
if statusStr != "" {
status, err = strconv.ParseInt(statusStr, 10, 32)
if err != nil {
fmt.Println(err)
cmd.Help()
return
}
}
if collateralizeID != "" {
......
......@@ -73,6 +73,12 @@ func AddrKey() (key []byte) {
return key
}
// Key for IssuancePriceFeed
func PriceKey() (key []byte) {
key = append(key, []byte("mavl-"+pty.CollateralizeX+"-price")...)
return key
}
// Action struct
type Action struct {
coinsAccount *account.DB // bty账户
......@@ -105,23 +111,16 @@ func NewCollateralizeAction(c *Collateralize, tx *types.Transaction, index int)
execaddr: dapp.ExecAddress(string(tx.Execer)), difficulty: c.GetDifficulty(), index: index, Collateralize: c}
}
// GetCollCommonRecipt generate logs for Collateralize common action
func (action *Action) GetCollCommonRecipt(collateralize *pty.Collateralize) *pty.ReceiptCollateralize {
c := &pty.ReceiptCollateralize{}
c.CollateralizeId = collateralize.CollateralizeId
c.Status = collateralize.Status
c.PreIndex = collateralize.PreIndex
c.Index = collateralize.Index
return c
}
// GetCreateReceiptLog generate logs for Collateralize create action
func (action *Action) GetCreateReceiptLog(collateralize *pty.Collateralize) *types.ReceiptLog {
log := &types.ReceiptLog{}
log.Ty = pty.TyLogCollateralizeCreate
c := action.GetCollCommonRecipt(collateralize)
c := &pty.ReceiptCollateralize{}
c.CollateralizeId = collateralize.CollateralizeId
c.Status = collateralize.Status
c.CreateAddr = action.fromaddr
c.Index = collateralize.Index
log.Log = types.Encode(c)
......@@ -133,10 +132,12 @@ func (action *Action) GetBorrowReceiptLog(collateralize *pty.Collateralize, reco
log := &types.ReceiptLog{}
log.Ty = pty.TyLogCollateralizeBorrow
c := action.GetCollCommonRecipt(collateralize)
c := &pty.ReceiptCollateralize{}
c.CollateralizeId = collateralize.CollateralizeId
c.AccountAddr = action.fromaddr
c.RecordId = record.RecordId
c.RecordStatus = record.Status
c.Status = record.Status
c.Index = record.Index
log.Log = types.Encode(c)
......@@ -148,11 +149,14 @@ func (action *Action) GetRepayReceiptLog(collateralize *pty.Collateralize, recor
log := &types.ReceiptLog{}
log.Ty = pty.TyLogCollateralizeRepay
c := action.GetCollCommonRecipt(collateralize)
c := &pty.ReceiptCollateralize{}
c.CollateralizeId = collateralize.CollateralizeId
c.AccountAddr = action.fromaddr
c.RecordId = record.RecordId
c.RecordStatus = record.Status
c.RecordPreStatus = record.PreStatus
c.Status = record.Status
c.PreStatus = record.PreStatus
c.PreIndex = record.PreIndex
c.Index = record.Index
log.Log = types.Encode(c)
......@@ -160,11 +164,18 @@ func (action *Action) GetRepayReceiptLog(collateralize *pty.Collateralize, recor
}
// GetAppendReceiptLog generate logs for Collateralize append action
func (action *Action) GetAppendReceiptLog(collateralize *pty.Collateralize) *types.ReceiptLog {
func (action *Action) GetAppendReceiptLog(collateralize *pty.Collateralize, record *pty.BorrowRecord) *types.ReceiptLog {
log := &types.ReceiptLog{}
log.Ty = pty.TyLogCollateralizeAppend
c := action.GetCollCommonRecipt(collateralize)
c := &pty.ReceiptCollateralize{}
c.CollateralizeId = collateralize.CollateralizeId
c.AccountAddr = action.fromaddr
c.RecordId = record.RecordId
c.Status = record.Status
c.PreStatus = record.PreStatus
c.PreIndex = record.PreIndex
c.Index = record.Index
log.Log = types.Encode(c)
......@@ -176,11 +187,14 @@ func (action *Action) GetFeedReceiptLog(collateralize *pty.Collateralize, record
log := &types.ReceiptLog{}
log.Ty = pty.TyLogCollateralizeFeed
c := action.GetCollCommonRecipt(collateralize)
c := &pty.ReceiptCollateralize{}
c.CollateralizeId = collateralize.CollateralizeId
c.AccountAddr = record.AccountAddr
c.RecordId = record.RecordId
c.RecordStatus = record.Status
c.RecordPreStatus = record.PreStatus
c.Status = record.Status
c.PreStatus = record.PreStatus
c.PreIndex = record.PreIndex
c.Index = record.Index
log.Log = types.Encode(c)
......@@ -188,11 +202,17 @@ func (action *Action) GetFeedReceiptLog(collateralize *pty.Collateralize, record
}
// GetCloseReceiptLog generate logs for Collateralize close action
func (action *Action) GetCloseReceiptLog(Collateralize *pty.Collateralize) *types.ReceiptLog {
func (action *Action) GetCloseReceiptLog(collateralize *pty.Collateralize) *types.ReceiptLog {
log := &types.ReceiptLog{}
log.Ty = pty.TyLogCollateralizeClose
c := action.GetCollCommonRecipt(Collateralize)
c := &pty.ReceiptCollateralize{}
c.CollateralizeId = collateralize.CollateralizeId
c.Status = collateralize.Status
c.PreStatus = pty.CollateralizeStatusCreated
c.CreateAddr = action.fromaddr
c.PreIndex = collateralize.PreIndex
c.Index = collateralize.Index
log.Log = types.Encode(c)
......@@ -233,7 +253,7 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ
var receipt *types.Receipt
// 是否配置管理用户
if !isRightAddr(configKey, action.fromaddr, action.db) {
if !isRightAddr(issuanceE.ManageKey, action.fromaddr, action.db) {
clog.Error("CollateralizeManage", "addr", action.fromaddr, "error", "Address has no permission to config")
return nil, pty.ErrPermissionDeny
}
......@@ -245,10 +265,29 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ
}
collConfig := &pty.CollateralizeManage{}
collConfig.StabilityFeeRatio = manage.StabilityFeeRatio
collConfig.Period = manage.Period
collConfig.LiquidationRatio = manage.LiquidationRatio
collConfig.DebtCeiling = manage.DebtCeiling
if manage.StabilityFeeRatio != 0 {
collConfig.StabilityFeeRatio = manage.StabilityFeeRatio
} else {
collConfig.StabilityFeeRatio = DefaultStabilityFeeRation
}
if manage.Period != 0 {
collConfig.Period = manage.Period
} else {
collConfig.Period = DefaultPeriod
}
if manage.LiquidationRatio != 0 {
collConfig.LiquidationRatio = manage.LiquidationRatio
} else {
collConfig.LiquidationRatio = DefaultLiquidationRatio
}
if manage.DebtCeiling != 0 {
collConfig.DebtCeiling = manage.DebtCeiling
} else {
collConfig.DebtCeiling = DefaultDebtCeiling
}
value := types.Encode(collConfig)
action.db.Set(ConfigKey(), value)
......@@ -313,6 +352,7 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
// 检查ccny余额
if !action.CheckExecTokenAccount(action.fromaddr, create.TotalBalance, false) {
clog.Error("CollateralizeCreate", "fromaddr", action.fromaddr, "balance", create.TotalBalance, "error", types.ErrInsufficientBalance)
return nil, types.ErrInsufficientBalance
}
......@@ -353,7 +393,6 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
coll.CreateAddr = action.fromaddr
coll.Status = pty.CollateralizeActionCreate
coll.Index = action.GetIndex()
coll.CreateIndex = coll.Index
clog.Debug("CollateralizeCreate created", "CollateralizeID", collateralizeID, "TotalBalance", coll.TotalBalance)
......@@ -391,8 +430,8 @@ func calcLiquidationPrice(value int64, colValue int64) float32 {
}
// 获取最近抵押物价格
func (action *Action)getLatestPrice(db dbm.KV, assetType int32) (float32, error) {
data, err := db.Get(calcCollateralizeLatestPriceKey())
func (action *Action)getLatestPrice(db dbm.KV) (float32, error) {
data, err := db.Get(PriceKey())
if err != nil {
clog.Error("getLatestPrice", "get", err)
return -1, err
......@@ -405,16 +444,7 @@ func (action *Action)getLatestPrice(db dbm.KV, assetType int32) (float32, error)
return -1, err
}
switch assetType {
case pty.CollateralizeAssetTypeBty:
return price.BtcPrice, nil
case pty.CollateralizeAssetTypeBtc:
return price.BtcPrice, nil
case pty.CollateralizeAssetTypeEth:
return price.EthPrice, nil
default:
return -1, pty.ErrAssetType
}
return price.BtyPrice, nil
}
// CheckExecAccountBalance 检查账户抵押物余额
......@@ -480,7 +510,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
clog.Debug("CollateralizeBorrow", "value", borrow.GetValue())
// 获取抵押物价格
lastPrice, err := action.getLatestPrice(action.db, coll.CollType)
lastPrice, err := action.getLatestPrice(action.db)
if err != nil {
clog.Error("CollateralizeBorrow", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", err)
return nil, err
......@@ -537,6 +567,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
borrowRecord.LiquidationPrice = coll.LiquidationRatio * lastPrice * pty.CollateralizePreLiquidationRatio
borrowRecord.Status = pty.CollateralizeUserStatusCreate
borrowRecord.ExpireTime = action.blocktime + coll.Period
borrowRecord.Index = action.GetIndex()
// 记录当前借贷的最高自动清算价格
if coll.LatestLiquidationPrice < borrowRecord.LiquidationPrice {
......@@ -547,8 +578,6 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
coll.BorrowRecords = append(coll.BorrowRecords, borrowRecord)
coll.Status = pty.CollateralizeStatusCreated
coll.Balance -= borrow.Value
coll.PreIndex = coll.Index
coll.Index = action.GetIndex()
coll.Save(action.db)
kv = append(kv, coll.GetKVSet()...)
......@@ -597,7 +626,7 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
}
// 借贷金额+利息
realRepay := borrowRecord.DebtValue + int64(float32(borrowRecord.DebtValue) * coll.StabilityFeeRatio) + 1
realRepay := borrowRecord.DebtValue + int64(float32(borrowRecord.DebtValue) * coll.StabilityFeeRatio)
// 检查
if !action.CheckExecTokenAccount(action.fromaddr, realRepay*Coin, false) {
......@@ -626,6 +655,8 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
// 借贷记录关闭
borrowRecord.PreStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusClose
borrowRecord.PreIndex = borrowRecord.Index
borrowRecord.Index = action.GetIndex()
// 保存
coll.Balance += borrowRecord.DebtValue
......@@ -633,8 +664,6 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize)
coll.LatestExpireTime = getLatestExpireTime(&coll.Collateralize)
coll.PreIndex = coll.Index
coll.Index = action.GetIndex()
coll.Save(action.db)
kv = append(kv, coll.GetKVSet()...)
......@@ -681,7 +710,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
clog.Debug("CollateralizeAppend", "value", cAppend.CollateralValue)
// 获取抵押物价格
lastPrice, err := action.getLatestPrice(action.db, coll.CollType)
lastPrice, err := action.getLatestPrice(action.db)
if err != nil {
clog.Error("CollateralizeBorrow", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", err)
return nil, err
......@@ -720,6 +749,8 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
if borrowRecord.Status == pty.CollateralizeUserStatusWarning {
borrowRecord.PreStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeStatusCreated
borrowRecord.PreIndex = borrowRecord.Index
borrowRecord.Index = action.GetIndex()
}
}
......@@ -731,7 +762,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
kv = append(kv, coll.GetKVSet()...)
receiptLog := action.GetAppendReceiptLog(&coll.Collateralize)
receiptLog := action.GetAppendReceiptLog(&coll.Collateralize, borrowRecord)
logs = append(logs, receiptLog)
receipt = &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}
......@@ -747,12 +778,6 @@ func getManageKey(key string, db dbm.KV) ([]byte, error) {
return value, nil
}
const (
priceFeedKey = "collateralize-price-feed"
guarantorKey = "collateralize-guarantor"
configKey = "collateralize-config"
)
func isRightAddr(key string, addr string, db dbm.KV) bool {
value, err := getManageKey(key, db)
if err != nil {
......@@ -781,7 +806,7 @@ func isRightAddr(key string, addr string, db dbm.KV) bool {
}
func getGuarantorAddr(db dbm.KV) (string, error) {
value, err := getManageKey(guarantorKey, db)
value, err := getManageKey(issuanceE.GuarantorKey, db)
if err != nil {
clog.Error("CollateralizePriceFeed", "getGuarantorAddr", err)
return "", err
......@@ -838,15 +863,17 @@ func (action *Action) systemLiquidation(coll *pty.Collateralize, price float32)
borrowRecord.LiquidateTime = action.blocktime
borrowRecord.PreStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusSystemLiquidate
borrowRecord.PreIndex = borrowRecord.Index
borrowRecord.Index = action.GetIndex()
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...)
} else {
borrowRecord.PreStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusWarning
borrowRecord.PreIndex = borrowRecord.Index
borrowRecord.Index = action.GetIndex()
}
coll.PreIndex = coll.Index
coll.Index = action.GetIndex()
log := action.GetFeedReceiptLog(coll, borrowRecord)
logs = append(logs, log)
}
......@@ -894,15 +921,17 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt
borrowRecord.LiquidateTime = action.blocktime
borrowRecord.PreStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusExpireLiquidate
borrowRecord.PreIndex = borrowRecord.Index
borrowRecord.Index = action.GetIndex()
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...)
} else {
borrowRecord.PreIndex = borrowRecord.Index
borrowRecord.Index = action.GetIndex()
borrowRecord.PreStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusExpire
}
coll.PreIndex = coll.Index
coll.Index = action.GetIndex()
log := action.GetFeedReceiptLog(coll, borrowRecord)
logs = append(logs, log)
}
......@@ -943,7 +972,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
}
// 是否后台管理用户
if !isRightAddr(priceFeedKey, action.fromaddr, action.db) {
if !isRightAddr(issuanceE.PriceFeedKey, action.fromaddr, action.db) {
clog.Error("CollateralizePriceFeed", "addr", action.fromaddr, "error", "Address has no permission to feed price")
return nil, pty.ErrPermissionDeny
}
......@@ -989,24 +1018,11 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
}
var priceRecord pty.AssetPriceRecord
if feed.CollType == pty.CollateralizeAssetTypeBty {
priceRecord.BtyPrice = price
} else if feed.CollType == pty.CollateralizeAssetTypeBtc {
priceRecord.BtcPrice = price
} else if feed.CollType == pty.CollateralizeAssetTypeEth {
priceRecord.EthPrice = price
} else {
priceRecord.BtyPrice = price
}
priceRecord.BtyPrice = price
priceRecord.RecordTime = action.blocktime
// 喂价记录
pricekv := &types.KeyValue{Key: calcCollateralizePriceKey(string(action.blocktime)), Value: types.Encode(&priceRecord)}
action.db.Set(pricekv.Key, pricekv.Value)
kv = append(kv, pricekv)
// 最近喂价记录
pricekv = &types.KeyValue{Key: calcCollateralizeLatestPriceKey(), Value: types.Encode(&priceRecord)}
pricekv := &types.KeyValue{Key: PriceKey(), Value: types.Encode(&priceRecord)}
action.db.Set(pricekv.Key, pricekv.Value)
kv = append(kv, pricekv)
......@@ -1051,7 +1067,7 @@ func (action *Action) CollateralizeClose(close *pty.CollateralizeClose) (*types.
coll := &CollateralizeDB{*collateralize}
coll.Status = pty.CollateralizeStatusClose
coll.PreIndex = coll.CreateIndex
coll.PreIndex = coll.Index
coll.Index = action.GetIndex()
coll.Save(action.db)
kv = append(kv, coll.GetKVSet()...)
......
......@@ -26,26 +26,34 @@ func (c *Collateralize) execDelLocal(tx *types.Transaction, receiptData *types.R
set.KV = append(set.KV, c.deleteCollateralizeAddr(collateralizeLog.CreateAddr, collateralizeLog.Index)...)
break
case pty.TyLogCollateralizeBorrow:
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.RecordStatus, collateralizeLog.Index)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.Index)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.Index)...)
break
case pty.TyLogCollateralizeAppend: // append没有状态变化
case pty.TyLogCollateralizeAppend:
if collateralizeLog.Status == pty.CollateralizeUserStatusWarning {
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.PreStatus, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.Index)...)
set.KV = append(set.KV, c.addCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.Index)...)
}
break
case pty.TyLogCollateralizeRepay:
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.RecordPreStatus, collateralizeLog.CollateralizeId,
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.PreStatus, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.RecordStatus, collateralizeLog.Index)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.Index)...)
set.KV = append(set.KV, c.addCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.PreIndex)...)
break
case pty.TyLogCollateralizeFeed:
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.RecordStatus, collateralizeLog.CollateralizeId,
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.RecordStatus, collateralizeLog.Index)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.Index)...)
set.KV = append(set.KV, c.addCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.PreIndex)...)
// 如果没有被清算,需要把地址索引更新
if collateralizeLog.RecordStatus == pty.CollateralizeUserStatusWarning || collateralizeLog.RecordStatus == pty.CollateralizeUserStatusExpire {
if collateralizeLog.Status == pty.CollateralizeUserStatusWarning || collateralizeLog.Status == pty.CollateralizeUserStatusExpire {
set.KV = append(set.KV, c.deleteCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.Index)...)
}
break
......
......@@ -27,33 +27,41 @@ func (c *Collateralize) execLocal(tx *types.Transaction, receipt *types.ReceiptD
set.KV = append(set.KV, c.addCollateralizeAddr(collateralizeLog.CreateAddr, collateralizeLog.CollateralizeId, collateralizeLog.Index)...)
break
case pty.TyLogCollateralizeBorrow:
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.RecordStatus, collateralizeLog.CollateralizeId,
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.Index)...)
set.KV = append(set.KV, c.addCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.Index)...)
break
case pty.TyLogCollateralizeAppend: //append没有状态变化
case pty.TyLogCollateralizeAppend:
if collateralizeLog.Status == pty.CollateralizeUserStatusWarning {
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.PreStatus, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.Index)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.addCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.Index)...)
}
break
case pty.TyLogCollateralizeRepay:
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.RecordPreStatus, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.RecordStatus, collateralizeLog.CollateralizeId,
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.PreStatus, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.Index)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.PreIndex)...)
break
case pty.TyLogCollateralizeFeed:
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.RecordPreStatus, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.RecordStatus, collateralizeLog.CollateralizeId,
set.KV = append(set.KV, c.deleteCollateralizeRecordStatus(collateralizeLog.PreStatus, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.addCollateralizeRecordStatus(collateralizeLog.Status, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.Index)...)
set.KV = append(set.KV, c.deleteCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.PreIndex)...)
// 如果没有被清算,需要把地址索引更新
if collateralizeLog.RecordStatus == pty.CollateralizeUserStatusWarning || collateralizeLog.RecordStatus == pty.CollateralizeUserStatusExpire {
if collateralizeLog.Status == pty.CollateralizeUserStatusWarning || collateralizeLog.Status == pty.CollateralizeUserStatusExpire {
set.KV = append(set.KV, c.addCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.CollateralizeId,
collateralizeLog.RecordId, collateralizeLog.Index)...)
}
break
case pty.TyLogCollateralizeClose:
set.KV = append(set.KV, c.addCollateralizeStatus(collateralizeLog.Status, collateralizeLog.CollateralizeId, collateralizeLog.Index)...)
set.KV = append(set.KV, c.deleteCollateralizeStatus(pty.CollateralizeStatusCreated, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.deleteCollateralizeStatus(collateralizeLog.PreStatus, collateralizeLog.PreIndex)...)
set.KV = append(set.KV, c.deleteCollateralizeAddr(collateralizeLog.CreateAddr, collateralizeLog.PreIndex)...)
break
}
......
......@@ -36,11 +36,6 @@ func calcCollateralizePriceKey(time string) []byte {
return []byte(key)
}
func calcCollateralizeLatestPriceKey() []byte {
key := fmt.Sprintf("LODB-collateralize-latest-price")
return []byte(key)
}
func calcCollateralizeRecordAddrPrefix(addr string) []byte {
key := fmt.Sprintf("LODB-collateralize-record-addr:%d", addr)
return []byte(key)
......
......@@ -14,13 +14,11 @@ message Collateralize {
repeated BorrowRecord borrowRecords = 8; //借贷记录
repeated BorrowRecord InvalidRecords = 9; //失效的借贷记录
int32 status = 10;//当期借贷的状态,是否关闭
int32 collType = 11;//质押资产类型(1,bty,2,btc,3,eth...)
float latestLiquidationPrice = 12;//最高清算价格
int64 period = 13;//借贷最大期限
int64 latestExpireTime = 14;//最近超期时间
int64 index = 15;//当前索引
int64 preIndex = 16;//上一个索引
int64 createIndex = 17;//创建时的索引,用于close删除记录
float latestLiquidationPrice = 11;//最高清算价格
int64 period = 12;//借贷最大期限
int64 latestExpireTime = 13;//最近超期时间
int64 index = 14;//当前索引
int64 preIndex = 15;//上一个索引
}
// 借出记录
......@@ -36,6 +34,8 @@ message BorrowRecord {
int64 expireTime = 9; //超时清算时间
int32 preStatus = 10;//上一次抵押状态,用于告警恢复
string recordId = 11;//借出id,标识一次借出记录
int64 index = 12;//当前索引
int64 preIndex = 13;//上级索引
}
// 资产价格记录
......@@ -111,13 +111,12 @@ message ReceiptCollateralize {
string collateralizeId = 1;
string createAddr = 2;
string accountAddr = 3;
int32 status = 4;
int64 index = 5;
int32 recordStatus = 6;
int32 recordPreStatus = 7;
string recordId = 8;
int64 preIndex = 9;
}
string recordId = 4;
int32 status = 5;
int32 PreStatus = 6;
int64 index = 7;
int64 preIndex = 8;
}
// exec_local 借贷记录信息
message CollateralizeRecord {
......
......@@ -93,7 +93,7 @@ func (Collateralize CollateralizeType) CreateTx(action string, message json.RawM
return nil, types.ErrInvalidParam
}
return CreateRawCollateralizeAppendTx(&param)
} else if action == "CollateralizeFeed" {
} else if action == "CollateralizePriceFeed" {
var param CollateralizeFeedTx
err := json.Unmarshal(message, &param)
if err != nil {
......
......@@ -32,13 +32,11 @@ type Collateralize struct {
BorrowRecords []*BorrowRecord `protobuf:"bytes,8,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"`
CollType int32 `protobuf:"varint,11,opt,name=collType,proto3" json:"collType,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"`
Index int64 `protobuf:"varint,15,opt,name=index,proto3" json:"index,omitempty"`
PreIndex int64 `protobuf:"varint,16,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
CreateIndex int64 `protobuf:"varint,17,opt,name=createIndex,proto3" json:"createIndex,omitempty"`
LatestLiquidationPrice float32 `protobuf:"fixed32,11,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"`
Period int64 `protobuf:"varint,12,opt,name=period,proto3" json:"period,omitempty"`
LatestExpireTime int64 `protobuf:"varint,13,opt,name=latestExpireTime,proto3" json:"latestExpireTime,omitempty"`
Index int64 `protobuf:"varint,14,opt,name=index,proto3" json:"index,omitempty"`
PreIndex int64 `protobuf:"varint,15,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -139,13 +137,6 @@ func (m *Collateralize) GetStatus() int32 {
return 0
}
func (m *Collateralize) GetCollType() int32 {
if m != nil {
return m.CollType
}
return 0
}
func (m *Collateralize) GetLatestLiquidationPrice() float32 {
if m != nil {
return m.LatestLiquidationPrice
......@@ -181,13 +172,6 @@ func (m *Collateralize) GetPreIndex() int64 {
return 0
}
func (m *Collateralize) GetCreateIndex() int64 {
if m != nil {
return m.CreateIndex
}
return 0
}
// 借出记录
type BorrowRecord struct {
AccountAddr string `protobuf:"bytes,1,opt,name=accountAddr,proto3" json:"accountAddr,omitempty"`
......@@ -201,6 +185,8 @@ type BorrowRecord struct {
ExpireTime int64 `protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"`
PreStatus int32 `protobuf:"varint,10,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
RecordId string `protobuf:"bytes,11,opt,name=recordId,proto3" json:"recordId,omitempty"`
Index int64 `protobuf:"varint,12,opt,name=index,proto3" json:"index,omitempty"`
PreIndex int64 `protobuf:"varint,13,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -308,6 +294,20 @@ func (m *BorrowRecord) GetRecordId() string {
return ""
}
func (m *BorrowRecord) GetIndex() int64 {
if m != nil {
return m.Index
}
return 0
}
func (m *BorrowRecord) GetPreIndex() int64 {
if m != nil {
return m.PreIndex
}
return 0
}
// 资产价格记录
type AssetPriceRecord struct {
RecordTime int64 `protobuf:"varint,1,opt,name=recordTime,proto3" json:"recordTime,omitempty"`
......@@ -931,12 +931,11 @@ type ReceiptCollateralize struct {
CollateralizeId string `protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,omitempty"`
CreateAddr string `protobuf:"bytes,2,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
AccountAddr string `protobuf:"bytes,3,opt,name=accountAddr,proto3" json:"accountAddr,omitempty"`
Status int32 `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
Index int64 `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"`
RecordStatus int32 `protobuf:"varint,6,opt,name=recordStatus,proto3" json:"recordStatus,omitempty"`
RecordPreStatus int32 `protobuf:"varint,7,opt,name=recordPreStatus,proto3" json:"recordPreStatus,omitempty"`
RecordId string `protobuf:"bytes,8,opt,name=recordId,proto3" json:"recordId,omitempty"`
PreIndex int64 `protobuf:"varint,9,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
RecordId string `protobuf:"bytes,4,opt,name=recordId,proto3" json:"recordId,omitempty"`
Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`
PreStatus int32 `protobuf:"varint,6,opt,name=PreStatus,proto3" json:"PreStatus,omitempty"`
Index int64 `protobuf:"varint,7,opt,name=index,proto3" json:"index,omitempty"`
PreIndex int64 `protobuf:"varint,8,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -988,41 +987,34 @@ func (m *ReceiptCollateralize) GetAccountAddr() string {
return ""
}
func (m *ReceiptCollateralize) GetStatus() int32 {
func (m *ReceiptCollateralize) GetRecordId() string {
if m != nil {
return m.Status
return m.RecordId
}
return 0
return ""
}
func (m *ReceiptCollateralize) GetIndex() int64 {
func (m *ReceiptCollateralize) GetStatus() int32 {
if m != nil {
return m.Index
return m.Status
}
return 0
}
func (m *ReceiptCollateralize) GetRecordStatus() int32 {
func (m *ReceiptCollateralize) GetPreStatus() int32 {
if m != nil {
return m.RecordStatus
return m.PreStatus
}
return 0
}
func (m *ReceiptCollateralize) GetRecordPreStatus() int32 {
func (m *ReceiptCollateralize) GetIndex() int64 {
if m != nil {
return m.RecordPreStatus
return m.Index
}
return 0
}
func (m *ReceiptCollateralize) GetRecordId() string {
if m != nil {
return m.RecordId
}
return ""
}
func (m *ReceiptCollateralize) GetPreIndex() int64 {
if m != nil {
return m.PreIndex
......@@ -1719,77 +1711,76 @@ func init() {
func init() { proto.RegisterFile("collateralize.proto", fileDescriptor_a988fb4a61381972) }
var fileDescriptor_a988fb4a61381972 = []byte{
// 1148 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xe1, 0x6e, 0xdc, 0x44,
0x10, 0xae, 0xed, 0xbb, 0x4b, 0x6e, 0x2e, 0x69, 0x93, 0x4d, 0x08, 0x26, 0x54, 0xd1, 0x69, 0x85,
0xc4, 0x09, 0x4a, 0x24, 0xd2, 0x0a, 0x51, 0x21, 0x21, 0x92, 0xb4, 0x55, 0x4e, 0x2a, 0x52, 0x65,
0x0a, 0x42, 0x08, 0x90, 0x7c, 0xf6, 0xa6, 0x58, 0x72, 0xce, 0x8e, 0xbd, 0x17, 0x7a, 0xfc, 0x06,
0xfe, 0xf6, 0x05, 0x78, 0x01, 0x5e, 0x80, 0xe7, 0x43, 0x33, 0xbb, 0x67, 0x7b, 0xd7, 0x77, 0x51,
0x02, 0xfc, 0xe2, 0xcf, 0xe9, 0x66, 0xe6, 0x9b, 0xdd, 0xd9, 0x99, 0x6f, 0x67, 0xd6, 0xb0, 0x13,
0x65, 0x69, 0x1a, 0x4a, 0x51, 0x84, 0x69, 0xf2, 0x8b, 0x38, 0xcc, 0x8b, 0x4c, 0x66, 0xac, 0x2b,
0xe7, 0xb9, 0x28, 0xf9, 0x9b, 0x2e, 0x6c, 0x9e, 0x36, 0xcd, 0x6c, 0x04, 0xf7, 0x0c, 0xfc, 0x38,
0xf6, 0x9d, 0xa1, 0x33, 0xea, 0x07, 0xb6, 0x9a, 0x71, 0xd8, 0x90, 0x99, 0x0c, 0xd3, 0x93, 0x30,
0x0d, 0xa7, 0x91, 0xf0, 0xdd, 0xa1, 0x33, 0xf2, 0x02, 0x43, 0xc7, 0x86, 0x30, 0x88, 0xc5, 0x44,
0x9e, 0x8a, 0x24, 0x4d, 0xa6, 0xaf, 0x7c, 0x8f, 0x20, 0x4d, 0x15, 0xfb, 0x00, 0xb6, 0xd2, 0xe4,
0x72, 0x96, 0xc4, 0xa1, 0x4c, 0xb2, 0x69, 0x80, 0xbf, 0x7e, 0x67, 0xe8, 0x8c, 0xdc, 0xa0, 0xa5,
0x67, 0x0f, 0x60, 0xbb, 0x94, 0xe1, 0x24, 0x49, 0x13, 0x39, 0x7f, 0x26, 0x84, 0x02, 0x77, 0x09,
0xdc, 0x36, 0xb0, 0x03, 0x80, 0xa8, 0x10, 0xa1, 0x14, 0xc7, 0x71, 0x5c, 0xf8, 0x3d, 0x3a, 0x44,
0x43, 0xc3, 0x7c, 0x58, 0x9b, 0xe8, 0xd0, 0xd7, 0x28, 0xae, 0x85, 0xc8, 0x1e, 0xc3, 0xe6, 0x24,
0x2b, 0x8a, 0xec, 0xe7, 0x40, 0x44, 0x59, 0x11, 0x97, 0xfe, 0xfa, 0xd0, 0x1b, 0x0d, 0x8e, 0x76,
0x0e, 0x29, 0x69, 0x87, 0x27, 0x0d, 0x5b, 0x60, 0x22, 0xd9, 0x67, 0x70, 0x77, 0x3c, 0xbd, 0x0a,
0xd3, 0x24, 0x5e, 0xf8, 0xf6, 0x57, 0xfb, 0x5a, 0x50, 0xb6, 0x07, 0xbd, 0x52, 0x86, 0x72, 0x56,
0xfa, 0x30, 0x74, 0x46, 0xdd, 0x40, 0x4b, 0x6c, 0x1f, 0xd6, 0x31, 0xf9, 0x2f, 0xe7, 0xb9, 0xf0,
0x07, 0x64, 0xa9, 0x64, 0xf6, 0x09, 0xec, 0x61, 0x55, 0x4a, 0xf9, 0xbc, 0xce, 0xd6, 0x8b, 0x22,
0x89, 0x84, 0xbf, 0x41, 0x89, 0x59, 0x61, 0xc5, 0xbd, 0x72, 0x51, 0x24, 0x59, 0xec, 0x6f, 0xd2,
0xe1, 0xb5, 0x44, 0xf5, 0x20, 0x8f, 0xa7, 0xaf, 0xf3, 0xa4, 0x10, 0x2f, 0x93, 0x0b, 0xe1, 0xdf,
0x25, 0x44, 0x4b, 0xcf, 0x76, 0xa1, 0x9b, 0x4c, 0x63, 0xf1, 0xda, 0xbf, 0x47, 0x00, 0x25, 0x60,
0xb4, 0x79, 0x21, 0xc6, 0x64, 0xd8, 0x22, 0x43, 0x25, 0x23, 0x1f, 0x54, 0x05, 0x94, 0x79, 0x5b,
0xf1, 0xa1, 0xa1, 0xe2, 0xbf, 0x7a, 0xb0, 0xd1, 0x4c, 0x12, 0xba, 0x84, 0x51, 0x94, 0xcd, 0xa6,
0x92, 0xea, 0xa8, 0xc8, 0xd8, 0x54, 0xb1, 0xfb, 0xd0, 0x2f, 0x65, 0x58, 0x48, 0x8a, 0x55, 0xb1,
0xb0, 0x56, 0x98, 0x84, 0xfe, 0x26, 0x4c, 0x67, 0x42, 0xd3, 0xd0, 0x56, 0x9b, 0x48, 0x95, 0x43,
0xc5, 0x44, 0x5b, 0x8d, 0x3b, 0x22, 0x87, 0xd5, 0x6a, 0x5d, 0xb5, 0x63, 0xa5, 0xb0, 0x28, 0xad,
0x16, 0xea, 0xb5, 0x28, 0x5d, 0x95, 0x41, 0x97, 0x7c, 0xcd, 0x28, 0xf9, 0x7b, 0xb0, 0xb9, 0xc0,
0xaa, 0x1a, 0xac, 0xd3, 0x2e, 0xa6, 0x12, 0x29, 0x2e, 0xea, 0x32, 0xf5, 0x09, 0xd2, 0xd0, 0x60,
0x9c, 0x79, 0x21, 0xbe, 0x6a, 0x72, 0xaa, 0x56, 0x60, 0xa1, 0x0a, 0xca, 0xf1, 0x38, 0x26, 0x5a,
0xf5, 0x83, 0x4a, 0xe6, 0xbf, 0x3b, 0xb0, 0x75, 0x5c, 0x96, 0x42, 0x52, 0x98, 0xba, 0x14, 0x07,
0x00, 0x0a, 0x40, 0xdb, 0x39, 0x6a, 0xbb, 0x5a, 0x83, 0x0b, 0x4e, 0xe4, 0x5c, 0x1d, 0xd8, 0xa5,
0x03, 0x57, 0xb2, 0xb2, 0x45, 0xca, 0xe6, 0x2d, 0x6c, 0x51, 0x65, 0x13, 0xf2, 0xa7, 0x66, 0xc6,
0x2b, 0x99, 0xff, 0xe1, 0xc1, 0x8e, 0xd1, 0xa1, 0x8e, 0x23, 0xcc, 0x1e, 0x7b, 0x04, 0x3d, 0x45,
0x1b, 0x8a, 0x63, 0x70, 0xb4, 0xaf, 0x2f, 0x98, 0x81, 0x3d, 0x25, 0xc4, 0xd9, 0x9d, 0x40, 0x63,
0xd1, 0x4b, 0xdd, 0x57, 0x8a, 0x6f, 0x85, 0x97, 0xa2, 0x1f, 0x7a, 0x29, 0x2c, 0xfb, 0x18, 0xba,
0x85, 0xc8, 0xc3, 0x39, 0x05, 0x3e, 0x38, 0x7a, 0x67, 0x99, 0x53, 0x80, 0x80, 0xb3, 0x3b, 0x81,
0x42, 0xe2, 0x46, 0x61, 0x9e, 0x8b, 0x69, 0x4c, 0x07, 0x5a, 0xb1, 0xd1, 0x31, 0x21, 0x70, 0x23,
0x85, 0x65, 0x87, 0xd0, 0x39, 0x17, 0x22, 0x26, 0x4a, 0x0d, 0x8e, 0xfc, 0x65, 0x3e, 0xcf, 0x84,
0x40, 0x0f, 0xc2, 0x61, 0x60, 0x51, 0x9a, 0x95, 0x8a, 0x5e, 0x2b, 0x02, 0x3b, 0x45, 0x00, 0x06,
0x46, 0x48, 0x0c, 0xec, 0x22, 0x9c, 0x86, 0xaf, 0x54, 0xd3, 0x5b, 0x11, 0xd8, 0x97, 0x84, 0xc0,
0xc0, 0x14, 0x96, 0xdd, 0x05, 0x57, 0xce, 0x35, 0x83, 0x5c, 0x39, 0x3f, 0x59, 0x83, 0xee, 0x15,
0x72, 0x9d, 0xff, 0xe9, 0x58, 0xe5, 0x51, 0xae, 0x76, 0xe3, 0x77, 0x6e, 0xd6, 0xf8, 0xdd, 0xdb,
0x34, 0x7e, 0x6f, 0x55, 0xe3, 0xaf, 0x5b, 0x5b, 0xa7, 0xd9, 0xda, 0xf8, 0x43, 0xd8, 0x36, 0xd3,
0x8f, 0xcd, 0xe3, 0x00, 0xa0, 0x9c, 0xe5, 0xa2, 0x40, 0xa1, 0xf4, 0x9d, 0xa1, 0x87, 0x53, 0xa2,
0xd6, 0xf0, 0xc7, 0xd6, 0xf9, 0x14, 0xa5, 0x5a, 0xc3, 0xcf, 0x69, 0x0f, 0x3f, 0xfe, 0xb5, 0xe5,
0xaa, 0x78, 0x75, 0x8b, 0x09, 0xbb, 0xab, 0xb3, 0xac, 0x9b, 0x9a, 0x4e, 0xf9, 0x77, 0xc0, 0xda,
0xcc, 0xbb, 0xc5, 0xaa, 0xcd, 0x6b, 0xef, 0x5a, 0xd7, 0xfe, 0x37, 0xbb, 0x9c, 0x8a, 0xa2, 0xff,
0xcd, 0xea, 0x37, 0x6f, 0xc5, 0xfc, 0x07, 0xab, 0x54, 0xc8, 0x7a, 0x63, 0x0c, 0x3a, 0xd6, 0x18,
0xdc, 0x85, 0x6e, 0xae, 0xfb, 0x8e, 0x37, 0x72, 0x03, 0x25, 0x20, 0x13, 0xae, 0xb2, 0x74, 0x76,
0x81, 0xfb, 0x78, 0xc8, 0x04, 0x25, 0xf1, 0xcf, 0xad, 0x14, 0xd2, 0x1d, 0xb9, 0xf9, 0x21, 0xf9,
0x5f, 0x2e, 0xec, 0x06, 0x22, 0x12, 0x49, 0x2e, 0xff, 0xe9, 0xeb, 0xc9, 0x7c, 0x9d, 0xb8, 0xad,
0xd7, 0x89, 0x35, 0xf6, 0xbc, 0xf6, 0xd8, 0xab, 0x47, 0x47, 0xc7, 0x18, 0x1d, 0xd5, 0x54, 0xee,
0x36, 0xa7, 0x32, 0x87, 0x0d, 0x55, 0x07, 0x3d, 0x0d, 0x7a, 0xe4, 0x63, 0xe8, 0x30, 0x7a, 0x25,
0xbf, 0xa8, 0x86, 0x86, 0x9a, 0x4a, 0xb6, 0xda, 0xa8, 0xf2, 0xba, 0x55, 0xe5, 0xe6, 0xfc, 0xef,
0x9b, 0xf3, 0xbf, 0xcd, 0x2f, 0x3d, 0x59, 0x6e, 0x9e, 0x37, 0x06, 0x9d, 0xb0, 0xce, 0x18, 0xfd,
0x37, 0xa2, 0xf1, 0xac, 0x68, 0xaa, 0x6c, 0x74, 0x1a, 0xd9, 0xe0, 0xcf, 0x61, 0x77, 0x49, 0x18,
0x25, 0x7b, 0x04, 0x6b, 0x85, 0x7e, 0xb7, 0x39, 0xf4, 0x6e, 0xdb, 0x5f, 0xde, 0xeb, 0xe9, 0xf9,
0xb6, 0x80, 0xf2, 0x2f, 0x90, 0x0d, 0x97, 0x06, 0x64, 0x3c, 0x3d, 0xcf, 0x6e, 0x41, 0xa8, 0x37,
0x2e, 0xbc, 0x1b, 0x88, 0xdc, 0x24, 0xe5, 0xac, 0x28, 0xc4, 0x54, 0xd2, 0x4a, 0x75, 0xad, 0x1d,
0xa3, 0xd6, 0xff, 0xdb, 0x37, 0x38, 0x3f, 0x85, 0xb7, 0x96, 0xe5, 0xb4, 0xc4, 0x60, 0xad, 0xec,
0x2d, 0xda, 0x76, 0x4b, 0xcf, 0xbf, 0x85, 0xfb, 0xd7, 0x64, 0xb5, 0x64, 0x9f, 0x22, 0x39, 0xce,
0xb3, 0x45, 0xb1, 0xb9, 0x2e, 0xf6, 0x35, 0x3e, 0x81, 0x72, 0xe0, 0x47, 0xe0, 0xdb, 0xe1, 0x9d,
0xcc, 0xf5, 0xe5, 0x58, 0x51, 0x2c, 0xfe, 0x00, 0xf6, 0xda, 0x3e, 0x94, 0x86, 0x05, 0xa9, 0x9d,
0x9a, 0xd4, 0xfc, 0x7d, 0xd8, 0xb1, 0xe3, 0x18, 0x3f, 0x29, 0xd9, 0x16, 0x78, 0xe3, 0x27, 0x8b,
0x13, 0xe3, 0x5f, 0xfe, 0x3d, 0x1e, 0xf2, 0x72, 0x09, 0x41, 0xf5, 0xe2, 0xff, 0xea, 0x6e, 0xf1,
0x09, 0x1c, 0xac, 0x5a, 0xbd, 0xee, 0x1a, 0x37, 0x5c, 0xbf, 0x4e, 0x8c, 0x6b, 0x24, 0xe6, 0x0c,
0xde, 0xb6, 0x8f, 0xba, 0xb8, 0x90, 0x1f, 0xd9, 0x17, 0x72, 0xe9, 0x87, 0x54, 0x75, 0x13, 0x7f,
0x6c, 0xa7, 0xf8, 0xd6, 0x1d, 0xe6, 0xba, 0xf9, 0xf8, 0x14, 0xd7, 0x5f, 0x16, 0x29, 0xfb, 0x10,
0x7a, 0x0a, 0xa5, 0xdf, 0xa3, 0x4b, 0xe3, 0xd4, 0x90, 0x49, 0x8f, 0x3e, 0xc2, 0x1f, 0xfe, 0x1d,
0x00, 0x00, 0xff, 0xff, 0xd0, 0x3f, 0xd2, 0x26, 0x9b, 0x0f, 0x00, 0x00,
// 1127 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x57, 0xef, 0x6e, 0xdc, 0x44,
0x10, 0xaf, 0xed, 0xfb, 0x93, 0x9b, 0xcb, 0xb5, 0xe9, 0x26, 0x04, 0x13, 0xa2, 0xe8, 0xb4, 0x42,
0xe2, 0x04, 0x25, 0x12, 0xd7, 0x0a, 0x51, 0x21, 0x21, 0x92, 0x6b, 0xab, 0x9c, 0x54, 0xa4, 0xca,
0x14, 0x84, 0x10, 0x20, 0xf9, 0xec, 0x4d, 0xb1, 0xe4, 0xd8, 0x8e, 0xbd, 0x17, 0x7a, 0x7c, 0xa7,
0x5f, 0x79, 0x01, 0x5e, 0x80, 0x17, 0xe0, 0x3d, 0x78, 0x23, 0xb4, 0xb3, 0xeb, 0x7f, 0xeb, 0x73,
0x74, 0x07, 0x7c, 0xe2, 0x4b, 0x94, 0x9d, 0xfd, 0xcd, 0x7a, 0xe6, 0x37, 0xbf, 0x9d, 0xd9, 0x83,
0x7d, 0x2f, 0x0e, 0x43, 0x97, 0xb3, 0xd4, 0x0d, 0x83, 0x5f, 0xd8, 0x69, 0x92, 0xc6, 0x3c, 0x26,
0x5d, 0xbe, 0x4a, 0x58, 0x46, 0xff, 0xea, 0xc0, 0x68, 0x56, 0xdd, 0x26, 0x13, 0xb8, 0x57, 0xc3,
0xcf, 0x7d, 0xdb, 0x18, 0x1b, 0x93, 0x81, 0xa3, 0x9b, 0x09, 0x85, 0x5d, 0x1e, 0x73, 0x37, 0x3c,
0x77, 0x43, 0x37, 0xf2, 0x98, 0x6d, 0x8e, 0x8d, 0x89, 0xe5, 0xd4, 0x6c, 0x64, 0x0c, 0x43, 0x9f,
0x2d, 0xf8, 0x8c, 0x05, 0x61, 0x10, 0xbd, 0xb2, 0x2d, 0x84, 0x54, 0x4d, 0xe4, 0x03, 0xd8, 0x0b,
0x83, 0xeb, 0x65, 0xe0, 0xbb, 0x3c, 0x88, 0x23, 0x47, 0xfc, 0xb5, 0x3b, 0x63, 0x63, 0x62, 0x3a,
0x0d, 0x3b, 0x79, 0x00, 0xf7, 0x33, 0xee, 0x2e, 0x82, 0x30, 0xe0, 0xab, 0x67, 0x8c, 0x49, 0x70,
0x17, 0xc1, 0xcd, 0x0d, 0x72, 0x02, 0xe0, 0xa5, 0xcc, 0xe5, 0xec, 0xcc, 0xf7, 0x53, 0xbb, 0x87,
0x49, 0x54, 0x2c, 0xc4, 0x86, 0xfe, 0x42, 0x85, 0xde, 0xc7, 0xb8, 0xf2, 0x25, 0x79, 0x0c, 0xa3,
0x45, 0x9c, 0xa6, 0xf1, 0xcf, 0x0e, 0xf3, 0xe2, 0xd4, 0xcf, 0xec, 0x9d, 0xb1, 0x35, 0x19, 0x4e,
0xf7, 0x4f, 0x91, 0xb4, 0xd3, 0xf3, 0xca, 0x9e, 0x53, 0x47, 0x92, 0xcf, 0xe0, 0xee, 0x3c, 0xba,
0x71, 0xc3, 0xc0, 0xcf, 0x7d, 0x07, 0xed, 0xbe, 0x1a, 0x94, 0x1c, 0x42, 0x2f, 0xe3, 0x2e, 0x5f,
0x66, 0x36, 0x8c, 0x8d, 0x49, 0xd7, 0x51, 0x2b, 0xf2, 0x09, 0x1c, 0x0a, 0xe6, 0x33, 0xfe, 0xbc,
0x64, 0xe4, 0x45, 0x1a, 0x78, 0xcc, 0x1e, 0x62, 0xf2, 0x2d, 0xbb, 0xe2, 0xbc, 0x84, 0xa5, 0x41,
0xec, 0xdb, 0xbb, 0x98, 0xa0, 0x5a, 0x21, 0xe7, 0xe8, 0xf1, 0xf4, 0x75, 0x12, 0xa4, 0xec, 0x65,
0x70, 0xc5, 0xec, 0x11, 0x22, 0x1a, 0x76, 0x72, 0x00, 0xdd, 0x20, 0xf2, 0xd9, 0x6b, 0xfb, 0x2e,
0x02, 0xe4, 0x82, 0x1c, 0xc1, 0x4e, 0x92, 0xb2, 0x39, 0x6e, 0xdc, 0xc3, 0x8d, 0x62, 0x4d, 0xff,
0xb4, 0x60, 0xb7, 0x9a, 0xa6, 0x10, 0x81, 0xeb, 0x79, 0xf1, 0x32, 0xe2, 0x58, 0x09, 0x29, 0xa7,
0xaa, 0x89, 0x1c, 0xc3, 0x20, 0xe3, 0x6e, 0xca, 0x31, 0x12, 0xa9, 0xa3, 0xd2, 0x50, 0x97, 0xe4,
0x37, 0x6e, 0xb8, 0x64, 0x4a, 0x48, 0xba, 0xb9, 0x8e, 0x94, 0x0c, 0x49, 0x2d, 0xe9, 0x66, 0xf1,
0x45, 0xa1, 0x42, 0x79, 0x5a, 0x57, 0x7e, 0xb1, 0x30, 0x68, 0xa2, 0x94, 0x07, 0xf5, 0x1a, 0xa2,
0x2c, 0x48, 0x56, 0x45, 0xeb, 0xd7, 0x8a, 0xf6, 0x1e, 0x8c, 0x72, 0xac, 0x64, 0x78, 0x07, 0xbf,
0x52, 0x37, 0x0a, 0x91, 0xb2, 0xb2, 0x08, 0x03, 0x84, 0x54, 0x2c, 0x22, 0xce, 0x24, 0x65, 0x5f,
0x55, 0x55, 0x51, 0x1a, 0x44, 0x19, 0x52, 0xe4, 0x78, 0xee, 0xa3, 0x14, 0x06, 0x4e, 0xb1, 0x2e,
0x0b, 0xb7, 0xdb, 0x56, 0xb8, 0x91, 0x56, 0xb8, 0x37, 0x06, 0xec, 0x9d, 0x65, 0x19, 0xe3, 0x98,
0x98, 0x2a, 0xde, 0x09, 0x80, 0x3c, 0x12, 0x03, 0x34, 0x64, 0x80, 0xa5, 0x45, 0x1c, 0xb8, 0xe0,
0x2b, 0x49, 0x91, 0x89, 0x14, 0x15, 0x6b, 0xb9, 0xe7, 0xc9, 0x3d, 0x2b, 0xdf, 0xf3, 0x8a, 0x3d,
0xc6, 0x7f, 0xaa, 0xd6, 0xa8, 0x58, 0xd3, 0xdf, 0x2d, 0xd8, 0xaf, 0x75, 0xa5, 0x33, 0x4f, 0xf0,
0x4d, 0x1e, 0x41, 0x4f, 0xde, 0x5f, 0x8c, 0x63, 0x38, 0x3d, 0x52, 0x97, 0xaa, 0x86, 0x9d, 0x21,
0xe2, 0xe2, 0x8e, 0xa3, 0xb0, 0xc2, 0x4b, 0xde, 0x51, 0x8c, 0xaf, 0xc5, 0x4b, 0x0a, 0x56, 0x78,
0x49, 0x2c, 0xf9, 0x18, 0xba, 0x29, 0x4b, 0xdc, 0x15, 0x06, 0x3e, 0x9c, 0xbe, 0xb3, 0xce, 0xc9,
0x11, 0x80, 0x8b, 0x3b, 0x8e, 0x44, 0x8a, 0x0f, 0xb9, 0x49, 0xc2, 0x22, 0x1f, 0x13, 0x6a, 0xf9,
0xd0, 0x19, 0x22, 0xc4, 0x87, 0x24, 0x96, 0x9c, 0x42, 0xe7, 0x92, 0x31, 0x1f, 0x45, 0x38, 0x9c,
0xda, 0xeb, 0x7c, 0x9e, 0x31, 0x26, 0x3c, 0x10, 0x27, 0x02, 0xf3, 0xc2, 0x38, 0x93, 0x82, 0x6c,
0x09, 0x6c, 0x26, 0x00, 0x22, 0x30, 0x44, 0x8a, 0xc0, 0xae, 0xdc, 0xc8, 0x7d, 0x25, 0x1b, 0x5d,
0x4b, 0x60, 0x5f, 0x22, 0x42, 0x04, 0x26, 0xb1, 0xe4, 0x2e, 0x98, 0x7c, 0xa5, 0x34, 0x67, 0xf2,
0xd5, 0x79, 0x1f, 0xba, 0x37, 0xe2, 0x76, 0xd0, 0x3f, 0x0c, 0xad, 0x3c, 0xd2, 0x55, 0x6f, 0xf6,
0xc6, 0x66, 0xcd, 0xde, 0xdc, 0xa6, 0xd9, 0x5b, 0x6d, 0xcd, 0xbe, 0x6c, 0x75, 0x9d, 0x6a, 0xab,
0xa3, 0x0f, 0xe1, 0x7e, 0x9d, 0x7e, 0xd1, 0x6e, 0x4e, 0x00, 0xb2, 0x65, 0xc2, 0x52, 0xb1, 0xc8,
0x6c, 0x63, 0x6c, 0x89, 0xc9, 0x50, 0x5a, 0xe8, 0x63, 0x2d, 0x3f, 0x29, 0xa9, 0xc6, 0xc0, 0x33,
0x9a, 0x03, 0x8f, 0x7e, 0xad, 0xb9, 0x4a, 0x5d, 0x6d, 0x31, 0x55, 0x0f, 0x14, 0xcb, 0xaa, 0x0d,
0x2a, 0xca, 0xbf, 0x03, 0xd2, 0x54, 0xde, 0x16, 0xa7, 0x56, 0x1b, 0x85, 0x59, 0x6f, 0x14, 0xf4,
0x57, 0xbd, 0x9c, 0x52, 0xa2, 0xff, 0xcd, 0xe9, 0x9b, 0x37, 0x6f, 0xfa, 0x83, 0x56, 0x2a, 0xa1,
0x7a, 0x71, 0xb4, 0xc0, 0xbd, 0x5c, 0x25, 0x92, 0xef, 0xae, 0x53, 0xac, 0x05, 0x55, 0x89, 0xea,
0x3b, 0xd6, 0xc4, 0x74, 0xe4, 0x42, 0x28, 0xe1, 0x26, 0x0e, 0x97, 0x57, 0xe2, 0x3b, 0x96, 0x50,
0x82, 0x5c, 0xd1, 0xcf, 0x35, 0x0a, 0xf1, 0x8e, 0x6c, 0x9e, 0x24, 0x7d, 0x63, 0xc2, 0x81, 0xc3,
0x3c, 0x16, 0x24, 0xfc, 0x9f, 0xbe, 0x98, 0xea, 0x2f, 0x12, 0xb3, 0xf1, 0x22, 0xd1, 0x06, 0xa5,
0xd5, 0x1c, 0x94, 0x55, 0xa6, 0x3b, 0x1a, 0xd3, 0xe5, 0x20, 0xea, 0xd6, 0x06, 0xd1, 0x31, 0x0c,
0x5e, 0x14, 0x23, 0xa4, 0x27, 0x47, 0x48, 0x61, 0x28, 0xc7, 0x44, 0xbf, 0x6d, 0x4c, 0xec, 0x68,
0x63, 0xa2, 0xa1, 0x17, 0x35, 0x29, 0x36, 0xe7, 0x81, 0x40, 0xc7, 0x2d, 0x19, 0xc0, 0xff, 0x6b,
0x99, 0x59, 0x6d, 0xa3, 0xac, 0x53, 0x89, 0x91, 0x3e, 0x87, 0x83, 0x35, 0x61, 0x64, 0xe4, 0x11,
0xf4, 0x53, 0xf5, 0xf6, 0x32, 0xf0, 0xed, 0x75, 0xb4, 0xbe, 0x77, 0xe3, 0x13, 0x2c, 0x87, 0xd2,
0x2f, 0x44, 0x75, 0xaf, 0x6b, 0x90, 0x79, 0x74, 0x19, 0x6f, 0x21, 0x90, 0xdf, 0x4c, 0x78, 0xd7,
0x61, 0x49, 0x5d, 0x64, 0xcb, 0x34, 0x65, 0x11, 0xc7, 0x93, 0xca, 0xfa, 0x18, 0xb5, 0xfa, 0xfc,
0x6f, 0xdf, 0xd1, 0x74, 0x06, 0x6f, 0xad, 0xe3, 0x34, 0x13, 0xc1, 0x6a, 0xec, 0xe5, 0x6d, 0xb8,
0x61, 0xa7, 0xdf, 0xc2, 0xf1, 0x2d, 0xac, 0x66, 0xe4, 0x53, 0x21, 0x8e, 0xcb, 0x38, 0x2f, 0x36,
0x55, 0xc5, 0xbe, 0xc5, 0xc7, 0x91, 0x0e, 0x74, 0x0a, 0xb6, 0x1e, 0xde, 0xf9, 0x4a, 0x5d, 0x8b,
0x96, 0x62, 0xd1, 0x07, 0x70, 0xd8, 0xf4, 0x41, 0x1a, 0x72, 0x51, 0x1b, 0xa5, 0xa8, 0xe9, 0xfb,
0xb0, 0xaf, 0xc7, 0x31, 0x7f, 0x92, 0x91, 0x3d, 0xb0, 0xe6, 0x4f, 0xf2, 0x8c, 0xc5, 0xbf, 0xf4,
0x7b, 0x91, 0xe4, 0xf5, 0x1a, 0x81, 0xaa, 0xc3, 0xff, 0xd5, 0xdd, 0xa2, 0x0b, 0x38, 0x69, 0x3b,
0x5d, 0xa5, 0xbb, 0xf9, 0xf9, 0x25, 0x31, 0x66, 0x8d, 0x98, 0x0b, 0x78, 0x5b, 0x4f, 0x35, 0xbf,
0x90, 0x1f, 0xe9, 0x17, 0x72, 0xed, 0x8f, 0xa1, 0xe2, 0x26, 0xfe, 0xd8, 0xa4, 0x78, 0xeb, 0x0e,
0x73, 0xdb, 0xbc, 0x7b, 0x2a, 0xce, 0x5f, 0x17, 0x29, 0xf9, 0x10, 0x7a, 0x12, 0xa5, 0xde, 0x97,
0x6b, 0xe3, 0x54, 0x90, 0x45, 0x0f, 0x7f, 0x48, 0x3f, 0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x61,
0x4f, 0x4b, 0xb2, 0x5f, 0x0f, 0x00, 0x00,
}
......@@ -26,7 +26,7 @@ const (
// Collateralize name
const (
CollateralizeX = "collateralize"
CCNYTokenName = "ccny"
CCNYTokenName = "CCNY"
CollateralizePreLiquidationRatio = 1.1 //TODO 预清算比例,抵押物价值跌到借出ccny价值110%的时候开始清算
)
......@@ -36,11 +36,12 @@ const (
CollateralizeStatusClose
)
const (
CollateralizeAssetTypeBty = 1 + iota
CollateralizeAssetTypeBtc
CollateralizeAssetTypeEth
)
//暂时只支持bty
//const (
// CollateralizeAssetTypeBty = 1 + iota
// CollateralizeAssetTypeBtc
// CollateralizeAssetTypeEth
//)
const (
CollateralizeUserStatusCreate = 1 + iota
......
......@@ -32,12 +32,6 @@ const (
ExpireWarningTime = 3600 * 24 * 10 // 提前10天超时预警
)
const (
priceFeedKey = "issuance-price-feed"
guarantorKey = "issuance-guarantor"
manageKey = "issuance-manage"
)
func getManageKey(key string, db dbm.KV) ([]byte, error) {
manageKey := types.ManageKey(key)
value, err := db.Get([]byte(manageKey))
......@@ -48,7 +42,7 @@ func getManageKey(key string, db dbm.KV) ([]byte, error) {
}
func getGuarantorAddr(db dbm.KV) (string, error) {
value, err := getManageKey(guarantorKey, db)
value, err := getManageKey(pty.GuarantorKey, db)
if err != nil {
clog.Error("IssuancePriceFeed", "getGuarantorAddr", err)
return "", err
......@@ -323,7 +317,7 @@ func (action *Action) IssuanceManage(manage *pty.IssuanceManage) (*types.Receipt
var receipt *types.Receipt
// 是否配置管理用户
if !isRightAddr(manageKey, action.fromaddr, action.db) {
if !isRightAddr(pty.ManageKey, action.fromaddr, action.db) {
clog.Error("IssuanceManage", "addr", action.fromaddr, "error", "Address has no permission to config")
return nil, pty.ErrPermissionDeny
}
......@@ -384,7 +378,7 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt
var receipt *types.Receipt
// 是否配置管理用户
if !isRightAddr(manageKey, action.fromaddr, action.db) {
if !isRightAddr(pty.ManageKey, action.fromaddr, action.db) {
clog.Error("IssuanceCreate", "addr", action.fromaddr, "error", "Address has no permission to create")
return nil, pty.ErrPermissionDeny
}
......@@ -859,7 +853,7 @@ func (action *Action) IssuanceFeed(feed *pty.IssuanceFeed) (*types.Receipt, erro
}
// 是否后台管理用户
if !isRightAddr(priceFeedKey, action.fromaddr, action.db) {
if !isRightAddr(pty.PriceFeedKey, action.fromaddr, action.db) {
clog.Error("IssuancePriceFeed", "addr", action.fromaddr, "error", "Address has no permission to feed price")
return nil, pty.ErrPermissionDeny
}
......@@ -933,7 +927,7 @@ func (action *Action) IssuanceClose(close *pty.IssuanceClose) (*types.Receipt, e
return nil, err
}
if !isRightAddr(manageKey, action.fromaddr, action.db) {
if !isRightAddr(pty.ManageKey, action.fromaddr, action.db) {
clog.Error("IssuanceClose", "addr", action.fromaddr, "error", "Address has no permission to close")
return nil, pty.ErrPermissionDeny
}
......
......@@ -41,4 +41,10 @@ const (
IssuanceUserStatusExpire
IssuanceUserStatusExpireLiquidate
IssuanceUserStatusClose
)
const (
PriceFeedKey = "issuance-price-feed"
GuarantorKey = "issuance-guarantor"
ManageKey = "issuance-manage"
)
\ 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