Unverified Commit e0449943 authored by vipwzw's avatar vipwzw Committed by GitHub

Merge pull request #778 from icehawk-hyb/issues-673

add by hyb for wallet mtx
parents 1fa99781 a29fddf3
...@@ -3,7 +3,7 @@ module github.com/33cn/plugin ...@@ -3,7 +3,7 @@ module github.com/33cn/plugin
go 1.12 go 1.12
require ( require (
github.com/33cn/chain33 v0.0.0-20200115085731-38f06ce8411c github.com/33cn/chain33 v0.0.0-20200205062829-bb33acc5e2e8
github.com/BurntSushi/toml v0.3.1 github.com/BurntSushi/toml v0.3.1
github.com/NebulousLabs/Sia v1.3.7 github.com/NebulousLabs/Sia v1.3.7
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
......
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/33cn/chain33 v0.0.0-20200115085731-38f06ce8411c h1:ePkHv1GhUGsEubK1mxtrCe0ricOc66QNAN11hOWH6ps= github.com/33cn/chain33 v0.0.0-20200205062829-bb33acc5e2e8 h1:AVS7qtYkzdxxGUquh/m9gIkDAr+5y6N+0lRZgsFoM/0=
github.com/33cn/chain33 v0.0.0-20200115085731-38f06ce8411c/go.mod h1:lhZbNbCnCGsiiapxGZcSxfxKdIAdCK0UzHgpp65XMlM= github.com/33cn/chain33 v0.0.0-20200205062829-bb33acc5e2e8/go.mod h1:lhZbNbCnCGsiiapxGZcSxfxKdIAdCK0UzHgpp65XMlM=
github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7 h1:PqzgE6kAMi81xWQA2QIVxjWkFHptGgC547vchpUbtFo= github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7 h1:PqzgE6kAMi81xWQA2QIVxjWkFHptGgC547vchpUbtFo=
github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
......
...@@ -883,18 +883,8 @@ func (client *commitMsgClient) onWalletAccount(acc *types.Account) { ...@@ -883,18 +883,8 @@ func (client *commitMsgClient) onWalletAccount(acc *types.Account) {
func (client *commitMsgClient) fetchPriKey() error { func (client *commitMsgClient) fetchPriKey() error {
req := &types.ReqString{Data: client.authAccount} req := &types.ReqString{Data: client.authAccount}
msg := client.paraClient.GetQueueClient().NewMessage("wallet", types.EventDumpPrivkey, req) resp, err := client.paraClient.GetAPI().ExecWalletFunc("wallet", "DumpPrivkey", req)
err := client.paraClient.GetQueueClient().Send(msg, true) str := resp.(*types.ReplyString).Data
if err != nil {
plog.Error("para commit send msg", "err", err.Error())
return err
}
resp, err := client.paraClient.GetQueueClient().Wait(msg)
if err != nil {
plog.Error("para commit msg sign to wallet", "err", err.Error())
return err
}
str := resp.GetData().(*types.ReplyString).Data
pk, err := common.FromHex(str) pk, err := common.FromHex(str)
if err != nil && pk == nil { if err != nil && pk == nil {
return err return err
......
...@@ -65,15 +65,15 @@ func testTicket(t *testing.T) { ...@@ -65,15 +65,15 @@ func testTicket(t *testing.T) {
//fmt.Println(string(js)) //fmt.Println(string(js))
_, err = mock33.GetAPI().ExecWalletFunc("ticket", "WalletAutoMiner", &ty.MinerFlag{Flag: 0}) _, err = mock33.GetAPI().ExecWalletFunc("ticket", "WalletAutoMiner", &ty.MinerFlag{Flag: 0})
assert.Nil(t, err) assert.Nil(t, err)
status, err := mock33.GetAPI().GetWalletStatus() status, err := mock33.GetAPI().ExecWalletFunc("wallet", "GetWalletStatus", &types.ReqNil{})
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, false, status.IsAutoMining) assert.Equal(t, false, status.(*types.WalletStatus).IsAutoMining)
assert.Equal(t, int32(2), detail.Receipt.Ty) assert.Equal(t, int32(2), detail.Receipt.Ty)
_, err = mock33.GetAPI().ExecWalletFunc("ticket", "WalletAutoMiner", &ty.MinerFlag{Flag: 1}) _, err = mock33.GetAPI().ExecWalletFunc("ticket", "WalletAutoMiner", &ty.MinerFlag{Flag: 1})
assert.Nil(t, err) assert.Nil(t, err)
status, err = mock33.GetAPI().GetWalletStatus() status, err = mock33.GetAPI().ExecWalletFunc("wallet", "GetWalletStatus", &types.ReqNil{})
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, true, status.IsAutoMining) assert.Equal(t, true, status.(*types.WalletStatus).IsAutoMining)
start := time.Now() start := time.Now()
height := int64(0) height := int64(0)
hastclose := false hastclose := false
...@@ -84,7 +84,8 @@ func testTicket(t *testing.T) { ...@@ -84,7 +84,8 @@ func testTicket(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
//查询票是否自动close,并且购买了新的票 //查询票是否自动close,并且购买了新的票
req := &types.ReqWalletTransactionList{Count: 1000} req := &types.ReqWalletTransactionList{Count: 1000}
list, err := mock33.GetAPI().WalletTransactionList(req) resp, err := mock33.GetAPI().ExecWalletFunc("wallet", "WalletTransactionList", req)
list := resp.(*types.WalletTxDetails)
assert.Nil(t, err) assert.Nil(t, err)
for _, tx := range list.TxDetails { for _, tx := range list.TxDetails {
if tx.ActionName == "tclose" && tx.Receipt.Ty == 2 { if tx.ActionName == "tclose" && tx.Receipt.Ty == 2 {
......
...@@ -10,9 +10,6 @@ import ( ...@@ -10,9 +10,6 @@ import (
//On_MultiSigAddresList 获取owner对应的多重签名地址列表 //On_MultiSigAddresList 获取owner对应的多重签名地址列表
func (policy *multisigPolicy) On_MultiSigAddresList(req *types.ReqString) (types.Message, error) { func (policy *multisigPolicy) On_MultiSigAddresList(req *types.ReqString) (types.Message, error) {
policy.getWalletOperate().GetMutex().Lock()
defer policy.getWalletOperate().GetMutex().Unlock()
//获取本钱包中记录的所有多重签名地址 //获取本钱包中记录的所有多重签名地址
if req.Data == "" { if req.Data == "" {
reply, err := policy.store.listOwnerAttrs() reply, err := policy.store.listOwnerAttrs()
......
...@@ -70,7 +70,7 @@ func TestMultiSigAccount(t *testing.T) { ...@@ -70,7 +70,7 @@ func TestMultiSigAccount(t *testing.T) {
//导入私钥到钱包 //导入私钥到钱包
for i, priv := range TestPrivkeyHex { for i, priv := range TestPrivkeyHex {
privkey := &types.ReqWalletImportPrivkey{Privkey: priv, Label: fmt.Sprintf("heyubin%d", i)} privkey := &types.ReqWalletImportPrivkey{Privkey: priv, Label: fmt.Sprintf("heyubin%d", i)}
_, err := mocker.GetAPI().WalletImportprivkey(privkey) _, err := mocker.GetAPI().ExecWalletFunc("wallet", "WalletImportPrivkey", privkey)
if err != nil { if err != nil {
panic(err) panic(err)
} }
......
...@@ -23,13 +23,12 @@ func TestParaQuery(t *testing.T) { ...@@ -23,13 +23,12 @@ func TestParaQuery(t *testing.T) {
var param types.ReqWalletImportPrivkey var param types.ReqWalletImportPrivkey
param.Label = "Importprivkey" param.Label = "Importprivkey"
param.Privkey = "CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944" param.Privkey = "CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944"
para.Para.GetAPI().WalletImportprivkey(&param) para.Para.GetAPI().ExecWalletFunc("wallet", "WalletImportPrivkey", &param)
var param1 types.ReqNewAccount var param1 types.ReqNewAccount
param1.Label = "NewAccount" param1.Label = "NewAccount"
para.Para.GetAPI().NewAccount(&param1) para.Para.GetAPI().ExecWalletFunc("wallet", "NewAccount", &param1)
para.Para.GetAPI().ExecWalletFunc("wallet", "WalletLock", &types.ReqNil{})
para.Para.GetAPI().WalletLock()
//通过rpc 发生信息 //通过rpc 发生信息
tx := util.CreateTxWithExecer(paraCfg, para.Para.GetGenesisKey(), "user.p.test.none") tx := util.CreateTxWithExecer(paraCfg, para.Para.GetGenesisKey(), "user.p.test.none")
......
...@@ -10,8 +10,6 @@ import ( ...@@ -10,8 +10,6 @@ import (
) )
func (policy *privacyPolicy) On_ShowPrivacyAccountSpend(req *privacytypes.ReqPrivBal4AddrToken) (types.Message, error) { func (policy *privacyPolicy) On_ShowPrivacyAccountSpend(req *privacytypes.ReqPrivBal4AddrToken) (types.Message, error) {
policy.getWalletOperate().GetMutex().Lock()
defer policy.getWalletOperate().GetMutex().Unlock()
reply, err := policy.showPrivacyAccountsSpend(req) reply, err := policy.showPrivacyAccountsSpend(req)
if err != nil { if err != nil {
bizlog.Error("showPrivacyAccountsSpend", "err", err.Error()) bizlog.Error("showPrivacyAccountsSpend", "err", err.Error())
...@@ -20,8 +18,6 @@ func (policy *privacyPolicy) On_ShowPrivacyAccountSpend(req *privacytypes.ReqPri ...@@ -20,8 +18,6 @@ func (policy *privacyPolicy) On_ShowPrivacyAccountSpend(req *privacytypes.ReqPri
} }
func (policy *privacyPolicy) On_ShowPrivacyKey(req *types.ReqString) (types.Message, error) { func (policy *privacyPolicy) On_ShowPrivacyKey(req *types.ReqString) (types.Message, error) {
policy.getWalletOperate().GetMutex().Lock()
defer policy.getWalletOperate().GetMutex().Unlock()
reply, err := policy.showPrivacyKeyPair(req) reply, err := policy.showPrivacyKeyPair(req)
if err != nil { if err != nil {
bizlog.Error("showPrivacyKeyPair", "err", err.Error()) bizlog.Error("showPrivacyKeyPair", "err", err.Error())
...@@ -30,6 +26,7 @@ func (policy *privacyPolicy) On_ShowPrivacyKey(req *types.ReqString) (types.Mess ...@@ -30,6 +26,7 @@ func (policy *privacyPolicy) On_ShowPrivacyKey(req *types.ReqString) (types.Mess
} }
func (policy *privacyPolicy) On_CreateTransaction(req *privacytypes.ReqCreatePrivacyTx) (types.Message, error) { func (policy *privacyPolicy) On_CreateTransaction(req *privacytypes.ReqCreatePrivacyTx) (types.Message, error) {
ok, err := policy.getWalletOperate().CheckWalletStatus() ok, err := policy.getWalletOperate().CheckWalletStatus()
if !ok { if !ok {
bizlog.Error("createTransaction", "CheckWalletStatus cause error.", err) bizlog.Error("createTransaction", "CheckWalletStatus cause error.", err)
...@@ -57,8 +54,6 @@ func (policy *privacyPolicy) On_CreateTransaction(req *privacytypes.ReqCreatePri ...@@ -57,8 +54,6 @@ func (policy *privacyPolicy) On_CreateTransaction(req *privacytypes.ReqCreatePri
bizlog.Error("createTransaction", "isRescanUtxosFlagScaning cause error.", err) bizlog.Error("createTransaction", "isRescanUtxosFlagScaning cause error.", err)
return nil, err return nil, err
} }
policy.getWalletOperate().GetMutex().Lock()
defer policy.getWalletOperate().GetMutex().Unlock()
reply, err := policy.createTransaction(req) reply, err := policy.createTransaction(req)
if err != nil { if err != nil {
...@@ -68,8 +63,6 @@ func (policy *privacyPolicy) On_CreateTransaction(req *privacytypes.ReqCreatePri ...@@ -68,8 +63,6 @@ func (policy *privacyPolicy) On_CreateTransaction(req *privacytypes.ReqCreatePri
} }
func (policy *privacyPolicy) On_ShowPrivacyAccountInfo(req *privacytypes.ReqPPrivacyAccount) (types.Message, error) { func (policy *privacyPolicy) On_ShowPrivacyAccountInfo(req *privacytypes.ReqPPrivacyAccount) (types.Message, error) {
policy.getWalletOperate().GetMutex().Lock()
defer policy.getWalletOperate().GetMutex().Unlock()
reply, err := policy.getPrivacyAccountInfo(req) reply, err := policy.getPrivacyAccountInfo(req)
if err != nil { if err != nil {
bizlog.Error("getPrivacyAccountInfo", "err", err.Error()) bizlog.Error("getPrivacyAccountInfo", "err", err.Error())
...@@ -78,6 +71,7 @@ func (policy *privacyPolicy) On_ShowPrivacyAccountInfo(req *privacytypes.ReqPPri ...@@ -78,6 +71,7 @@ func (policy *privacyPolicy) On_ShowPrivacyAccountInfo(req *privacytypes.ReqPPri
} }
func (policy *privacyPolicy) On_PrivacyTransactionList(req *privacytypes.ReqPrivacyTransactionList) (types.Message, error) { func (policy *privacyPolicy) On_PrivacyTransactionList(req *privacytypes.ReqPrivacyTransactionList) (types.Message, error) {
if req.Direction != 0 && req.Direction != 1 { if req.Direction != 0 && req.Direction != 1 {
bizlog.Error("getPrivacyTransactionList", "invalid direction ", req.Direction) bizlog.Error("getPrivacyTransactionList", "invalid direction ", req.Direction)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
...@@ -90,9 +84,6 @@ func (policy *privacyPolicy) On_PrivacyTransactionList(req *privacytypes.ReqPriv ...@@ -90,9 +84,6 @@ func (policy *privacyPolicy) On_PrivacyTransactionList(req *privacytypes.ReqPriv
} }
req.SendRecvFlag = sendRecvFlag req.SendRecvFlag = sendRecvFlag
policy.getWalletOperate().GetMutex().Lock()
defer policy.getWalletOperate().GetMutex().Unlock()
reply, err := policy.store.getWalletPrivacyTxDetails(req) reply, err := policy.store.getWalletPrivacyTxDetails(req)
if err != nil { if err != nil {
bizlog.Error("getWalletPrivacyTxDetails", "err", err.Error()) bizlog.Error("getWalletPrivacyTxDetails", "err", err.Error())
...@@ -101,8 +92,7 @@ func (policy *privacyPolicy) On_PrivacyTransactionList(req *privacytypes.ReqPriv ...@@ -101,8 +92,7 @@ func (policy *privacyPolicy) On_PrivacyTransactionList(req *privacytypes.ReqPriv
} }
func (policy *privacyPolicy) On_RescanUtxos(req *privacytypes.ReqRescanUtxos) (types.Message, error) { func (policy *privacyPolicy) On_RescanUtxos(req *privacytypes.ReqRescanUtxos) (types.Message, error) {
policy.getWalletOperate().GetMutex().Lock()
defer policy.getWalletOperate().GetMutex().Unlock()
reply, err := policy.rescanUTXOs(req) reply, err := policy.rescanUTXOs(req)
if err != nil { if err != nil {
bizlog.Error("rescanUTXOs", "err", err.Error()) bizlog.Error("rescanUTXOs", "err", err.Error())
...@@ -111,9 +101,6 @@ func (policy *privacyPolicy) On_RescanUtxos(req *privacytypes.ReqRescanUtxos) (t ...@@ -111,9 +101,6 @@ func (policy *privacyPolicy) On_RescanUtxos(req *privacytypes.ReqRescanUtxos) (t
} }
func (policy *privacyPolicy) On_EnablePrivacy(req *privacytypes.ReqEnablePrivacy) (types.Message, error) { func (policy *privacyPolicy) On_EnablePrivacy(req *privacytypes.ReqEnablePrivacy) (types.Message, error) {
operater := policy.getWalletOperate()
operater.GetMutex().Lock()
defer operater.GetMutex().Unlock()
reply, err := policy.enablePrivacy(req) reply, err := policy.enablePrivacy(req)
if err != nil { if err != nil {
bizlog.Error("enablePrivacy", "err", err.Error()) bizlog.Error("enablePrivacy", "err", err.Error())
......
...@@ -1008,8 +1008,6 @@ func (policy *privacyPolicy) buildAndStoreWalletTxDetail(param *buildStoreWallet ...@@ -1008,8 +1008,6 @@ func (policy *privacyPolicy) buildAndStoreWalletTxDetail(param *buildStoreWallet
func (policy *privacyPolicy) checkExpireFTXOOnTimer() { func (policy *privacyPolicy) checkExpireFTXOOnTimer() {
operater := policy.getWalletOperate() operater := policy.getWalletOperate()
operater.GetMutex().Lock()
defer operater.GetMutex().Unlock()
header := operater.GetLastHeader() header := operater.GetLastHeader()
if header == nil { if header == nil {
......
...@@ -119,9 +119,6 @@ func (mock *testDataMock) initMember() { ...@@ -119,9 +119,6 @@ func (mock *testDataMock) initMember() {
func (mock *testDataMock) importPrivateKey(PrivKey *types.ReqWalletImportPrivkey) { func (mock *testDataMock) importPrivateKey(PrivKey *types.ReqWalletImportPrivkey) {
wallet := mock.wallet wallet := mock.wallet
wallet.GetMutex().Lock()
defer wallet.GetMutex().Unlock()
ok, err := wallet.CheckWalletStatus() ok, err := wallet.CheckWalletStatus()
if !ok || err != nil { if !ok || err != nil {
return return
......
...@@ -84,22 +84,23 @@ func TestTicket(t *testing.T) { ...@@ -84,22 +84,23 @@ func TestTicket(t *testing.T) {
//fmt.Println(string(js)) //fmt.Println(string(js))
_, err = mock33.GetAPI().ExecWalletFunc("ticket", "WalletAutoMiner", &ty.MinerFlag{Flag: 0}) _, err = mock33.GetAPI().ExecWalletFunc("ticket", "WalletAutoMiner", &ty.MinerFlag{Flag: 0})
assert.Nil(t, err) assert.Nil(t, err)
status, err := mock33.GetAPI().GetWalletStatus() status, err := mock33.GetAPI().ExecWalletFunc("wallet", "GetWalletStatus", &types.ReqNil{})
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, false, status.IsAutoMining) assert.Equal(t, false, status.(*types.WalletStatus).IsAutoMining)
assert.Equal(t, int32(2), detail.Receipt.Ty) assert.Equal(t, int32(2), detail.Receipt.Ty)
_, err = mock33.GetAPI().ExecWalletFunc("ticket", "WalletAutoMiner", &ty.MinerFlag{Flag: 1}) _, err = mock33.GetAPI().ExecWalletFunc("ticket", "WalletAutoMiner", &ty.MinerFlag{Flag: 1})
assert.Nil(t, err) assert.Nil(t, err)
status, err = mock33.GetAPI().GetWalletStatus() status, err = mock33.GetAPI().ExecWalletFunc("wallet", "GetWalletStatus", &types.ReqNil{})
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, true, status.IsAutoMining) assert.Equal(t, true, status.(*types.WalletStatus).IsAutoMining)
for i := mock33.GetLastBlock().Height; i < 100; i++ { for i := mock33.GetLastBlock().Height; i < 100; i++ {
err = mock33.WaitHeight(i) err = mock33.WaitHeight(i)
assert.Nil(t, err) assert.Nil(t, err)
//查询票是否自动close,并且购买了新的票 //查询票是否自动close,并且购买了新的票
req := &types.ReqWalletTransactionList{Count: 1000} req := &types.ReqWalletTransactionList{Count: 1000}
list, err := mock33.GetAPI().WalletTransactionList(req) resp, err := mock33.GetAPI().ExecWalletFunc("wallet", "WalletTransactionList", req)
assert.Nil(t, err) assert.Nil(t, err)
list := resp.(*types.WalletTxDetails)
hastclose := false hastclose := false
hastopen := false hastopen := false
for _, tx := range list.TxDetails { for _, tx := range list.TxDetails {
......
...@@ -448,8 +448,7 @@ func (policy *ticketPolicy) getTicketsByStatus(status int32) ([]*ty.Ticket, [][] ...@@ -448,8 +448,7 @@ func (policy *ticketPolicy) getTicketsByStatus(status int32) ([]*ty.Ticket, [][]
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
operater.GetMutex().Lock()
defer operater.GetMutex().Unlock()
ok, err := operater.CheckWalletStatus() ok, err := operater.CheckWalletStatus()
if !ok && err != types.ErrOnlyTicketUnLocked { if !ok && err != types.ErrOnlyTicketUnLocked {
return nil, nil, err return nil, nil, err
......
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