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
83a7a649
Commit
83a7a649
authored
Jan 14, 2020
by
mdj33
Committed by
vipwzw
Feb 18, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add game para chain
parent
40bb46f6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
269 additions
and
78 deletions
+269
-78
docker-compose-paracross.yml
plugin/dapp/paracross/cmd/build/docker-compose-paracross.yml
+5
-0
testcase.sh
plugin/dapp/paracross/cmd/build/testcase.sh
+191
-40
action.go
plugin/dapp/paracross/executor/action.go
+41
-7
asset.go
plugin/dapp/paracross/executor/asset.go
+30
-29
exec.go
plugin/dapp/paracross/executor/exec.go
+1
-1
superaccount.go
plugin/dapp/paracross/executor/superaccount.go
+1
-1
No files found.
plugin/dapp/paracross/cmd/build/docker-compose-paracross.yml
View file @
83a7a649
...
@@ -25,12 +25,17 @@ services:
...
@@ -25,12 +25,17 @@ services:
expose
:
expose
:
-
"
8802"
-
"
8802"
chain29
:
entrypoint
:
/root/entrypoint.sh
environment
:
PARAFILE
:
"
/root/chain33.para29.toml"
nginx
:
nginx
:
image
:
nginx:latest
image
:
nginx:latest
depends_on
:
depends_on
:
-
chain33
-
chain33
-
chain30
-
chain30
-
chain29
volumes
:
volumes
:
-
./nginx.conf:/etc/nginx/nginx.conf
-
./nginx.conf:/etc/nginx/nginx.conf
expose
:
expose
:
...
...
plugin/dapp/paracross/cmd/build/testcase.sh
View file @
83a7a649
...
@@ -4,9 +4,11 @@ PARA_CLI="docker exec ${NODE3} /root/chain33-para-cli"
...
@@ -4,9 +4,11 @@ PARA_CLI="docker exec ${NODE3} /root/chain33-para-cli"
PARA_CLI2
=
"docker exec
${
NODE2
}
/root/chain33-para-cli"
PARA_CLI2
=
"docker exec
${
NODE2
}
/root/chain33-para-cli"
PARA_CLI1
=
"docker exec
${
NODE1
}
/root/chain33-para-cli"
PARA_CLI1
=
"docker exec
${
NODE1
}
/root/chain33-para-cli"
PARA_CLI4
=
"docker exec
${
NODE4
}
/root/chain33-para-cli"
PARA_CLI4
=
"docker exec
${
NODE4
}
/root/chain33-para-cli"
PARA_CLI5
=
"docker exec
${
NODE5
}
/root/chain33-para-cli --paraName user.p.game."
MAIN_CLI
=
"docker exec
${
NODE3
}
/root/chain33-cli"
MAIN_CLI
=
"docker exec
${
NODE3
}
/root/chain33-cli"
PARANAME
=
"para"
PARANAME
=
"para"
PARANAME_GAME
=
"game"
PARA_COIN_FROZEN
=
"5.0000"
PARA_COIN_FROZEN
=
"5.0000"
MainLoopCheckForkHeight
=
"60"
MainLoopCheckForkHeight
=
"60"
...
@@ -19,21 +21,25 @@ fi
...
@@ -19,21 +21,25 @@ fi
#source test-rpc.sh
#source test-rpc.sh
function
para_init
()
{
function
para_init
()
{
para_set_toml chain33.para33.toml
para_set_toml chain33.para33.toml
"
$PARANAME
"
para_set_toml chain33.para32.toml
para_set_toml chain33.para32.toml
"
$PARANAME
"
para_set_toml chain33.para31.toml
para_set_toml chain33.para31.toml
"
$PARANAME
"
para_set_toml chain33.para30.toml
para_set_toml chain33.para30.toml
"
$PARANAME
"
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"/g'
chain33.para33.toml
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"/g'
chain33.para33.toml
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR"/g'
chain33.para32.toml
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR"/g'
chain33.para32.toml
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"/g'
chain33.para31.toml
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"/g'
chain33.para31.toml
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"/g'
chain33.para30.toml
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"/g'
chain33.para30.toml
para_set_toml chain33.para29.toml
"
$PARANAME_GAME
"
sed
-i
$xsedfix
's/^authAccount=.*/authAccount="1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"/g'
chain33.para29.toml
}
}
function
para_set_toml
()
{
function
para_set_toml
()
{
cp
chain33.para.toml
"
${
1
}
"
cp
chain33.para.toml
"
${
1
}
"
local
paraname
=
"
$2
"
sed
-i
$xsedfix
's/^Title.*/Title="user.p.'''
$
PARANAME
'''."/g'
"
${
1
}
"
sed
-i
$xsedfix
's/^Title.*/Title="user.p.'''
$
paraname
'''."/g'
"
${
1
}
"
sed
-i
$xsedfix
's/^# TestNet=.*/TestNet=true/g'
"
${
1
}
"
sed
-i
$xsedfix
's/^# TestNet=.*/TestNet=true/g'
"
${
1
}
"
sed
-i
$xsedfix
's/^startHeight=.*/startHeight=1/g'
"
${
1
}
"
sed
-i
$xsedfix
's/^startHeight=.*/startHeight=1/g'
"
${
1
}
"
sed
-i
$xsedfix
's/^interval=.*/interval=4/g'
"
${
1
}
"
sed
-i
$xsedfix
's/^interval=.*/interval=4/g'
"
${
1
}
"
...
@@ -93,6 +99,15 @@ function para_set_wallet() {
...
@@ -93,6 +99,15 @@ function para_set_wallet() {
para_import_key
"
${
PARA_CLI
}
"
"0xfdf2bbff853ecff2e7b86b2a8b45726c6538ca7d1403dc94e50131ef379bdca0"
"othernode1"
para_import_key
"
${
PARA_CLI
}
"
"0xfdf2bbff853ecff2e7b86b2a8b45726c6538ca7d1403dc94e50131ef379bdca0"
"othernode1"
#1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB
#1NNaYHkscJaLJ2wUrFNeh6cQXBS4TrFYeB
para_import_key
"
${
PARA_CLI
}
"
"0x794443611e7369a57b078881445b93b754cbc9b9b8f526535ab9c6d21d29203d"
"othernode2"
para_import_key
"
${
PARA_CLI
}
"
"0x794443611e7369a57b078881445b93b754cbc9b9b8f526535ab9c6d21d29203d"
"othernode2"
#cross_transfer
#14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
# para_import_key "${PARA_CLI5}" "0xCC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944" "genesis"
#1KS
para_import_wallet
"
${
PARA_CLI5
}
"
"0x6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b"
"paraAuthAccount"
#1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
para_import_key
"
${
PARA_CLI5
}
"
"0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1"
"cross_transfer"
}
}
function
para_import_wallet
()
{
function
para_import_wallet
()
{
...
@@ -143,6 +158,7 @@ function para_transfer() {
...
@@ -143,6 +158,7 @@ function para_transfer() {
main_transfer2account
"1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR"
main_transfer2account
"1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR"
main_transfer2account
"1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"
main_transfer2account
"1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"
main_transfer2account
"1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"
main_transfer2account
"1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"
main_transfer2account
"1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu"
# super node test
# super node test
main_transfer2account
"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY"
main_transfer2account
"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY"
main_transfer2account
"1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj"
main_transfer2account
"1Ka7EPFRqs3v9yreXG6qA4RQbNmbPJCZPj"
...
@@ -152,12 +168,16 @@ function para_transfer() {
...
@@ -152,12 +168,16 @@ function para_transfer() {
main_transfer2account
"1G5Cjy8LuQex2fuYv3gzb7B8MxAnxLEqt3"
10
main_transfer2account
"1G5Cjy8LuQex2fuYv3gzb7B8MxAnxLEqt3"
10
main_transfer2account
"1EZKahMRfoMiKp1BewjWrQWoaJ9kmC4hum"
10
main_transfer2account
"1EZKahMRfoMiKp1BewjWrQWoaJ9kmC4hum"
10
#relay rpc test
#relay rpc test
para_transfer2account
"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
para_transfer2account
"
${
PARA_CLI
}
"
"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
para_transfer2account
"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY"
para_transfer2account
"
${
PARA_CLI
}
"
"1E5saiXVb9mW8wcWUUZjsHJPZs5GmdzuSY"
para_transfer2account
"1PUiGcbsccfxW3zuvHXZBJfznziph5miAo"
para_transfer2account
"
${
PARA_CLI
}
"
"1PUiGcbsccfxW3zuvHXZBJfznziph5miAo"
para_transfer2account
"1EDnnePAZN48aC2hiTDzhkczfF39g1pZZX"
para_transfer2account
"
${
PARA_CLI
}
"
"1EDnnePAZN48aC2hiTDzhkczfF39g1pZZX"
#cross_transfer
#0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1
para_transfer2account
"
${
PARA_CLI5
}
"
"1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu"
#rpc test pool addr
#rpc test pool addr
para_transfer2account
"1PcGKYYoLn1PLLJJodc1UpgWGeFAQasAkx"
500000
para_transfer2account
"
${
PARA_CLI
}
"
"
1PcGKYYoLn1PLLJJodc1UpgWGeFAQasAkx"
500000
block_wait
"
${
CLI
}
"
2
block_wait
"
${
CLI
}
"
2
echo
"=========== # main chain send to paracross ============="
echo
"=========== # main chain send to paracross ============="
...
@@ -168,8 +188,6 @@ function para_transfer() {
...
@@ -168,8 +188,6 @@ function para_transfer() {
block_wait
"
${
CLI
}
"
2
block_wait
"
${
CLI
}
"
2
# para_create_manage_nodegroup
echo
"=========== # config token blacklist ============="
echo
"=========== # config token blacklist ============="
#token precreate
#token precreate
txhash
=
$(
para_configkey
"
${
PARA_CLI
}
"
"token-blacklist"
"BTY"
)
txhash
=
$(
para_configkey
"
${
PARA_CLI
}
"
"token-blacklist"
"BTY"
)
...
@@ -189,12 +207,12 @@ function main_transfer2account() {
...
@@ -189,12 +207,12 @@ function main_transfer2account() {
}
}
function
para_transfer2account
()
{
function
para_transfer2account
()
{
echo
"
${
1
}
"
echo
"
${
2
}
"
local
coins
=
1000
local
coins
=
1000
if
[
"$#"
-ge
2
]
;
then
if
[
"$#"
-ge
3
]
;
then
coins
=
"
$
2
"
coins
=
"
$
3
"
fi
fi
hash1
=
$(${
PARA_CLI
}
send coins transfer
-a
"
$coins
"
-n
transfer
-t
"
${
1
}
"
-k
0xCC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944
)
hash1
=
$(${
1
}
send coins transfer
-a
"
$coins
"
-n
transfer
-t
"
${
2
}
"
-k
0xCC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944
)
echo
"
${
hash1
}
"
echo
"
${
hash1
}
"
}
}
...
@@ -208,20 +226,6 @@ function main_transfer2paracross() {
...
@@ -208,20 +226,6 @@ function main_transfer2paracross() {
echo
"
${
hash1
}
"
echo
"
${
hash1
}
"
}
}
function
para_create_manage_nodegroup
()
{
echo
"=========== # para chain send config ============="
para_configkey
"
${
CLI
}
"
"paracross-nodes-user.p.
${
PARANAME
}
."
"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"
para_configkey
"
${
CLI
}
"
"paracross-nodes-user.p.
${
PARANAME
}
."
"1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR"
para_configkey
"
${
CLI
}
"
"paracross-nodes-user.p.
${
PARANAME
}
."
"1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"
para_configkey
"
${
CLI
}
"
"paracross-nodes-user.p.
${
PARANAME
}
."
"1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"
para_configkey
"
${
PARA_CLI
}
"
"paracross-nodes-user.p.
${
PARANAME
}
."
"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"
para_configkey
"
${
PARA_CLI
}
"
"paracross-nodes-user.p.
${
PARANAME
}
."
"1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR"
para_configkey
"
${
PARA_CLI
}
"
"paracross-nodes-user.p.
${
PARANAME
}
."
"1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"
para_configkey
"
${
PARA_CLI
}
"
"paracross-nodes-user.p.
${
PARANAME
}
."
"1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"
block_wait
"
${
CLI
}
"
1
}
function
para_configkey
()
{
function
para_configkey
()
{
tx
=
$(${
1
}
config config_tx
-o
add
-c
"
${
2
}
"
-v
"
${
3
}
"
)
tx
=
$(${
1
}
config config_tx
-o
add
-c
"
${
2
}
"
-v
"
${
3
}
"
)
sign
=
$(${
CLI
}
wallet sign
-k
0xc34b5d9d44ac7b754806f761d3d4d2c4fe5214f6b074c19f069c4f5c2a29c8cc
-d
"
${
tx
}
"
)
sign
=
$(${
CLI
}
wallet sign
-k
0xc34b5d9d44ac7b754806f761d3d4d2c4fe5214f6b074c19f069c4f5c2a29c8cc
-d
"
${
tx
}
"
)
...
@@ -357,15 +361,16 @@ function para_cross_transfer_withdraw() {
...
@@ -357,15 +361,16 @@ function para_cross_transfer_withdraw() {
local times
=
200
local times
=
200
while
true
;
do
while
true
;
do
acc
=
$(${
CLI
}
account balance
-e
paracross
-a
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv | jq
-r
".balance"
)
acc
=
$(${
CLI
}
account balance
-e
paracross
-a
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv | jq
-r
".balance"
)
echo
"account balance is
${
acc
}
, expect 9.3 "
acc_para
=
$(${
PARA_CLI
}
asset balance
-a
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv
--asset_exec
paracross
--asset_symbol
coins.bty | jq
-r
".balance"
)
if
[
"
${
acc
}
"
!=
"9.3000"
]
;
then
echo
"account balance is
${
acc
}
, expect 9.3, para acct balance is
${
acc_para
}
,expect 0.7 "
if
[
"
${
acc
}
"
!=
"9.3000"
]
||
[
"
${
acc_para
}
"
!=
"0.7000"
]
;
then
block_wait
"
${
CLI
}
"
2
block_wait
"
${
CLI
}
"
2
times
=
$((
times
-
1
))
times
=
$((
times
-
1
))
if
[
$times
-le
0
]
;
then
if
[
$times
-le
0
]
;
then
echo
"para_cross_transfer_withdraw failed"
echo
"para_cross_transfer_withdraw failed"
${
CLI
}
tx query
-s
"
$hash2
"
${
CLI
}
tx query
-s
"
$hash2
"
${
PARA_CLI
}
tx query
-s
"
$hash2
"
${
PARA_CLI
}
tx query
-s
"
$hash2
"
${
PARA_CLI
}
asset balance
-a
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv
-
e
user.p.para.paracross
-
-asset_exec
paracross
--asset_symbol
coins.bty
${
PARA_CLI
}
asset balance
-a
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv
--asset_exec
paracross
--asset_symbol
coins.bty
exit
1
exit
1
fi
fi
else
else
...
@@ -465,13 +470,14 @@ function para_cross_transfer_withdraw_for_token() {
...
@@ -465,13 +470,14 @@ function para_cross_transfer_withdraw_for_token() {
local times
=
100
local times
=
100
while
true
;
do
while
true
;
do
acc
=
$(${
CLI
}
asset balance
-a
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv
--asset_symbol
FZM
--asset_exec
token
-e
paracross | jq
-r
".balance"
)
acc
=
$(${
CLI
}
asset balance
-a
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv
--asset_symbol
FZM
--asset_exec
token
-e
paracross | jq
-r
".balance"
)
echo
"account balance is
${
acc
}
, expect 224 "
acc_para
=
$(${
PARA_CLI
}
asset balance
-a
12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv
--asset_symbol
token.FZM
--asset_exec
paracross
-e
paracross | jq
-r
".balance"
)
if
[
"
${
acc
}
"
!=
"224.0000"
]
;
then
echo
"account balance is
${
acc
}
, expect 224, para acct balance is
${
acc_para
}
, execpt=109 "
if
[
"
${
acc
}
"
!=
"224.0000"
]
||
[
"
${
acc_para
}
"
!=
"109.0000"
]
;
then
block_wait
"
${
CLI
}
"
2
block_wait
"
${
CLI
}
"
2
times
=
$((
times
-
1
))
times
=
$((
times
-
1
))
if
[
$times
-le
0
]
;
then
if
[
$times
-le
0
]
;
then
echo
"para_cross_transfer_withdraw failed"
echo
"para_cross_transfer_withdraw failed"
exit
1
#
exit 1
fi
fi
else
else
echo
"para_cross_transfer_withdraw success"
echo
"para_cross_transfer_withdraw success"
...
@@ -480,6 +486,149 @@ function para_cross_transfer_withdraw_for_token() {
...
@@ -480,6 +486,149 @@ function para_cross_transfer_withdraw_for_token() {
done
done
}
}
function
para_create_nodegroup_gamechain
()
{
echo
"=========== # game para chain create node group test ============="
##apply
txhash
=
$(${
CLI
}
--paraName
user.p.game. send para nodegroup apply
-a
"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"
-c
5
-k
0xd165c84ed37c2a427fea487470ee671b7a0495d68d82607cafbc6348bf23bec5
)
echo
"tx=
$txhash
"
query_tx
"
${
PARA_CLI5
}
"
"
${
txhash
}
"
id
=
$txhash
echo
"=========== # game para chain approve node group ============="
##approve
txhash
=
$(${
CLI
}
--paraName
user.p.game. send para nodegroup approve
-i
"
$id
"
-c
5
-k
0xc34b5d9d44ac7b754806f761d3d4d2c4fe5214f6b074c19f069c4f5c2a29c8cc
)
echo
"tx=
$txhash
"
query_tx
"
${
PARA_CLI5
}
"
"
${
txhash
}
"
status
=
$(${
PARA_CLI5
}
para nodegroup status | jq
-r
".status"
)
if
[
"
$status
"
!=
2
]
;
then
echo
"status not approve status=
$status
"
exit
1
fi
${
PARA_CLI5
}
para nodegroup addrs
}
function
para_cross_transfer_from_parachain
()
{
echo
"=========== # para cross transfer from parachain test ============="
balance
=
$(${
PARA_CLI5
}
account balance
-a
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
-e
user.p.game.coins | jq
-r
".balance"
)
if
[
"
${
balance
}
"
!=
"1000.0000"
]
;
then
echo
"para account 1BM2xhBk should be 1000, real is
$balance
"
exit
1
fi
hash
=
$(${
PARA_CLI5
}
send coins send_exec
-e
user.p.game.paracross
-a
300
-k
0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1
)
echo
"
${
hash
}
"
query_tx
"
${
PARA_CLI5
}
"
"
${
hash
}
"
balance
=
$(${
PARA_CLI5
}
account balance
-a
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
-e
user.p.game.paracross | jq
-r
".balance"
)
if
[
"
${
balance
}
"
!=
"300.0000"
]
;
then
echo
"para paracross account 1BM2xhBk should be 300, real is
$balance
"
exit
1
fi
echo
"========== #1. user.p.game chain transfer to main chain 300 user.p.game.coins.para, remain=700 ==========="
hash
=
$(${
PARA_CLI5
}
send para cross_transfer
-a
300
-s
user.p.game.coins.para
-d
1
-t
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
-k
0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1
)
echo
"
${
hash
}
"
query_tx
"
${
PARA_CLI5
}
"
"
${
hash
}
"
check_cross_transfer_game_balance
"300.0000"
"0.0000"
"
${
hash
}
"
echo
"check asset transfer tx=
$hash
"
res
=
$(${
CLI
}
para asset_txinfo
-s
"
${
hash
}
"
)
echo
"
$res
"
succ
=
$(
jq
-r
".success"
<<<
"
$res
"
)
if
[
"
${
succ
}
"
!=
"true"
]
;
then
echo
"para asset transfer tx report fail"
exit
1
fi
echo
"========== #2. main transfer 200 user.p.game.coins.para game chain asset to para chain, main remain=100, parachain=200 ===="
hash
=
$(${
CLI
}
send para transfer_exec
-e
paracross
-a
200
-s
user.p.game.coins.para
-k
0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1
)
echo
"
${
hash
}
"
query_tx
"
${
CLI
}
"
"
${
hash
}
"
hash
=
$(${
CLI
}
--paraName
=
user.p.para. send para cross_transfer
-a
200
-s
user.p.game.coins.para
-d
0
-t
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
-k
0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1
)
echo
"
${
hash
}
"
query_tx
"
${
CLI
}
"
"
${
hash
}
"
check_cross_transfer_para_balance
"100.0000"
"200.0000"
"
${
hash
}
"
echo
"========== #3. withdraw game chain asset to main chain from para chain 50 user.p.game.coins.para,parachain=150,main=150 ===="
hash
=
$(${
CLI
}
--paraName
=
user.p.para. send para cross_transfer
-a
50
-s
user.p.game.coins.para
-d
1
-t
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
-k
0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1
)
echo
"
${
hash
}
"
query_tx
"
${
CLI
}
"
"
${
hash
}
"
check_cross_transfer_para_balance
"100.0000"
"150.0000"
"
${
hash
}
"
echo
"withdraw 50 from paracross exec"
hash
=
$(${
CLI
}
send para withdraw
-a
50
-e
paracross
-s
user.p.game.coins.para
-k
0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1
)
echo
"
${
hash
}
"
query_tx
"
${
CLI
}
"
"
${
hash
}
"
acc
=
$(${
CLI
}
asset balance
-a
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
--asset_exec
paracross
--asset_symbol
user.p.game.coins.para
-e
paracross | jq
-r
".balance"
)
if
[
"
${
acc
}
"
!=
"150.0000"
]
;
then
echo
"para_cross_transfer_ withdraw from paracross exec failed, acc=
$acc
"
exit
1
fi
echo
"========== #4. withdraw game chain asset to game chain from main chain 50 user.p.game.coins.para,parachain=150,main=100,para=50+700 ======"
hash
=
$(${
CLI
}
--paraName
=
user.p.game. send para cross_transfer
-a
50
-s
user.p.game.coins.para
-d
0
-t
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
-k
0x128de4afa7c061c00d854a1bca51b58e80a2c292583739e5aebf4c0f778959e1
)
echo
"
${
hash
}
"
query_tx
"
${
CLI
}
"
"
${
hash
}
"
check_cross_transfer_game_balance
"100.0000"
"50.0000"
"
${
hash
}
"
}
function
check_cross_transfer_para_balance
()
{
local times
=
200
while
true
;
do
acc
=
$(${
CLI
}
asset balance
-a
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
--asset_exec
paracross
--asset_symbol
user.p.game.coins.para
-e
paracross | jq
-r
".balance"
)
acc_para
=
$(${
PARA_CLI
}
asset balance
-a
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
--asset_exec
paracross
--asset_symbol
paracross.user.p.game.coins.para
-e
paracross | jq
-r
".balance"
)
res
=
$(${
CLI
}
para asset_txinfo
-s
"
${
hash
}
"
)
echo
"
$res
"
succ
=
$(
jq
-r
".success"
<<<
"
$res
"
)
echo
"main account balance is
${
acc
}
, expect
$1
, para acct balance is
${
acc_para
}
,expect
$2
, cross rst=
$succ
, expect=true "
if
[
"
${
acc
}
"
!=
"
$1
"
]
||
[
"
${
acc_para
}
"
!=
"
$2
"
]
||
[
"
${
succ
}
"
!=
"true"
]
;
then
block_wait
"
${
CLI
}
"
2
times
=
$((
times
-
1
))
if
[
$times
-le
0
]
;
then
echo
"para_cross_transfer main chain to para chain failed"
${
CLI
}
tx query
-s
"
$hash
"
${
PARA_CLI
}
tx query
-s
"
$hash
"
exit
1
fi
else
echo
"para_cross_transfer main chain to para chain success"
break
fi
done
}
function
check_cross_transfer_game_balance
()
{
local times
=
200
while
true
;
do
acc
=
$(${
CLI
}
asset balance
-a
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
--asset_exec
paracross
--asset_symbol
user.p.game.coins.para
-e
paracross | jq
-r
".balance"
)
acc_para
=
$(${
PARA_CLI5
}
account balance
-a
1BM2xhBk95qoae8zKNDWwAVGgBERhb7DQu
-e
user.p.game.paracross | jq
-r
".balance"
)
res
=
$(${
CLI
}
para asset_txinfo
-s
"
${
hash
}
"
)
echo
"
$res
"
succ
=
$(
jq
-r
".success"
<<<
"
$res
"
)
echo
"main account balance is
${
acc
}
, expect
$1
, para exec acct balance is
${
acc_para
}
,expect
$2
, cross rst=
$succ
, expect=true "
if
[
"
${
acc
}
"
!=
"
$1
"
]
||
[
"
${
acc_para
}
"
!=
"
$2
"
]
||
[
"
${
succ
}
"
!=
"true"
]
;
then
block_wait
"
${
CLI
}
"
2
times
=
$((
times
-
1
))
if
[
$times
-le
0
]
;
then
echo
"para_cross_transfer main chain and game chain failed"
${
CLI
}
tx query
-s
"
$3
"
${
PARA_CLI5
}
tx query
-s
"
$3
"
exit
1
fi
else
echo
"para_cross_transfer main chain and game chain success"
break
fi
done
}
function
para_create_nodegroup_test
()
{
function
para_create_nodegroup_test
()
{
echo
"=========== # para chain create node group test ============="
echo
"=========== # para chain create node group test ============="
##apply
##apply
...
@@ -935,17 +1084,19 @@ function privacy_transfer_test() {
...
@@ -935,17 +1084,19 @@ function privacy_transfer_test() {
function
para_test
()
{
function
para_test
()
{
echo
"=========== # para chain test ============="
echo
"=========== # para chain test ============="
block_wait2height
"
${
PARA_CLI
}
"
$MainLoopCheckForkHeight
"1"
#
block_wait2height "${PARA_CLI}" $MainLoopCheckForkHeight "1"
para_create_nodegroup
para_create_nodegroup
para_nodegroup_behalf_quit_test
para_nodegroup_behalf_quit_test
para_nodemanage_cancel_test
para_create_nodegroup_gamechain
para_nodemanage_test
# para_nodemanage_cancel_test
para_nodemanage_node_behalf_join
# para_nodemanage_test
# para_nodemanage_node_behalf_join
token_create
"
${
PARA_CLI
}
"
token_create
"
${
PARA_CLI
}
"
token_transfer
"
${
PARA_CLI
}
"
token_transfer
"
${
PARA_CLI
}
"
para_cross_transfer_withdraw
para_cross_transfer_withdraw
para_cross_transfer_withdraw_for_token
para_cross_transfer_withdraw_for_token
privacy_transfer_test
"
${
PARA_CLI
}
"
privacy_transfer_test
"
${
PARA_CLI
}
"
para_cross_transfer_from_parachain
}
}
function
paracross
()
{
function
paracross
()
{
...
...
plugin/dapp/paracross/executor/action.go
View file @
83a7a649
...
@@ -1009,10 +1009,18 @@ func (a *action) execCrossTxs(status *pt.ParacrossNodeStatus) (*types.Receipt, e
...
@@ -1009,10 +1009,18 @@ func (a *action) execCrossTxs(status *pt.ParacrossNodeStatus) (*types.Receipt, e
func
(
a
*
action
)
AssetTransfer
(
transfer
*
types
.
AssetsTransfer
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
AssetTransfer
(
transfer
*
types
.
AssetsTransfer
)
(
*
types
.
Receipt
,
error
)
{
clog
.
Debug
(
"Paracross.Exec"
,
"AssetTransfer"
,
transfer
.
Cointoken
,
"transfer"
,
""
)
clog
.
Debug
(
"Paracross.Exec"
,
"AssetTransfer"
,
transfer
.
Cointoken
,
"transfer"
,
""
)
//rbk fork后 如果没有nodegroup conf,也不允许跨链
if
a
.
api
.
GetConfig
()
.
IsDappFork
(
a
.
height
,
pt
.
ParaX
,
pt
.
ForkParaAssetTransferRbk
)
{
err
:=
a
.
isAllowTransfer
()
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"AssetTransfer not allow"
)
}
}
receipt
,
err
:=
a
.
assetTransfer
(
transfer
)
receipt
,
err
:=
a
.
assetTransfer
(
transfer
)
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"AssetTransfer failed"
,
"err"
,
err
)
return
nil
,
errors
.
Wrap
(
err
,
"AssetTransfer failed"
)
return
nil
,
errors
.
Cause
(
err
)
}
}
return
receipt
,
nil
return
receipt
,
nil
}
}
...
@@ -1026,6 +1034,14 @@ func (a *action) AssetWithdraw(withdraw *types.AssetsWithdraw) (*types.Receipt,
...
@@ -1026,6 +1034,14 @@ func (a *action) AssetWithdraw(withdraw *types.AssetsWithdraw) (*types.Receipt,
}
}
}
}
//rbk fork后 如果没有nodegroup conf,也不允许跨链
if
cfg
.
IsDappFork
(
a
.
height
,
pt
.
ParaX
,
pt
.
ForkParaAssetTransferRbk
)
{
err
:=
a
.
isAllowTransfer
()
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"AssetTransfer not allow"
)
}
}
isPara
:=
cfg
.
IsPara
()
isPara
:=
cfg
.
IsPara
()
if
!
isPara
{
if
!
isPara
{
// 需要平行链先执行, 达成共识时,继续执行
// 需要平行链先执行, 达成共识时,继续执行
...
@@ -1035,8 +1051,7 @@ func (a *action) AssetWithdraw(withdraw *types.AssetsWithdraw) (*types.Receipt,
...
@@ -1035,8 +1051,7 @@ func (a *action) AssetWithdraw(withdraw *types.AssetsWithdraw) (*types.Receipt,
"txHash"
,
common
.
ToHex
(
a
.
tx
.
Hash
()),
"token name"
,
withdraw
.
Cointoken
)
"txHash"
,
common
.
ToHex
(
a
.
tx
.
Hash
()),
"token name"
,
withdraw
.
Cointoken
)
receipt
,
err
:=
a
.
assetWithdraw
(
withdraw
,
a
.
tx
)
receipt
,
err
:=
a
.
assetWithdraw
(
withdraw
,
a
.
tx
)
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"AssetWithdraw failed"
,
"err"
,
err
)
return
nil
,
errors
.
Wrap
(
err
,
"AssetWithdraw failed"
)
return
nil
,
errors
.
Cause
(
err
)
}
}
return
receipt
,
nil
return
receipt
,
nil
}
}
...
@@ -1046,9 +1061,14 @@ func (a *action) CrossAssetTransfer(transfer *pt.CrossAssetTransfer) (*types.Rec
...
@@ -1046,9 +1061,14 @@ func (a *action) CrossAssetTransfer(transfer *pt.CrossAssetTransfer) (*types.Rec
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
isPara
:=
cfg
.
IsPara
()
isPara
:=
cfg
.
IsPara
()
err
:=
a
.
isAllowTransfer
()
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"CrossAssetTransfer not Allow"
)
}
act
,
err
:=
getCrossAction
(
transfer
,
string
(
a
.
tx
.
Execer
))
act
,
err
:=
getCrossAction
(
transfer
,
string
(
a
.
tx
.
Execer
))
if
act
==
pt
.
ParacrossNoneTransfer
{
if
act
==
pt
.
ParacrossNoneTransfer
{
return
nil
,
err
return
nil
,
err
ors
.
Wrap
(
err
,
"CrossAssetTransfer non action"
)
}
}
// 需要平行链先执行, 达成共识时,继续执行
// 需要平行链先执行, 达成共识时,继续执行
if
!
isPara
&&
(
act
==
pt
.
ParacrossMainWithdraw
||
act
==
pt
.
ParacrossParaTransfer
)
{
if
!
isPara
&&
(
act
==
pt
.
ParacrossMainWithdraw
||
act
==
pt
.
ParacrossParaTransfer
)
{
...
@@ -1056,8 +1076,7 @@ func (a *action) CrossAssetTransfer(transfer *pt.CrossAssetTransfer) (*types.Rec
...
@@ -1056,8 +1076,7 @@ func (a *action) CrossAssetTransfer(transfer *pt.CrossAssetTransfer) (*types.Rec
}
}
receipt
,
err
:=
a
.
crossAssetTransfer
(
transfer
,
act
,
a
.
tx
)
receipt
,
err
:=
a
.
crossAssetTransfer
(
transfer
,
act
,
a
.
tx
)
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"CrossAssetTransfer failed"
,
"err"
,
err
)
return
nil
,
errors
.
Wrap
(
err
,
"CrossAssetTransfer failed"
)
return
nil
,
err
}
}
return
receipt
,
nil
return
receipt
,
nil
}
}
...
@@ -1129,6 +1148,21 @@ func getTitleFrom(exec []byte) ([]byte, error) {
...
@@ -1129,6 +1148,21 @@ func getTitleFrom(exec []byte) ([]byte, error) {
return
exec
[
:
last
+
1
],
nil
return
exec
[
:
last
+
1
],
nil
}
}
func
(
a
*
action
)
isAllowTransfer
()
error
{
tit
,
err
:=
getTitleFrom
(
a
.
tx
.
Execer
)
if
err
!=
nil
{
return
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"CrossAssetTransfer, not para chain exec=%s"
,
string
(
a
.
tx
.
Execer
))
}
nodes
,
err
:=
a
.
getNodesGroup
(
string
(
tit
))
if
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"CrossAssetTransfer get nodegroup err,title=%s"
,
tit
)
}
if
len
(
nodes
)
==
0
{
return
errors
.
Wrapf
(
err
,
"CrossAssetTransfer nodegroup not create,title=%s"
,
tit
)
}
return
nil
}
/*
/*
func (a *Paracross) CrossLimits(tx *types.Transaction, index int) bool {
func (a *Paracross) CrossLimits(tx *types.Transaction, index int) bool {
if tx.GroupCount < 2 {
if tx.GroupCount < 2 {
...
...
plugin/dapp/paracross/executor/asset.go
View file @
83a7a649
...
@@ -20,23 +20,19 @@ import (
...
@@ -20,23 +20,19 @@ import (
"github.com/pkg/errors"
"github.com/pkg/errors"
)
)
const
S
YMBOL_BTY
=
"bty"
const
S
ymbolBty
=
"bty"
//平行链向主链transfer,先在平行链处理,共识后再在主链铸造
//在用户看来,平行链的资产是user.p.test.ccny, 主链资产是coins.bty, 平行链往主链转还是主链往平行链转都是统一的名字
//主链的token转移到user.p.bb.平行链,在平行链上表示为mavl-paracross-token.symbol:
//如果主链上user.p.test.coins.ccny往user.p.test.平行链转,就是withdraw流程,如果往另一个平行链user.p.para.转,则是转移流程
//主链的平行链转移进来的token在主链表示为mavl-paracross-user.p.aa.token.symbol 转移到user.p.bb.平行链,在平行链bb上表示mavl-paracross-paracross.user.p.aa.token.symbol
//在用户看来,平行链的资产是user.p.test.ccny, 主链资产是coins.bty, 平行链往主链转还是主链往平行链转都是这个名字
//如果主链上user.p.test.coins.ccny往user.p.test.平行链转,就是withdraw流程,如果往另一个平行链user.p.xx.转,则是转移流程
//主链转移场景: type=0,tx.exec:user.p.test.
//主链转移场景: type=0,tx.exec:user.p.test.
//1. 主链本币转移: exec:coins/token symbol:{coins/token}.bty/cny or bty/cny,
//1. 主链本币转移:
original
exec:coins/token symbol:{coins/token}.bty/cny or bty/cny,
// 平行链资产: paracross-coins.bty
// 平行链资产: paracross-coins.bty
//2. 主链外币转移: exec:paracross, symbol: user.p.para.coins.ccny,
//2. 主链外币转移:
original
exec:paracross, symbol: user.p.para.coins.ccny,
// 平行链资产: paracross-paracross.user.p.para.coins.ccny
// 平行链资产: paracross-paracross.user.p.para.coins.ccny
//3. 平行链本币提回: exec:coins, symbol: user.p.test.coins.ccny
//3. 平行链本币提回:
original
exec:coins, symbol: user.p.test.coins.ccny
// 平行链资产: paracross账户coins.ccny资产释放
// 平行链资产: paracross账户coins.ccny资产释放
//平行链转移场景:type=1,tx.exec:user.p.test.
//平行链转移场景:type=1,tx.exec:user.p.test.
//1. 平行链本币转移: exec:coins/token, symbol:user.p.test.{coins/token}.ccny
//1. 平行链本币转移:
original
exec:coins/token, symbol:user.p.test.{coins/token}.ccny
// 主链产生资产: paracross-user.p.test.{coins}.ccny
// 主链产生资产: paracross-user.p.test.{coins}.ccny
//2. 主链外币提取: exec:paracross, symbol: user.p.para.coins.ccny
//2. 主链外币提取: exec:paracross, symbol: user.p.para.coins.ccny
// 主链恢复外币资产: user.p.test.paracross地址释放user.p.para.coins.ccny
// 主链恢复外币资产: user.p.test.paracross地址释放user.p.para.coins.ccny
...
@@ -47,6 +43,7 @@ func getCrossAction(transfer *pt.CrossAssetTransfer, txExecer string) (int64, er
...
@@ -47,6 +43,7 @@ func getCrossAction(transfer *pt.CrossAssetTransfer, txExecer string) (int64, er
if
!
ok
{
if
!
ok
{
return
pt
.
ParacrossNoneTransfer
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"getCrossAction wrong execer:%s"
,
txExecer
)
return
pt
.
ParacrossNoneTransfer
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"getCrossAction wrong execer:%s"
,
txExecer
)
}
}
//主链向平行链转移, 转移主链资产(包括主链本币和平行链转移进来的外币)或平行链资产withdraw
//主链向平行链转移, 转移主链资产(包括主链本币和平行链转移进来的外币)或平行链资产withdraw
if
transfer
.
Type
==
0
{
if
transfer
.
Type
==
0
{
// same prefix for paraChain and Symbol
// same prefix for paraChain and Symbol
...
@@ -66,12 +63,12 @@ func getCrossAction(transfer *pt.CrossAssetTransfer, txExecer string) (int64, er
...
@@ -66,12 +63,12 @@ func getCrossAction(transfer *pt.CrossAssetTransfer, txExecer string) (int64, er
return
pt
.
ParacrossMainWithdraw
,
nil
return
pt
.
ParacrossMainWithdraw
,
nil
}
}
//自动补充
一些参数,比如paracross执行器或symbol
//自动补充
修正原生执行器名字
func
formatTransfer
(
transfer
*
pt
.
CrossAssetTransfer
,
act
int64
)
*
pt
.
CrossAssetTransfer
{
func
formatTransfer
(
transfer
*
pt
.
CrossAssetTransfer
,
act
int64
)
*
pt
.
CrossAssetTransfer
{
newTransfer
:=
*
transfer
newTransfer
:=
*
transfer
if
act
==
pt
.
ParacrossMainTransfer
||
act
==
pt
.
ParacrossMainWithdraw
{
if
act
==
pt
.
ParacrossMainTransfer
||
act
==
pt
.
ParacrossMainWithdraw
{
//转移平行链资产到另一个平行链
//转移平行链资产到另一个平行链
if
strings
.
HasPrefix
(
transfer
.
AssetSymbol
,
types
.
ParaKeyX
)
{
if
strings
.
Contains
(
transfer
.
AssetSymbol
,
types
.
ParaKeyX
)
{
newTransfer
.
AssetExec
=
pt
.
ParaX
newTransfer
.
AssetExec
=
pt
.
ParaX
return
&
newTransfer
return
&
newTransfer
}
}
...
@@ -83,12 +80,13 @@ func formatTransfer(transfer *pt.CrossAssetTransfer, act int64) *pt.CrossAssetTr
...
@@ -83,12 +80,13 @@ func formatTransfer(transfer *pt.CrossAssetTransfer, act int64) *pt.CrossAssetTr
newTransfer
.
AssetSymbol
=
elements
[
len
(
elements
)
-
1
]
newTransfer
.
AssetSymbol
=
elements
[
len
(
elements
)
-
1
]
return
&
newTransfer
return
&
newTransfer
}
}
//symbol非空时候默认是token发行的
newTransfer
.
AssetExec
=
token
.
TokenX
newTransfer
.
AssetExec
=
token
.
TokenX
return
&
newTransfer
return
&
newTransfer
}
}
//assetSymbol 为null
//assetSymbol 为null
默认是coins.bty
newTransfer
.
AssetExec
=
coins
.
CoinsX
newTransfer
.
AssetExec
=
coins
.
CoinsX
newTransfer
.
AssetSymbol
=
S
YMBOL_BTY
newTransfer
.
AssetSymbol
=
S
ymbolBty
return
&
newTransfer
return
&
newTransfer
}
}
...
@@ -98,15 +96,13 @@ func formatTransfer(transfer *pt.CrossAssetTransfer, act int64) *pt.CrossAssetTr
...
@@ -98,15 +96,13 @@ func formatTransfer(transfer *pt.CrossAssetTransfer, act int64) *pt.CrossAssetTr
e
:=
strings
.
Split
(
transfer
.
AssetSymbol
,
"."
)
e
:=
strings
.
Split
(
transfer
.
AssetSymbol
,
"."
)
newTransfer
.
AssetSymbol
=
e
[
len
(
e
)
-
1
]
newTransfer
.
AssetSymbol
=
e
[
len
(
e
)
-
1
]
newTransfer
.
AssetExec
=
e
[
len
(
e
)
-
2
]
newTransfer
.
AssetExec
=
e
[
len
(
e
)
-
2
]
//user.p.xx.ccny,没有写coins 执行器
场景
//user.p.xx.ccny,没有写coins 执行器
,默认是平行链coins执行器
if
len
(
e
)
==
4
{
if
len
(
e
)
==
4
{
newTransfer
.
AssetExec
=
coins
.
CoinsX
newTransfer
.
AssetExec
=
coins
.
CoinsX
}
}
return
&
newTransfer
return
&
newTransfer
}
}
return
transfer
return
transfer
}
}
func
(
a
*
action
)
crossAssetTransfer
(
transfer
*
pt
.
CrossAssetTransfer
,
act
int64
,
actTx
*
types
.
Transaction
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
crossAssetTransfer
(
transfer
*
pt
.
CrossAssetTransfer
,
act
int64
,
actTx
*
types
.
Transaction
)
(
*
types
.
Receipt
,
error
)
{
...
@@ -172,7 +168,7 @@ func (a *action) execTransfer(transfer *pt.CrossAssetTransfer) (*types.Receipt,
...
@@ -172,7 +168,7 @@ func (a *action) execTransfer(transfer *pt.CrossAssetTransfer) (*types.Receipt,
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
accDB
,
err
:=
a
.
createAccount
(
cfg
,
a
.
db
,
transfer
.
AssetExec
,
transfer
.
AssetSymbol
)
accDB
,
err
:=
a
.
createAccount
(
cfg
,
a
.
db
,
transfer
.
AssetExec
,
transfer
.
AssetSymbol
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"execTransfer.createAccount failed"
)
return
nil
,
errors
.
Wrap
f
(
err
,
"execTransfer.createAccount failed,exec=%s,symbol=%s"
,
transfer
.
AssetExec
,
transfer
.
AssetSymbol
)
}
}
//主链上存入toAddr为user.p.xx.paracross地址
//主链上存入toAddr为user.p.xx.paracross地址
...
@@ -197,7 +193,7 @@ func (a *action) execWithdraw(withdraw *pt.CrossAssetTransfer, withdrawTx *types
...
@@ -197,7 +193,7 @@ func (a *action) execWithdraw(withdraw *pt.CrossAssetTransfer, withdrawTx *types
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
accDB
,
err
:=
a
.
createAccount
(
cfg
,
a
.
db
,
withdraw
.
AssetExec
,
withdraw
.
AssetSymbol
)
accDB
,
err
:=
a
.
createAccount
(
cfg
,
a
.
db
,
withdraw
.
AssetExec
,
withdraw
.
AssetSymbol
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"execWithdraw.createAccount failed"
)
return
nil
,
errors
.
Wrap
f
(
err
,
"execWithdraw.createAccount failed,exec=%s,symbol=%s"
,
withdraw
.
AssetExec
,
withdraw
.
AssetSymbol
)
}
}
execAddr
:=
address
.
ExecAddress
(
pt
.
ParaX
)
execAddr
:=
address
.
ExecAddress
(
pt
.
ParaX
)
fromAddr
:=
address
.
ExecAddress
(
string
(
withdrawTx
.
Execer
))
fromAddr
:=
address
.
ExecAddress
(
string
(
withdrawTx
.
Execer
))
...
@@ -211,6 +207,10 @@ func (a *action) execWithdraw(withdraw *pt.CrossAssetTransfer, withdrawTx *types
...
@@ -211,6 +207,10 @@ func (a *action) execWithdraw(withdraw *pt.CrossAssetTransfer, withdrawTx *types
return
accDB
.
ExecTransfer
(
fromAddr
,
withdraw
.
ToAddr
,
execAddr
,
withdraw
.
Amount
)
return
accDB
.
ExecTransfer
(
fromAddr
,
withdraw
.
ToAddr
,
execAddr
,
withdraw
.
Amount
)
}
}
//平行链向主链transfer,先在平行链处理,共识后再在主链铸造
//主链Alice的token转移到user.p.bb.平行链,在平行链上表示为mavl-paracross-token.symbol:Addr(Alice),这里并没有放在Addr(user.p.bb.paracross)子账号下
//平行链转移到主链的token在主链表示为mavl-paracross-user.p.aa.token.symbol:Addr(Alice),再转移到user.p.bb.平行链,需要先transfer到paracross执行器下
//在平行链bb上铸造新币,表示为mavl-paracross-paracross.user.p.aa.token.symbol,第二个paracross代表在主链原生执行器为paracross
func
(
a
*
action
)
execCreateAsset
(
transfer
*
pt
.
CrossAssetTransfer
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
execCreateAsset
(
transfer
*
pt
.
CrossAssetTransfer
)
(
*
types
.
Receipt
,
error
)
{
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
paraTitle
,
err
:=
getTitleFrom
(
a
.
tx
.
Execer
)
paraTitle
,
err
:=
getTitleFrom
(
a
.
tx
.
Execer
)
...
@@ -222,7 +222,7 @@ func (a *action) execCreateAsset(transfer *pt.CrossAssetTransfer) (*types.Receip
...
@@ -222,7 +222,7 @@ func (a *action) execCreateAsset(transfer *pt.CrossAssetTransfer) (*types.Receip
assetSymbol
:=
transfer
.
AssetSymbol
assetSymbol
:=
transfer
.
AssetSymbol
if
assetSymbol
==
""
{
if
assetSymbol
==
""
{
assetExec
=
coins
.
CoinsX
assetExec
=
coins
.
CoinsX
assetSymbol
=
S
YMBOL_BTY
assetSymbol
=
S
ymbolBty
}
else
if
assetExec
==
""
{
}
else
if
assetExec
==
""
{
assetExec
=
token
.
TokenX
assetExec
=
token
.
TokenX
}
}
...
@@ -234,7 +234,7 @@ func (a *action) execCreateAsset(transfer *pt.CrossAssetTransfer) (*types.Receip
...
@@ -234,7 +234,7 @@ func (a *action) execCreateAsset(transfer *pt.CrossAssetTransfer) (*types.Receip
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"execCreateAsset call NewParaAccount failed,exec=%s,symbol=%s"
,
assetExec
,
assetSymbol
)
return
nil
,
errors
.
Wrapf
(
err
,
"execCreateAsset call NewParaAccount failed,exec=%s,symbol=%s"
,
assetExec
,
assetSymbol
)
}
}
clog
.
Debug
(
"paracross.execCreateAsset"
,
"
execer"
,
string
(
a
.
tx
.
Execer
),
"
assetExec"
,
assetExec
,
"symbol"
,
assetSymbol
,
clog
.
Debug
(
"paracross.execCreateAsset"
,
"assetExec"
,
assetExec
,
"symbol"
,
assetSymbol
,
"txHash"
,
hex
.
EncodeToString
(
a
.
tx
.
Hash
()))
"txHash"
,
hex
.
EncodeToString
(
a
.
tx
.
Hash
()))
return
assetDepositBalance
(
paraAcc
,
transfer
.
ToAddr
,
transfer
.
Amount
)
return
assetDepositBalance
(
paraAcc
,
transfer
.
ToAddr
,
transfer
.
Amount
)
}
}
...
@@ -243,14 +243,14 @@ func (a *action) execDestroyAsset(withdraw *pt.CrossAssetTransfer) (*types.Recei
...
@@ -243,14 +243,14 @@ func (a *action) execDestroyAsset(withdraw *pt.CrossAssetTransfer) (*types.Recei
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
paraTitle
,
err
:=
getTitleFrom
(
a
.
tx
.
Execer
)
paraTitle
,
err
:=
getTitleFrom
(
a
.
tx
.
Execer
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"execDestroyAsset call getTitleFrom failed"
)
return
nil
,
errors
.
Wrap
f
(
err
,
"execDestroyAsset call getTitleFrom failed=%s"
,
string
(
a
.
tx
.
Execer
)
)
}
}
assetExec
:=
withdraw
.
AssetExec
assetExec
:=
withdraw
.
AssetExec
assetSymbol
:=
withdraw
.
AssetSymbol
assetSymbol
:=
withdraw
.
AssetSymbol
if
assetSymbol
==
""
{
if
assetSymbol
==
""
{
assetExec
=
coins
.
CoinsX
assetExec
=
coins
.
CoinsX
assetSymbol
=
S
YMBOL_BTY
assetSymbol
=
S
ymbolBty
}
else
if
assetExec
==
""
{
}
else
if
assetExec
==
""
{
assetExec
=
token
.
TokenX
assetExec
=
token
.
TokenX
}
}
...
@@ -261,7 +261,7 @@ func (a *action) execDestroyAsset(withdraw *pt.CrossAssetTransfer) (*types.Recei
...
@@ -261,7 +261,7 @@ func (a *action) execDestroyAsset(withdraw *pt.CrossAssetTransfer) (*types.Recei
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"execDestroyAsset call NewParaAccount failed,exec=%s,symbol=%s"
,
assetExec
,
assetSymbol
)
return
nil
,
errors
.
Wrapf
(
err
,
"execDestroyAsset call NewParaAccount failed,exec=%s,symbol=%s"
,
assetExec
,
assetSymbol
)
}
}
clog
.
Debug
(
"paracross.execDestroyAsset"
,
"
execer"
,
string
(
a
.
tx
.
Execer
),
"
assetExec"
,
assetExec
,
"symbol"
,
assetSymbol
,
clog
.
Debug
(
"paracross.execDestroyAsset"
,
"assetExec"
,
assetExec
,
"symbol"
,
assetSymbol
,
"txHash"
,
hex
.
EncodeToString
(
a
.
tx
.
Hash
()),
"from"
,
a
.
fromaddr
,
"amount"
,
withdraw
.
Amount
)
"txHash"
,
hex
.
EncodeToString
(
a
.
tx
.
Hash
()),
"from"
,
a
.
fromaddr
,
"amount"
,
withdraw
.
Amount
)
return
assetWithdrawBalance
(
paraAcc
,
a
.
fromaddr
,
withdraw
.
Amount
)
return
assetWithdrawBalance
(
paraAcc
,
a
.
fromaddr
,
withdraw
.
Amount
)
}
}
...
@@ -277,6 +277,7 @@ func (a *action) assetTransfer(transfer *types.AssetsTransfer) (*types.Receipt,
...
@@ -277,6 +277,7 @@ func (a *action) assetTransfer(transfer *types.AssetsTransfer) (*types.Receipt,
return
a
.
mainAssetTransfer
(
tr
)
return
a
.
mainAssetTransfer
(
tr
)
}
}
//旧的接口,只有主链从平行链转移
func
(
a
*
action
)
assetWithdraw
(
withdraw
*
types
.
AssetsWithdraw
,
withdrawTx
*
types
.
Transaction
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
assetWithdraw
(
withdraw
*
types
.
AssetsWithdraw
,
withdrawTx
*
types
.
Transaction
)
(
*
types
.
Receipt
,
error
)
{
tr
:=
&
pt
.
CrossAssetTransfer
{
tr
:=
&
pt
.
CrossAssetTransfer
{
AssetExec
:
withdraw
.
ExecName
,
AssetExec
:
withdraw
.
ExecName
,
...
@@ -304,7 +305,7 @@ func (a *action) assetTransferRollback(tr *pt.CrossAssetTransfer, transferTx *ty
...
@@ -304,7 +305,7 @@ func (a *action) assetTransferRollback(tr *pt.CrossAssetTransfer, transferTx *ty
}
}
execAddr
:=
address
.
ExecAddress
(
pt
.
ParaX
)
execAddr
:=
address
.
ExecAddress
(
pt
.
ParaX
)
fromAcc
:=
address
.
ExecAddress
(
string
(
transferTx
.
Execer
))
fromAcc
:=
address
.
ExecAddress
(
string
(
transferTx
.
Execer
))
clog
.
Debug
(
"paracross.AssetTransferRbk "
,
"exec
er"
,
string
(
transferTx
.
Execer
)
,
clog
.
Debug
(
"paracross.AssetTransferRbk "
,
"exec
"
,
transfer
.
AssetExec
,
"sym"
,
transfer
.
AssetSymbol
,
"transfer.txHash"
,
hex
.
EncodeToString
(
transferTx
.
Hash
()),
"curTx"
,
hex
.
EncodeToString
(
a
.
tx
.
Hash
()))
"transfer.txHash"
,
hex
.
EncodeToString
(
transferTx
.
Hash
()),
"curTx"
,
hex
.
EncodeToString
(
a
.
tx
.
Hash
()))
return
accDB
.
ExecTransfer
(
fromAcc
,
transferTx
.
From
(),
execAddr
,
transfer
.
Amount
)
return
accDB
.
ExecTransfer
(
fromAcc
,
transferTx
.
From
(),
execAddr
,
transfer
.
Amount
)
}
}
...
@@ -320,14 +321,14 @@ func (a *action) paraAssetWithdrawRollback(wtw *pt.CrossAssetTransfer, withdrawT
...
@@ -320,14 +321,14 @@ func (a *action) paraAssetWithdrawRollback(wtw *pt.CrossAssetTransfer, withdrawT
withdraw
:=
formatTransfer
(
wtw
,
pt
.
ParacrossParaWithdraw
)
withdraw
:=
formatTransfer
(
wtw
,
pt
.
ParacrossParaWithdraw
)
paraTitle
,
err
:=
getTitleFrom
(
a
.
tx
.
Execer
)
paraTitle
,
err
:=
getTitleFrom
(
a
.
tx
.
Execer
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"paraAssetWithdrawRollback call getTitleFrom failed"
)
return
nil
,
errors
.
Wrap
f
(
err
,
"paraAssetWithdrawRollback call getTitleFrom failed=%s"
,
string
(
a
.
tx
.
Execer
)
)
}
}
var
paraAcc
*
account
.
DB
var
paraAcc
*
account
.
DB
paraAcc
,
err
=
NewParaAccount
(
cfg
,
string
(
paraTitle
),
string
(
paraTitle
)
+
withdraw
.
AssetExec
,
withdraw
.
AssetSymbol
,
a
.
db
)
paraAcc
,
err
=
NewParaAccount
(
cfg
,
string
(
paraTitle
),
string
(
paraTitle
)
+
withdraw
.
AssetExec
,
withdraw
.
AssetSymbol
,
a
.
db
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrap
(
err
,
"paraAssetWithdrawRollback call NewParaAccount failed"
)
return
nil
,
errors
.
Wrap
f
(
err
,
"paraAssetWithdrawRollback call NewParaAccount failed,exec=%s,sym=%s"
,
withdraw
.
AssetExec
,
withdraw
.
AssetSymbol
)
}
}
clog
.
Debug
(
"paracross.paraAssetWithdrawRollback"
,
"exec
er"
,
string
(
a
.
tx
.
Execer
)
,
"txHash"
,
hex
.
EncodeToString
(
a
.
tx
.
Hash
()))
clog
.
Debug
(
"paracross.paraAssetWithdrawRollback"
,
"exec
"
,
withdraw
.
AssetExec
,
"sym"
,
withdraw
.
AssetSymbol
,
"txHash"
,
hex
.
EncodeToString
(
a
.
tx
.
Hash
()))
return
assetDepositBalance
(
paraAcc
,
withdrawTx
.
From
(),
withdraw
.
Amount
)
return
assetDepositBalance
(
paraAcc
,
withdrawTx
.
From
(),
withdraw
.
Amount
)
}
}
return
nil
,
nil
return
nil
,
nil
...
...
plugin/dapp/paracross/executor/exec.go
View file @
83a7a649
...
@@ -67,7 +67,7 @@ func (e *Paracross) Exec_CrossAssetTransfer(payload *pt.CrossAssetTransfer, tx *
...
@@ -67,7 +67,7 @@ func (e *Paracross) Exec_CrossAssetTransfer(payload *pt.CrossAssetTransfer, tx *
receipt
,
err
:=
a
.
CrossAssetTransfer
(
payload
)
receipt
,
err
:=
a
.
CrossAssetTransfer
(
payload
)
if
err
!=
nil
{
if
err
!=
nil
{
clog
.
Error
(
"Paracross CrossAssetTransfer failed"
,
"error"
,
err
,
"hash"
,
hex
.
EncodeToString
(
tx
.
Hash
()))
clog
.
Error
(
"Paracross CrossAssetTransfer failed"
,
"error"
,
err
,
"hash"
,
hex
.
EncodeToString
(
tx
.
Hash
()))
return
nil
,
err
ors
.
Cause
(
err
)
return
nil
,
err
}
}
return
receipt
,
nil
return
receipt
,
nil
}
}
...
...
plugin/dapp/paracross/executor/superaccount.go
View file @
83a7a649
...
@@ -701,7 +701,7 @@ func (a *action) nodeGroupCoinsFrozen(createAddr string, configCoinsFrozen int64
...
@@ -701,7 +701,7 @@ func (a *action) nodeGroupCoinsFrozen(createAddr string, configCoinsFrozen int64
conf
:=
types
.
ConfSub
(
cfg
,
pt
.
ParaX
)
conf
:=
types
.
ConfSub
(
cfg
,
pt
.
ParaX
)
confCoins
:=
conf
.
GInt
(
"nodeGroupFrozenCoins"
)
confCoins
:=
conf
.
GInt
(
"nodeGroupFrozenCoins"
)
if
configCoinsFrozen
<
confCoins
{
if
configCoinsFrozen
<
confCoins
{
return
nil
,
pt
.
ErrParaNodeGroupFrozenCoinsNotEnough
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaNodeGroupFrozenCoinsNotEnough
,
"nodeGroupCoinsFrozen apply=%d,conf=%d"
,
configCoinsFrozen
,
confCoins
)
}
}
if
configCoinsFrozen
==
0
{
if
configCoinsFrozen
==
0
{
clog
.
Info
(
"node group apply configCoinsFrozen is 0"
)
clog
.
Info
(
"node group apply configCoinsFrozen is 0"
)
...
...
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