Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
2f57d651
Commit
2f57d651
authored
Nov 28, 2019
by
pengjun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#627 update balance value to float64
parent
2e4b635d
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
350 additions
and
343 deletions
+350
-343
cmd.go
plugin/dapp/collateralize/commands/cmd.go
+20
-20
collateralize_test.go
plugin/dapp/collateralize/executor/collateralize_test.go
+7
-10
collateralizedb.go
plugin/dapp/collateralize/executor/collateralizedb.go
+52
-56
query.go
plugin/dapp/collateralize/executor/query.go
+4
-4
collateralize.proto
plugin/dapp/collateralize/proto/collateralize.proto
+35
-34
collateralize.go
plugin/dapp/collateralize/types/collateralize.go
+8
-7
collateralize.pb.go
plugin/dapp/collateralize/types/collateralize.pb.go
+122
-122
errors.go
plugin/dapp/collateralize/types/errors.go
+0
-1
tx.go
plugin/dapp/collateralize/types/tx.go
+9
-9
cmd.go
plugin/dapp/issuance/commands/cmd.go
+9
-9
exec_del_local.go
plugin/dapp/issuance/executor/exec_del_local.go
+6
-0
exec_local.go
plugin/dapp/issuance/executor/exec_local.go
+5
-0
issuance.go
plugin/dapp/issuance/executor/issuance.go
+1
-1
issuancedb.go
plugin/dapp/issuance/executor/issuancedb.go
+27
-27
issuance.proto
plugin/dapp/issuance/proto/issuance.proto
+13
-12
issuance.go
plugin/dapp/issuance/types/issuance.go
+4
-3
issuance.pb.go
plugin/dapp/issuance/types/issuance.pb.go
+23
-23
tx.go
plugin/dapp/issuance/types/tx.go
+5
-5
No files found.
plugin/dapp/collateralize/commands/cmd.go
View file @
2f57d651
...
...
@@ -44,7 +44,7 @@ func CollateralizeCreateRawTxCmd() *cobra.Command {
}
func
addCollateralizeCreateFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
Uin
t64P
(
"balance"
,
"b"
,
0
,
"balance"
)
cmd
.
Flags
()
.
Floa
t64P
(
"balance"
,
"b"
,
0
,
"balance"
)
cmd
.
MarkFlagRequired
(
"balance"
)
}
...
...
@@ -56,12 +56,12 @@ func CollateralizeCreate(cmd *cobra.Command, args []string) {
}
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
balance
,
_
:=
cmd
.
Flags
()
.
Get
Uin
t64
(
"balance"
)
balance
,
_
:=
cmd
.
Flags
()
.
Get
Floa
t64
(
"balance"
)
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
cfg
.
ExecName
(
pkt
.
CollateralizeX
),
ActionName
:
"CollateralizeCreate"
,
Payload
:
[]
byte
(
fmt
.
Sprintf
(
"{
\"
totalBalance
\"
:%
d
}"
,
balance
)),
Payload
:
[]
byte
(
fmt
.
Sprintf
(
"{
\"
totalBalance
\"
:%
f
}"
,
balance
)),
}
var
res
string
...
...
@@ -83,7 +83,7 @@ func CollateralizeBorrowRawTxCmd() *cobra.Command {
func
addCollateralizeBorrowFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"collateralizeID"
,
"g"
,
""
,
"collateralize ID"
)
cmd
.
MarkFlagRequired
(
"collateralizeID"
)
cmd
.
Flags
()
.
Uin
t64P
(
"value"
,
"v"
,
0
,
"value"
)
cmd
.
Flags
()
.
Floa
t64P
(
"value"
,
"v"
,
0
,
"value"
)
cmd
.
MarkFlagRequired
(
"value"
)
}
...
...
@@ -96,12 +96,12 @@ func CollateralizeBorrow(cmd *cobra.Command, args []string) {
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
collateralizeID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"collateralizeID"
)
value
,
_
:=
cmd
.
Flags
()
.
Get
Uin
t64
(
"value"
)
value
,
_
:=
cmd
.
Flags
()
.
Get
Floa
t64
(
"value"
)
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
cfg
.
ExecName
(
pkt
.
CollateralizeX
),
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
...
...
@@ -125,7 +125,7 @@ func addCollateralizeAppendFlags(cmd *cobra.Command) {
cmd
.
MarkFlagRequired
(
"collateralizeID"
)
cmd
.
Flags
()
.
StringP
(
"recordID"
,
"r"
,
""
,
"recordID"
)
cmd
.
MarkFlagRequired
(
"recordID"
)
cmd
.
Flags
()
.
Uin
t64P
(
"value"
,
"v"
,
0
,
"value"
)
cmd
.
Flags
()
.
Floa
t64P
(
"value"
,
"v"
,
0
,
"value"
)
cmd
.
MarkFlagRequired
(
"value"
)
}
...
...
@@ -139,12 +139,12 @@ func CollateralizeAppend(cmd *cobra.Command, args []string) {
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
collateralizeID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"collateralizeID"
)
recordID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"recordID"
)
value
,
_
:=
cmd
.
Flags
()
.
Get
Uin
t64
(
"value"
)
value
,
_
:=
cmd
.
Flags
()
.
Get
Floa
t64
(
"value"
)
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
cfg
.
ExecName
(
pkt
.
CollateralizeX
),
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
...
...
@@ -204,7 +204,7 @@ func CollateralizePriceFeedRawTxCmd() *cobra.Command {
}
func
addCollateralizePriceFeedFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
Float
32
P
(
"price"
,
"p"
,
0
,
"price"
)
cmd
.
Flags
()
.
Float
64
P
(
"price"
,
"p"
,
0
,
"price"
)
cmd
.
MarkFlagRequired
(
"price"
)
cmd
.
Flags
()
.
Uint64P
(
"volume"
,
"v"
,
0
,
"volume"
)
cmd
.
MarkFlagRequired
(
"volume"
)
...
...
@@ -246,7 +246,7 @@ func CollateralizeRetrieveRawTxCmd() *cobra.Command {
func
addCollateralizeRetrieveFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"collateralizeID"
,
"g"
,
""
,
"collateralize ID"
)
cmd
.
MarkFlagRequired
(
"collateralizeID"
)
cmd
.
Flags
()
.
StringP
(
"balance"
,
"b"
,
""
,
"retrieve balance"
)
cmd
.
Flags
()
.
Float64P
(
"balance"
,
"b"
,
0
,
"retrieve balance"
)
cmd
.
MarkFlagRequired
(
"balance"
)
}
...
...
@@ -259,12 +259,12 @@ func CollateralizeRetrieve(cmd *cobra.Command, args []string) {
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
collateralizeID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"collateralizeID"
)
balance
,
_
:=
cmd
.
Flags
()
.
Get
In
t64
(
"balance"
)
balance
,
_
:=
cmd
.
Flags
()
.
Get
Floa
t64
(
"balance"
)
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
cfg
.
ExecName
(
pkt
.
CollateralizeX
),
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
...
...
@@ -284,11 +284,11 @@ func CollateralizeManageRawTxCmd() *cobra.Command {
}
func
addCollateralizeManageFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
Uin
t64P
(
"debtCeiling"
,
"d"
,
0
,
"debtCeiling"
)
cmd
.
Flags
()
.
Float
32
P
(
"liquidationRatio"
,
"l"
,
0
,
"liquidationRatio"
)
cmd
.
Flags
()
.
Float
32
P
(
"stabilityFeeRatio"
,
"s"
,
0
,
"stabilityFeeRatio"
)
cmd
.
Flags
()
.
Floa
t64P
(
"debtCeiling"
,
"d"
,
0
,
"debtCeiling"
)
cmd
.
Flags
()
.
Float
64
P
(
"liquidationRatio"
,
"l"
,
0
,
"liquidationRatio"
)
cmd
.
Flags
()
.
Float
64
P
(
"stabilityFeeRatio"
,
"s"
,
0
,
"stabilityFeeRatio"
)
cmd
.
Flags
()
.
Uint64P
(
"period"
,
"p"
,
0
,
"period"
)
cmd
.
Flags
()
.
Uin
t64P
(
"totalBalance"
,
"t"
,
0
,
"totalBalance"
)
cmd
.
Flags
()
.
Floa
t64P
(
"totalBalance"
,
"t"
,
0
,
"totalBalance"
)
}
func
CollateralizeManage
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
...
...
@@ -299,16 +299,16 @@ func CollateralizeManage(cmd *cobra.Command, args []string) {
}
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
debtCeiling
,
_
:=
cmd
.
Flags
()
.
Get
Uint64
(
"debtCeiling"
)
debtCeiling
,
_
:=
cmd
.
Flags
()
.
Get
Float32
(
"debtCeiling"
)
liquidationRatio
,
_
:=
cmd
.
Flags
()
.
GetFloat32
(
"liquidationRatio"
)
stabilityFeeRatio
,
_
:=
cmd
.
Flags
()
.
GetFloat32
(
"stabilityFeeRatio"
)
period
,
_
:=
cmd
.
Flags
()
.
GetUint64
(
"period"
)
totalBalance
,
_
:=
cmd
.
Flags
()
.
Get
Uint64
(
"totalBalance"
)
totalBalance
,
_
:=
cmd
.
Flags
()
.
Get
Float32
(
"totalBalance"
)
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
cfg
.
ExecName
(
pkt
.
CollateralizeX
),
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
)),
}
...
...
plugin/dapp/collateralize/executor/collateralize_test.go
View file @
2f57d651
...
...
@@ -93,6 +93,11 @@ func initEnv() *execEnv {
Frozen
:
0
,
Addr
:
string
(
Nodes
[
1
]),
}
accountBToken
:=
types
.
Account
{
Balance
:
types
.
Coin
/
10
,
Frozen
:
0
,
Addr
:
string
(
Nodes
[
1
]),
}
accountC
:=
types
.
Account
{
Balance
:
total
,
Frozen
:
0
,
...
...
@@ -117,6 +122,8 @@ func initEnv() *execEnv {
accB
.
SetDB
(
stateDB
)
accB
.
SaveExecAccount
(
execAddr
,
&
accountB
)
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
.
SetDB
(
stateDB
)
...
...
@@ -584,12 +591,3 @@ func signTx(tx *types.Transaction, hexPrivKey string) (*types.Transaction, error
tx
.
Sign
(
int32
(
signType
),
privKey
)
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
plugin/dapp/collateralize/executor/collateralizedb.go
View file @
2f57d651
...
...
@@ -12,8 +12,9 @@ import (
"github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/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"
tokenE
"github.com/33cn/plugin/plugin/dapp/token/executor"
"math"
)
// List control
...
...
@@ -26,11 +27,11 @@ const (
const
(
Coin
=
types
.
Coin
// 1e8
DefaultDebtCeiling
=
10000
// 默认借贷限额
DefaultDebtCeiling
=
10000
*
Coin
// 默认借贷限额
DefaultLiquidationRatio
=
0.4
// 默认质押比
DefaultStabilityFeeRation
=
0.08
// 默认稳定费
DefaultPeriod
=
3600
*
24
*
365
// 默认合约限期
Default
CollTotalBalance
=
0
// 默认放贷总额
Default
TotalBalance
=
0
// 默认放贷总额
PriceWarningRate
=
1.3
// 价格提前预警率
ExpireWarningTime
=
3600
*
24
*
10
// 提前10天超时预警
)
...
...
@@ -226,8 +227,8 @@ func (action *Action) GetIndex() int64 {
return
action
.
height
*
types
.
MaxTxsPerBlock
+
int64
(
action
.
index
)
}
func
getLatestLiquidationPrice
(
coll
*
pty
.
Collateralize
)
float
32
{
var
latest
float
32
func
getLatestLiquidationPrice
(
coll
*
pty
.
Collateralize
)
float
64
{
var
latest
float
64
for
_
,
collRecord
:=
range
coll
.
BorrowRecords
{
if
collRecord
.
LiquidationPrice
>
latest
{
latest
=
collRecord
.
LiquidationPrice
...
...
@@ -273,7 +274,7 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ
LiquidationRatio
:
DefaultLiquidationRatio
,
StabilityFeeRatio
:
DefaultStabilityFeeRation
,
Period
:
DefaultPeriod
,
CollTotalBalance
:
DefaultColl
TotalBalance
,
TotalBalance
:
Default
TotalBalance
,
}
}
...
...
@@ -302,10 +303,10 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ
collConfig
.
DebtCeiling
=
manConfig
.
DebtCeiling
}
if
manage
.
Coll
TotalBalance
!=
0
{
collConfig
.
CollTotalBalance
=
manage
.
Coll
TotalBalance
if
manage
.
TotalBalance
!=
0
{
collConfig
.
TotalBalance
=
manage
.
TotalBalance
}
else
{
collConfig
.
CollTotalBalance
=
manConfig
.
Coll
TotalBalance
collConfig
.
TotalBalance
=
manConfig
.
TotalBalance
}
collConfig
.
CurrentTime
=
action
.
blocktime
...
...
@@ -376,13 +377,13 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
// 根据地址查找ID
collateralizeIDs
,
err
:=
queryCollateralizeByAddr
(
action
.
localDB
,
action
.
fromaddr
,
pty
.
CollateralizeStatusCreated
,
0
)
if
err
!=
types
.
ErrNotFound
{
clog
.
Error
(
"CollateralizeCreate.queryCollateralizeByAddr"
,
"addr"
,
action
.
fromaddr
)
return
nil
,
pty
.
ErrCollateralizeRepeatHash
if
err
!=
nil
&&
err
!=
types
.
ErrNotFound
{
clog
.
Error
(
"CollateralizeCreate.queryCollateralizeByAddr"
,
"addr"
,
action
.
fromaddr
,
"err"
,
err
)
return
nil
,
err
}
// 冻结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
{
clog
.
Error
(
"CollateralizeCreate.Frozen"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
create
.
TotalBalance
)
return
nil
,
err
...
...
@@ -403,7 +404,7 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
LiquidationRatio
:
DefaultLiquidationRatio
,
StabilityFeeRatio
:
DefaultStabilityFeeRation
,
Period
:
DefaultPeriod
,
CollTotalBalance
:
DefaultColl
TotalBalance
,
TotalBalance
:
Default
TotalBalance
,
}
}
else
{
collcfg
=
cfg
...
...
@@ -429,8 +430,9 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
}
coll
.
Collateralize
=
*
collateralize
coll
.
TotalBalance
+=
create
.
TotalBalance
coll
.
Balance
+=
create
.
TotalBalance
}
clog
.
Debug
(
"CollateralizeCreate created"
,
"CollateralizeID"
,
collateralizeID
,
"TotalBalance"
,
c
oll
.
TotalBalance
)
clog
.
Debug
(
"CollateralizeCreate created"
,
"CollateralizeID"
,
collateralizeID
,
"TotalBalance"
,
c
reate
.
TotalBalance
)
// 保存
coll
.
Save
(
action
.
db
)
...
...
@@ -444,29 +446,28 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
}
// 根据最近抵押物价格计算需要冻结的BTY数量
func
getBtyNumToFrozen
(
value
int64
,
price
float
32
,
ratio
float32
)
(
int64
,
error
)
{
func
getBtyNumToFrozen
(
value
int64
,
price
float
64
,
ratio
float64
)
(
int64
,
error
)
{
if
price
==
0
{
clog
.
Error
(
"Bty price should greate to 0"
)
return
0
,
pty
.
ErrPriceInvalid
}
btyValue
:=
float32
(
value
)
/
ratio
btyNum
:=
int64
(
btyValue
/
price
)
+
1
return
btyNum
,
nil
valueReal
:=
float64
(
value
)
/
1e8
btyValue
:=
valueReal
/
(
price
*
ratio
)
return
int64
(
math
.
Trunc
((
btyValue
+
0.0000001
)
*
1e4
))
*
1e4
,
nil
}
// 计算清算价格
// value:借出ccny数量, colValue:抵押物数量, price:抵押物价格
func
calcLiquidationPrice
(
value
int64
,
colValue
int64
)
float
32
{
liquidationRation
:=
float
32
(
value
)
/
float32
(
colValue
)
func
calcLiquidationPrice
(
value
int64
,
colValue
int64
)
float
64
{
liquidationRation
:=
float
64
(
value
)
/
float64
(
colValue
)
liquidationPrice
:=
liquidationRation
*
pty
.
CollateralizePreLiquidationRatio
return
liquidationPrice
}
// 获取最近抵押物价格
func
getLatestPrice
(
db
dbm
.
KV
)
(
float
32
,
error
)
{
func
getLatestPrice
(
db
dbm
.
KV
)
(
float
64
,
error
)
{
data
,
err
:=
db
.
Get
(
PriceKey
())
if
err
!=
nil
{
clog
.
Error
(
"getLatestPrice"
,
"get"
,
err
)
...
...
@@ -526,10 +527,11 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
}
coll
:=
&
CollateralizeDB
{
*
collateralize
}
// 借贷金额检查
if
borrow
.
GetValue
()
<=
0
{
clog
.
Error
(
"CollateralizeBorrow"
,
"CollID"
,
coll
.
CollateralizeId
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"borrow value"
,
borrow
.
GetValue
(),
"err"
,
types
.
ErrInvalidParam
)
return
nil
,
types
.
Err
InvalidParam
return
nil
,
types
.
Err
Amount
}
// 借贷金额不超过个人限额
...
...
@@ -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
{
clog
.
Error
(
"CollateralizeBorrow.getBtyNumToFrozen"
,
"CollID"
,
coll
.
CollateralizeId
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"err"
,
err
)
return
nil
,
err
...
...
@@ -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
{
clog
.
Error
(
"CollateralizeBorrow.ExecTransfer"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
btyFrozen
)
return
nil
,
err
...
...
@@ -575,7 +577,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
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
{
clog
.
Error
(
"CollateralizeBorrow.Frozen"
,
"addr"
,
coll
.
CreateAddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
btyFrozen
)
return
nil
,
err
...
...
@@ -584,9 +586,9 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
kv
=
append
(
kv
,
receipt
.
KV
...
)
// 借出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
{
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
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
...
...
@@ -600,7 +602,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
borrowRecord
.
CollateralValue
=
btyFrozen
borrowRecord
.
StartTime
=
action
.
blocktime
borrowRecord
.
CollateralPrice
=
lastPrice
borrowRecord
.
DebtValue
=
borrow
.
Value
borrowRecord
.
DebtValue
=
borrow
.
GetValue
()
borrowRecord
.
LiquidationPrice
=
coll
.
LiquidationRatio
*
lastPrice
*
pty
.
CollateralizePreLiquidationRatio
borrowRecord
.
Status
=
pty
.
CollateralizeUserStatusCreate
borrowRecord
.
ExpireTime
=
action
.
blocktime
+
coll
.
Period
...
...
@@ -614,7 +616,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
// 保存
coll
.
BorrowRecords
=
append
(
coll
.
BorrowRecords
,
borrowRecord
)
coll
.
Status
=
pty
.
CollateralizeStatusCreated
coll
.
Balance
-=
borrow
.
Value
coll
.
Balance
-=
borrow
.
GetValue
()
coll
.
CollBalance
+=
btyFrozen
coll
.
LatestExpireTime
=
getLatestExpireTime
(
&
coll
.
Collateralize
)
coll
.
Save
(
action
.
db
)
...
...
@@ -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
)
{
clog
.
Error
(
"CollateralizeRepay
"
,
"CollID"
,
coll
.
CollateralizeId
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"err"
,
types
.
ErrInsufficientBalance
)
if
!
action
.
CheckExecTokenAccount
(
action
.
fromaddr
,
realRepay
,
false
)
{
clog
.
Error
(
"CollateralizeRepay
.CheckExecTokenAccount"
,
"CollID"
,
coll
.
CollateralizeId
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
realRepay
,
"err"
,
types
.
ErrInsufficientBalance
)
return
nil
,
types
.
ErrNoBalance
}
// 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
{
clog
.
Error
(
"CollateralizeRepay.ExecTokenTransfer"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
realRepay
)
return
nil
,
err
...
...
@@ -683,16 +686,16 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
kv
=
append
(
kv
,
receipt
.
KV
...
)
// 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
{
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
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
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
{
clog
.
Error
(
"CollateralizeRepay.ExecTransferFrozen"
,
"addr"
,
coll
.
CreateAddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
borrowRecord
.
CollateralValue
)
return
nil
,
err
...
...
@@ -766,13 +769,13 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
}
// 检查抵押物账户余额
if
!
action
.
CheckExecAccountBalance
(
action
.
fromaddr
,
cAppend
.
CollateralValue
*
Coin
,
0
)
{
clog
.
Error
(
"CollateralizeBorrow
"
,
"CollID"
,
coll
.
CollateralizeId
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"err"
,
types
.
ErrNoBalance
)
if
!
action
.
CheckExecAccountBalance
(
action
.
fromaddr
,
cAppend
.
CollateralValue
,
0
)
{
clog
.
Error
(
"CollateralizeBorrow
.CheckExecAccountBalance"
,
"CollID"
,
coll
.
CollateralizeId
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
cAppend
.
CollateralValue
,
"err"
,
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
{
clog
.
Error
(
"CollateralizeBorrow.ExecTransfer"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
cAppend
.
CollateralValue
,
"err"
,
err
)
return
nil
,
err
...
...
@@ -781,7 +784,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
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
{
clog
.
Error
(
"CollateralizeBorrow.Frozen"
,
"addr"
,
coll
.
CreateAddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
cAppend
.
CollateralValue
,
"err"
,
err
)
return
nil
,
err
...
...
@@ -877,7 +880,7 @@ func getGuarantorAddr(db dbm.KV) (string, error) {
}
// 系统清算
func
(
action
*
Action
)
systemLiquidation
(
coll
*
pty
.
Collateralize
,
price
float
32
)
(
*
types
.
Receipt
,
error
)
{
func
(
action
*
Action
)
systemLiquidation
(
coll
*
pty
.
Collateralize
,
price
float
64
)
(
*
types
.
Receipt
,
error
)
{
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
...
...
@@ -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
{
clog
.
Error
(
"systemLiquidation"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
borrowRecord
.
CollateralValue
,
"err"
,
err
)
continue
...
...
@@ -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
{
clog
.
Error
(
"systemLiquidation"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
borrowRecord
.
CollateralValue
,
"err"
,
err
)
continue
...
...
@@ -999,8 +1002,8 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt
}
// 价格计算策略
func
pricePolicy
(
feed
*
pty
.
CollateralizeFeed
)
float
32
{
var
totalPrice
float
32
func
pricePolicy
(
feed
*
pty
.
CollateralizeFeed
)
float
64
{
var
totalPrice
float
64
var
totalVolume
int64
for
_
,
volume
:=
range
feed
.
Volume
{
totalVolume
+=
volume
...
...
@@ -1012,7 +1015,7 @@ func pricePolicy(feed *pty.CollateralizeFeed) float32 {
}
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
...
...
@@ -1103,13 +1106,6 @@ func (action *Action) CollateralizeRetrieve(retrieve *pty.CollateralizeRetrieve)
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
{
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)
}
// 解冻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
{
clog
.
Error
(
"IssuanceClose.ExecActive"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"balance"
,
retrieve
.
Balance
)
return
nil
,
err
...
...
plugin/dapp/collateralize/executor/query.go
View file @
2f57d651
...
...
@@ -144,7 +144,7 @@ func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecor
clog
.
Debug
(
"Query_CollateralizeByStatus"
,
"get collateralize record error"
,
err
)
}
collBalance
:=
config
.
Coll
TotalBalance
balance
:=
config
.
TotalBalance
for
_
,
id
:=
range
collIDRecords
{
coll
,
err
:=
queryCollateralizeByID
(
c
.
GetStateDB
(),
id
)
if
err
!=
nil
{
...
...
@@ -152,15 +152,15 @@ func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecor
return
nil
,
err
}
collB
alance
-=
coll
.
TotalBalance
b
alance
-=
coll
.
TotalBalance
}
ret
:=
&
pty
.
RepCollateralizeConfig
{
CollTotalBalance
:
config
.
Coll
TotalBalance
,
TotalBalance
:
config
.
TotalBalance
,
DebtCeiling
:
config
.
DebtCeiling
,
LiquidationRatio
:
config
.
LiquidationRatio
,
StabilityFeeRatio
:
config
.
StabilityFeeRatio
,
Period
:
config
.
Period
,
CollBalance
:
collB
alance
,
Balance
:
b
alance
,
CurrentTime
:
config
.
CurrentTime
,
}
...
...
plugin/dapp/collateralize/proto/collateralize.proto
View file @
2f57d651
...
...
@@ -7,14 +7,14 @@ message Collateralize {
string
collateralizeId
=
1
;
//放贷ID,一期放贷对应一个ID
int64
totalBalance
=
2
;
//当期放贷的总金额(ccny)
int64
debtCeiling
=
3
;
//单用户可借出的限额(ccny)
float
liquidationRatio
=
4
;
//清算比例
float
stabilityFeeRatio
=
5
;
//稳定费率
double
liquidationRatio
=
4
;
//清算比例
double
stabilityFeeRatio
=
5
;
//稳定费率
string
createAddr
=
6
;
//创建人地址
int64
balance
=
7
;
//放贷剩余金额(ccny)
repeated
BorrowRecord
borrowRecords
=
8
;
//借贷记录
repeated
BorrowRecord
InvalidRecords
=
9
;
//失效的借贷记录
int32
status
=
10
;
//当期借贷的状态,是否关闭
float
latestLiquidationPrice
=
11
;
//最高清算价格
double
latestLiquidationPrice
=
11
;
//最高清算价格
int64
period
=
12
;
//借贷最大期限
int64
latestExpireTime
=
13
;
//最近超期时间
int64
index
=
14
;
//当前索引
...
...
@@ -27,9 +27,9 @@ message BorrowRecord {
string
accountAddr
=
1
;
//借贷人地址
int64
startTime
=
2
;
//借贷时间
int64
collateralValue
=
3
;
//抵押物价值(bty)
float
collateralPrice
=
4
;
//抵押物价格
double
collateralPrice
=
4
;
//抵押物价格
int64
debtValue
=
5
;
//债务价值(ccny)
float
liquidationPrice
=
6
;
//抵押物清算价格
double
liquidationPrice
=
6
;
//抵押物清算价格
int32
status
=
7
;
//抵押状态,是否被清算
int64
liquidateTime
=
8
;
//清算时间
int64
expireTime
=
9
;
//超时清算时间
...
...
@@ -43,9 +43,9 @@ message BorrowRecord {
// 资产价格记录
message
AssetPriceRecord
{
int64
recordTime
=
1
;
//价格记录时间
float
btyPrice
=
2
;
//bty价格
float
btcPrice
=
3
;
//btc价格
float
ethPrice
=
4
;
//eth价格
double
btyPrice
=
2
;
//bty价格
double
btcPrice
=
3
;
//btc价格
double
ethPrice
=
4
;
//eth价格
}
// action
...
...
@@ -63,12 +63,12 @@ message CollateralizeAction {
}
message
CollateralizeManage
{
int64
debtCeiling
=
1
;
//单用户可借出的限额(ccny)
float
liquidationRatio
=
2
;
//清算比例
float
stabilityFeeRatio
=
3
;
//稳定费
int64
period
=
4
;
//合约期限
int64
collTotalBalance
=
5
;
//放贷总量
int64
currentTime
=
6
;
//设置时间
int64
debtCeiling
=
1
;
//单用户可借出的限额(ccny)
double
liquidationRatio
=
2
;
//清算比例
double
stabilityFeeRatio
=
3
;
//稳定费
int64
period
=
4
;
//合约期限
int64
totalBalance
=
5
;
//放贷总量
int64
currentTime
=
6
;
//设置时间
}
message
CollateralizeAddr
{
...
...
@@ -81,8 +81,8 @@ message CollateralizeCreate {
// 质押借出
message
CollateralizeBorrow
{
string
collateralizeId
=
1
;
//借贷期数ID
int64
value
=
2
;
//借贷价值(ccny)
string
collateralizeId
=
1
;
//借贷期数ID
int64
value
=
2
;
//借贷价值(ccny)
}
// 质押清算
...
...
@@ -93,22 +93,22 @@ message CollateralizeRepay {
// 追加抵押物
message
CollateralizeAppend
{
string
collateralizeId
=
1
;
//借贷期数ID
string
recordId
=
2
;
//借贷ID
int64
collateralValue
=
3
;
//追加价值(bty)
string
collateralizeId
=
1
;
//借贷期数ID
string
recordId
=
2
;
//借贷ID
int64
collateralValue
=
3
;
//追加价值(bty)
}
// 喂价
message
CollateralizeFeed
{
int32
collType
=
1
;
//抵押物价格类型(1,bty,2,btc,3,eth...)
repeated
float
price
=
2
;
//喂价
repeated
int64
volume
=
3
;
//成交量
int32
collType
=
1
;
//抵押物价格类型(1,bty,2,btc,3,eth...)
repeated
double
price
=
2
;
//喂价
repeated
int64
volume
=
3
;
//成交量
}
// 收回
message
CollateralizeRetrieve
{
string
collateralizeId
=
1
;
//借贷期数ID
int64
balance
=
2
;
//收回金额
string
collateralizeId
=
1
;
//借贷期数ID
int64
balance
=
2
;
//收回金额
}
// exec_local 放贷信息
...
...
@@ -147,8 +147,8 @@ message RepCollateralizeCurrentInfo {
int32
status
=
1
;
//当期借贷的状态,是否关闭
int64
totalBalance
=
2
;
//当期可借贷的总金额(ccny)
int64
debtCeiling
=
3
;
//单用户可借出的限额(ccny)
float
liquidationRatio
=
4
;
//清算比例
float
stabilityFeeRatio
=
5
;
//稳定费
double
liquidationRatio
=
4
;
//清算比例
double
stabilityFeeRatio
=
5
;
//稳定费
string
createAddr
=
6
;
//创建人地址
int64
balance
=
7
;
//剩余可借贷金额(ccny)
int64
period
=
8
;
//合约期限
...
...
@@ -218,16 +218,16 @@ message RepCollateralizeRecord {
// 返回放贷配置
message
RepCollateralizeConfig
{
int64
debtCeiling
=
1
;
//单用户可借出的限额(ccny)
float
liquidationRatio
=
2
;
//清算比例
float
stabilityFeeRatio
=
3
;
//稳定费
int64
period
=
4
;
//合约期限
int64
collTotalBalance
=
5
;
//放贷总量
int64
collBalance
=
6
;
//剩余放贷额度
int64
currentTime
=
7
;
//设置时间
int64
debtCeiling
=
1
;
//单用户可借出的限额(ccny)
double
liquidationRatio
=
2
;
//清算比例
double
stabilityFeeRatio
=
3
;
//稳定费
int64
period
=
4
;
//合约期限
int64
totalBalance
=
5
;
//放贷总量
int64
balance
=
6
;
//剩余放贷额度
int64
currentTime
=
7
;
//设置时间
}
// 返回最新抵押物价格
message
RepCollateralizePrice
{
float
price
=
1
;
//当前抵押物最新价格
double
price
=
1
;
//当前抵押物最新价格
}
\ No newline at end of file
plugin/dapp/collateralize/types/collateralize.go
View file @
2f57d651
...
...
@@ -6,6 +6,7 @@ package types
import
(
"encoding/json"
"math"
"reflect"
"github.com/33cn/chain33/common/address"
...
...
@@ -111,7 +112,7 @@ func (collateralize CollateralizeType) CreateTx(action string, message json.RawM
return
nil
,
types
.
ErrInvalidParam
}
return
CreateRawCollateralizeFeedTx
(
cfg
,
&
param
)
}
else
if
action
==
"CollateralizeRetrive"
{
}
else
if
action
==
"CollateralizeRetri
e
ve"
{
var
param
CollateralizeRetrieveTx
err
:=
json
.
Unmarshal
(
message
,
&
param
)
if
err
!=
nil
{
...
...
@@ -153,7 +154,7 @@ func CreateRawCollateralizeCreateTx(cfg *types.Chain33Config, parm *Collateraliz
}
v
:=
&
CollateralizeCreate
{
TotalBalance
:
parm
.
TotalBalance
,
TotalBalance
:
int64
(
math
.
Trunc
((
parm
.
TotalBalance
+
0.0000001
)
*
1e4
))
*
1e4
,
}
create
:=
&
CollateralizeAction
{
Ty
:
CollateralizeActionCreate
,
...
...
@@ -182,7 +183,7 @@ func CreateRawCollateralizeBorrowTx(cfg *types.Chain33Config, parm *Collateraliz
v
:=
&
CollateralizeBorrow
{
CollateralizeId
:
parm
.
CollateralizeID
,
Value
:
parm
.
Value
,
Value
:
int64
(
math
.
Trunc
((
parm
.
Value
+
0.0000001
)
*
1e4
))
*
1e4
,
}
borrow
:=
&
CollateralizeAction
{
Ty
:
CollateralizeActionBorrow
,
...
...
@@ -241,7 +242,7 @@ func CreateRawCollateralizeAppendTx(cfg *types.Chain33Config, parm *Collateraliz
v
:=
&
CollateralizeAppend
{
CollateralizeId
:
parm
.
CollateralizeID
,
RecordId
:
parm
.
RecordID
,
CollateralValue
:
parm
.
Value
,
CollateralValue
:
int64
(
math
.
Trunc
((
parm
.
Value
+
0.0000001
)
*
1e4
))
*
1e4
,
}
append
:=
&
CollateralizeAction
{
Ty
:
CollateralizeActionAppend
,
...
...
@@ -299,7 +300,7 @@ func CreateRawCollateralizeRetrieveTx(cfg *types.Chain33Config, parm *Collateral
v
:=
&
CollateralizeRetrieve
{
CollateralizeId
:
parm
.
CollateralizeID
,
Balance
:
parm
.
Balance
,
Balance
:
int64
(
math
.
Trunc
((
parm
.
Balance
+
0.0000001
)
*
1e4
))
*
1e4
,
}
close
:=
&
CollateralizeAction
{
Ty
:
CollateralizeActionRetrieve
,
...
...
@@ -328,11 +329,11 @@ func CreateRawCollateralizeManageTx(cfg *types.Chain33Config, parm *Collateraliz
}
v
:=
&
CollateralizeManage
{
DebtCeiling
:
parm
.
DebtCeiling
,
DebtCeiling
:
int64
(
math
.
Trunc
((
parm
.
DebtCeiling
+
0.0000001
)
*
1e4
))
*
1e4
,
LiquidationRatio
:
parm
.
LiquidationRatio
,
StabilityFeeRatio
:
parm
.
StabilityFeeRatio
,
Period
:
parm
.
Period
,
CollTotalBalance
:
parm
.
CollTotalBalance
,
TotalBalance
:
int64
(
math
.
Trunc
((
parm
.
TotalBalance
+
0.0000001
)
*
1e4
))
*
1e4
,
}
manage
:=
&
CollateralizeAction
{
...
...
plugin/dapp/collateralize/types/collateralize.pb.go
View file @
2f57d651
...
...
@@ -25,14 +25,14 @@ type Collateralize struct {
CollateralizeId
string
`protobuf:"bytes,1,opt,name=collateralizeId,proto3" json:"collateralizeId,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"`
LiquidationRatio
float
32
`protobuf:"fixed32
,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio
float
32
`protobuf:"fixed32
,5,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
LiquidationRatio
float
64
`protobuf:"fixed64
,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio
float
64
`protobuf:"fixed64
,5,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,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"`
BorrowRecords
[]
*
BorrowRecord
`protobuf:"bytes,8,rep,name=borrowRecords,proto3" json:"borrowRecords,omitempty"`
InvalidRecords
[]
*
BorrowRecord
`protobuf:"bytes,9,rep,name=InvalidRecords,proto3" json:"InvalidRecords,omitempty"`
Status
int32
`protobuf:"varint,10,opt,name=status,proto3" json:"status,omitempty"`
LatestLiquidationPrice
float
32
`protobuf:"fixed32
,11,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"`
LatestLiquidationPrice
float
64
`protobuf:"fixed64
,11,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"`
Period
int64
`protobuf:"varint,12,opt,name=period,proto3" json:"period,omitempty"`
LatestExpireTime
int64
`protobuf:"varint,13,opt,name=latestExpireTime,proto3" json:"latestExpireTime,omitempty"`
Index
int64
`protobuf:"varint,14,opt,name=index,proto3" json:"index,omitempty"`
...
...
@@ -89,14 +89,14 @@ func (m *Collateralize) GetDebtCeiling() int64 {
return
0
}
func
(
m
*
Collateralize
)
GetLiquidationRatio
()
float
32
{
func
(
m
*
Collateralize
)
GetLiquidationRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationRatio
}
return
0
}
func
(
m
*
Collateralize
)
GetStabilityFeeRatio
()
float
32
{
func
(
m
*
Collateralize
)
GetStabilityFeeRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
StabilityFeeRatio
}
...
...
@@ -138,7 +138,7 @@ func (m *Collateralize) GetStatus() int32 {
return
0
}
func
(
m
*
Collateralize
)
GetLatestLiquidationPrice
()
float
32
{
func
(
m
*
Collateralize
)
GetLatestLiquidationPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
LatestLiquidationPrice
}
...
...
@@ -185,9 +185,9 @@ type BorrowRecord struct {
AccountAddr
string
`protobuf:"bytes,1,opt,name=accountAddr,proto3" json:"accountAddr,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"`
CollateralPrice
float
32
`protobuf:"fixed32
,4,opt,name=collateralPrice,proto3" json:"collateralPrice,omitempty"`
CollateralPrice
float
64
`protobuf:"fixed64
,4,opt,name=collateralPrice,proto3" json:"collateralPrice,omitempty"`
DebtValue
int64
`protobuf:"varint,5,opt,name=debtValue,proto3" json:"debtValue,omitempty"`
LiquidationPrice
float
32
`protobuf:"fixed32
,6,opt,name=liquidationPrice,proto3" json:"liquidationPrice,omitempty"`
LiquidationPrice
float
64
`protobuf:"fixed64
,6,opt,name=liquidationPrice,proto3" json:"liquidationPrice,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"`
ExpireTime
int64
`protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"`
...
...
@@ -247,7 +247,7 @@ func (m *BorrowRecord) GetCollateralValue() int64 {
return
0
}
func
(
m
*
BorrowRecord
)
GetCollateralPrice
()
float
32
{
func
(
m
*
BorrowRecord
)
GetCollateralPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
CollateralPrice
}
...
...
@@ -261,7 +261,7 @@ func (m *BorrowRecord) GetDebtValue() int64 {
return
0
}
func
(
m
*
BorrowRecord
)
GetLiquidationPrice
()
float
32
{
func
(
m
*
BorrowRecord
)
GetLiquidationPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationPrice
}
...
...
@@ -327,9 +327,9 @@ func (m *BorrowRecord) GetPreIndex() int64 {
// 资产价格记录
type
AssetPriceRecord
struct
{
RecordTime
int64
`protobuf:"varint,1,opt,name=recordTime,proto3" json:"recordTime,omitempty"`
BtyPrice
float
32
`protobuf:"fixed32
,2,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"`
BtcPrice
float
32
`protobuf:"fixed32
,3,opt,name=btcPrice,proto3" json:"btcPrice,omitempty"`
EthPrice
float
32
`protobuf:"fixed32
,4,opt,name=ethPrice,proto3" json:"ethPrice,omitempty"`
BtyPrice
float
64
`protobuf:"fixed64
,2,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"`
BtcPrice
float
64
`protobuf:"fixed64
,3,opt,name=btcPrice,proto3" json:"btcPrice,omitempty"`
EthPrice
float
64
`protobuf:"fixed64
,4,opt,name=ethPrice,proto3" json:"ethPrice,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -367,21 +367,21 @@ func (m *AssetPriceRecord) GetRecordTime() int64 {
return
0
}
func
(
m
*
AssetPriceRecord
)
GetBtyPrice
()
float
32
{
func
(
m
*
AssetPriceRecord
)
GetBtyPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
BtyPrice
}
return
0
}
func
(
m
*
AssetPriceRecord
)
GetBtcPrice
()
float
32
{
func
(
m
*
AssetPriceRecord
)
GetBtcPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
BtcPrice
}
return
0
}
func
(
m
*
AssetPriceRecord
)
GetEthPrice
()
float
32
{
func
(
m
*
AssetPriceRecord
)
GetEthPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
EthPrice
}
...
...
@@ -554,10 +554,10 @@ func (*CollateralizeAction) XXX_OneofWrappers() []interface{} {
type
CollateralizeManage
struct
{
DebtCeiling
int64
`protobuf:"varint,1,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"`
LiquidationRatio
float
32
`protobuf:"fixed32
,2,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio
float
32
`protobuf:"fixed32
,3,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
LiquidationRatio
float
64
`protobuf:"fixed64
,2,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio
float
64
`protobuf:"fixed64
,3,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
Period
int64
`protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"`
CollTotalBalance
int64
`protobuf:"varint,5,opt,name=collTotalBalance,proto3" json:"collT
otalBalance,omitempty"`
TotalBalance
int64
`protobuf:"varint,5,opt,name=totalBalance,proto3" json:"t
otalBalance,omitempty"`
CurrentTime
int64
`protobuf:"varint,6,opt,name=currentTime,proto3" json:"currentTime,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
...
...
@@ -596,14 +596,14 @@ func (m *CollateralizeManage) GetDebtCeiling() int64 {
return
0
}
func
(
m
*
CollateralizeManage
)
GetLiquidationRatio
()
float
32
{
func
(
m
*
CollateralizeManage
)
GetLiquidationRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationRatio
}
return
0
}
func
(
m
*
CollateralizeManage
)
GetStabilityFeeRatio
()
float
32
{
func
(
m
*
CollateralizeManage
)
GetStabilityFeeRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
StabilityFeeRatio
}
...
...
@@ -617,9 +617,9 @@ func (m *CollateralizeManage) GetPeriod() int64 {
return
0
}
func
(
m
*
CollateralizeManage
)
Get
Coll
TotalBalance
()
int64
{
func
(
m
*
CollateralizeManage
)
GetTotalBalance
()
int64
{
if
m
!=
nil
{
return
m
.
Coll
TotalBalance
return
m
.
TotalBalance
}
return
0
}
...
...
@@ -865,7 +865,7 @@ func (m *CollateralizeAppend) GetCollateralValue() int64 {
// 喂价
type
CollateralizeFeed
struct
{
CollType
int32
`protobuf:"varint,1,opt,name=collType,proto3" json:"collType,omitempty"`
Price
[]
float
32
`protobuf:"fixed32
,2,rep,packed,name=price,proto3" json:"price,omitempty"`
Price
[]
float
64
`protobuf:"fixed64
,2,rep,packed,name=price,proto3" json:"price,omitempty"`
Volume
[]
int64
`protobuf:"varint,3,rep,packed,name=volume,proto3" json:"volume,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
...
...
@@ -904,7 +904,7 @@ func (m *CollateralizeFeed) GetCollType() int32 {
return
0
}
func
(
m
*
CollateralizeFeed
)
GetPrice
()
[]
float
32
{
func
(
m
*
CollateralizeFeed
)
GetPrice
()
[]
float
64
{
if
m
!=
nil
{
return
m
.
Price
}
...
...
@@ -1219,8 +1219,8 @@ type RepCollateralizeCurrentInfo struct {
Status
int32
`protobuf:"varint,1,opt,name=status,proto3" json:"status,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"`
LiquidationRatio
float
32
`protobuf:"fixed32
,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio
float
32
`protobuf:"fixed32
,5,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
LiquidationRatio
float
64
`protobuf:"fixed64
,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio
float
64
`protobuf:"fixed64
,5,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,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"`
Period
int64
`protobuf:"varint,8,opt,name=period,proto3" json:"period,omitempty"`
...
...
@@ -1278,14 +1278,14 @@ func (m *RepCollateralizeCurrentInfo) GetDebtCeiling() int64 {
return
0
}
func
(
m
*
RepCollateralizeCurrentInfo
)
GetLiquidationRatio
()
float
32
{
func
(
m
*
RepCollateralizeCurrentInfo
)
GetLiquidationRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationRatio
}
return
0
}
func
(
m
*
RepCollateralizeCurrentInfo
)
GetStabilityFeeRatio
()
float
32
{
func
(
m
*
RepCollateralizeCurrentInfo
)
GetStabilityFeeRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
StabilityFeeRatio
}
...
...
@@ -1809,11 +1809,11 @@ func (m *RepCollateralizeRecord) GetRecord() *BorrowRecord {
// 返回放贷配置
type
RepCollateralizeConfig
struct
{
DebtCeiling
int64
`protobuf:"varint,1,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"`
LiquidationRatio
float
32
`protobuf:"fixed32
,2,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio
float
32
`protobuf:"fixed32
,3,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
LiquidationRatio
float
64
`protobuf:"fixed64
,2,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
StabilityFeeRatio
float
64
`protobuf:"fixed64
,3,opt,name=stabilityFeeRatio,proto3" json:"stabilityFeeRatio,omitempty"`
Period
int64
`protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"`
CollTotalBalance
int64
`protobuf:"varint,5,opt,name=collTotalBalance,proto3" json:"collT
otalBalance,omitempty"`
CollBalance
int64
`protobuf:"varint,6,opt,name=collBalance,proto3" json:"collB
alance,omitempty"`
TotalBalance
int64
`protobuf:"varint,5,opt,name=totalBalance,proto3" json:"t
otalBalance,omitempty"`
Balance
int64
`protobuf:"varint,6,opt,name=balance,proto3" json:"b
alance,omitempty"`
CurrentTime
int64
`protobuf:"varint,7,opt,name=currentTime,proto3" json:"currentTime,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
...
...
@@ -1852,14 +1852,14 @@ func (m *RepCollateralizeConfig) GetDebtCeiling() int64 {
return
0
}
func
(
m
*
RepCollateralizeConfig
)
GetLiquidationRatio
()
float
32
{
func
(
m
*
RepCollateralizeConfig
)
GetLiquidationRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationRatio
}
return
0
}
func
(
m
*
RepCollateralizeConfig
)
GetStabilityFeeRatio
()
float
32
{
func
(
m
*
RepCollateralizeConfig
)
GetStabilityFeeRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
StabilityFeeRatio
}
...
...
@@ -1873,16 +1873,16 @@ func (m *RepCollateralizeConfig) GetPeriod() int64 {
return
0
}
func
(
m
*
RepCollateralizeConfig
)
Get
Coll
TotalBalance
()
int64
{
func
(
m
*
RepCollateralizeConfig
)
GetTotalBalance
()
int64
{
if
m
!=
nil
{
return
m
.
Coll
TotalBalance
return
m
.
TotalBalance
}
return
0
}
func
(
m
*
RepCollateralizeConfig
)
Get
Coll
Balance
()
int64
{
func
(
m
*
RepCollateralizeConfig
)
GetBalance
()
int64
{
if
m
!=
nil
{
return
m
.
Coll
Balance
return
m
.
Balance
}
return
0
}
...
...
@@ -1896,7 +1896,7 @@ func (m *RepCollateralizeConfig) GetCurrentTime() int64 {
// 返回最新抵押物价格
type
RepCollateralizePrice
struct
{
Price
float
32
`protobuf:"fixed32
,1,opt,name=price,proto3" json:"price,omitempty"`
Price
float
64
`protobuf:"fixed64
,1,opt,name=price,proto3" json:"price,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -1927,7 +1927,7 @@ func (m *RepCollateralizePrice) XXX_DiscardUnknown() {
var
xxx_messageInfo_RepCollateralizePrice
proto
.
InternalMessageInfo
func
(
m
*
RepCollateralizePrice
)
GetPrice
()
float
32
{
func
(
m
*
RepCollateralizePrice
)
GetPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
Price
}
...
...
@@ -1969,85 +1969,85 @@ func init() {
func
init
()
{
proto
.
RegisterFile
(
"collateralize.proto"
,
fileDescriptor_a988fb4a61381972
)
}
var
fileDescriptor_a988fb4a61381972
=
[]
byte
{
// 12
70
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xdc
,
0x58
,
0x
4d
,
0x6f
,
0xdc
,
0x44
,
0x1
8
,
0xae
,
0xed
,
0xfd
,
0xc8
,
0xbe
,
0x9b
,
0xa4
,
0xe9
,
0x24
,
0x0d
,
0x26
,
0x44
,
0xd1
,
0x6a
,
0x84
,
0x
c4
,
0x0a
,
0x68
,
0x24
,
0xd2
,
0x0a
,
0x51
,
0xb8
,
0x90
,
0xa4
,
0xad
,
0xb2
,
0x52
,
0x91
,
0x2a
,
0x53
,
0x
10
,
0x2a
,
0x02
,
0xc9
,
0xbb
,
0x9e
,
0x04
,
0x4b
,
0x8e
,
0xed
,
0xd8
,
0xb3
,
0x21
,
0xcb
,
0x9d
,
0x1e
,
0x
f8
,
0x0d
,
0x70
,
0xe4
,
0xca
,
0x6f
,
0xe2
,
0x3f
,
0x70
,
0xe0
,
0x8a
,
0xe6
,
0xc3
,
0xf6
,
0xcc
,
0xd8
,
0x
8e
,
0x76
,
0x81
,
0x53
,
0x2f
,
0xd1
,
0xce
,
0x3b
,
0xcf
,
0xcc
,
0xbc
,
0x1f
,
0xcf
,
0xfb
,
0xe1
,
0xc0
,
0x
f6
,
0x2c
,
0x89
,
0x22
,
0x9f
,
0x92
,
0xcc
,
0x8f
,
0xc2
,
0x9f
,
0xc8
,
0x61
,
0x9a
,
0x25
,
0x34
,
0x41
,
0x
5d
,
0xba
,
0x48
,
0x49
,
0x8e
,
0xff
,
0xea
,
0xc0
,
0xc6
,
0xa9
,
0xba
,
0x8d
,
0xc6
,
0x70
,
0x57
,
0xc3
,
0x
4f
,
0x02
,
0xd7
,
0x1a
,
0x59
,
0xe3
,
0x81
,
0x67
,
0x8a
,
0x11
,
0x86
,
0x75
,
0x9a
,
0x50
,
0x3f
,
0x3a
,
0x
f1
,
0x23
,
0x3f
,
0x9e
,
0x11
,
0xd7
,
0x1e
,
0x59
,
0x63
,
0xc7
,
0xd3
,
0x64
,
0x68
,
0x04
,
0xc3
,
0x80
,
0x
4c
,
0xe9
,
0x29
,
0x09
,
0xa3
,
0x30
,
0xbe
,
0x70
,
0x1d
,
0x0e
,
0x51
,
0x45
,
0xe8
,
0x7d
,
0xd8
,
0x8
a
,
0x
c2
,
0xab
,
0x79
,
0x18
,
0xf8
,
0x34
,
0x4c
,
0x62
,
0x8f
,
0xfd
,
0x75
,
0x3b
,
0x23
,
0x6b
,
0x6c
,
0x7b
,
0x
35
,
0x39
,
0xfa
,
0x10
,
0xee
,
0xe5
,
0xd4
,
0x9f
,
0x86
,
0x51
,
0x48
,
0x17
,
0xcf
,
0x08
,
0x11
,
0xe0
,
0x
2e
,
0x07
,
0xd7
,
0x37
,
0xd0
,
0x01
,
0xc0
,
0x2c
,
0x23
,
0x3e
,
0x25
,
0xc7
,
0x41
,
0x90
,
0xb9
,
0x3d
,
0x
6e
,
0x84
,
0x22
,
0x41
,
0x2e
,
0xf4
,
0xa7
,
0x52
,
0xf5
,
0x3e
,
0xd7
,
0xab
,
0x58
,
0xa2
,
0xc7
,
0xb0
,
0x
31
,
0x4d
,
0xb2
,
0x2c
,
0xf9
,
0xd1
,
0x23
,
0xb3
,
0x24
,
0x0b
,
0x72
,
0x77
,
0x6d
,
0xe4
,
0x8c
,
0x87
,
0x
47
,
0xdb
,
0x87
,
0xdc
,
0x69
,
0x87
,
0x27
,
0xca
,
0x9e
,
0xa7
,
0x23
,
0xd1
,
0x67
,
0xb0
,
0x39
,
0x89
,
0x
af
,
0xfd
,
0x28
,
0x0c
,
0x8a
,
0xb3
,
0x83
,
0xf6
,
0xb3
,
0x06
,
0x14
,
0xed
,
0x42
,
0x2f
,
0xa7
,
0x3e
,
0x
9d
,
0xe7
,
0x2e
,
0x8c
,
0xac
,
0x71
,
0xd7
,
0x93
,
0x2b
,
0xf4
,
0x31
,
0xec
,
0x32
,
0xcf
,
0xe7
,
0xf4
,
0x
79
,
0xe5
,
0x91
,
0x17
,
0x59
,
0x38
,
0x23
,
0xee
,
0x90
,
0x1b
,
0xdf
,
0xb2
,
0xcb
,
0xee
,
0x4b
,
0x49
,
0x
16
,
0x26
,
0x81
,
0xbb
,
0xce
,
0x0d
,
0x94
,
0x2b
,
0xee
,
0x73
,
0x7e
,
0xe2
,
0xe9
,
0x4d
,
0x1a
,
0x66
,
0x
e4
,
0x65
,
0x78
,
0x49
,
0xdc
,
0x0d
,
0x8e
,
0xa8
,
0xc9
,
0xd1
,
0x0e
,
0x74
,
0xc3
,
0x38
,
0x20
,
0x37
,
0x
ee
,
0x26
,
0x07
,
0x88
,
0x05
,
0xda
,
0x83
,
0xb5
,
0x34
,
0x23
,
0x13
,
0xbe
,
0x71
,
0x97
,
0x6f
,
0x94
,
0x
6b
,
0x16
,
0x73
,
0x46
,
0x95
,
0x82
,
0x16
,
0x5b
,
0x22
,
0xe6
,
0x8a
,
0x08
,
0xff
,
0xe9
,
0xc0
,
0xba
,
0x
ea
,
0x08
,
0x76
,
0xc4
,
0x9f
,
0xcd
,
0x92
,
0x79
,
0x4c
,
0x79
,
0xac
,
0x04
,
0xe1
,
0x54
,
0x11
,
0xda
,
0x
87
,
0x41
,
0x4e
,
0xfd
,
0x8c
,
0x72
,
0x5d
,
0x05
,
0xd3
,
0x2a
,
0x81
,
0x4e
,
0xda
,
0xaf
,
0xfd
,
0x68
,
0x
4e
,
0x24
,
0xd5
,
0x4c
,
0xb1
,
0x8e
,
0x14
,
0x3e
,
0x14
,
0x6c
,
0x33
,
0xc5
,
0xec
,
0x45
,
0xc6
,
0x53
,
0x
71
,
0x5b
,
0x57
,
0xbc
,
0x58
,
0x0a
,
0x0c
,
0xda
,
0x8a
,
0x8b
,
0x7a
,
0x35
,
0xda
,
0x96
,
0x61
,
0x90
,
0x
61
,
0xed
,
0x6b
,
0x61
,
0x7d
,
0x17
,
0x36
,
0x0a
,
0xac
,
0x88
,
0xc1
,
0x1a
,
0x7f
,
0x45
,
0x17
,
0x32
,
0x
1a
,
0x93
,
0x2a
,
0x4c
,
0x03
,
0x0e
,
0x51
,
0x24
,
0x4c
,
0xcf
,
0x34
,
0x23
,
0x5f
,
0xaa
,
0xbc
,
0xa9
,
0x
04
,
0x2c
,
0x50
,
0x19
,
0xf7
,
0xf1
,
0x24
,
0xe0
,
0x64
,
0x19
,
0x78
,
0xe5
,
0xba
,
0x29
,
0xd5
,
0xd7
,
0x
9b
,
0x53
,
0xbd
,
0x24
,
0xc1
,
0x46
,
0x1b
,
0x09
,
0x36
,
0x75
,
0x12
,
0xe0
,
0xd7
,
0x16
,
0x6c
,
0x1d
,
0x
e7
,
0x39
,
0xa1
,
0xdc
,
0x05
,
0x32
,
0xcc
,
0x07
,
0x00
,
0xe2
,
0x71
,
0x6e
,
0x8a
,
0x25
,
0x4c
,
0xa9
,
0x
24
,
0xec
,
0xc2
,
0x29
,
0x5d
,
0x08
,
0x67
,
0xda
,
0xdc
,
0x99
,
0xe5
,
0x5a
,
0xec
,
0xcd
,
0xc4
,
0x9e
,
0x
53
,
0xec
,
0xcd
,
0xca
,
0x3d
,
0x42
,
0x7f
,
0x50
,
0xa3
,
0x59
,
0xae
,
0xf1
,
0xef
,
0x0e
,
0x6c
,
0x6
b
,
0x
15
,
0xee
,
0x78
,
0xc6
,
0x22
,
0x83
,
0x1e
,
0x41
,
0x4f
,
0xd4
,
0x02
,
0xae
,
0xc7
,
0xf0
,
0x68
,
0x4f
,
0x
26
,
0xa8
,
0x86
,
0x3d
,
0xe5
,
0x88
,
0xb3
,
0x3b
,
0x9e
,
0xc4
,
0xb2
,
0x53
,
0x22
,
0xdf
,
0xb9
,
0x7e
,
0x
2d
,
0xa7
,
0x04
,
0xb5
,
0xd9
,
0x29
,
0x81
,
0x45
,
0x1f
,
0x41
,
0x37
,
0x23
,
0xa9
,
0xbf
,
0xe0
,
0x8
a
,
0x0
f
,
0x8f
,
0xde
,
0x6e
,
0x3a
,
0xe4
,
0x31
,
0xc0
,
0xd9
,
0x1d
,
0x4f
,
0x20
,
0xd9
,
0x43
,
0x7e
,
0x9a
,
0x
92
,
0x38
,
0xe0
,
0x06
,
0xb5
,
0x3c
,
0x74
,
0xcc
,
0x11
,
0xec
,
0x21
,
0x81
,
0x45
,
0x87
,
0xd0
,
0x39
,
0x
27
,
0x24
,
0xe0
,
0x74
,
0x1d
,
0x1e
,
0xb9
,
0x4d
,
0x67
,
0x9e
,
0x11
,
0xc2
,
0x4e
,
0x70
,
0x1c
,
0xfa
,
0x
94
,
0xb1
,
0x83
,
0x66
,
0x21
,
0xb9
,
0x16
,
0xec
,
0x1d
,
0x1e
,
0xed
,
0x37
,
0xeb
,
0x26
,
0x30
,
0x6
7
,
0x
77
,
0xbc
,
0x12
,
0xcf
,
0x34
,
0xbc
,
0xf4
,
0x63
,
0xff
,
0x42
,
0x54
,
0xcf
,
0x16
,
0x0d
,
0xbf
,
0xe0
,
0x
08
,
0xa6
,
0xa1
,
0xc0
,
0xa2
,
0x4d
,
0xb0
,
0xe9
,
0x42
,
0xd2
,
0xd4
,
0xa6
,
0x8b
,
0x93
,
0x3e
,
0x74
,
0x
af
,
0x59
,
0x42
,
0xe1
,
0xbf
,
0x2d
,
0x23
,
0x4e
,
0xe2
,
0xa8
,
0xd9
,
0x41
,
0xac
,
0xe5
,
0x3a
,
0x88
,
0x
bd
,
0x4a
,
0x07
,
0x71
,
0xda
,
0x3a
,
0x48
,
0x55
,
0x3f
,
0x3b
,
0x66
,
0xfd
,
0x64
,
0x19
,
0xf2
,
0x52
,
0x
ed
,
0x7e
,
0xa2
,
0x42
,
0xd4
,
0xe4
,
0xbc
,
0x1a
,
0xce
,
0xb3
,
0x8c
,
0xc4
,
0xa2
,
0x74
,
0xf5
,
0x64
,
0x3
5
,
0xac
,
0x44
,
0xf8
,
0x21
,
0xdc
,
0xd3
,
0xa3
,
0xca
,
0xea
,
0xdd
,
0x01
,
0x40
,
0x3e
,
0x4f
,
0x49
,
0x
c6
,
0x16
,
0xb9
,
0x6b
,
0x8d
,
0x1c
,
0xd6
,
0xbc
,
0x2a
,
0x09
,
0x7e
,
0x6c
,
0x78
,
0x4b
,
0x30
,
0xb5
,
0x
d6
,
0x93
,
0xad
,
0x7a
,
0x4f
,
0xc6
,
0x5f
,
0x19
,
0x47
,
0x05
,
0x5d
,
0x57
,
0x68
,
0xfc
,
0x3b
,
0x32
,
0x
66
,
0xb2
,
0x0e
,
0xcb
,
0x00
,
0xbe
,
0x02
,
0x54
,
0x27
,
0xf4
,
0x0a
,
0xb7
,
0xaa
,
0x95
,
0xca
,
0xd6
,
0x
2b
,
0x15
,
0xfe
,
0xd9
,
0x24
,
0x87
,
0x60
,
0xfe
,
0xff
,
0x73
,
0xfb
,
0xf2
,
0xdd
,
0x03
,
0x7f
,
0x67
,
0x
84
,
0x8a
,
0x25
,
0x13
,
0xbb
,
0x9a
,
0x47
,
0x7d
,
0x91
,
0x0a
,
0x7f
,
0x77
,
0xbd
,
0x72
,
0xcd
,
0x5c
,
0x
95
,
0xca
,
0x72
,
0xe6
,
0x8c
,
0x6d
,
0x4f
,
0x2c
,
0x18
,
0xaf
,
0xae
,
0x93
,
0x68
,
0x7e
,
0xc9
,
0xde
,
0x
71
,
0x18
,
0xaf
,
0xc4
,
0x0a
,
0x7f
,
0x0b
,
0xf7
,
0x1b
,
0xf3
,
0x6e
,
0x05
,
0x3b
,
0x95
,
0xa1
,
0xc
6
,
0x
d6
,
0x86
,
0x1a
,
0xfc
,
0xda
,
0x86
,
0x1d
,
0x8f
,
0xcc
,
0x48
,
0x98
,
0xd2
,
0x7f
,
0x3b
,
0xf1
,
0xe9
,
0x
13
,
0x95
,
0x5d
,
0x9b
,
0xa8
,
0x8c
,
0x36
,
0xee
,
0xd4
,
0xdb
,
0xb8
,
0x1a
,
0x86
,
0x8e
,
0x11
,
0x8
6
,
0x
aa
,
0x4d
,
0x76
,
0xb5
,
0x36
,
0xb9
,
0x0f
,
0x83
,
0x17
,
0x65
,
0x83
,
0xeb
,
0x89
,
0x06
,
0x57
,
0x0a
,
0x
aa
,
0xd6
,
0xd4
,
0x6f
,
0x6b
,
0x4d
,
0x6b
,
0x46
,
0x6b
,
0xfa
,
0xcd
,
0x24
,
0x93
,
0xec
,
0x4e
,
0xcb
,
0x
fb
,
0x01
,
0x41
,
0xc7
,
0xaf
,
0x3c
,
0xc0
,
0x7f
,
0x6b
,
0x96
,
0x39
,
0xad
,
0x96
,
0x75
,
0x34
,
0xcb
,
0x
4a
,
0xdd
,
0xbb
,
0x8a
,
0xee
,
0xf8
,
0x39
,
0xec
,
0x34
,
0xa8
,
0x97
,
0xa3
,
0x47
,
0xd0
,
0xcf
,
0xe4
,
0x4
c
,
0x69
,
0xf1
,
0x99
,
0x72
,
0xaf
,
0xb9
,
0x56
,
0xf3
,
0xd1
,
0xb2
,
0x80
,
0xe2
,
0xcf
,
0x59
,
0xd4
,
0x
af
,
0x34
,
0xc8
,
0x24
,
0x3e
,
0x4f
,
0x96
,
0xb7
,
0x16
,
0xff
,
0xe1
,
0xc0
,
0x3b
,
0x1e
,
0x49
,
0xf5
,
0x
72
,
0x23
,
0xea
,
0x17
,
0xbf
,
0xa9
,
0xb2
,
0xce
,
0xd2
,
0xac
,
0x7b
,
0x73
,
0xbf
,
0x0f
,
0xaa
,
0xbe
,
0x
b0
,
0xa6
,
0xf5
,
0x85
,
0x06
,
0x9f
,
0x0e
,
0x9a
,
0x19
,
0x64
,
0xcc
,
0xc8
,
0x50
,
0x9b
,
0x91
,
0xeb
,
0x
df
,
0x20
,
0xc3
,
0x65
,
0xbf
,
0x41
,
0xf0
,
0x29
,
0xdc
,
0x6f
,
0x0a
,
0x79
,
0x5e
,
0xf4
,
0x2d
,
0x45
,
0x
91
,
0xa2
,
0xb5
,
0xd4
,
0xe4
,
0xf8
,
0x1b
,
0xd8
,
0xbf
,
0x25
,
0xe8
,
0x39
,
0xfa
,
0x84
,
0x71
,
0xf7
,
0x
3c
,
0x29
,
0xb8
,
0x88
,
0xa5
,
0x5e
,
0xb7
,
0x9c
,
0xf1
,
0xc4
,
0x01
,
0x7c
,
0x06
,
0xae
,
0xa9
,
0xde
,
0x
c9
,
0x42
,
0x66
,
0x73
,
0x1b
,
0x97
,
0xca
,
0x4c
,
0xb1
,
0xd5
,
0x4c
,
0x79
,
0x05
,
0xbb
,
0xf5
,
0x9b
,
0x
78
,
0xec
,
0x8a
,
0x0c
,
0xb5
,
0x94
,
0x0c
,
0xad
,
0xee
,
0xb6
,
0x9b
,
0xef
,
0x76
,
0xd4
,
0xbb
,
0xdf
,
0x
83
,
0x6d
,
0xd3
,
0x96
,
0xc9
,
0x93
,
0x1c
,
0x6d
,
0x81
,
0x33
,
0x79
,
0x52
,
0x78
,
0x8d
,
0xfd
,
0xc4
,
0x
bf
,
0x58
,
0xcc
,
0x53
,
0x57
,
0x0d
,
0x49
,
0x28
,
0x75
,
0xf9
,
0x6f
,
0x75
,
0xa5
,
0xd2
,
0xda
,
0x69
,
0x
d6
,
0xba
,
0xa3
,
0x6a
,
0x7d
,
0x03
,
0x07
,
0x6d
,
0xba
,
0x48
,
0x0f
,
0x2f
,
0xaf
,
0xcd
,
0x6a
,
0xfe
,
0x
3a
,
0x83
,
0xb7
,
0x4c
,
0x7f
,
0x15
,
0x85
,
0xeb
,
0x81
,
0x59
,
0xb8
,
0x1a
,
0x49
,
0x5c
,
0x56
,
0xac
,
0x
ef
,
0xeb
,
0x51
,
0x5d
,
0xb9
,
0x42
,
0xdf
,
0x36
,
0x4c
,
0x3c
,
0x65
,
0xf7
,
0x37
,
0x69
,
0x8a
,
0x3e
,
0x
80
,
0x9e
,
0x40
,
0xc9
,
0x6f
,
0x82
,
0x46
,
0x3d
,
0x25
,
0x04
,
0xff
,
0x6a
,
0xd7
,
0xef
,
0x39
,
0x4d
,
0x
e2
,
0xf3
,
0xf0
,
0xe2
,
0x8d
,
0x98
,
0x59
,
0x95
,
0xea
,
0xd4
,
0xab
,
0x57
,
0x27
,
0x63
,
0xaa
,
0xed
,
0x
d7
,
0xa7
,
0xda
,
0x07
,
0xac
,
0x08
,
0xe9
,
0xde
,
0x11
,
0x1f
,
0x6b
,
0xe5
,
0x48
,
0x64
,
0x71
,
0x13
,
0x
c4
,
0x62
,
0xda
,
0xe3
,
0xff
,
0x96
,
0x7a
,
0xf8
,
0x4f
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0x82
,
0xe9
,
0x
7d
,
0xb9
,
0xad
,
0x12
,
0x
00
,
0x00
,
// 12
66
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xdc
,
0x58
,
0x
dd
,
0x6e
,
0xdc
,
0x44
,
0x1
4
,
0xae
,
0xed
,
0xf5
,
0x6e
,
0xf6
,
0x6c
,
0x92
,
0xa6
,
0x93
,
0x34
,
0x98
,
0x10
,
0x45
,
0xab
,
0x11
,
0x
12
,
0x2b
,
0xa0
,
0x91
,
0x48
,
0x2b
,
0x44
,
0xe1
,
0x86
,
0x24
,
0x6d
,
0x95
,
0x95
,
0x8a
,
0x54
,
0x99
,
0x
82
,
0x50
,
0x11
,
0x48
,
0x5e
,
0x7b
,
0x12
,
0x2c
,
0x39
,
0xb6
,
0x63
,
0xcf
,
0x86
,
0x2c
,
0xf7
,
0xf4
,
0x
02
,
0xf1
,
0x0a
,
0x5c
,
0x72
,
0xcb
,
0x33
,
0xf1
,
0x06
,
0x5c
,
0xf0
,
0x02
,
0x68
,
0x7e
,
0xfc
,
0x33
,
0x
63
,
0x3b
,
0xda
,
0x05
,
0x6e
,
0xe0
,
0x26
,
0xda
,
0x39
,
0xf3
,
0xcd
,
0xcc
,
0x37
,
0xe7
,
0x7c
,
0x73
,
0x
ce
,
0x71
,
0x60
,
0xdb
,
0x4f
,
0xa2
,
0xc8
,
0xa3
,
0x24
,
0xf3
,
0xa2
,
0xf0
,
0x07
,
0x72
,
0x98
,
0x66
,
0x
09
,
0x4d
,
0x90
,
0x4d
,
0x17
,
0x29
,
0xc9
,
0xf1
,
0x9f
,
0x3d
,
0xd8
,
0x38
,
0xad
,
0x4f
,
0xa3
,
0x09
,
0x
dc
,
0x55
,
0xf0
,
0xd3
,
0xc0
,
0x31
,
0xc6
,
0xc6
,
0x64
,
0xe8
,
0xea
,
0x66
,
0x84
,
0x61
,
0x9d
,
0x26
,
0x
d4
,
0x8b
,
0x4e
,
0xbc
,
0xc8
,
0x8b
,
0x7d
,
0xe2
,
0x98
,
0x63
,
0x63
,
0x62
,
0xb9
,
0x8a
,
0x0d
,
0x8d
,
0x
61
,
0x14
,
0x90
,
0x19
,
0x3d
,
0x25
,
0x61
,
0x14
,
0xc6
,
0x17
,
0x8e
,
0xc5
,
0x21
,
0x75
,
0x13
,
0x7
a
,
0x
17
,
0xb6
,
0xa2
,
0xf0
,
0x6a
,
0x1e
,
0x06
,
0x1e
,
0x0d
,
0x93
,
0xd8
,
0x65
,
0x7f
,
0x9d
,
0xde
,
0xd8
,
0x
98
,
0x18
,
0x6e
,
0xc3
,
0x8e
,
0xde
,
0x87
,
0x7b
,
0x39
,
0xf5
,
0x66
,
0x61
,
0x14
,
0xd2
,
0xc5
,
0x33
,
0x
42
,
0x04
,
0xd8
,
0xe6
,
0xe0
,
0xe6
,
0x04
,
0x3a
,
0x00
,
0xf0
,
0x33
,
0xe2
,
0x51
,
0x72
,
0x1c
,
0x04
,
0x
99
,
0xd3
,
0xe7
,
0x97
,
0xa8
,
0x59
,
0x90
,
0x03
,
0x83
,
0x99
,
0xa4
,
0x3e
,
0xe0
,
0xbc
,
0x8a
,
0x21
,
0x
7a
,
0x0c
,
0x1b
,
0xb3
,
0x24
,
0xcb
,
0x92
,
0xef
,
0x5d
,
0xe2
,
0x27
,
0x59
,
0x90
,
0x3b
,
0x6b
,
0x63
,
0x
6b
,
0x32
,
0x3a
,
0xda
,
0x3e
,
0xe4
,
0x4e
,
0x3b
,
0x3c
,
0xa9
,
0xcd
,
0xb9
,
0x2a
,
0x12
,
0x7d
,
0x02
,
0x
9b
,
0xd3
,
0xf8
,
0xda
,
0x8b
,
0xc2
,
0xa0
,
0x58
,
0x3b
,
0xec
,
0x5e
,
0xab
,
0x41
,
0xd1
,
0x2e
,
0xf4
,
0x
73
,
0xea
,
0xd1
,
0x79
,
0xee
,
0xc0
,
0xd8
,
0x98
,
0xd8
,
0xae
,
0x1c
,
0xa1
,
0x0f
,
0x61
,
0x97
,
0x79
,
0x
3e
,
0xa7
,
0xcf
,
0x2b
,
0x8f
,
0xbc
,
0xc8
,
0x42
,
0x9f
,
0x38
,
0x23
,
0x7e
,
0xf9
,
0x8e
,
0x59
,
0xb6
,
0x
5f
,
0x4a
,
0xb2
,
0x30
,
0x09
,
0x9c
,
0x75
,
0x7e
,
0x41
,
0x39
,
0xe2
,
0x3e
,
0xe7
,
0x2b
,
0x9e
,
0xde
,
0x
a4
,
0x61
,
0x46
,
0x5e
,
0x86
,
0x97
,
0xc4
,
0xd9
,
0xe0
,
0x88
,
0x86
,
0x1d
,
0xed
,
0x80
,
0x1d
,
0xc6
,
0x
01
,
0xb9
,
0x71
,
0x36
,
0x39
,
0x40
,
0x0c
,
0xd0
,
0x1e
,
0xac
,
0xa5
,
0x19
,
0x99
,
0xf2
,
0x89
,
0xbb
,
0x
7c
,
0xa2
,
0x1c
,
0xb3
,
0x98
,
0x33
,
0xa9
,
0x14
,
0xb2
,
0xd8
,
0x12
,
0x31
,
0xaf
,
0x99
,
0xf0
,
0xef
,
0x
16
,
0xac
,
0xd7
,
0x1d
,
0xc1
,
0x96
,
0x78
,
0xbe
,
0x9f
,
0xcc
,
0x63
,
0xca
,
0x63
,
0x25
,
0x04
,
0x57
,
0x
37
,
0xa1
,
0x7d
,
0x18
,
0xe6
,
0xd4
,
0xcb
,
0x28
,
0xe7
,
0x2a
,
0x94
,
0x56
,
0x19
,
0x54
,
0xd1
,
0x7e
,
0x
e9
,
0x45
,
0x73
,
0x22
,
0xa5
,
0xa6
,
0x9b
,
0x55
,
0xa4
,
0xf0
,
0xa1
,
0x50
,
0x9b
,
0x6e
,
0x66
,
0x27
,
0x
32
,
0x9d
,
0x8a
,
0xdd
,
0x6c
,
0x71
,
0x62
,
0x69
,
0xd0
,
0x64
,
0x2b
,
0x36
,
0xea
,
0x37
,
0x64
,
0x5b
,
0x
86
,
0x41
,
0x86
,
0x75
,
0xa0
,
0x84
,
0xf5
,
0x6d
,
0xd8
,
0x28
,
0xb0
,
0x22
,
0x06
,
0x6b
,
0xfc
,
0x14
,
0x
d5
,
0xc8
,
0x64
,
0x4c
,
0xaa
,
0x30
,
0x0d
,
0x39
,
0xa4
,
0x66
,
0x61
,
0x3c
,
0xd3
,
0x8c
,
0x7c
,
0x5e
,
0x
d7
,
0x4d
,
0x65
,
0x60
,
0x81
,
0xca
,
0xb8
,
0x8f
,
0xa7
,
0x01
,
0x17
,
0xcb
,
0xd0
,
0x2d
,
0xc7
,
0x6d
,
0x
4f
,
0x7d
,
0xbd
,
0xfd
,
0xa9
,
0x97
,
0x22
,
0xd8
,
0xe8
,
0x12
,
0xc1
,
0xa6
,
0x2a
,
0x02
,
0xfc
,
0xda
,
0x
80
,
0xad
,
0xe3
,
0x3c
,
0x27
,
0x94
,
0xbb
,
0x40
,
0x86
,
0xf9
,
0x00
,
0x40
,
0x1c
,
0xce
,
0xaf
,
0x62
,
0x
88
,
0xab
,
0x54
,
0x16
,
0xb6
,
0xe1
,
0x8c
,
0x2e
,
0x84
,
0x33
,
0x4d
,
0xee
,
0xcc
,
0x72
,
0x2c
,
0xe6
,
0x
7c
,
0x31
,
0x67
,
0x15
,
0x73
,
0x7e
,
0x39
,
0x47
,
0xe8
,
0x77
,
0xf5
,
0x68
,
0x96
,
0x63
,
0xfc
,
0xa
b
,
0x
05
,
0xdb
,
0x4a
,
0x86
,
0x3b
,
0xf6
,
0x59
,
0x64
,
0xd0
,
0x23
,
0xe8
,
0x8b
,
0x5c
,
0xc0
,
0x79
,
0x8c
,
0x
8e
,
0xf6
,
0xe4
,
0x03
,
0x55
,
0xb0
,
0xa7
,
0x1c
,
0x71
,
0x76
,
0xc7
,
0x95
,
0x58
,
0xb6
,
0x4a
,
0xbc
,
0x
77
,
0xce
,
0xaf
,
0x63
,
0x95
,
0x90
,
0x36
,
0x5b
,
0x25
,
0xb0
,
0xe8
,
0x03
,
0xb0
,
0x33
,
0x92
,
0x7
a
,
0x0
b
,
0x4e
,
0x7c
,
0x74
,
0xf4
,
0x66
,
0xdb
,
0x22
,
0x97
,
0x01
,
0xce
,
0xee
,
0xb8
,
0x02
,
0xc9
,
0x0e
,
0x
f2
,
0xd2
,
0x94
,
0xc4
,
0x01
,
0xbf
,
0x50
,
0xc7
,
0x41
,
0xc7
,
0x1c
,
0xc1
,
0x0e
,
0x12
,
0x58
,
0x74
,
0x
08
,
0xbd
,
0x73
,
0x42
,
0x02
,
0x2e
,
0xd7
,
0xd1
,
0x91
,
0xd3
,
0xb6
,
0xe6
,
0x19
,
0x21
,
0x6c
,
0x05
,
0x
c7
,
0xa1
,
0x8f
,
0x99
,
0x3a
,
0x68
,
0x16
,
0x92
,
0x6b
,
0xa1
,
0xde
,
0xd1
,
0xd1
,
0x7e
,
0x3b
,
0x3
7
,
0x
81
,
0x39
,
0xbb
,
0xe3
,
0x96
,
0x78
,
0xc6
,
0xf0
,
0xd2
,
0x8b
,
0xbd
,
0x0b
,
0x91
,
0x3d
,
0x3b
,
0x18
,
0x
7e
,
0xc6
,
0x11
,
0x8c
,
0xa1
,
0xc0
,
0xa2
,
0x4d
,
0x30
,
0xe9
,
0x42
,
0xca
,
0xd4
,
0xa4
,
0x8b
,
0x93
,
0x
01
,
0xd8
,
0xd7
,
0xec
,
0x41
,
0xe1
,
0x3f
,
0x0c
,
0x2d
,
0x4e
,
0x62
,
0xa9
,
0x5e
,
0x41
,
0x8c
,
0xe5
,
0x
2a
,
0x88
,
0xb9
,
0x4a
,
0x05
,
0xb1
,
0xba
,
0x2a
,
0x48
,
0x95
,
0x3f
,
0x7b
,
0x4a
,
0xfe
,
0xd4
,
0x2b
,
0x
9f
,
0xdd
,
0x5e
,
0xf9
,
0xfc
,
0x79
,
0x96
,
0x91
,
0x58
,
0xa4
,
0xac
,
0xbe
,
0xcc
,
0x82
,
0x95
,
0x09
,
0x3
f
,
0x84
,
0x7b
,
0x6a
,
0x34
,
0x59
,
0x9e
,
0x3b
,
0x00
,
0xc8
,
0xe7
,
0x29
,
0xc9
,
0xd8
,
0x20
,
0x77
,
0x
8c
,
0xb1
,
0xc5
,
0x8a
,
0x56
,
0x65
,
0xc1
,
0x8f
,
0x35
,
0x2f
,
0x09
,
0x85
,
0x36
,
0x18
,
0x19
,
0x4d
,
0x
46
,
0xf8
,
0x0b
,
0x6d
,
0xa9
,
0x90
,
0xe9
,
0x0a
,
0x05
,
0x7f
,
0x47
,
0xc6
,
0x4a
,
0xe6
,
0x5f
,
0x19
,
0x
b8
,
0x57
,
0x80
,
0x9a
,
0x42
,
0x5e
,
0x61
,
0xd7
,
0x7a
,
0x86
,
0x32
,
0xd5
,
0x0c
,
0x85
,
0x7f
,
0xd4
,
0x
45
,
0x21
,
0x14
,
0xff
,
0xef
,
0xec
,
0xbe
,
0x7c
,
0xd5
,
0xc0
,
0xdf
,
0x68
,
0xa1
,
0x62
,
0x8f
,
0x88
,
0x
6d
,
0xcd
,
0x70
,
0x2f
,
0x17
,
0xa9
,
0xf0
,
0xb7
,
0xed
,
0x96
,
0x63
,
0xe6
,
0xaa
,
0x54
,
0xa6
,
0x31
,
0x
6b
,
0x62
,
0xb8
,
0x62
,
0xc0
,
0xf4
,
0x74
,
0x9d
,
0x44
,
0xf3
,
0x4b
,
0x76
,
0x8e
,
0xc5
,
0xf4
,
0x24
,
0x
46
,
0xf8
,
0x6b
,
0xb8
,
0xdf
,
0xfa
,
0xde
,
0x56
,
0xb8
,
0x67
,
0xad
,
0x99
,
0x31
,
0x95
,
0x66
,
0x0
6
,
0x
bf
,
0x36
,
0x61
,
0xc7
,
0x25
,
0x3e
,
0x09
,
0x53
,
0xfa
,
0x77
,
0x3b
,
0x3d
,
0xb5
,
0x93
,
0x32
,
0x1b
,
0x
9d
,
0x94
,
0x56
,
0xbe
,
0xad
,
0x66
,
0xf9
,
0xae
,
0x87
,
0xa1
,
0xa7
,
0x85
,
0xa1
,
0x2a
,
0x8f
,
0xb
6
,
0x
52
,
0x1e
,
0xf7
,
0x61
,
0xf8
,
0xa2
,
0x2c
,
0x6c
,
0x7d
,
0x51
,
0xd8
,
0x4a
,
0x43
,
0x55
,
0x92
,
0x06
,
0x
5d
,
0x25
,
0x69
,
0x4d
,
0x2b
,
0x49
,
0xbf
,
0xe8
,
0x62
,
0x92
,
0x55
,
0x69
,
0x79
,
0x3f
,
0x20
,
0xe8
,
0x
79
,
0x95
,
0x07
,
0xf8
,
0x6f
,
0xe5
,
0x66
,
0x56
,
0xe7
,
0xcd
,
0x7a
,
0xca
,
0xcd
,
0x4a
,
0xee
,
0x76
,
0x
8d
,
0x3b
,
0x7e
,
0x0e
,
0x3b
,
0x2d
,
0xf4
,
0x72
,
0xf4
,
0x08
,
0x06
,
0x99
,
0xec
,
0x25
,
0x0d
,
0xde
,
0x4
b
,
0xee
,
0xb5
,
0xe7
,
0x68
,
0xde
,
0x52
,
0x16
,
0x50
,
0xfc
,
0x29
,
0x8b
,
0xfa
,
0x95
,
0x02
,
0x99
,
0x
c6
,
0xe7
,
0xc9
,
0xf2
,
0xb7
,
0xc5
,
0xbf
,
0x59
,
0xf0
,
0x96
,
0x4b
,
0x52
,
0x35
,
0xdd
,
0x88
,
0xfc
,
0x
c5
,
0x77
,
0xaa
,
0x6e
,
0x67
,
0x28
,
0xb7
,
0xfb
,
0xff
,
0x7e
,
0x17
,
0x54
,
0xf5
,
0x60
,
0x4d
,
0xa9
,
0x
07
,
0x2d
,
0x3e
,
0x1d
,
0xb6
,
0x2b
,
0x48
,
0xeb
,
0x8d
,
0xa1
,
0xd1
,
0x1b
,
0x37
,
0xbf
,
0x3d
,
0x46
,
0x
cb
,
0x7e
,
0x7b
,
0xe0
,
0x53
,
0xb8
,
0xdf
,
0x16
,
0xf2
,
0x9c
,
0xf9
,
0x52
,
0x23
,
0x52
,
0x94
,
0x96
,
0x
86
,
0x1d
,
0x7f
,
0x05
,
0xfb
,
0xb7
,
0x04
,
0x3d
,
0x47
,
0x1f
,
0x31
,
0xed
,
0x9e
,
0x27
,
0x85
,
0x16
,
0x
b1
,
0xe4
,
0x75
,
0xcb
,
0x1a
,
0x57
,
0x2c
,
0xc0
,
0x67
,
0xe0
,
0xe8
,
0xf4
,
0x4e
,
0x16
,
0xf2
,
0x35
,
0x
77
,
0x69
,
0xa9
,
0x7c
,
0x29
,
0x66
,
0xfd
,
0xa5
,
0xbc
,
0x82
,
0xdd
,
0xe6
,
0x4e
,
0x3c
,
0x76
,
0xc5
,
0x
0b
,
0x35
,
0x6a
,
0x2f
,
0xb4
,
0xda
,
0xdb
,
0x6c
,
0xdf
,
0xdb
,
0xaa
,
0xef
,
0xfd
,
0x0e
,
0x6c
,
0xeb
,
0x
77
,
0x99
,
0x3e
,
0xc9
,
0xd1
,
0x16
,
0x58
,
0xd3
,
0x27
,
0x85
,
0xd7
,
0xd8
,
0x4f
,
0xfc
,
0x93
,
0xc1
,
0x
3c
,
0x75
,
0xd5
,
0xf2
,
0x08
,
0x25
,
0x97
,
0x7f
,
0x96
,
0x57
,
0x2a
,
0xd6
,
0x56
,
0x3b
,
0xeb
,
0x5e
,
0x
9d
,
0xf5
,
0x0d
,
0x1c
,
0x74
,
0x71
,
0x91
,
0x1e
,
0x5e
,
0x9e
,
0xcd
,
0x6a
,
0xfe
,
0x3a
,
0x83
,
0x37
,
0x
74
,
0x7f
,
0x15
,
0x89
,
0xeb
,
0x81
,
0x9e
,
0xb8
,
0x5a
,
0x45
,
0x5c
,
0x66
,
0xac
,
0x6f
,
0x9b
,
0x51
,
0x
5d
,
0x39
,
0x43
,
0xdf
,
0xd6
,
0x4c
,
0x3c
,
0x65
,
0xfb
,
0xb7
,
0x31
,
0x45
,
0xef
,
0x41
,
0x5f
,
0xa0
,
0x
e4
,
0xb7
,
0x40
,
0x2b
,
0x4f
,
0x09
,
0xc1
,
0x3f
,
0x9b
,
0xcd
,
0x7d
,
0x4e
,
0x93
,
0xf8
,
0x3c
,
0xbc
,
0x
f8
,
0xcf
,
0xf6
,
0xaa
,
0xb5
,
0x8c
,
0xd7
,
0x57
,
0x33
,
0x9e
,
0xd6
,
0xc5
,
0x0e
,
0x9a
,
0x5d
,
0xec
,
0x
03
,
0x96
,
0x74
,
0x54
,
0x6f
,
0x88
,
0x8f
,
0xb2
,
0xb2
,
0x05
,
0x32
,
0x38
,
0x65
,
0x31
,
0x98
,
0xf5
,
0x
f9
,
0xbf
,
0x9f
,
0x1e
,
0xfe
,
0x15
,
0x00
,
0x00
,
0xff
,
0xff
,
0x44
,
0xb2
,
0x25
,
0xe1
,
0x95
,
0x12
,
0x00
,
0x00
,
}
plugin/dapp/collateralize/types/errors.go
View file @
2f57d651
...
...
@@ -9,7 +9,6 @@ import "errors"
// Errors for lottery
var
(
ErrRiskParam
=
errors
.
New
(
"ErrRiskParam"
)
ErrCollateralizeRepeatHash
=
errors
.
New
(
"ErrCollateralizeRepeatHash"
)
ErrCollateralizeStatus
=
errors
.
New
(
"ErrCollateralizeStatus"
)
ErrCollateralizeExceedDebtCeiling
=
errors
.
New
(
"ErrCollateralizeExceedDebtCeiling"
)
ErrPriceInvalid
=
errors
.
New
(
"ErrPriceInvalid"
)
...
...
plugin/dapp/collateralize/types/tx.go
View file @
2f57d651
...
...
@@ -6,14 +6,14 @@ package types
// CollateralizeCreateTx for construction
type
CollateralizeCreateTx
struct
{
TotalBalance
in
t64
`json:"totalBalance"`
TotalBalance
floa
t64
`json:"totalBalance"`
Fee
int64
`json:"fee"`
}
// CollateralizeBorrowTx for construction
type
CollateralizeBorrowTx
struct
{
CollateralizeID
string
`json:"collateralizeId"`
Value
in
t64
`json:"value"`
Value
floa
t64
`json:"value"`
Fee
int64
`json:"fee"`
}
...
...
@@ -28,13 +28,13 @@ type CollateralizeRepayTx struct {
type
CollateralizeAppendTx
struct
{
CollateralizeID
string
`json:"collateralizeId"`
RecordID
string
`json:"recordID"`
Value
in
t64
`json:"value"`
Value
floa
t64
`json:"value"`
Fee
int64
`json:"fee"`
}
// CollateralizeFeedTx for construction
type
CollateralizeFeedTx
struct
{
Price
[]
float
32
`json:"price"`
Price
[]
float
64
`json:"price"`
Volume
[]
int64
`json:"volume"`
Fee
int64
`json:"fee"`
}
...
...
@@ -42,16 +42,16 @@ type CollateralizeFeedTx struct {
// CollateralizeRetrieveTx for construction
type
CollateralizeRetrieveTx
struct
{
CollateralizeID
string
`json:"collateralizeId"`
Balance
in
t64
`json:"Balance"`
Balance
floa
t64
`json:"Balance"`
Fee
int64
`json:"fee"`
}
// CollateralizeManageTx for construction
type
CollateralizeManageTx
struct
{
DebtCeiling
in
t64
`json:"debtCeiling"`
LiquidationRatio
float
32
`json:"liquidationRatio"`
StabilityFeeRatio
float
32
`json:"stabilityFeeRatio"`
DebtCeiling
floa
t64
`json:"debtCeiling"`
LiquidationRatio
float
64
`json:"liquidationRatio"`
StabilityFeeRatio
float
64
`json:"stabilityFeeRatio"`
Period
int64
`json:"period"`
CollTotalBalance
int64
`json:"collT
otalBalance"`
TotalBalance
float64
`json:"t
otalBalance"`
Fee
int64
`json:"fee"`
}
plugin/dapp/issuance/commands/cmd.go
View file @
2f57d651
...
...
@@ -43,11 +43,11 @@ func IssuanceCreateRawTxCmd() *cobra.Command {
}
func
addIssuanceCreateFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
Uin
t64P
(
"balance"
,
"b"
,
0
,
"balance"
)
cmd
.
Flags
()
.
Floa
t64P
(
"balance"
,
"b"
,
0
,
"balance"
)
cmd
.
MarkFlagRequired
(
"balance"
)
cmd
.
Flags
()
.
Uin
t64P
(
"debtCeiling"
,
"d"
,
0
,
"debtCeiling"
)
cmd
.
Flags
()
.
Floa
t64P
(
"debtCeiling"
,
"d"
,
0
,
"debtCeiling"
)
cmd
.
Flags
()
.
Float32P
(
"liquidationRatio"
,
"l"
,
0
,
"liquidationRatio"
)
cmd
.
Flags
()
.
Uint64
P
(
"period"
,
"p"
,
0
,
"period"
)
cmd
.
Flags
()
.
Float32
P
(
"period"
,
"p"
,
0
,
"period"
)
}
func
IssuanceCreate
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
...
...
@@ -58,15 +58,15 @@ func IssuanceCreate(cmd *cobra.Command, args []string) {
}
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
balance
,
_
:=
cmd
.
Flags
()
.
Get
Uin
t64
(
"balance"
)
debtCeiling
,
_
:=
cmd
.
Flags
()
.
Get
Uin
t64
(
"debtCeiling"
)
balance
,
_
:=
cmd
.
Flags
()
.
Get
Floa
t64
(
"balance"
)
debtCeiling
,
_
:=
cmd
.
Flags
()
.
Get
Floa
t64
(
"debtCeiling"
)
liquidationRatio
,
_
:=
cmd
.
Flags
()
.
GetFloat32
(
"liquidationRatio"
)
period
,
_
:=
cmd
.
Flags
()
.
GetUint64
(
"period"
)
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
cfg
.
ExecName
(
pkt
.
IssuanceX
),
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
)),
}
...
...
@@ -89,7 +89,7 @@ func IssuanceDebtRawTxCmd() *cobra.Command {
func
addIssuanceDebtFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"issuanceID"
,
"g"
,
""
,
"issuance ID"
)
cmd
.
MarkFlagRequired
(
"issuanceID"
)
cmd
.
Flags
()
.
Uin
t64P
(
"value"
,
"v"
,
0
,
"value"
)
cmd
.
Flags
()
.
Floa
t64P
(
"value"
,
"v"
,
0
,
"value"
)
cmd
.
MarkFlagRequired
(
"value"
)
}
...
...
@@ -102,12 +102,12 @@ func IssuanceDebt(cmd *cobra.Command, args []string) {
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
issuanceID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"issuanceID"
)
value
,
_
:=
cmd
.
Flags
()
.
Get
Uin
t64
(
"value"
)
value
,
_
:=
cmd
.
Flags
()
.
Get
Floa
t64
(
"value"
)
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
cfg
.
ExecName
(
pkt
.
IssuanceX
),
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
...
...
plugin/dapp/issuance/executor/exec_del_local.go
View file @
2f57d651
...
...
@@ -81,4 +81,9 @@ func (c *Issuance) ExecDelLocal_Feed(payload *pty.IssuanceFeed, tx *types.Transa
// ExecDelLocal_Close Action
func
(
c
*
Issuance
)
ExecDelLocal_Close
(
payload
*
pty
.
IssuanceClose
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
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
plugin/dapp/issuance/executor/exec_local.go
View file @
2f57d651
...
...
@@ -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
)
{
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
)
}
plugin/dapp/issuance/executor/issuance.go
View file @
2f57d651
...
...
@@ -144,7 +144,7 @@ func (c *Issuance) deleteIssuanceRecordStatus(status int32, index int64) (kvs []
return
kvs
}
func
(
c
*
Issuance
)
addIssuancePriceRecord
(
recordTime
int64
,
price
float
32
)
(
kvs
[]
*
types
.
KeyValue
)
{
func
(
c
*
Issuance
)
addIssuancePriceRecord
(
recordTime
int64
,
price
float
64
)
(
kvs
[]
*
types
.
KeyValue
)
{
key
:=
calcIssuancePriceKey
(
string
(
recordTime
))
record
:=
&
pty
.
IssuanceAssetPriceRecord
{
...
...
plugin/dapp/issuance/executor/issuancedb.go
View file @
2f57d651
...
...
@@ -13,6 +13,7 @@ import (
"github.com/33cn/chain33/types"
pty
"github.com/33cn/plugin/plugin/dapp/issuance/types"
tokenE
"github.com/33cn/plugin/plugin/dapp/token/executor"
"math"
)
// List control
...
...
@@ -25,7 +26,7 @@ const (
const
(
Coin
=
types
.
Coin
// 1e8
DefaultDebtCeiling
=
100000
// 默认借贷限额
DefaultDebtCeiling
=
100000
*
Coin
// 默认借贷限额
DefaultLiquidationRatio
=
0.25
// 默认质押比
DefaultPeriod
=
3600
*
24
*
365
// 默认合约限期
PriceWarningRate
=
1.3
// 价格提前预警率
...
...
@@ -289,8 +290,8 @@ func (action *Action) GetIndex() int64 {
return
action
.
height
*
types
.
MaxTxsPerBlock
+
int64
(
action
.
index
)
}
func
getLatestLiquidationPrice
(
issu
*
pty
.
Issuance
)
float
32
{
var
latest
float
32
func
getLatestLiquidationPrice
(
issu
*
pty
.
Issuance
)
float
64
{
var
latest
float
64
for
_
,
collRecord
:=
range
issu
.
DebtRecords
{
if
collRecord
.
LiquidationPrice
>
latest
{
latest
=
collRecord
.
LiquidationPrice
...
...
@@ -385,7 +386,7 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt
}
// 检查ccny余额
if
!
action
.
CheckExecTokenAccount
(
action
.
fromaddr
,
create
.
TotalBalance
*
Coin
,
false
)
{
if
!
action
.
CheckExecTokenAccount
(
action
.
fromaddr
,
create
.
TotalBalance
,
false
)
{
return
nil
,
types
.
ErrInsufficientBalance
}
...
...
@@ -398,7 +399,7 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt
}
// 冻结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
{
clog
.
Error
(
"IssuanceCreate.Frozen"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
create
.
TotalBalance
)
return
nil
,
err
...
...
@@ -445,20 +446,19 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt
}
// 根据最近抵押物价格计算需要冻结的BTY数量
func
getBtyNumToFrozen
(
value
int64
,
price
float
32
,
ratio
float32
)
(
int64
,
error
)
{
func
getBtyNumToFrozen
(
value
int64
,
price
float
64
,
ratio
float64
)
(
int64
,
error
)
{
if
price
==
0
{
clog
.
Error
(
"Bty price should greate to 0"
)
return
0
,
pty
.
ErrPriceInvalid
}
btyValue
:=
float32
(
value
)
/
ratio
btyNum
:=
int64
(
btyValue
/
price
)
+
1
return
btyNum
,
nil
valueReal
:=
float64
(
value
)
/
1e8
btyValue
:=
valueReal
/
(
price
*
ratio
)
return
int64
(
math
.
Trunc
((
btyValue
+
0.0000001
)
*
1e4
))
*
1e4
,
nil
}
// 获取最近抵押物价格
func
getLatestPrice
(
db
dbm
.
KV
)
(
float
32
,
error
)
{
func
getLatestPrice
(
db
dbm
.
KV
)
(
float
64
,
error
)
{
data
,
err
:=
db
.
Get
(
PriceKey
())
if
err
!=
nil
{
clog
.
Error
(
"getLatestPrice"
,
"get"
,
err
)
...
...
@@ -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
)
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
{
clog
.
Error
(
"IssuanceDebt.ExecTransfer"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
btyFrozen
)
return
nil
,
err
...
...
@@ -573,7 +573,7 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro
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
{
clog
.
Error
(
"IssuanceDebt.Frozen"
,
"addr"
,
issu
.
IssuerAddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
btyFrozen
)
return
nil
,
err
...
...
@@ -582,7 +582,7 @@ func (action *Action) IssuanceDebt(debt *pty.IssuanceDebt) (*types.Receipt, erro
kv
=
append
(
kv
,
receipt
.
KV
...
)
// 借出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
{
clog
.
Error
(
"IssuanceDebt.ExecTokenTransfer"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
debt
.
Value
)
return
nil
,
err
...
...
@@ -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
)
return
nil
,
types
.
ErrNoBalance
}
// 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
{
clog
.
Error
(
"IssuanceRepay.ExecTokenTransfer"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
debtRecord
.
DebtValue
)
return
nil
,
err
...
...
@@ -678,7 +678,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e
kv
=
append
(
kv
,
receipt
.
KV
...
)
// 冻结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
{
clog
.
Error
(
"IssuanceCreate.Frozen"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
debtRecord
.
DebtValue
)
return
nil
,
err
...
...
@@ -687,7 +687,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e
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
{
clog
.
Error
(
"IssuanceRepay.ExecTransferFrozen"
,
"addr"
,
issu
.
IssuerAddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
debtRecord
.
CollateralValue
)
return
nil
,
err
...
...
@@ -720,7 +720,7 @@ func (action *Action) IssuanceRepay(repay *pty.IssuanceRepay) (*types.Receipt, e
}
// 系统清算
func
(
action
*
Action
)
systemLiquidation
(
issu
*
pty
.
Issuance
,
price
float
32
)
(
*
types
.
Receipt
,
error
)
{
func
(
action
*
Action
)
systemLiquidation
(
issu
*
pty
.
Issuance
,
price
float
64
)
(
*
types
.
Receipt
,
error
)
{
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
...
...
@@ -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
{
clog
.
Error
(
"systemLiquidation"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
debtRecord
.
CollateralValue
,
"err"
,
err
)
continue
...
...
@@ -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
{
clog
.
Error
(
"systemLiquidation"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
debtRecord
.
CollateralValue
,
"err"
,
err
)
continue
...
...
@@ -840,8 +840,8 @@ func (action *Action) expireLiquidation(issu *pty.Issuance) (*types.Receipt, err
}
// 价格计算策略
func
pricePolicy
(
feed
*
pty
.
IssuanceFeed
)
float
32
{
var
totalPrice
float
32
func
pricePolicy
(
feed
*
pty
.
IssuanceFeed
)
float
64
{
var
totalPrice
float
64
var
totalVolume
int64
for
_
,
volume
:=
range
feed
.
Volume
{
totalVolume
+=
volume
...
...
@@ -852,7 +852,7 @@ func pricePolicy(feed *pty.IssuanceFeed) float32 {
return
0
}
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
...
...
@@ -955,9 +955,9 @@ func (action *Action) IssuanceClose(close *pty.IssuanceClose) (*types.Receipt, e
}
// 解冻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
{
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
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
...
...
plugin/dapp/issuance/proto/issuance.proto
View file @
2f57d651
...
...
@@ -7,13 +7,13 @@ message Issuance {
string
issuanceId
=
1
;
//发行ID,一期发行对应一个ID
int64
totalBalance
=
2
;
//当期发行的总金额(ccny)
int64
debtCeiling
=
3
;
//单用户可借出的限额(ccny)
float
liquidationRatio
=
4
;
//清算比例
double
liquidationRatio
=
4
;
//清算比例
int64
collateralValue
=
5
;
//抵押物总数量(bty)
int64
debtValue
=
6
;
//产生的ccny数量
repeated
DebtRecord
debtRecords
=
7
;
//大户抵押记录
repeated
DebtRecord
invalidRecords
=
8
;
//大户抵押记录
int32
status
=
9
;
//当期发行的状态,是否关闭
float
latestLiquidationPrice
=
10
;
//最高清算价格
double
latestLiquidationPrice
=
10
;
//最高清算价格
int64
period
=
11
;
//发行最大期限
int64
latestExpireTime
=
12
;
//最近超期时间
int64
createTime
=
13
;
//创建时间
...
...
@@ -28,9 +28,9 @@ message DebtRecord {
string
accountAddr
=
1
;
//抵押人地址
int64
startTime
=
2
;
//抵押时间
int64
collateralValue
=
3
;
//抵押物价值(bty)
float
collateralPrice
=
4
;
//抵押物价格
double
collateralPrice
=
4
;
//抵押物价格
int64
debtValue
=
5
;
//债务价值(ccny)
float
liquidationPrice
=
6
;
//抵押物清算价格
double
liquidationPrice
=
6
;
//抵押物清算价格
int32
status
=
7
;
//抵押状态,是否被清算
int64
liquidateTime
=
8
;
//清算时间
int64
expireTime
=
9
;
//超时清算时间
...
...
@@ -44,7 +44,7 @@ message DebtRecord {
// 资产价格记录
message
IssuanceAssetPriceRecord
{
int64
recordTime
=
1
;
//价格记录时间
float
btyPrice
=
2
;
//bty价格
double
btyPrice
=
2
;
//bty价格
}
// action
...
...
@@ -68,7 +68,7 @@ message IssuanceManage {
message
IssuanceCreate
{
int64
totalBalance
=
1
;
//发行总金额
int64
debtCeiling
=
2
;
//单用户可借出的限额(ccny)
float
liquidationRatio
=
3
;
//清算比例
double
liquidationRatio
=
3
;
//清算比例
int64
period
=
4
;
//发行最大期限
}
...
...
@@ -86,9 +86,9 @@ message IssuanceRepay {
// 喂价
message
IssuanceFeed
{
int32
collType
=
1
;
//抵押物价格类型(1,bty,2,btc,3,eth...)
repeated
float
price
=
2
;
//喂价
repeated
int64
volume
=
3
;
//成交量
int32
collType
=
1
;
//抵押物价格类型(1,bty,2,btc,3,eth...)
repeated
double
price
=
2
;
//喂价
repeated
int64
volume
=
3
;
//成交量
}
// 借贷关闭
...
...
@@ -106,7 +106,7 @@ message ReceiptIssuance {
int64
index
=
6
;
int64
preIndex
=
7
;
int64
recordTime
=
8
;
//价格记录时间
float
btyPrice
=
9
;
//bty价格
double
btyPrice
=
9
;
//bty价格
}
// exec_local 抵押记录信息
...
...
@@ -132,7 +132,7 @@ message RepIssuanceCurrentInfo {
int32
status
=
1
;
//当期发行的状态,是否关闭
int64
totalBalance
=
2
;
//当期发行总金额(ccny)
int64
debtCeiling
=
3
;
//单用户可借出的限额(ccny)
float
liquidationRatio
=
4
;
//清算比例
double
liquidationRatio
=
4
;
//清算比例
int64
balance
=
5
;
//剩余可借贷金额(ccny)
int64
collateralValue
=
6
;
//抵押物总数量(bty)
int64
debtValue
=
7
;
//产生的ccny数量
...
...
@@ -195,5 +195,5 @@ message RepIssuanceDebtInfo {
// 返回最新抵押物价格
message
RepIssuancePrice
{
float
price
=
1
;
//当前抵押物最新价格
double
price
=
1
;
//当前抵押物最新价格
}
\ No newline at end of file
plugin/dapp/issuance/types/issuance.go
View file @
2f57d651
...
...
@@ -6,6 +6,7 @@ package types
import
(
"encoding/json"
"math"
"reflect"
"github.com/33cn/chain33/common/address"
...
...
@@ -143,8 +144,8 @@ func CreateRawIssuanceCreateTx(cfg *types.Chain33Config, parm *IssuanceCreateTx)
}
v
:=
&
IssuanceCreate
{
TotalBalance
:
parm
.
TotalBalance
,
DebtCeiling
:
parm
.
DebtCeiling
,
TotalBalance
:
int64
(
math
.
Trunc
((
parm
.
TotalBalance
+
0.0000001
)
*
1e4
))
*
1e4
,
DebtCeiling
:
int64
(
math
.
Trunc
((
parm
.
DebtCeiling
+
0.0000001
)
*
1e4
))
*
1e4
,
LiquidationRatio
:
parm
.
LiquidationRatio
,
Period
:
parm
.
Period
,
}
...
...
@@ -175,7 +176,7 @@ func CreateRawIssuanceDebtTx(cfg *types.Chain33Config, parm *IssuanceDebtTx) (*t
v
:=
&
IssuanceDebt
{
IssuanceId
:
parm
.
IssuanceID
,
Value
:
parm
.
Value
,
Value
:
int64
(
math
.
Trunc
((
parm
.
Value
+
0.0000001
)
*
1e4
))
*
1e4
,
}
debt
:=
&
IssuanceAction
{
Ty
:
IssuanceActionDebt
,
...
...
plugin/dapp/issuance/types/issuance.pb.go
View file @
2f57d651
...
...
@@ -25,13 +25,13 @@ type Issuance struct {
IssuanceId
string
`protobuf:"bytes,1,opt,name=issuanceId,proto3" json:"issuanceId,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"`
LiquidationRatio
float
32
`protobuf:"fixed32
,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
LiquidationRatio
float
64
`protobuf:"fixed64
,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,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"`
DebtRecords
[]
*
DebtRecord
`protobuf:"bytes,7,rep,name=debtRecords,proto3" json:"debtRecords,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"`
LatestLiquidationPrice
float
32
`protobuf:"fixed32
,10,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,omitempty"`
LatestLiquidationPrice
float
64
`protobuf:"fixed64
,10,opt,name=latestLiquidationPrice,proto3" json:"latestLiquidationPrice,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"`
CreateTime
int64
`protobuf:"varint,13,opt,name=createTime,proto3" json:"createTime,omitempty"`
...
...
@@ -90,7 +90,7 @@ func (m *Issuance) GetDebtCeiling() int64 {
return
0
}
func
(
m
*
Issuance
)
GetLiquidationRatio
()
float
32
{
func
(
m
*
Issuance
)
GetLiquidationRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationRatio
}
...
...
@@ -132,7 +132,7 @@ func (m *Issuance) GetStatus() int32 {
return
0
}
func
(
m
*
Issuance
)
GetLatestLiquidationPrice
()
float
32
{
func
(
m
*
Issuance
)
GetLatestLiquidationPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
LatestLiquidationPrice
}
...
...
@@ -193,9 +193,9 @@ type DebtRecord struct {
AccountAddr
string
`protobuf:"bytes,1,opt,name=accountAddr,proto3" json:"accountAddr,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"`
CollateralPrice
float
32
`protobuf:"fixed32
,4,opt,name=collateralPrice,proto3" json:"collateralPrice,omitempty"`
CollateralPrice
float
64
`protobuf:"fixed64
,4,opt,name=collateralPrice,proto3" json:"collateralPrice,omitempty"`
DebtValue
int64
`protobuf:"varint,5,opt,name=debtValue,proto3" json:"debtValue,omitempty"`
LiquidationPrice
float
32
`protobuf:"fixed32
,6,opt,name=liquidationPrice,proto3" json:"liquidationPrice,omitempty"`
LiquidationPrice
float
64
`protobuf:"fixed64
,6,opt,name=liquidationPrice,proto3" json:"liquidationPrice,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"`
ExpireTime
int64
`protobuf:"varint,9,opt,name=expireTime,proto3" json:"expireTime,omitempty"`
...
...
@@ -255,7 +255,7 @@ func (m *DebtRecord) GetCollateralValue() int64 {
return
0
}
func
(
m
*
DebtRecord
)
GetCollateralPrice
()
float
32
{
func
(
m
*
DebtRecord
)
GetCollateralPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
CollateralPrice
}
...
...
@@ -269,7 +269,7 @@ func (m *DebtRecord) GetDebtValue() int64 {
return
0
}
func
(
m
*
DebtRecord
)
GetLiquidationPrice
()
float
32
{
func
(
m
*
DebtRecord
)
GetLiquidationPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationPrice
}
...
...
@@ -335,7 +335,7 @@ func (m *DebtRecord) GetPreIndex() int64 {
// 资产价格记录
type
IssuanceAssetPriceRecord
struct
{
RecordTime
int64
`protobuf:"varint,1,opt,name=recordTime,proto3" json:"recordTime,omitempty"`
BtyPrice
float
32
`protobuf:"fixed32
,2,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"`
BtyPrice
float
64
`protobuf:"fixed64
,2,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -373,7 +373,7 @@ func (m *IssuanceAssetPriceRecord) GetRecordTime() int64 {
return
0
}
func
(
m
*
IssuanceAssetPriceRecord
)
GetBtyPrice
()
float
32
{
func
(
m
*
IssuanceAssetPriceRecord
)
GetBtyPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
BtyPrice
}
...
...
@@ -572,7 +572,7 @@ func (m *IssuanceManage) GetSuperAddrs() []string {
type
IssuanceCreate
struct
{
TotalBalance
int64
`protobuf:"varint,1,opt,name=totalBalance,proto3" json:"totalBalance,omitempty"`
DebtCeiling
int64
`protobuf:"varint,2,opt,name=debtCeiling,proto3" json:"debtCeiling,omitempty"`
LiquidationRatio
float
32
`protobuf:"fixed32
,3,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
LiquidationRatio
float
64
`protobuf:"fixed64
,3,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
Period
int64
`protobuf:"varint,4,opt,name=period,proto3" json:"period,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
...
...
@@ -618,7 +618,7 @@ func (m *IssuanceCreate) GetDebtCeiling() int64 {
return
0
}
func
(
m
*
IssuanceCreate
)
GetLiquidationRatio
()
float
32
{
func
(
m
*
IssuanceCreate
)
GetLiquidationRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationRatio
}
...
...
@@ -731,7 +731,7 @@ func (m *IssuanceRepay) GetDebtId() string {
// 喂价
type
IssuanceFeed
struct
{
CollType
int32
`protobuf:"varint,1,opt,name=collType,proto3" json:"collType,omitempty"`
Price
[]
float
32
`protobuf:"fixed32
,2,rep,packed,name=price,proto3" json:"price,omitempty"`
Price
[]
float
64
`protobuf:"fixed64
,2,rep,packed,name=price,proto3" json:"price,omitempty"`
Volume
[]
int64
`protobuf:"varint,3,rep,packed,name=volume,proto3" json:"volume,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
...
...
@@ -770,7 +770,7 @@ func (m *IssuanceFeed) GetCollType() int32 {
return
0
}
func
(
m
*
IssuanceFeed
)
GetPrice
()
[]
float
32
{
func
(
m
*
IssuanceFeed
)
GetPrice
()
[]
float
64
{
if
m
!=
nil
{
return
m
.
Price
}
...
...
@@ -834,7 +834,7 @@ type ReceiptIssuance struct {
Index
int64
`protobuf:"varint,6,opt,name=index,proto3" json:"index,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"`
BtyPrice
float
32
`protobuf:"fixed32
,9,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"`
BtyPrice
float
64
`protobuf:"fixed64
,9,opt,name=btyPrice,proto3" json:"btyPrice,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -921,7 +921,7 @@ func (m *ReceiptIssuance) GetRecordTime() int64 {
return
0
}
func
(
m
*
ReceiptIssuance
)
GetBtyPrice
()
float
32
{
func
(
m
*
ReceiptIssuance
)
GetBtyPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
BtyPrice
}
...
...
@@ -1077,7 +1077,7 @@ type RepIssuanceCurrentInfo struct {
Status
int32
`protobuf:"varint,1,opt,name=status,proto3" json:"status,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"`
LiquidationRatio
float
32
`protobuf:"fixed32
,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,omitempty"`
LiquidationRatio
float
64
`protobuf:"fixed64
,4,opt,name=liquidationRatio,proto3" json:"liquidationRatio,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"`
DebtValue
int64
`protobuf:"varint,7,opt,name=debtValue,proto3" json:"debtValue,omitempty"`
...
...
@@ -1135,7 +1135,7 @@ func (m *RepIssuanceCurrentInfo) GetDebtCeiling() int64 {
return
0
}
func
(
m
*
RepIssuanceCurrentInfo
)
GetLiquidationRatio
()
float
32
{
func
(
m
*
RepIssuanceCurrentInfo
)
GetLiquidationRatio
()
float
64
{
if
m
!=
nil
{
return
m
.
LiquidationRatio
}
...
...
@@ -1602,7 +1602,7 @@ func (m *RepIssuanceDebtInfo) GetRecord() *DebtRecord {
// 返回最新抵押物价格
type
RepIssuancePrice
struct
{
Price
float
32
`protobuf:"fixed32
,1,opt,name=price,proto3" json:"price,omitempty"`
Price
float
64
`protobuf:"fixed64
,1,opt,name=price,proto3" json:"price,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -1633,7 +1633,7 @@ func (m *RepIssuancePrice) XXX_DiscardUnknown() {
var
xxx_messageInfo_RepIssuancePrice
proto
.
InternalMessageInfo
func
(
m
*
RepIssuancePrice
)
GetPrice
()
float
32
{
func
(
m
*
RepIssuancePrice
)
GetPrice
()
float
64
{
if
m
!=
nil
{
return
m
.
Price
}
...
...
@@ -1683,7 +1683,7 @@ var fileDescriptor_7110f4228953d675 = []byte{
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
,
0x5c
,
0xaa
,
0x26
,
0xf6
,
0x09
,
0x1c
,
0xc5
,
0xd1
,
0xbb
,
0x55
,
0x14
,
0xfa
,
0x22
,
0x4a
,
0x96
,
0x1e
,
0xfe
,
0x75
,
0x7a
,
0x53
,
0x63
,
0x66
,
0x7
a
,
0x2d
,
0x3b
,
0x9b
,
0xc1
,
0x61
,
0x90
,
0xc4
,
0xb1
,
0x2f
,
0xfe
,
0x75
,
0x7a
,
0x53
,
0x63
,
0x66
,
0x7
8
,
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
,
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
,
...
...
@@ -1718,7 +1718,7 @@ var fileDescriptor_7110f4228953d675 = []byte{
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
,
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
,
0x
4
c
,
0x4f
,
0x2e
,
0x30
,
0x53
,
0xd9
,
0x24
,
0xdb
,
0x2b
,
0xd7
,
0x58
,
0x4a
,
0xaa
,
0x28
,
0x6e
,
0xcd
,
0x
0
c
,
0x4f
,
0x2e
,
0x30
,
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
,
0x04
,
0xd7
,
0x6c
,
0x0b
,
0xae
,
0x3e
,
0xb8
,
0xd5
,
0x14
,
0x0e
,
0x25
,
0x66
,
0xbd
,
0x9a
,
0x98
,
0xd5
,
...
...
@@ -1741,5 +1741,5 @@ var fileDescriptor_7110f4228953d675 = []byte{
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
,
0x65
,
0x04
,
0x39
,
0x73
,
0x96
,
0x6f
,
0x8e
,
0x41
,
0x77
,
0x52
,
0x2e
,
0x6e
,
0xfb
,
0xf4
,
0xbf
,
0xdf
,
0xc5
,
0xbf
,
0x01
,
0x00
,
0x00
,
0xff
,
0xff
,
0x
9c
,
0x86
,
0x5d
,
0xb7
,
0x0d
,
0x0e
,
0x00
,
0x00
,
0xc5
,
0xbf
,
0x01
,
0x00
,
0x00
,
0xff
,
0xff
,
0x
a1
,
0x37
,
0xc2
,
0xe4
,
0x0d
,
0x0e
,
0x00
,
0x00
,
}
plugin/dapp/issuance/types/tx.go
View file @
2f57d651
...
...
@@ -6,17 +6,17 @@ package types
// IssuanceCreateTx for construction
type
IssuanceCreateTx
struct
{
DebtCeiling
in
t64
`json:"debtCeiling"`
LiquidationRatio
float
32
`json:"liquidationRatio"`
DebtCeiling
floa
t64
`json:"debtCeiling"`
LiquidationRatio
float
64
`json:"liquidationRatio"`
Period
int64
`json:"period"`
TotalBalance
in
t64
`json:"totalBalance"`
TotalBalance
floa
t64
`json:"totalBalance"`
Fee
int64
`json:"fee"`
}
// IssuanceDebtTx for construction
type
IssuanceDebtTx
struct
{
IssuanceID
string
`json:"issuanceId"`
Value
in
t64
`json:"value"`
Value
floa
t64
`json:"value"`
Fee
int64
`json:"fee"`
}
...
...
@@ -29,7 +29,7 @@ type IssuanceRepayTx struct {
// IssuanceFeedTx for construction
type
IssuanceFeedTx
struct
{
Price
[]
float
32
`json:"price"`
Price
[]
float
64
`json:"price"`
Volume
[]
int64
`json:"volume"`
Fee
int64
`json:"fee"`
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment