Commit de68ba63 authored by liuyuhang's avatar liuyuhang Committed by 33cn

add transfer

parent 24b2c046
......@@ -51,6 +51,10 @@ func AutonomyCmd() *cobra.Command {
ShowProposalRuleCmd(),
)
cmd.AddCommand(
TransferFundCmd(),
)
return cmd
}
......
......@@ -226,4 +226,35 @@ func showProposalRule(cmd *cobra.Command, args []string) {
ctx := jsonrpc.NewRPCCtx(rpcLaddr, "Chain33.Query", params, rep)
ctx.Run()
}
// TransferFundCmd 资金转入自治系统合约中
func TransferFundCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "transferFund",
Short: "transfer fund",
Run: transferFund,
}
addTransferFundflags(cmd)
return cmd
}
func addTransferFundflags(cmd *cobra.Command) {
cmd.Flags().Int64P("amount", "a", 0, "amount")
cmd.MarkFlagRequired("amount")
cmd.Flags().StringP("note", "n", "", "note")
}
func transferFund(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
amount, _ := cmd.Flags().GetInt64("amount")
note, _:= cmd.Flags().GetString("note")
params := &auty.TransferFund{
Amount: amount*types.Coin,
Note: note,
}
var res string
ctx := jsonrpc.NewRPCCtx(rpcLaddr, "autonomy.TransferFundTx", params, &res)
ctx.RunWithoutMarshal()
}
\ No newline at end of file
......@@ -13,6 +13,7 @@ import (
"github.com/33cn/chain33/client"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
"github.com/33cn/chain33/common/address"
)
const (
......@@ -50,13 +51,23 @@ func newAction(a *Autonomy, tx *types.Transaction, index int32) *action {
func (a *action) propBoard(prob *auty.ProposalBoard) (*types.Receipt, error) {
if len(prob.Boards) > maxBoards || len(prob.Boards) < minBoards {
alog.Error("propBoard ", "proposal boards number is invaild", len(prob.Boards))
return nil, types.ErrInvalidParam
}
if prob.StartBlockHeight < a.height || prob.EndBlockHeight < a.height {
alog.Error("propBoard height invaild", "StartBlockHeight", prob.StartBlockHeight, "EndBlockHeight",
prob.EndBlockHeight, "height", a.height)
return nil, types.ErrInvalidParam
}
for _, board := range prob.Boards {
if err := address.CheckAddress(board); err != nil {
alog.Error("propBoard ", "addr", board, "check toAddr error", err)
return nil, types.ErrInvalidAddress
}
}
// 获取当前生效提案规则
rule, err := a.getActiveRule()
if err != nil {
......
......@@ -88,4 +88,9 @@ func (a *Autonomy) Exec_VotePropRule(payload *auty.VoteProposalRule, tx *types.T
func (a *Autonomy) Exec_TmintPropRule(payload *auty.TerminateProposalRule, tx *types.Transaction, index int) (*types.Receipt, error) {
action := newAction(a, tx, int32(index))
return action.tmintPropRule(payload)
}
func (a *Autonomy) Exec_Transfer(payload *auty.TransferFund, tx *types.Transaction, index int) (*types.Receipt, error) {
action := newAction(a, tx, int32(index))
return action.transfer(payload)
}
\ No newline at end of file
......@@ -20,6 +20,8 @@ func (a *action) propProject(prob *auty.ProposalProject) (*types.Receipt, error)
}
if prob.StartBlockHeight < a.height || prob.EndBlockHeight < a.height || prob.Amount <= 0 {
alog.Error("propProject height or amount invaild", "StartBlockHeight", prob.StartBlockHeight, "EndBlockHeight",
prob.EndBlockHeight, "height", a.height, "amount", prob.Amount)
return nil, types.ErrInvalidParam
}
......
......@@ -9,6 +9,7 @@ import (
"github.com/33cn/chain33/types"
auty "github.com/33cn/plugin/plugin/dapp/autonomy/types"
"github.com/33cn/chain33/system/dapp"
)
......@@ -18,10 +19,17 @@ func (a *action) propRule(prob *auty.ProposalRule) (*types.Receipt, error) {
if prob.RuleCfg == nil || prob.RuleCfg.BoardAttendRatio <= 0 && prob.RuleCfg.BoardApproveRatio <= 0 &&
prob.RuleCfg.PubOpposeRatio <= 0 && prob.RuleCfg.ProposalAmount <= 0 && prob.RuleCfg.LargeProjectAmount <= 0 &&
prob.RuleCfg.PublicPeriod <= 0 {
alog.Error("propRule ", "ProposalRule RuleCfg invaild or have no modify param", prob.RuleCfg)
return nil, types.ErrInvalidParam
}
if prob.RuleCfg.BoardAttendRatio > 100 || prob.RuleCfg.BoardApproveRatio > 100 || prob.RuleCfg.PubOpposeRatio > 100 {
alog.Error("propRule RuleCfg invaild", "BoardAttendRatio", prob.RuleCfg.BoardAttendRatio, "BoardApproveRatio",
prob.RuleCfg.BoardApproveRatio, "PubOpposeRatio", prob.RuleCfg.PubOpposeRatio)
return nil, types.ErrInvalidParam
}
if prob.StartBlockHeight < a.height || prob.EndBlockHeight < a.height {
alog.Error("propRule height invaild", "StartBlockHeight", prob.StartBlockHeight, "EndBlockHeight",
prob.EndBlockHeight, "height", a.height)
return nil, types.ErrInvalidParam
}
......@@ -297,6 +305,25 @@ func (a *action) tmintPropRule(tmintProb *auty.TerminateProposalRule) (*types.Re
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
}
func (a *action) transfer(tf *auty.TransferFund) (*types.Receipt, error) {
if a.execaddr != dapp.ExecAddress(string(auty.AutonomyX)) {
err := auty.ErrNoAutonomyExec
alog.Error("autonomy transfer ", "addr", a.fromaddr, "execaddr", a.execaddr, "this exec is not autonomy", err)
return nil, err
}
var logs []*types.ReceiptLog
var kv []*types.KeyValue
receipt, err := a.coinsAccount.ExecTransfer(a.fromaddr, autonomyAddr, a.execaddr, tf.Amount)
if err != nil {
alog.Error("autonomy transfer ", "addr", a.fromaddr, "amount", tf.Amount, "ExecTransfer fail", err)
return nil, err
}
logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...)
return &types.Receipt{Ty: types.ExecOk, KV: kv, Logs: logs}, nil
}
func (a *action) getProposalRule(ID string) (*auty.AutonomyProposalRule, error) {
value, err := a.db.Get(propRuleID(ID))
if err != nil {
......
......@@ -26,10 +26,12 @@ message AutonomyAction {
PubVoteProposalProject pubVotePropProject = 8;
TerminateProposalProject tmintPropProject = 9;
// 提案规则修改相关
ProposalRule propRule = 10;
RevokeProposalRule rvkPropRule = 11;
VoteProposalRule votePropRule = 12;
TerminateProposalRule tmintPropRule = 13;
ProposalRule propRule = 10;
RevokeProposalRule rvkPropRule = 11;
VoteProposalRule votePropRule = 12;
TerminateProposalRule tmintPropRule = 13;
// 发展基金转自治系统合约
TransferFund transfer = 14;
}
int32 ty = 14;
int32 ty = 15;
}
\ No newline at end of file
......@@ -90,4 +90,10 @@ message ReqQueryProposalProject {
message ReplyQueryProposalProject {
repeated AutonomyProposalProject propProjects = 1;
}
// TransferFund action
message TransferFund {
int64 amount = 1;
string note = 2;
}
\ No newline at end of file
......@@ -185,4 +185,18 @@ func (c *Jrpc) TerminateProposalRuleTx(parm *auty.TerminateProposalRule, result
*result = hex.EncodeToString(reply.Data)
return nil
}
// TransferTx 资金转入自治系统合约中
func (c *Jrpc) TransferFundTx(parm *auty.TransferFund, result *interface{}) error {
if parm == nil {
return types.ErrInvalidParam
}
reply, err := c.cli.transferFund(context.Background(), parm)
if err != nil {
return err
}
*result = hex.EncodeToString(reply.Data)
return nil
}
\ No newline at end of file
......@@ -207,4 +207,19 @@ func (c *channelClient) terminateProposalRule(ctx context.Context, head *auty.Te
return nil, err
}
return &types.UnsignTx{Data: data}, nil
}
func (c *channelClient) transferFund(ctx context.Context, head *auty.TransferFund) (*types.UnsignTx, error) {
val := &auty.AutonomyAction{
Ty: auty.AutonomyActionTransfer,
Value: &auty.AutonomyAction_Transfer{Transfer: head},
}
tx := &types.Transaction{
Payload: types.Encode(val),
}
data, err := types.FormatTxEncode(types.ExecName(auty.AutonomyX), tx)
if err != nil {
return nil, err
}
return &types.UnsignTx{Data: data}, nil
}
\ No newline at end of file
......@@ -36,6 +36,7 @@ It has these top-level messages:
LocalProposalProject
ReqQueryProposalProject
ReplyQueryProposalProject
TransferFund
AutonomyProposalRule
ProposalRule
RevokeProposalRule
......@@ -79,8 +80,9 @@ type AutonomyAction struct {
// *AutonomyAction_RvkPropRule
// *AutonomyAction_VotePropRule
// *AutonomyAction_TmintPropRule
// *AutonomyAction_Transfer
Value isAutonomyAction_Value `protobuf_oneof:"value"`
Ty int32 `protobuf:"varint,14,opt,name=ty" json:"ty,omitempty"`
Ty int32 `protobuf:"varint,15,opt,name=ty" json:"ty,omitempty"`
}
func (m *AutonomyAction) Reset() { *m = AutonomyAction{} }
......@@ -131,6 +133,9 @@ type AutonomyAction_VotePropRule struct {
type AutonomyAction_TmintPropRule struct {
TmintPropRule *TerminateProposalRule `protobuf:"bytes,13,opt,name=tmintPropRule,oneof"`
}
type AutonomyAction_Transfer struct {
Transfer *TransferFund `protobuf:"bytes,14,opt,name=transfer,oneof"`
}
func (*AutonomyAction_PropBoard) isAutonomyAction_Value() {}
func (*AutonomyAction_RvkPropBoard) isAutonomyAction_Value() {}
......@@ -145,6 +150,7 @@ func (*AutonomyAction_PropRule) isAutonomyAction_Value() {}
func (*AutonomyAction_RvkPropRule) isAutonomyAction_Value() {}
func (*AutonomyAction_VotePropRule) isAutonomyAction_Value() {}
func (*AutonomyAction_TmintPropRule) isAutonomyAction_Value() {}
func (*AutonomyAction_Transfer) isAutonomyAction_Value() {}
func (m *AutonomyAction) GetValue() isAutonomyAction_Value {
if m != nil {
......@@ -244,6 +250,13 @@ func (m *AutonomyAction) GetTmintPropRule() *TerminateProposalRule {
return nil
}
func (m *AutonomyAction) GetTransfer() *TransferFund {
if x, ok := m.GetValue().(*AutonomyAction_Transfer); ok {
return x.Transfer
}
return nil
}
func (m *AutonomyAction) GetTy() int32 {
if m != nil {
return m.Ty
......@@ -267,6 +280,7 @@ func (*AutonomyAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer
(*AutonomyAction_RvkPropRule)(nil),
(*AutonomyAction_VotePropRule)(nil),
(*AutonomyAction_TmintPropRule)(nil),
(*AutonomyAction_Transfer)(nil),
}
}
......@@ -339,6 +353,11 @@ func _AutonomyAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
if err := b.EncodeMessage(x.TmintPropRule); err != nil {
return err
}
case *AutonomyAction_Transfer:
b.EncodeVarint(14<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Transfer); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("AutonomyAction.Value has unexpected type %T", x)
......@@ -453,6 +472,14 @@ func _AutonomyAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto
err := b.DecodeMessage(msg)
m.Value = &AutonomyAction_TmintPropRule{msg}
return true, err
case 14: // value.transfer
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(TransferFund)
err := b.DecodeMessage(msg)
m.Value = &AutonomyAction_Transfer{msg}
return true, err
default:
return false, nil
}
......@@ -527,6 +554,11 @@ func _AutonomyAction_OneofSizer(msg proto.Message) (n int) {
n += proto.SizeVarint(13<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *AutonomyAction_Transfer:
s := proto.Size(x.Transfer)
n += proto.SizeVarint(14<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
......@@ -541,30 +573,31 @@ func init() {
func init() { proto.RegisterFile("autonomy.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 388 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x93, 0x4b, 0x6b, 0xe2, 0x50,
0x14, 0x80, 0xd5, 0x99, 0xf8, 0x38, 0x31, 0x99, 0xe1, 0xcc, 0x30, 0x93, 0x91, 0x19, 0x46, 0xba,
0x72, 0x25, 0xf4, 0xb1, 0x2a, 0x08, 0x2a, 0xc5, 0xba, 0x29, 0x0d, 0xa1, 0xb8, 0x8f, 0xf6, 0x2e,
0xac, 0x31, 0x37, 0x5c, 0x6f, 0x02, 0xf9, 0x15, 0xfd, 0xcb, 0x25, 0xc7, 0x9b, 0xc7, 0x8d, 0xe9,
0x4e, 0x73, 0xce, 0xf7, 0xc1, 0xf9, 0x42, 0xc0, 0xf6, 0x63, 0xc9, 0x43, 0x7e, 0x4c, 0xa7, 0x91,
0xe0, 0x92, 0xa3, 0x21, 0xd3, 0x88, 0x9d, 0x46, 0xe6, 0x96, 0xfb, 0xe2, 0xf5, 0xfc, 0x6c, 0x64,
0x45, 0x82, 0xbf, 0xb1, 0x9d, 0x54, 0x7f, 0x41, 0xc4, 0x01, 0x3b, 0xff, 0xbe, 0x7a, 0xef, 0x81,
0xbd, 0x50, 0x86, 0xc5, 0x4e, 0xee, 0x79, 0x88, 0x77, 0x30, 0x88, 0x04, 0x8f, 0x96, 0x99, 0xc0,
0x69, 0x8f, 0xdb, 0x13, 0xf3, 0xe6, 0xe7, 0x94, 0xac, 0x53, 0x57, 0xf0, 0x88, 0x9f, 0xfc, 0x80,
0x66, 0xeb, 0x96, 0x57, 0x2e, 0xe2, 0x1c, 0x86, 0x22, 0x39, 0xb8, 0x05, 0xd8, 0x21, 0x70, 0xa4,
0x40, 0x8f, 0x25, 0xfc, 0xc0, 0xea, 0xb8, 0x46, 0xe0, 0x1c, 0xac, 0x84, 0x4b, 0x56, 0x2a, 0xbe,
0x90, 0xc2, 0x51, 0x8a, 0x8d, 0x9a, 0x55, 0x05, 0x3a, 0x80, 0x8f, 0x60, 0xcb, 0xe3, 0x3e, 0x94,
0xa5, 0xe2, 0x2b, 0x29, 0xfe, 0x29, 0xc5, 0x0b, 0x13, 0xc7, 0x7d, 0xe8, 0x5f, 0x7a, 0x6a, 0x18,
0xde, 0x83, 0x99, 0x5d, 0xe6, 0x9e, 0xb3, 0x39, 0x06, 0x59, 0x7e, 0xd5, 0x22, 0xa8, 0xe9, 0xba,
0xe5, 0x55, 0x97, 0x71, 0x05, 0xb6, 0x3a, 0x2b, 0xc7, 0xbb, 0x84, 0xff, 0x6d, 0x4c, 0x51, 0x4a,
0x6a, 0x14, 0xae, 0xe0, 0x5b, 0x7e, 0x5d, 0x2e, 0xea, 0x69, 0x4d, 0xab, 0x41, 0x4a, 0x4d, 0x1d,
0xc2, 0x67, 0xc0, 0x28, 0xde, 0x6e, 0x6a, 0xaa, 0xbe, 0x16, 0xc6, 0x2d, 0x17, 0x74, 0x5b, 0x03,
0x8a, 0x4f, 0xf0, 0xbd, 0xc8, 0x95, 0xeb, 0x06, 0xa4, 0xfb, 0xff, 0x59, 0xe7, 0x52, 0x78, 0x81,
0xe2, 0x35, 0xf4, 0xb3, 0x7c, 0x5e, 0x1c, 0x30, 0x07, 0x48, 0xf3, 0xa3, 0x16, 0x3a, 0x1b, 0xad,
0x5b, 0x5e, 0xb1, 0x86, 0x33, 0x30, 0x55, 0x2c, 0xa2, 0x4c, 0xa2, 0xfe, 0x34, 0xf6, 0x55, 0x6c,
0x75, 0x1f, 0x67, 0x30, 0xcc, 0x23, 0x11, 0x3f, 0x24, 0xfe, 0x77, 0x43, 0x56, 0x45, 0x6b, 0xeb,
0xf8, 0x00, 0x56, 0x71, 0x04, 0xf1, 0x96, 0xf6, 0x7e, 0x2f, 0x8e, 0x57, 0x12, 0x1d, 0x42, 0x1b,
0x3a, 0x32, 0x75, 0xec, 0x71, 0x7b, 0x62, 0x78, 0x1d, 0x99, 0x2e, 0x7b, 0x60, 0x24, 0x7e, 0x10,
0xb3, 0x6d, 0x97, 0x3e, 0xcc, 0xdb, 0x8f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5a, 0xbe, 0x86, 0xe9,
0xd9, 0x03, 0x00, 0x00,
// 407 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x93, 0x4b, 0x6b, 0xf2, 0x40,
0x14, 0x40, 0xd5, 0xef, 0x8b, 0x8f, 0x1b, 0x13, 0xcb, 0x6d, 0x69, 0x53, 0x69, 0xa9, 0x74, 0xe5,
0x4a, 0xe8, 0x63, 0x55, 0x10, 0x54, 0x8a, 0x75, 0x53, 0x1a, 0x82, 0xb8, 0x8f, 0x76, 0x0a, 0xd6,
0x98, 0x09, 0xe3, 0x24, 0x90, 0xbf, 0xd7, 0x5f, 0x56, 0x32, 0x4e, 0x1e, 0x13, 0xd3, 0x9d, 0xe6,
0xde, 0x73, 0xe0, 0x1e, 0x0d, 0x98, 0x6e, 0xc8, 0xa9, 0x4f, 0xf7, 0xf1, 0x28, 0x60, 0x94, 0x53,
0xd4, 0x78, 0x1c, 0x90, 0x43, 0x5f, 0x5f, 0x53, 0x97, 0x7d, 0x1e, 0x9f, 0xf5, 0x8d, 0x80, 0xd1,
0x6f, 0xb2, 0xe1, 0xf2, 0x2b, 0xb0, 0xd0, 0x23, 0xc7, 0xcf, 0xf7, 0x3f, 0x2d, 0x30, 0xa7, 0xd2,
0x30, 0xdd, 0xf0, 0x2d, 0xf5, 0xf1, 0x19, 0x3a, 0x01, 0xa3, 0xc1, 0x2c, 0x11, 0x58, 0xf5, 0x41,
0x7d, 0xa8, 0x3f, 0x5e, 0x8c, 0x84, 0x75, 0x64, 0x33, 0x1a, 0xd0, 0x83, 0xeb, 0x89, 0xd9, 0xa2,
0xe6, 0xe4, 0x8b, 0x38, 0x81, 0x2e, 0x8b, 0x76, 0x76, 0x06, 0x36, 0x04, 0xd8, 0x97, 0xa0, 0x43,
0x22, 0xba, 0x23, 0x65, 0x5c, 0x21, 0x70, 0x02, 0x46, 0x44, 0x39, 0xc9, 0x15, 0xff, 0x84, 0xc2,
0x92, 0x8a, 0x95, 0x9c, 0x15, 0x05, 0x2a, 0x80, 0x6f, 0x60, 0xf2, 0xfd, 0xd6, 0xe7, 0xb9, 0xe2,
0xbf, 0x50, 0xdc, 0x4a, 0xc5, 0x92, 0xb0, 0xfd, 0xd6, 0x77, 0x4f, 0x3d, 0x25, 0x0c, 0x5f, 0x40,
0x4f, 0x2e, 0xb3, 0x8f, 0xd9, 0x2c, 0x4d, 0x58, 0x2e, 0x4b, 0x11, 0xe4, 0x74, 0x51, 0x73, 0x8a,
0xcb, 0x38, 0x07, 0x53, 0x9e, 0x95, 0xe2, 0x4d, 0x81, 0xdf, 0x54, 0xa6, 0xc8, 0x25, 0x25, 0x0a,
0xe7, 0xd0, 0x4b, 0xaf, 0x4b, 0x45, 0x2d, 0xa5, 0x69, 0x31, 0x48, 0xae, 0x29, 0x43, 0xf8, 0x01,
0x18, 0x84, 0xeb, 0x55, 0x49, 0xd5, 0x56, 0xc2, 0xd8, 0xf9, 0x82, 0x6a, 0xab, 0x40, 0xf1, 0x1d,
0xce, 0xb2, 0x5c, 0xa9, 0xae, 0x23, 0x74, 0x77, 0x7f, 0x75, 0xce, 0x85, 0x27, 0x28, 0x3e, 0x40,
0x3b, 0xc9, 0xe7, 0x84, 0x1e, 0xb1, 0x40, 0x68, 0xce, 0x4b, 0xa1, 0x93, 0xd1, 0xa2, 0xe6, 0x64,
0x6b, 0x38, 0x06, 0x5d, 0xc6, 0x12, 0x94, 0x2e, 0xa8, 0xeb, 0xca, 0xbe, 0x92, 0x2d, 0xee, 0xe3,
0x18, 0xba, 0x69, 0x24, 0xc1, 0x77, 0x05, 0x7f, 0x55, 0x91, 0x55, 0xd2, 0xca, 0x3a, 0xbe, 0x82,
0x91, 0x1d, 0x21, 0x78, 0x43, 0xf9, 0x7d, 0x4f, 0x8e, 0x97, 0x12, 0x15, 0x4a, 0xce, 0xe6, 0xcc,
0xf5, 0x0f, 0x5f, 0x84, 0x59, 0xa6, 0x72, 0xf6, 0x52, 0x3e, 0x9e, 0x87, 0x7e, 0xf2, 0xdf, 0xcc,
0xd6, 0xd0, 0x84, 0x06, 0x8f, 0xad, 0xde, 0xa0, 0x3e, 0xd4, 0x9c, 0x06, 0x8f, 0x67, 0x2d, 0xd0,
0x22, 0xd7, 0x0b, 0xc9, 0xba, 0x29, 0xde, 0xe5, 0xa7, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x95,
0x75, 0xd2, 0x7a, 0x0c, 0x04, 0x00, 0x00,
}
......@@ -22,6 +22,8 @@ const (
AutonomyActionVotePropRule
AutonomyActionTmintPropRule
AutonomyActionTransfer
//log for autonomy
TyLogPropBoard = 2101
TyLogRvkPropBoard = 2102
......
......@@ -21,4 +21,6 @@ var (
ErrTerminatePeriod = errors.New("ErrTerminatePeriod")
// ErrNoActiveBoard 没有有效董事会
ErrNoActiveBoard = errors.New("ErrNoActiveBoard")
// ErrNoAutonomyExec 非Autonomy执行器
ErrNoAutonomyExec = errors.New("ErrNoAutonomyExec")
)
This diff is collapsed.
......@@ -88,5 +88,7 @@ func (a *AutonomyType) GetTypeMap() map[string]int32 {
"RvkPropRule": AutonomyActionRvkPropRule,
"VotePropRule": AutonomyActionVotePropRule,
"TmintPropRule": AutonomyActionTmintPropRule,
"Transfer": AutonomyActionTransfer,
}
}
\ No newline at end of file
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