github.com/turingchain2020/turingchain@v1.1.21/wallet/common/bizpolicy.go (about)

     1  // Copyright Turing Corp. 2018 All Rights Reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package common
     6  
     7  import (
     8  	"github.com/turingchain2020/turingchain/common/crypto"
     9  	"github.com/turingchain2020/turingchain/common/db"
    10  	"github.com/turingchain2020/turingchain/types"
    11  )
    12  
    13  // WalletBizPolicy 细分钱包业务逻辑的街口
    14  type WalletBizPolicy interface {
    15  	// Init 初始化钱包业务策略,在使用前调用
    16  	Init(walletBiz WalletOperate, sub []byte)
    17  	// OnAddBlockTx 当区块被增加确认时调用本函数
    18  	// block: 被增加的区块详细信息
    19  	// tx: 区块增加的交易信息
    20  	// index: 交易信息在区块上的索引为止,从0开始计数
    21  	// dbbatch: 数据库批量操作接口
    22  	// 返回值为提供给外部快速检索的钱包详细信息,如果内部已经处理,不需要外部处理的情况下,可以返回nil
    23  	OnAddBlockTx(block *types.BlockDetail, tx *types.Transaction, index int32, dbbatch db.Batch) *types.WalletTxDetail
    24  	// OnDeleteBlockTx 当区块被回退删除时调用本函数
    25  	// block: 被回退的区块详细信息
    26  	// tx: 区块回退的交易信息
    27  	// index: 交易信息在区块上的索引为止,从0开始计数
    28  	// dbbatch: 数据库批量操作接口
    29  	// 返回值为提供给外部快速检索的钱包详细信息,如果内部已经处理,不需要外部处理的情况下,可以返回nil
    30  	OnDeleteBlockTx(block *types.BlockDetail, tx *types.Transaction, index int32, dbbatch db.Batch) *types.WalletTxDetail
    31  	// SignTransaction 针对特殊的交易,按照新的签名方式签名
    32  	// key 签名的私钥信息
    33  	// req 需要签名交易流信息
    34  	// needSysSign 表示是否需要继续走系统流程的签名,true表示继续,false表示已经完成签名,不需要系统处理
    35  	// signtx 签名成功后,保存签名成功的交易字符串
    36  	// err 错误信息
    37  	SignTransaction(key crypto.PrivKey, req *types.ReqSignRawTx) (needSysSign bool, signtx string, err error)
    38  	// OnCreateNewAccount 当用户在钱包中新建账户时,将调用本接口函数
    39  	OnCreateNewAccount(acc *types.Account)
    40  	// OnImportPrivateKey 当用户导入私钥时,将调用本函数
    41  	OnImportPrivateKey(acc *types.Account)
    42  	OnWalletLocked()
    43  	OnWalletUnlocked(WalletUnLock *types.WalletUnLock)
    44  	OnAddBlockFinish(block *types.BlockDetail)
    45  	OnDeleteBlockFinish(block *types.BlockDetail)
    46  	OnClose()
    47  	OnSetQueueClient()
    48  	Call(funName string, in types.Message) (ret types.Message, err error)
    49  }