Commit 2f57d651 authored by pengjun's avatar pengjun

#627 update balance value to float64

parent 2e4b635d
...@@ -44,7 +44,7 @@ func CollateralizeCreateRawTxCmd() *cobra.Command { ...@@ -44,7 +44,7 @@ func CollateralizeCreateRawTxCmd() *cobra.Command {
} }
func addCollateralizeCreateFlags(cmd *cobra.Command) { func addCollateralizeCreateFlags(cmd *cobra.Command) {
cmd.Flags().Uint64P("balance", "b", 0, "balance") cmd.Flags().Float64P("balance", "b", 0, "balance")
cmd.MarkFlagRequired("balance") cmd.MarkFlagRequired("balance")
} }
...@@ -56,12 +56,12 @@ func CollateralizeCreate(cmd *cobra.Command, args []string) { ...@@ -56,12 +56,12 @@ func CollateralizeCreate(cmd *cobra.Command, args []string) {
} }
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
balance, _ := cmd.Flags().GetUint64("balance") balance, _ := cmd.Flags().GetFloat64("balance")
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: cfg.ExecName(pkt.CollateralizeX), Execer: cfg.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeCreate", ActionName: "CollateralizeCreate",
Payload: []byte(fmt.Sprintf("{\"totalBalance\":%d}", balance)), Payload: []byte(fmt.Sprintf("{\"totalBalance\":%f}", balance)),
} }
var res string var res string
...@@ -83,7 +83,7 @@ func CollateralizeBorrowRawTxCmd() *cobra.Command { ...@@ -83,7 +83,7 @@ func CollateralizeBorrowRawTxCmd() *cobra.Command {
func addCollateralizeBorrowFlags(cmd *cobra.Command) { func addCollateralizeBorrowFlags(cmd *cobra.Command) {
cmd.Flags().StringP("collateralizeID", "g", "", "collateralize ID") cmd.Flags().StringP("collateralizeID", "g", "", "collateralize ID")
cmd.MarkFlagRequired("collateralizeID") cmd.MarkFlagRequired("collateralizeID")
cmd.Flags().Uint64P("value", "v", 0, "value") cmd.Flags().Float64P("value", "v", 0, "value")
cmd.MarkFlagRequired("value") cmd.MarkFlagRequired("value")
} }
...@@ -96,12 +96,12 @@ func CollateralizeBorrow(cmd *cobra.Command, args []string) { ...@@ -96,12 +96,12 @@ func CollateralizeBorrow(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
collateralizeID, _ := cmd.Flags().GetString("collateralizeID") collateralizeID, _ := cmd.Flags().GetString("collateralizeID")
value, _ := cmd.Flags().GetUint64("value") value, _ := cmd.Flags().GetFloat64("value")
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: cfg.ExecName(pkt.CollateralizeX), Execer: cfg.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeBorrow", ActionName: "CollateralizeBorrow",
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\",\"value\":%d}", collateralizeID, value)), Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\",\"value\":%f}", collateralizeID, value)),
} }
var res string var res string
...@@ -125,7 +125,7 @@ func addCollateralizeAppendFlags(cmd *cobra.Command) { ...@@ -125,7 +125,7 @@ func addCollateralizeAppendFlags(cmd *cobra.Command) {
cmd.MarkFlagRequired("collateralizeID") cmd.MarkFlagRequired("collateralizeID")
cmd.Flags().StringP("recordID", "r", "", "recordID") cmd.Flags().StringP("recordID", "r", "", "recordID")
cmd.MarkFlagRequired("recordID") cmd.MarkFlagRequired("recordID")
cmd.Flags().Uint64P("value", "v", 0, "value") cmd.Flags().Float64P("value", "v", 0, "value")
cmd.MarkFlagRequired("value") cmd.MarkFlagRequired("value")
} }
...@@ -139,12 +139,12 @@ func CollateralizeAppend(cmd *cobra.Command, args []string) { ...@@ -139,12 +139,12 @@ func CollateralizeAppend(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
collateralizeID, _ := cmd.Flags().GetString("collateralizeID") collateralizeID, _ := cmd.Flags().GetString("collateralizeID")
recordID, _ := cmd.Flags().GetString("recordID") recordID, _ := cmd.Flags().GetString("recordID")
value, _ := cmd.Flags().GetUint64("value") value, _ := cmd.Flags().GetFloat64("value")
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: cfg.ExecName(pkt.CollateralizeX), Execer: cfg.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeAppend", ActionName: "CollateralizeAppend",
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\", \"recordID\":\"%s\", \"value\":%d}", collateralizeID, recordID, value)), Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\", \"recordID\":\"%s\", \"value\":%f}", collateralizeID, recordID, value)),
} }
var res string var res string
...@@ -204,7 +204,7 @@ func CollateralizePriceFeedRawTxCmd() *cobra.Command { ...@@ -204,7 +204,7 @@ func CollateralizePriceFeedRawTxCmd() *cobra.Command {
} }
func addCollateralizePriceFeedFlags(cmd *cobra.Command) { func addCollateralizePriceFeedFlags(cmd *cobra.Command) {
cmd.Flags().Float32P("price", "p", 0, "price") cmd.Flags().Float64P("price", "p", 0, "price")
cmd.MarkFlagRequired("price") cmd.MarkFlagRequired("price")
cmd.Flags().Uint64P("volume", "v", 0, "volume") cmd.Flags().Uint64P("volume", "v", 0, "volume")
cmd.MarkFlagRequired("volume") cmd.MarkFlagRequired("volume")
...@@ -246,7 +246,7 @@ func CollateralizeRetrieveRawTxCmd() *cobra.Command { ...@@ -246,7 +246,7 @@ func CollateralizeRetrieveRawTxCmd() *cobra.Command {
func addCollateralizeRetrieveFlags(cmd *cobra.Command) { func addCollateralizeRetrieveFlags(cmd *cobra.Command) {
cmd.Flags().StringP("collateralizeID", "g", "", "collateralize ID") cmd.Flags().StringP("collateralizeID", "g", "", "collateralize ID")
cmd.MarkFlagRequired("collateralizeID") cmd.MarkFlagRequired("collateralizeID")
cmd.Flags().StringP("balance", "b", "", "retrieve balance") cmd.Flags().Float64P("balance", "b", 0, "retrieve balance")
cmd.MarkFlagRequired("balance") cmd.MarkFlagRequired("balance")
} }
...@@ -259,12 +259,12 @@ func CollateralizeRetrieve(cmd *cobra.Command, args []string) { ...@@ -259,12 +259,12 @@ func CollateralizeRetrieve(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
collateralizeID, _ := cmd.Flags().GetString("collateralizeID") collateralizeID, _ := cmd.Flags().GetString("collateralizeID")
balance, _ := cmd.Flags().GetInt64("balance") balance, _ := cmd.Flags().GetFloat64("balance")
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: cfg.ExecName(pkt.CollateralizeX), Execer: cfg.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeRetrieve", ActionName: "CollateralizeRetrieve",
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\", \"balance\": %d}", collateralizeID, balance)), Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\", \"balance\": %f}", collateralizeID, balance)),
} }
var res string var res string
...@@ -284,11 +284,11 @@ func CollateralizeManageRawTxCmd() *cobra.Command { ...@@ -284,11 +284,11 @@ func CollateralizeManageRawTxCmd() *cobra.Command {
} }
func addCollateralizeManageFlags(cmd *cobra.Command) { func addCollateralizeManageFlags(cmd *cobra.Command) {
cmd.Flags().Uint64P("debtCeiling", "d", 0, "debtCeiling") cmd.Flags().Float64P("debtCeiling", "d", 0, "debtCeiling")
cmd.Flags().Float32P("liquidationRatio", "l", 0, "liquidationRatio") cmd.Flags().Float64P("liquidationRatio", "l", 0, "liquidationRatio")
cmd.Flags().Float32P("stabilityFeeRatio", "s", 0, "stabilityFeeRatio") cmd.Flags().Float64P("stabilityFeeRatio", "s", 0, "stabilityFeeRatio")
cmd.Flags().Uint64P("period", "p", 0, "period") cmd.Flags().Uint64P("period", "p", 0, "period")
cmd.Flags().Uint64P("totalBalance", "t", 0, "totalBalance") cmd.Flags().Float64P("totalBalance", "t", 0, "totalBalance")
} }
func CollateralizeManage(cmd *cobra.Command, args []string) { func CollateralizeManage(cmd *cobra.Command, args []string) {
...@@ -299,16 +299,16 @@ func CollateralizeManage(cmd *cobra.Command, args []string) { ...@@ -299,16 +299,16 @@ func CollateralizeManage(cmd *cobra.Command, args []string) {
} }
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
debtCeiling, _ := cmd.Flags().GetUint64("debtCeiling") debtCeiling, _ := cmd.Flags().GetFloat32("debtCeiling")
liquidationRatio, _ := cmd.Flags().GetFloat32("liquidationRatio") liquidationRatio, _ := cmd.Flags().GetFloat32("liquidationRatio")
stabilityFeeRatio, _ := cmd.Flags().GetFloat32("stabilityFeeRatio") stabilityFeeRatio, _ := cmd.Flags().GetFloat32("stabilityFeeRatio")
period, _ := cmd.Flags().GetUint64("period") period, _ := cmd.Flags().GetUint64("period")
totalBalance, _ := cmd.Flags().GetUint64("totalBalance") totalBalance, _ := cmd.Flags().GetFloat32("totalBalance")
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: cfg.ExecName(pkt.CollateralizeX), Execer: cfg.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeManage", ActionName: "CollateralizeManage",
Payload: []byte(fmt.Sprintf("{\"debtCeiling\":%d, \"liquidationRatio\":%f, \"stabilityFeeRatio\":%f, \"period\":%d, \"totalBalance\":%d}", Payload: []byte(fmt.Sprintf("{\"debtCeiling\":%f, \"liquidationRatio\":%f, \"stabilityFeeRatio\":%f, \"period\":%d, \"totalBalance\":%f}",
debtCeiling, liquidationRatio, stabilityFeeRatio, period, totalBalance)), debtCeiling, liquidationRatio, stabilityFeeRatio, period, totalBalance)),
} }
......
...@@ -93,6 +93,11 @@ func initEnv() *execEnv { ...@@ -93,6 +93,11 @@ func initEnv() *execEnv {
Frozen: 0, Frozen: 0,
Addr: string(Nodes[1]), Addr: string(Nodes[1]),
} }
accountBToken := types.Account{
Balance: types.Coin/10,
Frozen: 0,
Addr: string(Nodes[1]),
}
accountC := types.Account{ accountC := types.Account{
Balance: total, Balance: total,
Frozen: 0, Frozen: 0,
...@@ -117,6 +122,8 @@ func initEnv() *execEnv { ...@@ -117,6 +122,8 @@ func initEnv() *execEnv {
accB.SetDB(stateDB) accB.SetDB(stateDB)
accB.SaveExecAccount(execAddr, &accountB) accB.SaveExecAccount(execAddr, &accountB)
manageKeySet("issuance-price-feed", accountB.Addr, stateDB) manageKeySet("issuance-price-feed", accountB.Addr, stateDB)
tokenAccB,_ := account.NewAccountDB(cfg, tokenE.GetName(), pkt.CCNYTokenName, stateDB)
tokenAccB.SaveExecAccount(execAddr, &accountBToken)
accC := account.NewCoinsAccount(cfg) accC := account.NewCoinsAccount(cfg)
accC.SetDB(stateDB) accC.SetDB(stateDB)
...@@ -584,12 +591,3 @@ func signTx(tx *types.Transaction, hexPrivKey string) (*types.Transaction, error ...@@ -584,12 +591,3 @@ func signTx(tx *types.Transaction, hexPrivKey string) (*types.Transaction, error
tx.Sign(int32(signType), privKey) tx.Sign(int32(signType), privKey)
return tx, nil return tx, nil
} }
//func TestSlice(t *testing.T) {
// var a []int
// a = append(a, 1)
// fmt.Println(a)
//
// a = append(a[:0], a[1:]...)
// fmt.Println(a)
//}
\ No newline at end of file
...@@ -12,8 +12,9 @@ import ( ...@@ -12,8 +12,9 @@ import (
"github.com/33cn/chain33/system/dapp" "github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
pty "github.com/33cn/plugin/plugin/dapp/collateralize/types" pty "github.com/33cn/plugin/plugin/dapp/collateralize/types"
tokenE "github.com/33cn/plugin/plugin/dapp/token/executor"
issuanceE "github.com/33cn/plugin/plugin/dapp/issuance/types" issuanceE "github.com/33cn/plugin/plugin/dapp/issuance/types"
tokenE "github.com/33cn/plugin/plugin/dapp/token/executor"
"math"
) )
// List control // List control
...@@ -26,11 +27,11 @@ const ( ...@@ -26,11 +27,11 @@ const (
const ( const (
Coin = types.Coin // 1e8 Coin = types.Coin // 1e8
DefaultDebtCeiling = 10000 // 默认借贷限额 DefaultDebtCeiling = 10000 * Coin // 默认借贷限额
DefaultLiquidationRatio = 0.4 // 默认质押比 DefaultLiquidationRatio = 0.4 // 默认质押比
DefaultStabilityFeeRation = 0.08 // 默认稳定费 DefaultStabilityFeeRation = 0.08 // 默认稳定费
DefaultPeriod = 3600 * 24 * 365 // 默认合约限期 DefaultPeriod = 3600 * 24 * 365 // 默认合约限期
DefaultCollTotalBalance = 0 // 默认放贷总额 DefaultTotalBalance = 0 // 默认放贷总额
PriceWarningRate = 1.3 // 价格提前预警率 PriceWarningRate = 1.3 // 价格提前预警率
ExpireWarningTime = 3600 * 24 * 10 // 提前10天超时预警 ExpireWarningTime = 3600 * 24 * 10 // 提前10天超时预警
) )
...@@ -226,8 +227,8 @@ func (action *Action) GetIndex() int64 { ...@@ -226,8 +227,8 @@ func (action *Action) GetIndex() int64 {
return action.height*types.MaxTxsPerBlock + int64(action.index) return action.height*types.MaxTxsPerBlock + int64(action.index)
} }
func getLatestLiquidationPrice(coll *pty.Collateralize) float32 { func getLatestLiquidationPrice(coll *pty.Collateralize) float64 {
var latest float32 var latest float64
for _, collRecord := range coll.BorrowRecords { for _, collRecord := range coll.BorrowRecords {
if collRecord.LiquidationPrice > latest { if collRecord.LiquidationPrice > latest {
latest = collRecord.LiquidationPrice latest = collRecord.LiquidationPrice
...@@ -273,7 +274,7 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ ...@@ -273,7 +274,7 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ
LiquidationRatio: DefaultLiquidationRatio, LiquidationRatio: DefaultLiquidationRatio,
StabilityFeeRatio: DefaultStabilityFeeRation, StabilityFeeRatio: DefaultStabilityFeeRation,
Period: DefaultPeriod, Period: DefaultPeriod,
CollTotalBalance: DefaultCollTotalBalance, TotalBalance: DefaultTotalBalance,
} }
} }
...@@ -302,10 +303,10 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ ...@@ -302,10 +303,10 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ
collConfig.DebtCeiling = manConfig.DebtCeiling collConfig.DebtCeiling = manConfig.DebtCeiling
} }
if manage.CollTotalBalance != 0 { if manage.TotalBalance != 0 {
collConfig.CollTotalBalance = manage.CollTotalBalance collConfig.TotalBalance = manage.TotalBalance
} else { } else {
collConfig.CollTotalBalance = manConfig.CollTotalBalance collConfig.TotalBalance = manConfig.TotalBalance
} }
collConfig.CurrentTime = action.blocktime collConfig.CurrentTime = action.blocktime
...@@ -376,13 +377,13 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -376,13 +377,13 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
// 根据地址查找ID // 根据地址查找ID
collateralizeIDs, err := queryCollateralizeByAddr(action.localDB, action.fromaddr, pty.CollateralizeStatusCreated, 0) collateralizeIDs, err := queryCollateralizeByAddr(action.localDB, action.fromaddr, pty.CollateralizeStatusCreated, 0)
if err != types.ErrNotFound { if err != nil && err != types.ErrNotFound {
clog.Error("CollateralizeCreate.queryCollateralizeByAddr", "addr", action.fromaddr) clog.Error("CollateralizeCreate.queryCollateralizeByAddr", "addr", action.fromaddr, "err", err)
return nil, pty.ErrCollateralizeRepeatHash return nil, err
} }
// 冻结ccny // 冻结ccny
receipt, err = action.tokenAccount.ExecFrozen(action.fromaddr, action.execaddr, create.TotalBalance * Coin) receipt, err = action.tokenAccount.ExecFrozen(action.fromaddr, action.execaddr, create.TotalBalance)
if err != nil { if err != nil {
clog.Error("CollateralizeCreate.Frozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", create.TotalBalance) clog.Error("CollateralizeCreate.Frozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", create.TotalBalance)
return nil, err return nil, err
...@@ -403,7 +404,7 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -403,7 +404,7 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
LiquidationRatio:DefaultLiquidationRatio, LiquidationRatio:DefaultLiquidationRatio,
StabilityFeeRatio:DefaultStabilityFeeRation, StabilityFeeRatio:DefaultStabilityFeeRation,
Period:DefaultPeriod, Period:DefaultPeriod,
CollTotalBalance:DefaultCollTotalBalance, TotalBalance:DefaultTotalBalance,
} }
} else { } else {
collcfg = cfg collcfg = cfg
...@@ -429,8 +430,9 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -429,8 +430,9 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
} }
coll.Collateralize = *collateralize coll.Collateralize = *collateralize
coll.TotalBalance += create.TotalBalance coll.TotalBalance += create.TotalBalance
coll.Balance += create.TotalBalance
} }
clog.Debug("CollateralizeCreate created", "CollateralizeID", collateralizeID, "TotalBalance", coll.TotalBalance) clog.Debug("CollateralizeCreate created", "CollateralizeID", collateralizeID, "TotalBalance", create.TotalBalance)
// 保存 // 保存
coll.Save(action.db) coll.Save(action.db)
...@@ -444,29 +446,28 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -444,29 +446,28 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
} }
// 根据最近抵押物价格计算需要冻结的BTY数量 // 根据最近抵押物价格计算需要冻结的BTY数量
func getBtyNumToFrozen(value int64, price float32, ratio float32) (int64,error) { func getBtyNumToFrozen(value int64, price float64, ratio float64) (int64,error) {
if price == 0 { if price == 0 {
clog.Error("Bty price should greate to 0") clog.Error("Bty price should greate to 0")
return 0, pty.ErrPriceInvalid return 0, pty.ErrPriceInvalid
} }
btyValue := float32(value)/ratio valueReal := float64(value)/1e8
btyNum := int64(btyValue/price) + 1 btyValue := valueReal/(price * ratio)
return int64(math.Trunc((btyValue+0.0000001)*1e4)) * 1e4, nil
return btyNum, nil
} }
// 计算清算价格 // 计算清算价格
// value:借出ccny数量, colValue:抵押物数量, price:抵押物价格 // value:借出ccny数量, colValue:抵押物数量, price:抵押物价格
func calcLiquidationPrice(value int64, colValue int64) float32 { func calcLiquidationPrice(value int64, colValue int64) float64 {
liquidationRation := float32(value) / float32(colValue) liquidationRation := float64(value) / float64(colValue)
liquidationPrice := liquidationRation * pty.CollateralizePreLiquidationRatio liquidationPrice := liquidationRation * pty.CollateralizePreLiquidationRatio
return liquidationPrice return liquidationPrice
} }
// 获取最近抵押物价格 // 获取最近抵押物价格
func getLatestPrice(db dbm.KV) (float32, error) { func getLatestPrice(db dbm.KV) (float64, error) {
data, err := db.Get(PriceKey()) data, err := db.Get(PriceKey())
if err != nil { if err != nil {
clog.Error("getLatestPrice", "get", err) clog.Error("getLatestPrice", "get", err)
...@@ -526,10 +527,11 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -526,10 +527,11 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
} }
coll := &CollateralizeDB{*collateralize} coll := &CollateralizeDB{*collateralize}
// 借贷金额检查 // 借贷金额检查
if borrow.GetValue() <= 0 { if borrow.GetValue() <= 0 {
clog.Error("CollateralizeBorrow", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "borrow value", borrow.GetValue(), "err", types.ErrInvalidParam) clog.Error("CollateralizeBorrow", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "borrow value", borrow.GetValue(), "err", types.ErrInvalidParam)
return nil, types.ErrInvalidParam return nil, types.ErrAmount
} }
// 借贷金额不超过个人限额 // 借贷金额不超过个人限额
...@@ -553,7 +555,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -553,7 +555,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
} }
// 根据价格和需要借贷的金额,计算需要质押的抵押物数量 // 根据价格和需要借贷的金额,计算需要质押的抵押物数量
btyFrozen, err := getBtyNumToFrozen(borrow.Value, lastPrice, coll.LiquidationRatio) btyFrozen, err := getBtyNumToFrozen(borrow.GetValue(), lastPrice, coll.LiquidationRatio)
if err != nil { if err != nil {
clog.Error("CollateralizeBorrow.getBtyNumToFrozen", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", err) clog.Error("CollateralizeBorrow.getBtyNumToFrozen", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", err)
return nil, err return nil, err
...@@ -566,7 +568,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -566,7 +568,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
} }
// 抵押物转账 // 抵押物转账
receipt, err := action.coinsAccount.ExecTransfer(action.fromaddr, coll.CreateAddr, action.execaddr, btyFrozen*Coin) receipt, err := action.coinsAccount.ExecTransfer(action.fromaddr, coll.CreateAddr, action.execaddr, btyFrozen)
if err != nil { if err != nil {
clog.Error("CollateralizeBorrow.ExecTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", btyFrozen) clog.Error("CollateralizeBorrow.ExecTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", btyFrozen)
return nil, err return nil, err
...@@ -575,7 +577,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -575,7 +577,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 抵押物冻结 // 抵押物冻结
receipt, err = action.coinsAccount.ExecFrozen(coll.CreateAddr, action.execaddr, btyFrozen*Coin) receipt, err = action.coinsAccount.ExecFrozen(coll.CreateAddr, action.execaddr, btyFrozen)
if err != nil { if err != nil {
clog.Error("CollateralizeBorrow.Frozen", "addr", coll.CreateAddr, "execaddr", action.execaddr, "amount", btyFrozen) clog.Error("CollateralizeBorrow.Frozen", "addr", coll.CreateAddr, "execaddr", action.execaddr, "amount", btyFrozen)
return nil, err return nil, err
...@@ -584,9 +586,9 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -584,9 +586,9 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 借出ccny // 借出ccny
receipt, err = action.tokenAccount.ExecTransferFrozen(coll.CreateAddr, action.fromaddr, action.execaddr, borrow.Value*Coin) receipt, err = action.tokenAccount.ExecTransferFrozen(coll.CreateAddr, action.fromaddr, action.execaddr, borrow.GetValue())
if err != nil { if err != nil {
clog.Error("CollateralizeBorrow.ExecTokenTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrow.Value) clog.Error("CollateralizeBorrow.ExecTokenTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrow.GetValue())
return nil, err return nil, err
} }
logs = append(logs, receipt.Logs...) logs = append(logs, receipt.Logs...)
...@@ -600,7 +602,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -600,7 +602,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
borrowRecord.CollateralValue = btyFrozen borrowRecord.CollateralValue = btyFrozen
borrowRecord.StartTime = action.blocktime borrowRecord.StartTime = action.blocktime
borrowRecord.CollateralPrice = lastPrice borrowRecord.CollateralPrice = lastPrice
borrowRecord.DebtValue = borrow.Value borrowRecord.DebtValue = borrow.GetValue()
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 borrowRecord.ExpireTime = action.blocktime + coll.Period
...@@ -614,7 +616,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -614,7 +616,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
// 保存 // 保存
coll.BorrowRecords = append(coll.BorrowRecords, borrowRecord) coll.BorrowRecords = append(coll.BorrowRecords, borrowRecord)
coll.Status = pty.CollateralizeStatusCreated coll.Status = pty.CollateralizeStatusCreated
coll.Balance -= borrow.Value coll.Balance -= borrow.GetValue()
coll.CollBalance += btyFrozen coll.CollBalance += btyFrozen
coll.LatestExpireTime = getLatestExpireTime(&coll.Collateralize) coll.LatestExpireTime = getLatestExpireTime(&coll.Collateralize)
coll.Save(action.db) coll.Save(action.db)
...@@ -665,16 +667,17 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types. ...@@ -665,16 +667,17 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
} }
// 借贷金额+利息 // 借贷金额+利息
realRepay := borrowRecord.DebtValue + int64(float32(borrowRecord.DebtValue) * coll.StabilityFeeRatio) fee := (float64(borrowRecord.DebtValue)/1e8) * float64(coll.StabilityFeeRatio)
realRepay := borrowRecord.DebtValue + int64(math.Trunc((fee+0.0000001)*1e4)) * 1e4
// 检查 // 检查
if !action.CheckExecTokenAccount(action.fromaddr, realRepay*Coin, false) { if !action.CheckExecTokenAccount(action.fromaddr, realRepay, false) {
clog.Error("CollateralizeRepay", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", types.ErrInsufficientBalance) clog.Error("CollateralizeRepay.CheckExecTokenAccount", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "amount", realRepay, "err", types.ErrInsufficientBalance)
return nil, types.ErrNoBalance return nil, types.ErrNoBalance
} }
// ccny转移 // ccny转移
receipt, err = action.tokenAccount.ExecTransfer(action.fromaddr, coll.CreateAddr, action.execaddr, realRepay*Coin) receipt, err = action.tokenAccount.ExecTransfer(action.fromaddr, coll.CreateAddr, action.execaddr, realRepay)
if err != nil { if err != nil {
clog.Error("CollateralizeRepay.ExecTokenTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", realRepay) clog.Error("CollateralizeRepay.ExecTokenTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", realRepay)
return nil, err return nil, err
...@@ -683,16 +686,16 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types. ...@@ -683,16 +686,16 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// ccny冻结 // ccny冻结
receipt, err = action.tokenAccount.ExecFrozen(coll.CreateAddr, action.execaddr, realRepay * Coin) receipt, err = action.tokenAccount.ExecFrozen(coll.CreateAddr, action.execaddr, borrowRecord.DebtValue)
if err != nil { if err != nil {
clog.Error("CollateralizeCreate.Frozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", realRepay) clog.Error("CollateralizeCreate.Frozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrowRecord.DebtValue)
return nil, err return nil, err
} }
logs = append(logs, receipt.Logs...) logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 抵押物归还 // 抵押物归还
receipt, err = action.coinsAccount.ExecTransferFrozen(coll.CreateAddr, action.fromaddr, action.execaddr, borrowRecord.CollateralValue*Coin) receipt, err = action.coinsAccount.ExecTransferFrozen(coll.CreateAddr, action.fromaddr, action.execaddr, borrowRecord.CollateralValue)
if err != nil { if err != nil {
clog.Error("CollateralizeRepay.ExecTransferFrozen", "addr", coll.CreateAddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue) clog.Error("CollateralizeRepay.ExecTransferFrozen", "addr", coll.CreateAddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue)
return nil, err return nil, err
...@@ -766,13 +769,13 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty ...@@ -766,13 +769,13 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
} }
// 检查抵押物账户余额 // 检查抵押物账户余额
if !action.CheckExecAccountBalance(action.fromaddr, cAppend.CollateralValue*Coin, 0) { if !action.CheckExecAccountBalance(action.fromaddr, cAppend.CollateralValue, 0) {
clog.Error("CollateralizeBorrow", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", types.ErrNoBalance) clog.Error("CollateralizeBorrow.CheckExecAccountBalance", "CollID", coll.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "amount", cAppend.CollateralValue, "err", types.ErrNoBalance)
return nil, types.ErrNoBalance return nil, types.ErrNoBalance
} }
// 抵押物转账 // 抵押物转账
receipt, err := action.coinsAccount.ExecTransfer(action.fromaddr, coll.CreateAddr, action.execaddr, cAppend.CollateralValue*Coin) receipt, err := action.coinsAccount.ExecTransfer(action.fromaddr, coll.CreateAddr, action.execaddr, cAppend.CollateralValue)
if err != nil { if err != nil {
clog.Error("CollateralizeBorrow.ExecTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", cAppend.CollateralValue, "err", err) clog.Error("CollateralizeBorrow.ExecTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", cAppend.CollateralValue, "err", err)
return nil, err return nil, err
...@@ -781,7 +784,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty ...@@ -781,7 +784,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 抵押物冻结 // 抵押物冻结
receipt, err = action.coinsAccount.ExecFrozen(coll.CreateAddr, action.execaddr, cAppend.CollateralValue*Coin) receipt, err = action.coinsAccount.ExecFrozen(coll.CreateAddr, action.execaddr, cAppend.CollateralValue)
if err != nil { if err != nil {
clog.Error("CollateralizeBorrow.Frozen", "addr", coll.CreateAddr, "execaddr", action.execaddr, "amount", cAppend.CollateralValue, "err", err) clog.Error("CollateralizeBorrow.Frozen", "addr", coll.CreateAddr, "execaddr", action.execaddr, "amount", cAppend.CollateralValue, "err", err)
return nil, err return nil, err
...@@ -877,7 +880,7 @@ func getGuarantorAddr(db dbm.KV) (string, error) { ...@@ -877,7 +880,7 @@ func getGuarantorAddr(db dbm.KV) (string, error) {
} }
// 系统清算 // 系统清算
func (action *Action) systemLiquidation(coll *pty.Collateralize, price float32) (*types.Receipt, error) { func (action *Action) systemLiquidation(coll *pty.Collateralize, price float64) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -900,7 +903,7 @@ func (action *Action) systemLiquidation(coll *pty.Collateralize, price float32) ...@@ -900,7 +903,7 @@ func (action *Action) systemLiquidation(coll *pty.Collateralize, price float32)
} }
// 抵押物转移 // 抵押物转移
receipt, err := action.coinsAccount.ExecTransferFrozen(coll.CreateAddr, getGuarantorAddr, action.execaddr, borrowRecord.CollateralValue*Coin) receipt, err := action.coinsAccount.ExecTransferFrozen(coll.CreateAddr, getGuarantorAddr, action.execaddr, borrowRecord.CollateralValue)
if err != nil { if err != nil {
clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue, "err", err) clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue, "err", err)
continue continue
...@@ -959,7 +962,7 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt ...@@ -959,7 +962,7 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt
} }
// 抵押物转移 // 抵押物转移
receipt, err := action.coinsAccount.ExecTransferFrozen(coll.CreateAddr, getGuarantorAddr, action.execaddr, borrowRecord.CollateralValue*Coin) receipt, err := action.coinsAccount.ExecTransferFrozen(coll.CreateAddr, getGuarantorAddr, action.execaddr, borrowRecord.CollateralValue)
if err != nil { if err != nil {
clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue, "err", err) clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", borrowRecord.CollateralValue, "err", err)
continue continue
...@@ -999,8 +1002,8 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt ...@@ -999,8 +1002,8 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt
} }
// 价格计算策略 // 价格计算策略
func pricePolicy(feed *pty.CollateralizeFeed) float32 { func pricePolicy(feed *pty.CollateralizeFeed) float64 {
var totalPrice float32 var totalPrice float64
var totalVolume int64 var totalVolume int64
for _, volume := range feed.Volume { for _, volume := range feed.Volume {
totalVolume += volume totalVolume += volume
...@@ -1012,7 +1015,7 @@ func pricePolicy(feed *pty.CollateralizeFeed) float32 { ...@@ -1012,7 +1015,7 @@ func pricePolicy(feed *pty.CollateralizeFeed) float32 {
} }
for i, price := range feed.Price { for i, price := range feed.Price {
totalPrice += price * float32(float64(feed.Volume[i])/float64(totalVolume)) totalPrice += price * (float64(feed.Volume[i])/float64(totalVolume))
} }
return totalPrice return totalPrice
...@@ -1103,13 +1106,6 @@ func (action *Action) CollateralizeRetrieve(retrieve *pty.CollateralizeRetrieve) ...@@ -1103,13 +1106,6 @@ func (action *Action) CollateralizeRetrieve(retrieve *pty.CollateralizeRetrieve)
return nil, pty.ErrPermissionDeny return nil, pty.ErrPermissionDeny
} }
//for _, borrowRecord := range collateralize.BorrowRecords {
// if borrowRecord.Status != pty.CollateralizeUserStatusClose {
// clog.Error("CollateralizeRetrieve", "CollateralizeId", retrieve.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", pty.ErrCollateralizeRecordNotEmpty)
// return nil, pty.ErrCollateralizeRecordNotEmpty
// }
//}
// 收回金额不能大于待放出金额 // 收回金额不能大于待放出金额
if retrieve.Balance > collateralize.Balance { if retrieve.Balance > collateralize.Balance {
clog.Error("CollateralizeRetrieve", "CollateralizeId", retrieve.CollateralizeId, "err", "balance error", "retrieve balance", retrieve.Balance, "available balance", collateralize.Balance) clog.Error("CollateralizeRetrieve", "CollateralizeId", retrieve.CollateralizeId, "err", "balance error", "retrieve balance", retrieve.Balance, "available balance", collateralize.Balance)
...@@ -1117,7 +1113,7 @@ func (action *Action) CollateralizeRetrieve(retrieve *pty.CollateralizeRetrieve) ...@@ -1117,7 +1113,7 @@ func (action *Action) CollateralizeRetrieve(retrieve *pty.CollateralizeRetrieve)
} }
// 解冻ccny // 解冻ccny
receipt, err = action.tokenAccount.ExecActive(action.fromaddr, action.execaddr, retrieve.Balance*Coin) receipt, err = action.tokenAccount.ExecActive(action.fromaddr, action.execaddr, retrieve.Balance)
if err != nil { if err != nil {
clog.Error("IssuanceClose.ExecActive", "addr", action.fromaddr, "execaddr", action.execaddr, "balance", retrieve.Balance) clog.Error("IssuanceClose.ExecActive", "addr", action.fromaddr, "execaddr", action.execaddr, "balance", retrieve.Balance)
return nil, err return nil, err
......
...@@ -144,7 +144,7 @@ func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecor ...@@ -144,7 +144,7 @@ func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecor
clog.Debug("Query_CollateralizeByStatus", "get collateralize record error", err) clog.Debug("Query_CollateralizeByStatus", "get collateralize record error", err)
} }
collBalance := config.CollTotalBalance balance := config.TotalBalance
for _, id := range collIDRecords { for _, id := range collIDRecords {
coll, err := queryCollateralizeByID(c.GetStateDB(), id) coll, err := queryCollateralizeByID(c.GetStateDB(), id)
if err != nil { if err != nil {
...@@ -152,15 +152,15 @@ func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecor ...@@ -152,15 +152,15 @@ func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecor
return nil, err return nil, err
} }
collBalance -= coll.TotalBalance balance -= coll.TotalBalance
} }
ret := &pty.RepCollateralizeConfig{ ret := &pty.RepCollateralizeConfig{
CollTotalBalance:config.CollTotalBalance, TotalBalance:config.TotalBalance,
DebtCeiling: config.DebtCeiling, DebtCeiling: config.DebtCeiling,
LiquidationRatio: config.LiquidationRatio, LiquidationRatio: config.LiquidationRatio,
StabilityFeeRatio: config.StabilityFeeRatio, StabilityFeeRatio: config.StabilityFeeRatio,
Period: config.Period, Period: config.Period,
CollBalance: collBalance, Balance: balance,
CurrentTime: config.CurrentTime, CurrentTime: config.CurrentTime,
} }
......
...@@ -7,14 +7,14 @@ message Collateralize { ...@@ -7,14 +7,14 @@ 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; //清算比例 double liquidationRatio = 4; //清算比例
float stabilityFeeRatio = 5; //稳定费率 double stabilityFeeRatio = 5; //稳定费率
string createAddr = 6; //创建人地址 string createAddr = 6; //创建人地址
int64 balance = 7; //放贷剩余金额(ccny) int64 balance = 7; //放贷剩余金额(ccny)
repeated BorrowRecord borrowRecords = 8; //借贷记录 repeated BorrowRecord borrowRecords = 8; //借贷记录
repeated BorrowRecord InvalidRecords = 9; //失效的借贷记录 repeated BorrowRecord InvalidRecords = 9; //失效的借贷记录
int32 status = 10;//当期借贷的状态,是否关闭 int32 status = 10;//当期借贷的状态,是否关闭
float latestLiquidationPrice = 11;//最高清算价格 double latestLiquidationPrice = 11;//最高清算价格
int64 period = 12;//借贷最大期限 int64 period = 12;//借贷最大期限
int64 latestExpireTime = 13;//最近超期时间 int64 latestExpireTime = 13;//最近超期时间
int64 index = 14;//当前索引 int64 index = 14;//当前索引
...@@ -27,9 +27,9 @@ message BorrowRecord { ...@@ -27,9 +27,9 @@ message BorrowRecord {
string accountAddr = 1; //借贷人地址 string accountAddr = 1; //借贷人地址
int64 startTime = 2; //借贷时间 int64 startTime = 2; //借贷时间
int64 collateralValue = 3; //抵押物价值(bty) int64 collateralValue = 3; //抵押物价值(bty)
float collateralPrice = 4; //抵押物价格 double collateralPrice = 4; //抵押物价格
int64 debtValue = 5; //债务价值(ccny) int64 debtValue = 5; //债务价值(ccny)
float liquidationPrice = 6; //抵押物清算价格 double liquidationPrice = 6; //抵押物清算价格
int32 status = 7; //抵押状态,是否被清算 int32 status = 7; //抵押状态,是否被清算
int64 liquidateTime = 8; //清算时间 int64 liquidateTime = 8; //清算时间
int64 expireTime = 9; //超时清算时间 int64 expireTime = 9; //超时清算时间
...@@ -43,9 +43,9 @@ message BorrowRecord { ...@@ -43,9 +43,9 @@ message BorrowRecord {
// 资产价格记录 // 资产价格记录
message AssetPriceRecord { message AssetPriceRecord {
int64 recordTime = 1; //价格记录时间 int64 recordTime = 1; //价格记录时间
float btyPrice = 2; //bty价格 double btyPrice = 2; //bty价格
float btcPrice = 3; //btc价格 double btcPrice = 3; //btc价格
float ethPrice = 4; //eth价格 double ethPrice = 4; //eth价格
} }
// action // action
...@@ -64,10 +64,10 @@ message CollateralizeAction { ...@@ -64,10 +64,10 @@ message CollateralizeAction {
message CollateralizeManage { message CollateralizeManage {
int64 debtCeiling = 1; //单用户可借出的限额(ccny) int64 debtCeiling = 1; //单用户可借出的限额(ccny)
float liquidationRatio = 2; //清算比例 double liquidationRatio = 2; //清算比例
float stabilityFeeRatio = 3; //稳定费 double stabilityFeeRatio = 3; //稳定费
int64 period = 4; //合约期限 int64 period = 4; //合约期限
int64 collTotalBalance = 5; //放贷总量 int64 totalBalance = 5; //放贷总量
int64 currentTime = 6; //设置时间 int64 currentTime = 6; //设置时间
} }
...@@ -101,7 +101,7 @@ message CollateralizeAppend { ...@@ -101,7 +101,7 @@ message CollateralizeAppend {
// 喂价 // 喂价
message CollateralizeFeed { message CollateralizeFeed {
int32 collType = 1; //抵押物价格类型(1,bty,2,btc,3,eth...) int32 collType = 1; //抵押物价格类型(1,bty,2,btc,3,eth...)
repeated float price = 2; //喂价 repeated double price = 2; //喂价
repeated int64 volume = 3; //成交量 repeated int64 volume = 3; //成交量
} }
...@@ -147,8 +147,8 @@ message RepCollateralizeCurrentInfo { ...@@ -147,8 +147,8 @@ message RepCollateralizeCurrentInfo {
int32 status = 1;//当期借贷的状态,是否关闭 int32 status = 1;//当期借贷的状态,是否关闭
int64 totalBalance = 2; //当期可借贷的总金额(ccny) int64 totalBalance = 2; //当期可借贷的总金额(ccny)
int64 debtCeiling = 3; //单用户可借出的限额(ccny) int64 debtCeiling = 3; //单用户可借出的限额(ccny)
float liquidationRatio = 4; //清算比例 double liquidationRatio = 4; //清算比例
float stabilityFeeRatio = 5; //稳定费 double stabilityFeeRatio = 5; //稳定费
string createAddr = 6; //创建人地址 string createAddr = 6; //创建人地址
int64 balance = 7; //剩余可借贷金额(ccny) int64 balance = 7; //剩余可借贷金额(ccny)
int64 period = 8; //合约期限 int64 period = 8; //合约期限
...@@ -219,15 +219,15 @@ message RepCollateralizeRecord { ...@@ -219,15 +219,15 @@ message RepCollateralizeRecord {
// 返回放贷配置 // 返回放贷配置
message RepCollateralizeConfig { message RepCollateralizeConfig {
int64 debtCeiling = 1; //单用户可借出的限额(ccny) int64 debtCeiling = 1; //单用户可借出的限额(ccny)
float liquidationRatio = 2; //清算比例 double liquidationRatio = 2; //清算比例
float stabilityFeeRatio = 3; //稳定费 double stabilityFeeRatio = 3; //稳定费
int64 period = 4; //合约期限 int64 period = 4; //合约期限
int64 collTotalBalance = 5; //放贷总量 int64 totalBalance = 5; //放贷总量
int64 collBalance = 6; //剩余放贷额度 int64 balance = 6; //剩余放贷额度
int64 currentTime = 7; //设置时间 int64 currentTime = 7; //设置时间
} }
// 返回最新抵押物价格 // 返回最新抵押物价格
message RepCollateralizePrice { message RepCollateralizePrice {
float price = 1; //当前抵押物最新价格 double price = 1; //当前抵押物最新价格
} }
\ No newline at end of file
...@@ -6,6 +6,7 @@ package types ...@@ -6,6 +6,7 @@ package types
import ( import (
"encoding/json" "encoding/json"
"math"
"reflect" "reflect"
"github.com/33cn/chain33/common/address" "github.com/33cn/chain33/common/address"
...@@ -111,7 +112,7 @@ func (collateralize CollateralizeType) CreateTx(action string, message json.RawM ...@@ -111,7 +112,7 @@ func (collateralize CollateralizeType) CreateTx(action string, message json.RawM
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
return CreateRawCollateralizeFeedTx(cfg, &param) return CreateRawCollateralizeFeedTx(cfg, &param)
} else if action == "CollateralizeRetrive" { } else if action == "CollateralizeRetrieve" {
var param CollateralizeRetrieveTx var param CollateralizeRetrieveTx
err := json.Unmarshal(message, &param) err := json.Unmarshal(message, &param)
if err != nil { if err != nil {
...@@ -153,7 +154,7 @@ func CreateRawCollateralizeCreateTx(cfg *types.Chain33Config, parm *Collateraliz ...@@ -153,7 +154,7 @@ func CreateRawCollateralizeCreateTx(cfg *types.Chain33Config, parm *Collateraliz
} }
v := &CollateralizeCreate{ v := &CollateralizeCreate{
TotalBalance: parm.TotalBalance, TotalBalance: int64(math.Trunc((parm.TotalBalance+0.0000001)*1e4)) * 1e4,
} }
create := &CollateralizeAction{ create := &CollateralizeAction{
Ty: CollateralizeActionCreate, Ty: CollateralizeActionCreate,
...@@ -182,7 +183,7 @@ func CreateRawCollateralizeBorrowTx(cfg *types.Chain33Config, parm *Collateraliz ...@@ -182,7 +183,7 @@ func CreateRawCollateralizeBorrowTx(cfg *types.Chain33Config, parm *Collateraliz
v := &CollateralizeBorrow{ v := &CollateralizeBorrow{
CollateralizeId: parm.CollateralizeID, CollateralizeId: parm.CollateralizeID,
Value: parm.Value, Value: int64(math.Trunc((parm.Value+0.0000001)*1e4)) * 1e4,
} }
borrow := &CollateralizeAction{ borrow := &CollateralizeAction{
Ty: CollateralizeActionBorrow, Ty: CollateralizeActionBorrow,
...@@ -241,7 +242,7 @@ func CreateRawCollateralizeAppendTx(cfg *types.Chain33Config, parm *Collateraliz ...@@ -241,7 +242,7 @@ func CreateRawCollateralizeAppendTx(cfg *types.Chain33Config, parm *Collateraliz
v := &CollateralizeAppend{ v := &CollateralizeAppend{
CollateralizeId: parm.CollateralizeID, CollateralizeId: parm.CollateralizeID,
RecordId:parm.RecordID, RecordId:parm.RecordID,
CollateralValue: parm.Value, CollateralValue: int64(math.Trunc((parm.Value+0.0000001)*1e4)) * 1e4,
} }
append := &CollateralizeAction{ append := &CollateralizeAction{
Ty: CollateralizeActionAppend, Ty: CollateralizeActionAppend,
...@@ -299,7 +300,7 @@ func CreateRawCollateralizeRetrieveTx(cfg *types.Chain33Config, parm *Collateral ...@@ -299,7 +300,7 @@ func CreateRawCollateralizeRetrieveTx(cfg *types.Chain33Config, parm *Collateral
v := &CollateralizeRetrieve{ v := &CollateralizeRetrieve{
CollateralizeId: parm.CollateralizeID, CollateralizeId: parm.CollateralizeID,
Balance: parm.Balance, Balance: int64(math.Trunc((parm.Balance+0.0000001)*1e4)) * 1e4,
} }
close := &CollateralizeAction{ close := &CollateralizeAction{
Ty: CollateralizeActionRetrieve, Ty: CollateralizeActionRetrieve,
...@@ -328,11 +329,11 @@ func CreateRawCollateralizeManageTx(cfg *types.Chain33Config, parm *Collateraliz ...@@ -328,11 +329,11 @@ func CreateRawCollateralizeManageTx(cfg *types.Chain33Config, parm *Collateraliz
} }
v := &CollateralizeManage{ v := &CollateralizeManage{
DebtCeiling: parm.DebtCeiling, DebtCeiling: int64(math.Trunc((parm.DebtCeiling+0.0000001)*1e4)) * 1e4,
LiquidationRatio: parm.LiquidationRatio, LiquidationRatio: parm.LiquidationRatio,
StabilityFeeRatio: parm.StabilityFeeRatio, StabilityFeeRatio: parm.StabilityFeeRatio,
Period: parm.Period, Period: parm.Period,
CollTotalBalance: parm.CollTotalBalance, TotalBalance: int64(math.Trunc((parm.TotalBalance+0.0000001)*1e4)) * 1e4,
} }
manage := &CollateralizeAction{ manage := &CollateralizeAction{
......
...@@ -25,14 +25,14 @@ type Collateralize struct { ...@@ -25,14 +25,14 @@ type Collateralize 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"`
TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
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 float64 `protobuf:"fixed64,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio float32 `protobuf:"fixed32,5,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"` StabilityFeeRatio float64 `protobuf:"fixed64,5,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
CreateAddr string `protobuf:"bytes,6,opt,name=createAddr,proto3" json:"createAddr,omitempty"` CreateAddr string `protobuf:"bytes,6,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
Balance int64 `protobuf:"varint,7,opt,name=balance,proto3" json:"balance,omitempty"` Balance int64 `protobuf:"varint,7,opt,name=balance,proto3" json:"balance,omitempty"`
BorrowRecords []*BorrowRecord `protobuf:"bytes,8,rep,name=borrowRecords,proto3" json:"borrowRecords,omitempty"` BorrowRecords []*BorrowRecord `protobuf:"bytes,8,rep,name=borrowRecords,proto3" json:"borrowRecords,omitempty"`
InvalidRecords []*BorrowRecord `protobuf:"bytes,9,rep,name=InvalidRecords,proto3" json:"InvalidRecords,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"`
LatestLiquidationPrice float32 `protobuf:"fixed32,11,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"` LatestLiquidationPrice float64 `protobuf:"fixed64,11,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"`
Period int64 `protobuf:"varint,12,opt,name=period,proto3" json:"period,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"` LatestExpireTime int64 `protobuf:"varint,13,opt,name=latestExpireTime,proto3" json:"latestExpireTime,omitempty"`
Index int64 `protobuf:"varint,14,opt,name=index,proto3" json:"index,omitempty"` Index int64 `protobuf:"varint,14,opt,name=index,proto3" json:"index,omitempty"`
...@@ -89,14 +89,14 @@ func (m *Collateralize) GetDebtCeiling() int64 { ...@@ -89,14 +89,14 @@ func (m *Collateralize) GetDebtCeiling() int64 {
return 0 return 0
} }
func (m *Collateralize) GetLiquidationRatio() float32 { func (m *Collateralize) GetLiquidationRatio() float64 {
if m != nil { if m != nil {
return m.LiquidationRatio return m.LiquidationRatio
} }
return 0 return 0
} }
func (m *Collateralize) GetStabilityFeeRatio() float32 { func (m *Collateralize) GetStabilityFeeRatio() float64 {
if m != nil { if m != nil {
return m.StabilityFeeRatio return m.StabilityFeeRatio
} }
...@@ -138,7 +138,7 @@ func (m *Collateralize) GetStatus() int32 { ...@@ -138,7 +138,7 @@ func (m *Collateralize) GetStatus() int32 {
return 0 return 0
} }
func (m *Collateralize) GetLatestLiquidationPrice() float32 { func (m *Collateralize) GetLatestLiquidationPrice() float64 {
if m != nil { if m != nil {
return m.LatestLiquidationPrice return m.LatestLiquidationPrice
} }
...@@ -185,9 +185,9 @@ type BorrowRecord struct { ...@@ -185,9 +185,9 @@ 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"`
StartTime int64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime,omitempty"` StartTime int64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime,omitempty"`
CollateralValue int64 `protobuf:"varint,3,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"` CollateralValue int64 `protobuf:"varint,3,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"`
CollateralPrice float32 `protobuf:"fixed32,4,opt,name=collateralPrice,proto3" json:"collateralPrice,omitempty"` CollateralPrice float64 `protobuf:"fixed64,4,opt,name=collateralPrice,proto3" json:"collateralPrice,omitempty"`
DebtValue int64 `protobuf:"varint,5,opt,name=debtValue,proto3" json:"debtValue,omitempty"` DebtValue int64 `protobuf:"varint,5,opt,name=debtValue,proto3" json:"debtValue,omitempty"`
LiquidationPrice float32 `protobuf:"fixed32,6,opt,name=liquidationPrice,proto3" json:"liquidationPrice,omitempty"` LiquidationPrice float64 `protobuf:"fixed64,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"` ExpireTime int64 `protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"`
...@@ -247,7 +247,7 @@ func (m *BorrowRecord) GetCollateralValue() int64 { ...@@ -247,7 +247,7 @@ func (m *BorrowRecord) GetCollateralValue() int64 {
return 0 return 0
} }
func (m *BorrowRecord) GetCollateralPrice() float32 { func (m *BorrowRecord) GetCollateralPrice() float64 {
if m != nil { if m != nil {
return m.CollateralPrice return m.CollateralPrice
} }
...@@ -261,7 +261,7 @@ func (m *BorrowRecord) GetDebtValue() int64 { ...@@ -261,7 +261,7 @@ func (m *BorrowRecord) GetDebtValue() int64 {
return 0 return 0
} }
func (m *BorrowRecord) GetLiquidationPrice() float32 { func (m *BorrowRecord) GetLiquidationPrice() float64 {
if m != nil { if m != nil {
return m.LiquidationPrice return m.LiquidationPrice
} }
...@@ -327,9 +327,9 @@ func (m *BorrowRecord) GetPreIndex() int64 { ...@@ -327,9 +327,9 @@ func (m *BorrowRecord) GetPreIndex() int64 {
// 资产价格记录 // 资产价格记录
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"`
BtyPrice float32 `protobuf:"fixed32,2,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"` BtyPrice float64 `protobuf:"fixed64,2,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"`
BtcPrice float32 `protobuf:"fixed32,3,opt,name=btcPrice,proto3" json:"btcPrice,omitempty"` BtcPrice float64 `protobuf:"fixed64,3,opt,name=btcPrice,proto3" json:"btcPrice,omitempty"`
EthPrice float32 `protobuf:"fixed32,4,opt,name=ethPrice,proto3" json:"ethPrice,omitempty"` EthPrice float64 `protobuf:"fixed64,4,opt,name=ethPrice,proto3" json:"ethPrice,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:"-"`
...@@ -367,21 +367,21 @@ func (m *AssetPriceRecord) GetRecordTime() int64 { ...@@ -367,21 +367,21 @@ func (m *AssetPriceRecord) GetRecordTime() int64 {
return 0 return 0
} }
func (m *AssetPriceRecord) GetBtyPrice() float32 { func (m *AssetPriceRecord) GetBtyPrice() float64 {
if m != nil { if m != nil {
return m.BtyPrice return m.BtyPrice
} }
return 0 return 0
} }
func (m *AssetPriceRecord) GetBtcPrice() float32 { func (m *AssetPriceRecord) GetBtcPrice() float64 {
if m != nil { if m != nil {
return m.BtcPrice return m.BtcPrice
} }
return 0 return 0
} }
func (m *AssetPriceRecord) GetEthPrice() float32 { func (m *AssetPriceRecord) GetEthPrice() float64 {
if m != nil { if m != nil {
return m.EthPrice return m.EthPrice
} }
...@@ -554,10 +554,10 @@ func (*CollateralizeAction) XXX_OneofWrappers() []interface{} { ...@@ -554,10 +554,10 @@ func (*CollateralizeAction) XXX_OneofWrappers() []interface{} {
type CollateralizeManage struct { type CollateralizeManage 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 float64 `protobuf:"fixed64,2,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio float32 `protobuf:"fixed32,3,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"` StabilityFeeRatio float64 `protobuf:"fixed64,3,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
Period int64 `protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"` Period int64 `protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"`
CollTotalBalance int64 `protobuf:"varint,5,opt,name=collTotalBalance,proto3" json:"collTotalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,5,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
CurrentTime int64 `protobuf:"varint,6,opt,name=currentTime,proto3" json:"currentTime,omitempty"` CurrentTime int64 `protobuf:"varint,6,opt,name=currentTime,proto3" json:"currentTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
...@@ -596,14 +596,14 @@ func (m *CollateralizeManage) GetDebtCeiling() int64 { ...@@ -596,14 +596,14 @@ func (m *CollateralizeManage) GetDebtCeiling() int64 {
return 0 return 0
} }
func (m *CollateralizeManage) GetLiquidationRatio() float32 { func (m *CollateralizeManage) GetLiquidationRatio() float64 {
if m != nil { if m != nil {
return m.LiquidationRatio return m.LiquidationRatio
} }
return 0 return 0
} }
func (m *CollateralizeManage) GetStabilityFeeRatio() float32 { func (m *CollateralizeManage) GetStabilityFeeRatio() float64 {
if m != nil { if m != nil {
return m.StabilityFeeRatio return m.StabilityFeeRatio
} }
...@@ -617,9 +617,9 @@ func (m *CollateralizeManage) GetPeriod() int64 { ...@@ -617,9 +617,9 @@ func (m *CollateralizeManage) GetPeriod() int64 {
return 0 return 0
} }
func (m *CollateralizeManage) GetCollTotalBalance() int64 { func (m *CollateralizeManage) GetTotalBalance() int64 {
if m != nil { if m != nil {
return m.CollTotalBalance return m.TotalBalance
} }
return 0 return 0
} }
...@@ -865,7 +865,7 @@ func (m *CollateralizeAppend) GetCollateralValue() int64 { ...@@ -865,7 +865,7 @@ func (m *CollateralizeAppend) GetCollateralValue() int64 {
// 喂价 // 喂价
type CollateralizeFeed struct { type CollateralizeFeed struct {
CollType int32 `protobuf:"varint,1,opt,name=collType,proto3" json:"collType,omitempty"` CollType int32 `protobuf:"varint,1,opt,name=collType,proto3" json:"collType,omitempty"`
Price []float32 `protobuf:"fixed32,2,rep,packed,name=price,proto3" json:"price,omitempty"` Price []float64 `protobuf:"fixed64,2,rep,packed,name=price,proto3" json:"price,omitempty"`
Volume []int64 `protobuf:"varint,3,rep,packed,name=volume,proto3" json:"volume,omitempty"` Volume []int64 `protobuf:"varint,3,rep,packed,name=volume,proto3" json:"volume,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
...@@ -904,7 +904,7 @@ func (m *CollateralizeFeed) GetCollType() int32 { ...@@ -904,7 +904,7 @@ func (m *CollateralizeFeed) GetCollType() int32 {
return 0 return 0
} }
func (m *CollateralizeFeed) GetPrice() []float32 { func (m *CollateralizeFeed) GetPrice() []float64 {
if m != nil { if m != nil {
return m.Price return m.Price
} }
...@@ -1219,8 +1219,8 @@ type RepCollateralizeCurrentInfo struct { ...@@ -1219,8 +1219,8 @@ type RepCollateralizeCurrentInfo struct {
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
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 float64 `protobuf:"fixed64,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio float32 `protobuf:"fixed32,5,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"` StabilityFeeRatio float64 `protobuf:"fixed64,5,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
CreateAddr string `protobuf:"bytes,6,opt,name=createAddr,proto3" json:"createAddr,omitempty"` CreateAddr string `protobuf:"bytes,6,opt,name=createAddr,proto3" json:"createAddr,omitempty"`
Balance int64 `protobuf:"varint,7,opt,name=balance,proto3" json:"balance,omitempty"` Balance int64 `protobuf:"varint,7,opt,name=balance,proto3" json:"balance,omitempty"`
Period int64 `protobuf:"varint,8,opt,name=period,proto3" json:"period,omitempty"` Period int64 `protobuf:"varint,8,opt,name=period,proto3" json:"period,omitempty"`
...@@ -1278,14 +1278,14 @@ func (m *RepCollateralizeCurrentInfo) GetDebtCeiling() int64 { ...@@ -1278,14 +1278,14 @@ func (m *RepCollateralizeCurrentInfo) GetDebtCeiling() int64 {
return 0 return 0
} }
func (m *RepCollateralizeCurrentInfo) GetLiquidationRatio() float32 { func (m *RepCollateralizeCurrentInfo) GetLiquidationRatio() float64 {
if m != nil { if m != nil {
return m.LiquidationRatio return m.LiquidationRatio
} }
return 0 return 0
} }
func (m *RepCollateralizeCurrentInfo) GetStabilityFeeRatio() float32 { func (m *RepCollateralizeCurrentInfo) GetStabilityFeeRatio() float64 {
if m != nil { if m != nil {
return m.StabilityFeeRatio return m.StabilityFeeRatio
} }
...@@ -1809,11 +1809,11 @@ func (m *RepCollateralizeRecord) GetRecord() *BorrowRecord { ...@@ -1809,11 +1809,11 @@ func (m *RepCollateralizeRecord) GetRecord() *BorrowRecord {
// 返回放贷配置 // 返回放贷配置
type RepCollateralizeConfig struct { type RepCollateralizeConfig 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 float64 `protobuf:"fixed64,2,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio float32 `protobuf:"fixed32,3,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"` StabilityFeeRatio float64 `protobuf:"fixed64,3,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
Period int64 `protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"` Period int64 `protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"`
CollTotalBalance int64 `protobuf:"varint,5,opt,name=collTotalBalance,proto3" json:"collTotalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,5,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
CollBalance int64 `protobuf:"varint,6,opt,name=collBalance,proto3" json:"collBalance,omitempty"` Balance int64 `protobuf:"varint,6,opt,name=balance,proto3" json:"balance,omitempty"`
CurrentTime int64 `protobuf:"varint,7,opt,name=currentTime,proto3" json:"currentTime,omitempty"` CurrentTime int64 `protobuf:"varint,7,opt,name=currentTime,proto3" json:"currentTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
...@@ -1852,14 +1852,14 @@ func (m *RepCollateralizeConfig) GetDebtCeiling() int64 { ...@@ -1852,14 +1852,14 @@ func (m *RepCollateralizeConfig) GetDebtCeiling() int64 {
return 0 return 0
} }
func (m *RepCollateralizeConfig) GetLiquidationRatio() float32 { func (m *RepCollateralizeConfig) GetLiquidationRatio() float64 {
if m != nil { if m != nil {
return m.LiquidationRatio return m.LiquidationRatio
} }
return 0 return 0
} }
func (m *RepCollateralizeConfig) GetStabilityFeeRatio() float32 { func (m *RepCollateralizeConfig) GetStabilityFeeRatio() float64 {
if m != nil { if m != nil {
return m.StabilityFeeRatio return m.StabilityFeeRatio
} }
...@@ -1873,16 +1873,16 @@ func (m *RepCollateralizeConfig) GetPeriod() int64 { ...@@ -1873,16 +1873,16 @@ func (m *RepCollateralizeConfig) GetPeriod() int64 {
return 0 return 0
} }
func (m *RepCollateralizeConfig) GetCollTotalBalance() int64 { func (m *RepCollateralizeConfig) GetTotalBalance() int64 {
if m != nil { if m != nil {
return m.CollTotalBalance return m.TotalBalance
} }
return 0 return 0
} }
func (m *RepCollateralizeConfig) GetCollBalance() int64 { func (m *RepCollateralizeConfig) GetBalance() int64 {
if m != nil { if m != nil {
return m.CollBalance return m.Balance
} }
return 0 return 0
} }
...@@ -1896,7 +1896,7 @@ func (m *RepCollateralizeConfig) GetCurrentTime() int64 { ...@@ -1896,7 +1896,7 @@ func (m *RepCollateralizeConfig) GetCurrentTime() int64 {
// 返回最新抵押物价格 // 返回最新抵押物价格
type RepCollateralizePrice struct { type RepCollateralizePrice struct {
Price float32 `protobuf:"fixed32,1,opt,name=price,proto3" json:"price,omitempty"` Price float64 `protobuf:"fixed64,1,opt,name=price,proto3" json:"price,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:"-"`
...@@ -1927,7 +1927,7 @@ func (m *RepCollateralizePrice) XXX_DiscardUnknown() { ...@@ -1927,7 +1927,7 @@ func (m *RepCollateralizePrice) XXX_DiscardUnknown() {
var xxx_messageInfo_RepCollateralizePrice proto.InternalMessageInfo var xxx_messageInfo_RepCollateralizePrice proto.InternalMessageInfo
func (m *RepCollateralizePrice) GetPrice() float32 { func (m *RepCollateralizePrice) GetPrice() float64 {
if m != nil { if m != nil {
return m.Price return m.Price
} }
...@@ -1969,85 +1969,85 @@ func init() { ...@@ -1969,85 +1969,85 @@ 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{
// 1270 bytes of a gzipped FileDescriptorProto // 1266 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4d, 0x6f, 0xdc, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xdd, 0x6e, 0xdc, 0x44,
0x18, 0xae, 0xed, 0xfd, 0xc8, 0xbe, 0x9b, 0xa4, 0xe9, 0x24, 0x0d, 0x26, 0x44, 0xd1, 0x6a, 0x84, 0x14, 0xae, 0xed, 0xf5, 0x6e, 0xf6, 0x6c, 0x92, 0xa6, 0x93, 0x34, 0x98, 0x10, 0x45, 0xab, 0x11,
0xc4, 0x0a, 0x68, 0x24, 0xd2, 0x0a, 0x51, 0xb8, 0x90, 0xa4, 0xad, 0xb2, 0x52, 0x91, 0x2a, 0x53, 0x12, 0x2b, 0xa0, 0x91, 0x48, 0x2b, 0x44, 0xe1, 0x86, 0x24, 0x6d, 0x95, 0x95, 0x8a, 0x54, 0x99,
0x10, 0x2a, 0x02, 0xc9, 0xbb, 0x9e, 0x04, 0x4b, 0x8e, 0xed, 0xd8, 0xb3, 0x21, 0xcb, 0x9d, 0x1e, 0x82, 0x50, 0x11, 0x48, 0x5e, 0x7b, 0x12, 0x2c, 0x39, 0xb6, 0x63, 0xcf, 0x86, 0x2c, 0xf7, 0xf4,
0xf8, 0x0d, 0x70, 0xe4, 0xca, 0x6f, 0xe2, 0x3f, 0x70, 0xe0, 0x8a, 0xe6, 0xc3, 0xf6, 0xcc, 0xd8, 0x02, 0xf1, 0x0a, 0x5c, 0x72, 0xcb, 0x33, 0xf1, 0x06, 0x5c, 0xf0, 0x02, 0x68, 0x7e, 0xfc, 0x33,
0x8e, 0x76, 0x81, 0x53, 0x2f, 0xd1, 0xce, 0x3b, 0xcf, 0xcc, 0xbc, 0x1f, 0xcf, 0xfb, 0xe1, 0xc0, 0x63, 0x3b, 0xda, 0x05, 0x6e, 0xe0, 0x26, 0xda, 0x39, 0xf3, 0xcd, 0xcc, 0x37, 0xe7, 0x7c, 0x73,
0xf6, 0x2c, 0x89, 0x22, 0x9f, 0x92, 0xcc, 0x8f, 0xc2, 0x9f, 0xc8, 0x61, 0x9a, 0x25, 0x34, 0x41, 0xce, 0x71, 0x60, 0xdb, 0x4f, 0xa2, 0xc8, 0xa3, 0x24, 0xf3, 0xa2, 0xf0, 0x07, 0x72, 0x98, 0x66,
0x5d, 0xba, 0x48, 0x49, 0x8e, 0xff, 0xea, 0xc0, 0xc6, 0xa9, 0xba, 0x8d, 0xc6, 0x70, 0x57, 0xc3, 0x09, 0x4d, 0x90, 0x4d, 0x17, 0x29, 0xc9, 0xf1, 0x9f, 0x3d, 0xd8, 0x38, 0xad, 0x4f, 0xa3, 0x09,
0x4f, 0x02, 0xd7, 0x1a, 0x59, 0xe3, 0x81, 0x67, 0x8a, 0x11, 0x86, 0x75, 0x9a, 0x50, 0x3f, 0x3a, 0xdc, 0x55, 0xf0, 0xd3, 0xc0, 0x31, 0xc6, 0xc6, 0x64, 0xe8, 0xea, 0x66, 0x84, 0x61, 0x9d, 0x26,
0xf1, 0x23, 0x3f, 0x9e, 0x11, 0xd7, 0x1e, 0x59, 0x63, 0xc7, 0xd3, 0x64, 0x68, 0x04, 0xc3, 0x80, 0xd4, 0x8b, 0x4e, 0xbc, 0xc8, 0x8b, 0x7d, 0xe2, 0x98, 0x63, 0x63, 0x62, 0xb9, 0x8a, 0x0d, 0x8d,
0x4c, 0xe9, 0x29, 0x09, 0xa3, 0x30, 0xbe, 0x70, 0x1d, 0x0e, 0x51, 0x45, 0xe8, 0x7d, 0xd8, 0x8a, 0x61, 0x14, 0x90, 0x19, 0x3d, 0x25, 0x61, 0x14, 0xc6, 0x17, 0x8e, 0xc5, 0x21, 0x75, 0x13, 0x7a,
0xc2, 0xab, 0x79, 0x18, 0xf8, 0x34, 0x4c, 0x62, 0x8f, 0xfd, 0x75, 0x3b, 0x23, 0x6b, 0x6c, 0x7b, 0x17, 0xb6, 0xa2, 0xf0, 0x6a, 0x1e, 0x06, 0x1e, 0x0d, 0x93, 0xd8, 0x65, 0x7f, 0x9d, 0xde, 0xd8,
0x35, 0x39, 0xfa, 0x10, 0xee, 0xe5, 0xd4, 0x9f, 0x86, 0x51, 0x48, 0x17, 0xcf, 0x08, 0x11, 0xe0, 0x98, 0x18, 0x6e, 0xc3, 0x8e, 0xde, 0x87, 0x7b, 0x39, 0xf5, 0x66, 0x61, 0x14, 0xd2, 0xc5, 0x33,
0x2e, 0x07, 0xd7, 0x37, 0xd0, 0x01, 0xc0, 0x2c, 0x23, 0x3e, 0x25, 0xc7, 0x41, 0x90, 0xb9, 0x3d, 0x42, 0x04, 0xd8, 0xe6, 0xe0, 0xe6, 0x04, 0x3a, 0x00, 0xf0, 0x33, 0xe2, 0x51, 0x72, 0x1c, 0x04,
0x6e, 0x84, 0x22, 0x41, 0x2e, 0xf4, 0xa7, 0x52, 0xf5, 0x3e, 0xd7, 0xab, 0x58, 0xa2, 0xc7, 0xb0, 0x99, 0xd3, 0xe7, 0x97, 0xa8, 0x59, 0x90, 0x03, 0x83, 0x99, 0xa4, 0x3e, 0xe0, 0xbc, 0x8a, 0x21,
0x31, 0x4d, 0xb2, 0x2c, 0xf9, 0xd1, 0x23, 0xb3, 0x24, 0x0b, 0x72, 0x77, 0x6d, 0xe4, 0x8c, 0x87, 0x7a, 0x0c, 0x1b, 0xb3, 0x24, 0xcb, 0x92, 0xef, 0x5d, 0xe2, 0x27, 0x59, 0x90, 0x3b, 0x6b, 0x63,
0x47, 0xdb, 0x87, 0xdc, 0x69, 0x87, 0x27, 0xca, 0x9e, 0xa7, 0x23, 0xd1, 0x67, 0xb0, 0x39, 0x89, 0x6b, 0x32, 0x3a, 0xda, 0x3e, 0xe4, 0x4e, 0x3b, 0x3c, 0xa9, 0xcd, 0xb9, 0x2a, 0x12, 0x7d, 0x02,
0xaf, 0xfd, 0x28, 0x0c, 0x8a, 0xb3, 0x83, 0xf6, 0xb3, 0x06, 0x14, 0xed, 0x42, 0x2f, 0xa7, 0x3e, 0x9b, 0xd3, 0xf8, 0xda, 0x8b, 0xc2, 0xa0, 0x58, 0x3b, 0xec, 0x5e, 0xab, 0x41, 0xd1, 0x2e, 0xf4,
0x9d, 0xe7, 0x2e, 0x8c, 0xac, 0x71, 0xd7, 0x93, 0x2b, 0xf4, 0x31, 0xec, 0x32, 0xcf, 0xe7, 0xf4, 0x73, 0xea, 0xd1, 0x79, 0xee, 0xc0, 0xd8, 0x98, 0xd8, 0xae, 0x1c, 0xa1, 0x0f, 0x61, 0x97, 0x79,
0x79, 0xe5, 0x91, 0x17, 0x59, 0x38, 0x23, 0xee, 0x90, 0x1b, 0xdf, 0xb2, 0xcb, 0xee, 0x4b, 0x49, 0x3e, 0xa7, 0xcf, 0x2b, 0x8f, 0xbc, 0xc8, 0x42, 0x9f, 0x38, 0x23, 0x7e, 0xf9, 0x8e, 0x59, 0xb6,
0x16, 0x26, 0x81, 0xbb, 0xce, 0x0d, 0x94, 0x2b, 0xee, 0x73, 0x7e, 0xe2, 0xe9, 0x4d, 0x1a, 0x66, 0x5f, 0x4a, 0xb2, 0x30, 0x09, 0x9c, 0x75, 0x7e, 0x41, 0x39, 0xe2, 0x3e, 0xe7, 0x2b, 0x9e, 0xde,
0xe4, 0x65, 0x78, 0x49, 0xdc, 0x0d, 0x8e, 0xa8, 0xc9, 0xd1, 0x0e, 0x74, 0xc3, 0x38, 0x20, 0x37, 0xa4, 0x61, 0x46, 0x5e, 0x86, 0x97, 0xc4, 0xd9, 0xe0, 0x88, 0x86, 0x1d, 0xed, 0x80, 0x1d, 0xc6,
0xee, 0x26, 0x07, 0x88, 0x05, 0xda, 0x83, 0xb5, 0x34, 0x23, 0x13, 0xbe, 0x71, 0x97, 0x6f, 0x94, 0x01, 0xb9, 0x71, 0x36, 0x39, 0x40, 0x0c, 0xd0, 0x1e, 0xac, 0xa5, 0x19, 0x99, 0xf2, 0x89, 0xbb,
0x6b, 0x16, 0x73, 0x46, 0x95, 0x82, 0x16, 0x5b, 0x22, 0xe6, 0x8a, 0x08, 0xff, 0xe9, 0xc0, 0xba, 0x7c, 0xa2, 0x1c, 0xb3, 0x98, 0x33, 0xa9, 0x14, 0xb2, 0xd8, 0x12, 0x31, 0xaf, 0x99, 0xf0, 0xef,
0xea, 0x08, 0x76, 0xc4, 0x9f, 0xcd, 0x92, 0x79, 0x4c, 0x79, 0xac, 0x04, 0xe1, 0x54, 0x11, 0xda, 0x16, 0xac, 0xd7, 0x1d, 0xc1, 0x96, 0x78, 0xbe, 0x9f, 0xcc, 0x63, 0xca, 0x63, 0x25, 0x04, 0x57,
0x87, 0x41, 0x4e, 0xfd, 0x8c, 0x72, 0x5d, 0x05, 0xd3, 0x2a, 0x81, 0x4e, 0xda, 0xaf, 0xfd, 0x68, 0x37, 0xa1, 0x7d, 0x18, 0xe6, 0xd4, 0xcb, 0x28, 0xe7, 0x2a, 0x94, 0x56, 0x19, 0x54, 0xd1, 0x7e,
0x4e, 0x24, 0xd5, 0x4c, 0xb1, 0x8e, 0x14, 0x3e, 0x14, 0x6c, 0x33, 0xc5, 0xec, 0x45, 0xc6, 0x53, 0xe9, 0x45, 0x73, 0x22, 0xa5, 0xa6, 0x9b, 0x55, 0xa4, 0xf0, 0xa1, 0x50, 0x9b, 0x6e, 0x66, 0x27,
0x71, 0x5b, 0x57, 0xbc, 0x58, 0x0a, 0x0c, 0xda, 0x8a, 0x8b, 0x7a, 0x35, 0xda, 0x96, 0x61, 0x90, 0x32, 0x9d, 0x8a, 0xdd, 0x6c, 0x71, 0x62, 0x69, 0xd0, 0x64, 0x2b, 0x36, 0xea, 0x37, 0x64, 0x5b,
0x61, 0xed, 0x6b, 0x61, 0x7d, 0x17, 0x36, 0x0a, 0xac, 0x88, 0xc1, 0x1a, 0x7f, 0x45, 0x17, 0x32, 0x86, 0x41, 0x86, 0x75, 0xa0, 0x84, 0xf5, 0x6d, 0xd8, 0x28, 0xb0, 0x22, 0x06, 0x6b, 0xfc, 0x14,
0x1a, 0x93, 0x2a, 0x4c, 0x03, 0x0e, 0x51, 0x24, 0x4c, 0xcf, 0x34, 0x23, 0x5f, 0xaa, 0xbc, 0xa9, 0xd5, 0xc8, 0x64, 0x4c, 0xaa, 0x30, 0x0d, 0x39, 0xa4, 0x66, 0x61, 0x3c, 0xd3, 0x8c, 0x7c, 0x5e,
0x04, 0x2c, 0x50, 0x19, 0xf7, 0xf1, 0x24, 0xe0, 0x64, 0x19, 0x78, 0xe5, 0xba, 0x29, 0xd5, 0xd7, 0xd7, 0x4d, 0x65, 0x60, 0x81, 0xca, 0xb8, 0x8f, 0xa7, 0x01, 0x17, 0xcb, 0xd0, 0x2d, 0xc7, 0x6d,
0x9b, 0x53, 0xbd, 0x24, 0xc1, 0x46, 0x1b, 0x09, 0x36, 0x75, 0x12, 0xe0, 0xd7, 0x16, 0x6c, 0x1d, 0x4f, 0x7d, 0xbd, 0xfd, 0xa9, 0x97, 0x22, 0xd8, 0xe8, 0x12, 0xc1, 0xa6, 0x2a, 0x02, 0xfc, 0xda,
0xe7, 0x39, 0xa1, 0xdc, 0x05, 0x32, 0xcc, 0x07, 0x00, 0xe2, 0x71, 0x6e, 0x8a, 0x25, 0x4c, 0xa9, 0x80, 0xad, 0xe3, 0x3c, 0x27, 0x94, 0xbb, 0x40, 0x86, 0xf9, 0x00, 0x40, 0x1c, 0xce, 0xaf, 0x62,
0x24, 0xec, 0xc2, 0x29, 0x5d, 0x08, 0x67, 0xda, 0xdc, 0x99, 0xe5, 0x5a, 0xec, 0xcd, 0xc4, 0x9e, 0x88, 0xab, 0x54, 0x16, 0xb6, 0xe1, 0x8c, 0x2e, 0x84, 0x33, 0x4d, 0xee, 0xcc, 0x72, 0x2c, 0xe6,
0x53, 0xec, 0xcd, 0xca, 0x3d, 0x42, 0x7f, 0x50, 0xa3, 0x59, 0xae, 0xf1, 0xef, 0x0e, 0x6c, 0x6b, 0x7c, 0x31, 0x67, 0x15, 0x73, 0x7e, 0x39, 0x47, 0xe8, 0x77, 0xf5, 0x68, 0x96, 0x63, 0xfc, 0xab,
0x15, 0xee, 0x78, 0xc6, 0x22, 0x83, 0x1e, 0x41, 0x4f, 0xd4, 0x02, 0xae, 0xc7, 0xf0, 0x68, 0x4f, 0x05, 0xdb, 0x4a, 0x86, 0x3b, 0xf6, 0x59, 0x64, 0xd0, 0x23, 0xe8, 0x8b, 0x5c, 0xc0, 0x79, 0x8c,
0x26, 0xa8, 0x86, 0x3d, 0xe5, 0x88, 0xb3, 0x3b, 0x9e, 0xc4, 0xb2, 0x53, 0x22, 0xdf, 0xb9, 0x7e, 0x8e, 0xf6, 0xe4, 0x03, 0x55, 0xb0, 0xa7, 0x1c, 0x71, 0x76, 0xc7, 0x95, 0x58, 0xb6, 0x4a, 0xbc,
0x2d, 0xa7, 0x04, 0xb5, 0xd9, 0x29, 0x81, 0x45, 0x1f, 0x41, 0x37, 0x23, 0xa9, 0xbf, 0xe0, 0x8a, 0x77, 0xce, 0xaf, 0x63, 0x95, 0x90, 0x36, 0x5b, 0x25, 0xb0, 0xe8, 0x03, 0xb0, 0x33, 0x92, 0x7a,
0x0f, 0x8f, 0xde, 0x6e, 0x3a, 0xe4, 0x31, 0xc0, 0xd9, 0x1d, 0x4f, 0x20, 0xd9, 0x43, 0x7e, 0x9a, 0x0b, 0x4e, 0x7c, 0x74, 0xf4, 0x66, 0xdb, 0x22, 0x97, 0x01, 0xce, 0xee, 0xb8, 0x02, 0xc9, 0x0e,
0x92, 0x38, 0xe0, 0x06, 0xb5, 0x3c, 0x74, 0xcc, 0x11, 0xec, 0x21, 0x81, 0x45, 0x87, 0xd0, 0x39, 0xf2, 0xd2, 0x94, 0xc4, 0x01, 0xbf, 0x50, 0xc7, 0x41, 0xc7, 0x1c, 0xc1, 0x0e, 0x12, 0x58, 0x74,
0x27, 0x24, 0xe0, 0x74, 0x1d, 0x1e, 0xb9, 0x4d, 0x67, 0x9e, 0x11, 0xc2, 0x4e, 0x70, 0x1c, 0xfa, 0x08, 0xbd, 0x73, 0x42, 0x02, 0x2e, 0xd7, 0xd1, 0x91, 0xd3, 0xb6, 0xe6, 0x19, 0x21, 0x6c, 0x05,
0x94, 0xb1, 0x83, 0x66, 0x21, 0xb9, 0x16, 0xec, 0x1d, 0x1e, 0xed, 0x37, 0xeb, 0x26, 0x30, 0x67, 0xc7, 0xa1, 0x8f, 0x99, 0x3a, 0x68, 0x16, 0x92, 0x6b, 0xa1, 0xde, 0xd1, 0xd1, 0x7e, 0x3b, 0x37,
0x77, 0xbc, 0x12, 0xcf, 0x34, 0xbc, 0xf4, 0x63, 0xff, 0x42, 0x54, 0xcf, 0x16, 0x0d, 0xbf, 0xe0, 0x81, 0x39, 0xbb, 0xe3, 0x96, 0x78, 0xc6, 0xf0, 0xd2, 0x8b, 0xbd, 0x0b, 0x91, 0x3d, 0x3b, 0x18,
0x08, 0xa6, 0xa1, 0xc0, 0xa2, 0x4d, 0xb0, 0xe9, 0x42, 0xd2, 0xd4, 0xa6, 0x8b, 0x93, 0x3e, 0x74, 0x7e, 0xc6, 0x11, 0x8c, 0xa1, 0xc0, 0xa2, 0x4d, 0x30, 0xe9, 0x42, 0xca, 0xd4, 0xa4, 0x8b, 0x93,
0xaf, 0x59, 0x42, 0xe1, 0xbf, 0x2d, 0x23, 0x4e, 0xe2, 0xa8, 0xd9, 0x41, 0xac, 0xe5, 0x3a, 0x88, 0x01, 0xd8, 0xd7, 0xec, 0x41, 0xe1, 0x3f, 0x0c, 0x2d, 0x4e, 0x62, 0xa9, 0x5e, 0x41, 0x8c, 0xe5,
0xbd, 0x4a, 0x07, 0x71, 0xda, 0x3a, 0x48, 0x55, 0x3f, 0x3b, 0x66, 0xfd, 0x64, 0x19, 0xf2, 0x52, 0x2a, 0x88, 0xb9, 0x4a, 0x05, 0xb1, 0xba, 0x2a, 0x48, 0x95, 0x3f, 0x7b, 0x4a, 0xfe, 0xd4, 0x2b,
0xed, 0x7e, 0xa2, 0x42, 0xd4, 0xe4, 0xbc, 0x1a, 0xce, 0xb3, 0x8c, 0xc4, 0xa2, 0x74, 0xf5, 0x64, 0x9f, 0xdd, 0x5e, 0xf9, 0xfc, 0x79, 0x96, 0x91, 0x58, 0xa4, 0xac, 0xbe, 0xcc, 0x82, 0x95, 0x09,
0x35, 0xac, 0x44, 0xf8, 0x21, 0xdc, 0xd3, 0xa3, 0xca, 0xea, 0xdd, 0x01, 0x40, 0x3e, 0x4f, 0x49, 0x3f, 0x84, 0x7b, 0x6a, 0x34, 0x59, 0x9e, 0x3b, 0x00, 0xc8, 0xe7, 0x29, 0xc9, 0xd8, 0x20, 0x77,
0xc6, 0x16, 0xb9, 0x6b, 0x8d, 0x1c, 0xd6, 0xbc, 0x2a, 0x09, 0x7e, 0x6c, 0x78, 0x4b, 0x30, 0xb5, 0x8c, 0xb1, 0xc5, 0x8a, 0x56, 0x65, 0xc1, 0x8f, 0x35, 0x2f, 0x09, 0x85, 0x36, 0x18, 0x19, 0x4d,
0xd6, 0x93, 0xad, 0x7a, 0x4f, 0xc6, 0x5f, 0x19, 0x47, 0x05, 0x5d, 0x57, 0x68, 0xfc, 0x3b, 0x32, 0x46, 0xf8, 0x0b, 0x6d, 0xa9, 0x90, 0xe9, 0x0a, 0x05, 0x7f, 0x47, 0xc6, 0x4a, 0xe6, 0x5f, 0x19,
0x66, 0xb2, 0x0e, 0xcb, 0x00, 0xbe, 0x02, 0x54, 0x27, 0xf4, 0x0a, 0xb7, 0xaa, 0x95, 0xca, 0xd6, 0xb8, 0x57, 0x80, 0x9a, 0x42, 0x5e, 0x61, 0xd7, 0x7a, 0x86, 0x32, 0xd5, 0x0c, 0x85, 0x7f, 0xd4,
0x2b, 0x15, 0xfe, 0xd9, 0x24, 0x87, 0x60, 0xfe, 0xff, 0x73, 0xfb, 0xf2, 0xdd, 0x03, 0x7f, 0x67, 0x45, 0x21, 0x14, 0xff, 0xef, 0xec, 0xbe, 0x7c, 0xd5, 0xc0, 0xdf, 0x68, 0xa1, 0x62, 0x8f, 0x88,
0x84, 0x8a, 0x25, 0x13, 0xbb, 0x9a, 0x47, 0x7d, 0x91, 0x0a, 0x7f, 0x77, 0xbd, 0x72, 0xcd, 0x5c, 0x6d, 0xcd, 0x70, 0x2f, 0x17, 0xa9, 0xf0, 0xb7, 0xed, 0x96, 0x63, 0xe6, 0xaa, 0x54, 0xa6, 0x31,
0x95, 0xca, 0x72, 0xe6, 0x8c, 0x6d, 0x4f, 0x2c, 0x18, 0xaf, 0xae, 0x93, 0x68, 0x7e, 0xc9, 0xde, 0x6b, 0x62, 0xb8, 0x62, 0xc0, 0xf4, 0x74, 0x9d, 0x44, 0xf3, 0x4b, 0x76, 0x8e, 0xc5, 0xf4, 0x24,
0x71, 0x18, 0xaf, 0xc4, 0x0a, 0x7f, 0x0b, 0xf7, 0x1b, 0xf3, 0x6e, 0x05, 0x3b, 0x95, 0xa1, 0xc6, 0x46, 0xf8, 0x6b, 0xb8, 0xdf, 0xfa, 0xde, 0x56, 0xb8, 0x67, 0xad, 0x99, 0x31, 0x95, 0x66, 0x06,
0xd6, 0x86, 0x1a, 0xfc, 0xda, 0x86, 0x1d, 0x8f, 0xcc, 0x48, 0x98, 0xd2, 0x7f, 0x3b, 0xf1, 0xe9, 0xbf, 0x36, 0x61, 0xc7, 0x25, 0x3e, 0x09, 0x53, 0xfa, 0x77, 0x3b, 0x3d, 0xb5, 0x93, 0x32, 0x1b,
0x13, 0x95, 0x5d, 0x9b, 0xa8, 0x8c, 0x36, 0xee, 0xd4, 0xdb, 0xb8, 0x1a, 0x86, 0x8e, 0x11, 0x86, 0x9d, 0x94, 0x56, 0xbe, 0xad, 0x66, 0xf9, 0xae, 0x87, 0xa1, 0xa7, 0x85, 0xa1, 0x2a, 0x8f, 0xb6,
0xaa, 0x4d, 0x76, 0xb5, 0x36, 0xb9, 0x0f, 0x83, 0x17, 0x65, 0x83, 0xeb, 0x89, 0x06, 0x57, 0x0a, 0x52, 0x1e, 0xf7, 0x61, 0xf8, 0xa2, 0x2c, 0x6c, 0x7d, 0x51, 0xd8, 0x4a, 0x43, 0x55, 0x92, 0x06,
0xaa, 0xd6, 0xd4, 0x6f, 0x6b, 0x4d, 0x6b, 0x46, 0x6b, 0xfa, 0xcd, 0x24, 0x93, 0xec, 0x4e, 0xcb, 0x5d, 0x25, 0x69, 0x4d, 0x2b, 0x49, 0xbf, 0xe8, 0x62, 0x92, 0x55, 0x69, 0x79, 0x3f, 0x20, 0xe8,
0xfb, 0x01, 0x41, 0xc7, 0xaf, 0x3c, 0xc0, 0x7f, 0x6b, 0x96, 0x39, 0xad, 0x96, 0x75, 0x34, 0xcb, 0x79, 0x95, 0x07, 0xf8, 0x6f, 0xe5, 0x66, 0x56, 0xe7, 0xcd, 0x7a, 0xca, 0xcd, 0x4a, 0xee, 0x76,
0x4a, 0xdd, 0xbb, 0x8a, 0xee, 0xf8, 0x39, 0xec, 0x34, 0xa8, 0x97, 0xa3, 0x47, 0xd0, 0xcf, 0xe4, 0x8d, 0x3b, 0x7e, 0x0e, 0x3b, 0x2d, 0xf4, 0x72, 0xf4, 0x08, 0x06, 0x99, 0xec, 0x25, 0x0d, 0xde,
0x4c, 0x69, 0xf1, 0x99, 0x72, 0xaf, 0xb9, 0x56, 0xf3, 0xd1, 0xb2, 0x80, 0xe2, 0xcf, 0x59, 0xd4, 0x4b, 0xee, 0xb5, 0xe7, 0x68, 0xde, 0x52, 0x16, 0x50, 0xfc, 0x29, 0x8b, 0xfa, 0x95, 0x02, 0x99,
0xaf, 0x34, 0xc8, 0x24, 0x3e, 0x4f, 0x96, 0xb7, 0x16, 0xff, 0xe1, 0xc0, 0x3b, 0x1e, 0x49, 0xf5, 0xc6, 0xe7, 0xc9, 0xf2, 0xb7, 0xc5, 0xbf, 0x59, 0xf0, 0x96, 0x4b, 0x52, 0x35, 0xdd, 0x88, 0xfc,
0x72, 0x23, 0xea, 0x17, 0xbf, 0xa9, 0xb2, 0xce, 0xd2, 0xac, 0x7b, 0x73, 0xbf, 0x0f, 0xaa, 0xbe, 0xc5, 0x77, 0xaa, 0x6e, 0x67, 0x28, 0xb7, 0xfb, 0xff, 0x7e, 0x17, 0x54, 0xf5, 0x60, 0x4d, 0xa9,
0xb0, 0xa6, 0xf5, 0x85, 0x06, 0x9f, 0x0e, 0x9a, 0x19, 0x64, 0xcc, 0xc8, 0x50, 0x9b, 0x91, 0xeb, 0x07, 0x2d, 0x3e, 0x1d, 0xb6, 0x2b, 0x48, 0xeb, 0x8d, 0xa1, 0xd1, 0x1b, 0x37, 0xbf, 0x3d, 0x46,
0xdf, 0x20, 0xc3, 0x65, 0xbf, 0x41, 0xf0, 0x29, 0xdc, 0x6f, 0x0a, 0x79, 0x5e, 0xf4, 0x2d, 0x45, 0xcb, 0x7e, 0x7b, 0xe0, 0x53, 0xb8, 0xdf, 0x16, 0xf2, 0x9c, 0xf9, 0x52, 0x23, 0x52, 0x94, 0x96,
0x91, 0xa2, 0xb5, 0xd4, 0xe4, 0xf8, 0x1b, 0xd8, 0xbf, 0x25, 0xe8, 0x39, 0xfa, 0x84, 0x71, 0xf7, 0x86, 0x1d, 0x7f, 0x05, 0xfb, 0xb7, 0x04, 0x3d, 0x47, 0x1f, 0x31, 0xed, 0x9e, 0x27, 0x85, 0x16,
0x3c, 0x29, 0xb8, 0x88, 0xa5, 0x5e, 0xb7, 0x9c, 0xf1, 0xc4, 0x01, 0x7c, 0x06, 0xae, 0xa9, 0xde, 0xb1, 0xe4, 0x75, 0xcb, 0x1a, 0x57, 0x2c, 0xc0, 0x67, 0xe0, 0xe8, 0xf4, 0x4e, 0x16, 0xf2, 0x35,
0xc9, 0x42, 0x66, 0x73, 0x1b, 0x97, 0xca, 0x4c, 0xb1, 0xd5, 0x4c, 0x79, 0x05, 0xbb, 0xf5, 0x9b, 0x77, 0x69, 0xa9, 0x7c, 0x29, 0x66, 0xfd, 0xa5, 0xbc, 0x82, 0xdd, 0xe6, 0x4e, 0x3c, 0x76, 0xc5,
0x78, 0xec, 0x8a, 0x0c, 0xb5, 0x94, 0x0c, 0xad, 0xee, 0xb6, 0x9b, 0xef, 0x76, 0xd4, 0xbb, 0xdf, 0x0b, 0x35, 0x6a, 0x2f, 0xb4, 0xda, 0xdb, 0x6c, 0xdf, 0xdb, 0xaa, 0xef, 0xfd, 0x0e, 0x6c, 0xeb,
0x83, 0x6d, 0xd3, 0x96, 0xc9, 0x93, 0x1c, 0x6d, 0x81, 0x33, 0x79, 0x52, 0x78, 0x8d, 0xfd, 0xc4, 0x77, 0x99, 0x3e, 0xc9, 0xd1, 0x16, 0x58, 0xd3, 0x27, 0x85, 0xd7, 0xd8, 0x4f, 0xfc, 0x93, 0xc1,
0xbf, 0x58, 0xcc, 0x53, 0x57, 0x0d, 0x49, 0x28, 0x75, 0xf9, 0x6f, 0x75, 0xa5, 0xd2, 0xda, 0x69, 0x3c, 0x75, 0xd5, 0xf2, 0x08, 0x25, 0x97, 0x7f, 0x96, 0x57, 0x2a, 0xd6, 0x56, 0x3b, 0xeb, 0x5e,
0xd6, 0xba, 0xa3, 0x6a, 0x7d, 0x03, 0x07, 0x6d, 0xba, 0x48, 0x0f, 0x2f, 0xaf, 0xcd, 0x6a, 0xfe, 0x9d, 0xf5, 0x0d, 0x1c, 0x74, 0x71, 0x91, 0x1e, 0x5e, 0x9e, 0xcd, 0x6a, 0xfe, 0x3a, 0x83, 0x37,
0x3a, 0x83, 0xb7, 0x4c, 0x7f, 0x15, 0x85, 0xeb, 0x81, 0x59, 0xb8, 0x1a, 0x49, 0x5c, 0x56, 0xac, 0x74, 0x7f, 0x15, 0x89, 0xeb, 0x81, 0x9e, 0xb8, 0x5a, 0x45, 0x5c, 0x66, 0xac, 0x6f, 0x9b, 0x51,
0xef, 0xeb, 0x51, 0x5d, 0xb9, 0x42, 0xdf, 0x36, 0x4c, 0x3c, 0x65, 0xf7, 0x37, 0x69, 0x8a, 0x3e, 0x5d, 0x39, 0x43, 0xdf, 0xd6, 0x4c, 0x3c, 0x65, 0xfb, 0xb7, 0x31, 0x45, 0xef, 0x41, 0x5f, 0xa0,
0x80, 0x9e, 0x40, 0xc9, 0x6f, 0x82, 0x46, 0x3d, 0x25, 0x04, 0xff, 0x6a, 0xd7, 0xef, 0x39, 0x4d, 0xe4, 0xb7, 0x40, 0x2b, 0x4f, 0x09, 0xc1, 0x3f, 0x9b, 0xcd, 0x7d, 0x4e, 0x93, 0xf8, 0x3c, 0xbc,
0xe2, 0xf3, 0xf0, 0xe2, 0x8d, 0x98, 0x59, 0x95, 0xea, 0xd4, 0xab, 0x57, 0x27, 0x63, 0xaa, 0xed, 0xf8, 0xcf, 0xf6, 0xaa, 0xb5, 0x8c, 0xd7, 0x57, 0x33, 0x9e, 0xd6, 0xc5, 0x0e, 0x9a, 0x5d, 0xec,
0xd7, 0xa7, 0xda, 0x07, 0xac, 0x08, 0xe9, 0xde, 0x11, 0x1f, 0x6b, 0xe5, 0x48, 0x64, 0x71, 0x13, 0x03, 0x96, 0x74, 0x54, 0x6f, 0x88, 0x8f, 0xb2, 0xb2, 0x05, 0x32, 0x38, 0x65, 0x31, 0x98, 0xf5,
0xc4, 0x62, 0xda, 0xe3, 0xff, 0x96, 0x7a, 0xf8, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x82, 0xe9, 0xf9, 0xbf, 0x9f, 0x1e, 0xfe, 0x15, 0x00, 0x00, 0xff, 0xff, 0x44, 0xb2, 0x25, 0xe1, 0x95, 0x12,
0x7d, 0xb9, 0xad, 0x12, 0x00, 0x00, 0x00, 0x00,
} }
...@@ -9,7 +9,6 @@ import "errors" ...@@ -9,7 +9,6 @@ import "errors"
// Errors for lottery // Errors for lottery
var ( var (
ErrRiskParam = errors.New("ErrRiskParam") ErrRiskParam = errors.New("ErrRiskParam")
ErrCollateralizeRepeatHash = errors.New("ErrCollateralizeRepeatHash")
ErrCollateralizeStatus = errors.New("ErrCollateralizeStatus") ErrCollateralizeStatus = errors.New("ErrCollateralizeStatus")
ErrCollateralizeExceedDebtCeiling = errors.New("ErrCollateralizeExceedDebtCeiling") ErrCollateralizeExceedDebtCeiling = errors.New("ErrCollateralizeExceedDebtCeiling")
ErrPriceInvalid = errors.New("ErrPriceInvalid") ErrPriceInvalid = errors.New("ErrPriceInvalid")
......
...@@ -6,14 +6,14 @@ package types ...@@ -6,14 +6,14 @@ package types
// CollateralizeCreateTx for construction // CollateralizeCreateTx for construction
type CollateralizeCreateTx struct { type CollateralizeCreateTx struct {
TotalBalance int64 `json:"totalBalance"` TotalBalance float64 `json:"totalBalance"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
// CollateralizeBorrowTx for construction // CollateralizeBorrowTx for construction
type CollateralizeBorrowTx struct { type CollateralizeBorrowTx struct {
CollateralizeID string `json:"collateralizeId"` CollateralizeID string `json:"collateralizeId"`
Value int64 `json:"value"` Value float64 `json:"value"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
...@@ -28,13 +28,13 @@ type CollateralizeRepayTx struct { ...@@ -28,13 +28,13 @@ type CollateralizeRepayTx struct {
type CollateralizeAppendTx struct { type CollateralizeAppendTx struct {
CollateralizeID string `json:"collateralizeId"` CollateralizeID string `json:"collateralizeId"`
RecordID string `json:"recordID"` RecordID string `json:"recordID"`
Value int64 `json:"value"` Value float64 `json:"value"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
// CollateralizeFeedTx for construction // CollateralizeFeedTx for construction
type CollateralizeFeedTx struct { type CollateralizeFeedTx struct {
Price []float32 `json:"price"` Price []float64 `json:"price"`
Volume []int64 `json:"volume"` Volume []int64 `json:"volume"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
...@@ -42,16 +42,16 @@ type CollateralizeFeedTx struct { ...@@ -42,16 +42,16 @@ type CollateralizeFeedTx struct {
// CollateralizeRetrieveTx for construction // CollateralizeRetrieveTx for construction
type CollateralizeRetrieveTx struct { type CollateralizeRetrieveTx struct {
CollateralizeID string `json:"collateralizeId"` CollateralizeID string `json:"collateralizeId"`
Balance int64 `json:"Balance"` Balance float64 `json:"Balance"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
// CollateralizeManageTx for construction // CollateralizeManageTx for construction
type CollateralizeManageTx struct { type CollateralizeManageTx struct {
DebtCeiling int64 `json:"debtCeiling"` DebtCeiling float64 `json:"debtCeiling"`
LiquidationRatio float32 `json:"liquidationRatio"` LiquidationRatio float64 `json:"liquidationRatio"`
StabilityFeeRatio float32 `json:"stabilityFeeRatio"` StabilityFeeRatio float64 `json:"stabilityFeeRatio"`
Period int64 `json:"period"` Period int64 `json:"period"`
CollTotalBalance int64 `json:"collTotalBalance"` TotalBalance float64 `json:"totalBalance"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
...@@ -43,11 +43,11 @@ func IssuanceCreateRawTxCmd() *cobra.Command { ...@@ -43,11 +43,11 @@ func IssuanceCreateRawTxCmd() *cobra.Command {
} }
func addIssuanceCreateFlags(cmd *cobra.Command) { func addIssuanceCreateFlags(cmd *cobra.Command) {
cmd.Flags().Uint64P("balance", "b", 0, "balance") cmd.Flags().Float64P("balance", "b", 0, "balance")
cmd.MarkFlagRequired("balance") cmd.MarkFlagRequired("balance")
cmd.Flags().Uint64P("debtCeiling", "d", 0, "debtCeiling") cmd.Flags().Float64P("debtCeiling", "d", 0, "debtCeiling")
cmd.Flags().Float32P("liquidationRatio", "l", 0, "liquidationRatio") cmd.Flags().Float32P("liquidationRatio", "l", 0, "liquidationRatio")
cmd.Flags().Uint64P("period", "p", 0, "period") cmd.Flags().Float32P("period", "p", 0, "period")
} }
func IssuanceCreate(cmd *cobra.Command, args []string) { func IssuanceCreate(cmd *cobra.Command, args []string) {
...@@ -58,15 +58,15 @@ func IssuanceCreate(cmd *cobra.Command, args []string) { ...@@ -58,15 +58,15 @@ func IssuanceCreate(cmd *cobra.Command, args []string) {
} }
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
balance, _ := cmd.Flags().GetUint64("balance") balance, _ := cmd.Flags().GetFloat64("balance")
debtCeiling, _ := cmd.Flags().GetUint64("debtCeiling") debtCeiling, _ := cmd.Flags().GetFloat64("debtCeiling")
liquidationRatio, _ := cmd.Flags().GetFloat32("liquidationRatio") liquidationRatio, _ := cmd.Flags().GetFloat32("liquidationRatio")
period, _ := cmd.Flags().GetUint64("period") period, _ := cmd.Flags().GetUint64("period")
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: cfg.ExecName(pkt.IssuanceX), Execer: cfg.ExecName(pkt.IssuanceX),
ActionName: "IssuanceCreate", ActionName: "IssuanceCreate",
Payload: []byte(fmt.Sprintf("{\"totalBalance\":%d, \"debtCeiling\":%d, \"liquidationRatio\":%f, \"period\":%d}", Payload: []byte(fmt.Sprintf("{\"totalBalance\":%f, \"debtCeiling\":%f, \"liquidationRatio\":%f, \"period\":%d}",
balance, debtCeiling, liquidationRatio, period)), balance, debtCeiling, liquidationRatio, period)),
} }
...@@ -89,7 +89,7 @@ func IssuanceDebtRawTxCmd() *cobra.Command { ...@@ -89,7 +89,7 @@ func IssuanceDebtRawTxCmd() *cobra.Command {
func addIssuanceDebtFlags(cmd *cobra.Command) { func addIssuanceDebtFlags(cmd *cobra.Command) {
cmd.Flags().StringP("issuanceID", "g", "", "issuance ID") cmd.Flags().StringP("issuanceID", "g", "", "issuance ID")
cmd.MarkFlagRequired("issuanceID") cmd.MarkFlagRequired("issuanceID")
cmd.Flags().Uint64P("value", "v", 0, "value") cmd.Flags().Float64P("value", "v", 0, "value")
cmd.MarkFlagRequired("value") cmd.MarkFlagRequired("value")
} }
...@@ -102,12 +102,12 @@ func IssuanceDebt(cmd *cobra.Command, args []string) { ...@@ -102,12 +102,12 @@ func IssuanceDebt(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
issuanceID, _ := cmd.Flags().GetString("issuanceID") issuanceID, _ := cmd.Flags().GetString("issuanceID")
value, _ := cmd.Flags().GetUint64("value") value, _ := cmd.Flags().GetFloat64("value")
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: cfg.ExecName(pkt.IssuanceX), Execer: cfg.ExecName(pkt.IssuanceX),
ActionName: "IssuanceDebt", ActionName: "IssuanceDebt",
Payload: []byte(fmt.Sprintf("{\"issuanceID\":\"%s\",\"value\":%d}", issuanceID, value)), Payload: []byte(fmt.Sprintf("{\"issuanceID\":\"%s\",\"value\":%f}", issuanceID, value)),
} }
var res string var res string
......
...@@ -82,3 +82,8 @@ func (c *Issuance) ExecDelLocal_Feed(payload *pty.IssuanceFeed, tx *types.Transa ...@@ -82,3 +82,8 @@ func (c *Issuance) ExecDelLocal_Feed(payload *pty.IssuanceFeed, tx *types.Transa
func (c *Issuance) ExecDelLocal_Close(payload *pty.IssuanceClose, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (c *Issuance) ExecDelLocal_Close(payload *pty.IssuanceClose, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return c.execDelLocal(tx, receiptData) return c.execDelLocal(tx, receiptData)
} }
// ExecDelLocal_Manage Action
func (c *Issuance) ExecDelLocal_Manage(payload *pty.IssuanceManage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return c.execDelLocal(tx, receiptData)
}
\ No newline at end of file
...@@ -83,3 +83,8 @@ func (c *Issuance) ExecLocal_Feed(payload *pty.IssuanceFeed, tx *types.Transacti ...@@ -83,3 +83,8 @@ func (c *Issuance) ExecLocal_Feed(payload *pty.IssuanceFeed, tx *types.Transacti
func (c *Issuance) ExecLocal_Close(payload *pty.IssuanceClose, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (c *Issuance) ExecLocal_Close(payload *pty.IssuanceClose, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return c.execLocal(tx, receiptData) return c.execLocal(tx, receiptData)
} }
// ExecLocal_Manage Action
func (c *Issuance) ExecLocal_Manage(payload *pty.IssuanceManage, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return c.execLocal(tx, receiptData)
}
...@@ -144,7 +144,7 @@ func (c *Issuance) deleteIssuanceRecordStatus(status int32, index int64) (kvs [] ...@@ -144,7 +144,7 @@ func (c *Issuance) deleteIssuanceRecordStatus(status int32, index int64) (kvs []
return kvs return kvs
} }
func (c *Issuance) addIssuancePriceRecord(recordTime int64, price float32) (kvs []*types.KeyValue) { func (c *Issuance) addIssuancePriceRecord(recordTime int64, price float64) (kvs []*types.KeyValue) {
key := calcIssuancePriceKey(string(recordTime)) key := calcIssuancePriceKey(string(recordTime))
record := &pty.IssuanceAssetPriceRecord{ record := &pty.IssuanceAssetPriceRecord{
......
...@@ -13,6 +13,7 @@ import ( ...@@ -13,6 +13,7 @@ import (
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
pty "github.com/33cn/plugin/plugin/dapp/issuance/types" pty "github.com/33cn/plugin/plugin/dapp/issuance/types"
tokenE "github.com/33cn/plugin/plugin/dapp/token/executor" tokenE "github.com/33cn/plugin/plugin/dapp/token/executor"
"math"
) )
// List control // List control
...@@ -25,7 +26,7 @@ const ( ...@@ -25,7 +26,7 @@ const (
const ( const (
Coin = types.Coin // 1e8 Coin = types.Coin // 1e8
DefaultDebtCeiling = 100000 // 默认借贷限额 DefaultDebtCeiling = 100000 * Coin // 默认借贷限额
DefaultLiquidationRatio = 0.25 // 默认质押比 DefaultLiquidationRatio = 0.25 // 默认质押比
DefaultPeriod = 3600 * 24 * 365 // 默认合约限期 DefaultPeriod = 3600 * 24 * 365 // 默认合约限期
PriceWarningRate = 1.3 // 价格提前预警率 PriceWarningRate = 1.3 // 价格提前预警率
...@@ -289,8 +290,8 @@ func (action *Action) GetIndex() int64 { ...@@ -289,8 +290,8 @@ func (action *Action) GetIndex() int64 {
return action.height*types.MaxTxsPerBlock + int64(action.index) return action.height*types.MaxTxsPerBlock + int64(action.index)
} }
func getLatestLiquidationPrice(issu *pty.Issuance) float32 { func getLatestLiquidationPrice(issu *pty.Issuance) float64 {
var latest float32 var latest float64
for _, collRecord := range issu.DebtRecords { for _, collRecord := range issu.DebtRecords {
if collRecord.LiquidationPrice > latest { if collRecord.LiquidationPrice > latest {
latest = collRecord.LiquidationPrice latest = collRecord.LiquidationPrice
...@@ -385,7 +386,7 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt ...@@ -385,7 +386,7 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt
} }
// 检查ccny余额 // 检查ccny余额
if !action.CheckExecTokenAccount(action.fromaddr, create.TotalBalance*Coin, false) { if !action.CheckExecTokenAccount(action.fromaddr, create.TotalBalance, false) {
return nil, types.ErrInsufficientBalance return nil, types.ErrInsufficientBalance
} }
...@@ -398,7 +399,7 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt ...@@ -398,7 +399,7 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt
} }
// 冻结ccny // 冻结ccny
receipt, err = action.tokenAccount.ExecFrozen(action.fromaddr, action.execaddr, create.TotalBalance*Coin) receipt, err = action.tokenAccount.ExecFrozen(action.fromaddr, action.execaddr, create.TotalBalance)
if err != nil { if err != nil {
clog.Error("IssuanceCreate.Frozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", create.TotalBalance) clog.Error("IssuanceCreate.Frozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", create.TotalBalance)
return nil, err return nil, err
...@@ -445,20 +446,19 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt ...@@ -445,20 +446,19 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt
} }
// 根据最近抵押物价格计算需要冻结的BTY数量 // 根据最近抵押物价格计算需要冻结的BTY数量
func getBtyNumToFrozen(value int64, price float32, ratio float32) (int64,error) { func getBtyNumToFrozen(value int64, price float64, ratio float64) (int64,error) {
if price == 0 { if price == 0 {
clog.Error("Bty price should greate to 0") clog.Error("Bty price should greate to 0")
return 0, pty.ErrPriceInvalid return 0, pty.ErrPriceInvalid
} }
btyValue := float32(value)/ratio valueReal := float64(value)/1e8
btyNum := int64(btyValue/price) + 1 btyValue := valueReal/(price * ratio)
return int64(math.Trunc((btyValue+0.0000001)*1e4)) * 1e4, nil
return btyNum, nil
} }
// 获取最近抵押物价格 // 获取最近抵押物价格
func getLatestPrice(db dbm.KV) (float32, error) { func getLatestPrice(db dbm.KV) (float64, error) {
data, err := db.Get(PriceKey()) data, err := db.Get(PriceKey())
if err != nil { if err != nil {
clog.Error("getLatestPrice", "get", err) clog.Error("getLatestPrice", "get", err)
...@@ -558,13 +558,13 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro ...@@ -558,13 +558,13 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro
} }
// 检查抵押物账户余额 // 检查抵押物账户余额
if !action.CheckExecAccountBalance(action.fromaddr, btyFrozen*Coin, 0) { if !action.CheckExecAccountBalance(action.fromaddr, btyFrozen, 0) {
clog.Error("IssuanceDebt.CheckExecAccountBalance", "CollID", issu.IssuanceId, "addr", action.fromaddr, "execaddr", action.execaddr, "btyFrozen", btyFrozen, "err", types.ErrNoBalance) clog.Error("IssuanceDebt.CheckExecAccountBalance", "CollID", issu.IssuanceId, "addr", action.fromaddr, "execaddr", action.execaddr, "btyFrozen", btyFrozen, "err", types.ErrNoBalance)
return nil, types.ErrNoBalance return nil, types.ErrNoBalance
} }
// 抵押物转账 // 抵押物转账
receipt, err := action.coinsAccount.ExecTransfer(action.fromaddr, issu.IssuerAddr, action.execaddr, btyFrozen*Coin) receipt, err := action.coinsAccount.ExecTransfer(action.fromaddr, issu.IssuerAddr, action.execaddr, btyFrozen)
if err != nil { if err != nil {
clog.Error("IssuanceDebt.ExecTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", btyFrozen) clog.Error("IssuanceDebt.ExecTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", btyFrozen)
return nil, err return nil, err
...@@ -573,7 +573,7 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro ...@@ -573,7 +573,7 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 抵押物冻结 // 抵押物冻结
receipt, err = action.coinsAccount.ExecFrozen(issu.IssuerAddr, action.execaddr, btyFrozen*Coin) receipt, err = action.coinsAccount.ExecFrozen(issu.IssuerAddr, action.execaddr, btyFrozen)
if err != nil { if err != nil {
clog.Error("IssuanceDebt.Frozen", "addr", issu.IssuerAddr, "execaddr", action.execaddr, "amount", btyFrozen) clog.Error("IssuanceDebt.Frozen", "addr", issu.IssuerAddr, "execaddr", action.execaddr, "amount", btyFrozen)
return nil, err return nil, err
...@@ -582,7 +582,7 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro ...@@ -582,7 +582,7 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 借出ccny // 借出ccny
receipt, err = action.tokenAccount.ExecTransferFrozen(issu.IssuerAddr, action.fromaddr, action.execaddr, debt.Value*Coin) receipt, err = action.tokenAccount.ExecTransferFrozen(issu.IssuerAddr, action.fromaddr, action.execaddr, debt.Value)
if err != nil { if err != nil {
clog.Error("IssuanceDebt.ExecTokenTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debt.Value) clog.Error("IssuanceDebt.ExecTokenTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debt.Value)
return nil, err return nil, err
...@@ -663,13 +663,13 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e ...@@ -663,13 +663,13 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e
} }
// 检查 // 检查
if !action.CheckExecTokenAccount(action.fromaddr, debtRecord.DebtValue*Coin, false) { if !action.CheckExecTokenAccount(action.fromaddr, debtRecord.DebtValue, false) {
clog.Error("IssuanceRepay", "CollID", issu.IssuanceId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", types.ErrInsufficientBalance) clog.Error("IssuanceRepay", "CollID", issu.IssuanceId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", types.ErrInsufficientBalance)
return nil, types.ErrNoBalance return nil, types.ErrNoBalance
} }
// ccny转移 // ccny转移
receipt, err = action.tokenAccount.ExecTransfer(action.fromaddr, issu.IssuerAddr, action.execaddr, debtRecord.DebtValue*Coin) receipt, err = action.tokenAccount.ExecTransfer(action.fromaddr, issu.IssuerAddr, action.execaddr, debtRecord.DebtValue)
if err != nil { if err != nil {
clog.Error("IssuanceRepay.ExecTokenTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debtRecord.DebtValue) clog.Error("IssuanceRepay.ExecTokenTransfer", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debtRecord.DebtValue)
return nil, err return nil, err
...@@ -678,7 +678,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e ...@@ -678,7 +678,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 冻结ccny // 冻结ccny
receipt, err = action.tokenAccount.ExecFrozen(issu.IssuerAddr, action.execaddr, debtRecord.DebtValue*Coin) receipt, err = action.tokenAccount.ExecFrozen(issu.IssuerAddr, action.execaddr, debtRecord.DebtValue)
if err != nil { if err != nil {
clog.Error("IssuanceCreate.Frozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debtRecord.DebtValue) clog.Error("IssuanceCreate.Frozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debtRecord.DebtValue)
return nil, err return nil, err
...@@ -687,7 +687,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e ...@@ -687,7 +687,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 抵押物归还 // 抵押物归还
receipt, err = action.coinsAccount.ExecTransferFrozen(issu.IssuerAddr, action.fromaddr, action.execaddr, debtRecord.CollateralValue*Coin) receipt, err = action.coinsAccount.ExecTransferFrozen(issu.IssuerAddr, action.fromaddr, action.execaddr, debtRecord.CollateralValue)
if err != nil { if err != nil {
clog.Error("IssuanceRepay.ExecTransferFrozen", "addr", issu.IssuerAddr, "execaddr", action.execaddr, "amount", debtRecord.CollateralValue) clog.Error("IssuanceRepay.ExecTransferFrozen", "addr", issu.IssuerAddr, "execaddr", action.execaddr, "amount", debtRecord.CollateralValue)
return nil, err return nil, err
...@@ -720,7 +720,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e ...@@ -720,7 +720,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e
} }
// 系统清算 // 系统清算
func (action *Action) systemLiquidation(issu *pty.Issuance, price float32) (*types.Receipt, error) { func (action *Action) systemLiquidation(issu *pty.Issuance, price float64) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kv []*types.KeyValue var kv []*types.KeyValue
...@@ -743,7 +743,7 @@ func (action *Action) systemLiquidation(issu *pty.Issuance, price float32) (*typ ...@@ -743,7 +743,7 @@ func (action *Action) systemLiquidation(issu *pty.Issuance, price float32) (*typ
} }
// 抵押物转移 // 抵押物转移
receipt, err := action.coinsAccount.ExecTransferFrozen(issu.IssuerAddr, getGuarantorAddr, action.execaddr, debtRecord.CollateralValue*Coin) receipt, err := action.coinsAccount.ExecTransferFrozen(issu.IssuerAddr, getGuarantorAddr, action.execaddr, debtRecord.CollateralValue)
if err != nil { if err != nil {
clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debtRecord.CollateralValue, "err", err) clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debtRecord.CollateralValue, "err", err)
continue continue
...@@ -801,7 +801,7 @@ func (action *Action) expireLiquidation(issu *pty.Issuance) (*types.Receipt, err ...@@ -801,7 +801,7 @@ func (action *Action) expireLiquidation(issu *pty.Issuance) (*types.Receipt, err
} }
// 抵押物转移 // 抵押物转移
receipt, err := action.coinsAccount.ExecTransferFrozen(issu.IssuerAddr, getGuarantorAddr, action.execaddr, debtRecord.CollateralValue*Coin) receipt, err := action.coinsAccount.ExecTransferFrozen(issu.IssuerAddr, getGuarantorAddr, action.execaddr, debtRecord.CollateralValue)
if err != nil { if err != nil {
clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debtRecord.CollateralValue, "err", err) clog.Error("systemLiquidation", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", debtRecord.CollateralValue, "err", err)
continue continue
...@@ -840,8 +840,8 @@ func (action *Action) expireLiquidation(issu *pty.Issuance) (*types.Receipt, err ...@@ -840,8 +840,8 @@ func (action *Action) expireLiquidation(issu *pty.Issuance) (*types.Receipt, err
} }
// 价格计算策略 // 价格计算策略
func pricePolicy(feed *pty.IssuanceFeed) float32 { func pricePolicy(feed *pty.IssuanceFeed) float64 {
var totalPrice float32 var totalPrice float64
var totalVolume int64 var totalVolume int64
for _, volume := range feed.Volume { for _, volume := range feed.Volume {
totalVolume += volume totalVolume += volume
...@@ -852,7 +852,7 @@ func pricePolicy(feed *pty.IssuanceFeed) float32 { ...@@ -852,7 +852,7 @@ func pricePolicy(feed *pty.IssuanceFeed) float32 {
return 0 return 0
} }
for i, price := range feed.Price { for i, price := range feed.Price {
totalPrice += price * float32(float64(feed.Volume[i])/float64(totalVolume)) totalPrice += price * (float64(feed.Volume[i])/float64(totalVolume))
} }
return totalPrice return totalPrice
...@@ -955,9 +955,9 @@ func (action *Action) IssuanceClose(close *pty.IssuanceClose) (*types.Receipt, e ...@@ -955,9 +955,9 @@ func (action *Action) IssuanceClose(close *pty.IssuanceClose) (*types.Receipt, e
} }
// 解冻ccny // 解冻ccny
receipt, err = action.tokenAccount.ExecActive(action.fromaddr, action.execaddr, issuance.Balance*Coin) receipt, err = action.tokenAccount.ExecActive(action.fromaddr, action.execaddr, issuance.Balance)
if err != nil { if err != nil {
clog.Error("IssuanceClose.ExecActive", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", issuance.TotalBalance) clog.Error("IssuanceClose.ExecActive", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", issuance.Balance, "err", err)
return nil, err return nil, err
} }
logs = append(logs, receipt.Logs...) logs = append(logs, receipt.Logs...)
......
...@@ -7,13 +7,13 @@ message Issuance { ...@@ -7,13 +7,13 @@ message Issuance {
string issuanceId = 1; //发行ID,一期发行对应一个ID string issuanceId = 1; //发行ID,一期发行对应一个ID
int64 totalBalance = 2; //当期发行的总金额(ccny) int64 totalBalance = 2; //当期发行的总金额(ccny)
int64 debtCeiling = 3; //单用户可借出的限额(ccny) int64 debtCeiling = 3; //单用户可借出的限额(ccny)
float liquidationRatio = 4; //清算比例 double liquidationRatio = 4; //清算比例
int64 collateralValue = 5; //抵押物总数量(bty) int64 collateralValue = 5; //抵押物总数量(bty)
int64 debtValue = 6; //产生的ccny数量 int64 debtValue = 6; //产生的ccny数量
repeated DebtRecord debtRecords = 7; //大户抵押记录 repeated DebtRecord debtRecords = 7; //大户抵押记录
repeated DebtRecord invalidRecords = 8; //大户抵押记录 repeated DebtRecord invalidRecords = 8; //大户抵押记录
int32 status = 9; //当期发行的状态,是否关闭 int32 status = 9; //当期发行的状态,是否关闭
float latestLiquidationPrice = 10;//最高清算价格 double latestLiquidationPrice = 10;//最高清算价格
int64 period = 11;//发行最大期限 int64 period = 11;//发行最大期限
int64 latestExpireTime = 12;//最近超期时间 int64 latestExpireTime = 12;//最近超期时间
int64 createTime = 13;//创建时间 int64 createTime = 13;//创建时间
...@@ -28,9 +28,9 @@ message DebtRecord { ...@@ -28,9 +28,9 @@ message DebtRecord {
string accountAddr = 1; //抵押人地址 string accountAddr = 1; //抵押人地址
int64 startTime = 2; //抵押时间 int64 startTime = 2; //抵押时间
int64 collateralValue = 3; //抵押物价值(bty) int64 collateralValue = 3; //抵押物价值(bty)
float collateralPrice = 4; //抵押物价格 double collateralPrice = 4; //抵押物价格
int64 debtValue = 5; //债务价值(ccny) int64 debtValue = 5; //债务价值(ccny)
float liquidationPrice = 6; //抵押物清算价格 double liquidationPrice = 6; //抵押物清算价格
int32 status = 7; //抵押状态,是否被清算 int32 status = 7; //抵押状态,是否被清算
int64 liquidateTime = 8; //清算时间 int64 liquidateTime = 8; //清算时间
int64 expireTime = 9; //超时清算时间 int64 expireTime = 9; //超时清算时间
...@@ -44,7 +44,7 @@ message DebtRecord { ...@@ -44,7 +44,7 @@ message DebtRecord {
// 资产价格记录 // 资产价格记录
message IssuanceAssetPriceRecord { message IssuanceAssetPriceRecord {
int64 recordTime = 1; //价格记录时间 int64 recordTime = 1; //价格记录时间
float btyPrice = 2; //bty价格 double btyPrice = 2; //bty价格
} }
// action // action
...@@ -68,7 +68,7 @@ message IssuanceManage { ...@@ -68,7 +68,7 @@ message IssuanceManage {
message IssuanceCreate { message IssuanceCreate {
int64 totalBalance = 1; //发行总金额 int64 totalBalance = 1; //发行总金额
int64 debtCeiling = 2; //单用户可借出的限额(ccny) int64 debtCeiling = 2; //单用户可借出的限额(ccny)
float liquidationRatio = 3; //清算比例 double liquidationRatio = 3; //清算比例
int64 period = 4; //发行最大期限 int64 period = 4; //发行最大期限
} }
...@@ -87,7 +87,7 @@ message IssuanceRepay { ...@@ -87,7 +87,7 @@ message IssuanceRepay {
// 喂价 // 喂价
message IssuanceFeed { message IssuanceFeed {
int32 collType = 1; //抵押物价格类型(1,bty,2,btc,3,eth...) int32 collType = 1; //抵押物价格类型(1,bty,2,btc,3,eth...)
repeated float price = 2; //喂价 repeated double price = 2; //喂价
repeated int64 volume = 3; //成交量 repeated int64 volume = 3; //成交量
} }
...@@ -106,7 +106,7 @@ message ReceiptIssuance { ...@@ -106,7 +106,7 @@ message ReceiptIssuance {
int64 index = 6; int64 index = 6;
int64 preIndex = 7; int64 preIndex = 7;
int64 recordTime = 8; //价格记录时间 int64 recordTime = 8; //价格记录时间
float btyPrice = 9; //bty价格 double btyPrice = 9; //bty价格
} }
// exec_local 抵押记录信息 // exec_local 抵押记录信息
...@@ -132,7 +132,7 @@ message RepIssuanceCurrentInfo { ...@@ -132,7 +132,7 @@ message RepIssuanceCurrentInfo {
int32 status = 1; //当期发行的状态,是否关闭 int32 status = 1; //当期发行的状态,是否关闭
int64 totalBalance = 2; //当期发行总金额(ccny) int64 totalBalance = 2; //当期发行总金额(ccny)
int64 debtCeiling = 3; //单用户可借出的限额(ccny) int64 debtCeiling = 3; //单用户可借出的限额(ccny)
float liquidationRatio = 4; //清算比例 double liquidationRatio = 4; //清算比例
int64 balance = 5; //剩余可借贷金额(ccny) int64 balance = 5; //剩余可借贷金额(ccny)
int64 collateralValue = 6; //抵押物总数量(bty) int64 collateralValue = 6; //抵押物总数量(bty)
int64 debtValue = 7; //产生的ccny数量 int64 debtValue = 7; //产生的ccny数量
...@@ -195,5 +195,5 @@ message RepIssuanceDebtInfo { ...@@ -195,5 +195,5 @@ message RepIssuanceDebtInfo {
// 返回最新抵押物价格 // 返回最新抵押物价格
message RepIssuancePrice { message RepIssuancePrice {
float price = 1; //当前抵押物最新价格 double price = 1; //当前抵押物最新价格
} }
\ No newline at end of file
...@@ -6,6 +6,7 @@ package types ...@@ -6,6 +6,7 @@ package types
import ( import (
"encoding/json" "encoding/json"
"math"
"reflect" "reflect"
"github.com/33cn/chain33/common/address" "github.com/33cn/chain33/common/address"
...@@ -143,8 +144,8 @@ func CreateRawIssuanceCreateTx(cfg *types.Chain33Config, parm *IssuanceCreateTx) ...@@ -143,8 +144,8 @@ func CreateRawIssuanceCreateTx(cfg *types.Chain33Config, parm *IssuanceCreateTx)
} }
v := &IssuanceCreate{ v := &IssuanceCreate{
TotalBalance: parm.TotalBalance, TotalBalance: int64(math.Trunc((parm.TotalBalance+0.0000001)*1e4)) * 1e4,
DebtCeiling: parm.DebtCeiling, DebtCeiling: int64(math.Trunc((parm.DebtCeiling+0.0000001)*1e4)) * 1e4,
LiquidationRatio: parm.LiquidationRatio, LiquidationRatio: parm.LiquidationRatio,
Period: parm.Period, Period: parm.Period,
} }
...@@ -175,7 +176,7 @@ func CreateRawIssuanceDebtTx(cfg *types.Chain33Config, parm *IssuanceDebtTx) (*t ...@@ -175,7 +176,7 @@ func CreateRawIssuanceDebtTx(cfg *types.Chain33Config, parm *IssuanceDebtTx) (*t
v := &IssuanceDebt{ v := &IssuanceDebt{
IssuanceId: parm.IssuanceID, IssuanceId: parm.IssuanceID,
Value: parm.Value, Value: int64(math.Trunc((parm.Value+0.0000001)*1e4)) * 1e4,
} }
debt := &IssuanceAction{ debt := &IssuanceAction{
Ty: IssuanceActionDebt, Ty: IssuanceActionDebt,
......
...@@ -25,13 +25,13 @@ type Issuance struct { ...@@ -25,13 +25,13 @@ type Issuance struct {
IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"` IssuanceId string `protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,omitempty"`
TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
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 float64 `protobuf:"fixed64,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
CollateralValue int64 `protobuf:"varint,5,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"` CollateralValue int64 `protobuf:"varint,5,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"`
DebtValue int64 `protobuf:"varint,6,opt,name=debtValue,proto3" json:"debtValue,omitempty"` DebtValue int64 `protobuf:"varint,6,opt,name=debtValue,proto3" json:"debtValue,omitempty"`
DebtRecords []*DebtRecord `protobuf:"bytes,7,rep,name=debtRecords,proto3" json:"debtRecords,omitempty"` DebtRecords []*DebtRecord `protobuf:"bytes,7,rep,name=debtRecords,proto3" json:"debtRecords,omitempty"`
InvalidRecords []*DebtRecord `protobuf:"bytes,8,rep,name=invalidRecords,proto3" json:"invalidRecords,omitempty"` InvalidRecords []*DebtRecord `protobuf:"bytes,8,rep,name=invalidRecords,proto3" json:"invalidRecords,omitempty"`
Status int32 `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"`
LatestLiquidationPrice float32 `protobuf:"fixed32,10,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"` LatestLiquidationPrice float64 `protobuf:"fixed64,10,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"`
Period int64 `protobuf:"varint,11,opt,name=period,proto3" json:"period,omitempty"` Period int64 `protobuf:"varint,11,opt,name=period,proto3" json:"period,omitempty"`
LatestExpireTime int64 `protobuf:"varint,12,opt,name=latestExpireTime,proto3" json:"latestExpireTime,omitempty"` LatestExpireTime int64 `protobuf:"varint,12,opt,name=latestExpireTime,proto3" json:"latestExpireTime,omitempty"`
CreateTime int64 `protobuf:"varint,13,opt,name=createTime,proto3" json:"createTime,omitempty"` CreateTime int64 `protobuf:"varint,13,opt,name=createTime,proto3" json:"createTime,omitempty"`
...@@ -90,7 +90,7 @@ func (m *Issuance) GetDebtCeiling() int64 { ...@@ -90,7 +90,7 @@ func (m *Issuance) GetDebtCeiling() int64 {
return 0 return 0
} }
func (m *Issuance) GetLiquidationRatio() float32 { func (m *Issuance) GetLiquidationRatio() float64 {
if m != nil { if m != nil {
return m.LiquidationRatio return m.LiquidationRatio
} }
...@@ -132,7 +132,7 @@ func (m *Issuance) GetStatus() int32 { ...@@ -132,7 +132,7 @@ func (m *Issuance) GetStatus() int32 {
return 0 return 0
} }
func (m *Issuance) GetLatestLiquidationPrice() float32 { func (m *Issuance) GetLatestLiquidationPrice() float64 {
if m != nil { if m != nil {
return m.LatestLiquidationPrice return m.LatestLiquidationPrice
} }
...@@ -193,9 +193,9 @@ type DebtRecord struct { ...@@ -193,9 +193,9 @@ type DebtRecord 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"`
StartTime int64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime,omitempty"` StartTime int64 `protobuf:"varint,2,opt,name=startTime,proto3" json:"startTime,omitempty"`
CollateralValue int64 `protobuf:"varint,3,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"` CollateralValue int64 `protobuf:"varint,3,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"`
CollateralPrice float32 `protobuf:"fixed32,4,opt,name=collateralPrice,proto3" json:"collateralPrice,omitempty"` CollateralPrice float64 `protobuf:"fixed64,4,opt,name=collateralPrice,proto3" json:"collateralPrice,omitempty"`
DebtValue int64 `protobuf:"varint,5,opt,name=debtValue,proto3" json:"debtValue,omitempty"` DebtValue int64 `protobuf:"varint,5,opt,name=debtValue,proto3" json:"debtValue,omitempty"`
LiquidationPrice float32 `protobuf:"fixed32,6,opt,name=liquidationPrice,proto3" json:"liquidationPrice,omitempty"` LiquidationPrice float64 `protobuf:"fixed64,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"` ExpireTime int64 `protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"`
...@@ -255,7 +255,7 @@ func (m *DebtRecord) GetCollateralValue() int64 { ...@@ -255,7 +255,7 @@ func (m *DebtRecord) GetCollateralValue() int64 {
return 0 return 0
} }
func (m *DebtRecord) GetCollateralPrice() float32 { func (m *DebtRecord) GetCollateralPrice() float64 {
if m != nil { if m != nil {
return m.CollateralPrice return m.CollateralPrice
} }
...@@ -269,7 +269,7 @@ func (m *DebtRecord) GetDebtValue() int64 { ...@@ -269,7 +269,7 @@ func (m *DebtRecord) GetDebtValue() int64 {
return 0 return 0
} }
func (m *DebtRecord) GetLiquidationPrice() float32 { func (m *DebtRecord) GetLiquidationPrice() float64 {
if m != nil { if m != nil {
return m.LiquidationPrice return m.LiquidationPrice
} }
...@@ -335,7 +335,7 @@ func (m *DebtRecord) GetPreIndex() int64 { ...@@ -335,7 +335,7 @@ func (m *DebtRecord) GetPreIndex() int64 {
// 资产价格记录 // 资产价格记录
type IssuanceAssetPriceRecord struct { type IssuanceAssetPriceRecord 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"`
BtyPrice float32 `protobuf:"fixed32,2,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"` BtyPrice float64 `protobuf:"fixed64,2,opt,name=btyPrice,proto3" json:"btyPrice,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:"-"`
...@@ -373,7 +373,7 @@ func (m *IssuanceAssetPriceRecord) GetRecordTime() int64 { ...@@ -373,7 +373,7 @@ func (m *IssuanceAssetPriceRecord) GetRecordTime() int64 {
return 0 return 0
} }
func (m *IssuanceAssetPriceRecord) GetBtyPrice() float32 { func (m *IssuanceAssetPriceRecord) GetBtyPrice() float64 {
if m != nil { if m != nil {
return m.BtyPrice return m.BtyPrice
} }
...@@ -572,7 +572,7 @@ func (m *IssuanceManage) GetSuperAddrs() []string { ...@@ -572,7 +572,7 @@ func (m *IssuanceManage) GetSuperAddrs() []string {
type IssuanceCreate struct { type IssuanceCreate struct {
TotalBalance int64 `protobuf:"varint,1,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,1,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
DebtCeiling int64 `protobuf:"varint,2,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"` DebtCeiling int64 `protobuf:"varint,2,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"`
LiquidationRatio float32 `protobuf:"fixed32,3,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"` LiquidationRatio float64 `protobuf:"fixed64,3,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
Period int64 `protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"` Period int64 `protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
...@@ -618,7 +618,7 @@ func (m *IssuanceCreate) GetDebtCeiling() int64 { ...@@ -618,7 +618,7 @@ func (m *IssuanceCreate) GetDebtCeiling() int64 {
return 0 return 0
} }
func (m *IssuanceCreate) GetLiquidationRatio() float32 { func (m *IssuanceCreate) GetLiquidationRatio() float64 {
if m != nil { if m != nil {
return m.LiquidationRatio return m.LiquidationRatio
} }
...@@ -731,7 +731,7 @@ func (m *IssuanceRepay) GetDebtId() string { ...@@ -731,7 +731,7 @@ func (m *IssuanceRepay) GetDebtId() string {
// 喂价 // 喂价
type IssuanceFeed struct { type IssuanceFeed struct {
CollType int32 `protobuf:"varint,1,opt,name=collType,proto3" json:"collType,omitempty"` CollType int32 `protobuf:"varint,1,opt,name=collType,proto3" json:"collType,omitempty"`
Price []float32 `protobuf:"fixed32,2,rep,packed,name=price,proto3" json:"price,omitempty"` Price []float64 `protobuf:"fixed64,2,rep,packed,name=price,proto3" json:"price,omitempty"`
Volume []int64 `protobuf:"varint,3,rep,packed,name=volume,proto3" json:"volume,omitempty"` Volume []int64 `protobuf:"varint,3,rep,packed,name=volume,proto3" json:"volume,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
...@@ -770,7 +770,7 @@ func (m *IssuanceFeed) GetCollType() int32 { ...@@ -770,7 +770,7 @@ func (m *IssuanceFeed) GetCollType() int32 {
return 0 return 0
} }
func (m *IssuanceFeed) GetPrice() []float32 { func (m *IssuanceFeed) GetPrice() []float64 {
if m != nil { if m != nil {
return m.Price return m.Price
} }
...@@ -834,7 +834,7 @@ type ReceiptIssuance struct { ...@@ -834,7 +834,7 @@ type ReceiptIssuance struct {
Index int64 `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"` Index int64 `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"`
PreIndex int64 `protobuf:"varint,7,opt,name=preIndex,proto3" json:"preIndex,omitempty"` PreIndex int64 `protobuf:"varint,7,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
RecordTime int64 `protobuf:"varint,8,opt,name=recordTime,proto3" json:"recordTime,omitempty"` RecordTime int64 `protobuf:"varint,8,opt,name=recordTime,proto3" json:"recordTime,omitempty"`
BtyPrice float32 `protobuf:"fixed32,9,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"` BtyPrice float64 `protobuf:"fixed64,9,opt,name=btyPrice,proto3" json:"btyPrice,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:"-"`
...@@ -921,7 +921,7 @@ func (m *ReceiptIssuance) GetRecordTime() int64 { ...@@ -921,7 +921,7 @@ func (m *ReceiptIssuance) GetRecordTime() int64 {
return 0 return 0
} }
func (m *ReceiptIssuance) GetBtyPrice() float32 { func (m *ReceiptIssuance) GetBtyPrice() float64 {
if m != nil { if m != nil {
return m.BtyPrice return m.BtyPrice
} }
...@@ -1077,7 +1077,7 @@ type RepIssuanceCurrentInfo struct { ...@@ -1077,7 +1077,7 @@ type RepIssuanceCurrentInfo struct {
Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"` TotalBalance int64 `protobuf:"varint,2,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
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 float64 `protobuf:"fixed64,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
Balance int64 `protobuf:"varint,5,opt,name=balance,proto3" json:"balance,omitempty"` Balance int64 `protobuf:"varint,5,opt,name=balance,proto3" json:"balance,omitempty"`
CollateralValue int64 `protobuf:"varint,6,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"` CollateralValue int64 `protobuf:"varint,6,opt,name=collateralValue,proto3" json:"collateralValue,omitempty"`
DebtValue int64 `protobuf:"varint,7,opt,name=debtValue,proto3" json:"debtValue,omitempty"` DebtValue int64 `protobuf:"varint,7,opt,name=debtValue,proto3" json:"debtValue,omitempty"`
...@@ -1135,7 +1135,7 @@ func (m *RepIssuanceCurrentInfo) GetDebtCeiling() int64 { ...@@ -1135,7 +1135,7 @@ func (m *RepIssuanceCurrentInfo) GetDebtCeiling() int64 {
return 0 return 0
} }
func (m *RepIssuanceCurrentInfo) GetLiquidationRatio() float32 { func (m *RepIssuanceCurrentInfo) GetLiquidationRatio() float64 {
if m != nil { if m != nil {
return m.LiquidationRatio return m.LiquidationRatio
} }
...@@ -1602,7 +1602,7 @@ func (m *RepIssuanceDebtInfo) GetRecord() *DebtRecord { ...@@ -1602,7 +1602,7 @@ func (m *RepIssuanceDebtInfo) GetRecord() *DebtRecord {
// 返回最新抵押物价格 // 返回最新抵押物价格
type RepIssuancePrice struct { type RepIssuancePrice struct {
Price float32 `protobuf:"fixed32,1,opt,name=price,proto3" json:"price,omitempty"` Price float64 `protobuf:"fixed64,1,opt,name=price,proto3" json:"price,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:"-"`
...@@ -1633,7 +1633,7 @@ func (m *RepIssuancePrice) XXX_DiscardUnknown() { ...@@ -1633,7 +1633,7 @@ func (m *RepIssuancePrice) XXX_DiscardUnknown() {
var xxx_messageInfo_RepIssuancePrice proto.InternalMessageInfo var xxx_messageInfo_RepIssuancePrice proto.InternalMessageInfo
func (m *RepIssuancePrice) GetPrice() float32 { func (m *RepIssuancePrice) GetPrice() float64 {
if m != nil { if m != nil {
return m.Price return m.Price
} }
...@@ -1683,7 +1683,7 @@ var fileDescriptor_7110f4228953d675 = []byte{ ...@@ -1683,7 +1683,7 @@ var fileDescriptor_7110f4228953d675 = []byte{
0x2c, 0xcc, 0x85, 0x7d, 0x91, 0x08, 0x3f, 0x9e, 0xfb, 0x31, 0x5a, 0x1c, 0x73, 0x6a, 0xcc, 0x2c, 0x2c, 0xcc, 0x85, 0x7d, 0x91, 0x08, 0x3f, 0x9e, 0xfb, 0x31, 0x5a, 0x1c, 0x73, 0x6a, 0xcc, 0x2c,
0xaf, 0x66, 0x63, 0x53, 0x18, 0x87, 0xfc, 0x56, 0x5c, 0xf1, 0x28, 0x8e, 0x96, 0x6f, 0x1d, 0x8b, 0xaf, 0x66, 0x63, 0x53, 0x18, 0x87, 0xfc, 0x56, 0x5c, 0xf1, 0x28, 0x8e, 0x96, 0x6f, 0x1d, 0x8b,
0x5c, 0xaa, 0x26, 0xf6, 0x09, 0x1c, 0xc5, 0xd1, 0xbb, 0x55, 0x14, 0xfa, 0x22, 0x4a, 0x96, 0x1e, 0x5c, 0xaa, 0x26, 0xf6, 0x09, 0x1c, 0xc5, 0xd1, 0xbb, 0x55, 0x14, 0xfa, 0x22, 0x4a, 0x96, 0x1e,
0xfe, 0x75, 0x7a, 0x53, 0x63, 0x66, 0x7a, 0x2d, 0x3b, 0x9b, 0xc1, 0x61, 0x90, 0xc4, 0xb1, 0x2f, 0xfe, 0x75, 0x7a, 0x53, 0x63, 0x66, 0x78, 0x2d, 0x3b, 0x9b, 0xc1, 0x61, 0x90, 0xc4, 0xb1, 0x2f,
0x78, 0xe6, 0xc7, 0x6f, 0xfc, 0x78, 0xc5, 0x1d, 0x9b, 0x22, 0x36, 0xcd, 0xec, 0x43, 0x18, 0x61, 0x78, 0xe6, 0xc7, 0x6f, 0xfc, 0x78, 0xc5, 0x1d, 0x9b, 0x22, 0x36, 0xcd, 0xec, 0x43, 0x18, 0x61,
0x12, 0xe9, 0xd3, 0x27, 0x1f, 0x6d, 0x60, 0x17, 0xb2, 0x2a, 0x8f, 0x07, 0x49, 0x16, 0xe6, 0xce, 0x12, 0xe9, 0xd3, 0x27, 0x1f, 0x6d, 0x60, 0x17, 0xb2, 0x2a, 0x8f, 0x07, 0x49, 0x16, 0xe6, 0xce,
0x60, 0x6a, 0xcd, 0xc6, 0xe7, 0x4f, 0x4e, 0xa9, 0x07, 0xa7, 0xd7, 0xe5, 0x8e, 0x57, 0xf5, 0x62, 0x60, 0x6a, 0xcd, 0xc6, 0xe7, 0x4f, 0x4e, 0xa9, 0x07, 0xa7, 0xd7, 0xe5, 0x8e, 0x57, 0xf5, 0x62,
...@@ -1718,7 +1718,7 @@ var fileDescriptor_7110f4228953d675 = []byte{ ...@@ -1718,7 +1718,7 @@ var fileDescriptor_7110f4228953d675 = []byte{
0xad, 0x0d, 0x8a, 0xaf, 0x95, 0xae, 0x57, 0x55, 0x3a, 0xf7, 0x1a, 0xf6, 0xab, 0xb8, 0x6d, 0x7d, 0xad, 0x0d, 0x8a, 0xaf, 0x95, 0xae, 0x57, 0x55, 0x3a, 0xf7, 0x1a, 0xf6, 0xab, 0xb8, 0x6d, 0x7d,
0xab, 0x8e, 0x55, 0x1f, 0x54, 0x3d, 0xaa, 0x29, 0xdf, 0xc3, 0x41, 0x0d, 0xd1, 0xad, 0x61, 0xf4, 0xab, 0x8e, 0x55, 0x1f, 0x54, 0x3d, 0xaa, 0x29, 0xdf, 0xc3, 0x41, 0x0d, 0xd1, 0xad, 0x61, 0xf4,
0xfd, 0x31, 0xab, 0xf7, 0xc7, 0xfd, 0x45, 0x97, 0x83, 0x68, 0x23, 0x93, 0x51, 0x40, 0x5e, 0xaf, 0xfd, 0x31, 0xab, 0xf7, 0xc7, 0xfd, 0x45, 0x97, 0x83, 0x68, 0x23, 0x93, 0x51, 0x40, 0x5e, 0xaf,
0x53, 0xd9, 0x24, 0xdb, 0x2b, 0xd7, 0x58, 0x4a, 0xaa, 0x28, 0x6e, 0xcd, 0x4c, 0x4f, 0x2e, 0x30, 0x53, 0xd9, 0x24, 0xdb, 0x2b, 0xd7, 0x58, 0x4a, 0xaa, 0x28, 0x6e, 0xcd, 0x0c, 0x4f, 0x2e, 0x30,
0xf2, 0x43, 0x12, 0xaf, 0xee, 0x51, 0xaa, 0x2c, 0x3c, 0xa8, 0x5c, 0xb9, 0x67, 0xba, 0x44, 0xe2, 0xf2, 0x43, 0x12, 0xaf, 0xee, 0x51, 0xaa, 0x2c, 0x3c, 0xa8, 0x5c, 0xb9, 0x67, 0xba, 0x44, 0xe2,
0xc6, 0xb6, 0x12, 0xdd, 0xdf, 0x4d, 0x38, 0xf4, 0x78, 0xc0, 0xa3, 0x54, 0xec, 0xfc, 0x92, 0x37, 0xc6, 0xb6, 0x12, 0xdd, 0xdf, 0x4d, 0x38, 0xf4, 0x78, 0xc0, 0xa3, 0x54, 0xec, 0xfc, 0x92, 0x37,
0x04, 0xd7, 0x6c, 0x0b, 0xae, 0x3e, 0xb8, 0xd5, 0x14, 0x0e, 0x25, 0x66, 0xbd, 0x9a, 0x98, 0xd5, 0x04, 0xd7, 0x6c, 0x0b, 0xae, 0x3e, 0xb8, 0xd5, 0x14, 0x0e, 0x25, 0x66, 0xbd, 0x9a, 0x98, 0xd5,
...@@ -1741,5 +1741,5 @@ var fileDescriptor_7110f4228953d675 = []byte{ ...@@ -1741,5 +1741,5 @@ var fileDescriptor_7110f4228953d675 = []byte{
0xde, 0xd2, 0x57, 0x35, 0x54, 0xd0, 0x63, 0x97, 0x9b, 0xba, 0xf1, 0x25, 0xf9, 0x06, 0xc3, 0xa5, 0xde, 0xd2, 0x57, 0x35, 0x54, 0xd0, 0x63, 0x97, 0x9b, 0xba, 0xf1, 0x25, 0xf9, 0x06, 0xc3, 0xa5,
0xad, 0x70, 0x2f, 0xa1, 0x2f, 0x13, 0xaa, 0x59, 0xa7, 0xa3, 0x22, 0xe5, 0xe0, 0xce, 0x90, 0xac, 0xad, 0x70, 0x2f, 0xa1, 0x2f, 0x13, 0xaa, 0x59, 0xa7, 0xa3, 0x22, 0xe5, 0xe0, 0xce, 0x90, 0xac,
0x65, 0x04, 0x39, 0x73, 0x96, 0x6f, 0x8e, 0x41, 0x77, 0x52, 0x2e, 0x6e, 0xfb, 0xf4, 0xbf, 0xdf, 0x65, 0x04, 0x39, 0x73, 0x96, 0x6f, 0x8e, 0x41, 0x77, 0x52, 0x2e, 0x6e, 0xfb, 0xf4, 0xbf, 0xdf,
0xc5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x86, 0x5d, 0xb7, 0x0d, 0x0e, 0x00, 0x00, 0xc5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x37, 0xc2, 0xe4, 0x0d, 0x0e, 0x00, 0x00,
} }
...@@ -6,17 +6,17 @@ package types ...@@ -6,17 +6,17 @@ package types
// IssuanceCreateTx for construction // IssuanceCreateTx for construction
type IssuanceCreateTx struct { type IssuanceCreateTx struct {
DebtCeiling int64 `json:"debtCeiling"` DebtCeiling float64 `json:"debtCeiling"`
LiquidationRatio float32 `json:"liquidationRatio"` LiquidationRatio float64 `json:"liquidationRatio"`
Period int64 `json:"period"` Period int64 `json:"period"`
TotalBalance int64 `json:"totalBalance"` TotalBalance float64 `json:"totalBalance"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
// IssuanceDebtTx for construction // IssuanceDebtTx for construction
type IssuanceDebtTx struct { type IssuanceDebtTx struct {
IssuanceID string `json:"issuanceId"` IssuanceID string `json:"issuanceId"`
Value int64 `json:"value"` Value float64 `json:"value"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
...@@ -29,7 +29,7 @@ type IssuanceRepayTx struct { ...@@ -29,7 +29,7 @@ type IssuanceRepayTx struct {
// IssuanceFeedTx for construction // IssuanceFeedTx for construction
type IssuanceFeedTx struct { type IssuanceFeedTx struct {
Price []float32 `json:"price"` Price []float64 `json:"price"`
Volume []int64 `json:"volume"` Volume []int64 `json:"volume"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
......
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