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
bdf8e51e
Commit
bdf8e51e
authored
Dec 09, 2019
by
vipwzw
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
auto ci
parent
5d9da776
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
114 additions
and
124 deletions
+114
-124
build.sh
plugin/dapp/collateralize/cmd/build.sh
+0
-1
test-rpc.sh
plugin/dapp/collateralize/cmd/test/test-rpc.sh
+0
-0
cmd.go
plugin/dapp/collateralize/commands/cmd.go
+5
-4
collateralize.go
plugin/dapp/collateralize/executor/collateralize.go
+8
-8
collateralize_test.go
plugin/dapp/collateralize/executor/collateralize_test.go
+23
-30
collateralizedb.go
plugin/dapp/collateralize/executor/collateralizedb.go
+14
-14
exec_del_local.go
plugin/dapp/collateralize/executor/exec_del_local.go
+0
-0
keys.go
plugin/dapp/collateralize/executor/keys.go
+0
-0
query.go
plugin/dapp/collateralize/executor/query.go
+5
-5
collateralize.go
plugin/dapp/collateralize/types/collateralize.go
+2
-2
collateralize.pb.go
plugin/dapp/collateralize/types/collateralize.pb.go
+0
-0
tx.go
plugin/dapp/collateralize/types/tx.go
+0
-0
types.go
plugin/dapp/collateralize/types/types.go
+0
-0
test-rpc.sh
plugin/dapp/issuance/cmd/test/test-rpc.sh
+12
-12
cmd.go
plugin/dapp/issuance/commands/cmd.go
+4
-3
exec_del_local.go
plugin/dapp/issuance/executor/exec_del_local.go
+0
-0
issuance.go
plugin/dapp/issuance/executor/issuance.go
+7
-7
issuance_test.go
plugin/dapp/issuance/executor/issuance_test.go
+17
-22
issuancedb.go
plugin/dapp/issuance/executor/issuancedb.go
+12
-11
keys.go
plugin/dapp/issuance/executor/keys.go
+0
-0
query.go
plugin/dapp/issuance/executor/query.go
+4
-4
issuance.go
plugin/dapp/issuance/types/issuance.go
+1
-1
issuance.pb.go
plugin/dapp/issuance/types/issuance.pb.go
+0
-0
tx.go
plugin/dapp/issuance/types/tx.go
+0
-0
types.go
plugin/dapp/issuance/types/types.go
+0
-0
No files found.
plugin/dapp/collateralize/cmd/build.sh
View file @
bdf8e51e
...
...
@@ -7,4 +7,3 @@ strapp=${strcmd%/cmd*}
OUT_TESTDIR
=
"
${
1
}
/dapptest/
$strapp
"
mkdir
-p
"
${
OUT_TESTDIR
}
"
cp
./test/test-rpc.sh
"
${
OUT_TESTDIR
}
"
plugin/dapp/collateralize/cmd/test/test-rpc.sh
View file @
bdf8e51e
plugin/dapp/collateralize/commands/cmd.go
View file @
bdf8e51e
...
...
@@ -2,12 +2,13 @@ package commands
import
(
"fmt"
"github.com/spf13/cobra"
"strconv"
jsonrpc
"github.com/33cn/chain33/rpc/jsonclient"
rpctypes
"github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types"
pkt
"github.com/33cn/plugin/plugin/dapp/collateralize/types"
"
strconv
"
"
github.com/spf13/cobra
"
)
// CollateralizeCmd 斗牛游戏命令行
...
...
@@ -439,7 +440,7 @@ func CollateralizeQuery(cmd *cobra.Command, args []string) {
var
res
pkt
.
RepCollateralizeRecords
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
&
res
)
ctx
.
Run
()
}
else
if
borrowID
!=
""
{
}
else
if
borrowID
!=
""
{
params
.
FuncName
=
"CollateralizeRecordByID"
req
:=
&
pkt
.
ReqCollateralizeRecord
{
...
...
@@ -472,7 +473,7 @@ func CollateralizeQuery(cmd *cobra.Command, args []string) {
}
else
if
statusStr
!=
""
{
params
.
FuncName
=
"CollateralizeByStatus"
req
:=
&
pkt
.
ReqCollateralizeByStatus
{
Status
:
int32
(
status
)}
req
:=
&
pkt
.
ReqCollateralizeByStatus
{
Status
:
int32
(
status
)}
params
.
Payload
=
types
.
MustPBToJSON
(
req
)
var
res
pkt
.
RepCollateralizeIDs
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
&
res
)
...
...
plugin/dapp/collateralize/executor/collateralize.go
View file @
bdf8e51e
...
...
@@ -63,7 +63,7 @@ func (c *Collateralize) GetDriverName() string {
func
(
c
*
Collateralize
)
addCollateralizeID
(
collateralizeId
string
,
index
int64
)
(
kvs
[]
*
types
.
KeyValue
)
{
key
:=
calcCollateralizeKey
(
collateralizeId
,
index
)
record
:=
&
pty
.
CollateralizeRecord
{
CollateralizeId
:
collateralizeId
,
CollateralizeId
:
collateralizeId
,
Index
:
index
,
}
kv
:=
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
record
)}
...
...
@@ -83,7 +83,7 @@ func (c *Collateralize) deleteCollateralizeID(collateralizeId string, index int6
func
(
c
*
Collateralize
)
addCollateralizeStatus
(
status
int32
,
collateralizeId
string
,
index
int64
)
(
kvs
[]
*
types
.
KeyValue
)
{
key
:=
calcCollateralizeStatusKey
(
status
,
index
)
record
:=
&
pty
.
CollateralizeRecord
{
CollateralizeId
:
collateralizeId
,
CollateralizeId
:
collateralizeId
,
Index
:
index
,
}
kv
:=
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
record
)}
...
...
@@ -103,8 +103,8 @@ func (c *Collateralize) deleteCollateralizeStatus(status int32, index int64) (kv
func
(
c
*
Collateralize
)
addCollateralizeAddr
(
addr
string
,
collateralizeId
string
,
status
int32
,
index
int64
)
(
kvs
[]
*
types
.
KeyValue
)
{
key
:=
calcCollateralizeAddrKey
(
addr
,
index
)
record
:=
&
pty
.
CollateralizeRecord
{
CollateralizeId
:
collateralizeId
,
Status
:
status
,
CollateralizeId
:
collateralizeId
,
Status
:
status
,
Index
:
index
,
}
kv
:=
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
record
)}
...
...
@@ -125,8 +125,8 @@ func (c *Collateralize) addCollateralizeRecordStatus(recordStatus int32, collate
key
:=
calcCollateralizeRecordStatusKey
(
recordStatus
,
index
)
record
:=
&
pty
.
CollateralizeRecord
{
CollateralizeId
:
collateralizeId
,
RecordId
:
recordId
,
CollateralizeId
:
collateralizeId
,
RecordId
:
recordId
,
Index
:
index
,
}
...
...
@@ -147,8 +147,8 @@ func (c *Collateralize) addCollateralizeRecordAddr(recordAddr string, collateral
key
:=
calcCollateralizeRecordAddrKey
(
recordAddr
,
index
)
record
:=
&
pty
.
CollateralizeRecord
{
CollateralizeId
:
collateralizeId
,
RecordId
:
recordId
,
CollateralizeId
:
collateralizeId
,
RecordId
:
recordId
,
Index
:
index
,
}
...
...
plugin/dapp/collateralize/executor/collateralize_test.go
View file @
bdf8e51e
package
executor
import
(
"github.com/33cn/chain33/client"
"testing"
"time"
"github.com/33cn/chain33/client"
"github.com/33cn/chain33/account"
apimock
"github.com/33cn/chain33/client/mocks"
"github.com/33cn/chain33/common"
...
...
@@ -94,7 +95,7 @@ func initEnv() *execEnv {
Addr
:
string
(
Nodes
[
1
]),
}
accountBToken
:=
types
.
Account
{
Balance
:
types
.
Coin
/
10
,
Balance
:
types
.
Coin
/
10
,
Frozen
:
0
,
Addr
:
string
(
Nodes
[
1
]),
}
...
...
@@ -115,14 +116,14 @@ func initEnv() *execEnv {
accA
.
SaveExecAccount
(
execAddr
,
&
accountA
)
manageKeySet
(
"issuance-manage"
,
accountA
.
Addr
,
stateDB
)
addrKeySet
(
accountA
.
Addr
,
stateDB
)
tokenAccA
,
_
:=
account
.
NewAccountDB
(
cfg
,
tokenE
.
GetName
(),
pkt
.
CCNYTokenName
,
stateDB
)
tokenAccA
,
_
:=
account
.
NewAccountDB
(
cfg
,
tokenE
.
GetName
(),
pkt
.
CCNYTokenName
,
stateDB
)
tokenAccA
.
SaveExecAccount
(
execAddr
,
&
accountAToken
)
accB
:=
account
.
NewCoinsAccount
(
cfg
)
accB
.
SetDB
(
stateDB
)
accB
.
SaveExecAccount
(
execAddr
,
&
accountB
)
manageKeySet
(
"issuance-price-feed"
,
accountB
.
Addr
,
stateDB
)
tokenAccB
,
_
:=
account
.
NewAccountDB
(
cfg
,
tokenE
.
GetName
(),
pkt
.
CCNYTokenName
,
stateDB
)
tokenAccB
,
_
:=
account
.
NewAccountDB
(
cfg
,
tokenE
.
GetName
(),
pkt
.
CCNYTokenName
,
stateDB
)
tokenAccB
.
SaveExecAccount
(
execAddr
,
&
accountBToken
)
accC
:=
account
.
NewCoinsAccount
(
cfg
)
...
...
@@ -131,10 +132,10 @@ func initEnv() *execEnv {
manageKeySet
(
"issuance-guarantor"
,
accountC
.
Addr
,
stateDB
)
return
&
execEnv
{
blockTime
:
time
.
Now
()
.
Unix
(),
blockHeight
:
cfg
.
GetDappFork
(
pkt
.
CollateralizeX
,
"Enable"
),
difficulty
:
1539918074
,
kvdb
:
kvdb
,
blockTime
:
time
.
Now
()
.
Unix
(),
blockHeight
:
cfg
.
GetDappFork
(
pkt
.
CollateralizeX
,
"Enable"
),
difficulty
:
1539918074
,
kvdb
:
kvdb
,
api
:
api
,
db
:
stateDB
,
execAddr
:
execAddr
,
...
...
@@ -185,7 +186,6 @@ func TestCollateralize(t *testing.T) {
env
.
kvdb
.
Set
(
kv
.
Key
,
kv
.
Value
)
}
// collateralize create
p1
:=
&
pkt
.
CollateralizeCreateTx
{
TotalBalance
:
1000
,
...
...
@@ -216,21 +216,20 @@ func TestCollateralize(t *testing.T) {
}
collateralizeID
:=
createTx
.
Hash
()
// query collateralize by id
res
,
err
:=
exec
.
Query
(
"CollateralizeInfoByID"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeInfo
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
)
,
}))
res
,
err
:=
exec
.
Query
(
"CollateralizeInfoByID"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeInfo
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
)}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query collateralize by status
res
,
err
=
exec
.
Query
(
"CollateralizeByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeByStatus
{
Status
:
1
}))
res
,
err
=
exec
.
Query
(
"CollateralizeByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeByStatus
{
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query collateralizes by ids
var
collateralizeIDsS
[]
string
collateralizeIDsS
=
append
(
collateralizeIDsS
,
common
.
ToHex
(
collateralizeID
))
res
,
err
=
exec
.
Query
(
"CollateralizeInfoByIDs"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeInfos
{
CollateralizeIds
:
collateralizeIDsS
}))
res
,
err
=
exec
.
Query
(
"CollateralizeInfoByIDs"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeInfos
{
CollateralizeIds
:
collateralizeIDsS
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// collateralize price
p2
:=
&
pkt
.
CollateralizeFeedTx
{}
p2
.
Price
=
append
(
p2
.
Price
,
1
)
...
...
@@ -265,7 +264,6 @@ func TestCollateralize(t *testing.T) {
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// collateralize borrow
p4
:=
&
pkt
.
CollateralizeBorrowTx
{
CollateralizeID
:
common
.
ToHex
(
collateralizeID
),
...
...
@@ -304,20 +302,19 @@ func TestCollateralize(t *testing.T) {
assert
.
NotNil
(
t
,
res
)
// query collateralize by status
res
,
err
=
exec
.
Query
(
"CollateralizeRecordByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
1
}))
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query collateralize by addr
res
,
err
=
exec
.
Query
(
"CollateralizeRecordByAddr"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByAddr
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
1
}))
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByAddr
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// collateralize append
p5
:=
&
pkt
.
CollateralizeAppendTx
{
CollateralizeID
:
common
.
ToHex
(
collateralizeID
),
RecordID
:
common
.
ToHex
(
borrowID
),
RecordID
:
common
.
ToHex
(
borrowID
),
Value
:
100
,
}
createTx
,
err
=
pkt
.
CreateRawCollateralizeAppendTx
(
env
.
cfg
,
p5
)
...
...
@@ -352,16 +349,15 @@ func TestCollateralize(t *testing.T) {
assert
.
NotNil
(
t
,
res
)
// query collateralize by status
res
,
err
=
exec
.
Query
(
"CollateralizeRecordByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
1
}))
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query collateralize by addr
res
,
err
=
exec
.
Query
(
"CollateralizeRecordByAddr"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByAddr
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
1
}))
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByAddr
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// collateralize repay
p6
:=
&
pkt
.
CollateralizeRepayTx
{
CollateralizeID
:
common
.
ToHex
(
collateralizeID
),
...
...
@@ -394,16 +390,15 @@ func TestCollateralize(t *testing.T) {
}
// query collateralize by status
res
,
err
=
exec
.
Query
(
"CollateralizeRecordByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
6
}))
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
6
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query collateralize by addr
res
,
err
=
exec
.
Query
(
"CollateralizeRecordByAddr"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByAddr
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
6
}))
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByAddr
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
6
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// collateralize liquidate
p7
:=
&
pkt
.
CollateralizeBorrowTx
{
CollateralizeID
:
common
.
ToHex
(
collateralizeID
),
...
...
@@ -465,11 +460,10 @@ func TestCollateralize(t *testing.T) {
}
// query collateralize by status
res
,
err
=
exec
.
Query
(
"CollateralizeRecordByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
3
}))
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
3
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// expire liquidate
p9
:=
&
pkt
.
CollateralizeBorrowTx
{
CollateralizeID
:
common
.
ToHex
(
collateralizeID
),
...
...
@@ -531,15 +525,14 @@ func TestCollateralize(t *testing.T) {
}
// query collateralize by status
res
,
err
=
exec
.
Query
(
"CollateralizeRecordByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
5
}))
types
.
Encode
(
&
pkt
.
ReqCollateralizeRecordByStatus
{
CollateralizeId
:
common
.
ToHex
(
collateralizeID
),
Status
:
5
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// collateralize retrieve
p11
:=
&
pkt
.
CollateralizeRetrieveTx
{
CollateralizeID
:
common
.
ToHex
(
collateralizeID
),
Balance
:
100
,
Balance
:
100
,
}
createTx
,
err
=
pkt
.
CreateRawCollateralizeRetrieveTx
(
env
.
cfg
,
p11
)
if
err
!=
nil
{
...
...
@@ -567,7 +560,7 @@ func TestCollateralize(t *testing.T) {
env
.
kvdb
.
Set
(
kv
.
Key
,
kv
.
Value
)
}
// query collateralize by status
res
,
err
=
exec
.
Query
(
"CollateralizeByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeByStatus
{
Status
:
1
}))
res
,
err
=
exec
.
Query
(
"CollateralizeByStatus"
,
types
.
Encode
(
&
pkt
.
ReqCollateralizeByStatus
{
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
}
...
...
plugin/dapp/collateralize/executor/collateralizedb.go
View file @
bdf8e51e
...
...
@@ -6,6 +6,8 @@ package executor
import
(
"fmt"
"math"
"github.com/33cn/chain33/account"
"github.com/33cn/chain33/common"
dbm
"github.com/33cn/chain33/common/db"
...
...
@@ -14,7 +16,6 @@ import (
pty
"github.com/33cn/plugin/plugin/dapp/collateralize/types"
issuanceE
"github.com/33cn/plugin/plugin/dapp/issuance/types"
tokenE
"github.com/33cn/plugin/plugin/dapp/token/executor"
"math"
)
// List control
...
...
@@ -109,7 +110,7 @@ func NewCollateralizeAction(c *Collateralize, tx *types.Transaction, index int)
}
return
&
Action
{
coinsAccount
:
c
.
GetCoinsAccount
(),
tokenAccount
:
tokenDb
,
db
:
c
.
GetStateDB
(),
localDB
:
c
.
GetLocalDB
(),
coinsAccount
:
c
.
GetCoinsAccount
(),
tokenAccount
:
tokenDb
,
db
:
c
.
GetStateDB
(),
localDB
:
c
.
GetLocalDB
(),
txhash
:
hash
,
fromaddr
:
fromaddr
,
blocktime
:
c
.
GetBlockTime
(),
height
:
c
.
GetHeight
(),
execaddr
:
dapp
.
ExecAddress
(
string
(
tx
.
Execer
)),
difficulty
:
c
.
GetDifficulty
(),
index
:
index
,
Collateralize
:
c
}
}
...
...
@@ -336,7 +337,6 @@ func getCollateralizeConfig(db dbm.KV) (*pty.CollateralizeManage, error) {
return
&
collCfg
,
nil
}
func
isSuperAddr
(
addr
string
,
db
dbm
.
KV
)
bool
{
data
,
err
:=
db
.
Get
(
AddrKey
())
if
err
!=
nil
{
...
...
@@ -482,14 +482,14 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
}
// 根据最近抵押物价格计算需要冻结的BTY数量
func
getBtyNumToFrozen
(
value
int64
,
price
float64
,
ratio
float64
)
(
int64
,
error
)
{
func
getBtyNumToFrozen
(
value
int64
,
price
float64
,
ratio
float64
)
(
int64
,
error
)
{
if
price
==
0
{
clog
.
Error
(
"Bty price should greate to 0"
)
return
0
,
pty
.
ErrPriceInvalid
}
valueReal
:=
float64
(
value
)
/
1e8
btyValue
:=
valueReal
/
(
price
*
ratio
)
valueReal
:=
float64
(
value
)
/
1e8
btyValue
:=
valueReal
/
(
price
*
ratio
)
return
int64
(
math
.
Trunc
((
btyValue
+
0.0000001
)
*
1e4
))
*
1e4
,
nil
}
...
...
@@ -703,8 +703,8 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
}
// 借贷金额+利息
fee
:=
(
float64
(
borrowRecord
.
DebtValue
)
/
1e8
)
*
float64
(
coll
.
StabilityFeeRatio
)
realRepay
:=
borrowRecord
.
DebtValue
+
int64
(
math
.
Trunc
((
fee
+
0.0000001
)
*
1e4
))
*
1e4
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
,
false
)
{
...
...
@@ -838,7 +838,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
borrowRecord
.
CollateralValue
+=
cAppend
.
CollateralValue
borrowRecord
.
CollateralPrice
=
lastPrice
borrowRecord
.
LiquidationPrice
=
calcLiquidationPrice
(
borrowRecord
.
DebtValue
,
borrowRecord
.
CollateralValue
)
if
borrowRecord
.
LiquidationPrice
*
PriceWarningRate
<
lastPrice
{
if
borrowRecord
.
LiquidationPrice
*
PriceWarningRate
<
lastPrice
{
// 告警解除
if
borrowRecord
.
Status
==
pty
.
CollateralizeUserStatusWarning
{
borrowRecord
.
PreStatus
=
borrowRecord
.
Status
...
...
@@ -927,7 +927,7 @@ func (action *Action) systemLiquidation(coll *pty.Collateralize, price float64)
var
kv
[]
*
types
.
KeyValue
for
index
,
borrowRecord
:=
range
coll
.
BorrowRecords
{
if
borrowRecord
.
LiquidationPrice
*
PriceWarningRate
<
price
{
if
borrowRecord
.
LiquidationPrice
*
PriceWarningRate
<
price
{
if
borrowRecord
.
Status
==
pty
.
CollateralizeUserStatusWarning
{
borrowRecord
.
PreStatus
=
borrowRecord
.
Status
borrowRecord
.
Status
=
pty
.
CollateralizeUserStatusCreate
...
...
@@ -990,7 +990,7 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt
var
kv
[]
*
types
.
KeyValue
for
index
,
borrowRecord
:=
range
coll
.
BorrowRecords
{
if
borrowRecord
.
ExpireTime
-
ExpireWarningTime
>
action
.
blocktime
{
if
borrowRecord
.
ExpireTime
-
ExpireWarningTime
>
action
.
blocktime
{
continue
}
...
...
@@ -1057,7 +1057,7 @@ func pricePolicy(feed *pty.CollateralizeFeed) float64 {
}
for
i
,
price
:=
range
feed
.
Price
{
totalPrice
+=
price
*
(
float64
(
feed
.
Volume
[
i
])
/
float64
(
totalVolume
))
totalPrice
+=
price
*
(
float64
(
feed
.
Volume
[
i
])
/
float64
(
totalVolume
))
}
return
totalPrice
...
...
@@ -1098,7 +1098,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
}
// 超时清算判断
if
coll
.
LatestExpireTime
-
ExpireWarningTime
<=
action
.
blocktime
{
if
coll
.
LatestExpireTime
-
ExpireWarningTime
<=
action
.
blocktime
{
receipt
,
err
:=
action
.
expireLiquidation
(
coll
)
if
err
!=
nil
{
clog
.
Error
(
"CollateralizePriceFeed"
,
"Collateralize ID"
,
coll
.
CollateralizeId
,
"expire liquidation error"
,
err
)
...
...
@@ -1248,7 +1248,7 @@ func queryCollateralizeByAddr(localdb dbm.Lister, addr string, status int32, ind
clog
.
Debug
(
"queryCollateralizesByAddr"
,
"decode"
,
err
)
return
nil
,
err
}
if
status
==
0
||
coll
.
Status
==
status
{
if
status
==
0
||
coll
.
Status
==
status
{
ids
=
append
(
ids
,
coll
.
CollateralizeId
)
}
}
...
...
plugin/dapp/collateralize/executor/exec_del_local.go
View file @
bdf8e51e
plugin/dapp/collateralize/executor/keys.go
View file @
bdf8e51e
plugin/dapp/collateralize/executor/query.go
View file @
bdf8e51e
...
...
@@ -10,7 +10,7 @@ import (
)
func
(
c
*
Collateralize
)
Query_CollateralizeInfoByID
(
req
*
pty
.
ReqCollateralizeInfo
)
(
types
.
Message
,
error
)
{
coll
,
err
:=
queryCollateralizeByID
(
c
.
GetStateDB
(),
req
.
CollateralizeId
)
coll
,
err
:=
queryCollateralizeByID
(
c
.
GetStateDB
(),
req
.
CollateralizeId
)
if
err
!=
nil
{
clog
.
Error
(
"Query_CollateralizeInfoByID"
,
"id"
,
req
.
CollateralizeId
,
"error"
,
err
)
return
nil
,
err
...
...
@@ -37,7 +37,7 @@ func (c *Collateralize) Query_CollateralizeInfoByID(req *pty.ReqCollateralizeInf
func
(
c
*
Collateralize
)
Query_CollateralizeInfoByIDs
(
req
*
pty
.
ReqCollateralizeInfos
)
(
types
.
Message
,
error
)
{
infos
:=
&
pty
.
RepCollateralizeCurrentInfos
{}
for
_
,
id
:=
range
req
.
CollateralizeIds
{
coll
,
err
:=
queryCollateralizeByID
(
c
.
GetStateDB
(),
id
)
coll
,
err
:=
queryCollateralizeByID
(
c
.
GetStateDB
(),
id
)
if
err
!=
nil
{
clog
.
Error
(
"Query_CollateralizeInfoByID"
,
"id"
,
id
,
"error"
,
err
)
return
nil
,
err
...
...
@@ -111,7 +111,7 @@ func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateraliz
if
req
.
Status
==
0
{
ret
.
Records
=
records
}
else
{
for
_
,
record
:=
range
records
{
for
_
,
record
:=
range
records
{
if
record
.
Status
==
req
.
Status
{
ret
.
Records
=
append
(
ret
.
Records
,
record
)
}
...
...
@@ -146,7 +146,7 @@ func (c *Collateralize) Query_CollateralizeConfig(req *pty.ReqCollateralizeRecor
}
ret
:=
&
pty
.
RepCollateralizeConfig
{
TotalBalance
:
config
.
TotalBalance
,
TotalBalance
:
config
.
TotalBalance
,
DebtCeiling
:
config
.
DebtCeiling
,
LiquidationRatio
:
config
.
LiquidationRatio
,
StabilityFeeRatio
:
config
.
StabilityFeeRatio
,
...
...
@@ -165,5 +165,5 @@ func (c *Collateralize) Query_CollateralizePrice(req *pty.ReqCollateralizeRecord
return
nil
,
err
}
return
&
pty
.
RepCollateralizePrice
{
Price
:
price
},
nil
return
&
pty
.
RepCollateralizePrice
{
Price
:
price
},
nil
}
plugin/dapp/collateralize/types/collateralize.go
View file @
bdf8e51e
...
...
@@ -212,7 +212,7 @@ func CreateRawCollateralizeRepayTx(cfg *types.Chain33Config, parm *Collateralize
v
:=
&
CollateralizeRepay
{
CollateralizeId
:
parm
.
CollateralizeID
,
RecordId
:
parm
.
RecordID
,
RecordId
:
parm
.
RecordID
,
}
repay
:=
&
CollateralizeAction
{
Ty
:
CollateralizeActionRepay
,
...
...
@@ -241,7 +241,7 @@ func CreateRawCollateralizeAppendTx(cfg *types.Chain33Config, parm *Collateraliz
v
:=
&
CollateralizeAppend
{
CollateralizeId
:
parm
.
CollateralizeID
,
RecordId
:
parm
.
RecordID
,
RecordId
:
parm
.
RecordID
,
CollateralValue
:
int64
(
math
.
Trunc
((
parm
.
Value
+
0.0000001
)
*
1e4
))
*
1e4
,
}
append
:=
&
CollateralizeAction
{
...
...
plugin/dapp/collateralize/types/collateralize.pb.go
View file @
bdf8e51e
This diff is collapsed.
Click to expand it.
plugin/dapp/collateralize/types/tx.go
View file @
bdf8e51e
plugin/dapp/collateralize/types/types.go
View file @
bdf8e51e
plugin/dapp/issuance/cmd/test/test-rpc.sh
View file @
bdf8e51e
...
...
@@ -388,18 +388,18 @@ manage() {
echo
"========== # issuance add issuance-price-feed end =========="
chain33_BlockWait 1
${
MAIN_HTTP
}
# echo "========== # issuance add issuance-guarantor begin =========="
# tx=$(curl -ksd '{"method":"Chain33.CreateTransaction","params":[{"execer":"manage","actionName":"Modify","payload":{"key": "issuance-guarantor", "value":"'"${IssuanceAddr3}"'", "op":"add"}}]}' ${MAIN_HTTP} | jq -r ".result")
#
# data=$(curl -ksd '{"method":"Chain33.DecodeRawTransaction","params":[{"txHex":"'"$tx"'"}]}' ${MAIN_HTTP} | jq -r ".result.txs[0]")
# ok=$(jq '(.execer != "")' <<<"$data")
#
# [ "$ok" == true ]
# echo_rst "$FUNCNAME" "$?"
#
# chain33_SignRawTx "$tx" ${SystemManager} ${MAIN_HTTP}
# echo "========== # issuance add issuance-guarantor end =========="
# chain33_BlockWait 1 ${MAIN_HTTP}
# echo "========== # issuance add issuance-guarantor begin =========="
# tx=$(curl -ksd '{"method":"Chain33.CreateTransaction","params":[{"execer":"manage","actionName":"Modify","payload":{"key": "issuance-guarantor", "value":"'"${IssuanceAddr3}"'", "op":"add"}}]}' ${MAIN_HTTP} | jq -r ".result")
#
# data=$(curl -ksd '{"method":"Chain33.DecodeRawTransaction","params":[{"txHex":"'"$tx"'"}]}' ${MAIN_HTTP} | jq -r ".result.txs[0]")
# ok=$(jq '(.execer != "")' <<<"$data")
#
# [ "$ok" == true ]
# echo_rst "$FUNCNAME" "$?"
#
# chain33_SignRawTx "$tx" ${SystemManager} ${MAIN_HTTP}
# echo "========== # issuance add issuance-guarantor end =========="
# chain33_BlockWait 1 ${MAIN_HTTP}
}
token
()
{
...
...
plugin/dapp/issuance/commands/cmd.go
View file @
bdf8e51e
...
...
@@ -2,12 +2,13 @@ package commands
import
(
"fmt"
"strconv"
jsonrpc
"github.com/33cn/chain33/rpc/jsonclient"
rpctypes
"github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types"
pkt
"github.com/33cn/plugin/plugin/dapp/issuance/types"
"github.com/spf13/cobra"
"strconv"
)
// IssuanceCmd 斗牛游戏命令行
...
...
@@ -369,7 +370,7 @@ func IssuanceQuery(cmd *cobra.Command, args []string) {
var
res
pkt
.
RepIssuanceRecords
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
&
res
)
ctx
.
Run
()
}
else
if
debtID
!=
""
{
}
else
if
debtID
!=
""
{
params
.
FuncName
=
"IssuanceRecordByID"
req
:=
&
pkt
.
ReqIssuanceDebtInfo
{
...
...
@@ -394,7 +395,7 @@ func IssuanceQuery(cmd *cobra.Command, args []string) {
}
else
if
statusStr
!=
""
{
params
.
FuncName
=
"IssuanceByStatus"
req
:=
&
pkt
.
ReqIssuanceByStatus
{
Status
:
int32
(
status
)}
req
:=
&
pkt
.
ReqIssuanceByStatus
{
Status
:
int32
(
status
)}
params
.
Payload
=
types
.
MustPBToJSON
(
req
)
var
res
pkt
.
RepIssuanceIDs
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
&
res
)
...
...
plugin/dapp/issuance/executor/exec_del_local.go
View file @
bdf8e51e
plugin/dapp/issuance/executor/issuance.go
View file @
bdf8e51e
...
...
@@ -63,7 +63,7 @@ func (c *Issuance) GetDriverName() string {
func
(
c
*
Issuance
)
addIssuanceID
(
index
int64
,
issuanceId
string
)
(
kvs
[]
*
types
.
KeyValue
)
{
key
:=
calcIssuanceKey
(
issuanceId
,
index
)
record
:=
&
pty
.
IssuanceRecord
{
IssuanceId
:
issuanceId
,
IssuanceId
:
issuanceId
,
Index
:
index
,
}
kv
:=
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
record
)}
...
...
@@ -83,7 +83,7 @@ func (c *Issuance) deleteIssuanceID(index int64, issuanceId string) (kvs []*type
func
(
c
*
Issuance
)
addIssuanceStatus
(
status
int32
,
index
int64
,
issuanceId
string
)
(
kvs
[]
*
types
.
KeyValue
)
{
key
:=
calcIssuanceStatusKey
(
status
,
index
)
record
:=
&
pty
.
IssuanceRecord
{
IssuanceId
:
issuanceId
,
IssuanceId
:
issuanceId
,
Index
:
index
,
}
kv
:=
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
record
)}
...
...
@@ -103,7 +103,7 @@ func (c *Issuance) deleteIssuanceStatus(status int32, index int64) (kvs []*types
func
(
c
*
Issuance
)
addIssuanceRecordAddr
(
accountAddr
string
,
index
int64
,
debtId
string
,
issuanceId
string
)
(
kvs
[]
*
types
.
KeyValue
)
{
key
:=
calcIssuanceRecordAddrKey
(
accountAddr
,
index
)
record
:=
&
pty
.
IssuanceRecord
{
IssuanceId
:
issuanceId
,
IssuanceId
:
issuanceId
,
DebtId
:
debtId
,
Index
:
index
,
}
...
...
@@ -125,7 +125,7 @@ func (c *Issuance) addIssuanceRecordStatus(recordStatus int32, accountAddr strin
key
:=
calcIssuanceRecordStatusKey
(
recordStatus
,
index
)
record
:=
&
pty
.
IssuanceRecord
{
IssuanceId
:
issuanceId
,
IssuanceId
:
issuanceId
,
DebtId
:
debtId
,
Addr
:
accountAddr
,
Index
:
index
,
...
...
@@ -148,8 +148,8 @@ func (c *Issuance) addIssuancePriceRecord(recordTime int64, price float64) (kvs
key
:=
calcIssuancePriceKey
(
string
(
recordTime
))
record
:=
&
pty
.
IssuanceAssetPriceRecord
{
RecordTime
:
recordTime
,
BtyPrice
:
price
,
RecordTime
:
recordTime
,
BtyPrice
:
price
,
}
kv
:=
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
record
)}
kvs
=
append
(
kvs
,
kv
)
...
...
@@ -159,7 +159,7 @@ func (c *Issuance) addIssuancePriceRecord(recordTime int64, price float64) (kvs
func
(
c
*
Issuance
)
deleteIssuancePriceRecord
(
recordTime
int64
)
(
kvs
[]
*
types
.
KeyValue
)
{
key
:=
calcIssuancePriceKey
(
string
(
recordTime
))
kv
:=
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
}
kv
:=
&
types
.
KeyValue
{
Key
:
key
,
Value
:
nil
}
kvs
=
append
(
kvs
,
kv
)
return
kvs
}
...
...
plugin/dapp/issuance/executor/issuance_test.go
View file @
bdf8e51e
package
executor
import
(
"github.com/33cn/chain33/client"
"testing"
"time"
"github.com/33cn/chain33/client"
"github.com/33cn/chain33/account"
apimock
"github.com/33cn/chain33/client/mocks"
"github.com/33cn/chain33/common"
...
...
@@ -96,7 +97,7 @@ func initEnv() *execEnv {
accA
.
SetDB
(
stateDB
)
accA
.
SaveExecAccount
(
execAddr
,
&
accountA
)
manageKeySet
(
"issuance-manage"
,
accountA
.
Addr
,
stateDB
)
tokenAccA
,
_
:=
account
.
NewAccountDB
(
cfg
,
tokenE
.
GetName
(),
pkt
.
CCNYTokenName
,
stateDB
)
tokenAccA
,
_
:=
account
.
NewAccountDB
(
cfg
,
tokenE
.
GetName
(),
pkt
.
CCNYTokenName
,
stateDB
)
tokenAccA
.
SaveExecAccount
(
execAddr
,
&
accountAToken
)
accB
:=
account
.
NewCoinsAccount
(
cfg
)
...
...
@@ -110,10 +111,10 @@ func initEnv() *execEnv {
manageKeySet
(
"issuance-guarantor"
,
accountC
.
Addr
,
stateDB
)
return
&
execEnv
{
blockTime
:
time
.
Now
()
.
Unix
(),
blockHeight
:
cfg
.
GetDappFork
(
pkt
.
IssuanceX
,
"Enable"
),
difficulty
:
1539918074
,
kvdb
:
kvdb
,
blockTime
:
time
.
Now
()
.
Unix
(),
blockHeight
:
cfg
.
GetDappFork
(
pkt
.
IssuanceX
,
"Enable"
),
difficulty
:
1539918074
,
kvdb
:
kvdb
,
api
:
api
,
db
:
stateDB
,
execAddr
:
execAddr
,
...
...
@@ -163,21 +164,20 @@ func TestIssuance(t *testing.T) {
}
issuanceID
:=
createTx
.
Hash
()
// query issuance by id
res
,
err
:=
exec
.
Query
(
"IssuanceInfoByID"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceInfo
{
IssuanceId
:
common
.
ToHex
(
issuanceID
)
,
}))
res
,
err
:=
exec
.
Query
(
"IssuanceInfoByID"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceInfo
{
IssuanceId
:
common
.
ToHex
(
issuanceID
)}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query issuance by status
res
,
err
=
exec
.
Query
(
"IssuanceByStatus"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceByStatus
{
Status
:
1
}))
res
,
err
=
exec
.
Query
(
"IssuanceByStatus"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceByStatus
{
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query issuances by ids
var
issuanceIDsS
[]
string
issuanceIDsS
=
append
(
issuanceIDsS
,
common
.
ToHex
(
issuanceID
))
res
,
err
=
exec
.
Query
(
"IssuanceInfoByIDs"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceInfos
{
IssuanceIds
:
issuanceIDsS
}))
res
,
err
=
exec
.
Query
(
"IssuanceInfoByIDs"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceInfos
{
IssuanceIds
:
issuanceIDsS
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// issuance price
p2
:=
&
pkt
.
IssuanceFeedTx
{}
p2
.
Price
=
append
(
p2
.
Price
,
1
)
...
...
@@ -212,7 +212,6 @@ func TestIssuance(t *testing.T) {
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// issuance manage
p3
:=
&
pkt
.
IssuanceManageTx
{}
p3
.
Addr
=
append
(
p3
.
Addr
,
string
(
Nodes
[
1
]))
...
...
@@ -242,7 +241,6 @@ func TestIssuance(t *testing.T) {
env
.
kvdb
.
Set
(
kv
.
Key
,
kv
.
Value
)
}
// issuance debt
p4
:=
&
pkt
.
IssuanceDebtTx
{
IssuanceID
:
common
.
ToHex
(
issuanceID
),
...
...
@@ -281,16 +279,15 @@ func TestIssuance(t *testing.T) {
assert
.
NotNil
(
t
,
res
)
// query issuance by status
res
,
err
=
exec
.
Query
(
"IssuanceRecordsByStatus"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByStatus
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Status
:
1
}))
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByStatus
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query issuance by addr
res
,
err
=
exec
.
Query
(
"IssuanceRecordsByAddr"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByAddr
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
1
}))
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByAddr
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
1
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// issuance repay
p5
:=
&
pkt
.
IssuanceRepayTx
{
IssuanceID
:
common
.
ToHex
(
issuanceID
),
...
...
@@ -323,16 +320,15 @@ func TestIssuance(t *testing.T) {
}
// query issuance by status
res
,
err
=
exec
.
Query
(
"IssuanceRecordsByStatus"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByStatus
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Status
:
6
}))
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByStatus
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Status
:
6
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// query issuance by addr
res
,
err
=
exec
.
Query
(
"IssuanceRecordsByAddr"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByAddr
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
6
}))
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByAddr
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Addr
:
string
(
Nodes
[
1
]),
Status
:
6
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// issuance liquidate
p6
:=
&
pkt
.
IssuanceDebtTx
{
IssuanceID
:
common
.
ToHex
(
issuanceID
),
...
...
@@ -394,7 +390,7 @@ func TestIssuance(t *testing.T) {
}
// query issuance by status
res
,
err
=
exec
.
Query
(
"IssuanceRecordsByStatus"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByStatus
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Status
:
3
}))
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByStatus
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Status
:
3
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
...
...
@@ -459,11 +455,10 @@ func TestIssuance(t *testing.T) {
}
// query issuance by status
res
,
err
=
exec
.
Query
(
"IssuanceRecordsByStatus"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByStatus
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Status
:
5
}))
types
.
Encode
(
&
pkt
.
ReqIssuanceRecordsByStatus
{
IssuanceId
:
common
.
ToHex
(
issuanceID
),
Status
:
5
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
// issuance close
p10
:=
&
pkt
.
IssuanceCloseTx
{
IssuanceID
:
common
.
ToHex
(
issuanceID
),
...
...
@@ -494,7 +489,7 @@ func TestIssuance(t *testing.T) {
env
.
kvdb
.
Set
(
kv
.
Key
,
kv
.
Value
)
}
// query issuance by status
res
,
err
=
exec
.
Query
(
"IssuanceByStatus"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceByStatus
{
Status
:
2
}))
res
,
err
=
exec
.
Query
(
"IssuanceByStatus"
,
types
.
Encode
(
&
pkt
.
ReqIssuanceByStatus
{
Status
:
2
}))
assert
.
Nil
(
t
,
err
)
assert
.
NotNil
(
t
,
res
)
}
...
...
plugin/dapp/issuance/executor/issuancedb.go
View file @
bdf8e51e
...
...
@@ -6,6 +6,8 @@ package executor
import
(
"fmt"
"math"
"github.com/33cn/chain33/account"
"github.com/33cn/chain33/common"
dbm
"github.com/33cn/chain33/common/db"
...
...
@@ -13,7 +15,6 @@ 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
...
...
@@ -180,7 +181,7 @@ func NewIssuanceAction(c *Issuance, tx *types.Transaction, index int) *Action {
}
return
&
Action
{
coinsAccount
:
c
.
GetCoinsAccount
(),
tokenAccount
:
tokenDb
,
db
:
c
.
GetStateDB
(),
localDB
:
c
.
GetLocalDB
(),
coinsAccount
:
c
.
GetCoinsAccount
(),
tokenAccount
:
tokenDb
,
db
:
c
.
GetStateDB
(),
localDB
:
c
.
GetLocalDB
(),
txhash
:
hash
,
fromaddr
:
fromaddr
,
blocktime
:
c
.
GetBlockTime
(),
height
:
c
.
GetHeight
(),
execaddr
:
dapp
.
ExecAddress
(
string
(
tx
.
Execer
)),
difficulty
:
c
.
GetDifficulty
(),
index
:
index
,
Issuance
:
c
}
}
...
...
@@ -339,7 +340,7 @@ func (action *Action) IssuanceManage(manage *pty.IssuanceManage) (*types.Receipt
value
:=
types
.
Encode
(
&
item
)
action
.
db
.
Set
(
AddrKey
(),
value
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
AddrKey
(),
Value
:
value
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
AddrKey
(),
Value
:
value
})
}
else
{
err
=
types
.
Decode
(
data
,
&
item
)
if
err
!=
nil
{
...
...
@@ -349,7 +350,7 @@ func (action *Action) IssuanceManage(manage *pty.IssuanceManage) (*types.Receipt
item
.
GetArr
()
.
Value
=
append
(
item
.
GetArr
()
.
Value
,
manage
.
SuperAddrs
...
)
value
:=
types
.
Encode
(
&
item
)
action
.
db
.
Set
(
AddrKey
(),
value
)
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
AddrKey
(),
Value
:
value
})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
AddrKey
(),
Value
:
value
})
}
receipt
=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
nil
}
...
...
@@ -456,14 +457,14 @@ func (action *Action) IssuanceCreate(create *pty.IssuanceCreate) (*types.Receipt
}
// 根据最近抵押物价格计算需要冻结的BTY数量
func
getBtyNumToFrozen
(
value
int64
,
price
float64
,
ratio
float64
)
(
int64
,
error
)
{
func
getBtyNumToFrozen
(
value
int64
,
price
float64
,
ratio
float64
)
(
int64
,
error
)
{
if
price
==
0
{
clog
.
Error
(
"Bty price should greate to 0"
)
return
0
,
pty
.
ErrPriceInvalid
}
valueReal
:=
float64
(
value
)
/
1e8
btyValue
:=
valueReal
/
(
price
*
ratio
)
valueReal
:=
float64
(
value
)
/
1e8
btyValue
:=
valueReal
/
(
price
*
ratio
)
return
int64
(
math
.
Trunc
((
btyValue
+
0.0000001
)
*
1e4
))
*
1e4
,
nil
}
...
...
@@ -735,7 +736,7 @@ func (action *Action) systemLiquidation(issu *pty.Issuance, price float64) (*typ
var
kv
[]
*
types
.
KeyValue
for
index
,
debtRecord
:=
range
issu
.
DebtRecords
{
if
debtRecord
.
LiquidationPrice
*
PriceWarningRate
<
price
{
if
debtRecord
.
LiquidationPrice
*
PriceWarningRate
<
price
{
if
debtRecord
.
Status
==
pty
.
IssuanceUserStatusWarning
{
debtRecord
.
PreStatus
=
debtRecord
.
Status
debtRecord
.
Status
=
pty
.
IssuanceUserStatusCreate
...
...
@@ -797,7 +798,7 @@ func (action *Action) expireLiquidation(issu *pty.Issuance) (*types.Receipt, err
var
kv
[]
*
types
.
KeyValue
for
index
,
debtRecord
:=
range
issu
.
DebtRecords
{
if
debtRecord
.
ExpireTime
-
ExpireWarningTime
>
action
.
blocktime
{
if
debtRecord
.
ExpireTime
-
ExpireWarningTime
>
action
.
blocktime
{
continue
}
...
...
@@ -862,7 +863,7 @@ func pricePolicy(feed *pty.IssuanceFeed) float64 {
return
0
}
for
i
,
price
:=
range
feed
.
Price
{
totalPrice
+=
price
*
(
float64
(
feed
.
Volume
[
i
])
/
float64
(
totalVolume
))
totalPrice
+=
price
*
(
float64
(
feed
.
Volume
[
i
])
/
float64
(
totalVolume
))
}
return
totalPrice
...
...
@@ -903,7 +904,7 @@ func (action *Action) IssuanceFeed(feed *pty.IssuanceFeed) (*types.Receipt, erro
}
// 超时清算判断
if
issu
.
LatestExpireTime
-
ExpireWarningTime
<=
action
.
blocktime
{
if
issu
.
LatestExpireTime
-
ExpireWarningTime
<=
action
.
blocktime
{
receipt
,
err
:=
action
.
expireLiquidation
(
issu
)
if
err
!=
nil
{
clog
.
Error
(
"IssuancePriceFeed"
,
"Issuance ID"
,
issu
.
IssuanceId
,
"expire liquidation error"
,
err
)
...
...
plugin/dapp/issuance/executor/keys.go
View file @
bdf8e51e
plugin/dapp/issuance/executor/query.go
View file @
bdf8e51e
...
...
@@ -10,7 +10,7 @@ import (
)
func
(
c
*
Issuance
)
Query_IssuanceInfoByID
(
req
*
pty
.
ReqIssuanceInfo
)
(
types
.
Message
,
error
)
{
issu
,
err
:=
queryIssuanceByID
(
c
.
GetStateDB
(),
req
.
IssuanceId
)
issu
,
err
:=
queryIssuanceByID
(
c
.
GetStateDB
(),
req
.
IssuanceId
)
if
err
!=
nil
{
clog
.
Error
(
"Query_IssuanceInfoByID"
,
"id"
,
req
.
IssuanceId
,
"error"
,
err
)
return
nil
,
err
...
...
@@ -33,7 +33,7 @@ func (c *Issuance) Query_IssuanceInfoByID(req *pty.ReqIssuanceInfo) (types.Messa
func
(
c
*
Issuance
)
Query_IssuanceInfoByIDs
(
req
*
pty
.
ReqIssuanceInfos
)
(
types
.
Message
,
error
)
{
infos
:=
&
pty
.
RepIssuanceCurrentInfos
{}
for
_
,
id
:=
range
req
.
IssuanceIds
{
issu
,
err
:=
queryIssuanceByID
(
c
.
GetStateDB
(),
id
)
issu
,
err
:=
queryIssuanceByID
(
c
.
GetStateDB
(),
id
)
if
err
!=
nil
{
clog
.
Error
(
"Query_IssuanceInfoByID"
,
"id"
,
id
,
"error"
,
err
)
return
nil
,
err
...
...
@@ -91,7 +91,7 @@ func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecordsByAddr
if
req
.
Status
==
0
{
ret
.
Records
=
records
}
else
{
for
_
,
record
:=
range
records
{
for
_
,
record
:=
range
records
{
if
record
.
Status
==
req
.
Status
{
ret
.
Records
=
append
(
ret
.
Records
,
record
)
}
...
...
@@ -120,5 +120,5 @@ func (c *Issuance) Query_IssuancePrice(req *pty.ReqIssuanceRecordsByStatus) (typ
return
nil
,
err
}
return
&
pty
.
RepIssuancePrice
{
Price
:
price
},
nil
return
&
pty
.
RepIssuancePrice
{
Price
:
price
},
nil
}
plugin/dapp/issuance/types/issuance.go
View file @
bdf8e51e
...
...
@@ -290,7 +290,7 @@ func CreateRawIssuanceManageTx(cfg *types.Chain33Config, parm *IssuanceManageTx)
return
nil
,
types
.
ErrInvalidParam
}
v
:=
&
IssuanceManage
{
SuperAddrs
:
parm
.
Addr
}
v
:=
&
IssuanceManage
{
SuperAddrs
:
parm
.
Addr
}
manage
:=
&
IssuanceAction
{
Ty
:
IssuanceActionManage
,
...
...
plugin/dapp/issuance/types/issuance.pb.go
View file @
bdf8e51e
This diff is collapsed.
Click to expand it.
plugin/dapp/issuance/types/tx.go
View file @
bdf8e51e
plugin/dapp/issuance/types/types.go
View file @
bdf8e51e
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