Commit 030bb98e authored by mdj33's avatar mdj33 Committed by vipwzw

add ci case

parent ed4cca1c
......@@ -90,8 +90,37 @@ function para_transfer() {
para_transfer2account "1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR"
para_transfer2account "1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k"
para_transfer2account "1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs"
block_wait "${CLI}" 1
block_wait "${CLI}" 2
echo "=========== # main chain send to paracross ============="
para_transfer2paracross "0x6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b"
para_transfer2paracross "0x19c069234f9d3e61135fefbeb7791b149cdf6af536f26bebb310d4cd22c3fee4"
para_transfer2paracross "0x7a80a1f75d7360c6123c32a78ecf978c1ac55636f87892df38d8b85a9aeff115"
para_transfer2paracross "0xcacb1f5d51700aea07fca2246ab43b0917d70405c65edea9b5063d72eb5c6b71"
para_create_manage_nodegroup
para_create_nodegroup
txhash=$(para_configkey "${PARA_CLI}" "token-blacklist" "BTY")
echo "txhash=$txhash"
query_tx "${PARA_CLI}" "${txhash}"
}
function para_transfer2account() {
echo "${1}"
hash1=$(${CLI} send coins transfer -a 100 -n test -t "${1}" -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01)
echo "${hash1}"
}
function para_transfer2paracross(){
echo "${1}"
hash1=$(${CLI} send coins send_exec -a 20 -e paracross -k "${1}")
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"
......@@ -102,24 +131,36 @@ function para_transfer() {
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
txhash=$(para_configkey "${PARA_CLI}" "token-blacklist" "BTY")
echo "txhash=$txhash"
}
function para_create_nodegroup(){
echo "=========== # para chain create node group ============="
##apply
txhash=$(${PARA_CLI} send para nodegroup -o 1 -a "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4,1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR,1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k,1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs" -c 20 -k 0x6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b)
echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}"
status=$(${PARA_CLI} para nodegroup_status -t user.p.para. | jq -r ".status")
if [ "$status" != 1 ];then
echo "status not approve"
fi
echo "=========== # para chain takeover node group ============="
txhash=$(${PARA_CLI} send para node -o takeover -k 0x6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b)
##approve
txhash=$(${PARA_CLI} send para nodegroup -o 2 -a "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4, 1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR, 1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k, 1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs," -k 0xc34b5d9d44ac7b754806f761d3d4d2c4fe5214f6b074c19f069c4f5c2a29c8cc)
echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}"
}
status=$(${PARA_CLI} para nodegroup_status -t user.p.para. | jq -r ".status")
if [ "$status" != 2 ];then
echo "status not approve"
fi
addrs=$(${PARA_CLI} para nodegroup_addrs -t user.p.para. | jq -r ".value")
if [ "$addrs" != "[1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4 1JRNjdEqp4LJ5fqycUBm9ayCKSeeskgMKR 1NLHPEcbTWWxxU3dGUZBhayjrCHD3psX7k 1MCftFynyvG2F4ED5mdHYgziDxx6vDrScs]" ]; then
echo "para node group err"
fi
function para_transfer2account() {
echo "${1}"
hash1=$(${CLI} send coins transfer -a 10 -n test -t "${1}" -k 4257D8692EF7FE13C68B65D6A52F03933DB2FA5CE8FAF210B5B8B80C721CED01)
echo "${hash1}"
}
function para_configkey() {
......
......@@ -39,6 +39,8 @@ func ParcCmd() *cobra.Command {
GetNodeGroupCmd(),
GetNodeInfoCmd(),
GetNodeListCmd(),
NodeGroupStatusCmd(),
NodeGroupListCmd(),
IsSyncCmd(),
GetHeightCmd(),
GetBlockInfoCmd(),
......@@ -256,14 +258,14 @@ func addNodeManageFlags(cmd *cobra.Command) {
cmd.MarkFlagRequired("addrs")
cmd.Flags().StringP("value", "v", "", "vote value: yes,no")
cmd.Flags().Int64P("coins_frozen", "c", 0, "join to frozen coins amount, not less config")
cmd.Flags().Float64P("coins_frozen", "c", 0, "join to frozen coins amount, not less config")
}
func createNodeTx(cmd *cobra.Command, args []string) {
op, _ := cmd.Flags().GetString("operation")
opAddr, _ := cmd.Flags().GetString("addr")
val, _ := cmd.Flags().GetString("value")
coins, _ := cmd.Flags().GetInt64("coins_frozen")
coins, _ := cmd.Flags().GetFloat64("coins_frozen")
if op != "vote" && op != "quit" && op != "join" {
fmt.Println("operation should be one of join,quit,vote")
......@@ -278,7 +280,7 @@ func createNodeTx(cmd *cobra.Command, args []string) {
return
}
payload := &pt.ParaNodeAddrConfig{Op: op, Value: val, Addr: opAddr, CoinsFrozen: coins}
payload := &pt.ParaNodeAddrConfig{Op: op, Value: val, Addr: opAddr, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4}
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pt.ParaX),
ActionName: "NodeConfig",
......@@ -309,14 +311,14 @@ func addNodeGroupApplyCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("addrs", "a", "", "addrs apply for super node,split by ',' ")
cmd.MarkFlagRequired("addrs")
cmd.Flags().Int64P("coins_frozen", "c", 0, "coins amount to frozen, not less config")
cmd.Flags().Float64P("coins_frozen", "c", 0, "coins amount to frozen, not less config")
}
func nodeGroupApply(cmd *cobra.Command, args []string) {
op, _ := cmd.Flags().GetUint32("operation")
addrs, _ := cmd.Flags().GetString("addrs")
coins, _ := cmd.Flags().GetInt64("coins_frozen")
coins, _ := cmd.Flags().GetFloat64("coins_frozen")
if op == 0 || op > 3 {
fmt.Println("operation should be one of 1:apply,2:approve,3:quit")
......@@ -327,7 +329,7 @@ func nodeGroupApply(cmd *cobra.Command, args []string) {
return
}
payload := &pt.ParaNodeGroupApply{Op: op, Addrs: addrs, CoinsFrozen: coins}
payload := &pt.ParaNodeGroupApply{Op: op, Addrs: addrs, CoinsFrozen: int64(math.Trunc((coins)*1e4)) * 1e4}
params := &rpctypes.CreateTxIn{
Execer: types.ExecName(pt.ParaX),
ActionName: "NodeGroupApply",
......@@ -557,7 +559,7 @@ func nodeGroup(cmd *cobra.Command, args []string) {
title, _ := cmd.Flags().GetString("title")
var res types.ReplyConfig
ctx := jsonclient.NewRPCCtx(rpcLaddr, "paracross.GetNodeGroupAddrs", types.ReqString{Data: title}, &res)
ctx := jsonclient.NewRPCCtx(rpcLaddr, "paracross.GetNodeGroupAddrs", pt.ReqParacrossNodeInfo{Title: title}, &res)
ctx.Run()
}
......
......@@ -50,7 +50,7 @@ func (p *Paracross) Query_GetNodeGroupAddrs(in *pt.ReqParacrossNodeInfo) (types.
nodes = append(nodes, k)
}
var reply types.ReplyConfig
reply.Key = string(in.GetTitle() + " all addrs")
reply.Key = string(key)
reply.Value = fmt.Sprint(nodes)
return &reply, nil
}
......
......@@ -15,6 +15,7 @@ import (
"github.com/33cn/chain33/types"
pt "github.com/33cn/plugin/plugin/dapp/paracross/types"
"github.com/pkg/errors"
"github.com/33cn/chain33/system/dapp"
)
var (
......@@ -552,18 +553,20 @@ func (a *action) checkNodeGroupExist(title string) error {
func (a *action) nodeGroupCoinsFrozen(addrs []string, configCoinsFrozen int64) (*types.Receipt, error) {
receipt := &types.Receipt{}
confCoins := confManager.GInt("nodeGroupFrozenCoins")
confCoins := conf.GInt("nodeGroupFrozenCoins")
if configCoinsFrozen < confCoins {
return nil, pt.ErrParaNodeGroupFrozenCoinsNotEnough
}
var logs []*types.ReceiptLog
var kv []*types.KeyValue
realExec := string(types.GetRealExecName(a.tx.Execer))
realExecAddr := dapp.ExecAddress(realExec)
for _, addr := range addrs {
receipt, err := a.coinsAccount.ExecFrozen(addr, a.execaddr, configCoinsFrozen)
receipt, err := a.coinsAccount.ExecFrozen(addr, realExecAddr, configCoinsFrozen)
if err != nil {
clog.Error("node group apply", "addr", addr, "execaddr", a.execaddr, "amount", configCoinsFrozen)
clog.Error("node group apply", "addr", addr, "realExec", realExec,"realAddr",realExecAddr, "amount", configCoinsFrozen)
return nil, err
}
logs = append(logs, receipt.Logs...)
......@@ -579,11 +582,13 @@ func (a *action) nodeGroupCoinsActive(addrs []string, configCoinsFrozen int64) (
receipt := &types.Receipt{}
var logs []*types.ReceiptLog
var kv []*types.KeyValue
realExec := string(types.GetRealExecName(a.tx.Execer))
realExecAddr := dapp.ExecAddress(realExec)
for _, addr := range addrs {
receipt, err := a.coinsAccount.ExecActive(addr, a.execaddr, configCoinsFrozen)
receipt, err := a.coinsAccount.ExecActive(addr, realExecAddr, configCoinsFrozen)
if err != nil {
clog.Error("node group apply", "addr", addr, "execaddr", a.execaddr, "amount", configCoinsFrozen)
clog.Error("node group apply", "addr", addr, "realExec", realExec,"realAddr",realExecAddr, "amount", configCoinsFrozen)
return nil, err
}
logs = append(logs, receipt.Logs...)
......@@ -597,7 +602,7 @@ func (a *action) nodeGroupCoinsActive(addrs []string, configCoinsFrozen int64) (
// NodeGroupApply
func (a *action) nodeGroupApply(config *pt.ParaNodeGroupApply) (*types.Receipt, error) {
key := calcParaNodeGroupApplyKey(title)
key := calcParaNodeGroupApplyKey(config.Title)
status, err := getNodeAddr(a.db, key)
if err != nil && !isNotFound(err) {
return nil, err
......@@ -633,7 +638,7 @@ func (a *action) nodeGroupApply(config *pt.ParaNodeGroupApply) (*types.Receipt,
}
func (a *action) nodeGroupQuit(config *pt.ParaNodeGroupApply) (*types.Receipt, error) {
key := calcParaNodeGroupApplyKey(title)
key := calcParaNodeGroupApplyKey(config.Title)
status, err := getNodeAddr(a.db, key)
if err != nil {
return nil, err
......@@ -709,7 +714,7 @@ func (a *action) nodeGroupApprove(config *pt.ParaNodeGroupApply) (*types.Receipt
return nil, types.ErrNotAllow
}
key := calcParaNodeGroupApplyKey(title)
key := calcParaNodeGroupApplyKey(config.Title)
status, err := getNodeAddr(a.db, key)
if err != nil {
return nil, err
......@@ -753,11 +758,11 @@ func (a *action) nodeGroupCreate(title string, nodes []string, coinFrozen int64)
arr := types.ConfigItem_Arr{Arr: emptyValue}
item.Value = &arr
copyItem := item
item.GetArr().Value = append(item.GetArr().Value, nodes...)
item.Addr = a.fromaddr
a.db.Set(key, types.Encode(&item))
receipt := makeParaNodeGroupReiceipt(title, &copyItem, &item)
receipt := makeParaNodeGroupReiceipt(title, nil, &item)
//update addr status
for _, addr := range nodes {
......
# paracross 执行器 授权账户管理
## 场景
1. 平行链申请开链之前申请几个授权账户,没有授权账户无法做跨链交易,目前没有押金机制
1. 平行链申请开链之前申请几个授权账户作为超级节点,没有授权账户无法做跨链交易
1. 申请超级节点需要在主链冻结一定资金,超级节点用户需要在主链先把一定的币转到paracross合约,再在平行链申请
1. 主链超级用户会分别向主链和平行链的manager合约发送账户添加tx,作为平行链的初始授权账户
1. 平行链开链后在做跨链tx之前需要任何一个初始授权账户在平行链上发送takeover tx把初始授权账户接管到平行链,
由平行链自己管理,如果不发送接管tx,平行链跨链无法完成
......
......@@ -251,7 +251,7 @@ func (c *Jrpc) GetNodeGroupStatus(req *pt.ReqParacrossNodeInfo, result *interfac
//ListNodeStatus list super node by status
func (c *channelClient) ListNodeGroupStatus(ctx context.Context, req *pt.ReqParacrossNodeInfo) (*pt.RespParacrossNodeAddrs, error) {
r := *req
data, err := c.Query(pt.GetExecName(), "ListNodeGroupStatusInfo", &r)
data, err := c.Query(pt.GetExecName(), "ListNodeGroupStatus", &r)
if err != nil {
return nil, err
}
......
......@@ -64,6 +64,9 @@ func (p *ParacrossType) GetLogMap() map[int64]*types.LogInfo {
TyLogParaNodeConfig: {Ty: reflect.TypeOf(ReceiptParaNodeConfig{}), Name: "LogParaNodeConfig"},
TyLogParaNodeGroupUpdate: {Ty: reflect.TypeOf(types.ReceiptConfig{}), Name: "LogParaNodeGroupUpdate"},
TyLogParaNodeVoteDone: {Ty: reflect.TypeOf(ReceiptParaNodeVoteDone{}), Name: "LogParaNodeVoteDone"},
TyLogParaNodeGroupApply: {Ty: reflect.TypeOf(ReceiptParaNodeConfig{}), Name: "LogParaNodeGroupApply"},
TyLogParaNodeGroupApprove: {Ty: reflect.TypeOf(ReceiptParaNodeConfig{}), Name: "LogParaNodeGroupApprove"},
TyLogParaNodeGroupQuit: {Ty: reflect.TypeOf(ReceiptParaNodeConfig{}), Name: "LogParaNodeGroupQuit"},
}
}
......@@ -78,6 +81,7 @@ func (p *ParacrossType) GetTypeMap() map[string]int32 {
"Withdraw": ParacrossActionWithdraw,
"TransferToExec": ParacrossActionTransferToExec,
"NodeConfig": ParacrossActionNodeConfig,
"NodeGroupConfig":ParacrossActionNodeGroupApply,
}
}
......@@ -127,7 +131,8 @@ func (p ParacrossType) CreateTx(action string, message json.RawMessage) (*types.
return nil, types.ErrNotSupport
}
var param ParaNodeGroupApply
err := json.Unmarshal(message, &param)
err := types.JSONToPB(message, &param)
//err := json.Unmarshal(message, &param)
if err != nil {
glog.Error("CreateTx.NodeGroupApply", "Error", err)
return nil, types.ErrInvalidParam
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment