Commit 04d2dd7b authored by heyubin's avatar heyubin

add by hyb for golint

parent df6f79f2
...@@ -19,6 +19,7 @@ import ( ...@@ -19,6 +19,7 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
//MultiSigCmd :
func MultiSigCmd() *cobra.Command { func MultiSigCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "multisig", Use: "multisig",
...@@ -32,6 +33,8 @@ func MultiSigCmd() *cobra.Command { ...@@ -32,6 +33,8 @@ func MultiSigCmd() *cobra.Command {
) )
return cmd return cmd
} }
//MultiSigAccountCmd :account相关的命令
func MultiSigAccountCmd() *cobra.Command { func MultiSigAccountCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "account", Use: "account",
...@@ -52,6 +55,7 @@ func MultiSigAccountCmd() *cobra.Command { ...@@ -52,6 +55,7 @@ func MultiSigAccountCmd() *cobra.Command {
return cmd return cmd
} }
//MultiSigOwnerCmd : owner相关的命令
func MultiSigOwnerCmd() *cobra.Command { func MultiSigOwnerCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "owner", Use: "owner",
...@@ -67,6 +71,7 @@ func MultiSigOwnerCmd() *cobra.Command { ...@@ -67,6 +71,7 @@ func MultiSigOwnerCmd() *cobra.Command {
return cmd return cmd
} }
//MultiSigTxCmd : tx交易相关的命令
func MultiSigTxCmd() *cobra.Command { func MultiSigTxCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "tx", Use: "tx",
...@@ -134,8 +139,8 @@ func createMultiSigAccTransfer(cmd *cobra.Command, args []string) { ...@@ -134,8 +139,8 @@ func createMultiSigAccTransfer(cmd *cobra.Command, args []string) {
//将字符转权重转换成uint64的值 //将字符转权重转换成uint64的值
var weights []uint64 var weights []uint64
var totalweight uint64 = 0 var totalweight uint64
var ownerCount int = 0 var ownerCount int
for _, weight := range weightsArr { for _, weight := range weightsArr {
ownerweight, err := strconv.ParseInt(weight, 10, 64) ownerweight, err := strconv.ParseInt(weight, 10, 64)
if err != nil || ownerweight <= 0 { if err != nil || ownerweight <= 0 {
...@@ -149,7 +154,7 @@ func createMultiSigAccTransfer(cmd *cobra.Command, args []string) { ...@@ -149,7 +154,7 @@ func createMultiSigAccTransfer(cmd *cobra.Command, args []string) {
var owners []*mty.Owner var owners []*mty.Owner
for index, addr := range addressArr { for index, addr := range addressArr {
if addr != "" { if addr != "" {
owmer := &mty.Owner{addr, weights[index]} owmer := &mty.Owner{OwnerAddr: addr, Weight: weights[index]}
owners = append(owners, owmer) owners = append(owners, owmer)
} }
} }
...@@ -581,7 +586,6 @@ func createMultiSigAccTransferOut(cmd *cobra.Command, args []string) { ...@@ -581,7 +586,6 @@ func createMultiSigAccTransferOut(cmd *cobra.Command, args []string) {
ctx.RunWithoutMarshal() ctx.RunWithoutMarshal()
} }
//query信息
//GetMultiSigAccCountCmd 获取已经创建的多重签名账户数量 //GetMultiSigAccCountCmd 获取已经创建的多重签名账户数量
func GetMultiSigAccCountCmd() *cobra.Command { func GetMultiSigAccCountCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
...@@ -1061,7 +1065,7 @@ func parseAccAssets(view interface{}) (interface{}, error) { ...@@ -1061,7 +1065,7 @@ func parseAccAssets(view interface{}) (interface{}, error) {
//GetMultiSigAccAllAddressCmd 获取指定地址创建的所有多重签名账户 //GetMultiSigAccAllAddressCmd 获取指定地址创建的所有多重签名账户
func GetMultiSigAccAllAddressCmd() *cobra.Command { func GetMultiSigAccAllAddressCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "creater", Use: "creature",
Short: "get all multisig accounts created by the address", Short: "get all multisig accounts created by the address",
Run: getMultiSigAccAllAddress, Run: getMultiSigAccAllAddress,
} }
......
// Copyright Fuzamei Corp. 2018 All Rights Reserved. // Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style // Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file. // license that can be found in the LICENSE file.
package multisig
/* /*
多重签名合约实现功能: 多重签名合约实现功能:
...@@ -29,7 +30,7 @@ Available Commands: ...@@ -29,7 +30,7 @@ Available Commands:
assets get assets of multisig account assets get assets of multisig account
count get multisig account count count get multisig account count
create Create a multisig account transaction create Create a multisig account transaction
creater get all multisig accounts created by the address creature get all multisig accounts created by the address
dailylimit Create a modify assets dailylimit transaction dailylimit Create a modify assets dailylimit transaction
info get multisig account info info get multisig account info
unspent get assets unspent today amount unspent get assets unspent today amount
...@@ -173,7 +174,7 @@ cli send multisig owner replace -a "13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47" -n 166 ...@@ -173,7 +174,7 @@ cli send multisig owner replace -a "13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47" -n 166
cli send multisig owner modify -a "13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47" -o "166po3ghRbRu53hu8jBBQzddp7kUJ9Ynyf" -w 11 -k 1C5xK2ytuoFqxmVGMcyz9XFKFWcDA8T3rK cli send multisig owner modify -a "13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47" -o "166po3ghRbRu53hu8jBBQzddp7kUJ9Ynyf" -w 11 -k 1C5xK2ytuoFqxmVGMcyz9XFKFWcDA8T3rK
//获取指定地址创建的所有多重签名账户 //获取指定地址创建的所有多重签名账户
cli multisig account creater -a 1DkrXbz2bK6XMpY4v9z2YUnhwWTXT6V5jd cli multisig account creature -a 1DkrXbz2bK6XMpY4v9z2YUnhwWTXT6V5jd
// 获取指定账户上指定资产的每日余额 // 获取指定账户上指定资产的每日余额
cli multisig account unspent -a 13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47 -e coins -s BTY cli multisig account unspent -a 13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47 -e coins -s BTY
...@@ -193,4 +194,3 @@ cli send multisig tx confirm -a "13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47" -i 9 -k "1 ...@@ -193,4 +194,3 @@ cli send multisig tx confirm -a "13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47" -i 9 -k "1
cli send multisig tx confirm -a "13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47" -i 9 -k "1C5xK2ytuoFqxmVGMcyz9XFKFWcDA8T3rK" cli send multisig tx confirm -a "13q53Ga1kquDCqx7EWF8FU94tLUK18Zd47" -i 9 -k "1C5xK2ytuoFqxmVGMcyz9XFKFWcDA8T3rK"
*/ */
package multisig
...@@ -41,8 +41,8 @@ func newAction(t *MultiSig, tx *types.Transaction, index int32) *action { ...@@ -41,8 +41,8 @@ func newAction(t *MultiSig, tx *types.Transaction, index int32) *action {
func (a *action) MultiSigAccCreate(accountCreate *mty.MultiSigAccCreate) (*types.Receipt, error) { func (a *action) MultiSigAccCreate(accountCreate *mty.MultiSigAccCreate) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kv []*types.KeyValue var kv []*types.KeyValue
var totalweight uint64 = 0 var totalweight uint64
var ownerCount int = 0 var ownerCount int
var dailyLimit mty.DailyLimit var dailyLimit mty.DailyLimit
//参数校验 //参数校验
...@@ -148,9 +148,9 @@ func (a *action) MultiSigAccOperate(AccountOperate *mty.MultiSigAccOperate) (*ty ...@@ -148,9 +148,9 @@ func (a *action) MultiSigAccOperate(AccountOperate *mty.MultiSigAccOperate) (*ty
} }
} }
//生成新的txid,并将此交易信息添加到Txs列表中 //生成新的txid,并将此交易信息添加到Txs列表中
txId := multiSigAccount.TxCount txID := multiSigAccount.TxCount
newMultiSigTx := &mty.MultiSigTx{} newMultiSigTx := &mty.MultiSigTx{}
newMultiSigTx.Txid = txId newMultiSigTx.Txid = txID
newMultiSigTx.TxHash = hex.EncodeToString(a.txhash) newMultiSigTx.TxHash = hex.EncodeToString(a.txhash)
newMultiSigTx.Executed = false newMultiSigTx.Executed = false
newMultiSigTx.TxType = mty.AccountOperate newMultiSigTx.TxType = mty.AccountOperate
...@@ -185,9 +185,9 @@ func (a *action) MultiSigOwnerOperate(AccOwnerOperate *mty.MultiSigOwnerOperate) ...@@ -185,9 +185,9 @@ func (a *action) MultiSigOwnerOperate(AccOwnerOperate *mty.MultiSigOwnerOperate)
} }
//生成新的txid,并将此交易信息添加到Txs列表中 //生成新的txid,并将此交易信息添加到Txs列表中
txId := multiSigAccount.TxCount txID := multiSigAccount.TxCount
newMultiSigTx := &mty.MultiSigTx{} newMultiSigTx := &mty.MultiSigTx{}
newMultiSigTx.Txid = txId newMultiSigTx.Txid = txID
newMultiSigTx.TxHash = hex.EncodeToString(a.txhash) newMultiSigTx.TxHash = hex.EncodeToString(a.txhash)
newMultiSigTx.Executed = false newMultiSigTx.Executed = false
newMultiSigTx.TxType = mty.OwnerOperate newMultiSigTx.TxType = mty.OwnerOperate
...@@ -231,9 +231,9 @@ func (a *action) MultiSigExecTransferFrom(multiSigAccTransfer *mty.MultiSigExecT ...@@ -231,9 +231,9 @@ func (a *action) MultiSigExecTransferFrom(multiSigAccTransfer *mty.MultiSigExecT
return nil, err return nil, err
} }
//生成新的txid,并将此交易信息添加到Txs列表中 //生成新的txid,并将此交易信息添加到Txs列表中
txId := multiSigAcc.TxCount txID := multiSigAcc.TxCount
newMultiSigTx := &mty.MultiSigTx{} newMultiSigTx := &mty.MultiSigTx{}
newMultiSigTx.Txid = txId newMultiSigTx.Txid = txID
newMultiSigTx.TxHash = hex.EncodeToString(a.txhash) newMultiSigTx.TxHash = hex.EncodeToString(a.txhash)
newMultiSigTx.Executed = false newMultiSigTx.Executed = false
newMultiSigTx.TxType = mty.TransferOperate newMultiSigTx.TxType = mty.TransferOperate
...@@ -355,37 +355,36 @@ func (a *action) MultiSigConfirmTx(ConfirmTx *mty.MultiSigConfirmTx) (*types.Rec ...@@ -355,37 +355,36 @@ func (a *action) MultiSigConfirmTx(ConfirmTx *mty.MultiSigConfirmTx) (*types.Rec
multiSigTx.ConfirmedOwner = append(multiSigTx.ConfirmedOwner, owner) multiSigTx.ConfirmedOwner = append(multiSigTx.ConfirmedOwner, owner)
} }
multiSigTxOwner := &mty.MultiSigTxOwner{multiSigAccAddr, ConfirmTx.TxId, owner} multiSigTxOwner := &mty.MultiSigTxOwner{MultiSigAddr: multiSigAccAddr, Txid: ConfirmTx.TxId, ConfirmedOwner: owner}
isConfirm := isConfirmed(multiSigAcc.RequiredWeight, multiSigTx) isConfirm := isConfirmed(multiSigAcc.RequiredWeight, multiSigTx)
//权重未达到要求或者撤销确认交易,构造MultiSigConfirmTx的receiptLog //权重未达到要求或者撤销确认交易,构造MultiSigConfirmTx的receiptLog
if !isConfirm || !ConfirmTx.ConfirmOrRevoke { if !isConfirm || !ConfirmTx.ConfirmOrRevoke {
return a.confirmTransaction(multiSigTx, multiSigTxOwner, ConfirmTx.ConfirmOrRevoke) return a.confirmTransaction(multiSigTx, multiSigTxOwner, ConfirmTx.ConfirmOrRevoke)
} else { }
//获取txhash对应交易详细信息 //获取txhash对应交易详细信息
tx, err := getTxByHash(a.api, multiSigTx.TxHash) tx, err := getTxByHash(a.api, multiSigTx.TxHash)
if err != nil { if err != nil {
return nil, err return nil, err
} }
payload, err := getMultiSigTxPayload(tx) payload, err := getMultiSigTxPayload(tx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
//根据不同的交易类型调用各自的处理函数,区分 操作owner/account 和转账的交易 //根据不同的交易类型调用各自的处理函数,区分 操作owner/account 和转账的交易
if multiSigTx.TxType == mty.OwnerOperate && payload != nil { if multiSigTx.TxType == mty.OwnerOperate && payload != nil {
transfer := payload.GetMultiSigOwnerOperate() transfer := payload.GetMultiSigOwnerOperate()
return a.executeOwnerOperateTx(multiSigAcc, multiSigTx, transfer, owner, false) return a.executeOwnerOperateTx(multiSigAcc, multiSigTx, transfer, owner, false)
} else if multiSigTx.TxType == mty.AccountOperate { } else if multiSigTx.TxType == mty.AccountOperate {
transfer := payload.GetMultiSigAccOperate() transfer := payload.GetMultiSigAccOperate()
return a.executeAccOperateTx(multiSigAcc, multiSigTx, transfer, owner, false) return a.executeAccOperateTx(multiSigAcc, multiSigTx, transfer, owner, false)
} else if multiSigTx.TxType == mty.TransferOperate { } else if multiSigTx.TxType == mty.TransferOperate {
transfer := payload.GetMultiSigExecTransferFrom() transfer := payload.GetMultiSigExecTransferFrom()
return a.executeTransferTx(multiSigAcc, multiSigTx, transfer, owner, mty.IsConfirm) return a.executeTransferTx(multiSigAcc, multiSigTx, transfer, owner, mty.IsConfirm)
} else { } else {
multisiglog.Error("MultiSigConfirmTx:GetMultiSigTx", "multiSigAccAddr", multiSigAccAddr, "Confirm TxId", ConfirmTx.TxId, "TxType unkown", multiSigTx.TxType) multisiglog.Error("MultiSigConfirmTx:GetMultiSigTx", "multiSigAccAddr", multiSigAccAddr, "Confirm TxId", ConfirmTx.TxId, "TxType unknown", multiSigTx.TxType)
return nil, mty.ErrTxTypeNoMatch return nil, mty.ErrTxTypeNoMatch
}
} }
} }
...@@ -404,7 +403,7 @@ func (a *action) multiSigWeightModify(multiSigAccAddr string, newRequiredWeight ...@@ -404,7 +403,7 @@ func (a *action) multiSigWeightModify(multiSigAccAddr string, newRequiredWeight
} }
//首先获取所有owner的权重之和,新设置的newRequiredWeight不能大于owner的权重之和 //首先获取所有owner的权重之和,新设置的newRequiredWeight不能大于owner的权重之和
var totalweight uint64 = 0 var totalweight uint64
receiptLog := &types.ReceiptLog{} receiptLog := &types.ReceiptLog{}
for _, owner := range multiSigAccount.Owners { for _, owner := range multiSigAccount.Owners {
if owner != nil { if owner != nil {
...@@ -445,17 +444,18 @@ func (a *action) multiSigDailyLimitOperate(multiSigAccAddr string, dailylimit *m ...@@ -445,17 +444,18 @@ func (a *action) multiSigDailyLimitOperate(multiSigAccAddr string, dailylimit *m
return nil, nil, types.ErrAccountNotExist return nil, nil, types.ErrAccountNotExist
} }
var flag bool = false flag := false
var addOrModify bool = false var addOrModify bool
var findindex int = 0 var findindex int
var curDailyLimit *mty.DailyLimit
receiptLog := &types.ReceiptLog{} receiptLog := &types.ReceiptLog{}
newSymbol := dailylimit.Symbol newSymbol := dailylimit.Symbol
newExecer := dailylimit.Execer newExecer := dailylimit.Execer
newDailyLimit := dailylimit.DailyLimit newDailyLimit := dailylimit.DailyLimit
prevDailyLimit := &mty.DailyLimit{newSymbol, newExecer, 0, 0, 0} prevDailyLimit := &mty.DailyLimit{Symbol: newSymbol, Execer: newExecer, DailyLimit: 0, SpentToday: 0, LastDay: 0}
curDailyLimit := &mty.DailyLimit{}
//首先遍历获取需要修改的symbol每日限额,没有找到就添加 //首先遍历获取需要修改的symbol每日限额,没有找到就添加
for index, dailyLimit := range multiSigAccount.DailyLimits { for index, dailyLimit := range multiSigAccount.DailyLimits {
if dailyLimit.Symbol == newSymbol && dailyLimit.Execer == newExecer { if dailyLimit.Symbol == newSymbol && dailyLimit.Execer == newExecer {
...@@ -709,7 +709,7 @@ func (a *action) receiptMultiSigTx(multiSigTx *mty.MultiSigTx, owner *mty.Owner, ...@@ -709,7 +709,7 @@ func (a *action) receiptMultiSigTx(multiSigTx *mty.MultiSigTx, owner *mty.Owner,
//组装receiptLog //组装receiptLog
receiptLogTx := &mty.ReceiptMultiSigTx{} receiptLogTx := &mty.ReceiptMultiSigTx{}
multiSigTxOwner := &mty.MultiSigTxOwner{multiSigTx.MultiSigAddr, multiSigTx.Txid, owner} multiSigTxOwner := &mty.MultiSigTxOwner{MultiSigAddr: multiSigTx.MultiSigAddr, Txid: multiSigTx.Txid, ConfirmedOwner: owner}
receiptLogTx.MultiSigTxOwner = multiSigTxOwner receiptLogTx.MultiSigTxOwner = multiSigTxOwner
receiptLogTx.PrevExecuted = prevExecutes receiptLogTx.PrevExecuted = prevExecutes
...@@ -732,8 +732,8 @@ func (a *action) receiptMultiSigTx(multiSigTx *mty.MultiSigTx, owner *mty.Owner, ...@@ -732,8 +732,8 @@ func (a *action) receiptMultiSigTx(multiSigTx *mty.MultiSigTx, owner *mty.Owner,
func (a *action) executeTransferTx(multiSigAcc *mty.MultiSig, newMultiSigTx *mty.MultiSigTx, transfer *mty.MultiSigExecTransfer, confOwner *mty.Owner, subOrConfirm bool) (*types.Receipt, error) { func (a *action) executeTransferTx(multiSigAcc *mty.MultiSig, newMultiSigTx *mty.MultiSigTx, transfer *mty.MultiSigExecTransfer, confOwner *mty.Owner, subOrConfirm bool) (*types.Receipt, error) {
//获取对应资产的每日限额信息 //获取对应资产的每日限额信息
var findindex int = 0 var findindex int
curDailyLimit := &mty.DailyLimit{transfer.Symbol, transfer.Execname, 0, 0, 0} curDailyLimit := &mty.DailyLimit{Symbol: transfer.Symbol, Execer: transfer.Execname, DailyLimit: 0, SpentToday: 0, LastDay: 0}
for Index, dailyLimit := range multiSigAcc.DailyLimits { for Index, dailyLimit := range multiSigAcc.DailyLimits {
if dailyLimit.Symbol == transfer.Symbol && dailyLimit.Execer == transfer.Execname { if dailyLimit.Symbol == transfer.Symbol && dailyLimit.Execer == transfer.Execname {
curDailyLimit.DailyLimit = dailyLimit.DailyLimit curDailyLimit.DailyLimit = dailyLimit.DailyLimit
...@@ -963,7 +963,7 @@ func (a *action) executeOwnerOperateTx(multiSigAccount *mty.MultiSig, newMultiSi ...@@ -963,7 +963,7 @@ func (a *action) executeOwnerOperateTx(multiSigAccount *mty.MultiSig, newMultiSi
func (a *action) confirmTransaction(multiSigTx *mty.MultiSigTx, multiSigTxOwner *mty.MultiSigTxOwner, ConfirmOrRevoke bool) (*types.Receipt, error) { func (a *action) confirmTransaction(multiSigTx *mty.MultiSigTx, multiSigTxOwner *mty.MultiSigTxOwner, ConfirmOrRevoke bool) (*types.Receipt, error) {
receiptLog := &types.ReceiptLog{} receiptLog := &types.ReceiptLog{}
receiptLogUnConfirmTx := &mty.ReceiptConfirmTx{multiSigTxOwner, ConfirmOrRevoke} receiptLogUnConfirmTx := &mty.ReceiptConfirmTx{MultiSigTxOwner: multiSigTxOwner, ConfirmeOrRevoke: ConfirmOrRevoke}
if ConfirmOrRevoke { if ConfirmOrRevoke {
receiptLog.Ty = mty.TyLogMultiSigConfirmTx receiptLog.Ty = mty.TyLogMultiSigConfirmTx
} else { } else {
......
...@@ -50,7 +50,7 @@ var ( ...@@ -50,7 +50,7 @@ var (
NewRequiredweight uint64 = 4 NewRequiredweight uint64 = 4
CoinsBtyDailylimit uint64 = 100 CoinsBtyDailylimit uint64 = 100
NewCoinsBtyDailylimit uint64 = 10 NewCoinsBtyDailylimit uint64 = 10
PrintFlag bool = false PrintFlag = false
InAmount int64 = 10 InAmount int64 = 10
OutAmount int64 = 5 OutAmount int64 = 5
) )
...@@ -168,7 +168,7 @@ func testMultiSigAccCreate(t *testing.T, driver drivers.Driver, env execEnv, loc ...@@ -168,7 +168,7 @@ func testMultiSigAccCreate(t *testing.T, driver drivers.Driver, env execEnv, loc
DailyLimit: symboldailylimit, DailyLimit: symboldailylimit,
} }
tx, err := multiSigAccCreate(param) tx, _ := multiSigAccCreate(param)
tx, _ = signTx(tx, PrivKeyA) tx, _ = signTx(tx, PrivKeyA)
addr := address.PubKeyToAddress(tx.Hash()) addr := address.PubKeyToAddress(tx.Hash())
...@@ -207,7 +207,7 @@ func testMultiSigOwnerAdd(t *testing.T, driver drivers.Driver, env execEnv, mult ...@@ -207,7 +207,7 @@ func testMultiSigOwnerAdd(t *testing.T, driver drivers.Driver, env execEnv, mult
OperateFlag: mty.OwnerAdd, OperateFlag: mty.OwnerAdd,
} }
tx, err := multiSigOwnerOperate(params) tx, _ := multiSigOwnerOperate(params)
tx, _ = signTx(tx, PrivKeyD) tx, _ = signTx(tx, PrivKeyD)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -271,7 +271,7 @@ func testMultiSigOwnerDel(t *testing.T, driver drivers.Driver, env execEnv, mult ...@@ -271,7 +271,7 @@ func testMultiSigOwnerDel(t *testing.T, driver drivers.Driver, env execEnv, mult
OperateFlag: mty.OwnerDel, OperateFlag: mty.OwnerDel,
} }
tx, err := multiSigOwnerOperate(params) tx, _ := multiSigOwnerOperate(params)
tx, _ = signTx(tx, PrivKeyD) tx, _ = signTx(tx, PrivKeyD)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -334,7 +334,7 @@ func testMultiSigOwnerModify(t *testing.T, driver drivers.Driver, env execEnv, m ...@@ -334,7 +334,7 @@ func testMultiSigOwnerModify(t *testing.T, driver drivers.Driver, env execEnv, m
NewWeight: NewWeight, NewWeight: NewWeight,
OperateFlag: mty.OwnerModify, OperateFlag: mty.OwnerModify,
} }
tx, err := multiSigOwnerOperate(params) tx, _ := multiSigOwnerOperate(params)
tx, _ = signTx(tx, PrivKeyD) tx, _ = signTx(tx, PrivKeyD)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -406,7 +406,7 @@ func testMultiSigOwnerReplace(t *testing.T, driver drivers.Driver, env execEnv, ...@@ -406,7 +406,7 @@ func testMultiSigOwnerReplace(t *testing.T, driver drivers.Driver, env execEnv,
NewOwner: AddrB, NewOwner: AddrB,
OperateFlag: mty.OwnerReplace, OperateFlag: mty.OwnerReplace,
} }
tx, err := multiSigOwnerOperate(params) tx, _ := multiSigOwnerOperate(params)
tx, _ = signTx(tx, PrivKeyD) tx, _ = signTx(tx, PrivKeyD)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -472,7 +472,7 @@ func testMultiSigAccWeightModify(t *testing.T, driver drivers.Driver, env execEn ...@@ -472,7 +472,7 @@ func testMultiSigAccWeightModify(t *testing.T, driver drivers.Driver, env execEn
OperateFlag: mty.AccWeightOp, OperateFlag: mty.AccWeightOp,
} }
tx, err := multiSigAccOperate(params) tx, _ := multiSigAccOperate(params)
tx, _ = signTx(tx, PrivKeyD) tx, _ = signTx(tx, PrivKeyD)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -542,7 +542,7 @@ func testMultiSigAccDailyLimitModify(t *testing.T, driver drivers.Driver, env ex ...@@ -542,7 +542,7 @@ func testMultiSigAccDailyLimitModify(t *testing.T, driver drivers.Driver, env ex
OperateFlag: mty.AccDailyLimitOp, OperateFlag: mty.AccDailyLimitOp,
} }
tx, err := multiSigAccOperate(params) tx, _ := multiSigAccOperate(params)
tx, _ = signTx(tx, PrivKeyD) tx, _ = signTx(tx, PrivKeyD)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -624,7 +624,7 @@ func testMultiSigAccConfirmTx(t *testing.T, driver drivers.Driver, env execEnv, ...@@ -624,7 +624,7 @@ func testMultiSigAccConfirmTx(t *testing.T, driver drivers.Driver, env execEnv,
OperateFlag: mty.AccWeightOp, OperateFlag: mty.AccWeightOp,
} }
tx, err := multiSigAccOperate(params) tx, _ := multiSigAccOperate(params)
tx, _ = signTx(tx, PrivKeyB) tx, _ = signTx(tx, PrivKeyB)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -684,7 +684,7 @@ func testMultiSigAccConfirmTx(t *testing.T, driver drivers.Driver, env execEnv, ...@@ -684,7 +684,7 @@ func testMultiSigAccConfirmTx(t *testing.T, driver drivers.Driver, env execEnv,
ConfirmOrRevoke: false, ConfirmOrRevoke: false,
} }
txConfirm, err := multiSigConfirmTx(param) txConfirm, _ := multiSigConfirmTx(param)
txConfirm, _ = signTx(txConfirm, PrivKeyB) txConfirm, _ = signTx(txConfirm, PrivKeyB)
receipt, err = driver.Exec(txConfirm, env.index) receipt, err = driver.Exec(txConfirm, env.index)
...@@ -718,7 +718,7 @@ func testMultiSigAccConfirmTx(t *testing.T, driver drivers.Driver, env execEnv, ...@@ -718,7 +718,7 @@ func testMultiSigAccConfirmTx(t *testing.T, driver drivers.Driver, env execEnv,
ConfirmOrRevoke: true, ConfirmOrRevoke: true,
} }
txConfirm, err = multiSigConfirmTx(para) txConfirm, _ = multiSigConfirmTx(para)
txConfirm, _ = signTx(txConfirm, PrivKeyD) txConfirm, _ = signTx(txConfirm, PrivKeyD)
receipt, err = driver.Exec(txConfirm, env.index) receipt, err = driver.Exec(txConfirm, env.index)
...@@ -772,7 +772,7 @@ func testMultiSigAccExecTransferTo(t *testing.T, driver drivers.Driver, env exec ...@@ -772,7 +772,7 @@ func testMultiSigAccExecTransferTo(t *testing.T, driver drivers.Driver, env exec
To: multiSigAddr, To: multiSigAddr,
} }
tx, err := multiSigExecTransfer(params, false) tx, _ := multiSigExecTransfer(params, false)
tx, _ = signTx(tx, PrivKeyD) tx, _ = signTx(tx, PrivKeyD)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -845,7 +845,7 @@ func testMultiSigAccExecTransferFrom(t *testing.T, driver drivers.Driver, env ex ...@@ -845,7 +845,7 @@ func testMultiSigAccExecTransferFrom(t *testing.T, driver drivers.Driver, env ex
To: AddrD, To: AddrD,
} }
tx, err := multiSigExecTransfer(params, true) tx, _ := multiSigExecTransfer(params, true)
tx, _ = signTx(tx, PrivKeyB) tx, _ = signTx(tx, PrivKeyB)
receipt, err := driver.Exec(tx, env.index) receipt, err := driver.Exec(tx, env.index)
...@@ -1002,11 +1002,10 @@ func multiSigExecTransfer(parm *mty.MultiSigExecTransfer, fromOrTo bool) (*types ...@@ -1002,11 +1002,10 @@ func multiSigExecTransfer(parm *mty.MultiSigExecTransfer, fromOrTo bool) (*types
Value: &mty.MultiSigAction_MultiSigExecTransferFrom{MultiSigExecTransferFrom: parm}, Value: &mty.MultiSigAction_MultiSigExecTransferFrom{MultiSigExecTransferFrom: parm},
} }
return types.CreateFormatTx(types.ExecName(mty.MultiSigX), types.Encode(multiSig)) return types.CreateFormatTx(types.ExecName(mty.MultiSigX), types.Encode(multiSig))
} else {
multiSig := &mty.MultiSigAction{
Ty: mty.ActionMultiSigExecTransferTo,
Value: &mty.MultiSigAction_MultiSigExecTransferTo{MultiSigExecTransferTo: parm},
}
return types.CreateFormatTx(types.ExecName(mty.MultiSigX), types.Encode(multiSig))
} }
multiSig := &mty.MultiSigAction{
Ty: mty.ActionMultiSigExecTransferTo,
Value: &mty.MultiSigAction_MultiSigExecTransferTo{MultiSigExecTransferTo: parm},
}
return types.CreateFormatTx(types.ExecName(mty.MultiSigX), types.Encode(multiSig))
} }
...@@ -114,8 +114,8 @@ func (m *MultiSig) CheckTx(tx *types.Transaction, index int) error { ...@@ -114,8 +114,8 @@ func (m *MultiSig) CheckTx(tx *types.Transaction, index int) error {
return nil return nil
} }
func checkAccountCreateTx(ato *mty.MultiSigAccCreate) error { func checkAccountCreateTx(ato *mty.MultiSigAccCreate) error {
var totalweight uint64 = 0 var totalweight uint64
var ownerCount int = 0 var ownerCount int
requiredWeight := ato.GetRequiredWeight() requiredWeight := ato.GetRequiredWeight()
if requiredWeight == 0 { if requiredWeight == 0 {
...@@ -732,9 +732,8 @@ func (m *MultiSig) saveMultiSigTx(execTx mty.ReceiptMultiSigTx, addOrRollback bo ...@@ -732,9 +732,8 @@ func (m *MultiSig) saveMultiSigTx(execTx mty.ReceiptMultiSigTx, addOrRollback bo
if multiSigTx != nil { if multiSigTx != nil {
multisiglog.Error("saveMultiSigTx", "addOrRollback", addOrRollback, "execTx", execTx) multisiglog.Error("saveMultiSigTx", "addOrRollback", addOrRollback, "execTx", execTx)
return nil, mty.ErrTxidHasExist return nil, mty.ErrTxidHasExist
} else {
multiSigTx = temMultiSigTx
} }
multiSigTx = temMultiSigTx
} }
index, exist := isOwnerConfirmedTx(multiSigTx, owner.OwnerAddr) index, exist := isOwnerConfirmedTx(multiSigTx, owner.OwnerAddr)
...@@ -874,11 +873,11 @@ func (m *MultiSig) getMultiSigAccAssets(multiSigAddr string, assets *mty.Assets) ...@@ -874,11 +873,11 @@ func (m *MultiSig) getMultiSigAccAssets(multiSigAddr string, assets *mty.Assets)
//获取指定owner的weight权重,owner所在的index,所有owners的weight权重之和,以及owner是否存在 //获取指定owner的weight权重,owner所在的index,所有owners的weight权重之和,以及owner是否存在
func getOwnerInfoByAddr(multiSigAcc *mty.MultiSig, oldowner string) (uint64, int, uint64, int, bool) { func getOwnerInfoByAddr(multiSigAcc *mty.MultiSig, oldowner string) (uint64, int, uint64, int, bool) {
//首先遍历所有owners,确定对应的owner已近存在. //首先遍历所有owners,确定对应的owner已近存在.
var findindex int = 0 var findindex int
var flag bool = false var totalweight uint64
var totalweight uint64 = 0 var oldweight uint64
var oldweight uint64 = 0 var totalowner int
var totalowner int = 0 flag := false
for index, owner := range multiSigAcc.Owners { for index, owner := range multiSigAcc.Owners {
if owner.OwnerAddr == oldowner { if owner.OwnerAddr == oldowner {
...@@ -892,29 +891,27 @@ func getOwnerInfoByAddr(multiSigAcc *mty.MultiSig, oldowner string) (uint64, int ...@@ -892,29 +891,27 @@ func getOwnerInfoByAddr(multiSigAcc *mty.MultiSig, oldowner string) (uint64, int
//owner不存在 //owner不存在
if !flag { if !flag {
return 0, 0, totalweight, totalowner, false return 0, 0, totalweight, totalowner, false
} else {
return oldweight, findindex, totalweight, totalowner, true
} }
return oldweight, findindex, totalweight, totalowner, true
} }
//确认某笔交易是否已经达到确认需要的权重 //确认某笔交易是否已经达到确认需要的权重
func isConfirmed(requiredWeight uint64, multiSigTx *mty.MultiSigTx) bool { func isConfirmed(requiredWeight uint64, multiSigTx *mty.MultiSigTx) bool {
var totalweight uint64 = 0 var totalweight uint64
for _, owner := range multiSigTx.ConfirmedOwner { for _, owner := range multiSigTx.ConfirmedOwner {
totalweight += owner.Weight totalweight += owner.Weight
} }
if totalweight >= requiredWeight { if totalweight >= requiredWeight {
return true return true
} else {
return false
} }
return false
} }
//确认某笔交易的额度是否满足每日限额,返回是否满足,以及新的newLastDay时间 //确认某笔交易的额度是否满足每日限额,返回是否满足,以及新的newLastDay时间
func isUnderLimit(blocktime int64, amount uint64, dailyLimit *mty.DailyLimit) (bool, int64) { func isUnderLimit(blocktime int64, amount uint64, dailyLimit *mty.DailyLimit) (bool, int64) {
var lastDay int64 = 0 var lastDay int64
var newSpentToday uint64 = 0 var newSpentToday uint64
nowtime := blocktime //types.Now().Unix() nowtime := blocktime //types.Now().Unix()
newSpentToday = dailyLimit.SpentToday newSpentToday = dailyLimit.SpentToday
...@@ -927,9 +924,8 @@ func isUnderLimit(blocktime int64, amount uint64, dailyLimit *mty.DailyLimit) (b ...@@ -927,9 +924,8 @@ func isUnderLimit(blocktime int64, amount uint64, dailyLimit *mty.DailyLimit) (b
if newSpentToday+amount > dailyLimit.DailyLimit || newSpentToday+amount < newSpentToday { if newSpentToday+amount > dailyLimit.DailyLimit || newSpentToday+amount < newSpentToday {
return false, lastDay return false, lastDay
} else {
return true, lastDay
} }
return true, lastDay
} }
//确定这个地址是否是此multiSigAcc多重签名账户的owner,如果是owner的话并返回weight权重 //确定这个地址是否是此multiSigAcc多重签名账户的owner,如果是owner的话并返回weight权重
......
...@@ -119,12 +119,12 @@ func updateMultiSigAccCount(cachedb dbm.KVDB, isadd bool) (*types.KeyValue, erro ...@@ -119,12 +119,12 @@ func updateMultiSigAccCount(cachedb dbm.KVDB, isadd bool) (*types.KeyValue, erro
return nil, err return nil, err
} }
if isadd { if isadd {
count += 1 count++
} else { } else {
if count == 0 { if count == 0 {
return nil, mty.ErrAccCountNoMatch return nil, mty.ErrAccCountNoMatch
} }
count -= 1 count--
} }
setMultiSigAccCount(cachedb, count) setMultiSigAccCount(cachedb, count)
//keyvalue //keyvalue
...@@ -156,9 +156,8 @@ func setMultiSigAccount(db dbm.KVDB, multiSig *mty.MultiSig, isadd bool) error { ...@@ -156,9 +156,8 @@ func setMultiSigAccount(db dbm.KVDB, multiSig *mty.MultiSig, isadd bool) error {
valuebytes := types.Encode(multiSig) valuebytes := types.Encode(multiSig)
if isadd { if isadd {
return db.Set(calcMultiSigAcc(multiSig.MultiSigAddr), valuebytes) return db.Set(calcMultiSigAcc(multiSig.MultiSigAddr), valuebytes)
} else {
return db.Set(calcMultiSigAcc(multiSig.MultiSigAddr), nil)
} }
return db.Set(calcMultiSigAcc(multiSig.MultiSigAddr), nil)
} }
//获取多重签名账户的kv对 //获取多重签名账户的kv对
...@@ -191,11 +190,11 @@ func updateMultiSigAccList(db dbm.KVDB, addr string, index int64, isadd bool) (* ...@@ -191,11 +190,11 @@ func updateMultiSigAccList(db dbm.KVDB, addr string, index int64, isadd bool) (*
db.Set(calcMultiSigAllAcc(index), []byte(addr)) db.Set(calcMultiSigAllAcc(index), []byte(addr))
kv := &types.KeyValue{Key: calcMultiSigAllAcc(index), Value: []byte(addr)} kv := &types.KeyValue{Key: calcMultiSigAllAcc(index), Value: []byte(addr)}
return kv, nil return kv, nil
} else { // 删除
db.Set(calcMultiSigAllAcc(index), nil)
kv := &types.KeyValue{Key: calcMultiSigAllAcc(index), Value: nil}
return kv, nil
} }
// 删除
db.Set(calcMultiSigAllAcc(index), nil)
kv := &types.KeyValue{Key: calcMultiSigAllAcc(index), Value: nil}
return kv, nil
} }
func getMultiSigAccList(db dbm.KVDB, index int64) (string, error) { func getMultiSigAccList(db dbm.KVDB, index int64) (string, error) {
...@@ -236,9 +235,8 @@ func setMultiSigTx(db dbm.KVDB, multiSigTx *mty.MultiSigTx, isadd bool) error { ...@@ -236,9 +235,8 @@ func setMultiSigTx(db dbm.KVDB, multiSigTx *mty.MultiSigTx, isadd bool) error {
valuebytes := types.Encode(multiSigTx) valuebytes := types.Encode(multiSigTx)
if isadd { if isadd {
return db.Set(calcMultiSigAccTx(multiSigTx.MultiSigAddr, multiSigTx.Txid), valuebytes) return db.Set(calcMultiSigAccTx(multiSigTx.MultiSigAddr, multiSigTx.Txid), valuebytes)
} else {
return db.Set(calcMultiSigAccTx(multiSigTx.MultiSigAddr, multiSigTx.Txid), nil)
} }
return db.Set(calcMultiSigAccTx(multiSigTx.MultiSigAddr, multiSigTx.Txid), nil)
} }
//获取多重签名账户交易的kv对 //获取多重签名账户交易的kv对
...@@ -334,7 +332,7 @@ func setMultiSigAddress(db dbm.KVDB, createAddr, multiSigAddr string, isadd bool ...@@ -334,7 +332,7 @@ func setMultiSigAddress(db dbm.KVDB, createAddr, multiSigAddr string, isadd bool
} }
var found = false var found = false
var foundindex int = 0 var foundindex int
for index, addr := range accAddress.Address { for index, addr := range accAddress.Address {
if multiSigAddr == addr { if multiSigAddr == addr {
found = true found = true
......
...@@ -154,7 +154,7 @@ func (m *MultiSig) Query_MultiSigTxids(in *mty.ReqMultiSigTxids) (types.Message, ...@@ -154,7 +154,7 @@ func (m *MultiSig) Query_MultiSigTxids(in *mty.ReqMultiSigTxids) (types.Message,
multisiglog.Error("Query_MultiSigTxids:getMultiSigTx", "addr", addr, "txid", txid, "err", err) multisiglog.Error("Query_MultiSigTxids:getMultiSigTx", "addr", addr, "txid", txid, "err", err)
continue continue
} }
var findTxid uint64 = 0 var findTxid uint64
findTxid = txid findTxid = txid
//查找Pending/Executed的交易txid //查找Pending/Executed的交易txid
if in.Pending && !multiSigTx.Executed || in.Executed && multiSigTx.Executed { if in.Pending && !multiSigTx.Executed || in.Executed && multiSigTx.Executed {
...@@ -222,7 +222,7 @@ func (m *MultiSig) Query_MultiSigTxConfirmedWeight(in *mty.ReqMultiSigTxInfo) (t ...@@ -222,7 +222,7 @@ func (m *MultiSig) Query_MultiSigTxConfirmedWeight(in *mty.ReqMultiSigTxInfo) (t
if multiSigTx == nil { if multiSigTx == nil {
return nil, mty.ErrTxidNotExist return nil, mty.ErrTxidNotExist
} }
var totalWeight uint64 = 0 var totalWeight uint64
for _, owner := range multiSigTx.ConfirmedOwner { for _, owner := range multiSigTx.ConfirmedOwner {
totalWeight += owner.Weight totalWeight += owner.Weight
} }
...@@ -230,7 +230,7 @@ func (m *MultiSig) Query_MultiSigTxConfirmedWeight(in *mty.ReqMultiSigTxInfo) (t ...@@ -230,7 +230,7 @@ func (m *MultiSig) Query_MultiSigTxConfirmedWeight(in *mty.ReqMultiSigTxInfo) (t
return &mty.Uint64{Data: totalWeight}, nil return &mty.Uint64{Data: totalWeight}, nil
} }
//Query_MultiSigAccUnSpentToday 获取指定资产当日还能使用的免多重签名的余额 //Query_MultiSigAccUnSpentToday 获取指定资产当日还能使用的免多重签名的余额
//输入: //输入:
//message ReqMultiSigAccUnSpentToday { //message ReqMultiSigAccUnSpentToday {
// string multiSigAddr = 1; // string multiSigAddr = 1;
...@@ -239,7 +239,6 @@ func (m *MultiSig) Query_MultiSigTxConfirmedWeight(in *mty.ReqMultiSigTxInfo) (t ...@@ -239,7 +239,6 @@ func (m *MultiSig) Query_MultiSigTxConfirmedWeight(in *mty.ReqMultiSigTxInfo) (t
//返回: //返回:
//message ReplyMultiSigAccUnSpentToday { //message ReplyMultiSigAccUnSpentToday {
// uint64 amount = 1; // uint64 amount = 1;
func (m *MultiSig) Query_MultiSigAccUnSpentToday(in *mty.ReqAccAssets) (types.Message, error) { func (m *MultiSig) Query_MultiSigAccUnSpentToday(in *mty.ReqAccAssets) (types.Message, error) {
if in == nil { if in == nil {
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
...@@ -302,7 +301,7 @@ func (m *MultiSig) Query_MultiSigAccUnSpentToday(in *mty.ReqAccAssets) (types.Me ...@@ -302,7 +301,7 @@ func (m *MultiSig) Query_MultiSigAccUnSpentToday(in *mty.ReqAccAssets) (types.Me
return replyUnSpentAssets, nil return replyUnSpentAssets, nil
} }
//Query_MultiSigAccAssets 获取多重签名账户上的所有资产,或者指定资产 //Query_MultiSigAccAssets 获取多重签名账户上的所有资产,或者指定资产
//输入: //输入:
//message ReqAccAssets { //message ReqAccAssets {
// string multiSigAddr = 1; // string multiSigAddr = 1;
...@@ -313,7 +312,6 @@ func (m *MultiSig) Query_MultiSigAccUnSpentToday(in *mty.ReqAccAssets) (types.Me ...@@ -313,7 +312,6 @@ func (m *MultiSig) Query_MultiSigAccUnSpentToday(in *mty.ReqAccAssets) (types.Me
// Assets assets = 1; // Assets assets = 1;
// int64 recvAmount = 2; // int64 recvAmount = 2;
// Account account = 3; // Account account = 3;
func (m *MultiSig) Query_MultiSigAccAssets(in *mty.ReqAccAssets) (types.Message, error) { func (m *MultiSig) Query_MultiSigAccAssets(in *mty.ReqAccAssets) (types.Message, error) {
if in == nil { if in == nil {
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
...@@ -371,7 +369,6 @@ func (m *MultiSig) Query_MultiSigAccAssets(in *mty.ReqAccAssets) (types.Message, ...@@ -371,7 +369,6 @@ func (m *MultiSig) Query_MultiSigAccAssets(in *mty.ReqAccAssets) (types.Message,
//createaddr //createaddr
//返回: //返回:
//[]string //[]string
func (m *MultiSig) Query_MultiSigAccAllAddress(in *mty.ReqMultiSigAccInfo) (types.Message, error) { func (m *MultiSig) Query_MultiSigAccAllAddress(in *mty.ReqMultiSigAccInfo) (types.Message, error) {
if in == nil { if in == nil {
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
......
...@@ -4,18 +4,15 @@ ...@@ -4,18 +4,15 @@
package rpc package rpc
import ( import (
"github.com/33cn/chain33/common/log/log15"
"github.com/33cn/chain33/rpc/types" "github.com/33cn/chain33/rpc/types"
) )
var log = log15.New("module", "multisig.rpc")
// Jrpc 申明Jrpc结构体 // Jrpc 申明Jrpc结构体
type Jrpc struct { type Jrpc struct {
cli *channelClient cli *channelClient
} }
// Jrpc 申明Grpc结构体 // Grpc 申明Grpc结构体
type Grpc struct { type Grpc struct {
*channelClient *channelClient
} }
......
...@@ -13,27 +13,26 @@ import ( ...@@ -13,27 +13,26 @@ import (
var multisiglog = log15.New("module", "execs.multisig") var multisiglog = log15.New("module", "execs.multisig")
var ( var (
//OwnerAdd owner操作类型
OwnerAdd uint64 = 1 OwnerAdd uint64 = 1
OwnerDel uint64 = 2 OwnerDel uint64 = 2
OwnerModify uint64 = 3 OwnerModify uint64 = 3
OwnerReplace uint64 = 4 OwnerReplace uint64 = 4
//AccWeightOp 账户属性的操作 //AccWeightOp 账户属性的操作
AccWeightOp bool = true AccWeightOp = true
AccDailyLimitOp bool = false AccDailyLimitOp = false
//OwnerOperate 多重签名交易类型:转账,owner操作,account操作 //OwnerOperate 多重签名交易类型:转账,owner操作,account操作
OwnerOperate uint64 = 1 OwnerOperate uint64 = 1
AccountOperate uint64 = 2 AccountOperate uint64 = 2
TransferOperate uint64 = 3 TransferOperate uint64 = 3
//IsSubmit : //IsSubmit :
IsSubmit bool = true IsSubmit = true
IsConfirm bool = false IsConfirm = false
MultiSigX = "multisig" MultiSigX = "multisig"
OneDaySecond int64 = 24 * 3600 OneDaySecond int64 = 24 * 3600
MinOwnersInit int = 2 MinOwnersInit = 2
MinOwnersCount int = 1 //一个多重签名的账户最少要保留一个owner MinOwnersCount = 1 //一个多重签名的账户最少要保留一个owner
MaxOwnersCount int = 20 //一个多重签名的账户最多拥有20个owner MaxOwnersCount = 20 //一个多重签名的账户最多拥有20个owner
Multisiglog = log15.New("module", MultiSigX) Multisiglog = log15.New("module", MultiSigX)
) )
......
...@@ -12,7 +12,7 @@ import ( ...@@ -12,7 +12,7 @@ import (
func init() { func init() {
types.AllowUserExec = append(types.AllowUserExec, []byte(MultiSigX)) types.AllowUserExec = append(types.AllowUserExec, []byte(MultiSigX))
types.RegistorExecutor(MultiSigX, NewType()) types.RegistorExecutor(MultiSigX, NewType())
types.RegisterDappFork(MultiSigX, "Enable", 1) types.RegisterDappFork(MultiSigX, "Enable", 0)
} }
// MultiSigType multisig合约结构体 // MultiSigType multisig合约结构体
...@@ -87,7 +87,7 @@ func (m MultiSigType) ActionName(tx *types.Transaction) string { ...@@ -87,7 +87,7 @@ func (m MultiSigType) ActionName(tx *types.Transaction) string {
var g MultiSigAction var g MultiSigAction
err := types.Decode(tx.Payload, &g) err := types.Decode(tx.Payload, &g)
if err != nil { if err != nil {
return "unkown-MultiSig-action-err" return "unknown-MultiSig-action-err"
} }
if g.Ty == ActionMultiSigAccCreate && g.GetMultiSigAccCreate() != nil { if g.Ty == ActionMultiSigAccCreate && g.GetMultiSigAccCreate() != nil {
return "MultiSigAccCreate" return "MultiSigAccCreate"
...@@ -102,5 +102,5 @@ func (m MultiSigType) ActionName(tx *types.Transaction) string { ...@@ -102,5 +102,5 @@ func (m MultiSigType) ActionName(tx *types.Transaction) string {
} else if g.Ty == ActionMultiSigExecTransferFrom && g.GetMultiSigExecTransferFrom() != nil { } else if g.Ty == ActionMultiSigExecTransferFrom && g.GetMultiSigExecTransferFrom() != nil {
return "MultiSigAccExecTransfer" return "MultiSigAccExecTransfer"
} }
return "unkown" return "unknown"
} }
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