Commit dd1a0d39 authored by mdj33's avatar mdj33 Committed by vipwzw

add paracross supervision autonomy config

parent 13b0a176
...@@ -114,7 +114,6 @@ function base_init() { ...@@ -114,7 +114,6 @@ function base_init() {
# wallet # wallet
sed -i $sedfix 's/^minerdisable=.*/minerdisable=false/g' chain33.toml sed -i $sedfix 's/^minerdisable=.*/minerdisable=false/g' chain33.toml
sed -i $sedfix 's/^nodeGroupFrozenCoins=.*/nodeGroupFrozenCoins=20/g' chain33.toml
sed -i $sedfix 's/^paraConsensusStopBlocks=.*/paraConsensusStopBlocks=100/g' chain33.toml sed -i $sedfix 's/^paraConsensusStopBlocks=.*/paraConsensusStopBlocks=100/g' chain33.toml
# blockchain # blockchain
......
...@@ -125,8 +125,6 @@ mainForkParacrossCommitTx=2270000 ...@@ -125,8 +125,6 @@ mainForkParacrossCommitTx=2270000
#主链开启循环检查共识交易done的fork高度,需要和主链保持严格一致,不可修改,4320000是bityuan主链对应高度, ycc或其他按实际修改 #主链开启循环检查共识交易done的fork高度,需要和主链保持严格一致,不可修改,4320000是bityuan主链对应高度, ycc或其他按实际修改
#不可为0,主链Local时候需特殊配置 #不可为0,主链Local时候需特殊配置
mainLoopCheckCommitTxDoneForkHeight=4320000 mainLoopCheckCommitTxDoneForkHeight=4320000
#主链开启Supervision功能fork高度,需要和主链保持严格一致
#mainForkParaSupervision=10400000
#无平行链交易的主链区块间隔,平行链产生一个空块,从高度0开始,配置[blockHeight:interval],比如["0:50","1000:100"] #无平行链交易的主链区块间隔,平行链产生一个空块,从高度0开始,配置[blockHeight:interval],比如["0:50","1000:100"]
emptyBlockInterval=["0:50"] emptyBlockInterval=["0:50"]
......
...@@ -544,7 +544,7 @@ function para_create_nodegroup_gamechain() { ...@@ -544,7 +544,7 @@ function para_create_nodegroup_gamechain() {
echo "=========== # game para chain approve node group =============" echo "=========== # game para chain approve node group ============="
##approve ##approve
txhash=$(${CLI} --paraName user.p.game. send para nodegroup approve -i "$id" -c 5 -k "${SUPER_KEY}") txhash=$(${CLI} --paraName user.p.game. send para nodegroup approve -i "$id" -a "" -c 5 -k "${SUPER_KEY}")
echo "tx=$txhash" echo "tx=$txhash"
query_tx "${PARA_CLI5}" "${txhash}" query_tx "${PARA_CLI5}" "${txhash}"
...@@ -718,7 +718,7 @@ function para_create_nodegroup() { ...@@ -718,7 +718,7 @@ function para_create_nodegroup() {
echo "=========== # para chain approve node group =============" echo "=========== # para chain approve node group ============="
##approve ##approve
txhash=$(${PARA_CLI} send para nodegroup approve -i "$id" -c 6 -k "${SUPER_KEY}") txhash=$(${PARA_CLI} send para nodegroup approve -i "$id" -a "" -c 6 -k "${SUPER_KEY}")
echo "tx=$txhash" echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}" query_tx "${PARA_CLI}" "${txhash}"
...@@ -758,7 +758,7 @@ function para_create_nodegroup() { ...@@ -758,7 +758,7 @@ function para_create_nodegroup() {
fi fi
##approve ##approve
txhash=$(${PARA_CLI} send para nodegroup approve -i "$modifyid" -c 5 -k "${SUPER_KEY}") txhash=$(${PARA_CLI} send para nodegroup approve -i "$modifyid" -a "" -c 5 -k "${SUPER_KEY}")
echo "tx=$txhash" echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}" query_tx "${PARA_CLI}" "${txhash}"
...@@ -850,7 +850,7 @@ function para_create_supervision_nodegroup_quit() { ...@@ -850,7 +850,7 @@ function para_create_supervision_nodegroup_quit() {
echo "=========== # para chain approve supervision node group 28 =============" echo "=========== # para chain approve supervision node group 28 ============="
##approve ##approve
txhash=$(${PARA_CLI} send para supervision_node approve -i "$id" -c 6 -k "${SUPER_KEY}") txhash=$(${PARA_CLI} send para supervision_node approve -i "$id" -a "" -c 6 -k "${SUPER_KEY}")
echo "tx=$txhash" echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}" query_tx "${PARA_CLI}" "${txhash}"
...@@ -865,7 +865,7 @@ function para_create_supervision_nodegroup_quit() { ...@@ -865,7 +865,7 @@ function para_create_supervision_nodegroup_quit() {
query_tx "${PARA_CLI}" "${txhash}" query_tx "${PARA_CLI}" "${txhash}"
check_balance_1ka "$balancePre" -6 check_balance_1ka "$balancePre" -6
check_supervision_node_group_list 3 "$id" check_supervision_node_group_list 3 "$txhash"
check_supervision_node_addr_status 3 "$ADDR_28" check_supervision_node_addr_status 3 "$ADDR_28"
check_supervision_node_addrs null check_supervision_node_addrs null
echo "=========== # ${FUNCNAME} end =============" echo "=========== # ${FUNCNAME} end ============="
...@@ -885,7 +885,7 @@ function para_create_supervision_nodegroup_approve() { ...@@ -885,7 +885,7 @@ function para_create_supervision_nodegroup_approve() {
echo "=========== # para chain approve supervision node group 28 =============" echo "=========== # para chain approve supervision node group 28 ============="
##approve ##approve
txhash=$(${PARA_CLI} send para supervision_node approve -i "$id" -c 6 -k "${SUPER_KEY}") txhash=$(${PARA_CLI} send para supervision_node approve -i "$id" -a "" -c 6 -k "${SUPER_KEY}")
echo "tx=$txhash" echo "tx=$txhash"
query_tx "${PARA_CLI}" "${txhash}" query_tx "${PARA_CLI}" "${txhash}"
......
...@@ -363,7 +363,6 @@ func addNodeJoinFlags(cmd *cobra.Command) { ...@@ -363,7 +363,6 @@ func addNodeJoinFlags(cmd *cobra.Command) {
_ = cmd.MarkFlagRequired("addr") _ = cmd.MarkFlagRequired("addr")
cmd.Flags().Float64P("coins", "c", 0, "frozen coins amount, should not less nodegroup's setting") cmd.Flags().Float64P("coins", "c", 0, "frozen coins amount, should not less nodegroup's setting")
_ = cmd.MarkFlagRequired("coins")
} }
...@@ -908,7 +907,6 @@ func addNodeGroupApplyCmdFlags(cmd *cobra.Command) { ...@@ -908,7 +907,6 @@ func addNodeGroupApplyCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("blspubs", "p", "", "bls sign pub key for addr's private key,split by ',' (optional)") cmd.Flags().StringP("blspubs", "p", "", "bls sign pub key for addr's private key,split by ',' (optional)")
cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config") cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config")
_ = cmd.MarkFlagRequired("coins")
} }
...@@ -946,12 +944,24 @@ func nodeGroupApply(cmd *cobra.Command, args []string) { ...@@ -946,12 +944,24 @@ func nodeGroupApply(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal() ctx.RunWithoutMarshal()
} }
func nodeGroupApproveCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "approve",
Short: "approve for para chain's super node group application",
Run: nodeGroupApprove,
}
addNodeGroupApproveCmdFlags(cmd)
return cmd
}
func addNodeGroupApproveCmdFlags(cmd *cobra.Command) { func addNodeGroupApproveCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "apply id for nodegroup ") cmd.Flags().StringP("id", "i", "", "apply id for nodegroup ")
_ = cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
cmd.Flags().StringP("autonomyId", "a", "", "autonomy approved id ")
_ = cmd.MarkFlagRequired("autonomyId")
cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config") cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config")
_ = cmd.MarkFlagRequired("coins")
} }
...@@ -959,6 +969,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) { ...@@ -959,6 +969,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id") id, _ := cmd.Flags().GetString("id")
coins, _ := cmd.Flags().GetFloat64("coins") coins, _ := cmd.Flags().GetFloat64("coins")
autonomyId, _ := cmd.Flags().GetString("autonomyId")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
_, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
...@@ -975,7 +986,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) { ...@@ -975,7 +986,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
fmt.Fprintln(os.Stderr, errors.Wrapf(err, "FormatFloatDisplay2Value.coins")) fmt.Fprintln(os.Stderr, errors.Wrapf(err, "FormatFloatDisplay2Value.coins"))
return return
} }
payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 2, Id: id, CoinsFrozen: coinsInt64} payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 2, Id: id, CoinsFrozen: coinsInt64, AutonomyItemID: autonomyId}
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: getRealExecName(paraName, pt.ParaX), Execer: getRealExecName(paraName, pt.ParaX),
ActionName: "NodeGroupConfig", ActionName: "NodeGroupConfig",
...@@ -986,13 +997,13 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) { ...@@ -986,13 +997,13 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal() ctx.RunWithoutMarshal()
} }
func nodeGroupApproveCmd() *cobra.Command { func nodeGroupQuitCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "approve", Use: "quit",
Short: "approve for para chain's super node group application", Short: "quit for para chain's super node group application",
Run: nodeGroupApprove, Run: nodeGroupQuit,
} }
addNodeGroupApproveCmdFlags(cmd) addNodeGroupQuitCmdFlags(cmd)
return cmd return cmd
} }
...@@ -1005,6 +1016,7 @@ func addNodeGroupQuitCmdFlags(cmd *cobra.Command) { ...@@ -1005,6 +1016,7 @@ func addNodeGroupQuitCmdFlags(cmd *cobra.Command) {
func nodeGroupQuit(cmd *cobra.Command, args []string) { func nodeGroupQuit(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id") id, _ := cmd.Flags().GetString("id")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
_, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
...@@ -1021,13 +1033,13 @@ func nodeGroupQuit(cmd *cobra.Command, args []string) { ...@@ -1021,13 +1033,13 @@ func nodeGroupQuit(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal() ctx.RunWithoutMarshal()
} }
func nodeGroupQuitCmd() *cobra.Command { func nodeGroupModifyCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "quit", Use: "modify",
Short: "quit for para chain's super node group application", Short: "modify for para chain's super node group parameters",
Run: nodeGroupQuit, Run: nodeGroupModify,
} }
addNodeGroupQuitCmdFlags(cmd) addNodeGroupModifyCmdFlags(cmd)
return cmd return cmd
} }
...@@ -1066,16 +1078,6 @@ func nodeGroupModify(cmd *cobra.Command, args []string) { ...@@ -1066,16 +1078,6 @@ func nodeGroupModify(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal() ctx.RunWithoutMarshal()
} }
func nodeGroupModifyCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "modify",
Short: "modify for para chain's super node group parameters",
Run: nodeGroupModify,
}
addNodeGroupModifyCmdFlags(cmd)
return cmd
}
// IsSyncCmd query parachain is sync // IsSyncCmd query parachain is sync
func IsSyncCmd() *cobra.Command { func IsSyncCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
...@@ -1645,7 +1647,6 @@ func addSupervisionNodeApplyCmdFlags(cmd *cobra.Command) { ...@@ -1645,7 +1647,6 @@ func addSupervisionNodeApplyCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("blspub", "p", "", "bls sign pub key for addr's private key") cmd.Flags().StringP("blspub", "p", "", "bls sign pub key for addr's private key")
cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config") cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config")
_ = cmd.MarkFlagRequired("coins")
} }
func supervisionNodeApply(cmd *cobra.Command, args []string) { func supervisionNodeApply(cmd *cobra.Command, args []string) {
...@@ -1658,7 +1659,7 @@ func supervisionNodeApply(cmd *cobra.Command, args []string) { ...@@ -1658,7 +1659,7 @@ func supervisionNodeApply(cmd *cobra.Command, args []string) {
_, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 1, Addr: addr, BlsPubKey: blspub, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4} payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 1, Addrs: addr, BlsPubKeys: blspub, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4}
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: getRealExecName(paraName, pt.ParaX), Execer: getRealExecName(paraName, pt.ParaX),
ActionName: "SupervisionNodeConfig", ActionName: "SupervisionNodeConfig",
...@@ -1684,13 +1685,16 @@ func addSupervisionNodeApproveCmdFlags(cmd *cobra.Command) { ...@@ -1684,13 +1685,16 @@ func addSupervisionNodeApproveCmdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("id", "i", "", "apply id for supervision node ") cmd.Flags().StringP("id", "i", "", "apply id for supervision node ")
_ = cmd.MarkFlagRequired("id") _ = cmd.MarkFlagRequired("id")
cmd.Flags().StringP("autonomyId", "a", "", "autonomy approved id ")
_ = cmd.MarkFlagRequired("autonomyId")
cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config") cmd.Flags().Float64P("coins", "c", 0, "coins amount to frozen, not less config")
_ = cmd.MarkFlagRequired("coins")
} }
func supervisionNodeApprove(cmd *cobra.Command, args []string) { func supervisionNodeApprove(cmd *cobra.Command, args []string) {
paraName, _ := cmd.Flags().GetString("paraName") paraName, _ := cmd.Flags().GetString("paraName")
id, _ := cmd.Flags().GetString("id") id, _ := cmd.Flags().GetString("id")
autonomyId, _ := cmd.Flags().GetString("autonomyId")
coins, _ := cmd.Flags().GetFloat64("coins") coins, _ := cmd.Flags().GetFloat64("coins")
if !strings.HasPrefix(paraName, "user.p") { if !strings.HasPrefix(paraName, "user.p") {
...@@ -1698,7 +1702,7 @@ func supervisionNodeApprove(cmd *cobra.Command, args []string) { ...@@ -1698,7 +1702,7 @@ func supervisionNodeApprove(cmd *cobra.Command, args []string) {
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 2, Id: id, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4} payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 2, Id: id, AutonomyItemID: autonomyId, CoinsFrozen: int64(math.Trunc((coins+0.0000001)*1e4)) * 1e4}
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: getRealExecName(paraName, pt.ParaX), Execer: getRealExecName(paraName, pt.ParaX),
ActionName: "SupervisionNodeConfig", ActionName: "SupervisionNodeConfig",
...@@ -1732,7 +1736,7 @@ func supervisionNodeQuit(cmd *cobra.Command, args []string) { ...@@ -1732,7 +1736,7 @@ func supervisionNodeQuit(cmd *cobra.Command, args []string) {
_, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 3, Addr: opAddr} payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 3, Addrs: opAddr}
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: getRealExecName(paraName, pt.ParaX), Execer: getRealExecName(paraName, pt.ParaX),
ActionName: "SupervisionNodeConfig", ActionName: "SupervisionNodeConfig",
...@@ -1766,7 +1770,7 @@ func supervisionNodeCancel(cmd *cobra.Command, args []string) { ...@@ -1766,7 +1770,7 @@ func supervisionNodeCancel(cmd *cobra.Command, args []string) {
_, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`") _, _ = fmt.Fprintln(os.Stderr, "paraName is not right, paraName format like `user.p.guodun.`")
return return
} }
payload := &pt.ParaNodeAddrConfig{Title: paraName, Op: 4, Id: id} payload := &pt.ParaNodeGroupConfig{Title: paraName, Op: 4, Id: id}
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: getRealExecName(paraName, pt.ParaX), Execer: getRealExecName(paraName, pt.ParaX),
ActionName: "SupervisionNodeConfig", ActionName: "SupervisionNodeConfig",
...@@ -1833,7 +1837,7 @@ func supervisionNodeListInfo(cmd *cobra.Command, args []string) { ...@@ -1833,7 +1837,7 @@ func supervisionNodeListInfo(cmd *cobra.Command, args []string) {
} }
params.Payload = types.MustPBToJSON(&req) params.Payload = types.MustPBToJSON(&req)
var res pt.RespParacrossNodeAddrs var res pt.RespParacrossNodeGroups
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.Query", params, &res) ctx := jsonclient.NewRPCCtx(rpcLaddr, "Chain33.Query", params, &res)
ctx.Run() ctx.Run()
} }
......
...@@ -127,7 +127,7 @@ func (e *Paracross) Exec_ParaBindMiner(payload *pt.ParaBindMinerCmd, tx *types.T ...@@ -127,7 +127,7 @@ func (e *Paracross) Exec_ParaBindMiner(payload *pt.ParaBindMinerCmd, tx *types.T
} }
//Exec_SupervisionNodeConfig exec Supervision node config //Exec_SupervisionNodeConfig exec Supervision node config
func (e *Paracross) Exec_SupervisionNodeConfig(payload *pt.ParaNodeAddrConfig, tx *types.Transaction, index int) (*types.Receipt, error) { func (e *Paracross) Exec_SupervisionNodeConfig(payload *pt.ParaNodeGroupConfig, tx *types.Transaction, index int) (*types.Receipt, error) {
a := newAction(e, tx) a := newAction(e, tx)
return a.SupervisionNodeConfig(payload) return a.SupervisionNodeConfig(payload)
} }
...@@ -137,22 +137,22 @@ func (e *Paracross) ExecDelLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig ...@@ -137,22 +137,22 @@ func (e *Paracross) ExecDelLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig
return &set, nil return &set, nil
} }
func (e *Paracross) ExecDelLocal_SupervisionNodeConfig(payload *pt.ParaNodeAddrConfig, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (e *Paracross) ExecDelLocal_SupervisionNodeConfig(payload *pt.ParaNodeGroupConfig, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
var set types.LocalDBSet var set types.LocalDBSet
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
if log.Ty == pt.TyLogParaSupervisionNodeConfig { if log.Ty == pt.TyLogParaSupervisionNodeConfig {
var g pt.ReceiptParaNodeConfig var g pt.ReceiptParaNodeGroupConfig
err := types.Decode(log.Log, &g) err := types.Decode(log.Log, &g)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if g.Prev != nil { if g.Prev != nil {
set.KV = append(set.KV, &types.KeyValue{ set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalSupervisionNodeStatusTitle(g.Current.Title, g.Prev.Status, g.Current.TargetAddr, g.Current.Id), Value: types.Encode(g.Prev)}) Key: calcLocalSupervisionNodeStatusTitle(g.Current.Title, g.Prev.Status, g.Current.TargetAddrs, g.Current.Id), Value: types.Encode(g.Prev)})
} }
set.KV = append(set.KV, &types.KeyValue{ set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalSupervisionNodeStatusTitle(g.Current.Title, g.Current.Status, g.Current.TargetAddr, g.Current.Id), Value: nil}) Key: calcLocalSupervisionNodeStatusTitle(g.Current.Title, g.Current.Status, g.Current.TargetAddrs, g.Current.Id), Value: nil})
} }
} }
return &set, nil return &set, nil
......
...@@ -141,22 +141,22 @@ func (e *Paracross) ExecLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig, t ...@@ -141,22 +141,22 @@ func (e *Paracross) ExecLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig, t
return &set, nil return &set, nil
} }
func (e *Paracross) ExecLocal_SupervisionNodeConfig(payload *pt.ParaNodeAddrConfig, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (e *Paracross) ExecLocal_SupervisionNodeConfig(payload *pt.ParaNodeGroupConfig, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
var set types.LocalDBSet var set types.LocalDBSet
for _, log := range receiptData.Logs { for _, log := range receiptData.Logs {
if log.Ty == pt.TyLogParaSupervisionNodeConfig { if log.Ty == pt.TyLogParaSupervisionNodeConfig {
var g pt.ReceiptParaNodeConfig var g pt.ReceiptParaNodeGroupConfig
err := types.Decode(log.Log, &g) err := types.Decode(log.Log, &g)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if g.Prev != nil { if g.Prev != nil {
set.KV = append(set.KV, &types.KeyValue{ set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalSupervisionNodeStatusTitle(g.Current.Title, g.Prev.Status, g.Current.TargetAddr, g.Current.Id), Value: nil}) Key: calcLocalSupervisionNodeStatusTitle(g.Current.Title, g.Prev.Status, g.Current.TargetAddrs, g.Current.Id), Value: nil})
} }
set.KV = append(set.KV, &types.KeyValue{ set.KV = append(set.KV, &types.KeyValue{
Key: calcLocalSupervisionNodeStatusTitle(g.Current.Title, g.Current.Status, g.Current.TargetAddr, g.Current.Id), Value: types.Encode(g.Current)}) Key: calcLocalSupervisionNodeStatusTitle(g.Current.Title, g.Current.Status, g.Current.TargetAddrs, g.Current.Id), Value: types.Encode(g.Current)})
} }
} }
return &set, nil return &set, nil
......
...@@ -281,12 +281,12 @@ func (p *Paracross) Query_ListSupervisionNodeStatusInfo(in *pt.ReqParacrossNodeI ...@@ -281,12 +281,12 @@ func (p *Paracross) Query_ListSupervisionNodeStatusInfo(in *pt.ReqParacrossNodeI
prefix = calcLocalSupervisionNodeStatusTitlePrefix(in.Title, in.Status) prefix = calcLocalSupervisionNodeStatusTitlePrefix(in.Title, in.Status)
} }
resp, err := listNodeStatus(p.GetLocalDB(), prefix) resp, err := listNodeGroupStatus(p.GetLocalDB(), prefix)
if err != nil { if err != nil {
return resp, err return resp, err
} }
addrs := resp.(*pt.RespParacrossNodeAddrs) addrs := resp.(*pt.RespParacrossNodeGroups)
for _, id := range addrs.Ids { for _, id := range addrs.Ids {
id.Id = getParaNodeIDSuffix(id.Id) id.Id = getParaNodeIDSuffix(id.Id)
} }
......
...@@ -957,28 +957,41 @@ func (a *action) nodeGroupApproveApply(config *pt.ParaNodeGroupConfig, apply *pt ...@@ -957,28 +957,41 @@ func (a *action) nodeGroupApproveApply(config *pt.ParaNodeGroupConfig, apply *pt
return receipt, nil return receipt, nil
} }
func (a *action) checkApproveOp(config *pt.ParaNodeGroupConfig) error {
cfg := a.api.GetConfig()
//fork之后采用 autonomy 检查模式
confManager := types.ConfSub(cfg, manager.ManageX)
autonomyExec := confManager.GStr(types.AutonomyCfgKey)
if cfg.IsDappFork(a.height, pt.ParaX, pt.ForkParaAutonomySuperGroup) && len(autonomyExec) > 0 {
//去autonomy 合约检验是否id approved, 成功 err返回nil
_, err := a.api.QueryChain(&types.ChainExecutor{
Driver: autonomyExec,
FuncName: "IsAutonomyApprovedItem",
Param: types.Encode(&types.ReqMultiStrings{Datas: []string{config.AutonomyItemID, config.Id}}),
})
if err != nil {
return errors.Wrapf(err, "query autonomy,approveid=%s,hashId=%s", config.AutonomyItemID, config.Id)
}
return nil
}
//fork之前检查是否from superManager
if !isSuperManager(cfg, a.fromaddr) {
return errors.Wrapf(types.ErrNotAllow, "node group approve not super manager:%s", a.fromaddr)
}
return nil
}
// NodeGroupApprove super addr approve the node group apply // NodeGroupApprove super addr approve the node group apply
func (a *action) nodeGroupApprove(config *pt.ParaNodeGroupConfig) (*types.Receipt, error) { func (a *action) nodeGroupApprove(config *pt.ParaNodeGroupConfig) (*types.Receipt, error) {
cfg := a.api.GetConfig() cfg := a.api.GetConfig()
//只在主链检查, 主链检查失败不会同步到平行链,主链成功,平行链默认成功 //只在主链检查, 主链检查失败不会同步到平行链,主链成功,平行链默认成功
if !cfg.IsPara() { if !cfg.IsPara() {
//fork之后采用 autonomy 检查模式 err := a.checkApproveOp(config)
confManager := types.ConfSub(cfg, manager.ManageX) if err != nil {
autonomyExec := confManager.GStr(types.AutonomyCfgKey) return nil, err
if cfg.IsDappFork(a.height, pt.ParaX, pt.ForkParaAutonomySuperGroup) && len(autonomyExec) > 0 {
//去autonomy 合约检验是否id approved, 成功 err返回nil
_, err := a.api.QueryChain(&types.ChainExecutor{
Driver: autonomyExec,
FuncName: "IsAutonomyApprovedItem",
Param: types.Encode(&types.ReqMultiStrings{Datas: []string{config.AutonomyItemID, config.Id}}),
})
if err != nil {
return nil, errors.Wrapf(err, "query autonomy,approveid=%s,hashId=%s", config.AutonomyItemID, config.Id)
}
} else if !isSuperManager(cfg, a.fromaddr) {
return nil, errors.Wrapf(types.ErrNotAllow, "node group approve not super manager:%s", a.fromaddr)
} }
} }
......
...@@ -7,7 +7,7 @@ import ( ...@@ -7,7 +7,7 @@ import (
) )
// createRawSupervisionNodeConfigTx create raw tx for node config // createRawSupervisionNodeConfigTx create raw tx for node config
func createRawSupervisionNodeConfigTx(config *pt.ParaNodeAddrConfig) *types.Transaction { func createRawSupervisionNodeConfigTx(config *pt.ParaNodeGroupConfig) *types.Transaction {
action := &pt.ParacrossAction{ action := &pt.ParacrossAction{
Ty: pt.ParacrossActionSupervisionNodeConfig, Ty: pt.ParacrossActionSupervisionNodeConfig,
Value: &pt.ParacrossAction_SupervisionNodeConfig{SupervisionNodeConfig: config}, Value: &pt.ParacrossAction_SupervisionNodeConfig{SupervisionNodeConfig: config},
...@@ -32,10 +32,10 @@ func (suite *NodeManageTestSuite) testSupervisionExec() { ...@@ -32,10 +32,10 @@ func (suite *NodeManageTestSuite) testSupervisionExec() {
func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey string) { func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey string) {
// Apply // Apply
config := &pt.ParaNodeAddrConfig{ config := &pt.ParaNodeGroupConfig{
Title: chain33TestCfg.GetTitle(), Title: chain33TestCfg.GetTitle(),
Op: pt.ParacrossSupervisionNodeApply, Op: pt.ParacrossSupervisionNodeApply,
Addr: addr, Addrs: addr,
} }
tx := createRawSupervisionNodeConfigTx(config) tx := createRawSupervisionNodeConfigTx(config)
receipt := nodeCommit(suite, privKey, tx) receipt := nodeCommit(suite, privKey, tx)
...@@ -46,7 +46,7 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey ...@@ -46,7 +46,7 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey
suite.Nil(err) suite.Nil(err)
// cancel // cancel
config = &pt.ParaNodeAddrConfig{ config = &pt.ParaNodeGroupConfig{
Title: chain33TestCfg.GetTitle(), Title: chain33TestCfg.GetTitle(),
Op: pt.ParacrossSupervisionNodeCancel, Op: pt.ParacrossSupervisionNodeCancel,
Id: getParaNodeIDSuffix(g.Current.Id), Id: getParaNodeIDSuffix(g.Current.Id),
...@@ -57,10 +57,10 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey ...@@ -57,10 +57,10 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey
} }
func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey string) { func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey string) {
config := &pt.ParaNodeAddrConfig{ config := &pt.ParaNodeGroupConfig{
Title: chain33TestCfg.GetTitle(), Title: chain33TestCfg.GetTitle(),
Op: pt.ParacrossSupervisionNodeApply, Op: pt.ParacrossSupervisionNodeApply,
Addr: addr, Addrs: addr,
} }
tx := createRawSupervisionNodeConfigTx(config) tx := createRawSupervisionNodeConfigTx(config)
receipt := nodeCommit(suite, privKey, tx) receipt := nodeCommit(suite, privKey, tx)
...@@ -70,7 +70,7 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey ...@@ -70,7 +70,7 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey
err := types.Decode(receipt.Logs[0].Log, &g) err := types.Decode(receipt.Logs[0].Log, &g)
suite.Nil(err) suite.Nil(err)
config = &pt.ParaNodeAddrConfig{ config = &pt.ParaNodeGroupConfig{
Title: chain33TestCfg.GetTitle(), Title: chain33TestCfg.GetTitle(),
Id: getParaNodeIDSuffix(g.Current.Id), Id: getParaNodeIDSuffix(g.Current.Id),
Op: pt.ParacrossSupervisionNodeApprove, Op: pt.ParacrossSupervisionNodeApprove,
...@@ -81,20 +81,20 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey ...@@ -81,20 +81,20 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey
} }
func (suite *NodeManageTestSuite) testSupervisionNodeError() { func (suite *NodeManageTestSuite) testSupervisionNodeError() {
config := &pt.ParaNodeAddrConfig{ config := &pt.ParaNodeGroupConfig{
Title: chain33TestCfg.GetTitle(), Title: chain33TestCfg.GetTitle(),
Op: pt.ParacrossSupervisionNodeApply, Op: pt.ParacrossSupervisionNodeApply,
Addr: Account1M3, Addrs: Account1M3,
} }
tx := createRawSupervisionNodeConfigTx(config) tx := createRawSupervisionNodeConfigTx(config)
tx, _ = signTx(suite.Suite, tx, PrivKey1M3) tx, _ = signTx(suite.Suite, tx, PrivKey1M3)
_, err := suite.exec.Exec(tx, 0) _, err := suite.exec.Exec(tx, 0)
suite.NotNil(err) suite.NotNil(err)
config = &pt.ParaNodeAddrConfig{ config = &pt.ParaNodeGroupConfig{
Title: chain33TestCfg.GetTitle(), Title: chain33TestCfg.GetTitle(),
Op: pt.ParacrossSupervisionNodeApply, Op: pt.ParacrossSupervisionNodeApply,
Addr: "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4", Addrs: "1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4",
} }
tx = createRawSupervisionNodeConfigTx(config) tx = createRawSupervisionNodeConfigTx(config)
tx, _ = signTx(suite.Suite, tx, PrivKey1KS) tx, _ = signTx(suite.Suite, tx, PrivKey1KS)
...@@ -103,10 +103,10 @@ func (suite *NodeManageTestSuite) testSupervisionNodeError() { ...@@ -103,10 +103,10 @@ func (suite *NodeManageTestSuite) testSupervisionNodeError() {
} }
func (suite *NodeManageTestSuite) testSupervisionNodeQuit() { func (suite *NodeManageTestSuite) testSupervisionNodeQuit() {
config := &pt.ParaNodeAddrConfig{ config := &pt.ParaNodeGroupConfig{
Title: chain33TestCfg.GetTitle(), Title: chain33TestCfg.GetTitle(),
Op: pt.ParacrossSupervisionNodeQuit, Op: pt.ParacrossSupervisionNodeQuit,
Addr: Account1Ku, Addrs: Account1Ku,
} }
tx := createRawSupervisionNodeConfigTx(config) tx := createRawSupervisionNodeConfigTx(config)
receipt := nodeCommit(suite, PrivKey1Ku, tx) receipt := nodeCommit(suite, PrivKey1Ku, tx)
...@@ -123,11 +123,11 @@ func (suite *NodeManageTestSuite) testSupervisionNodeQuit() { ...@@ -123,11 +123,11 @@ func (suite *NodeManageTestSuite) testSupervisionNodeQuit() {
} }
func (suite *NodeManageTestSuite) testSupervisionNodeModify() { func (suite *NodeManageTestSuite) testSupervisionNodeModify() {
config := &pt.ParaNodeAddrConfig{ config := &pt.ParaNodeGroupConfig{
Title: chain33TestCfg.GetTitle(), Title: chain33TestCfg.GetTitle(),
Op: pt.ParacrossSupervisionNodeModify, Op: pt.ParacrossSupervisionNodeModify,
Addr: Account14K, Addrs: Account14K,
BlsPubKey: Bls14K, BlsPubKeys: Bls14K,
} }
tx := createRawSupervisionNodeConfigTx(config) tx := createRawSupervisionNodeConfigTx(config)
receipt := nodeCommit(suite, PrivKey14K, tx) receipt := nodeCommit(suite, PrivKey14K, tx)
......
...@@ -357,7 +357,7 @@ message ParacrossAction { ...@@ -357,7 +357,7 @@ message ParacrossAction {
ParaStageConfig selfStageConfig = 11; ParaStageConfig selfStageConfig = 11;
CrossAssetTransfer crossAssetTransfer = 12; CrossAssetTransfer crossAssetTransfer = 12;
ParaBindMinerCmd paraBindMiner = 13; ParaBindMinerCmd paraBindMiner = 13;
ParaNodeAddrConfig supervisionNodeConfig = 14; ParaNodeGroupConfig supervisionNodeConfig = 14;
} }
int32 ty = 2; int32 ty = 2;
} }
......
This diff is collapsed.
...@@ -19,14 +19,13 @@ var ( ...@@ -19,14 +19,13 @@ var (
// ForkCommitTx main chain support paracross commit tx // ForkCommitTx main chain support paracross commit tx
ForkCommitTx = "ForkParacrossCommitTx" ForkCommitTx = "ForkParacrossCommitTx"
// MainForkParacrossCommitTx 平行链配置项对应主链的ForkCommitTx 高度 // MainForkParacrossCommitTx 平行链配置项对应主链的ForkCommitTx 高度
// 同一个fork,同一份代码在主链和平行链需要执行高度一致,需要平行链配置主链fork高度
MainForkParacrossCommitTx = "mainForkParacrossCommitTx" MainForkParacrossCommitTx = "mainForkParacrossCommitTx"
// ForkLoopCheckCommitTxDone 循环检查共识交易done的fork // ForkLoopCheckCommitTxDone 循环检查共识交易done的fork
ForkLoopCheckCommitTxDone = "ForkLoopCheckCommitTxDone" ForkLoopCheckCommitTxDone = "ForkLoopCheckCommitTxDone"
// MainLoopCheckCommitTxDoneForkHeight 平行链的配置项,对应主链的ForkLoopCheckCommitTxDone高度 // MainLoopCheckCommitTxDoneForkHeight 平行链的配置项,对应主链的ForkLoopCheckCommitTxDone高度
MainLoopCheckCommitTxDoneForkHeight = "mainLoopCheckCommitTxDoneForkHeight" MainLoopCheckCommitTxDoneForkHeight = "mainLoopCheckCommitTxDoneForkHeight"
//MainForkParaSupervision = "mainForkParaSupervision"
// ForkParaAssetTransferRbk 平行链资产转移平行链失败主链回滚 // ForkParaAssetTransferRbk 平行链资产转移平行链失败主链回滚
ForkParaAssetTransferRbk = "ForkParaAssetTransferRbk" ForkParaAssetTransferRbk = "ForkParaAssetTransferRbk"
// ForkParaSupervision 平行链新增监督节点 // ForkParaSupervision 平行链新增监督节点
...@@ -128,7 +127,7 @@ func (p *ParacrossType) GetLogMap() map[int64]*types.LogInfo { ...@@ -128,7 +127,7 @@ func (p *ParacrossType) GetLogMap() map[int64]*types.LogInfo {
TyLogParaStageGroupUpdate: {Ty: reflect.TypeOf(ReceiptSelfConsStagesUpdate{}), Name: "LogParaSelfConfStagesUpdate"}, TyLogParaStageGroupUpdate: {Ty: reflect.TypeOf(ReceiptSelfConsStagesUpdate{}), Name: "LogParaSelfConfStagesUpdate"},
TyLogParaBindMinerAddr: {Ty: reflect.TypeOf(ReceiptParaBindMinerInfo{}), Name: "TyLogParaBindMinerAddrUpdate"}, TyLogParaBindMinerAddr: {Ty: reflect.TypeOf(ReceiptParaBindMinerInfo{}), Name: "TyLogParaBindMinerAddrUpdate"},
TyLogParaBindMinerNode: {Ty: reflect.TypeOf(ReceiptParaNodeBindListUpdate{}), Name: "TyLogParaBindNodeListUpdate"}, TyLogParaBindMinerNode: {Ty: reflect.TypeOf(ReceiptParaNodeBindListUpdate{}), Name: "TyLogParaBindNodeListUpdate"},
TyLogParaSupervisionNodeConfig: {Ty: reflect.TypeOf(ReceiptParaNodeConfig{}), Name: "LogParaSupervisionNodeConfig"}, TyLogParaSupervisionNodeConfig: {Ty: reflect.TypeOf(ReceiptParaNodeGroupConfig{}), Name: "LogParaSupervisionNodeConfig"},
TyLogParaSupervisionNodeGroupAddrsUpdate: {Ty: reflect.TypeOf(types.ReceiptConfig{}), Name: "LogParaSupervisionNodeGroupAddrsUpdate"}, TyLogParaSupervisionNodeGroupAddrsUpdate: {Ty: reflect.TypeOf(types.ReceiptConfig{}), Name: "LogParaSupervisionNodeGroupAddrsUpdate"},
TyLogParaSupervisionNodeStatusUpdate: {Ty: reflect.TypeOf(ReceiptParaNodeAddrStatUpdate{}), Name: "LogParaSupervisionNodeStatusUpdate"}, TyLogParaSupervisionNodeStatusUpdate: {Ty: reflect.TypeOf(ReceiptParaNodeAddrStatUpdate{}), Name: "LogParaSupervisionNodeStatusUpdate"},
} }
......
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